This report is based on the sprint feature artifact, bundled test coverage log, SonarQube scan notes, and SonarQube dashboard screenshot. Delivery claims below are tied to those bundled artifacts:
Source pulled into this section:
Feature artifact: Sprint 13 Release Report
Scope evidence: BE-T01-T08, SPEC-14, F005, F006, F007/F012, S13-F-003, S13-F-005, FE-T12/BE-T08
| Key | Type | Status | Summary | Components | Evidence |
|---|---|---|---|---|---|
| BE-T01-T08 / Platform View | Epic / Feature | Delivered | Add Platform planning tier between Brick and Fit (GenCat -> Brick -> Platform -> Fit). | Schema, DTOs, Calculation Engine, Redux, Planning API, Planning Grid, Export | Feature artifact, API table, data model notes |
| SPEC-14 | Feature | Delivered | Make Width editable and derive Depth as Depth = Sell-In / Width; cascade / roll up values through hierarchy. | Calculation Engine, Planning UI, Validation | Feature artifact |
| F005 | Feature | Delivered | Normalize sibling distribution percentages so edited groups total 100%. | Planning UI, Edit Handlers, Decimal Math, Row Recalculation | Feature artifact |
| F006 | Feature | Delivered | Apply Navy / Red planning grid design with source-coded bands and editable-cell styling. | Planning Grid, Shared UI Primitives, Cell Rendering | Feature artifact |
| F007 / F012 | Feature | Delivered | Support collapsible Historical / AI bands while keeping User Inputs visible and Level / Assortment pinned. | Planning Grid, Column Configuration, View State | Feature artifact |
| S13-F-003 | Feature | Delivered | Add per-view search with ancestor context for filtered planning rows. | Planning UI, View Filtering, Breadcrumb Display | Feature artifact |
| Admin | Feature | Delivered | Add engagement / finalization dashboard for downloaded-without-editing, login recency, and store-finalization metrics. | Admin API, Dashboard UI, Franchisee List, Store Drill-down | Feature artifact |
| S13-F-005 | Feature | Delivered | Add user directory, role assignment, franchise-code assignment, onboarding password display, profile update, and password change. | Admin User API, Auth Profile API, Profile UI | Feature artifact, API table |
| Planning | Task | Delivered | Add confirm-gated reset to AI recommendation baseline across store planning levels. | Store Planning Service, Planning UI | Feature artifact, API table |
| FE-T12 / BE-T08 | Feature | Delivered | Add Platform sheet, Depth columns, and client-facing headers to multi-level Excel export. | Export Service, Workbook Mapper, Header Formatting | Feature artifact |
platform column: som_inputs, buy_plan_recommendations, historical-season tables
unique keys: widened to 6-part composite
category: widened to VARCHAR(100)
level constraint / indexes: extended to include PLATFORM
exports table: storage key, export type, status, expiry
users columns: last_login_at, is_active
Endpoint list captured from the feature artifact:
| Method | Path | Captured purpose |
|---|---|---|
| GET | /planning/platform (+ /:gencat, /:gencat/:brick) new | Platform-view drill-down (summary -> brick -> platform rows) |
| PUT | /planning/platform new | Save a platform-level plan (GenCat / Brick / Platform / Fit arrays) |
| GET | /planning/brickfit/:gencat/:brick/:platform new | Fit-level rows under a platform |
| GET | /planning/brickfit/:gencat/:brick | Returns platform rows for the Brick-to-Platform hierarchy |
| POST | /stores/:store_code/planning/reset new | Reset a store to AI recommendations (confirm-gated, atomic) |
| GET | /admin/dashboard/summary new | Engagement & finalization KPIs |
| GET | /admin/dashboard/franchisees (+ /:id/stores) new | Paginated, searchable franchisee list + per-store drill-down |
| GET | /admin/users/stats new | User counts by role & recent signups |
| POST | /admin/users/:id/password-reset | Admin-initiated password reset |
| GET | /auth/profile · PUT /auth/profile new | Self-service profile read / update |
| PUT | /auth/password | Change own password with current-password verification |
Database delivery note from the feature artifact:
Command:
npm run test:coverage
Actual summary from the supplied log:
=============================== Coverage summary ===============================
Statements : 60.47% ( 9056/14976 )
Branches : 51.69% ( 2824/5463 )
Functions : 57.74% ( 1290/2234 )
Lines : 60.72% ( 8739/14390 )
================================================================================
Test Suites: 192 passed, 192 total
Tests: 1 skipped, 3986 passed, 3987 total
Time: 147.999 s
Observed non-failing warnings/notices:
Command:
npm run sonar:scan
Raw incorporation path:
npm run test:coverage creates coverage/lcov.info.npm run sonar:scan runs npx --yes sonarqube-scanner.sonar-project.properties scopes sources to src, classifies tests with sonar.test.inclusions, imports coverage/lcov.info, and excludes DTO/module/test-support boilerplate from coverage or duplication where configured.Actual scan excerpts:
Project key: levis-bp-be
SonarQube server version: 26.7.0
Scanner version: 4.3.8
Indexed files: 608
Ignored by inclusion/exclusion patterns: 381
LCOV imported: yes
Analysis URL: http://localhost:9000/dashboard?id=levis-bp-be
CE task URL: http://localhost:9000/api/ce/task?id=a12b5787-0b43-47b4-ba99-81ee26d02147
Analysis total time: 59.689 s
Dashboard values transcribed from screenshot:
| Measure | Value |
|---|---|
| Quality gate | Passed |
| Lines of code | 42k |
| Security open issues | 0 |
| Reliability open issues | 0 |
| Maintainability open issues | 235 |
| Accepted issues | 0 |
| Coverage | 59.2% |
| Duplications | 4.1% |
| Security hotspots | 0 |
Warnings from scan notes:
# 1. Install dependencies
npm ci
# 2. Generate unit coverage
mkdir -p reports/client-sprint/evidence
npm run test:coverage | tee reports/client-sprint/evidence/test_coverage.log
# 3. Start or target SonarQube
npm run sonar:up
# create/export SONAR_TOKEN if the server requires auth
export SONAR_HOST_URL=http://localhost:9000
export SONAR_TOKEN=<token>
# 4. Run analysis after coverage exists
npm run sonar:scan | tee reports/client-sprint/evidence/sonar_scan.md
# 5. Optional: export API metrics when token is available
npm run sonar:export
# 6. Regenerate this report bundle
node quality/client-sprint-report.mjs