package gateway import ( "context" "time" "github.com/chenyme/grok2api/backend/internal/pkg/perfmetrics" ) const ( finalizationHealthBudget = 750 * time.Millisecond finalizationOwnershipBudget = 1500 * time.Millisecond finalizationQuotaBudget = time.Second finalizationAuditBudget = 3 * time.Second finalizationMetadataBudget = 500 * time.Millisecond ) type finalizationBudget struct { deadline time.Time operation string provider string } func newFinalizationBudget(operation, provider string) finalizationBudget { return finalizationBudget{ deadline: time.Now().Add(finalizationTimeout), operation: operation, provider: provider, } } func (b finalizationBudget) run(stage string, limit time.Duration, action func(context.Context) error) error { started := time.Now() deadline := b.deadline if candidate := started.Add(limit); candidate.Before(deadline) { deadline = candidate } ctx, cancel := context.WithDeadline(context.Background(), deadline) err := action(ctx) cancel() outcome := "success" if err != nil { outcome = "failed" } perfmetrics.Default.ObserveDuration("finalization_stage_duration_us", perfmetrics.Labels{ Subsystem: "gateway", Operation: b.operation, Provider: b.provider, Stage: stage, Outcome: outcome, }, time.Since(started)) return err }