Update FAQ
parent
392a0b1525
commit
3fc301a713
78
FAQ.md
78
FAQ.md
@ -1 +1,77 @@
|
||||
Welcome to the Wiki.
|
||||
# FAQ — dev environment & daily problems
|
||||
|
||||
*Tripped on something for 10+ minutes? Once it's solved, add it here (question → answer →
|
||||
command). This page is the team's memory — editing it is always allowed, no review needed.*
|
||||
|
||||
## API
|
||||
|
||||
**The API won't start — "port 5432 already in use"**
|
||||
Something else runs PostgreSQL on your machine. Either stop it, or change the mapped port in
|
||||
`docker-compose.yml` (e.g. `"5433:5432"`) and set `DB_URL=jdbc:postgresql://localhost:5433/trizagenda`.
|
||||
Check what's running: `docker compose ps` · `sudo lsof -i :5432`
|
||||
|
||||
**Flyway "checksum mismatch" / "migration failed" on startup**
|
||||
You (or a pull) changed an already-applied migration — never edit a migration that ran.
|
||||
Dev-only reset (wipes local data): `docker compose down -v && docker compose up -d`, restart the API.
|
||||
If you need a schema change: new `V<n>__description.sql`, and announce "taking V<n>" in the channel first.
|
||||
|
||||
**Where is the password-reset email?**
|
||||
There is no real email in dev — the token prints in the API console (look for the
|
||||
`PASSWORD RESET (dev email stub)` block). Token is single-use and expires in 1 hour.
|
||||
|
||||
**Login suddenly returns 429**
|
||||
Rate limit: 10 login attempts/min per IP (5/min for reset requests). Wait a minute. If you're
|
||||
writing a script/test that logs in repeatedly, log in once and reuse the token.
|
||||
|
||||
**`./mvnw: Permission denied`**
|
||||
The zip stripped the executable bit: `chmod +x mvnw` (or use your own `mvn`).
|
||||
|
||||
**What are the dev credentials?**
|
||||
`admin@triztech.dz` / `Admin123!` — created by the dev-profile seeder
|
||||
(`--spring.profiles.active=dev`). No seeder = no users = every login 401.
|
||||
|
||||
## Web
|
||||
|
||||
**Login works but every other call returns 401 in a loop**
|
||||
Check that `VITE_API_BASE_URL` points at the **real API** (`http://localhost:8080/api/v1`) for
|
||||
auth — the Prism mock can't issue real tokens. Also confirm the API's `CORS_ORIGINS` includes
|
||||
your dev origin (`http://localhost:5173` is the default) — without it the refresh cookie never arrives.
|
||||
|
||||
**How do I run the mock?**
|
||||
`npm run mock` → spec-faithful fake API on `http://localhost:4010`. It returns **example data
|
||||
from the spec** — don't debug "wrong values" on the mock; only shapes are meaningful there.
|
||||
|
||||
**Where do server-side field errors show up?**
|
||||
`400 VALIDATION_FAILED` responses carry `error.details[]` with `field` + `message` — map them
|
||||
onto the matching inputs (see the conventions in `ARCHITECTURE.md` §4).
|
||||
|
||||
## Mobile
|
||||
|
||||
**The app can't reach the API from the Android emulator**
|
||||
`localhost` inside the emulator is the emulator itself. Use `10.0.2.2`:
|
||||
`flutter run --dart-define=API_BASE_URL=http://10.0.2.2:8080/api/v1`
|
||||
Physical device on the same Wi-Fi: your machine's LAN IP instead (and both on the same network).
|
||||
|
||||
**`flutter analyze` complains after I pulled**
|
||||
Run `flutter pub get` first — dependency changes need a fresh resolve. Analyzer must be clean
|
||||
before every PR (agreement).
|
||||
|
||||
## Cross-cutting
|
||||
|
||||
**"It works on the mock but fails on the real API"**
|
||||
Expected — that's exactly what integration checkpoints exist to catch. File a `kind/bug` issue
|
||||
with the failing request, expected vs actual, and the **`X-Request-Id`** response header value
|
||||
(it's on every API response — it finds the exact server log line).
|
||||
|
||||
**Which name is right — service or department? meeting or appointment?**
|
||||
Both, in different worlds. API/spec/UI say **services, meetings, reservations**; the DB says
|
||||
`departments`, `appointments`, `resource_bookings`. Same for roles: API is French
|
||||
(`RESPONSABLE`…), DB is English (`MANAGER`…). The API's mapping layer is the only place both
|
||||
exist — details in `trizagenda-api/ARCHITECTURE.md`.
|
||||
|
||||
**I think the spec is wrong / missing something**
|
||||
Don't code around it. Say it in the channel → weekly sync decides → spec version bumps →
|
||||
copies in web/mobile repos get re-copied. Spec changes are team decisions (see the working agreements §1).
|
||||
|
||||
**I accidentally committed a secret**
|
||||
Tell the PM immediately — no blame, speed matters. We rotate the secret and scrub history together.
|
||||
Loading…
Reference in New Issue
Block a user