Files
Cibello-app/docs/STATUS.md
T

54 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Status vad som är byggt, vad som är stubbar, vad som återstår
> Uppdaterad efter i18n-faserna M1M7 + M10. Varumärket är INTE beslutat:
> alla namn/ID:n är platshållare ur `brand.config.json` (se `namnbyte.md`).
## Verifierat grönt (senaste körning)
| Kontroll | Resultat |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pnpm typecheck` | 19/19 paket |
| `pnpm test` | 34 tasks, 326 tester deterministic: full svit körd två gånger mot nyskapad Postgres 16 utan cache, grönt båda körningarna |
| `pnpm build` | api + worker + admin |
| `pnpm db:migrate && pnpm db:seed` | 76 tabeller, 254 verifierade recept, kanoniska ingredienser, enhetsetiketter, marknadsprofiler, ops/EOC-integrering |
| E2E-smoke | register → hushåll (valuta) → lager (kanoniska enheter) → rekommendationer → AI-översättning → publicering → engelsk användare får engelskt innehåll → accentokänslig sök → marknadsprofiler |
## Färdigbyggt
- **Mobilapp** (Expo/React Native): auth, onboarding, fyra flikar (Vad ska vi äta / Skanna / Min dag / Hemma), receptdetalj + cooking mode, skanningsgranskning, inköpslista, matlådor, hushåll, minne ("Vad appen vet om mig"), paywall, profil med språkval. i18next på 12 språk sv/en/es/it/de/fr/da/nb/fi/nl/pl/pt (~200 basnycklar per språk, paritetstestade, korrekta pluralformer inkl. polskans one/few/many), automatisk enhetsspråksdetektering vid första start (D-031, D-032), pengar via Intl, måttvisning per måttsystem.
- **Food API** (Fastify): ~70 endpoints auth/JWT-rotation, hushåll, lager (FEFO, bäst före), recept (säkerhetsfiltrering, skalning, varianter), rekommendationer, veckoplan, inköpslista, skanningar, måltidsloggning, nutrition, minne, GDPR (export/radering), subscriptions/entitlements, budget (minor units + valuta), i18n-endpoints (locale-preferenser, enhetsetiketter, näringsprofil), adminpanel-API med översättningsflöde.
- **Worker** (BullMQ): bildanalys/kvitton via AAMOS, moderering, veckoplan, receptöversättning med deterministisk verifiering, notiser, minnessync, prenumerationssvep, träningsexport, outbox.
- **Deterministiska motorer**: nutrition (Mifflin-St Jeor, per-100, enhetskonvertering som vägrar volym↔massa utan densitet), inventory (transaktionsbalans, FEFO, utgångsklassning), recipe (allergen/diet/religion-säkerhet, täckningsgrad, substitution, kostnad i minor), recommendation (poängsättning + förklaringar, cravings, säsonger).
- **AAMOS-integration**: 16 typade kontrakt (Zod-validerade kuvert med localeContext + pseudonymiserat subjectRef + consentFlags), HTTP-klient med retries + mock för dev/test.
- **Internationalisering (M1M7, M10)**: språkneutrala enhetskoder, locale-preferenser, minor units + valuta per hushåll, översättningstabeller med AI-utkastflöde, i18next, måttvisning, marknadsprofiler för nutrition/allergener, accentokänslig fuzzy-sök, minnesrendering per språk.
- **Personalisering S1S6**: hushålls- och individanpassade rekommendationer, smaksignaler, minnespåverkan, hälsoprofil, veckoplan, cravings, säsong/högtid, budget och täckningsgrad — alla med samtyckesgrind och integritetsspärrar.
- **Ops + EOC**: `/ops/v1/summary` (14 block inklusive `wall` med 6 tiles) och `/ops/v1/health` frysta; EOC-panel (`aamos-admin`) konsumerar endpoints med read-only, server-side token och PII-skydd.
- **Admin** (Vite/React): användare, moderering, flags, subscriptions, jobböversikt, hälsa, auditlogg, AI-korrigeringar.
- **Lösenordsåterställning**: forgot/reset-endpoints med hashade engångstokens (30 min TTL), familjeåterkallelse av alla sessioner, mejlmallar per språk via utbytbar mailer (log-läge i dev, leverantör kopplas i fas 7), mobilskärmar med app-länk.
- **Admin-2FA**: TOTP (RFC 6238, inga externa beroenden) med step-up-inloggning, engångsskydd per steg och MFA-tvång på admin-API:t; UI i adminpanelen.
- **E-postverifiering**: icke-blockerande verifiering med mallar per språk, resend och profilhint.
- **AAMOS-utvärderingssvit**: golden cases med semantiska kontroller per uppgiftstyp; resultat till ai_eval_runs; CI-vänlig exitkod.
- **Driftverktyg**: dagligt retentionsjobb (GDPR), skriptad backup-restore-övning, lasttest med trösklar, larmwebhook för 5xx/fallerade jobb.
- **CI**: GitHub Actions med varumärkesvakt, Prettier, typecheck, tester, build, migrate+seed mot riktig Postgres 16 (med sök-extensions) och API-röktest.
- **Infrastruktur**: Dockerfiles (non-root), compose dev/prod, deploy-skript med backup-krav, create-database.sql (minsta privilegier + sök-extensions), hardening-checklista, larm/dashboards-underlag.
## Stubbar / medvetet senare
| Vad | Läge |
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Apple/Google butiksverifiering i produktionsläge | Sandbox-läget komplett; App Store Server API v2 + Play Developer API kopplas i fas 7 (kräver riktiga konton) |
| Hälsointegrationer (Apple Health / Health Connect) | Connector-interface + samtycken klara; native-koppling görs i app-butiksfasen |
| Livsmedelsverket/Open Food Facts-import | Connector-stubbar med rätt interface; juridisk granskning av licenser först (spec §61.5) |
| Push-notiser via Expo | Tokenhantering + notistabeller klara; EXPO_PUSH_ENABLED=false tills appen finns i butikerna |
| M8 store-metadata per marknad | Ops-uppgift i butikskonsolerna inför lansering |
| M9 admin på flera språk | Beslut D-024: svenskt internverktyg tills internationell ops finns |
| Riktig AAMOS-drift | AAMOS_MODE=http + URL/nyckel sätts i produktion; mock används endast lokalt (produktion vägrar starta med mock) |
## Nästa steg
Allt som kan byggas utan namn/externa konton ÄR byggt. Återstår (kräver Johan/konton):
se **docs/21-lanseringsplan.md** körbar runbook fas 06 med exakta kommandon.
Kortversion: namn → infra-provisionering (halvdag) → `pnpm eval:aamos` mot riktig
AAMOS → e-postleverantör (en klass) → butikskonton + EAS → juristgranskning av
docs/23-utkasten → soft launch SE.