chore(cleanup): J5 — defer GeoIP, rename v2-v3-types, document Storybook kill
Four small but unrelated cleanups bundled as the J5 day of the v1.0.3 →
v1.0.4 cleanup sprint.
1. GeoIP (veza-backend-api/internal/services/geoip_service.go)
Deferred to v1.1.0. Replace the TODO tag with a plain comment explaining
why: shipping GeoIP means owning the MaxMind license key, a GeoLite2-City
download pipeline, and an automatic refresh job — out of scope for a
cleanup release. Until then Lookup returns empty strings and the
geolocation column stays NULL, which is what every caller already
tolerates as a best-effort hint.
2. v2-v3-types.ts → domain.ts (apps/web/src/types/)
The file was a leftover from the frontend v2/v3 merge and carried a
"Merged for compatibility" header that implied it was transitional. In
reality its 25+ types (Product, Cart, Post, Course, Channel, GearItem,
LiveStream, Report, ...) are live domain types imported all over the
feature tree through the @/types barrel. Zero direct imports of the old
file path exist — everything goes through src/types/index.ts.
Rename the file to domain.ts, update the re-export in the barrel, replace
the misleading header comment with a neutral note (these are UI / domain
shapes not derived from OpenAPI; split by concern when a single feature
starts owning enough of them). Verified with tsc --noEmit and a full vite
build — clean.
3. moment → date-fns (no-op)
Recon showed moment is not installed (not in apps/web/package.json nor in
package-lock.json) and zero src files import it. The audit that flagged a
"moment + date-fns duplication" was wrong. date-fns@4.1.0 is the single
date library. Nothing to change.
4. Storybook kill documented (README.md)
CI kill was already done: chromatic.yml.disabled, storybook-audit.yml
.disabled, visual-regression.yml.disabled; no refs in ci.yml or
frontend-ci.yml. Add a README section explaining the deferral: ~1 400
network errors in the build due to MSW not being wired for
/api/v1/auth/me and /api/v1/logs/frontend. Local npm scripts still work
for one-off component inspection. Re-enable path documented (fix MSW
handlers, rename the three .disabled files back to .yml).
Verification:
cd veza-backend-api && go build ./... && go vet ./... OK
cd apps/web && npx tsc --noEmit OK (0 errors)
cd apps/web && npm run build OK (25.17s)
cd apps/web && npx eslint src/types/domain.ts \
src/types/index.ts OK (0 warnings)
Why --no-verify for this commit:
The lint-staged config at .lintstagedrc.json has a pre-existing bug in
its apps/web/**/*.{ts,tsx} rule: the bash -c wrapper does not forward
"$@", so eslint runs with no file args and falls back to linting the
entire project. The project has ~1 170 pre-existing warnings on files
unrelated to J5, and the rule is pinned to --max-warnings=0, so any
commit touching a single .ts file blocks on that backlog.
My two TS changes (domain.ts, index.ts) were verified clean by invoking
eslint directly on them (exit 0, 0 warnings), and tsc --noEmit passes
for the whole project. The underlying lint-staged bug and the 1 170
warning backlog are out of J5 scope — tracking them as follow-ups.
Follow-ups (not in J5 scope):
- Fix .lintstagedrc.json apps/web/**/*.{ts,tsx} rule to forward "$@"
- Work down the 1 170-warning ESLint backlog (mostly no-explicit-any
and no-unused-vars)
Refs: AUDIT_REPORT.md §10 P8, §10 P9, §8.2 v2-v3-types, §2.8 storybook
This commit is contained in:
parent
9cdfc6d898
commit
0589ec9fc0
4 changed files with 16 additions and 18 deletions
|
|
@ -63,6 +63,10 @@ See `make/config.mk` for COMPOSE_PROD and deployment docs.
|
||||||
|
|
||||||
- **Badge** : CI status above. Set `SLACK_WEBHOOK_URL` (Incoming Webhook) in repo secrets to receive Slack notifications on failure.
|
- **Badge** : CI status above. Set `SLACK_WEBHOOK_URL` (Incoming Webhook) in repo secrets to receive Slack notifications on failure.
|
||||||
|
|
||||||
|
### Disabled workflows
|
||||||
|
|
||||||
|
- **Storybook** (`chromatic.yml.disabled`, `storybook-audit.yml.disabled`, `visual-regression.yml.disabled`): deferred until MSW is wired up for `/api/v1/auth/me` and `/api/v1/logs/frontend`, which currently causes ~1 400 network errors in the Storybook build. The npm scripts (`storybook`, `build-storybook`) still work locally for one-off component inspection. To reactivate in CI, fix the MSW handlers and rename the three files back to `.yml`.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
- **[Developer Onboarding](docs/ONBOARDING.md)** — Setup, architecture, conventions, troubleshooting
|
- **[Developer Onboarding](docs/ONBOARDING.md)** — Setup, architecture, conventions, troubleshooting
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
// UI / domain types (marketplace, social, gear, education, chat, files,
|
||||||
* Types additionnels de veza_frontend_web_v2 et veza_frontend_web_v3
|
// analytics, moderation). These are not derived from OpenAPI — they describe
|
||||||
* Merged into apps/web for compatibility
|
// shapes used by frontend features that aren't round-tripped to the backend
|
||||||
*/
|
// as-is. Split by concern when any single feature starts owning enough of them.
|
||||||
|
|
||||||
import { Track } from './api';
|
import { Track } from './api';
|
||||||
import { Product, ProductLicense, Review } from './marketplace';
|
import { Product, ProductLicense, Review } from './marketplace';
|
||||||
|
|
@ -155,5 +155,5 @@ export interface ChatStats {
|
||||||
rooms_active?: number;
|
rooms_active?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export additional types from v2/v3
|
// UI / domain types (marketplace, social, gear, education, chat, files, ...)
|
||||||
export * from './v2-v3-types';
|
export * from './domain';
|
||||||
|
|
|
||||||
|
|
@ -66,18 +66,12 @@ func (s *GeoIPService) Lookup(ip string) (country, city string) {
|
||||||
ipStr = strings.TrimPrefix(ipStr, "::ffff:")
|
ipStr = strings.TrimPrefix(ipStr, "::ffff:")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Integrate MaxMind GeoLite2-City reader
|
// GeoIP resolution is deferred to v1.1.0.
|
||||||
// When GEOIP_DB_PATH is set to a valid .mmdb file, use:
|
// Implementing it requires: MaxMind license key, GeoLite2-City.mmdb download
|
||||||
// db, _ := maxminddb.Open(s.dbPath)
|
// pipeline, automatic DB refresh job, and the oschwald/maxminddb-golang
|
||||||
// var record struct {
|
// dependency. Out of scope for v1.0.4 (cleanup release). Until then, Lookup
|
||||||
// Country struct { ISOCode string `maxminddb:"iso_code"` } `maxminddb:"country"`
|
// returns empty strings and the geolocation column stays NULL — this is a
|
||||||
// City struct { Names map[string]string `maxminddb:"names"` } `maxminddb:"city"`
|
// best-effort feature, not a hard requirement of any caller.
|
||||||
// }
|
|
||||||
// db.Lookup(parsed, &record)
|
|
||||||
// country = record.Country.ISOCode
|
|
||||||
// city = record.City.Names["en"]
|
|
||||||
//
|
|
||||||
// For now, return empty strings (geolocation column populated when MaxMind DB is installed)
|
|
||||||
|
|
||||||
return "", ""
|
return "", ""
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue