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
416 lines
11 KiB
Markdown
416 lines
11 KiB
Markdown
# SIMCO: DOCUMENTAR
|
|
|
|
**Versión:** 1.0.0
|
|
**Fecha:** 2025-12-08
|
|
**Aplica a:** TODO agente al completar cualquier tarea
|
|
**Prioridad:** OBLIGATORIA
|
|
|
|
---
|
|
|
|
## RESUMEN EJECUTIVO
|
|
|
|
> **"Si no está documentado, no existe."**
|
|
> Toda tarea debe actualizar inventarios, trazas y documentación relevante.
|
|
|
|
---
|
|
|
|
## PRINCIPIO FUNDAMENTAL
|
|
|
|
```
|
|
╔══════════════════════════════════════════════════════════════════════╗
|
|
║ DOCUMENTACIÓN PRIMERO, IMPLEMENTACIÓN DESPUÉS ║
|
|
║ ║
|
|
║ 1. Verificar docs/ existente ANTES de implementar ║
|
|
║ 2. Actualizar docs/ si hay cambios de diseño ║
|
|
║ 3. Implementar código ║
|
|
║ 4. Actualizar inventarios y trazas DESPUÉS de implementar ║
|
|
╚══════════════════════════════════════════════════════════════════════╝
|
|
```
|
|
|
|
---
|
|
|
|
## CHECKLIST DE DOCUMENTACIÓN
|
|
|
|
```
|
|
AL INICIAR TAREA
|
|
├── [ ] 1. Leer documentación existente en @DOCS
|
|
├── [ ] 2. Verificar si hay especificaciones relacionadas
|
|
└── [ ] 3. Identificar si docs/ necesita actualización
|
|
|
|
DURANTE IMPLEMENTACIÓN
|
|
├── [ ] 4. Documentar inline (comentarios, JSDoc, COMMENT ON)
|
|
└── [ ] 5. Actualizar docs/ si el diseño cambia
|
|
|
|
AL COMPLETAR TAREA
|
|
├── [ ] 6. Actualizar inventario correspondiente (@INVENTORY)
|
|
├── [ ] 7. Actualizar traza correspondiente (@TRAZA_*)
|
|
├── [ ] 8. Actualizar @PROXIMA con siguiente paso
|
|
└── [ ] 9. Generar reporte de entrega (si aplica)
|
|
```
|
|
|
|
---
|
|
|
|
## TIPOS DE DOCUMENTACIÓN
|
|
|
|
### 1. Documentación Inline (en código)
|
|
|
|
**SQL - COMMENT ON:**
|
|
```sql
|
|
-- Comentar tabla
|
|
COMMENT ON TABLE {schema}.{tabla} IS
|
|
'{Descripción de la tabla y su propósito}';
|
|
|
|
-- Comentar columnas importantes
|
|
COMMENT ON COLUMN {schema}.{tabla}.{columna} IS
|
|
'{Descripción de la columna, valores válidos, restricciones}';
|
|
```
|
|
|
|
**TypeScript - JSDoc/TSDoc:**
|
|
```typescript
|
|
/**
|
|
* {NombreClase} - {descripción breve}
|
|
*
|
|
* @description {descripción detallada del propósito}
|
|
* @example
|
|
* ```typescript
|
|
* const service = new UserService();
|
|
* await service.findOne('uuid');
|
|
* ```
|
|
*/
|
|
export class UserService {
|
|
/**
|
|
* Busca un usuario por ID
|
|
*
|
|
* @param id - UUID del usuario
|
|
* @returns Usuario encontrado
|
|
* @throws NotFoundException si no existe
|
|
*/
|
|
async findOne(id: string): Promise<UserEntity> {
|
|
// ...
|
|
}
|
|
}
|
|
```
|
|
|
|
**React - Documentación de Props:**
|
|
```typescript
|
|
/**
|
|
* UserProfile - Muestra información del perfil de usuario
|
|
*
|
|
* @component
|
|
* @example
|
|
* ```tsx
|
|
* <UserProfile userId="123" showAvatar={true} />
|
|
* ```
|
|
*/
|
|
interface UserProfileProps {
|
|
/** ID único del usuario */
|
|
userId: string;
|
|
/** Si mostrar avatar o no */
|
|
showAvatar?: boolean;
|
|
/** Callback cuando se actualiza el perfil */
|
|
onUpdate?: (user: User) => void;
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 2. Inventarios (@INVENTORY)
|
|
|
|
**Ubicación:** `orchestration/inventarios/MASTER_INVENTORY.yml`
|
|
|
|
**Estructura para Database:**
|
|
```yaml
|
|
database:
|
|
schemas:
|
|
{schema_name}:
|
|
status: "✅ Completo" | "🔄 En Progreso" | "📋 Planificado"
|
|
tables:
|
|
- name: {nombre_tabla}
|
|
file: "@DDL/{schema}/tables/{archivo}.sql"
|
|
descripcion: "{descripción breve}"
|
|
columnas: {N}
|
|
indexes: {N}
|
|
constraints:
|
|
fk: {N}
|
|
check: {N}
|
|
unique: {N}
|
|
triggers: {N}
|
|
rls_policies: {N}
|
|
relaciones:
|
|
- tabla: "{schema}.{tabla_relacionada}"
|
|
tipo: "FK"
|
|
columna: "{columna}"
|
|
created_by: "{Agente}"
|
|
fecha_creacion: "{YYYY-MM-DD}"
|
|
last_modified: "{YYYY-MM-DD}"
|
|
status: "✅ Completo"
|
|
```
|
|
|
|
**Estructura para Backend:**
|
|
```yaml
|
|
backend:
|
|
modules:
|
|
{nombre_modulo}:
|
|
status: "✅ Completo" | "🔄 En Progreso"
|
|
entities:
|
|
- name: "{NombreEntity}"
|
|
file: "@BACKEND/{modulo}/entities/{archivo}.ts"
|
|
related_table: "{schema}.{tabla}"
|
|
status: "✅ Completo"
|
|
|
|
services:
|
|
- name: "{NombreService}"
|
|
file: "@BACKEND/{modulo}/services/{archivo}.ts"
|
|
methods: [{lista de métodos}]
|
|
status: "✅ Completo"
|
|
|
|
controllers:
|
|
- name: "{NombreController}"
|
|
file: "@BACKEND/{modulo}/controllers/{archivo}.ts"
|
|
endpoints:
|
|
- method: "GET"
|
|
path: "/api/{recurso}"
|
|
descripcion: "{descripción}"
|
|
- method: "POST"
|
|
path: "/api/{recurso}"
|
|
descripcion: "{descripción}"
|
|
status: "✅ Completo"
|
|
|
|
dto:
|
|
- name: "{NombreDto}"
|
|
file: "@BACKEND/{modulo}/dto/{archivo}.ts"
|
|
tipo: "create" | "update" | "response"
|
|
status: "✅ Completo"
|
|
```
|
|
|
|
**Estructura para Frontend:**
|
|
```yaml
|
|
frontend:
|
|
apps:
|
|
{nombre_app}:
|
|
status: "✅ Completo" | "🔄 En Progreso"
|
|
pages:
|
|
- name: "{NombrePage}"
|
|
file: "@FRONTEND/{app}/pages/{archivo}.tsx"
|
|
ruta: "/{path}"
|
|
status: "✅ Completo"
|
|
|
|
components:
|
|
- name: "{NombreComponente}"
|
|
file: "@FRONTEND/{app}/components/{archivo}.tsx"
|
|
tipo: "ui" | "form" | "layout" | "feature"
|
|
status: "✅ Completo"
|
|
|
|
hooks:
|
|
- name: "use{Nombre}"
|
|
file: "@FRONTEND/{app}/hooks/{archivo}.ts"
|
|
descripcion: "{descripción}"
|
|
status: "✅ Completo"
|
|
```
|
|
|
|
---
|
|
|
|
### 3. Trazas (@TRAZA_*)
|
|
|
|
**Ubicación por capa:**
|
|
- Database: `@TRAZA_DB` → `orchestration/trazas/TRAZA-TAREAS-DATABASE.md`
|
|
- Backend: `@TRAZA_BE` → `orchestration/trazas/TRAZA-TAREAS-BACKEND.md`
|
|
- Frontend: `@TRAZA_FE` → `orchestration/trazas/TRAZA-TAREAS-FRONTEND.md`
|
|
|
|
**Formato de entrada:**
|
|
```markdown
|
|
## [{TASK-ID}] {Descripción breve de la tarea}
|
|
|
|
**Fecha:** {YYYY-MM-DD HH:MM}
|
|
**Estado:** ✅ Completado | 🔄 En Progreso | ❌ Bloqueado
|
|
**Agente:** {Nombre-Agente}
|
|
**Duración:** {X}h (estimado: {Y}h)
|
|
|
|
### Descripción
|
|
{Descripción detallada de lo que se hizo}
|
|
|
|
### Archivos Creados
|
|
- `{ruta_completa_1}`
|
|
- `{ruta_completa_2}`
|
|
|
|
### Archivos Modificados
|
|
- `{ruta_completa_1}` - {descripción del cambio}
|
|
- `{ruta_completa_2}` - {descripción del cambio}
|
|
|
|
### Especificaciones Implementadas
|
|
- **{Elemento 1}:** {detalle}
|
|
- **{Elemento 2}:** {detalle}
|
|
|
|
### Validaciones Ejecutadas
|
|
- [x] Build: ✅ Pasa
|
|
- [x] Lint: ✅ Pasa
|
|
- [x] Tests: ✅ Pasan | ⏭️ N/A
|
|
- [x] Carga limpia: ✅ Pasa | ⏭️ N/A
|
|
- [x] Inventario: ✅ Actualizado
|
|
- [x] Sin duplicados: ✅ Verificado
|
|
|
|
### Convenciones Seguidas
|
|
- ✅ Nomenclatura según ESTANDARES-NOMENCLATURA-BASE.md
|
|
- ✅ Ubicación correcta de archivos
|
|
- ✅ Documentación inline incluida
|
|
|
|
### Problemas Encontrados
|
|
{Lista de problemas o "Ninguno"}
|
|
|
|
### Próximos Pasos
|
|
1. {Siguiente tarea relacionada}
|
|
2. {Otra tarea dependiente}
|
|
|
|
### Notas
|
|
{Observaciones adicionales}
|
|
|
|
---
|
|
```
|
|
|
|
---
|
|
|
|
### 4. Próxima Acción (@PROXIMA)
|
|
|
|
**Ubicación:** `orchestration/PROXIMA-ACCION.md`
|
|
|
|
**Actualizar al completar cada tarea:**
|
|
```markdown
|
|
# PRÓXIMA ACCIÓN
|
|
|
|
**Fecha actualización:** {YYYY-MM-DD HH:MM}
|
|
**Actualizado por:** {Agente}
|
|
**Proyecto:** {PROJECT_NAME}
|
|
|
|
## Estado del Desarrollo
|
|
|
|
**Fase actual:** {fase}
|
|
**Épica actual:** {EPIC-ID} - {nombre}
|
|
**Progreso:** {X}/{Y} tareas ({Z}%)
|
|
|
|
## Siguiente Tarea Prioritaria
|
|
|
|
**ID:** {TASK-ID}
|
|
**Tipo:** Database | Backend | Frontend
|
|
**Descripción:** {descripción}
|
|
**Especificación:** {archivo o referencia}
|
|
**Dependencias:** {lista de dependencias completadas}
|
|
|
|
### Pre-requisitos
|
|
- [x] {dependencia completada}
|
|
- [x] {otra dependencia}
|
|
|
|
### Contexto
|
|
{Información relevante para continuar}
|
|
|
|
## Tareas Pendientes (próximas)
|
|
|
|
1. **{TASK-ID}:** {descripción corta}
|
|
2. **{TASK-ID}:** {descripción corta}
|
|
3. **{TASK-ID}:** {descripción corta}
|
|
|
|
## Bloqueadores Activos
|
|
{Lista de bloqueadores o "Ninguno"}
|
|
|
|
## Notas para Siguiente Sesión
|
|
{Información importante que no debe perderse}
|
|
```
|
|
|
|
---
|
|
|
|
### 5. Reporte de Entrega (para tareas complejas)
|
|
|
|
**Template de reporte:**
|
|
```markdown
|
|
# Reporte de Entrega: {TASK-ID}
|
|
|
|
**Fecha:** {YYYY-MM-DD}
|
|
**Agente:** {Nombre}
|
|
**Estado:** ✅ COMPLETADO
|
|
|
|
## Resumen Ejecutivo
|
|
|
|
{1-2 párrafos describiendo qué se hizo y el resultado}
|
|
|
|
## Archivos Generados
|
|
|
|
### Código
|
|
| Archivo | Tipo | Líneas | Estado |
|
|
|---------|------|--------|--------|
|
|
| {archivo1} | {tipo} | {N} | ✅ |
|
|
| {archivo2} | {tipo} | {N} | ✅ |
|
|
|
|
### Documentación
|
|
- @INVENTORY actualizado
|
|
- @TRAZA_{CAPA} actualizada
|
|
- @PROXIMA actualizado
|
|
|
|
## Especificaciones Implementadas
|
|
|
|
| Elemento | Solicitado | Implementado | Estado |
|
|
|----------|------------|--------------|--------|
|
|
| {elem1} | {spec} | {impl} | ✅ |
|
|
| {elem2} | {spec} | {impl} | ✅ |
|
|
|
|
## Validaciones
|
|
|
|
| Validación | Resultado |
|
|
|------------|-----------|
|
|
| Build | ✅ Pasa |
|
|
| Lint | ✅ Pasa |
|
|
| Tests | ✅ Pasan |
|
|
| Coherencia | ✅ OK |
|
|
|
|
## Métricas
|
|
|
|
- **Tiempo estimado:** {X}h
|
|
- **Tiempo real:** {Y}h
|
|
- **Archivos creados:** {N}
|
|
- **Archivos modificados:** {M}
|
|
|
|
## Próximos Pasos Recomendados
|
|
|
|
1. {paso 1}
|
|
2. {paso 2}
|
|
3. {paso 3}
|
|
```
|
|
|
|
---
|
|
|
|
## DOCUMENTACIÓN POR TIPO DE TAREA
|
|
|
|
| Tipo de Tarea | Inline | Inventario | Traza | @PROXIMA | Reporte |
|
|
|---------------|--------|------------|-------|----------|---------|
|
|
| Nueva tabla | COMMENT ON | ✅ DB | ✅ @TRAZA_DB | ✅ | Opcional |
|
|
| Nueva entity | JSDoc | ✅ BE | ✅ @TRAZA_BE | ✅ | Opcional |
|
|
| Nuevo service | JSDoc | ✅ BE | ✅ @TRAZA_BE | ✅ | Opcional |
|
|
| Nuevo componente | TSDoc | ✅ FE | ✅ @TRAZA_FE | ✅ | Opcional |
|
|
| Bug fix | Comentario | Actualizar | ✅ Afectada | ✅ | Opcional |
|
|
| Feature completa | Todo | ✅ Todas | ✅ Todas | ✅ | ✅ Recomendado |
|
|
| Refactor grande | Comentarios | ✅ Afectadas | ✅ Afectadas | ✅ | ✅ Recomendado |
|
|
|
|
---
|
|
|
|
## ERRORES COMUNES
|
|
|
|
| Error | Causa | Solución |
|
|
|-------|-------|----------|
|
|
| Inventario desactualizado | Olvidó actualizar | Incluir en checklist final |
|
|
| Traza incompleta | Prisa por terminar | Usar template de traza |
|
|
| @PROXIMA no actualizado | No pensó en continuidad | SIEMPRE actualizar al terminar |
|
|
| Sin documentación inline | "El código es obvio" | Comentar TODO lo público |
|
|
| Reporte faltante | "Era tarea pequeña" | Reporte mínimo siempre |
|
|
|
|
---
|
|
|
|
## REFERENCIAS
|
|
|
|
- **Crear archivos:** @CREAR (SIMCO-CREAR.md)
|
|
- **Validar:** @VALIDAR (SIMCO-VALIDAR.md)
|
|
- **Estándares de documentación:** @DIRECTIVAS/ESTANDAR-DOCUMENTACION.md
|
|
- **Documentación obligatoria:** @DIRECTIVAS/DIRECTIVA-DOCUMENTACION-OBLIGATORIA.md
|
|
- **Documentación Agile:** @DIRECTIVAS/DIRECTIVA-DOCUMENTACION-AGILE.md
|
|
|
|
---
|
|
|
|
**Versión:** 1.0.0 | **Sistema:** SIMCO | **Mantenido por:** Tech Lead
|