- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
396 lines
13 KiB
Markdown
396 lines
13 KiB
Markdown
# ANALISIS DE ESTRUCTURA DE DOCUMENTACION - ERP Suite
|
|
|
|
**Fecha:** 2025-12-05
|
|
**Agente:** Requirements-Analyst
|
|
**Referencia:** Filosofia GAMILIT
|
|
|
|
---
|
|
|
|
## 1. PROBLEMA IDENTIFICADO
|
|
|
|
La documentacion de ERP Suite **NO cumple** con la filosofia de documentacion establecida en GAMILIT. La estructura actual esta orientada a **tipos de documento** en lugar de **modulos funcionales**, lo que dificulta:
|
|
|
|
1. **Trazabilidad:** No hay conexion clara RF -> ET -> US -> Codigo
|
|
2. **Inventarios:** No existen inventarios consolidados de objetos
|
|
3. **Dependencias:** No hay grafo de dependencias documentado
|
|
4. **Localizacion:** Dificil encontrar toda la informacion de un modulo
|
|
5. **Conflictos:** Riesgo de duplicar objetos sin detectarlo
|
|
|
|
---
|
|
|
|
## 2. COMPARATIVA GAMILIT vs ERP Suite
|
|
|
|
### 2.1 Estructura GAMILIT (CORRECTA)
|
|
|
|
```
|
|
docs/
|
|
├── 01-fase-alcance-inicial/
|
|
│ └── EAI-001-fundamentos/ <- MODULO AUTOCONTENIDO
|
|
│ ├── _MAP.md <- Indice con metricas
|
|
│ ├── README.md <- Descripcion epica
|
|
│ ├── requerimientos/ <- RF del modulo
|
|
│ │ ├── RF-AUTH-001.md
|
|
│ │ └── RF-AUTH-002.md
|
|
│ ├── especificaciones/ <- ET del modulo
|
|
│ │ ├── ET-AUTH-001.md
|
|
│ │ └── ET-AUTH-002.md
|
|
│ ├── historias-usuario/ <- US del modulo
|
|
│ │ ├── US-FUND-001.md
|
|
│ │ └── US-FUND-002.md
|
|
│ └── implementacion/
|
|
│ └── TRACEABILITY.yml <- TRAZABILIDAD COMPLETA
|
|
│
|
|
├── 90-transversal/
|
|
│ └── inventarios/ <- INVENTARIOS GLOBALES
|
|
│ ├── DATABASE_INVENTORY.yml
|
|
│ ├── BACKEND_INVENTORY.yml
|
|
│ ├── FRONTEND_INVENTORY.yml
|
|
│ ├── TRACEABILITY_MATRIX.yml
|
|
│ └── DEPENDENCY_GRAPH.yml
|
|
│
|
|
└── orchestration/
|
|
└── inventarios/ <- INVENTARIOS OPERACIONALES
|
|
├── MASTER_INVENTORY.yml
|
|
├── SEEDS_INVENTORY.yml
|
|
└── TEST_COVERAGE.yml
|
|
```
|
|
|
|
**Filosofia:** Todo lo de un modulo esta JUNTO. Inventarios GLOBALES para evitar duplicados.
|
|
|
|
### 2.2 Estructura ERP Suite Actual (INCORRECTA)
|
|
|
|
```
|
|
apps/erp-core/docs/
|
|
├── 02-definicion-modulos/ <- Solo READMEs genericos
|
|
│ ├── INDICE-MODULOS.md
|
|
│ └── MGN-001-auth/
|
|
│ └── README.md <- Solo descripcion
|
|
│
|
|
├── 03-requerimientos/ <- RF separados por tipo
|
|
│ └── RF-auth/
|
|
│ └── RF-AUTH-001.md
|
|
│
|
|
├── 04-modelado/
|
|
│ ├── especificaciones-tecnicas/ <- ET separados
|
|
│ │ ├── backend/
|
|
│ │ └── frontend/
|
|
│ └── database-design/ <- DDL separados
|
|
│
|
|
├── 05-user-stories/ <- US separadas
|
|
│ └── mgn-001/
|
|
│ └── US-MGN-001-001.md
|
|
│
|
|
└── 08-epicas/ <- Epicas separadas
|
|
└── EPIC-MGN-001-auth.md
|
|
|
|
# NO EXISTEN:
|
|
# - _MAP.md por modulo
|
|
# - TRACEABILITY.yml por modulo
|
|
# - Inventarios globales (DATABASE_INVENTORY, BACKEND_INVENTORY)
|
|
# - DEPENDENCY_GRAPH.yml
|
|
# - MASTER_INVENTORY.yml
|
|
```
|
|
|
|
**Problema:** Informacion DISPERSA. Sin trazabilidad. Sin inventarios.
|
|
|
|
---
|
|
|
|
## 3. GAPS CRITICOS IDENTIFICADOS
|
|
|
|
### 3.1 Estructura
|
|
|
|
| Elemento | GAMILIT | ERP Suite | Gap |
|
|
|----------|---------|-----------|-----|
|
|
| Modulos autocontenidos | Si | No | CRITICO |
|
|
| _MAP.md por modulo | Si | No | CRITICO |
|
|
| TRACEABILITY.yml por epica | Si | No | CRITICO |
|
|
| Inventarios globales | 4 archivos | 0 | CRITICO |
|
|
| DEPENDENCY_GRAPH.yml | Si | No | ALTO |
|
|
| MASTER_INVENTORY.yml | Si | No | ALTO |
|
|
| Trazabilidad RF->Codigo | 100% | 0% | CRITICO |
|
|
|
|
### 3.2 Contenido
|
|
|
|
| Elemento | GAMILIT | ERP Suite | Gap |
|
|
|----------|---------|-----------|-----|
|
|
| RF con paths a implementacion | Si | No | ALTO |
|
|
| ET con endpoints especificos | Si | Parcial | MEDIO |
|
|
| US con criterios Gherkin | 100% | 30% | ALTO |
|
|
| Metricas por modulo | Si | No | ALTO |
|
|
| Bug fixes documentados | Si | No | MEDIO |
|
|
| Changelog por modulo | Si | No | MEDIO |
|
|
|
|
### 3.3 Operacional
|
|
|
|
| Elemento | GAMILIT | ERP Suite |
|
|
|----------|---------|-----------|
|
|
| Ubicacion canonica de inventarios | orchestration/inventarios/ | No existe |
|
|
| Tests coverage tracking | TEST_COVERAGE.yml | No existe |
|
|
| Seeds inventory | SEEDS_INVENTORY.yml | No existe |
|
|
|
|
---
|
|
|
|
## 4. CONSECUENCIAS DE LA ESTRUCTURA ACTUAL
|
|
|
|
1. **Duplicacion de objetos:** Sin inventario global, se pueden crear tablas/endpoints duplicados
|
|
2. **Conflictos de nombres:** Sin DEPENDENCY_GRAPH, no se detectan colisiones
|
|
3. **Implementacion sin traza:** Codigo sin referencia a RF/US
|
|
4. **Perdida de contexto:** Desarrollador debe buscar en 5+ carpetas para entender un modulo
|
|
5. **Metricas perdidas:** No hay forma de medir avance real vs planificado
|
|
6. **Deuda tecnica oculta:** Sin tracking de bugs/fixes
|
|
|
|
---
|
|
|
|
## 5. PLAN DE REESTRUCTURACION PROPUESTO
|
|
|
|
### Fase 1: Crear Estructura Base (Prioridad Critica)
|
|
|
|
1. **Crear carpeta orchestration/inventarios/**
|
|
- MASTER_INVENTORY.yml
|
|
- DATABASE_INVENTORY.yml
|
|
- BACKEND_INVENTORY.yml
|
|
- FRONTEND_INVENTORY.yml
|
|
- DEPENDENCY_GRAPH.yml
|
|
- TRACEABILITY_MATRIX.yml
|
|
|
|
2. **Reestructurar docs/ por modulos:**
|
|
```
|
|
apps/erp-core/docs/
|
|
├── 01-fase-foundation/
|
|
│ ├── MGN-001-auth/ <- TODO junto
|
|
│ │ ├── _MAP.md
|
|
│ │ ├── README.md
|
|
│ │ ├── requerimientos/
|
|
│ │ ├── especificaciones/
|
|
│ │ ├── historias-usuario/
|
|
│ │ └── implementacion/
|
|
│ │ └── TRACEABILITY.yml
|
|
│ ├── MGN-002-users/
|
|
│ ├── MGN-003-roles/
|
|
│ └── MGN-004-tenants/
|
|
│
|
|
├── 02-fase-core-business/
|
|
│ ├── MGN-005-catalogs/
|
|
│ ├── MGN-010-financial/
|
|
│ └── ...
|
|
│
|
|
└── 90-transversal/
|
|
└── inventarios/ <- Inventarios de docs
|
|
```
|
|
|
|
### Fase 2: Migrar Documentacion Existente
|
|
|
|
1. Mover RF de `03-requerimientos/` a `MGN-XXX/requerimientos/`
|
|
2. Mover ET de `04-modelado/` a `MGN-XXX/especificaciones/`
|
|
3. Mover US de `05-user-stories/` a `MGN-XXX/historias-usuario/`
|
|
4. Eliminar estructura dispersa
|
|
|
|
### Fase 3: Crear Trazabilidad
|
|
|
|
1. Crear TRACEABILITY.yml por cada modulo MGN-XXX
|
|
2. Crear _MAP.md por cada modulo
|
|
3. Poblar inventarios globales
|
|
|
|
### Fase 4: Aplicar a Verticales
|
|
|
|
1. Replicar estructura en verticales/construccion/
|
|
2. Replicar en otras verticales
|
|
|
|
---
|
|
|
|
## 6. ESTRUCTURA OBJETIVO FINAL
|
|
|
|
```
|
|
erp-suite/
|
|
├── apps/
|
|
│ ├── erp-core/
|
|
│ │ ├── docs/
|
|
│ │ │ ├── 01-fase-foundation/
|
|
│ │ │ │ ├── _MAP.md <- Indice de fase
|
|
│ │ │ │ ├── README.md
|
|
│ │ │ │ ├── MGN-001-auth/
|
|
│ │ │ │ │ ├── _MAP.md <- Indice modulo (metricas)
|
|
│ │ │ │ │ ├── README.md <- Descripcion
|
|
│ │ │ │ │ ├── requerimientos/
|
|
│ │ │ │ │ │ ├── RF-AUTH-001.md
|
|
│ │ │ │ │ │ └── RF-AUTH-002.md
|
|
│ │ │ │ │ ├── especificaciones/
|
|
│ │ │ │ │ │ ├── ET-AUTH-001-backend.md
|
|
│ │ │ │ │ │ ├── ET-AUTH-002-frontend.md
|
|
│ │ │ │ │ │ └── ET-AUTH-003-database.md
|
|
│ │ │ │ │ ├── historias-usuario/
|
|
│ │ │ │ │ │ ├── US-AUTH-001.md
|
|
│ │ │ │ │ │ └── US-AUTH-002.md
|
|
│ │ │ │ │ └── implementacion/
|
|
│ │ │ │ │ └── TRACEABILITY.yml <- RF->ET->US->Codigo
|
|
│ │ │ │ ├── MGN-002-users/
|
|
│ │ │ │ ├── MGN-003-roles/
|
|
│ │ │ │ └── MGN-004-tenants/
|
|
│ │ │ │
|
|
│ │ │ ├── 02-fase-core-business/
|
|
│ │ │ │ └── [misma estructura]
|
|
│ │ │ │
|
|
│ │ │ ├── 03-fase-extended/
|
|
│ │ │ │ └── [misma estructura]
|
|
│ │ │ │
|
|
│ │ │ ├── 04-fase-saas/
|
|
│ │ │ │ └── [misma estructura]
|
|
│ │ │ │
|
|
│ │ │ └── 90-transversal/
|
|
│ │ │ ├── inventarios/
|
|
│ │ │ │ └── README.md <- Referencia a orchestration
|
|
│ │ │ └── templates/
|
|
│ │ │
|
|
│ │ └── orchestration/
|
|
│ │ └── inventarios/ <- INVENTARIOS CANONICOS
|
|
│ │ ├── MASTER_INVENTORY.yml
|
|
│ │ ├── DATABASE_INVENTORY.yml
|
|
│ │ ├── BACKEND_INVENTORY.yml
|
|
│ │ ├── FRONTEND_INVENTORY.yml
|
|
│ │ ├── DEPENDENCY_GRAPH.yml
|
|
│ │ ├── TRACEABILITY_MATRIX.yml
|
|
│ │ ├── SEEDS_INVENTORY.yml
|
|
│ │ └── TEST_COVERAGE.yml
|
|
│ │
|
|
│ └── verticales/
|
|
│ └── construccion/
|
|
│ ├── docs/
|
|
│ │ └── [misma estructura]
|
|
│ └── orchestration/
|
|
│ └── inventarios/
|
|
```
|
|
|
|
---
|
|
|
|
## 7. EJEMPLO DE TRACEABILITY.yml PARA ERP
|
|
|
|
```yaml
|
|
# TRACEABILITY.yml - MGN-001: Autenticacion
|
|
# Matriz de trazabilidad: Documentacion -> Codigo
|
|
|
|
epic_code: MGN-001
|
|
epic_name: Autenticacion
|
|
phase: 1
|
|
phase_name: Foundation
|
|
story_points: 34
|
|
status: ready
|
|
|
|
# DOCUMENTACION
|
|
documentation:
|
|
requirements:
|
|
- id: RF-AUTH-001
|
|
file: requerimientos/RF-AUTH-001-login.md
|
|
title: Login con Email/Password
|
|
status: documented
|
|
|
|
- id: RF-AUTH-002
|
|
file: requerimientos/RF-AUTH-002-tokens.md
|
|
title: Manejo de Tokens JWT
|
|
status: documented
|
|
|
|
specifications:
|
|
- id: ET-AUTH-001
|
|
file: especificaciones/ET-AUTH-001-backend.md
|
|
rf: RF-AUTH-001
|
|
title: Backend Implementation
|
|
status: documented
|
|
|
|
user_stories:
|
|
- id: US-MGN001-001
|
|
file: historias-usuario/US-MGN001-001-login.md
|
|
title: Login con Email/Password
|
|
rf: [RF-AUTH-001]
|
|
story_points: 8
|
|
status: ready
|
|
|
|
# IMPLEMENTACION
|
|
implementation:
|
|
database:
|
|
schemas:
|
|
- name: core_auth
|
|
path: apps/database/ddl/schemas/core_auth/
|
|
tables:
|
|
- name: users_auth
|
|
file: apps/database/ddl/schemas/core_auth/tables/users_auth.sql
|
|
rf: RF-AUTH-001
|
|
- name: sessions
|
|
file: apps/database/ddl/schemas/core_auth/tables/sessions.sql
|
|
rf: RF-AUTH-002
|
|
functions:
|
|
- name: validate_password
|
|
file: apps/database/ddl/schemas/core_auth/functions/validate_password.sql
|
|
rf: RF-AUTH-001
|
|
|
|
backend:
|
|
module: auth
|
|
path: apps/backend/src/modules/auth/
|
|
services:
|
|
- name: auth.service.ts
|
|
methods: [login, logout, refresh]
|
|
rf: [RF-AUTH-001, RF-AUTH-002]
|
|
controllers:
|
|
- name: auth.controller.ts
|
|
endpoints:
|
|
- POST /api/v1/auth/login
|
|
- POST /api/v1/auth/logout
|
|
- POST /api/v1/auth/refresh
|
|
rf: [RF-AUTH-001, RF-AUTH-002]
|
|
guards:
|
|
- name: jwt-auth.guard.ts
|
|
rf: RF-AUTH-002
|
|
|
|
frontend:
|
|
feature: auth
|
|
path: apps/frontend/src/features/auth/
|
|
components:
|
|
- LoginForm.tsx
|
|
- LogoutButton.tsx
|
|
stores:
|
|
- authStore.ts
|
|
|
|
# DEPENDENCIAS
|
|
dependencies:
|
|
depends_on: [] # Primera epica
|
|
required_by: [MGN-002, MGN-003, MGN-004, ALL]
|
|
|
|
# METRICAS
|
|
metrics:
|
|
story_points:
|
|
estimated: 34
|
|
actual: null
|
|
variance: null
|
|
coverage:
|
|
unit_tests: 0%
|
|
integration_tests: 0%
|
|
e2e_tests: 0%
|
|
```
|
|
|
|
---
|
|
|
|
## 8. PROXIMOS PASOS INMEDIATOS
|
|
|
|
1. [ ] Crear orchestration/inventarios/ en erp-core
|
|
2. [ ] Crear MASTER_INVENTORY.yml inicial
|
|
3. [ ] Crear DATABASE_INVENTORY.yml con objetos existentes
|
|
4. [ ] Reestructurar MGN-001 como ejemplo completo
|
|
5. [ ] Crear _MAP.md para MGN-001
|
|
6. [ ] Crear TRACEABILITY.yml para MGN-001
|
|
7. [ ] Documentar proceso en guia de desarrollo
|
|
|
|
---
|
|
|
|
## 9. BENEFICIOS ESPERADOS
|
|
|
|
1. **Trazabilidad completa:** Cualquier linea de codigo tiene traza a RF
|
|
2. **Prevencion de duplicados:** Inventarios detectan colisiones
|
|
3. **Localizacion rapida:** Todo de un modulo en una carpeta
|
|
4. **Metricas precisas:** Story points, coverage, bugs por modulo
|
|
5. **Onboarding facil:** Nuevo desarrollador entiende modulo rapido
|
|
6. **Mantenimiento eficiente:** Cambio en RF actualiza traza automatica
|
|
|
|
---
|
|
|
|
**Generado por:** Requirements-Analyst
|
|
**Fecha:** 2025-12-05
|
|
**Accion requerida:** Aprobar plan de reestructuracion
|