79 lines
1.3 KiB
Markdown
79 lines
1.3 KiB
Markdown
|
|
# `modules/companies`
|
||
|
|
|
||
|
|
`companies` es el módulo independiente y fuente de verdad de la ficha operativa de empresa.
|
||
|
|
|
||
|
|
## Responsabilidades
|
||
|
|
|
||
|
|
Gestiona la entidad `Company` funcional del ERP:
|
||
|
|
|
||
|
|
- datos legales
|
||
|
|
- datos operativos básicos
|
||
|
|
- `slug`
|
||
|
|
- `status`
|
||
|
|
|
||
|
|
Separación arquitectónica:
|
||
|
|
|
||
|
|
- `modules/identity`: autenticación, cuentas, memberships, acceso account-company
|
||
|
|
- `modules/companies`: ficha real de empresa y validación de company activa
|
||
|
|
|
||
|
|
## Tabla `companies`
|
||
|
|
|
||
|
|
Campos actuales:
|
||
|
|
|
||
|
|
```txt
|
||
|
|
id
|
||
|
|
legal_name
|
||
|
|
trade_name
|
||
|
|
tin
|
||
|
|
slug
|
||
|
|
email
|
||
|
|
phone
|
||
|
|
website
|
||
|
|
status
|
||
|
|
created_at
|
||
|
|
updated_at
|
||
|
|
```
|
||
|
|
|
||
|
|
Índices esperados:
|
||
|
|
|
||
|
|
```txt
|
||
|
|
UNIQUE(slug)
|
||
|
|
INDEX(status)
|
||
|
|
INDEX(tin)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Servicios públicos
|
||
|
|
|
||
|
|
El módulo expone:
|
||
|
|
|
||
|
|
```txt
|
||
|
|
companies:general
|
||
|
|
```
|
||
|
|
|
||
|
|
Responsabilidad:
|
||
|
|
|
||
|
|
- validar existencia y estado activo de la company
|
||
|
|
- devolver datos públicos/operativos de empresa
|
||
|
|
|
||
|
|
No debe asumir:
|
||
|
|
|
||
|
|
- memberships
|
||
|
|
- autenticación por cuenta
|
||
|
|
- roles/permisos de identity
|
||
|
|
|
||
|
|
## Dependencias
|
||
|
|
|
||
|
|
`modules/companies` depende de `identity`.
|
||
|
|
|
||
|
|
Uso actual:
|
||
|
|
|
||
|
|
- sus endpoints usan `requireIdentityAuthenticated(params)`
|
||
|
|
- `GET /companies/available` no usa `requireIdentityTenant(params)`
|
||
|
|
|
||
|
|
## Reglas
|
||
|
|
|
||
|
|
- `CompanyMembership` vive en `identity`.
|
||
|
|
- No mover memberships a `companies`.
|
||
|
|
- No usar `customers` para representar la empresa tenant.
|
||
|
|
- `companySlug` no debe venir de token, `X-Company-Slug` ni `req.user.companySlug`.
|