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:

RotaO que pareceO que faz
GET /organizationsLista as organizações da plataformaLista as linhas de organizations dentro do banco da própria organização — na prática, uma linha só, ela mesma.
POST /organizationsProvisiona uma organizaçãoInsere 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çãoRenomeia 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_userqualquer 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:

  1. Apagar. Ninguém no frontend chama estas rotas. É a saída mais honesta hoje.
  2. 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.
  3. 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.