FOUNDRY
C8 Platform
← Tasks

[DM-07] Reports table (performance metrics)

completedcode_genP1

Description

## DM-07: Reports table (performance metrics) Section: Data Model | Milestone: M2 | Owner: None ### Failing Tests - **reports_table_exists** (grep): Pattern `CREATE TABLE reports` in `supabase/migrations/*.sql` (need 1+ matches) - **reports_fields** (grep): Pattern `campaign_id|report_type|generated_data_json` in `supabase/migrations/*.sql` (need 2+ matches) ### Acceptance Criteria - File matching `supabase/migrations/*.sql` must contain pattern `CREATE TABLE reports` - File matching `supabase/migrations/*.sql` must contain pattern `campaign_id|report_type|generated_data_json` ### Codebase Conventions - Trilingual comments: // EN: ... // VI: ... // ES: ... - SPEC section refs in comments - Zod at module level with .safeParse() - (supabase as any) with eslint-disable - NextResponse.json() responses - Error format: { error: 'message' } ### Dependencies - DM-01: FAIL - DM-02: FAIL - DM-03: FAIL - DM-05: FAIL
Assignee
-
Claimed By
Cloud Lu → Claude Sonnet
Created
23d ago
Completed
2d ago

Quality

Overall
79%
Pass
PASS
Graded By
-
Graded At
-

Cost

Input Tokens
-
Output Tokens
-
Est. USD
-

Result

{
  "cost": {
    "input_tokens": 19,
    "estimated_usd": 0.035232,
    "output_tokens": 2345
  },
  "model": "claude-sonnet-4-20250514",
  "status": "success",
  "transport": "anthropic_api",
  "latency_ms": 30627,
  "response_text": "I'll help you design a Reports table for tracking performance metrics. Here's a comprehensive structure:\n\n## Reports Table Structure\n\n### Core Table: `reports`\n\n```sql\nCREATE TABLE reports (\n    report_id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    report_name VARCHAR(255) NOT NULL,\n    report_type ENUM('sales', 'financial', 'inventory', 'customer', 'employee', 'operational', 'marketing', 'custom') NOT NULL,\n    report_category VARCHAR(100),\n    description TEXT,\n    \n    -- Time Period\n    period_type ENUM('daily', 'weekly', 'monthly', 'quarterly', 'yearly', 'custom') NOT NULL,\n    start_date DATE NOT NULL,\n    end_date DATE NOT NULL,\n    \n    -- Report Generation\n    generated_by BIGINT NOT NULL,\n    generated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    report_format ENUM('pdf', 'excel', 'csv', 'json', 'html') DEFAULT 'pdf',\n    file_path VARCHAR(500),\n    file_size INT,\n    \n    -- Status and Scheduling\n    status ENUM('pending', 'processing', 'completed', 'failed', 'archived') DEFAULT 'pending',\n    is_scheduled BOOLEAN DEFAULT FALSE,\n    schedule_frequency ENUM('daily', 'weekly', 'monthly', 'quarterly', 'yearly'),\n    next_run_date DATETIME,\n    \n    -- Metadata\n    parameters JSON, -- Report filters and configuration\n    execution_time INT, -- Time taken to generate (seconds)\n    record_count INT, -- Number of records in report\n    \n    -- Audit\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n    is_active BOOLEAN DEFAULT TRUE,\n    \n    INDEX idx_report_type (report_type),\n    INDEX idx_period (start_date, end_date),\n    INDEX idx_generated_by (generated_by),\n    INDEX idx_status (status),\n    INDEX idx_schedule (is_scheduled, next_run_date),\n    INDEX idx_created_at (created_at),\n    \n    FOREIGN KEY (generated_by) REFERENCES users(user_id)\n);\n```\n\n### Performance Metrics Table: `report_metrics`\n\n```sql\nCREATE TABLE report_metrics (\n    metric_id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    report_id BIGINT NOT NULL,\n    metric_name VARCHAR(255) NOT NULL,\n    metric_category VARCHAR(100),\n    metric_value DECIMAL(15,4),\n    metric_value_text VARCHAR(255), -- For non-numeric values\n    metric_unit VARCHAR(50), -- currency, percentage, count, etc.\n    comparison_period_value DECIMAL(15,4),\n    variance_amount DECIMAL(15,4),\n    variance_percentage DECIMAL(8,4),\n    target_value DECIMAL(15,4),\n    target_achieved BOOLEAN,\n    \n    -- Performance Indicators\n    trend ENUM('increasing', 'decreasing', 'stable', 'volatile'),\n    performance_rating ENUM('excellent', 'good', 'average', 'poor', 'critical'),\n    \n    -- Metadata\n    calculation_method TEXT,\n    data_source VARCHAR(255),\n    notes TEXT,\n    \n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    \n    INDEX idx_report_metric (report_id, metric_name),\n    INDEX idx_metric_category (metric_category),\n    INDEX idx_performance (performance_rating),\n    \n    FOREIGN KEY (report_id) REFERENCES reports(report_id) ON DELETE CASCADE\n);\n```\n\n### Report Templates Table: `report_templates`\n\n```sql\nCREATE TABLE report_templates (\n    template_id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    template_name VARCHAR(255) NOT NULL,\n    report_type VARCHAR(100) NOT NULL,\n    description TEXT,\n    \n    -- Template Configuration\n    template_config JSON, -- Metrics, charts, layout configuration\n    default_parameters JSON,\n    required_permissions JSON,\n    \n    -- Template Properties\n    is_system_template BOOLEAN DEFAULT FALSE,\n    is_public BOOLEAN DEFAULT FALSE,\n    created_by BIGINT NOT NULL,\n    \n    -- Usage Statistics\n    usage_count INT DEFAULT 0,\n    last_used_at TIMESTAMP,\n    \n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n    is_active BOOLEAN DEFAULT TRUE,\n    \n    INDEX idx_template_type (report_type),\n    INDEX idx_created_by (created_by),\n    INDEX idx_public (is_public, is_active),\n    \n    FOREIGN KEY (created_by) REFERENCES users(user_id)\n);\n```\n\n### Report Sharing & Access Table: `report_access`\n\n```sql\nCREATE TABLE report_access (\n    access_id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    report_id BIGINT NOT NULL,\n    user_id BIGINT,\n    role_id BIGINT,\n    department_id BIGINT,\n    \n    -- Access Permissions\n    can_view BOOLEAN DEFAULT TRUE,\n    can_download BOOLEAN DEFAULT FALSE,\n    can_share BOOLEAN DEFAULT FALSE,\n    can_edit BOOLEAN DEFAULT FALSE,\n    \n    -- Access Control\n    access_granted_by BIGINT NOT NULL,\n    granted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    expires_at TIMESTAMP,\n    \n    -- Access Log\n    last_accessed_at TIMESTAMP,\n    access_count INT DEFAULT 0,\n    \n    is_active BOOLEAN DEFAULT TRUE,\n    \n    INDEX idx_report_access (report_id, user_id),\n    INDEX idx_user_access (user_id),\n    INDEX idx_role_access (role_id),\n    INDEX idx_expires (expires_at),\n    \n    FOREIGN KEY (report_id) REFERENCES reports(report_id) ON DELETE CASCADE,\n    FOREIGN KEY (user_id) REFERENCES users(user_id),\n    FOREIGN KEY (access_granted_by) REFERENCES users(user_id)\n);\n```\n\n## Key Performance Metrics Examples\n\n### Sales Metrics\n```sql\n-- Example metrics that could be stored\nINSERT INTO report_metrics (report_id, metric_name, metric_category, metric_value, metric_unit) VALUES\n(1, 'Total Revenue', 'sales', 150000.00, 'USD'),\n(1, 'Sales Growth Rate', 'sales', 12.5, 'percentage'),\n(1, 'Average Order Value', 'sales', 275.50, 'USD'),\n(1, 'Conversion Rate', 'sales', 3.2, 'percentage'),\n(1, 'Customer Acquisition Cost', 'sales', 45.75, 'USD');\n```\n\n### Operational Metrics\n```sql\nINSERT INTO report_metrics (report_id, metric_name, metric_category, metric_value, metric_unit) VALUES\n(2, 'Order Fulfillment Time', 'operational', 24.5, 'hours'),\n(2, 'Inventory Turnover', 'operational', 8.2, 'times'),\n(2, 'Employee Productivity', 'operational', 95.5, 'percentage'),\n(2, 'Customer Satisfaction Score', 'operational', 4.3, 'rating'),\n(2, 'Return Rate', 'operational', 2.1, 'percentage');\n```\n\n## Sample Queries\n\n### Generate Performance Dashboard\n```sql\nSELECT \n    r.report_name,\n    r.period_type,\n    r.start_date,\n    r.end_date,\n    rm.metric_name,\n    rm.metric_value,\n    rm.metric_unit,\n    rm.variance_percentage,\n    rm.performance_rating,\n    rm.trend\nFROM reports r\nJOIN report_metrics rm ON r.report_id = rm.report_id\nWHERE r.report_type = 'sales'\n    AND r.start_date >= '2024-01-01'\n    AND r.status = 'completed'\nORDER BY r.generated_at DESC, rm.metric_category, rm.metric_name;\n```\n\n### Scheduled Reports Due\n```sql\nSELECT \n    report_id,\n    report_name,\n    report_type,\n    schedule_frequency,\n    next_run_date,\n    DATEDIFF(next_run_date, NOW()) as days_until_run\nFROM reports\nWHERE is_scheduled = TRUE\n    AND status = 'completed'\n    AND next_run_date <= DATE_ADD(NOW(), INTERVAL 7 DAY)\n    AND is_active = TRUE\nORDER BY next_run_date;\n```\n\n### Performance Trends\n```sql\nSELECT \n    rm.metric_name,\n    rm.metric_category,\n    AVG(rm.metric_value) as avg_value,\n    MIN(rm.metric_value) as min_value,\n    MAX(rm.metric_value) as max_value,\n    COUNT(*) as report_count,\n    AVG(rm.variance_percentage) as avg_variance\nFROM report_metrics rm\nJOIN reports r ON rm.report_id = r.report_id\nWHERE r.report_type = 'sales'\n    AND r.start_date >= DATE_SUB(NOW(), INTERVAL 12 MONTH)\n    AND rm.metric_unit = 'USD'\nGROUP BY rm.metric_name, rm.metric_category\nORDER BY avg_value DESC;\n```\n\nThis structure provides comprehensive reporting capabilities with performance metrics tracking, trend analysis, and flexible report generation features."
}

Audit Trail (1)

2d agodependents_unblockedfoundry_pipeline
Task ID: 5a9cc481-1065-4824-8d85-1e817792c444