feat(kvot): debitera AI-skanning PER BILD + fixa dubbeldebitering

Johans beslut: en skanning debiteras per bild (6 foton = 6 skanningar), streckkod
gratis. consumeAiScan tar nu units=imageCount och kollar att hela ryms.
Refunden ger tillbaka lika manga (antal bilder) vid misslyckat jobb. Appen kapar
antalet foton till kvarvarande kvot och gar till paywall om 0 (servern ar dock
den slutgiltiga grinden).

Hittade + fixade en PRE-EXISTING bugg pa vagen: kvoten drogs bade vid skapande
(consumeAiScan) OCH vid slutford analys (recordAiUsage aiScans:1) -> varje LYCKAD
skanning kostade 2 enheter, dolt av att appen bara uppdaterade raknaren vid start.
Nu dras kvoten exakt en gang, vid skapandet. Enbildsanvandare far alltsa nu sina
fulla 5 gratis-skanningar (var tidigare ~2,5).
This commit is contained in:
Claude
2026-08-18 21:13:58 +00:00
parent 3bb1d309bc
commit 55b03b5039
5 changed files with 101 additions and 51 deletions
+4 -2
View File
@@ -116,13 +116,15 @@ export async function processScanJob(ctx: WorkerContext, scanJobId: string): Pro
}
}
// Bokför verklig AI-kostnad/tokens utan PII (spec §45).
// Bokför verklig AI-kostnad/tokens utan PII (spec §45). Kvoten (aiScans) drogs
// redan vid skapandet (consumeAiScan, per bild) räkna INTE upp den igen här,
// annars dubbeldebiteras varje lyckad skanning.
if (result.costUsd != null || result.inputTokens || result.outputTokens) {
await recordAiUsage(ctx.db, job.userId, {
costUsd: result.costUsd ?? 0,
inputTokens: result.inputTokens ?? 0,
outputTokens: result.outputTokens ?? 0,
aiScans: 1,
aiScans: 0,
});
}