mirror of
https://github.com/cursos-uai/sap_tfi_2026.git
synced 2026-07-31 20:48:30 -03:00
feat(arquitectura): diagrama de arquitectura estratificada de Odoo
Nuevo diagrama D-ARQ-TECH-001 que muestra las 4 capas del stack de Odoo: - Capa 1: Cliente (navegador, JS runtime) - Capa 2: Servidor de aplicacion - Subcapa 2.1: Presentacion (OWL, Views XML, Static) - Subcapa 2.2: Web Layer (Router, Controllers, JSON-RPC, XML-RPC) - Subcapa 2.3: Business Logic (Models, ORM, Computed) - Subcapa 2.4: Addons (sale, account, stock, product, etc.) - Capa 3: Persistencia (PostgreSQL, Filestore) - Capa 4: Integracion (REST API, SMTP, Payment, Webhooks) Componentes incluidos segun pedido: a) views ✓ b) models ✓ c) controller ✓ d) Integraciones por API REST desde los controller ✓ e) Interacciones desde XMLRPC ✓ f) Enrutador ✓ g) Static (javascript, css) ✓ h) OWL ✓ i) addons ✓ j) etc (filestore, SMTP, payment gateway, webhooks) ✓ Archivos: - diagrams/plantuml/d_arq_tech_001_capas_odoo.puml - diagrams/png/d_arq_tech_001_capas_odoo.png - diagrams/svg/d_arq_tech_001_capas_odoo.svg - diagrams/pdf/d_arq_tech_001_capas_odoo.pdf - docs/04_arquitectura/arquitectura_estratificada_odoo.md
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
@startuml D-ARQ-TECH-001 — Arquitectura Estratificada de Odoo
|
||||
|
||||
title SAP-TFI-2026 — Arquitectura Estratificada de Odoo (Stack Tecnologico)
|
||||
|
||||
skinparam shadowing false
|
||||
skinparam handwritten false
|
||||
skinparam defaultFontName Arial
|
||||
skinparam defaultFontSize 12
|
||||
skinparam linetype ortho
|
||||
skinparam backgroundColor white
|
||||
|
||||
' ──────────────────────────── CAPA 1: Cliente ────────────────────────────
|
||||
package "Capa 1: Cliente (Navegador)" {
|
||||
node "Web Browser\n(Chrome, Firefox, Safari)" as Browser
|
||||
node "JavaScript Runtime\n(V8, SpiderMonkey)" as JSRuntime
|
||||
}
|
||||
|
||||
' ──────────────────────────── CAPA 2: Servidor Odoo ────────────────────────────
|
||||
package "Capa 2: Servidor de Aplicacion Odoo" {
|
||||
|
||||
package "Capa 2.1: Presentacion (UI)" {
|
||||
node "OWL Framework\n(JS + Templates QWeb)" as OWL
|
||||
node "Static Assets\n(JS, CSS, imagenes)" as Static
|
||||
database "Views (XML)\nForm, Tree, Kanban, Search" as Views
|
||||
}
|
||||
|
||||
package "Capa 2.2: Web Layer" {
|
||||
node "Router (enrutador)\naddons/web/http.py" as Router
|
||||
node "HTTP Controllers\n(addons/<modulo>/controllers/)" as Controllers
|
||||
node "JSON-RPC Endpoint\n/jsonrpc" as JSONRPC
|
||||
node "XML-RPC Endpoint\n/xmlrpc/2/*" as XMLRPC
|
||||
}
|
||||
|
||||
package "Capa 2.3: Business Logic" {
|
||||
node "Models (Python)\naddons/<modulo>/models/*.py" as Models
|
||||
node "ORM (Object-Relational Mapping)\naddons/orm/" as ORM
|
||||
node "Compute Fields,\nonchange, constraints" as Computed
|
||||
}
|
||||
|
||||
package "Capa 2.4: Addons (Modulos)" {
|
||||
node "sale (Ventas)" as AddonSale
|
||||
node "account (Contabilidad)" as AddonAccount
|
||||
node "stock (Inventario)" as AddonStock
|
||||
node "product (Productos)" as AddonProduct
|
||||
node "Otros addons (500+ modulos)" as AddonOther
|
||||
}
|
||||
}
|
||||
|
||||
' ──────────────────────────── CAPA 3: Datos ────────────────────────────
|
||||
package "Capa 3: Persistencia" {
|
||||
database "PostgreSQL Database\n(tablas, indices, vistas SQL)" as DB
|
||||
node "Filestore\n(adjuntos, imagenes en disco)" as Filestore
|
||||
}
|
||||
|
||||
' ──────────────────────────── CAPA 4: Integracion ────────────────────────────
|
||||
package "Capa 4: Integracion Externa" {
|
||||
node "API REST\n(consumidores externos)" as RESTAPI
|
||||
node "SMTP / Email Service" as SMTP
|
||||
node "Payment Gateway\n(stripe, paypal, etc.)" as Payment
|
||||
node "Webhooks (out)" as Webhooks
|
||||
}
|
||||
|
||||
' ──────────────────────────── Relaciones ────────────────────────────
|
||||
|
||||
Browser --> OWL : carga SPA
|
||||
Browser --> Static : descarga assets
|
||||
JSRuntime --> OWL : ejecuta JS
|
||||
|
||||
OWL --> Router : HTTP request
|
||||
Browser --> Router : HTTP request (XHR/fetch)
|
||||
Static <-- Router : sirve archivos
|
||||
|
||||
Router --> Controllers : dispatch
|
||||
Router --> Views : selecciona vista XML
|
||||
Controllers --> Models : invoca metodos
|
||||
Controllers --> AddonSale : maneja rutas del modulo
|
||||
Controllers --> AddonAccount : maneja rutas del modulo
|
||||
Controllers --> AddonStock : maneja rutas del modulo
|
||||
Controllers --> RESTAPI : expone endpoints
|
||||
JSONRPC <-- Controllers : protocolo JSON-RPC 2.0
|
||||
XMLRPC <-- Models : protocolo XML-RPC (legacy)
|
||||
|
||||
Models --> ORM : queries
|
||||
Models --> AddonSale : extiende sale.order
|
||||
Models --> AddonAccount : extiende account.move
|
||||
Models --> AddonStock : extiende stock.picking
|
||||
Models --> AddonProduct : extiende product.product
|
||||
Models --> Computed : logica de negocio
|
||||
ORM --> DB : SQL queries
|
||||
ORM --> Filestore : adjuntos
|
||||
Models --> SMTP : envia emails
|
||||
Models --> Payment : cobros
|
||||
Models --> Webhooks : notifica cambios
|
||||
|
||||
AddonSale --> Models : contiene
|
||||
AddonAccount --> Models : contiene
|
||||
AddonStock --> Models : contiene
|
||||
AddonProduct --> Models : contiene
|
||||
AddonOther --> Models : contiene
|
||||
|
||||
legend right
|
||||
Proyecto: SAP-TFI-2026
|
||||
Agente: saptfi2026
|
||||
Metodologia: ICONIX
|
||||
Fuente: Ingenieria inversa de Odoo 19.0
|
||||
Capas: Cliente | Servidor (UI/Web/Logica/Addons) | Datos | Integracion
|
||||
endlegend
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user