You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.7 KiB
5.7 KiB
Lead Summary Component Capability Matrix
Version: 1.1.0
Implementation status: merged into the target component and covered by the canonical lead-summary DTO.
Target component: src/views/budget/collection/components/LeadDepartmentSummaryForm.vue
Retained rollback component: src/views/budget/collection/components/SummarySubmitForm.vue
The target component becomes the only component referenced by the lead-department page. The rollback component remains in source control until the observation-period cleanup task.
1. Capability Decision
| Capability | LeadDepartmentSummaryForm | SummarySubmitForm | Target decision |
|---|---|---|---|
| Effective department package list | Present | Present as sub-package data | Keep the lead form implementation and normalize its DTO. |
| Department submission status and date | Present | Partial | Keep; include pending/draft/submitted/approved. |
| View department submission detail | Present | Present | Keep one dialog and one normalized detail DTO. |
| Approve or return department submission | Missing | Missing from the component | Add explicit events for the lead workbench. |
| Application basis, purpose, reason and project content | Present | Loaded from package submission | Keep; source only from the level-2 lead_submission. |
| Economic classification aggregation | Present | Present with richer detail | Keep aggregation and department drill-down. |
| Summary calculation basis | Present | Present | Keep editable in draft only. |
| Economic item attachments | Implemented | Present | Merged into the target component. |
| General attachments | Implemented | Present | Merged into the target component. |
| New-project funding table | Implemented | Present | Merged with four-decimal amount validation. |
| Old-project funding table | Implemented | Present | Merged contract, historical amount, balance and fixed-asset fields. |
| Plain implementation schedule | Present | Present | Keep. |
| Current/next/third-year schedule detail | Implemented | Present | Merged into the target component. |
| Twelve-month current-year amount split | Implemented | Present | Merged and validated with shared money utilities. |
| Department schedule comparison | Missing | Present | Keep as read-only drill-down. |
| Department performance indicators | Present | Present | Keep one read-only table. |
| Lead summary performance indicators | Present | Present | Keep editable in draft only. |
| Other notes | Present | Present | Keep. |
| Save draft | Implemented | Mixed with legacy save/update | Uses a dedicated save-draft event. |
| Submit and resubmit | Present as submit |
Present with direct API behavior | Keep event-driven submission; no direct decomposition API call. |
| Returned-to-draft editing | Partial | Partial | Add state-driven edit mode and latest review notes. |
| Approved/rejected read-only mode | Partial | Partial | Drive entirely from lead_submission.status. |
| Four-decimal money handling | Implemented with decimal.js |
Uses native Number/parseFloat | Target component no longer performs native floating-point business calculations. |
| Mock fallback data | Removed | Present debug paths | Target component has no production mock fallback. |
| Direct API calls inside component | Present | Present | Move orchestration to page/API modules where practical. |
2. Canonical Form Model
package
leadSubmission
departmentSubmissions[]
applicationInfo
economicSummary[]
fundApplication.newProject
fundApplication.oldProject
implementationSchedule
implementationScheduleDetail
departmentPerformanceIndicators[]
summaryPerformanceIndicators[]
generalFileIds[]
otherNotes
latestApprovalNotes
Every money property remains a four-decimal string in component state.
3. Component Events
| Event | Payload | Owner |
|---|---|---|
save-draft |
Canonical lead summary request DTO | Lead department page |
submit |
Canonical lead summary request DTO | Lead department page |
review-department |
{ submissionId, action, approval_notes } |
Lead department page |
view-department |
Department submission ID | Lead department page |
cancel |
None | Lead department page |
The component must not import or call submitBudgetDecomposition.
4. Regression Baseline
| Scenario | Expected evidence |
|---|---|
| New lead draft | Every retained field is editable and serialized. |
| Existing lead draft | All fields, attachments and four-decimal values round-trip without loss. |
| Department submission pending | Summary submit is disabled and the department is listed as blocking. |
| Department submission submitted | Approve and return actions are available to the owning lead department. |
| Department submission returned | Blocking reason is visible and the department can resubmit. |
| All department submissions approved | Summary save and submit are enabled. |
| Lead summary returned | Latest approval notes are visible and the form is editable. |
| Lead summary submitted | Form is read-only and awaiting leader review. |
| Lead summary approved or rejected | Form is terminal and read-only. |
| API failure | Current form state and uploaded file references remain intact. |
Money edge 0.0001 |
Input, sum, comparison, request and response stay 0.0001. |
| Monthly schedule | Twelve-month sum must exactly equal current-year amount at four decimals. |
5. Removal Gate
SummarySubmitForm.vue can be deleted only when:
- Every capability marked "Merge" or "Keep" has a passing regression test against the target component.
- The lead-department page no longer imports or renders the rollback component.
- The new frontend has completed its stable observation period.
- The cleanup change passes unit tests, lint, production build and the lead summary smoke test.