Skip to content

[FEAT] Ingest: endpoint /api/ingest/usage + schema usage_rollup agregado #68

@trentas

Description

@trentas

Parte do épico #65. Bloqueada por #66 (ADR).

User story

Como plataforma, eu quero um endpoint token-autenticado que receba os agregados anônimos da CLI e os acumule numa tabela já agregada, para que não exista nenhum dado de sessão por indivíduo em repouso.

Acceptance criteria

  • POST /api/ingest/usage com auth por token (padrão do /api/ingest existente)
  • Migration Supabase cria usage_rollup (tenant_id, repo_id, period_day, agent, model, sessions, input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens, duration_sec, tool_calls, subagents) — PK (tenant_id, repo_id, period_day, agent, model)
  • Ingestão faz UPSERT incremental (+= excluded.*)
  • Idempotência via dedup_key rotativo em tabela com TTL curto, purgada após a janela; dedup_key nunca entra no rollup
  • Rejeita payload que contenha qualquer campo de identidade (defesa em profundidade)
  • Tipos TS em platform/src/types/

Scope / non-goals

Dentro: endpoint, schema, upsert, idempotência. Fora: UI (#69); parser CLI (#67).

Se encaixa em qual estágio?

Stage 3 (prep) — bloqueada pelo ADR (#66).

Implementation notes

Reusar auth/idempotência do /api/ingest atual. Sem tabela de sessão crua — só o rollup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions