# Architecture Decision Records (ADR)

Documentacion de decisiones arquitectonicas importantes para el ERP de Construccion.

**Proyecto:** ERP Construccion
**Alineado con:** ERP Generico
**Fecha de actualizacion:** 2025-11-24

---

## Indice de ADRs

| ADR | Titulo | Estado | Fecha |
|-----|--------|--------|-------|
| [ADR-001](./ADR-001-stack-tecnologico.md) | Stack Tecnologico | Aceptada | 2025-11-24 |
| [ADR-002](./ADR-002-arquitectura-modular.md) | Arquitectura Modular Monorepo | Aceptada | 2025-11-24 |
| [ADR-003](./ADR-003-multi-tenancy.md) | Multi-Tenancy Schema-Level | Aceptada | 2025-11-24 |
| [ADR-004](./ADR-004-sistema-constantes-ssot.md) | Sistema de Constantes SSOT | Aceptada | 2025-11-24 |
| [ADR-005](./ADR-005-path-aliases.md) | Path Aliases | Aceptada | 2025-11-24 |
| [ADR-006](./ADR-006-rbac-sistema-permisos.md) | RBAC - Sistema de Permisos | Aceptada | 2025-11-24 |
| [ADR-007](./ADR-007-database-design.md) | Database Design Multi-Schema | Aceptada | 2025-11-24 |
| [ADR-008](./ADR-008-api-design.md) | API Design RESTful | Aceptada | 2025-11-24 |
| [ADR-009](./ADR-009-frontend-architecture.md) | Frontend Architecture - FSD | Aceptada | 2025-11-24 |
| [ADR-010](./ADR-010-testing-strategy.md) | Testing Strategy | Aceptada | 2025-11-24 |
| [ADR-011](./ADR-011-database-clean-load-strategy.md) | Database Clean Load Strategy | Aceptada | 2025-11-24 |
| [ADR-012](./ADR-012-complete-traceability-policy.md) | Politica de Trazabilidad Completa | Aceptada | 2025-11-24 |

---

## Resumen de Decisiones

### Fundamentos (ADR-001 a ADR-003)
- **Stack:** Node.js 20+ LTS, React 18+, PostgreSQL 15+ con PostGIS
- **Arquitectura:** Monorepo con dependencia de ERP Generico
- **Multi-tenancy:** Schema-level isolation (cada constructora un schema)

### Patrones de Desarrollo (ADR-004 a ADR-006)
- **SSOT:** Backend como unica fuente de verdad para constantes
- **Path Aliases:** `@shared`, `@modules`, `@construccion`, `@erp-generic`
- **RBAC:** Roles de construccion con RLS en PostgreSQL

### Data & API (ADR-007 a ADR-008)
- **Database:** Multi-schema por dominio (auth, core, construction, infonavit, estimates)
- **API:** RESTful con versionado, documentacion OpenAPI

### Frontend & Testing (ADR-009 a ADR-010)
- **Frontend:** Feature-Sliced Design con features por rol
- **Testing:** Piramide (Unit 80%, Integration 70%, E2E 60%)

### Politicas (ADR-011 a ADR-012)
- **Database:** Carga limpia (sin migrations incrementales)
- **Trazabilidad:** End-to-end obligatoria (RF -> ET -> BD -> Codigo)

---

## Alineacion con ERP Generico

Estos ADRs estan alineados con los ADRs del ERP Generico para garantizar:
- Reutilizacion del 61% de componentes
- Compatibilidad de schemas de base de datos
- Consistencia arquitectonica
- Facilidad de mantenimiento cruzado

**Referencia:** `/projects/erp-generic/docs/adr/`

---

## Formato de ADR

```markdown
# ADR-XXX: Titulo de la Decision

**Estado:** Propuesta | Aceptada | Rechazada | Deprecada
**Fecha:** YYYY-MM-DD
**Responsable:** Architecture-Analyst
**Proyecto:** ERP Construccion

## Contexto
Que problema estamos resolviendo?

## Decision
Que decidimos hacer?

## Justificacion
- Referencia a Gamilit
- Referencia a Odoo
- Alineacion con ERP Generico
- Especifico para Construccion

## Consecuencias
### Positivas
- ...
### Negativas
- ...

## Implementacion
### Acciones Requeridas
- [ ] Tarea 1
- [ ] Tarea 2

### Criterios de Aceptacion
- ...

## Referencias
- [ERP Generico ADR-XXX](...)
```

---

**Ultima actualizacion:** 2025-11-24
**Responsable:** Architecture-Analyst
