feat(gemini): Skiva 1 – Gemini 2.5 Flash som lärar-tier för kylskåpsskanning
- Gemini-adapter bakom AamosClient-interface (AAMOS_MODE=gemini) - Serversida/worker: hämtar bild, anropar Gemini, mappar mot canonical_ingredients - Kostnad/tokens bokförs i ai_usage_counters; global dagsbudget via BudgetStore - Redis-backed budget i worker, in-memory i tester - Migration 0019: ai_cost_usd_microcents - Hermetiska tester med inspelad fixture; separat pnpm eval:scan - docs/09 uppdaterad ärligt: AAMOS-status, Gemini-flöde, säkerhet/kostnad - REQUIRE_REAL=1 stödjer AAMOS_MODE=gemini; deploy-grind uppdaterad
This commit is contained in:
@@ -200,7 +200,12 @@ say "GRIND 4 OK: databas migrerad$([ "$MODE" = staging ] && echo ' + seedad')"
|
||||
# GRIND 5: AAMOS-utvärdering (spec §40)
|
||||
# ---------------------------------------------------------------------------
|
||||
say "Kör AAMOS-utvärderingssviten mot läge: $AAMOS_MODE_VAL …"
|
||||
pnpm eval:aamos || fail "Utvärderingssviten UNDERKÄND – deploya inte (spec §40)."
|
||||
if [ "$AAMOS_MODE_VAL" = "gemini" ]; then
|
||||
# Skiva 1: endast kylskåps-/skafferiskanning är aktiv mot Gemini.
|
||||
pnpm eval:scan || fail "Gemini scan-eval UNDERKÄND – deploya inte (spec §40)."
|
||||
else
|
||||
pnpm eval:aamos || fail "Utvärderingssviten UNDERKÄND – deploya inte (spec §40)."
|
||||
fi
|
||||
say "GRIND 5 OK: eval-sviten GODKÄND"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -248,7 +253,7 @@ say "GRIND 7 OK: register -> login -> recept fungerar"
|
||||
# ---------------------------------------------------------------------------
|
||||
EMAIL_MODE_VAL=$(get_env EMAIL_MODE); EMAIL_MODE_VAL=${EMAIL_MODE_VAL:-log}
|
||||
S3_MODE_VAL=$(get_env S3_MODE); S3_MODE_VAL=${S3_MODE_VAL:-mock}
|
||||
aamos_status=$([ "$AAMOS_MODE_VAL" = "http" ] && echo "RIKTIG (http)" || echo "mock")
|
||||
aamos_status=$([ "$AAMOS_MODE_VAL" = "http" ] && echo "RIKTIG (http)" || [ "$AAMOS_MODE_VAL" = "gemini" ] && echo "RIKTIG (Gemini)" || echo "mock")
|
||||
email_status=$([ "$EMAIL_MODE_VAL" = "smtp" ] && echo "RIKTIG (smtp)" || echo "log (mejl till logs/api.log)")
|
||||
s3_status=$([ "$S3_MODE_VAL" = "aws" ] && echo "RIKTIG (S3: $(get_env S3_BUCKET))" || echo "mock (lokal disk)")
|
||||
say "-----------------------------------------------"
|
||||
@@ -258,14 +263,21 @@ say " E-post: $email_status"
|
||||
say " Fillagring: $s3_status"
|
||||
say "-----------------------------------------------"
|
||||
if [ "${REQUIRE_REAL:-0}" = "1" ]; then
|
||||
MOCKS=""
|
||||
[ "$AAMOS_MODE_VAL" != "http" ] && MOCKS="$MOCKS AAMOS(AAMOS_MODE=http+URL+nyckel)"
|
||||
[ "$EMAIL_MODE_VAL" != "smtp" ] && MOCKS="$MOCKS E-post(EMAIL_MODE=smtp+SMTP_*+MAIL_FROM)"
|
||||
[ "$S3_MODE_VAL" != "aws" ] && MOCKS="$MOCKS Fillagring(S3_MODE=aws+S3_*)"
|
||||
if [ -n "$MOCKS" ]; then
|
||||
fail "REQUIRE_REAL=1 men följande kör fortfarande mock:$MOCKS – fyll i .env och kör om."
|
||||
# Skiva 1: Gemini-lärar-tier räknas som riktig AI. E-post/S3 får fortfarande
|
||||
# vara mock i staging tills de konfigureras; AI får aldrig mocka tyst.
|
||||
if [ "$AAMOS_MODE_VAL" = "gemini" ]; then
|
||||
[ -n "$(get_env GEMINI_API_KEY)" ] || fail "REQUIRE_REAL=1 men GEMINI_API_KEY saknas för AAMOS_MODE=gemini."
|
||||
say "GRIND 8 OK: REQUIRE_REAL uppfyllt – Gemini-lärar-tier är riktig."
|
||||
else
|
||||
MOCKS=""
|
||||
[ "$AAMOS_MODE_VAL" != "http" ] && MOCKS="$MOCKS AAMOS(AAMOS_MODE=http+URL+nyckel)"
|
||||
[ "$EMAIL_MODE_VAL" != "smtp" ] && MOCKS="$MOCKS E-post(EMAIL_MODE=smtp+SMTP_*+MAIL_FROM)"
|
||||
[ "$S3_MODE_VAL" != "aws" ] && MOCKS="$MOCKS Fillagring(S3_MODE=aws+S3_*)"
|
||||
if [ -n "$MOCKS" ]; then
|
||||
fail "REQUIRE_REAL=1 men följande kör fortfarande mock:$MOCKS – fyll i .env och kör om."
|
||||
fi
|
||||
say "GRIND 8 OK: REQUIRE_REAL uppfyllt – alla integrationer är riktiga."
|
||||
fi
|
||||
say "GRIND 8 OK: REQUIRE_REAL uppfyllt – alla integrationer är riktiga."
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user