From d12084130811c863346c4e303f3bb400b2d01b95 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Sun, 13 Sep 2026 17:04:32 -0300 Subject: [PATCH] =?UTF-8?q?docs(C155):=20triage=20de=20d=C3=A9bitos=20p?= =?UTF-8?q?=C3=B3s-simplify=20e=20HELP=20do=20--date?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plans/backfill-acervo-falas-impl.md | 21 +++++++++++++++++++++ scripts/import-camara-speeches.mjs | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/plans/backfill-acervo-falas-impl.md b/docs/plans/backfill-acervo-falas-impl.md index 287ab296..5d7b98ab 100644 --- a/docs/plans/backfill-acervo-falas-impl.md +++ b/docs/plans/backfill-acervo-falas-impl.md @@ -222,6 +222,27 @@ _Quota:_ 1 PR; prova: check `checks` verde. | C154 não está em main | Dados ficam prontos; validação visual registrada como pendência do C154, não bloqueio deste item | | Colisão de `sourceKey` (vista na 57ª) | Já resolvida no C153 por hash de conteúdo; o relatório marca `suffixedKey` | +## Débitos (triage pós-simplify) + +Nenhum achado dos dois revisores virou Issue nova (nenhum `expensive_lock` com score ≥4). O que ficou: + +**Deferido com gatilho:** + +- **Resolver do pool Postgres duplicado** (`src/utilities/speech/speechCoverage.ts` vs `src/utilities/supporter/supporterListOverviewAggregate.ts`): os dois checam `payload.db.name` + `drizzle.execute` com mensagens de erro próprias. Extrair para `drizzleBulk` seria abstração com 2 call sites e semânticas de erro distintas. Gatilho: 3º consumidor do resolver ou mudança no shape do adapter. +- **Listas de buckets/chaves soletradas** (`speechCoverage`: tipo/SQL/`rowToCoverage`/`sumCoverage`; `camaraSpeeches`: `BACKFILL_*_KEYS` vs `createRun`): derivar dinamicamente de `Object.keys` esconderia a quebra de contrato (campo novo que some do relatório sem erro). Gatilho: um 8º bucket no coverage ou um 4º bloco numérico no relatório. + +**Descartado:** o par `--date` + `--legislature` continua aceito (ignorado, shape do C153 preservado) — o C153 já o aceitava; agora o `options.legislature` fica `null` como antes e o HELP diz "ignorado se --date". + +**Já resolvido no simplify (não reabrir):** + +- `getJsonWithBackoff` movido para `scripts/lib/camaraFetch.mjs` (o dono do retry HTTP), com `label` injetável. +- Guard reordenado (`assertWriteAllowed` antes do `assertLocalDatabase`) para o disjunto de host remoto ser alcançável; mensagem de `DATABASE_URL` ausente em pt-BR. +- Pipeline por legislatura extraído (`runLegislature`) e reusado pelo single-range e pelo `--all`. +- `combined` inicializado por `aggregateBackfillRuns([])` (sem `totals/asr/llm` nulos). +- Bloco por legislatura imprime `N falha(s)`; `--verify-links` não grava JSON com amostra vazia. +- `databaseTarget` com parse único; `PostgresDb` reusa `PostgresTransactionDatabase`; JSDoc de `selectLinkSample` honesto; linha em branco no `cli.mjs`; nome do artefato do plano alinhado (`backfill-.json`). +- Teste do ramo uniforme de `selectLinkSample` (6 linhas, n=2/3, ids exatos). + ## Aceite de engenharia (checklist) - [ ] `--all` processa 54→57 num processo, com `legislatures[]` + totais combinados + `coverage`; mutex com `--date`/`--legislature` explícito; checkpoint por legislatura. diff --git a/scripts/import-camara-speeches.mjs b/scripts/import-camara-speeches.mjs index a726f9c2..02b750ac 100644 --- a/scripts/import-camara-speeches.mjs +++ b/scripts/import-camara-speeches.mjs @@ -176,7 +176,7 @@ Uso: pnpm camara:import [--all | --legislature 54|55|56|57 | --date YYYY-MM-DD | Modos de import (escrevem no acervo): --all processa as 54ª–57ª em sequência (relatório por legislatura) - --legislature 54|55|56|57 (default 57 quando nenhum modo é dado) + --legislature 54|55|56|57 (default 57 quando nenhum modo é dado; ignorado se --date) --date discursos de um único dia Modos read-only: --coverage imprime a cobertura do banco por legislatura (sem rede/escrita)