feat(initial-iteration): primera iteración ICONIX del flujo venta→factura→pago

Documentación generada:
- 7 casos de uso (CU-VEN-001, CU-VEN-004, CU-ENT-002, CU-ENT-004, CU-FAC-001, CU-FAC-002, CU-FAC-003)
- Modelo de dominio inicial (12 conceptos, 9 reglas de negocio)
- Arquitectura general (C4 contexto + contenedores)
- Prototipo del formulario de presupuesto
- 5 diagramas PlantUML (.puml):
  - Diagrama general de casos de uso
  - Modelo de dominio conceptual
  - Diagrama de robustez de CU-VEN-004
  - Diagrama de secuencia de CU-VEN-004
  - Diagrama de clases técnicas (integración Venta/Stock/Contabilidad)
- Matriz de trazabilidad con 20 EV-COD y 22 EV-INF

Odoo analizado: 19.0 Community (rama 19.0)
Método: ingeniería inversa con verificación de código fuente

Nota: NO pushear (gate S2). Ale debe revisar antes de merge a main.
This commit is contained in:
saptfi2026-bot
2026-06-23 20:18:36 -03:00
parent 7242404d6c
commit 73e344edc8
20 changed files with 2256 additions and 1 deletions
@@ -0,0 +1,71 @@
# Arquitectura General del Proyecto SAP-TFI-2026
## Nivel C4: Contexto
```
[Usuario] ───usa───> [Sistema Odoo 19]
│──consulta──> [PostgreSQL]
│──envía──> [Servicio de Email]
│──integra──> [Servicio de Pago]
```
### Actores externos
- **Usuario**: persona que opera Odoo (vendedor, operador de almacén, facturador).
- **Servicio de Email**: SMTP relay para envío de correos de presupuestos y confirmaciones.
- **Servicio de Pago**: pasarela de pago externa (integrable vía módulos).
- **PostgreSQL**: base de datos relacional que persiste todos los datos.
## Nivel C4: Contenedores
```
[Cliente Web (navegador)]
│ HTTPS
[Servidor Odoo]
├── [Módulo sale] (Python)
├── [Módulo account] (Python)
├── [Módulo stock] (Python)
├── [Módulo product] (Python)
├── [Módulo mail] (Python)
├── [Módulo delivery] (Python)
└── [ORM Odoo]
│ conexión nativa
[PostgreSQL]
```
### Componentes principales
| Componente | Descripción | Tecnología |
|------------|-------------|------------|
| Cliente Web | Interfaz de usuario | HTML/CSS/JS (servido por Odoo) |
| Servidor Odoo | Aplicación principal | Python + Odoo Framework |
| Módulo sale | Lógica de ventas | Python |
| Módulo account | Lógica contable | Python |
| Módulo stock | Lógica de inventario | Python |
| Módulo product | Lógica de productos | Python |
| Módulo mail | Comunicación (correos) | Python |
| Módulo delivery | Logística de entrega | Python |
| ORM Odoo | Capa de abstracción de datos | Python |
| PostgreSQL | Almacenamiento persistente | C |
## Diagrama PlantUML
Ver `diagrams/plantuml/d_arq_gen_001_arquitectura_general.puml`.
## Reglas arquitectónicas
- **RN-ARQ-001**: El servidor Odoo es el único punto de entrada al sistema.
- **RN-ARQ-002**: Toda la persistencia se realiza vía ORM Odoo (no acceso directo a DB).
- **RN-ARQ-003**: Los módulos extienden funcionalidad vía `_inherit` (ver `addons/sale/models/sale_order.py:36`).
## Pendientes de validación
- **EV-INF-019**: La arquitectura refleja la versión Community. Enterprise tendría módulos adicionales (`sale_subscription`, `sale_timesheet`, etc.).
- **EV-INF-020**: La integración con pasarela de pago no fue verificada en detalle.