End-to-end runnable skeleton for the OLIVER Sales Operations Platform — the V2 of the Scope Builder, broadened to a complete RFP-to-mobilization pipeline (intake → qualification → Q&A → match → ratecard → delivery model → efficiency → team shape → caveats → approval gates → pitch → post-win planning → downstream handoff). Backend (FastAPI + async SQLAlchemy + Alembic): - Models: app_users (with workflow_roles for approver routing), GMAL catalog ported from V1 (gmal_assets / roles / gmal_hours / service lines / role-level mappings), and the new state machine (opportunities, stage_states, stage_artifacts, approvals). - Initial Alembic migration creates 11 tables and 5 enum types using the postgresql.ENUM(create_type=False) pattern so the types aren't double-created when referenced from multiple columns. - Claude client defaults to claude-opus-4-7 with cost tracking + debug log; Azure SSO middleware ported as-is from V1. - Public /api/health round-trips a SELECT 1 to verify the DB is reachable. Frontend (React 18 + Vite + TanStack Query + MSAL + Mermaid): - Home page renders the canonical 17-stage flowchart (Mermaid) plus an enumerated stage card grid with the two approval gates highlighted. - React Router uses /osop basename to mirror the V1 /gsb/ deploy pattern; axios client targets /osop/api with MSAL token interceptor. Compose: - name: oliver-sales-ops-platform (so the project doesn't collide with the deploy-folder default per shared-server policy in CLAUDE.md). - Ports 5435 / 6380 / 8003 / 3011 to coexist with V1 on the same host. - Source mounts on backend (app/, alembic/, alembic.ini) and frontend (src/, configs) so dev iteration doesn't require rebuilds. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
750 B
JSON
30 lines
750 B
JSON
{
|
|
"name": "oliver-sales-ops-platform-frontend",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"preview": "vite preview"
|
|
},
|
|
"dependencies": {
|
|
"@azure/msal-browser": "^5.6.2",
|
|
"@azure/msal-react": "^5.2.0",
|
|
"@tanstack/react-query": "^5.62.7",
|
|
"axios": "^1.7.9",
|
|
"lucide-react": "^0.468.0",
|
|
"mermaid": "^11.4.1",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"react-router-dom": "^6.28.0"
|
|
},
|
|
"devDependencies": {
|
|
"@tanstack/react-query-devtools": "^5.62.7",
|
|
"@types/react": "^18.3.16",
|
|
"@types/react-dom": "^18.3.5",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"typescript": "^5.7.2",
|
|
"vite": "^6.0.3"
|
|
}
|
|
}
|