feat: add project workspace data model
This commit is contained in:
44
.superpowers/sdd/task-2-report.md
Normal file
44
.superpowers/sdd/task-2-report.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# Task 2 Report: Workbench Types And Project-Scoped Mock Data
|
||||
|
||||
## What changed
|
||||
|
||||
- Added the typed workbench domain model in `apps/web/src/features/workbench/types.ts`.
|
||||
- Added two project records and project-scoped workspace mock data in `apps/web/src/features/workbench/mockData.ts`.
|
||||
- Added coverage for dynamic projects, project-specific channels, channel ordering, and custom-link URL shape in `apps/web/src/features/workbench/mockData.test.ts`.
|
||||
- Kept the implementation scoped to the requested workbench data and test files. No UI components, React dependencies, or shadcn/ui dependencies were changed.
|
||||
|
||||
## Tests
|
||||
|
||||
- Targeted test: `npm test -- --run src/features/workbench/mockData.test.ts` -> 1 file passed, 2 tests passed.
|
||||
- Full Web test suite: `npm test -- --run` -> 4 files passed, 7 tests passed.
|
||||
- Web production build: `npm run build` -> successful.
|
||||
- Formatting/diff validation: `git diff --check` -> no issues.
|
||||
|
||||
## TDD evidence
|
||||
|
||||
1. Created `mockData.test.ts` before production implementation.
|
||||
2. Ran the targeted test and observed the expected red result: Vitest could not resolve `./mockData` because the implementation files did not exist.
|
||||
3. Added `types.ts` and `mockData.ts` using the exact task brief values.
|
||||
4. Re-ran the targeted test and observed green: 2/2 tests passed.
|
||||
5. Ran the full Web test suite and build successfully.
|
||||
|
||||
## Files changed
|
||||
|
||||
- `apps/web/src/features/workbench/types.ts`
|
||||
- `apps/web/src/features/workbench/mockData.ts`
|
||||
- `apps/web/src/features/workbench/mockData.test.ts`
|
||||
- `.superpowers/sdd/task-2-report.md`
|
||||
|
||||
## Self-review
|
||||
|
||||
- `ChannelType` contains all seven required channel literals in the specified order.
|
||||
- `ProjectWorkspace` includes all required project-scoped collections.
|
||||
- Both projects receive distinct channel IDs, item IDs, and custom-link URLs through the project ID interpolation.
|
||||
- `getProjectWorkspace` returns the requested workspace and preserves the brief's fallback to the first workspace for unknown IDs.
|
||||
- The test verifies at least two projects, numeric IDs, names, distinct workspace IDs, channel order, and custom-link URL format.
|
||||
- No unrelated tracked files were changed.
|
||||
|
||||
## Concerns
|
||||
|
||||
- Vitest and Vite report the pre-existing warning that no Svelte config was found in `apps/web`; it did not prevent tests or the build from succeeding.
|
||||
- The mock data is intentionally static and duplicated across projects via the shared workspace mapper, as required for this MVP task.
|
||||
Reference in New Issue
Block a user