feat(arquitectura): estilos arquitectonicos + referencia al apunte

Incorpora los conceptos de estilos arquitectonicos al diseno de Odoo,
basado en el apunte de la materia provisto por el usuario.

Cambios:

1. Nuevo diagrama D-ARQ-TECH-002 - Arquitectura con Estilos Arquitectonicos:
   - Identifica 8 estilos arquitectonicos aplicados a Odoo 19.0
   - Cliente-Servidor (browser <-> Odoo)
   - 3-Tier (Cliente | Aplicacion | Datos)
   - MVC (Vista/Controlador/Modelo)
   - Capas (Presentacion | Web | Logic | Addons)
   - Pipe-and-Filter (HTTP request pipeline)
   - Microkernel (addons via _inherit)
   - Repository (ORM Odoo encapsula BD)
   - Event-Driven (mail.thread, onchange, cron)

2. Nuevo documento docs/04_arquitectura/estilos_arquitectonicos.md:
   - Explicacion detallada de cada estilo
   - Aplicacion concreta a Odoo con evidencia EV-ARQ-001..006
   - Tabla de combinacion de estilos
   - Beneficios y trade-offs
   - Referencia al apunte de la materia

3. README actualizado:
   - Ejemplo 5 ahora menciona D-ARQ-TECH-001 y D-ARQ-TECH-002
   - Nueva seccion "Estilos arquitectonicos" en Recursos adicionales
   - Nueva entrada "Apunte de estilos arquitectonicos" en Referencia
     bibliografica con link al Google Drive

Archivos:
- diagrams/plantuml/d_arq_tech_002_estilos_arquitectonicos.puml
- diagrams/png/D-ARQ-TECH-002 ... .png
- diagrams/svg/D-ARQ-TECH-002 ... .svg
- diagrams/pdf/D-ARQ-TECH-002 ... .pdf
- docs/04_arquitectura/estilos_arquitectonicos.md
- README.md (actualizado)
This commit is contained in:
saptfi2026-bot
2026-06-24 14:35:40 -03:00
parent a55f74144a
commit 6c8f468b71
6 changed files with 590 additions and 2 deletions
@@ -0,0 +1,113 @@
@startuml D-ARQ-TECH-002 — Arquitectura con Estilos Arquitectonicos Identificados
title SAP-TFI-2026 — Arquitectura de Odoo 19.0 con Estilos Arquitectonicos
skinparam shadowing false
skinparam handwritten false
skinparam defaultFontName Arial
skinparam defaultFontSize 11
skinparam linetype ortho
skinparam backgroundColor white
' ─────────────────────── ESTILOS APLICADOS ───────────────────────
note as N1
Estilos arquitectonicos identificados:
- Cliente-Servidor (browser <-> Odoo server)
- 3-Tier / N-Tier (Cliente, Aplicacion, Datos)
- MVC (Modelo-Vista-Controlador, extendido)
- Capas (Presentation, Web, Logic, Data)
- Pipe-and-Filter (request pipeline HTTP)
- Microkernel (extension via _inherit)
- Repository (ORM Odoo encapsula BD)
- Event-Driven (mail.thread, onchange)
end note
' ─────────────────────── CLIENTE ───────────────────────
package "Cliente (Browser)\n[Estilo: Cliente-Servidor]" {
node "Web Browser" as Browser
node "JavaScript Runtime" as JSRuntime
}
' ─────────────────────── CAPA PRESENTACION ───────────────────────
package "Capa 2.1: Presentacion (UI)\n[Estilo: MVC - Vista]" {
node "OWL Framework" as OWL
node "Static Assets (JS/CSS)" as Static
database "Views (XML)" as Views
}
' ─────────────────────── WEB LAYER ───────────────────────
package "Capa 2.2: Web Layer\n[Estilos: Pipe-and-Filter, MVC-Controlador]" {
node "Router\n(addons/web/http.py)" as Router
node "HTTP Controllers" as Controllers
node "JSON-RPC Endpoint" as JSONRPC
node "XML-RPC Endpoint" as XMLRPC
}
' ─────────────────────── LOGICA ───────────────────────
package "Capa 2.3: Business Logic\n[Estilos: MVC-Modelo, Microkernel, Event-Driven]" {
node "Models (Python)\n(addons/<modulo>/models/)" as Models
node "ORM (Object-Relational)\n[Estilo: Repository]" as ORM
node "Compute Fields,\nonchange, constraints\n[Estilo: Event-Driven]" as Computed
}
' ─────────────────────── ADDONS ───────────────────────
package "Capa 2.4: Addons\n[Estilo: Microkernel (plugins via _inherit)]" {
node "sale" as AddonSale
node "account" as AddonAccount
node "stock" as AddonStock
node "product" as AddonProduct
}
' ─────────────────────── DATOS ───────────────────────
package "Capa 3: Persistencia\n[Estilo: 3-Tier - Capa de Datos]" {
database "PostgreSQL\n[Estilo: Repository]" as DB
node "Filestore" as Filestore
}
' ─────────────────────── INTEGRACION ───────────────────────
package "Capa 4: Integracion Externa\n[Estilos: Cliente-Servidor (inverso), Pipe-and-Filter]" {
node "API REST" as RESTAPI
node "SMTP" as SMTP
node "Payment Gateway" as Payment
node "Webhooks" as Webhooks
}
' ─────────────────────── CONEXIONES ───────────────────────
Browser --> OWL
Browser --> Static
OWL --> Router
Router --> Controllers : dispatch (Pipe-Filter)
Router --> Views : selecciona vista (MVC-Vista)
Controllers --> Models : invoca (MVC-Controlador)
JSONRPC <-- Controllers
XMLRPC <-- Models
Models --> ORM : queries (Repository)
Models --> Computed : logica (Event-Driven)
ORM --> DB : SQL
ORM --> Filestore
Models --> SMTP : envia emails (Event-Driven)
Models --> Payment : cobros
Models --> Webhooks : notifica
AddonSale --> Models
AddonAccount --> Models
AddonStock --> Models
AddonProduct --> Models
legend right
Proyecto: SAP-TFI-2026
Agente: saptfi2026
Estilos aplicados: 8 estilos GoF/Arquitectura
Cliente-Servidor: browser <-> server
3-Tier: Cliente | Aplicacion | Datos
MVC: Vista (XML/OWL) | Controlador (HTTP) | Modelo (ORM)
Capas: Presentacion | Web | Logic | Addons
Pipe-and-Filter: HTTP request pipeline
Microkernel: addons via _inherit
Repository: ORM Odoo encapsula BD
Event-Driven: mail.thread, onchange, cron
endlegend
@enduml