| REVENUE EXCEL REPORT GENERATION TASK |
|
|
| === YOUR MISSION === |
| Create a professional Excel report from arranged_financial_data.json focusing ONLY on revenue data. |
| Generate a business-ready revenue analysis report with 100% success rate. |
| You are using gemini-2.5-flash with thinking budget optimization and RestrictedPythonTools for automatic path correction and package management. |
|
|
| === WHAT TO CREATE === |
| β’ Professional Excel file with revenue-focused worksheets |
| β’ Clean, business-ready formatting for executives |
| β’ Focus exclusively on revenue analysis and visualization |
| β’ File ready for immediate business use |
|
|
| === MANDATORY EXECUTION SEQUENCE === |
|
|
| **STEP 1: Environment Setup (30 seconds)** |
| ```python |
| # RestrictedPythonTools automatically installs packages when needed |
| # Just use run_python_code() - packages will be auto-installed |
| import pandas as pd |
| import openpyxl |
| print("Packages will be auto-installed by RestrictedPythonTools") |
| ``` |
|
|
| **STEP 2: Revenue Data Loading (30 seconds)** |
| - read_file('arranged_financial_data.json') |
| - Parse and validate revenue data structure |
| - Count revenue categories and data points |
| - Log: "Revenue data loaded: X categories, Y revenue points" |
|
|
| **STEP 3: Revenue Excel Script Creation (3 minutes)** |
| Create 'generate_revenue_report.py' with this EXACT structure: |
|
|
| ```python |
| #!/usr/bin/env python3 |
| import os |
| import sys |
| import json |
| import pandas as pd |
| from openpyxl import Workbook |
| from openpyxl.styles import Font, PatternFill, Border, Side, Alignment |
| from datetime import datetime |
| import logging |
|
|
| # Configure logging |
| logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') |
| logger = logging.getLogger(__name__) |
|
|
| def main(): |
| try: |
| # Load revenue data |
| logger.info('Loading revenue data from arranged_financial_data.json') |
| with open('arranged_financial_data.json', 'r', encoding='utf-8') as f: |
| revenue_data = json.load(f) |
| |
| # Create professional workbook |
| logger.info('Creating revenue analysis workbook') |
| wb = Workbook() |
| wb.remove(wb.active) # Remove default sheet |
| |
| # Define professional styling |
| header_font = Font(bold=True, color='FFFFFF', size=12) |
| header_fill = PatternFill(start_color='1F4E79', end_color='1F4E79', fill_type='solid') |
| data_font = Font(size=11) |
| |
| # Process each revenue category |
| revenue_categories = ['Company_Overview', 'Total_Revenue', 'Segment_Revenue', 'Regional_Revenue', 'Data_Quality'] |
| |
| for category_name in revenue_categories: |
| if category_name in revenue_data: |
| logger.info(f'Creating worksheet: {category_name}') |
| category_data = revenue_data[category_name] |
| ws = wb.create_sheet(title=category_name) |
| |
| # Add professional headers |
| headers = ['Revenue Item', 'Amount', 'Currency/Unit', 'Period', 'Confidence Score'] |
| for col, header in enumerate(headers, 1): |
| cell = ws.cell(row=1, column=col, value=header) |
| cell.font = header_font |
| cell.fill = header_fill |
| cell.alignment = Alignment(horizontal='center', vertical='center') |
| |
| # Add revenue data |
| data_rows = category_data.get('data', []) |
| for row_idx, data_row in enumerate(data_rows, 2): |
| ws.cell(row=row_idx, column=1, value=data_row.get('item', '')).font = data_font |
| ws.cell(row=row_idx, column=2, value=data_row.get('value', '')).font = data_font |
| ws.cell(row=row_idx, column=3, value=data_row.get('unit', '')).font = data_font |
| ws.cell(row=row_idx, column=4, value=data_row.get('period', '')).font = data_font |
| ws.cell(row=row_idx, column=5, value=data_row.get('confidence', '')).font = data_font |
| |
| # Auto-size columns for professional appearance |
| for column in ws.columns: |
| max_length = 0 |
| column_letter = column[0].column_letter |
| for cell in column: |
| try: |
| if len(str(cell.value or '')) > max_length: |
| max_length = len(str(cell.value or '')) |
| except: |
| pass |
| adjusted_width = min(max(max_length + 2, 15), 50) |
| ws.column_dimensions[column_letter].width = adjusted_width |
| |
| # Add borders for professional look |
| thin_border = Border( |
| left=Side(style='thin'), |
| right=Side(style='thin'), |
| top=Side(style='thin'), |
| bottom=Side(style='thin') |
| ) |
| |
| for row in ws.iter_rows(min_row=1, max_row=len(data_rows)+1, min_col=1, max_col=5): |
| for cell in row: |
| cell.border = thin_border |
| |
| # Save with professional filename |
| timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') |
| filename = f'Revenue_Analysis_Report_{timestamp}.xlsx' |
| wb.save(filename) |
| logger.info(f'Revenue report saved as: {filename}') |
| |
| # Verify file creation and quality |
| if os.path.exists(filename): |
| file_size = os.path.getsize(filename) |
| if file_size > 5000: # Minimum 5KB |
| logger.info(f'SUCCESS: Revenue report created successfully') |
| logger.info(f'File: {filename} ({file_size:,} bytes)') |
| logger.info(f'Worksheets: {len(wb.sheetnames)}') |
| print(f'REVENUE_REPORT_SUCCESS: {filename}') |
| return filename |
| else: |
| raise Exception(f'File too small ({file_size} bytes), likely corrupted') |
| else: |
| raise Exception('Excel file was not created') |
| |
| except FileNotFoundError as e: |
| logger.error(f'Revenue data file not found: {str(e)}') |
| sys.exit(1) |
| except json.JSONDecodeError as e: |
| logger.error(f'Invalid JSON in revenue data: {str(e)}') |
| sys.exit(1) |
| except Exception as e: |
| logger.error(f'Error creating revenue report: {str(e)}') |
| import traceback |
| logger.error(f'Traceback: {traceback.format_exc()}') |
| sys.exit(1) |
|
|
| if __name__ == '__main__': |
| result = main() |
| print(f'COMPLETED: {result}') |
| ``` |
|
|
| **STEP 4: Script Execution with RestrictedPythonTools (2 minutes)** |
| - Use run_python_code([complete_script]) for direct execution with auto-healing |
| - OR save_python_file('generate_revenue_report.py', [complete_script]) + run_shell_command('python generate_revenue_report.py') |
| - RestrictedPythonTools automatically handles path correction and directory constraints |
| - Automatic package installation and error recovery built-in |
| - If execution fails, RestrictedPythonTools will attempt automatic recovery |
|
|
| **STEP 5: Excel File Verification (CRITICAL - 30 seconds)** |
| - list_files() to check if Excel file exists in directory |
| - If Excel file NOT found in list_files(), retry script execution immediately |
| - run_shell_command('ls -la *Revenue*.xlsx') for detailed file info |
| - run_shell_command('du -h *Revenue*.xlsx') to verify file size > 5KB |
| - NEVER report success without Excel file confirmed in list_files() |
|
|
| === REVENUE REPORT SPECIFICATIONS === |
|
|
| **File Structure:** |
| - Filename: Revenue_Analysis_Report_YYYYMMDD_HHMMSS.xlsx |
| - 5 worksheets focusing exclusively on revenue data |
| - Professional corporate formatting throughout |
|
|
| **Worksheet Details:** |
| 1. **Company_Overview** - Company info, document metadata |
| 2. **Total_Revenue** - Consolidated revenue figures and totals |
| 3. **Segment_Revenue** - Revenue by business segment/division |
| 4. **Regional_Revenue** - Revenue by geographic region |
| 5. **Data_Quality** - Confidence scores and data validation |
|
|
| **Professional Formatting:** |
| - Headers: Bold white text on navy blue background (#1F4E79) |
| - Data: Clean 11pt font with professional alignment |
| - Borders: Thin borders around all data cells |
| - Columns: Auto-sized for optimal readability (15-50 characters) |
| - Layout: Business-ready presentation format |
|
|
| === ERROR HANDLING PROCEDURES === |
|
|
| **Package Installation Issues:** |
| - Try: pip install --user openpyxl pandas |
| - Try: python3 -m pip install openpyxl pandas |
| - Try: pip install --no-cache-dir openpyxl |
|
|
| **Revenue Data Loading Issues:** |
| - Verify arranged_financial_data.json exists |
| - Check JSON syntax and structure |
| - Ensure revenue categories are present |
|
|
| **Excel Generation Issues:** |
| - Log exact openpyxl error messages |
| - Try simplified formatting if complex formatting fails |
| - Check file write permissions in directory |
| - Verify Python version compatibility |
|
|
| **File Verification Issues:** |
| - Check file exists and has reasonable size (>5KB) |
| - Verify Excel file can be opened without corruption |
| - Confirm all expected worksheets are present |
|
|
| === SUCCESS CRITERIA === |
| Revenue Excel generation is successful ONLY if: |
| β openpyxl package installed without errors |
| β Revenue data loaded and parsed successfully |
| β Python script executed without errors |
| β Excel file created with proper filename format |
| β File size > 5KB indicating data was written |
| β All 5 revenue worksheets present and populated |
| β Professional formatting applied consistently |
| β File opens without corruption in Excel |
|
|
| === PROFESSIONAL FEATURES === |
| Your Excel report MUST include: |
| - **Corporate Design**: Professional navy blue headers with white text |
| - **Business Layout**: Clean, executive-ready formatting |
| - **Data Integrity**: All original revenue values preserved exactly |
| - **User Experience**: Auto-sized columns, proper alignment, clear borders |
| - **File Management**: Timestamped filename for version control |
| - **Quality Assurance**: Comprehensive error handling and validation |
|
|
| === FINAL VALIDATION CHECKLIST === |
| Before reporting success, verify: |
| β‘ All required packages installed successfully |
| β‘ Revenue data JSON loaded and parsed correctly |
| β‘ Python script saved and executed without errors |
| β‘ Excel file created with timestamped filename |
| β‘ File size indicates successful data population (>5KB) |
| β‘ All 5 revenue worksheets present and properly named |
| β‘ Revenue data populated correctly in each worksheet |
| β‘ Professional formatting applied consistently |
| β‘ No execution errors or warnings in output |
| β‘ File can be opened by Excel applications |
|
|
| Execute now. Focus EXCLUSIVELY on revenue data visualization. Create a professional, publication-ready revenue analysis report for business executives. |
|
|
|
|