Several fixes discovered while smoke-testing the homepage under the new
port layout (web 3200 / api 3201) to avoid clashing with a sibling project:
- analytics-api: add `unwrap<T>()` helper for the `{ data, cacheMeta }`
envelope the backend CacheMetaInterceptor appends to every
`/analytics/*` response. Apply to all 9 analytics methods. Without this
`data.activeCount` (etc.) were `undefined`, crashing KpiStrip with
`TypeError: Cannot read properties of undefined (reading 'toLocaleString')`.
- public page: hard-coded `city = 'Ho Chi Minh'` returned 0 rows because
the DB stores `'Hồ Chí Minh'` and the SQL filter is case-insensitive but
not diacritic-insensitive. Use the accented spelling.
- use-analytics hooks: add `useAuthedAnalytics()` gate so unauthenticated
visitors on public routes no longer fire 401s from analytics queries.
- next.config.js CSP: add localhost:3200/3201 (http + ws) to connect-src so
the web origin can reach the relocated API. Without this fetches hit
`TypeError: Failed to fetch` on login.
- .claude/launch.json + package.json: web → 3200, api → 3201 (was 3000/3001,
conflicting with the sibling psyforge project also using 3000).
- Minor follow-ups from parallel QA work on this branch (analytics modules,
notifications gateway, auth test fixtures, trending-areas handler + DTO
+ tests, a few E2E smoke specs).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
32 lines
659 B
JSON
32 lines
659 B
JSON
{
|
|
"version": "0.0.1",
|
|
"configurations": [
|
|
{
|
|
"name": "web",
|
|
"runtimeExecutable": "pnpm",
|
|
"runtimeArgs": ["--filter", "@goodgo/web", "dev"],
|
|
"port": 3200
|
|
},
|
|
{
|
|
"name": "api",
|
|
"runtimeExecutable": "env",
|
|
"runtimeArgs": [
|
|
"NODE_OPTIONS=-r dotenv/config",
|
|
"DOTENV_CONFIG_PATH=../../.env",
|
|
"PORT=3201",
|
|
"pnpm",
|
|
"--filter",
|
|
"@goodgo/api",
|
|
"dev"
|
|
],
|
|
"port": 3201
|
|
},
|
|
{
|
|
"name": "ai-services",
|
|
"runtimeExecutable": "uvicorn",
|
|
"runtimeArgs": ["app.main:app", "--reload", "--port", "8000"],
|
|
"port": 8000
|
|
}
|
|
]
|
|
}
|