fix: finalize growth cost controls

This commit is contained in:
2026-08-21 00:56:59 +03:30
parent bb4a85cd65
commit 3e2d1f32c8
7 changed files with 86 additions and 26 deletions

View File

@@ -64,7 +64,6 @@ func (s *Service) Create(ctx context.Context, userID, merchantID int64, request
_ = s.repository.Complete(ctx, record.ReportID, StatusFailed, json.RawMessage(`{}`), nil, Usage{}, "UNCACHED_SCOPE_LIMIT")
return Record{}, false, err
}
s.coordinator.Publish(ctx, record.ReportID)
}
record.Cached = cached
record.NextRefreshAt, err = s.repository.NextRefreshAt(ctx, merchantID, now)
@@ -119,7 +118,7 @@ func (p *Processor) ProcessNext(ctx context.Context) error {
status := StatusPartial
failure := "AI_DISABLED_OR_UNAVAILABLE"
if analysis.ShouldCallAI && p.aiEnabled && p.avalai != nil {
reservedTokens := int64((len(analysis.Encoded)+3)/4*2 + 1600)
reservedTokens := EstimatedTokenReservation(analysis.Encoded)
if err := p.coordinator.ReserveBudget(ctx, reservedTokens, p.now()); err == nil {
release, enterErr := p.coordinator.Enter(ctx)
if enterErr == nil {
@@ -143,6 +142,8 @@ func (p *Processor) ProcessNext(ctx context.Context) error {
return p.repository.Complete(ctx, record.ReportID, status, analysis.Encoded, &copy, Usage{}, failure)
}
func EstimatedTokenReservation(evidence json.RawMessage) int64 { return int64(2*len(evidence) + 3200) }
func newReportID() string {
data := make([]byte, 12)
if _, err := rand.Read(data); err != nil {