Reconciliar F1 /admin/parties com a API pré-existente /parties (dsoc-mandates) #70

Open
opened 2026-07-27 14:25:02 -03:00 by navigator · 1 comment
Owner

Ao construir o F1 (#58) criei admin_parties.rs (/admin/parties, gated party.manage) SEM ter
achado a API que já existia em crates/spaces/mandates/src/parties.rs (/api/v1/parties/*:
GET /parties, POST /parties/{sigla}/directories, directory members; gated por
party_write_authorized = admin plataforma OU admin partido).

Sobreposição: criação de diretório e gestão de administradores existem nas DUAS.

  • Superfície canônica (recomendo consolidar em /parties, EN por ADR-0013; painel /admin/partidos consome ela) OU manter /admin/parties e remover escritas duplicadas de /parties
  • Alinhar gating (party.manage/directory.manage vs party_write_authorized)
  • Apontar AdminPartiesPanel pra API escolhida; remover a outra; rename pt->en (coord. #56)

Descoberto ao investigar 'quem criou o diretório do PSD-RJ' (criado 2026-07-24 pela conta administrator socrates, via a /parties antiga).

Ao construir o F1 (#58) criei `admin_parties.rs` (`/admin/parties`, gated `party.manage`) SEM ter achado a API que já existia em `crates/spaces/mandates/src/parties.rs` (`/api/v1/parties/*`: `GET /parties`, `POST /parties/{sigla}/directories`, directory members; gated por `party_write_authorized` = admin plataforma OU admin partido). **Sobreposição:** criação de diretório e gestão de administradores existem nas DUAS. - [ ] Superfície canônica (recomendo consolidar em `/parties`, EN por ADR-0013; painel /admin/partidos consome ela) OU manter /admin/parties e remover escritas duplicadas de /parties - [ ] Alinhar gating (party.manage/directory.manage vs party_write_authorized) - [ ] Apontar AdminPartiesPanel pra API escolhida; remover a outra; rename pt->en (coord. #56) Descoberto ao investigar 'quem criou o diretório do PSD-RJ' (criado 2026-07-24 pela conta administrator socrates, via a /parties antiga).
Author
Owner

Investigacao (2026-07-27): a sobreposicao e DUPLA, nao so backend.

Backends: dsoc-mandates::parties (POST /parties/{sigla}/directories, members) vs gateway::admin_parties (/admin/parties/*, F1).
Frontends: PartyDetail.svelte (pagina publica do partido, usa createPartyDirectory/deletePartyDirectory/addDirectoryMember -> API /parties) vs AdminPartiesPanel.svelte (F1, usa /admin/parties).

Ou seja, ha DOIS caminhos completos de gestao de diretorio/admin. Remover qualquer um quebra um frontend ativo -> reconciliacao e um REFACTOR DELIBERADO, nao corte de sessao.

Decisao proposta: /admin/parties (EN, gated party.manage/directory.manage, auditado #71, UI no admin) vira a superficie CANONICA de escrita. Passos:

  • Migrar PartyDetail.svelte para consumir /admin/parties (ou remover a gestao de la, deixando a pagina publica so-leitura)
  • Deprecar/remover as rotas de ESCRITA de dsoc-mandates::parties (manter GET publicos /parties, /parties/{sigla})
  • Remover helpers createPartyDirectory/deletePartyDirectory/addDirectoryMember do api.ts
  • Rename pt->en na superficie remanescente (coord #56)

Mantido ABERTO como refactor rastreado (nao rushed).

Investigacao (2026-07-27): a sobreposicao e DUPLA, nao so backend. **Backends:** `dsoc-mandates::parties` (`POST /parties/{sigla}/directories`, members) vs `gateway::admin_parties` (`/admin/parties/*`, F1). **Frontends:** `PartyDetail.svelte` (pagina publica do partido, usa createPartyDirectory/deletePartyDirectory/addDirectoryMember -> API /parties) vs `AdminPartiesPanel.svelte` (F1, usa /admin/parties). Ou seja, ha DOIS caminhos completos de gestao de diretorio/admin. Remover qualquer um quebra um frontend ativo -> reconciliacao e um REFACTOR DELIBERADO, nao corte de sessao. **Decisao proposta:** `/admin/parties` (EN, gated party.manage/directory.manage, auditado #71, UI no admin) vira a superficie CANONICA de escrita. Passos: - [ ] Migrar `PartyDetail.svelte` para consumir /admin/parties (ou remover a gestao de la, deixando a pagina publica so-leitura) - [ ] Deprecar/remover as rotas de ESCRITA de `dsoc-mandates::parties` (manter GET publicos /parties, /parties/{sigla}) - [ ] Remover helpers createPartyDirectory/deletePartyDirectory/addDirectoryMember do api.ts - [ ] Rename pt->en na superficie remanescente (coord #56) Mantido ABERTO como refactor rastreado (nao rushed).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
brasil/democracia-social#70
No description provided.