# CEO Dashboard V2 Implementation Report Date: 2026-08-30 Addon: `mcs_operating_system` Odoo version: 17 Latest deployed commit: `45a012b` ## Summary CEO Dashboard V2 was implemented as an extension of the existing `mcs_operating_system` addon. The existing operating system models, menus, CRM extensions, project extensions, timesheet extensions, profitability records, and seeded records were preserved. The implementation adds a visual Odoo client dashboard, client-account rollups, project health/priority fields, CEO action tracking, internal-bet separation, portfolio seeding, profitability recomputation, CRM delivery-project support, cron repair, and focused tests. ## Files Added - `addons/mcs_operating_system/hooks.py` - `addons/mcs_operating_system/models/ceo_action.py` - `addons/mcs_operating_system/models/res_partner.py` - `addons/mcs_operating_system/static/src/js/ceo_dashboard_v2.js` - `addons/mcs_operating_system/static/src/scss/ceo_dashboard_v2.scss` - `addons/mcs_operating_system/static/src/xml/ceo_dashboard_v2.xml` - `addons/mcs_operating_system/tests/__init__.py` - `addons/mcs_operating_system/tests/test_ceo_dashboard_v2.py` - `addons/mcs_operating_system/views/ceo_action_views.xml` - `addons/mcs_operating_system/views/res_partner_views.xml` - `addons/mcs_operating_system/CEO_DASHBOARD_V2_IMPLEMENTATION_REPORT.md` ## Files Modified - `addons/mcs_operating_system/__init__.py` - `addons/mcs_operating_system/__manifest__.py` - `addons/mcs_operating_system/data/crm_data.xml` - `addons/mcs_operating_system/data/project_data.xml` - `addons/mcs_operating_system/models/__init__.py` - `addons/mcs_operating_system/models/crm_lead.py` - `addons/mcs_operating_system/models/dashboard.py` - `addons/mcs_operating_system/models/operating.py` - `addons/mcs_operating_system/models/project.py` - `addons/mcs_operating_system/security/ir.model.access.csv` - `addons/mcs_operating_system/views/crm_lead_views.xml` - `addons/mcs_operating_system/views/dashboard_views.xml` - `addons/mcs_operating_system/views/menu.xml` - `addons/mcs_operating_system/views/operating_views.xml` - `addons/mcs_operating_system/views/project_views.xml` ## Models Created ### `mcs.ceo.action` Tracks actions, decisions, approvals, blockers, and financial/business-impact items requiring CEO attention. Fields include: - `title` - `category` - `priority` - `priority_rank` - `state` - `date_due` - `responsible_user_id` - `partner_id` - `project_id` - `lead_id` - `expected_financial_impact` - `business_impact` - `next_action` - `blocker` - `notes` - `date_created` - `date_completed` Workflow actions: - Open - Waiting - Blocked - Completed - Cancelled ## Models Extended ### `res.partner` Added lightweight client-account rollup fields: - `mcs_is_client_account` - `mcs_account_status` - `mcs_account_health` - `mcs_currency_id` - `mcs_monthly_revenue` - `mcs_contracted_value` - `mcs_monthly_hours` - `mcs_effective_hourly_revenue` - `mcs_account_owner_id` - `mcs_next_account_action` - `mcs_account_risk_reason` - `mcs_project_ids` A defensive public maintenance action was added: - `action_mcs_ensure_client_account_columns` This was needed to repair the live half-upgraded state where the registry saw the new partner fields before the database columns existed. ### `project.project` Added delivery, portfolio, priority, stale, and internal-bet fields: - `mcs_delivery_type` - `mcs_portfolio_health` - `mcs_risk_score` - `mcs_last_meaningful_progress_date` - `mcs_days_since_meaningful_progress` - `mcs_stale` - `mcs_stale_threshold_days` - `mcs_launch_completion_date` - `mcs_revenue_impact_score` - `mcs_client_importance_score` - `mcs_urgency_score` - `mcs_completion_leverage_score` - `mcs_resource_cost_score` - `mcs_commercial_priority_score` - `mcs_internal_product_stage` - `mcs_internal_expected_revenue` - `mcs_internal_actual_revenue` - `mcs_next_milestone` - `mcs_next_decision_date` ### `crm.lead` Added: - `action_mcs_create_delivery_project` This supports creating or linking a delivery project from a won opportunity while preserving the standard customer/project relationship. ### `mcs.client.profitability` Added: - `action_recompute_from_project` - Project/period onchange recomputation The recompute pulls project revenue and period timesheets into profitability fields. ### `mcs.operating.dashboard` Added: - `get_ceo_dashboard_v2_data` - `action_mcs_seed_v2_operating_data` The dashboard payload contains company pulse, revenue, funnel, portfolio, project health, capacity, time distribution, allocation guardrail, CEO actions, internal bets, and drill-down actions. ## Computed Fields Client-account computed rollups: - Account health - Monthly revenue - Contracted value - Monthly hours - Effective hourly revenue Project computed fields: - Commercial priority score - Last meaningful progress date - Days since meaningful progress - Stale flag - Risk score - Portfolio health Dashboard computed payload: - Revenue coverage - Revenue coverage status - Revenue gap - Pipeline coverage - Pipeline coverage status - Team utilization - Billable utilization - Project health distribution - Capacity rows per employee - Time distribution by work category and billable class - Resource allocation guardrail ## XML Views Added: - CEO action tree/form/search/action views - Client account partner tree/form/action views - CEO Dashboard V2 client action Extended: - Project form operating section - CRM lead header - Profitability form - MCS Operating System menu ## JS / OWL Dashboard Added Odoo client action: - Tag: `mcs_ceo_dashboard_v2` - JS component: `McsCeoDashboardV2` - Template: `mcs_operating_system.CeoDashboardV2` Dashboard rows: - Company Pulse - Revenue Target vs Actual vs Forecast - CRM Funnel / Pipeline Coverage - Client Portfolio Health - Project Health Distribution - Team Capacity - Hours Distribution - CEO Attention Queue - Internal Bets - Resource Allocation Guardrail ## Menus And Actions Main CEO Dashboard menu now points to: - `action_mcs_ceo_dashboard_v2` Added management menus: - Client Accounts - CEO Actions The classic form dashboard still exists as: - `action_mcs_operating_dashboard` ## Security Changes Added access: - `mcs.ceo.action` read-only for Operating System User - `mcs.ceo.action` full access for Operating System Manager - `mcs.operating.dashboard` read-only for Operating System Manager Changed: - Dashboard financial access is manager-only. ## Cron Changes The existing cron was preserved: - `MCS: Schedule Missing CRM Follow-Ups` The live root cause was data/configuration drift: the cron existed but was inactive. The V2 setup hook now explicitly repairs this intended state without creating duplicate activities. Live result: - Cron active: `True` ## Data / Migration Changes Static CRM and project seed files were marked `noupdate` to prevent upgrade conflicts with live records that had drifted from their original XML IDs. Added idempotent setup logic for client accounts and portfolio workstreams. Seeded client accounts: - ClicksToCart - Wallaceton - Maison de Treats - Lens and Frames - TNCSC - Infini - Organic Healthy Family - Hondavert - RaceNation - Racewerks - Internal Seeded or linked workstreams: - ClicksToCart - ERP Implementation - ClicksToCart - App Development - ClicksToCart - Social Media Handling - Wallaceton - SEO - Wallaceton - Social Media Handling - Wallaceton - Ads Management - Maison de Treats - Social Media Handling - Lens and Frames - SEO - Lens and Frames - Social Media Handling - Lens and Frames - Ads Management - TNCSC - Ads Management - TNCSC - Videos - TNCSC - ERP - Infini - Social Media Handling - Organic Healthy Family - Shopify Store Development - Hondavert - Website Development - Hondavert - App Development - RaceNation - Website Development - Racewerks - Website Development - Internal - Shopify App for Revenue Generation - Internal - Custom Product Development The hook does not overwrite live task/project data. It creates missing records and fills blank operating fields only. ## Tests Added Added transaction tests for: - Project commercial priority score - Client account rollup - CEO action workflow - Dashboard V2 payload sections - CRM follow-up idempotency Test file: - `addons/mcs_operating_system/tests/test_ceo_dashboard_v2.py` ## Tests / Validation Executed Local validation executed: - Python syntax compile over `mcs_operating_system` Python files - XML parse validation over `mcs_operating_system` XML files Local Odoo test execution was not possible because Docker Desktop was not running on this machine: - Docker API error: Docker daemon pipe not found Live validation executed through XML-RPC: - Module upgrade succeeded - V2 seed action succeeded - Dashboard payload method succeeded - Client action exists - Client accounts created/linked - Delivery type projects created/linked - Internal bets separated - Follow-up cron active ## Live Upgrade Result Final live upgrade result: - Module: `mcs_operating_system` - State: `installed` - Version: `17.0.1.0.0` - Upgrade action returned successfully Live verification: - Client action `mcs_ceo_dashboard_v2`: exists - Client accounts: 11 - Projects with delivery type: 21 - Internal bets: 2 - CRM follow-up cron active: True - Dashboard payload sections returned: - `actions` - `allocation_guardrail` - `capacity` - `ceo_actions` - `company_pulse` - `internal_bets` - `kpis` - `period` - `portfolio` - `project_health` - `revenue` - `time_distribution` Dashboard payload counts: - Portfolio rows: 10 - Capacity rows: 15 - Internal bet rows: 2 Revenue coverage on verification: - Coverage: 0% - Status: critical This is expected until monthly revenue/cost source data is populated in live records. ## Known Limitations 1. Browser screenshot and browser-console validation were not completed because no authenticated browser session was available through the current tool context. 2. Local Odoo automated tests were added but not executed because Docker Desktop was not running. 3. Operating cost is derived from open HR contract wages when `hr.contract` is available. It does not yet include other overhead categories such as rent, subscriptions, or infrastructure. 4. Internal-bet estimated cost is currently returned as `0` because no employee/hourly-cost source model exists yet in this addon. 5. CRM-to-project workflow supports delivery project creation, but automatic sale order creation/linking is not fully implemented. 6. Portfolio stale calculation uses available signals: project write date, task write date, and timesheet dates. It does not yet detect milestone completion or formal project status updates separately. 7. Dashboard visuals are implemented as an Odoo client action with cards, bars, and tables. It is not a spreadsheet-style BI dashboard and does not yet use external charting libraries. 8. Some seeded legacy setup records had live drift. CRM/project static setup XML was marked `noupdate` to avoid duplicate/unique conflicts during upgrades. ## Not Fully Implemented From Specification - Fully automatic opportunity-won sale order creation. - Dedicated configuration model for stale threshold and pipeline multiplier. - Real internal-product cost calculation from employee cost rates. - Browser-based screenshot validation. - Browser console validation. - Full performance optimization with `read_group` everywhere. - Full automated test execution in this environment. ## Current Status CEO Dashboard V2 is implemented, pushed, and upgraded on the live server. The dashboard backend payload is returning live data, drill-down action definitions exist, the visual client action is registered, portfolio rollup data is seeded without overwriting live work, internal products are separated, and the CRM follow-up cron is active.