Commit Graph

113 Commits

Author SHA1 Message Date
Sven (AAMOS AI) 81927b6cdc fix(db): RDS-CA i poolen (app+migrator delar TLS) 2026-08-12 06:07:07 +07:00
Sven (AAMOS AI) 983f3fb2aa fix(database): explicit RDS SSL via NODE_EXTRA_CA_CERTS 2026-08-12 04:48:42 +07:00
Sven (AAMOS AI) c5a8530fbf fix(deploy): brand-guard compat + db_reachable med RDS SSL + first-deploy SSL 2026-08-12 04:22:24 +07:00
Sven (AAMOS AI) 659d0f9290 feat(deploy): Gemini som committat prod-läge + hermetiska eval-fixtures
- config.ts: tillåt AAMOS_MODE=http|gemini i prod; mock förbjudet
- first-deploy.sh: Grind 1 accepterar gemini (kräv GEMINI_API_KEY);
  Grind 5 kör eval:scan mot gemini; Grind 8 behandlar gemini som riktig AI
- gemini.ts: stöd för data-URLer (inline base64-bilder) i fetchOneImage
- eval-fixtures: 4 lokala bilder (fridge-1, fridge-2, label-1, receipt-1)
- scan-eval.ts: läser lokala fixtures, inga externa hämtningar
- capture-eval.ts: använder lokal fixture som data-URL
2026-08-12 04:10:10 +07:00
Sven (AAMOS AI) 3259f09f7d docs: HANDOFF/deploy-state för sessionskontinuitet 2026-08-12 03:50:28 +07:00
Sven (AAMOS AI) 9a9f8a6a3c feat(worker/ai): Gemini-lärar-tier för scan/detect/allergen + shadow-capture
- Utöka GeminiAamosClient med ANALYZE_MEAL_IMAGE, READ_NUTRITION_LABEL,
  READ_EXPIRY_DATE och READ_RECEIPT (vision-prompts mot kontraktsscheman).
- Lägg till apps/worker/src/lib/shadow-capture.ts: S3/local fallback,
  imageTraining-gating, ingen PII, aldrig faila användarvägen.
- Integrera capture i scan-processorn efter lyckad runTask med consentFlags.
- Lägg till @aws-sdk/client-s3 i worker samt eval:capture-skript.
- Uppdatera eval:scan till Wikimedia Special:FilePath + redirect-following.
- Exkludera .terraform i brand-guard för att undvika false positives.
- Uppdatera gemini-test för DEDUPLICATE_INVENTORY som unsupported.
2026-08-12 02:51:05 +07:00
Sven (AAMOS AI) 515dd12cc7 infra(vpc): CIDR 10.20.0.0/16 – undvik krock med aplatform-platform-vpc
Publikt subnät 10.20.1.0/24, privata 10.20.11.0/24 + 10.20.12.0/24
2026-08-11 23:55:27 +07:00
Sven (AAMOS AI) 5b35df24a7 cibello(terraform): add lifecycle ignore_changes for placeholder SSM secrets
Prevent Terraform from overwriting externally-managed secret values
2026-08-11 23:31:43 +07:00
Sven (AAMOS AI) 99c73cada0 cibello(terraform): replace SES with Mailu DNS records
- Remove aws_ses_configuration_set, aws_ses_domain_identity, aws_ses_domain_dkim

- Remove SES verification and DKIM Route53 records

- Remove SES outputs

- Add MX, SPF, DKIM, DMARC records for cibello.app -> mail.aamos.systems

- DKIM key split into two 255-char strings per Route53 limit

No apply; plan saved as cibello.plan
2026-08-11 22:51:20 +07:00
Sven (AAMOS AI) 8168f64437 docs: add FAS 1 infrastructure plan report 2026-08-11 21:39:00 +07:00
Sven (AAMOS AI) 29637ffc89 infra: fix ses dkim records output 2026-08-11 21:37:56 +07:00
Sven (AAMOS AI) d1b1748426 infra: ignore terraform local state and provider cache 2026-08-11 21:37:32 +07:00
Sven (AAMOS AI) 562b9ab6fc infra: fix oac signing protocol and route53 record output 2026-08-11 21:37:10 +07:00
Sven (AAMOS AI) e62e63739e infra: add terraform outputs 2026-08-11 21:35:46 +07:00
Sven (AAMOS AI) ff77fe0c08 infra: add route53, ses, acm, cloudfront and dns records 2026-08-11 21:35:31 +07:00
Sven (AAMOS AI) 32d93e2a0c infra: add ssm secrets and placeholders 2026-08-11 21:34:13 +07:00
Sven (AAMOS AI) 02056b2d76 infra: add least-privilege iam role and instance profile 2026-08-11 21:33:45 +07:00
Sven (AAMOS AI) c567092180 infra: add rds and s3 resources 2026-08-11 21:33:19 +07:00
Sven (AAMOS AI) dc3c3f1847 infra: add ec2, eip, key pair and docker bootstrap 2026-08-11 21:32:20 +07:00
Sven (AAMOS AI) b408caef2a infra: add vpc, subnets, routing and security groups 2026-08-11 21:31:46 +07:00
Sven (AAMOS AI) cc948c258a infra: add aws providers and default tags 2026-08-11 21:31:02 +07:00
Sven (AAMOS AI) d3d485ffe8 test(eoc-push): rätta sökväg till brand.config.json 2026-08-11 19:20:52 +07:00
Sven (AAMOS AI) cb53784ec3 test(eoc-push): använd BRAND.name istället för hårdkodat Cibello 2026-08-11 19:19:55 +07:00
Sven (AAMOS AI) c60158801d gapfill: jordnötssmör-cellen fylld (4 recept) 2026-08-11 19:19:23 +07:00
Sven (AAMOS AI) a7b53c7ba3 gapfill(peanut): rikare middagsrätter som target 2026-08-11 19:16:39 +07:00
Sven (AAMOS AI) ac919e9425 harden(eoc-push): fånga mappningsfel så pushen aldrig kastar 2026-08-11 18:44:01 +07:00
Sven (AAMOS AI) 4adde4faff chore(ops): feedback.senaste upp till 10 for EOC-panelen 2026-08-11 18:22:07 +07:00
Sven (AAMOS AI) 90b23fcd7f fix(eoc-push): interpolera {brand} + EOC-tone i pushad wall 2026-08-11 18:21:58 +07:00
Sven (AAMOS AI) 8586ed3411 fix(compose): mappa admin-porten mot 8080 (non-root nginx) 2026-08-11 17:52:23 +07:00
Sven (AAMOS AI) c4fddf0eeb fix(docker): skriv nginx-pid till /tmp sa admin kor non-root 2026-08-11 17:52:19 +07:00
Sven (AAMOS AI) c29ab778a0 harden(docker): non-root USER i Dockerfile.admin 2026-08-11 17:29:00 +07:00
Sven (AAMOS AI) 125192f24a fix(eoc-push): mappa feedback-tidsstämpel till "skapad" per EOC-kontraktet 2026-08-11 17:27:53 +07:00
Sven (AAMOS AI) af05f084b8 feat(worker): EOC push-agent for ops summary
- Add EOC_URL + EOC_PUSH_TOKEN config
- Add pushOpsSummaryToEoc processor
- Schedule PUSH_OPS_SUMMARY_TO_EOC every 2 minutes
- Add unit tests
2026-08-11 17:03:53 +07:00
Sven (AAMOS AI) 4eddcfbefe docs: pre-launch readiness report 2026-08-11 07:40:00 +07:00
Sven (AAMOS AI) 63d83e0d7c ops(api): lägg till /ops/v1/health för EOC 2026-08-11 07:37:51 +07:00
Sven (AAMOS AI) 714d0a2e5b docs(security): genomgång av hardening-checklist inför prod 2026-08-11 07:30:50 +07:00
Sven (AAMOS AI) 8627331cc9 docs(status): uppdatera till nuläge (S1–S6, 254 recept, ops+wall, EOC) 2026-08-11 07:28:59 +07:00
Sven (AAMOS AI) 4a63c5cb67 cleanup(memory): impact läser bara egen userPreferences-rad 2026-08-11 07:28:25 +07:00
Sven (AAMOS AI) 989c242d2c gapfill: importera nollcells-recept i seed 2026-08-11 06:42:09 +07:00
Sven (AAMOS AI) a00f0a59ab gapfill: generera+verifiera nollceller (export) 2026-08-11 06:39:58 +07:00
Sven (AAMOS AI) 95c934cbec fix: robustisera cooking-sessions-analytics-test + rätta eventName-alias 2026-08-11 05:47:56 +07:00
Sven (AAMOS AI) 4116653b51 S6: i18n-paritet, provenans + eval, copy-skanning, fabricerade-minnes-eval 2026-08-11 05:20:27 +07:00
Sven (AAMOS AI) f86a37dd33 S5: onboarding → minne + smaksignaler (user_stated) 2026-08-11 04:43:43 +07:00
Sven (AAMOS AI) 1e18146665 fix(recommendation-engine): S4-FIX — opersonliga vyer fungerar utan samtycke via depersonalize(weights) 2026-08-11 04:02:46 +07:00
Sven (AAMOS AI) 05bba93b90 feat(worker): S3 3b härda UPDATE_USER_MEMORY — budget, kostnad, anti-påhitt, GDPR-regression 2026-08-11 03:23:09 +07:00
Sven (AAMOS AI) 33b0a8267b fix(ops): interpolera varumärke i wall board från brand.config.json 2026-08-11 02:47:25 +07:00
Sven (AAMOS AI) 335cfe0bf6 feat(memory): S3 3a minnes-yta + impact-endpoint 2026-08-11 02:41:39 +07:00
Sven (AAMOS AI) 4296a64aef feat(ops): wall board härlett ur summary-värden 2026-08-11 02:36:08 +07:00
Sven (AAMOS AI) b1b6eb994c feat(seed): import 246 verified recipes as committed seed catalog
- Convert C:\Users\Public\cibello-verified-final-result.json to
  packages/database/src/seed/data/verified-recipes.ts (committed, hermetic).
- Replace/extend the 23 placeholder SEED_RECIPES via re-export.
- Upsert on slug with onConflictDoUpdate of ALL recipe fields.
- Hard-reject recipes with unmapped canonical ingredients (0 rejected this batch).
- Derive allergens and compute nutrition per portion from ingredients at seed time.
- Run food-safety lint; auto-patch 8 legacy raw-protein recipes with safe-cooking phrase.
- Resolve 4 suspected title duplicates via variantOfSlug.
- Guard brand name: creatorDisplayName uses BRAND.name, never JSON placeholder.
- Preserve verificationStatus (editorial/verified) and source-registry FKs.
- Extend allergen-invariant test to cover full 246-recipe catalog.
- Stabilise API tests by disabling file parallelism (flakiness from shared DB state).

Refs: seed pipeline, brand-guard, safety canary
2026-08-11 00:47:08 +07:00
Sven (AAMOS AI) 4687f46384 Phase 1 ops core: base blocks, feedback, canary fixes
- Add app/ekonomi/anvandare/prenumerationer/butik/feedback blocks to computeOpsSummary.
- New feedback table, POST /api/feedback, GDPR erasure wiring.
- Canary: only count unverified/rejected published recipes; treat verified/editorial as safe.
- Add 'rejected' recipe verification status enum value.
- Fix food-safety lint baseline: remove egg/cured fish from raw-protein list, relax
  genomstekt regex, add safe-cooking phrases to seed recipes.
- Seed recipes now get verificationStatus=editorial.
- Tests: ops summary blocks, feedback route, me.residual cleanup.
2026-08-10 06:35:51 +07:00