5.0 KiB
5.0 KiB
Lanseringsplan – från namnbeslut till butik
Körbar runbook. Allt som går att förbereda utan namn/konton är REDAN gjort och verifierat (se STATUS.md). Stegen nedan är i ordning; varje steg listar vem/vad som krävs. Kommandon körs från repo-roten om inget annat anges.
Fas 0 – Namnbeslut (Johan)
- Uppdatera
brand.config.json: name, slug, urlScheme, iosBundleId, androidPackage, apiDomain, adminDomain, supportEmail. (ENDA kodändringen.) - Lägg det gamla platshållarnamnet i
FORBIDDEN-listan iscripts/brand-guard.shså CI vaktar även mot "Matappen". - Verifiera:
pnpm typecheck && pnpm test && pnpm build && ./scripts/brand-guard.sh - Registrera domäner (apiDomain, adminDomain) + e-postdomän med SPF/DKIM/DMARC.
Fas 1 – Infrastruktur (ops, ~en halvdag)
- RDS: kör
infrastructure/deployment/create-database.sqlsom master (skapar databas, minsta-privilegie-användare och sök-extensions). - Secrets: generera och lägg i AWS Secrets Manager/SSM:
Fyll
# Kör tre gånger – JWT_ACCESS_SECRET, JWT_REFRESH_SECRET, ENTITLEMENT_SIGNING_SECRET node -e "console.log(require('crypto').randomBytes(48).toString('base64url'))"/opt/<slug>-platform/secrets/*.envenligt.env.example(chmod 600). Produktionen VÄGRAR starta med dev-hemligheter eller AAMOS_MODE=mock. - S3: skapa bucket
<slug>-production, block public access, SSE-S3, lifecycle:temporary/7 dagar,scans/90 dagar. IAM-roll<slug>-appmed åtkomst ENDAST till denna bucket (policy i infrastructure/security/). - Server: dedikerad Linux-användare, Docker, reverse proxy med TLS mot
127.0.0.1:4100. Deploy:infrastructure/deployment/deploy.sh(kräver pg_dump-backup före migrationer – inbyggt). - Larm: sätt
ERROR_WEBHOOK_URL(Slack/Discord-webhook) – 5xx och fallerade jobb postas automatiskt. - Backup-övning mot produktion:
DATABASE_URL=… ADMIN_DATABASE_URL=… ./infrastructure/deployment/backup-restore-test.sh(protokoll arkiveras i infrastructure/backups/; upprepa kvartalsvis).
Fas 2 – AAMOS på riktigt (störst teknisk risk – gör tidigt)
- Sätt
AAMOS_MODE=http,AAMOS_API_URL,AAMOS_API_KEYmot AAMOS staging. - Kör utvärderingssviten:
pnpm eval:aamos– samma svit som körs mot mocken; resultatet loggas i ai_eval_runs och syns i adminpanelen. UNDERKÄND = åtgärda innan vidare. - Regel därefter (spec §40): ingen modell-/promptändring i AAMOS tas i
produktion utan godkänd
pnpm eval:aamos-körning. - Personuppgiftsbiträdesavtal med AAMOS-driften (juridik, fas 5).
Fas 3 – E-postleverantör
- Välj SES/Postmark/Resend. Implementera transporten i
apps/api/src/lib/mailer.ts(SmtpMailerPlaceholder – en klass, ~20 rader). - Sätt
EMAIL_MODE=smtp+ leverantörsnycklar. Mallar och flöden (verifiering + lösenordsåterställning) är klara och E2E-testade i log-läge. - Verifiera DKIM/SPF på e-postdomänen; skicka testmejl till Gmail/Outlook.
Fas 4 – Butikerna (kräver namn + konton)
- Apple Developer Program + Play Console-konto.
- App Store Connect/Play Console: skapa apparna med
iosBundleId/androidPackageoch produkt-ID:n (<iosBundleId>.<plan>_monthly/<plan>_monthly– se PLAN_DEFINITIONS; genereras ur brand-konfig). - Fyll i
apps/mobile/eas.jsonsubmit-fälten;eas build --profile production. - Implementera butiksverifiering i produktionsläge
(
packages/subscriptions/src/stores.ts: App Store Server API v2 + Play Developer API – sandbox-flödet och entitlement-modellen är klara). - Push-notiser:
EXPO_PUSH_ENABLED=true(tokenhantering + mallar klara). - Store-metadata per marknad: utkast i
docs/22-butiksmetadata.md. - TestFlight/interna testare → rätta → skicka till granskning.
Fas 5 – Juridik & innehåll (parallellt med fas 1–4)
- Integritetspolicy + användarvillkor: UTKAST i
docs/23-juridik-utkast.md– kräver granskning av jurist före publicering. - Biträdesavtal: AWS + AAMOS-driften.
- Recept: fler än dagens 22 seedade – M3-flödet (AI-utkast → granska → publicera per språk) är byggt för att skala innehållet.
- Licensgranskning innan Livsmedelsverket/OFF-connectorerna aktiveras.
Fas 6 – Genrep & lansering
pnpm typecheck && pnpm test && pnpm buildgrönt i CI (inkl. varumärkesvakt).- Lasttest mot produktionsmiljön:
API_BASE_URL=https://<apiDomain> node scripts/loadtest.mjs(lokala referensvärden i docs/24-lasttest.md). pnpm eval:aamosmot produktions-AAMOS – GODKÄND.- Aktivera admin-2FA för samtliga admin-konton (adminpanelen → 2FA).
- Soft launch: Sverige först (spec-fas i7), sedan marknader per marknadsprofilerna (EU/GB/US/CA är seedade och verifierade).
Checklista "dagen före"
- Backup-restore-protokoll < 3 månader gammalt
- ERROR_WEBHOOK_URL testad (kasta ett testfel i staging)
- healthz/readyz gröna bakom TLS
- Admin-2FA aktiverat för alla admins
- eval:aamos GODKÄND mot produktion
- Butiksgranskningen godkänd i båda butikerna