rename(phase 1): CapaKraken → Nexus across code, UI, docs, CI (#61)
CI / Architecture Guardrails (push) Successful in 2m38s
CI / Assistant Split Regression (push) Successful in 3m33s
CI / Typecheck (push) Successful in 3m51s
CI / Lint (push) Successful in 5m2s
CI / E2E Tests (push) Has been cancelled
CI / Fresh-Linux Docker Deploy (push) Has been cancelled
CI / Release Images (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled

rename(phase 1): CapaKraken → Nexus across code, UI, docs, CI (#61)

Co-authored-by: Hartmut Nörenberg <hn@hartmut-noerenberg.com>
Co-committed-by: Hartmut Nörenberg <hn@hartmut-noerenberg.com>
This commit was merged in pull request #61.
This commit is contained in:
2026-05-21 16:28:40 +02:00
committed by Hartmut
parent d9a7ec0338
commit b41c1d2501
943 changed files with 24548 additions and 16832 deletions
+28 -21
View File
@@ -6,28 +6,31 @@
## Goal
Extend CapaKraken to support chargeability reporting with country-specific SAH (Standard Available Hours), FTE-based capacity, organizational hierarchy, utilization categories, client/WBS management, and a native chargeability report replacing the current Excel workflow.
Extend Nexus to support chargeability reporting with country-specific SAH (Standard Available Hours), FTE-based capacity, organizational hierarchy, utilization categories, client/WBS management, and a native chargeability report replacing the current Excel workflow.
## Plan Documents
| # | Plan | File | Core Deliverable |
|---|---|---|---|
| 1 | Country, SAH & FTE | [plan-country-sah-fte.md](plan-country-sah-fte.md) | Country/MetroCity models, SAH calculator, FTE-scaled daily hours |
| 2 | Org Unit Hierarchy | [plan-org-unit-hierarchy.md](plan-org-unit-hierarchy.md) | 3-level OrgUnit tree (L5→L6→L7), resource assignment, admin UI |
| 3 | Utilization Categories | [plan-utilization-categories.md](plan-utilization-categories.md) | UtilizationCategory model on projects (Chg, BD, MD&I, M&O, PD&R, Absence) |
| 4 | Client & WBS | [plan-client-wbs-model.md](plan-client-wbs-model.md) | Client tree (Master→Entity), project-client linking |
| 5 | Resource Extensions | [plan-resource-extensions.md](plan-resource-extensions.md) | EID attributes, ManagementLevel, ResourceType, Chg Responsibility, derivation rules |
| 6 | Chargeability Report | [plan-chargeability-report.md](plan-chargeability-report.md) | Native report replacing Excel, forecast from assignments + SAH, SAP import for actuals |
| # | Plan | File | Core Deliverable |
| --- | ---------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| 1 | Country, SAH & FTE | [plan-country-sah-fte.md](plan-country-sah-fte.md) | Country/MetroCity models, SAH calculator, FTE-scaled daily hours |
| 2 | Org Unit Hierarchy | [plan-org-unit-hierarchy.md](plan-org-unit-hierarchy.md) | 3-level OrgUnit tree (L5→L6→L7), resource assignment, admin UI |
| 3 | Utilization Categories | [plan-utilization-categories.md](plan-utilization-categories.md) | UtilizationCategory model on projects (Chg, BD, MD&I, M&O, PD&R, Absence) |
| 4 | Client & WBS | [plan-client-wbs-model.md](plan-client-wbs-model.md) | Client tree (Master→Entity), project-client linking |
| 5 | Resource Extensions | [plan-resource-extensions.md](plan-resource-extensions.md) | EID attributes, ManagementLevel, ResourceType, Chg Responsibility, derivation rules |
| 6 | Chargeability Report | [plan-chargeability-report.md](plan-chargeability-report.md) | Native report replacing Excel, forecast from assignments + SAH, SAP import for actuals |
## Key Design Decisions
### SAH as capacity basis
Standard Available Hours = `(dailyHours * FTE) * (workingDays - publicHolidays - absence)`.
Country drives daily hours (8h most, 9h India, variable Spain). FTE reduces proportionally.
### Resource Type derivation (Option A)
Store only 5 base types in DB: Employee, Freelancer, Apprentice, Intern, Student.
Derive reporting types at query time:
- **Production Studios** = `chgResponsibility = true` AND country = Germany
- **Near&Offshore** = country NOT Germany AND type = Employee/Freelancer
- **Accenture** = `chgResponsibility = false`
@@ -36,10 +39,12 @@ Derive reporting types at query time:
Derivation rules are configurable in admin (which countries map to which reporting type).
### Utilization on projects, not allocations
Each project carries a utilization category (Chg, BD, MD&I, etc.). Hours assigned to a project inherit its category for reporting. Unassigned hours = SAH minus all categorized hours.
### Forecast chargeability = derived metric
`forecastChg = hours on Chg projects / SAH`. No manual chargeability entry — it comes from what CapaKraken already knows about assignments.
`forecastChg = hours on Chg projects / SAH`. No manual chargeability entry — it comes from what Nexus already knows about assignments.
## Dependency Order
@@ -56,20 +61,21 @@ Plan 6 (Chargeability Report) depends on all others.
## New Prisma Models Summary
| Model | Purpose |
|---|---|
| `Country` | Country with daily working hours and schedule rules |
| `MetroCity` | City within a country (for public holidays) |
| `OrgUnit` | Self-referencing 3-level org hierarchy |
| `UtilizationCategory` | Project classification for hour bucketing |
| `Client` | Self-referencing client hierarchy (Master → Entity) |
| `ManagementLevelGroup` | Career level grouping with target chargeability % |
| `ManagementLevel` | Specific level within a group |
| `ChargeabilitySnapshot` | Imported SAP actuals for historical reporting |
| Model | Purpose |
| ----------------------- | --------------------------------------------------- |
| `Country` | Country with daily working hours and schedule rules |
| `MetroCity` | City within a country (for public holidays) |
| `OrgUnit` | Self-referencing 3-level org hierarchy |
| `UtilizationCategory` | Project classification for hour bucketing |
| `Client` | Self-referencing client hierarchy (Master → Entity) |
| `ManagementLevelGroup` | Career level grouping with target chargeability % |
| `ManagementLevel` | Specific level within a group |
| `ChargeabilitySnapshot` | Imported SAP actuals for historical reporting |
## Resource Model Changes Summary
New fields on `Resource`:
- `enterpriseId` (String, unique)
- `countryId` → Country
- `metroCityId` → MetroCity
@@ -86,13 +92,14 @@ New fields on `Resource`:
## Project Model Changes Summary
New fields on `Project`:
- `utilizationCategoryId` → UtilizationCategory
- `clientId` → Client (WBS Client Name)
## Open Questions
1. **Resource Type derivation rules**: The country→reporting-type mapping should be admin-configurable. Exact admin UI TBD.
2. **Win Probability**: The Dispo file mentions it "should contain the value from MMS". Is this relevant for CapaKraken? If so, it's a field on Project.
2. **Win Probability**: The Dispo file mentions it "should contain the value from MMS". Is this relevant for Nexus? If so, it's a field on Project.
3. **LCR/UCR**: Cost rate definitions are not yet available. Placeholder fields are included.
4. **SAP import format**: What format do SAP period exports come in? CSV? API? Needs clarification for the import mechanism.
5. **FTE history**: Currently single `fte` field. Monthly FTE tracking may be needed if contract changes happen mid-month.