feat: add project workspace data model

This commit is contained in:
2026-07-19 19:06:42 +08:00
parent 5b95668945
commit 6c12d4b0db
4 changed files with 227 additions and 0 deletions

View 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.