docs(handoff): uppdatera med kostnadsspärr och verifiering

This commit is contained in:
Sven (AAMOS AI)
2026-08-12 16:55:46 +07:00
parent 7dda0fad00
commit 535e3e36e8
+22
View File
@@ -20,6 +20,12 @@ Roller: OpenClaw bygger. Extern granskare ("Sven", i Johans chatt) verifierar +
- AAMOS_MODE=gemini. GeminiAamosClient täcker scan/etikett/kvitto/utgång. - AAMOS_MODE=gemini. GeminiAamosClient täcker scan/etikett/kvitto/utgång.
- Shadow-capture skriver träningspar → s3://cibello-production/training/cibello/. Insamling PÅ - Shadow-capture skriver träningspar → s3://cibello-production/training/cibello/. Insamling PÅ
för admin/beta (imageTraining=true); publika användare följer samtycke (gate ej byggd än). för admin/beta (imageTraining=true); publika användare följer samtycke (gate ej byggd än).
- **Global Gemini dagsbudget:** `GEMINI_DAILY_BUDGET_USD=25`. Budget-check sker före varje
AI-jobb i workern; vid överskridande stoppas jobbet, `gemini:daily:budget:alarm:<datum>`
sätts i Redis, och ops-summary får `larm` + wall-tile `AI-budget` i `crit`.
- **Trial efter verifiering:** Family 7-dagars trial startas först när användaren verifierar
e-posten. En trial per verifierad e-post. Trial-rättigheter räknas mot samma
`ai_usage_counters` som övriga planer.
## Hemligheter ## Hemligheter
- SSM /cibello/prod/* (SecureString). - SSM /cibello/prod/* (SecureString).
@@ -41,12 +47,28 @@ Roller: OpenClaw bygger. Extern granskare ("Sven", i Johans chatt) verifierar +
- [x] `https://api.cibello.app/healthz` och `/readyz` svarar. - [x] `https://api.cibello.app/healthz` och `/readyz` svarar.
- [x] Röktest via HTTPS: registrering + token + recept fungerar. - [x] Röktest via HTTPS: registrering + token + recept fungerar.
- [x] JWT- + DB-hemligheter roterade och verifierade. - [x] JWT- + DB-hemligheter roterade och verifierade.
- [x] **Pre-launch cost-safeguards (bränn-spärr):**
- `GEMINI_DAILY_BUDGET_USD=25` i `.env` och `.env.example`.
- Budget-check före bildhämtning i `GeminiAamosClient` (`packages/ai-contracts/src/gemini.ts`).
- `BudgetStore.raiseBudgetAlarm()` + `RedisBudgetStore`-implementation.
- Ops-summary visar `AI-budget` wall-tile och `larm`-block vid överskridande.
- Trial startas först vid e-postverifiering (`apps/api/src/routes/auth.ts`).
- [x] **Verifierat i produktion:**
- Gratisanvändare blockeras på 11:e AI-scanen (HTTP 429 `QUOTA_EXCEEDED`).
- AI-jobb stoppas när `GEMINI_DAILY_BUDGET_USD` sätts till 0.001 USD.
- `/ops/v1/summary` visar `AI-budget` tile och `budget_exceeded`-larm i `crit`.
## PENDING (i ordning) ## PENDING (i ordning)
1. **Egen Gemini-nyckel + SMTP-pass** — Johan levererar värden lokalt; claw skriver till SSM/.env. 1. **Egen Gemini-nyckel + SMTP-pass** — Johan levererar värden lokalt; claw skriver till SSM/.env.
- Nuvarande `.env` innehåller fortfarande den delade `/openclaw`-Gemini-nyckeln.
2. **End-user samtyckes-gate** för bildträning + in-app allergen-disclaimer före publik lansering. 2. **End-user samtyckes-gate** för bildträning + in-app allergen-disclaimer före publik lansering.
3. **Säkerhetsgranskning**: öppna portar, Caddy-konfig, IAM, S3-bucket-policy. 3. **Säkerhetsgranskning**: öppna portar, Caddy-konfig, IAM, S3-bucket-policy.
4. **Övervakning/larm**: logga fel, sentry, health-check alert. 4. **Övervakning/larm**: logga fel, sentry, health-check alert.
5. **Worker-S3-reader**: `readUrl` i `apps/worker/src/context.ts` pekar fortfarande på
`/v1/mock-s3/` vilket ger 404 på riktiga S3-uppladdningar. För fullt skarpt
bildflöde behöver den returnera presignerad S3-URL (jmf eval-fixturer som använder
data URLs). Budget-spärren är verifierad trots detta; Gemini-anrop nås nu före
bildhämtning.
## Så här återupptar en färsk session ## Så här återupptar en färsk session
Läs denna fil + `git log --oneline -8` + senaste prompt från Sven. Arbeta stramt. Echo ALDRIG Läs denna fil + `git log --oneline -8` + senaste prompt från Sven. Arbeta stramt. Echo ALDRIG