workspace-v1/projects/erp-construccion/docs/02-definicion-modulos/MAE-008-contabilidad/implementacion/TRACEABILITY.yml
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

578 lines
22 KiB
YAML

# TRACEABILITY.yml - MAE-008: Contabilidad
# Matriz de trazabilidad: Documentacion -> Codigo
# Ubicacion: apps/verticales/construccion/docs/02-definicion-modulos/MAE-008-contabilidad/implementacion/
epic_code: MAE-008
epic_name: Contabilidad
vertical: construccion
phase: 2
phase_name: Modulos de Negocio
story_points: 30
status: rf_documented
# =============================================================================
# REUTILIZACION DE CORE
# =============================================================================
reusability:
core_module: MGN-010
core_module_name: Financial
reuse_percentage: 65
strategy: extension
description: |
Este modulo extiende la funcionalidad base de MGN-010 (Financial) para
adaptarla a las necesidades especificas del vertical de construccion.
Se reutiliza la infraestructura contable base (cuentas, asientos, periodos)
y se extiende con funcionalidad especifica para construccion.
reused_components:
database:
- chart_of_accounts
- accounts
- account_balances
- currencies
- exchange_rates
- fiscal_years
- fiscal_periods
- journal_entries
- journal_lines
- cost_centers
services:
- ChartOfAccountsService
- AccountsService
- CurrenciesService
- ExchangeRateService
- FiscalPeriodService
- JournalService
endpoints:
- GET /api/v1/financial/charts
- POST /api/v1/financial/charts
- GET /api/v1/financial/charts/:id/accounts
- POST /api/v1/financial/charts/:id/accounts
- GET /api/v1/financial/currencies
- POST /api/v1/financial/currencies/convert
- GET /api/v1/financial/fiscal-years
- POST /api/v1/financial/fiscal-years
- GET /api/v1/financial/journal
- POST /api/v1/financial/journal
- POST /api/v1/financial/journal/:id/post
extended_components:
- component: cost_centers
extension: Vinculacion con obras y frentes de trabajo
- component: journal_entries
extension: Integracion con estimaciones y valuaciones
- component: account_balances
extension: Reportes por obra y centro de costos
- component: accounts
extension: Plantilla de cuentas especifica para construccion
# =============================================================================
# DOCUMENTACION
# =============================================================================
documentation:
requirements:
- id: RF-CONT-001
title: Catalogo de Cuentas Contables
file: ../requerimientos/RF-CONT-001.md
priority: P0
story_points: 8
status: documented
reuses: RF-FIN-001
extensions:
- Plantilla de cuentas especifica para construccion
- Cuentas predefinidas para estimaciones y anticipos
- Cuentas de costos por tipo de obra
- Integracion con catalogo de obras (MAE-002)
traces_to:
tables: [chart_of_accounts, accounts, account_balances]
services: [ChartOfAccountsService, AccountsService, ConstructionAccountsService]
endpoints:
- GET /api/v1/construccion/contabilidad/catalogo-cuentas
- POST /api/v1/construccion/contabilidad/catalogo-cuentas/:id/accounts
- GET /api/v1/construccion/contabilidad/plantillas/construccion
- id: RF-CONT-002
title: Polizas Contables
file: ../requerimientos/RF-CONT-002.md
priority: P0
story_points: 8
status: documented
reuses: RF-FIN-004
extensions:
- Polizas automaticas desde estimaciones
- Polizas automaticas desde valuaciones de obra
- Polizas de anticipos a proveedores
- Polizas de retenciones (5 al millar, IMSS patronal)
- Vinculacion con obras y subcontratos
traces_to:
tables: [journal_entries, journal_lines, cost_centers, construction_journal_sources]
services: [JournalService, ConstructionJournalService, EstimationJournalService]
endpoints:
- GET /api/v1/construccion/contabilidad/polizas
- POST /api/v1/construccion/contabilidad/polizas
- POST /api/v1/construccion/contabilidad/polizas/desde-estimacion
- POST /api/v1/construccion/contabilidad/polizas/desde-valuacion
- POST /api/v1/construccion/contabilidad/polizas/:id/mayorizar
- id: RF-CONT-003
title: Balanzas y Estados Financieros
file: ../requerimientos/RF-CONT-003.md
priority: P0
story_points: 8
status: documented
reuses: RF-FIN-001
extensions:
- Balanza por obra
- Balanza por centro de costos
- Estado de resultados por obra
- Comparativos presupuesto vs real
- Exportacion a Excel con formatos fiscales
traces_to:
tables: [account_balances, fiscal_periods, construction_balance_views]
services: [AccountsService, BalanceService, ConstructionBalanceService]
endpoints:
- GET /api/v1/construccion/contabilidad/balanza
- GET /api/v1/construccion/contabilidad/balanza/por-obra
- GET /api/v1/construccion/contabilidad/estados-financieros
- GET /api/v1/construccion/contabilidad/estados-financieros/por-obra
- POST /api/v1/construccion/contabilidad/exportar/balanza
- id: RF-CONT-004
title: Centro de Costos
file: ../requerimientos/RF-CONT-004.md
priority: P0
story_points: 6
status: documented
reuses: RF-FIN-004
extensions:
- Centros de costo vinculados a obras
- Centros de costo vinculados a frentes de trabajo
- Centros de costo por tipo de actividad
- Jerarquia de centros de costos
- Reporte de costos por centro
traces_to:
tables: [cost_centers, construction_cost_centers]
services: [CostCenterService, ConstructionCostCenterService]
endpoints:
- GET /api/v1/construccion/contabilidad/centros-costo
- POST /api/v1/construccion/contabilidad/centros-costo
- GET /api/v1/construccion/contabilidad/centros-costo/:id/costos
- GET /api/v1/construccion/contabilidad/centros-costo/por-obra/:obraId
specifications: []
# Pendiente de documentacion
user_stories: []
# Pendiente de documentacion
# =============================================================================
# IMPLEMENTACION
# =============================================================================
implementation:
database:
schema: construccion_contabilidad
path: apps/database/ddl/schemas/construccion_contabilidad/
status: pending
note: Extiende core_financial con tablas especificas de construccion
tables:
# Tablas extendidas de core
- name: construction_cost_centers
file: apps/database/ddl/schemas/construccion_contabilidad/tables/construction_cost_centers.sql
status: pending
requirement: RF-CONT-004
extends: cost_centers
columns:
- {name: id, type: UUID, pk: true, fk: cost_centers}
- {name: obra_id, type: UUID, fk: obras}
- {name: frente_trabajo_id, type: UUID, fk: frentes_trabajo, nullable: true}
- {name: activity_type, type: VARCHAR(50)}
- {name: budget_amount, type: "DECIMAL(18,4)"}
- {name: actual_amount, type: "DECIMAL(18,4)", default: 0}
- {name: variance, type: "DECIMAL(18,4)", default: 0}
- {name: created_at, type: TIMESTAMPTZ}
- {name: updated_at, type: TIMESTAMPTZ}
- name: construction_journal_sources
file: apps/database/ddl/schemas/construccion_contabilidad/tables/construction_journal_sources.sql
status: pending
requirement: RF-CONT-002
columns:
- {name: id, type: UUID, pk: true}
- {name: journal_entry_id, type: UUID, fk: journal_entries}
- {name: source_module, type: VARCHAR(50)}
- {name: estimacion_id, type: UUID, fk: estimaciones, nullable: true}
- {name: valuacion_id, type: UUID, fk: valuaciones, nullable: true}
- {name: obra_id, type: UUID, fk: obras, nullable: true}
- {name: subcontrato_id, type: UUID, fk: subcontratos, nullable: true}
- {name: created_at, type: TIMESTAMPTZ}
- name: construction_account_templates
file: apps/database/ddl/schemas/construccion_contabilidad/tables/construction_account_templates.sql
status: pending
requirement: RF-CONT-001
columns:
- {name: id, type: UUID, pk: true}
- {name: code, type: VARCHAR(50)}
- {name: name, type: VARCHAR(255)}
- {name: account_type, type: VARCHAR(50)}
- {name: purpose, type: VARCHAR(100)}
- {name: is_default, type: BOOLEAN, default: false}
- {name: created_at, type: TIMESTAMPTZ}
# Vistas para reportes
- name: construction_balance_views
file: apps/database/ddl/schemas/construccion_contabilidad/views/construction_balance_views.sql
status: pending
requirement: RF-CONT-003
type: VIEW
description: Vistas materializadas para balanzas por obra y centro de costos
backend:
module: construccion/contabilidad
path: apps/verticales/construccion/backend/src/modules/contabilidad/
framework: NestJS
status: pending
note: Extiende modulos de core_financial
entities:
# Entidades extendidas
- name: ConstructionCostCenter
file: apps/verticales/construccion/backend/src/modules/contabilidad/entities/construction-cost-center.entity.ts
status: pending
requirement: RF-CONT-004
extends: CostCenter
- name: ConstructionJournalSource
file: apps/verticales/construccion/backend/src/modules/contabilidad/entities/construction-journal-source.entity.ts
status: pending
requirement: RF-CONT-002
- name: ConstructionAccountTemplate
file: apps/verticales/construccion/backend/src/modules/contabilidad/entities/construction-account-template.entity.ts
status: pending
requirement: RF-CONT-001
services:
- name: ConstructionAccountsService
file: apps/verticales/construccion/backend/src/modules/contabilidad/construction-accounts.service.ts
status: pending
requirement: RF-CONT-001
extends: AccountsService
methods:
- {name: createFromTemplate, description: Crear catalogo desde plantilla construccion}
- {name: getConstructionAccounts, description: Obtener cuentas especificas de construccion}
- {name: validateConstructionCode, description: Validar codigo segun estandar construccion}
- name: ConstructionJournalService
file: apps/verticales/construccion/backend/src/modules/contabilidad/construction-journal.service.ts
status: pending
requirement: RF-CONT-002
extends: JournalService
methods:
- {name: createFromEstimacion, description: Crear poliza desde estimacion}
- {name: createFromValuacion, description: Crear poliza desde valuacion}
- {name: createAnticipo, description: Crear poliza de anticipo}
- {name: createRetencion, description: Crear poliza de retenciones}
- {name: getByObra, description: Obtener polizas por obra}
- name: EstimationJournalService
file: apps/verticales/construccion/backend/src/modules/contabilidad/estimation-journal.service.ts
status: pending
requirement: RF-CONT-002
methods:
- {name: generateJournalFromEstimacion, description: Generar asientos automaticos de estimacion}
- {name: calculateRetenciones, description: Calcular retenciones (5 al millar, IMSS)}
- {name: applyAnticipo, description: Aplicar anticipo a estimacion}
- name: ConstructionBalanceService
file: apps/verticales/construccion/backend/src/modules/contabilidad/construction-balance.service.ts
status: pending
requirement: RF-CONT-003
methods:
- {name: getBalanceByObra, description: Obtener balanza por obra}
- {name: getBalanceByCostCenter, description: Obtener balanza por centro costos}
- {name: getEstadoResultadosByObra, description: Estado de resultados por obra}
- {name: getComparativoBudget, description: Comparativo presupuesto vs real}
- {name: exportToExcel, description: Exportar balanza a Excel}
- name: ConstructionCostCenterService
file: apps/verticales/construccion/backend/src/modules/contabilidad/construction-cost-center.service.ts
status: pending
requirement: RF-CONT-004
methods:
- {name: createByObra, description: Crear centro de costos por obra}
- {name: createByFrente, description: Crear centro costos por frente}
- {name: getCostosByCenter, description: Obtener costos acumulados}
- {name: getVariance, description: Calcular variacion presupuesto vs real}
controllers:
- name: ConstructionAccountsController
file: apps/verticales/construccion/backend/src/modules/contabilidad/controllers/construction-accounts.controller.ts
status: pending
endpoints:
- method: GET
path: /api/v1/construccion/contabilidad/catalogo-cuentas
description: Listar catalogo de cuentas
requirement: RF-CONT-001
- method: POST
path: /api/v1/construccion/contabilidad/catalogo-cuentas
description: Crear catalogo desde plantilla
requirement: RF-CONT-001
- method: GET
path: /api/v1/construccion/contabilidad/plantillas/construccion
description: Obtener plantilla de cuentas para construccion
requirement: RF-CONT-001
- method: POST
path: /api/v1/construccion/contabilidad/catalogo-cuentas/:id/accounts
description: Crear cuenta en catalogo
requirement: RF-CONT-001
- name: ConstructionJournalController
file: apps/verticales/construccion/backend/src/modules/contabilidad/controllers/construction-journal.controller.ts
status: pending
endpoints:
- method: GET
path: /api/v1/construccion/contabilidad/polizas
description: Listar polizas contables
requirement: RF-CONT-002
- method: POST
path: /api/v1/construccion/contabilidad/polizas
description: Crear poliza manual
requirement: RF-CONT-002
- method: POST
path: /api/v1/construccion/contabilidad/polizas/desde-estimacion
description: Generar poliza desde estimacion
requirement: RF-CONT-002
- method: POST
path: /api/v1/construccion/contabilidad/polizas/desde-valuacion
description: Generar poliza desde valuacion
requirement: RF-CONT-002
- method: POST
path: /api/v1/construccion/contabilidad/polizas/:id/mayorizar
description: Mayorizar poliza
requirement: RF-CONT-002
- method: GET
path: /api/v1/construccion/contabilidad/polizas/obra/:obraId
description: Obtener polizas por obra
requirement: RF-CONT-002
- name: ConstructionBalanceController
file: apps/verticales/construccion/backend/src/modules/contabilidad/controllers/construction-balance.controller.ts
status: pending
endpoints:
- method: GET
path: /api/v1/construccion/contabilidad/balanza
description: Obtener balanza general
requirement: RF-CONT-003
- method: GET
path: /api/v1/construccion/contabilidad/balanza/por-obra
description: Obtener balanza por obra
requirement: RF-CONT-003
- method: GET
path: /api/v1/construccion/contabilidad/estados-financieros
description: Obtener estados financieros
requirement: RF-CONT-003
- method: GET
path: /api/v1/construccion/contabilidad/estados-financieros/por-obra
description: Estados financieros por obra
requirement: RF-CONT-003
- method: POST
path: /api/v1/construccion/contabilidad/exportar/balanza
description: Exportar balanza a Excel
requirement: RF-CONT-003
- name: ConstructionCostCenterController
file: apps/verticales/construccion/backend/src/modules/contabilidad/controllers/construction-cost-center.controller.ts
status: pending
endpoints:
- method: GET
path: /api/v1/construccion/contabilidad/centros-costo
description: Listar centros de costo
requirement: RF-CONT-004
- method: POST
path: /api/v1/construccion/contabilidad/centros-costo
description: Crear centro de costo
requirement: RF-CONT-004
- method: GET
path: /api/v1/construccion/contabilidad/centros-costo/:id/costos
description: Obtener costos acumulados
requirement: RF-CONT-004
- method: GET
path: /api/v1/construccion/contabilidad/centros-costo/por-obra/:obraId
description: Centros de costo por obra
requirement: RF-CONT-004
frontend:
module: construccion/contabilidad
path: apps/verticales/construccion/frontend/src/modules/contabilidad/
framework: Angular
status: pending
note: Reutiliza componentes de core_financial
components:
- name: CatalogoCuentasComponent
file: apps/verticales/construccion/frontend/src/modules/contabilidad/components/catalogo-cuentas.component.ts
status: pending
requirement: RF-CONT-001
- name: PolizasListComponent
file: apps/verticales/construccion/frontend/src/modules/contabilidad/components/polizas-list.component.ts
status: pending
requirement: RF-CONT-002
- name: PolizaFormComponent
file: apps/verticales/construccion/frontend/src/modules/contabilidad/components/poliza-form.component.ts
status: pending
requirement: RF-CONT-002
- name: BalanzaComponent
file: apps/verticales/construccion/frontend/src/modules/contabilidad/components/balanza.component.ts
status: pending
requirement: RF-CONT-003
- name: EstadosFinancierosComponent
file: apps/verticales/construccion/frontend/src/modules/contabilidad/components/estados-financieros.component.ts
status: pending
requirement: RF-CONT-003
- name: CentrosCostoComponent
file: apps/verticales/construccion/frontend/src/modules/contabilidad/components/centros-costo.component.ts
status: pending
requirement: RF-CONT-004
# =============================================================================
# DEPENDENCIAS
# =============================================================================
dependencies:
depends_on:
# Dependencias de core
- module: MGN-010
type: hard
reason: Reutiliza funcionalidad base de contabilidad (65%)
- module: MGN-001
type: hard
reason: Autenticacion requerida
- module: MGN-004
type: hard
reason: Aislamiento por tenant
- module: MGN-005
type: soft
reason: Catalogos de monedas, tipos cuenta
# Dependencias del vertical construccion
- module: MAE-002
type: hard
reason: Vinculacion con obras para centros de costo y reportes
- module: MAE-004
type: hard
reason: Generacion de polizas desde estimaciones
- module: MAE-005
type: soft
reason: Generacion de polizas desde subcontratos
required_by:
- module: MAE-009
type: soft
reason: Tesoreria requiere polizas contables
- module: MAE-010
type: soft
reason: Reportes financieros consolidan informacion contable
# =============================================================================
# INTEGRACIONES
# =============================================================================
integrations:
- module: MAE-004
name: Estimaciones
integration_points:
- Generacion automatica de polizas desde estimaciones
- Contabilizacion de anticipos y retenciones
- Vinculacion estimacion -> poliza -> obra
- module: MAE-002
name: Obras
integration_points:
- Centros de costo por obra
- Balanzas y estados financieros por obra
- Comparativos presupuesto vs real
- module: MAE-005
name: Subcontratos
integration_points:
- Polizas de subcontratos
- Retenciones a subcontratistas
# =============================================================================
# METRICAS
# =============================================================================
metrics:
story_points:
estimated: 30
actual: null
note: Reducido vs MGN-010 (45) por reutilizacion del 65%
documentation:
requirements: 4
specifications: 0
user_stories: 0
files:
database: 5
backend: 15
frontend: 8
total: 28
reused_from_core: 30
reusability:
core_tables_reused: 10
core_services_reused: 6
core_endpoints_reused: 11
new_tables: 3
new_services: 5
new_endpoints: 14
# =============================================================================
# HISTORIAL
# =============================================================================
history:
- date: "2025-12-06"
action: "Creacion de estructura GAMILIT"
author: Requirements-Analyst
changes:
- "Creacion de TRACEABILITY.yml para MAE-008"
- "Definicion de estructura basada en MGN-010"
- "Definicion de reutilizacion del 65% de core"
- "Definicion de 4 RF especificos de construccion"
- "RF-CONT-001: Catalogo de Cuentas Contables"
- "RF-CONT-002: Polizas Contables"
- "RF-CONT-003: Balanzas y Estados Financieros"
- "RF-CONT-004: Centro de Costos"
- "Definicion de integraciones con MAE-002, MAE-004, MAE-005"