Files
ashen-realms/.superpowers/sdd/2026-08-18-first-visible-vertical-slice/task-4-report.md
2026-08-18 20:00:40 +02:00

51 lines
2.8 KiB
Markdown

# Task 4: Health and demo-character API report
## RED
- Re-read every Markdown document below `docs/` and inspected `combat-screen.png`, `hunting-screen.png`, and `world-travel-screen.png` before implementation.
- Added focused health and character-service tests, then ran:
```powershell
npm test --workspace=@ashen-realms/api -- health.controller.spec.ts characters.service.spec.ts --runInBand
```
- Observed the expected RED result: both suites failed because `HealthController` and `CharactersService` did not exist.
## GREEN
- Replaced the scaffold root controller/service with `HealthModule` and `CharactersModule`.
- `GET /api/health` returns `{ status: 'ok' }` without a database query.
- `GET /api/characters/me` obtains the fixed demo ID server-side, loads `currentLocation`, maps `baseHp` to `maxHp` and `baseAttack` to `attack`, and raises `NotFoundException` when the seed is absent.
- Preserved the existing tested `configureApplication()` global-prefix seam and enabled Nest shutdown hooks in `main.ts` without repeating prefix configuration.
- Updated the E2E assertion from the retired hello-world root route to `/api/health`; it replaces both database-dependent modules so the health test remains database independent.
## Verification
| Command | Result |
| --- | --- |
| `npm test --workspace=@ashen-realms/api -- health.controller.spec.ts characters.service.spec.ts --runInBand` | PASS: 2 suites, 3 tests |
| `npm run test:e2e --workspace=@ashen-realms/api -- --runInBand` | PASS: 1 suite, 2 tests |
| `npm test --workspace=@ashen-realms/api -- --runInBand` | PASS: 5 suites, 9 tests |
| `npm run build:api` | PASS |
| `apps/api/node_modules/.bin/prettier.cmd --check <task files>` | PASS |
| `git diff --check` | PASS |
`npx prettier` did not resolve the workspace-local executable in this environment; the checked-in workspace binary at `apps/api/node_modules/.bin/prettier.cmd` was used for the formatting check.
## Files
- Added `apps/api/src/health/*` and character controller/service/module plus unit tests.
- Updated `apps/api/src/app.module.ts`, `apps/api/src/main.ts`, and `apps/api/test/app.e2e-spec.ts`.
- Removed `apps/api/src/app.controller.ts`, `app.controller.spec.ts`, and `app.service.ts`.
## Self-review and concerns
- Confirmed the repository query loads only the required current-location relation and response does not expose persistence-only base-stat names.
- Confirmed the missing seed path is tested as a 404-producing Nest exception.
- Confirmed `/` remains a 404 while `/api/health` is available through the existing global prefix.
- No task-specific concerns remain. Pre-existing untracked `apps/web/public/images/` and `docs/references/Ashen_Realms_Visual_Asset_Style_Guide_V1.md` are intentionally excluded.
## Commit
- Pending: `feat: expose health and demo character APIs`