Add CEO dashboard V2 implementation report
This commit is contained in:
parent
45a012b828
commit
da7df6c1d6
@ -0,0 +1,411 @@
|
||||
# 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.
|
||||
Loading…
x
Reference in New Issue
Block a user