modules/organizations — rotas de organização
Três rotas CRUD que parecem administrar as organizações da plataforma e não administram. É a nota mais importante desta fatia, porque o nome engana.
O problema
O módulo opera sobre Organization, de src.db.base — a tabela organizations de dentro do
app_<org> corrente. O plano de controle usa CoreOrganization, a tabela organizations do
appstock_core. São duas tabelas com o mesmo nome em bancos diferentes, e este módulo usa a
errada.
Efeito prático de cada rota:
| Rota | O que parece | O que faz |
|---|---|---|
GET /organizations | Lista as organizações da plataforma | Lista as linhas de organizations dentro do banco da própria organização — na prática, uma linha só, ela mesma. |
POST /organizations | Provisiona uma organização | Insere uma linha solta no banco da organização atual. Sem banco, sem admin, sem DSN, sem token. Não é uma organização — é lixo. |
PATCH /organizations/{id} | Ativa/desativa a organização | Renomeia ou marca is_active numa linha que ninguém consulta. |
Provisionar de verdade é mod-provision. Estas rotas não têm relação com aquilo.
Segundo problema: sem permissão
As três exigem apenas get_current_user — qualquer usuário autenticado de qualquer
organização pode chamar. Não há código de recurso associado no catálogo de permissões. Numa
plataforma cujo lema é “multi-tenant é lei”, uma rota de organização sem gate é ruído perigoso.
Estado real
status: parcial é generoso. Isso é API morta com nome de API viva. Três saídas, e é decisão
de produto:
- Apagar. Ninguém no frontend chama estas rotas. É a saída mais honesta hoje.
- Repontar para o core e transformar no console do operador da plataforma: listar
organizações reais, status, bancos, módulos habilitados, uso e
provisioning_log— com gate de permissão de superusuário da plataforma. - Reaproveitar o nome para o console da organização (dados da empresa, branding, módulos, ent-sync-token), que é o que falta em Configurações.
A opção 2 é a que resolve mais lacunas de uma vez: destrava o org_modules que o
mod-provision grava e ninguém lê, e dá visibilidade a provisionamento incompleto.
Lacunas
Rastreadas na fase-1-onboarding.