Skip to content

Organizar o serviço: 16 rotas sem chamador, 2 ciclos e 4 duplicações #81

Description

@danielgorgonha

Levantamento sobre os 22 arquivos de produção do serviço, 4.500 linhas, com a suíte rodada e a produção conferida.

O serviço tem três camadas sobrepostas: o produto novo (leia/api_citizen, api_tasks, api_auth, invites, ratelimit, registry), quase todo em inglês e bem separado; o motor (core/pipeline_pdf mais o protocolo); e a casca herdada do produto de origem (main.py mais app_gestao.py), que são 1.334 linhas, 30% do serviço, e concentram todo o resto dos problemas.

O que foi medido

Rotas sem nenhum chamador, nem no app nem em template 16 de 39
Ciclos de importação 2, quebrados por import dentro de função
Imports locais que não quebram ciclo nenhum 3, são repetição

Duplicações confirmadas, com os dois lados no código: criação de tarefa existe duas vezes quase idêntica; o extrator de JSON do modelo está duplicado byte a byte; a mesma regra de autorização com dois nomes em dois arquivos; remoção de metadado de PDF escrita duas vezes, uma delas morta.

E uma que incomoda mais que as outras: a bateria de avaliação define "o trecho está no documento" por regra diferente da do produto. Uma bateria que mede por régua própria pode aprovar o que o produto reprova, e vice-versa.

Padronização: o que #15 e #16 não cobrem

As duas cobrem banco e rotas/campos. Ficam de fora: nomes de evento (16 de 22 em português), nomes de artefato em disco (25 de 29), ids do protocolo, valores de status e papel, nomes de arquivo do repositório, e o idioma dos prompts.

Também não existe lint de Python na integração contínua.

A ordem proposta, e por que não começa pela tradução

Fazer a #16 antes seria traduzir rotas que devem sumir. A sequência, do que não toca contrato para o que toca:

  1. Ligar o ruff no CI.
  2. Unificar o que está duplicado: um extrator de JSON, uma regra de autorização, uma remoção de metadado, uma definição de âncora compartilhada com a bateria.
  3. Tirar do app_gestao o que não é rota (read_text, read_json e afins) e quebrar os dois ciclos de importação sem import dentro de função.
  4. Listar as 16 rotas sem chamador para decisão, e apagar as confirmadas num commit só, com teste afirmando 404.
  5. Só então Padronização, onda 2: esquema do banco em inglês, com migração de verdade #15 e Padronização, onda 3: rotas e campos em inglês, com redirecionamento #16.

Nenhum passo de 1 a 3 toca rota pública.

Pronto quando: os dois ciclos não existem, as quatro duplicações viraram uma implementação cada, a bateria e o produto compartilham a definição de âncora, o ruff roda no CI, e existe uma decisão registrada sobre as 16 rotas.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions