3.1 KiB
3.1 KiB
Task 6 — Current-location World API report
Scope delivered
- Added
WorldService.getCurrentLocation(characterId). - Added
GET /api/world/current-locationusing the stable demo character. - Added
WorldModule, including TypeORM repositories forCharacterandLocationConnection, and imported it throughAppModule. WorldServicecompletes due travel before loading the character, returns the complete current-location DTO, returns only enabled outgoing connections, and exposes a target summary, duration, and textual danger rating only. The rawambushChanceis not part of the public DTO;0.0500maps toLOW.- Kept the existing database-free health E2E harness valid by overriding the
newly imported
WorldModule, just as it already overrides the database, character, and travel modules.
Required preflight
- Read the complete Task-6 brief and the binding project documentation, including the visual asset style guide.
- Inspected
world-travel-screen.png,combat-screen.png, andhunting-screen.pngindocs/references/. - Preserved the user-owned untracked
apps/web/public/images/directory anddocs/references/Ashen_Realms_Visual_Asset_Style_Guide_V1.mdunchanged.
TDD evidence
RED
Command:
npm test --workspace=@ashen-realms/api -- world.service.spec.ts --runInBand
Initial result: failed because ./world.service did not exist. After the
minimal initial implementation, the test exposed that a disabled connection
could still be returned by an unexpected repository result. The service now
defensively filters disabled connections in addition to querying with
enabled: true.
GREEN
npm test --workspace=@ashen-realms/api -- world.service.spec.ts --runInBand
Result: 1 suite passed, 2 tests passed.
Verification evidence
npm test --workspace=@ashen-realms/api -- --runInBand
# 8 suites passed, 20 tests passed
npm run test:e2e --workspace=@ashen-realms/api -- --runInBand
# 1 suite passed, 2 tests passed
npm run build:api
# Nest build completed successfully
# From apps/api:
.\node_modules\.bin\prettier.cmd --check <Task-6 TypeScript files>
npx eslint <Task-6 TypeScript files>
# Prettier: all matched files use Prettier code style; ESLint exit 0
git diff --check -- apps/api/src/app.module.ts apps/api/src/world apps/api/test/app.e2e-spec.ts
# exit 0
The initial E2E run was reproducibly red because the new WorldModule caused
TypeORM repository construction after the test had intentionally replaced the
database module. Adding its corresponding empty module override restored the
existing database-free health test without changing product behavior.
Deliberate limits and concerns
- The approved first slice only needs the seeded 5% route, so the public
connection danger mapping currently distinguishes
LOW(at or below 5%) andHIGH(above 5%). Future routes may require finer danger tiers when their product thresholds are specified. - This task adds no database-backed route E2E assertion; the dedicated migration/seed route smoke test is scheduled for Task 10.