Add project documentation and architectural guidelines
- Created project overview document for UECKO application. - Added README file for project documentation structure. - Introduced template for architectural decision records (ADR). - Defined backend architecture guidelines. - Established conventions for project-wide consistency. - Documented data persistence architecture. - Outlined frontend architecture principles. - Developed testing strategy documentation. - Provided a general architecture overview. - Created guides for task closure and ChatGPT-Codex workflow. - Organized chat management guidelines for development projects. - Added template for current work status reporting.
This commit is contained in:
commit
e94d5e6c71
194
docs/Ficha del proyecto UECKO.md
Normal file
194
docs/Ficha del proyecto UECKO.md
Normal file
@ -0,0 +1,194 @@
|
||||
# Ficha del proyecto
|
||||
|
||||
## 1. Identificación
|
||||
|
||||
**Nombre del proyecto:**
|
||||
Aplicación de Control de Tiempos y Gestión UECKO
|
||||
|
||||
**Objetivo principal:**
|
||||
Desarrollar una aplicación para la gestión de tiempos, tareas, actividad, incidencias y procesos de Oficina Técnica y Oficina Comercial para Uecko. La aplicación debe centralizar la operativa de ambos módulos, conservar la trazabilidad y el histórico de la información y permitir la evolución funcional mediante nuevas versiones sin pérdida ni reconstrucción manual de datos.
|
||||
|
||||
**Estado actual:**
|
||||
En pruebas con datos demo
|
||||
|
||||
## 2. Repositorio
|
||||
|
||||
**Repositorio principal:**
|
||||
N/A
|
||||
|
||||
**Estructura general:**
|
||||
N/A
|
||||
|
||||
## 3. Stack tecnológico
|
||||
|
||||
**Backend:**
|
||||
N/A
|
||||
|
||||
**Frontend:**
|
||||
N/A
|
||||
|
||||
**Base de datos:**
|
||||
N/A
|
||||
|
||||
**Testing:**
|
||||
N/A
|
||||
|
||||
**Infraestructura / despliegue:**
|
||||
N/A
|
||||
|
||||
## 4. Arquitectura
|
||||
|
||||
**Estilo arquitectónico:**
|
||||
N/A
|
||||
|
||||
**Organización principal:**
|
||||
La aplicación se divide inicialmente en dos módulos funcionales:
|
||||
|
||||
* Oficina Comercial.
|
||||
* Oficina Técnica.
|
||||
|
||||
Existe además una base común transversal que contiene las reglas compartidas de arquitectura, personas, perfiles, permisos, tareas, contextos, imputación de tiempos, trazabilidad, actualización y continuidad de datos.
|
||||
|
||||
Cada módulo mantiene su responsabilidad funcional y es propietario de los datos que genera. Los flujos, campos y permisos específicos deben definirse en el documento funcional correspondiente a cada módulo.
|
||||
|
||||
La aplicación y la base de datos deben mantenerse separadas conceptualmente:
|
||||
|
||||
* la aplicación contiene interfaz, lógica de negocio, pantallas, navegación y funcionalidades;
|
||||
* la base de datos contiene usuarios, perfiles, permisos, presupuestos, expedientes, OF, estados, tareas, tiempos, errores, comentarios, trazabilidad e históricos.
|
||||
|
||||
**Reglas arquitectónicas importantes:**
|
||||
|
||||
* El programa y los datos deben permanecer separados.
|
||||
* Una actualización de la aplicación no puede sobrescribir ni eliminar información operativa o histórica.
|
||||
* Los datos deben sobrevivir a cualquier cambio de versión.
|
||||
* Los cambios de estructura de datos deben realizarse mediante actualizaciones controladas.
|
||||
* Antes de modificar la estructura de datos debe existir una copia de seguridad recuperable.
|
||||
* Las nuevas versiones no pueden exigir reintroducir manualmente datos históricos.
|
||||
* Las ampliaciones futuras deben integrarse sobre la base existente sin reconstruir usuarios, históricos ni datos comunes.
|
||||
* Las migraciones de datos y actualizaciones deben quedar registradas.
|
||||
* Los módulos pueden consultar información del otro módulo cuando sea necesario, pero no modificar datos ajenos salvo permiso expreso.
|
||||
* Los cambios relevantes deben poder probarse en un entorno Beta antes de aplicarse a Producción.
|
||||
* El desarrollador no debe operar directamente sobre datos de Producción fuera de los mecanismos previstos por la aplicación.
|
||||
|
||||
## 5. Convenciones relevantes
|
||||
|
||||
* Los perfiles se definen por puesto o función y se reutilizan entre las personas que desempeñen ese puesto.
|
||||
* Una misma persona puede disponer de varios perfiles.
|
||||
* El Máster asigna perfiles y permisos; el usuario no puede modificarlos por sí mismo.
|
||||
* Tarea y contexto son conceptos diferentes:
|
||||
* la tarea indica qué trabajo se realiza;
|
||||
* el contexto indica para qué se realiza.
|
||||
* Los contextos principales de la primera fase son:
|
||||
* Presupuesto;
|
||||
* OF;
|
||||
* Actividad general.
|
||||
* Los grupos funcionales de tareas contemplados inicialmente son, como mínimo:
|
||||
* OT;
|
||||
* OC · Presupuestos;
|
||||
* OC · Back Office;
|
||||
* OC · Pedidos;
|
||||
* Comunes.
|
||||
* Una tarea puede pertenecer a uno o varios grupos.
|
||||
* Las tareas o grupos con histórico no se eliminan físicamente; se desactivan para nuevos usos.
|
||||
* Solo puede existir una actividad activa a la vez.
|
||||
* Debe permitirse tanto la imputación de tiempo en tiempo real como la imputación diferida.
|
||||
* La imputación debe disponer de controles de solape y mantener trazabilidad.
|
||||
* Back Office puede iniciar tareas sin número de presupuesto ni OF mediante un identificador interno y vincularlas posteriormente sin reescribir el tiempo registrado.
|
||||
* Presupuestos imputa normalmente contra número de presupuesto, con posibilidad excepcional de hacerlo contra OF.
|
||||
* Pedidos imputa contra OF.
|
||||
* Oficina Técnica trabaja fundamentalmente contra OF.
|
||||
* Cuando un expediente cambia de fase, los datos consolidados de la fase anterior quedan bloqueados para la edición ordinaria.
|
||||
* Las correcciones posteriores a un cambio de fase deben realizarse mediante un procedimiento formal y quedar registradas.
|
||||
* Un expediente puede existir incompleto, pero no puede avanzar de fase mientras falten datos obligatorios para dicha transición.
|
||||
* Las fechas y horas de cambios de estado, el usuario que ejecuta las acciones y los registros automáticos del sistema no son editables por usuarios ordinarios.
|
||||
* Las correcciones excepcionales realizadas por el Máster deben conservar:
|
||||
* valor anterior;
|
||||
* valor nuevo;
|
||||
* fecha;
|
||||
* hora;
|
||||
* usuario.
|
||||
* Los números de presupuesto y OF son identificadores maestros externos procedentes de Factuges.
|
||||
* La aplicación no debe generar, sustituir ni reutilizar números de presupuesto u OF.
|
||||
* El presupuesto debe conservar su identidad de origen y las OF deben mantener su vínculo con el presupuesto del que proceden.
|
||||
|
||||
## 6. Comandos habituales
|
||||
|
||||
**Instalación:**
|
||||
|
||||
```bash
|
||||
N/A
|
||||
```
|
||||
|
||||
**Desarrollo:**
|
||||
|
||||
```bash
|
||||
N/A
|
||||
```
|
||||
|
||||
**Tests:**
|
||||
|
||||
```bash
|
||||
N/A
|
||||
```
|
||||
|
||||
**Typecheck:**
|
||||
|
||||
```bash
|
||||
N/A
|
||||
```
|
||||
|
||||
**Lint:**
|
||||
|
||||
```bash
|
||||
N/A
|
||||
```
|
||||
|
||||
## 7. Documentación de referencia
|
||||
|
||||
Principales documentos que deben consultarse antes de tomar decisiones:
|
||||
|
||||
* `Respaldo_Arquitectura_Tecnica_Aplicacion_v1.1.md` — Arquitectura técnica y reglas comunes de la aplicación.
|
||||
* Documento funcional de Oficina Comercial.
|
||||
* Documento funcional de Oficina Técnica.
|
||||
|
||||
## 8. Restricciones importantes
|
||||
|
||||
* No debe perderse información existente como consecuencia de una actualización.
|
||||
* No deben sobrescribirse ni eliminarse usuarios, expedientes, OF, tareas, imputaciones de tiempo, errores, históricos, registros de actividad ni configuraciones funcionales durante una actualización.
|
||||
* Debe mantenerse compatibilidad con los datos existentes entre versiones.
|
||||
* Ninguna evolución futura debe requerir la reintroducción manual de datos históricos.
|
||||
* Antes de cualquier cambio estructural de base de datos debe existir una copia de seguridad recuperable.
|
||||
* Toda actualización debe realizar una copia automática de seguridad cuando corresponda.
|
||||
* Debe existir un mecanismo de restauración o rollback que no dependa de conocimientos técnicos del usuario Máster.
|
||||
* La aplicación debe impedir la instalación de paquetes de actualización no válidos o incompatibles.
|
||||
* En la primera etapa, las actualizaciones se distribuyen como paquetes completos de versión, no como conjuntos de archivos sueltos.
|
||||
* Las modificaciones relevantes deben poder validarse en Beta antes de pasar a Producción.
|
||||
* El perfil Informática / Soporte no debe modificar por defecto reglas funcionales del negocio.
|
||||
* El perfil Desarrollador no debe modificar directamente datos de Producción fuera de los mecanismos previstos.
|
||||
* Los módulos no deben modificar datos propiedad de otros módulos salvo permiso expreso.
|
||||
* No deben eliminarse físicamente tareas o grupos que tengan histórico.
|
||||
* Los datos consolidados de una fase no deben modificarse mediante edición ordinaria después del avance de fase.
|
||||
* Los registros automáticos, fechas de cambio de estado y usuarios asociados a acciones no deben ser editables por usuarios ordinarios.
|
||||
* Los identificadores de presupuesto y OF procedentes de Factuges no pueden ser inventados, sustituidos ni reutilizados por la aplicación.
|
||||
* Las nuevas decisiones funcionales deben incorporarse previamente al documento marco correspondiente antes de pasar a Producción.
|
||||
* La aplicación debe limitarse a registrar, conservar, relacionar, mostrar, filtrar y exportar información. No debe emitir automáticamente juicios de rendimiento ni conclusiones de gestión.
|
||||
|
||||
## 9. Observaciones
|
||||
|
||||
La responsabilidad transversal de la primera fase corresponde a Dirección Técnica. Cada módulo conserva además su propia responsabilidad funcional mediante el Responsable de Oficina Comercial y el Responsable de Oficina Técnica.
|
||||
|
||||
Existe un perfil Máster con responsabilidad sobre permisos y decisiones funcionales, diferenciado de los perfiles Informática / Soporte y Desarrollador.
|
||||
|
||||
La aplicación contempla un nivel de experiencia UECKO calculado automáticamente a partir de la fecha de incorporación:
|
||||
|
||||
* Nivel 1: hasta 3 meses.
|
||||
* Nivel 2: más de 3 y hasta 6 meses.
|
||||
* Nivel 3: más de 6 y hasta 9 meses.
|
||||
* Nivel 4: más de 9 y hasta 12 meses.
|
||||
* Nivel 5: más de 12 meses.
|
||||
|
||||
Este nivel representa antigüedad y adaptación al entorno UECKO, no una calificación profesional. Cuando sea relevante para análisis posteriores, debe conservarse el nivel existente en el momento de asignación del trabajo.
|
||||
|
||||
Las actualizaciones deben generar un registro técnico independiente del histórico funcional, incluyendo fecha y hora, usuario, versión anterior, versión nueva, resultado y, cuando proceda, restauración posterior.
|
||||
|
||||
Mientras no exista integración automática con Factuges, los números de presupuesto y OF pueden incorporarse manualmente o mediante importación, manteniendo siempre Factuges como sistema de origen de dichos identificadores.
|
||||
37
docs/README.md
Normal file
37
docs/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
# Documentación del proyecto
|
||||
|
||||
Este directorio contiene la documentación técnica y operativa del proyecto.
|
||||
|
||||
## Estructura
|
||||
|
||||
```text
|
||||
docs/
|
||||
├── architecture/
|
||||
├── adr/
|
||||
├── work/
|
||||
├── guides/
|
||||
└── README.md
|
||||
```
|
||||
|
||||
### `architecture/`
|
||||
|
||||
Documentación estable sobre la arquitectura y las reglas generales del sistema.
|
||||
|
||||
### `adr/`
|
||||
|
||||
Decisiones arquitectónicas o técnicas relevantes y duraderas.
|
||||
|
||||
### `work/`
|
||||
|
||||
Estado de trabajos largos, migraciones, refactors o iniciativas en curso.
|
||||
|
||||
### `guides/`
|
||||
|
||||
Procedimientos operativos y guías para desarrolladores.
|
||||
|
||||
## Principios
|
||||
|
||||
- Evitar duplicar información.
|
||||
- Mantener una única fuente de verdad por tema.
|
||||
- Actualizar la documentación cuando cambien decisiones o contratos relevantes.
|
||||
- No documentar detalles triviales que ya se expresen claramente en el código.
|
||||
45
docs/adr/0000-plantilla.md
Normal file
45
docs/adr/0000-plantilla.md
Normal file
@ -0,0 +1,45 @@
|
||||
# ADR-0000 — Título
|
||||
|
||||
## Estado
|
||||
|
||||
Propuesta / Aceptada / Sustituida / Rechazada
|
||||
|
||||
## Contexto
|
||||
|
||||
[Qué problema existe y por qué requiere una decisión.]
|
||||
|
||||
## Decisión
|
||||
|
||||
[Qué se ha decidido.]
|
||||
|
||||
## Motivos
|
||||
|
||||
[Por qué se elige esta opción.]
|
||||
|
||||
## Consecuencias
|
||||
|
||||
### Positivas
|
||||
|
||||
- ...
|
||||
|
||||
### Negativas
|
||||
|
||||
- ...
|
||||
|
||||
### Restricciones
|
||||
|
||||
- ...
|
||||
|
||||
## Alternativas consideradas
|
||||
|
||||
### Alternativa A
|
||||
|
||||
[Descripción y motivo de descarte.]
|
||||
|
||||
### Alternativa B
|
||||
|
||||
[Descripción y motivo de descarte.]
|
||||
|
||||
## Referencias
|
||||
|
||||
- [Issue / documento / código]
|
||||
64
docs/arquitectura/backend.md
Normal file
64
docs/arquitectura/backend.md
Normal file
@ -0,0 +1,64 @@
|
||||
# Arquitectura backend
|
||||
|
||||
## Objetivo
|
||||
|
||||
Definir la estructura, responsabilidades y reglas principales del backend.
|
||||
|
||||
## Organización
|
||||
|
||||
[Capas, módulos, bounded contexts o estructura principal.]
|
||||
|
||||
## Flujo de entrada
|
||||
|
||||
[Request → aplicación → dominio → persistencia → respuesta.]
|
||||
|
||||
## Responsabilidades
|
||||
|
||||
### Entrada / API
|
||||
|
||||
[Responsabilidades.]
|
||||
|
||||
### Aplicación
|
||||
|
||||
[Responsabilidades.]
|
||||
|
||||
### Dominio
|
||||
|
||||
[Responsabilidades.]
|
||||
|
||||
### Infraestructura
|
||||
|
||||
[Responsabilidades.]
|
||||
|
||||
## Casos de uso
|
||||
|
||||
[Convenciones y responsabilidades.]
|
||||
|
||||
## Servicios
|
||||
|
||||
[Convenciones y responsabilidades.]
|
||||
|
||||
## Repositorios
|
||||
|
||||
[Reglas y límites.]
|
||||
|
||||
## Persistencia
|
||||
|
||||
[ORM, mappers, modelos, transacciones.]
|
||||
|
||||
## Errores
|
||||
|
||||
[Estrategia de errores y mapeo.]
|
||||
|
||||
## Transacciones
|
||||
|
||||
[Reglas de atomicidad y rollback.]
|
||||
|
||||
## Seguridad
|
||||
|
||||
[Autenticación, autorización, tenancy, validación.]
|
||||
|
||||
## Referencias
|
||||
|
||||
- [ADR relacionado]
|
||||
- [Documento relacionado]
|
||||
55
docs/arquitectura/convenciones.md
Normal file
55
docs/arquitectura/convenciones.md
Normal file
@ -0,0 +1,55 @@
|
||||
# Convenciones del proyecto
|
||||
|
||||
## Objetivo
|
||||
|
||||
Centralizar convenciones generales que afecten a todo el repositorio.
|
||||
|
||||
## Idioma
|
||||
|
||||
- Código e identificadores: [definir]
|
||||
- Comentarios: [definir]
|
||||
- Documentación: [definir]
|
||||
|
||||
## Naming
|
||||
|
||||
- Ficheros: [convención]
|
||||
- Directorios: [convención]
|
||||
- Clases / tipos: [convención]
|
||||
- Variables / funciones: [convención]
|
||||
- Constantes: [convención]
|
||||
|
||||
## Estructura de carpetas
|
||||
|
||||
[Convenciones principales.]
|
||||
|
||||
## Tipado
|
||||
|
||||
[Reglas principales.]
|
||||
|
||||
## Validación
|
||||
|
||||
[Reglas principales.]
|
||||
|
||||
## Errores
|
||||
|
||||
[Reglas principales.]
|
||||
|
||||
## Async
|
||||
|
||||
[Reglas principales.]
|
||||
|
||||
## Imports
|
||||
|
||||
[Reglas principales.]
|
||||
|
||||
## Dependencias
|
||||
|
||||
[Reglas para añadir o actualizar dependencias.]
|
||||
|
||||
## Git
|
||||
|
||||
[Convenciones relevantes.]
|
||||
|
||||
## Documentación
|
||||
|
||||
[Convenciones de actualización y SSOT.]
|
||||
46
docs/arquitectura/datos-persistencia.md
Normal file
46
docs/arquitectura/datos-persistencia.md
Normal file
@ -0,0 +1,46 @@
|
||||
# Arquitectura de datos y persistencia
|
||||
|
||||
## Objetivo
|
||||
|
||||
Definir las reglas de persistencia, integridad y evolución de datos.
|
||||
|
||||
## Base de datos
|
||||
|
||||
[Motor, versión y configuración relevante.]
|
||||
|
||||
## Modelado
|
||||
|
||||
[Convenciones para tablas, columnas, claves y relaciones.]
|
||||
|
||||
## Persistencia
|
||||
|
||||
[ORM, repositorios y mappers.]
|
||||
|
||||
## Transacciones
|
||||
|
||||
[Reglas de atomicidad.]
|
||||
|
||||
## Integridad
|
||||
|
||||
[Constraints, foreign keys, invariantes críticas.]
|
||||
|
||||
## Concurrencia
|
||||
|
||||
[Locks, versionado, idempotencia, etc.]
|
||||
|
||||
## Migraciones
|
||||
|
||||
[Estrategia de migraciones.]
|
||||
|
||||
## Índices y rendimiento
|
||||
|
||||
[Convenciones y criterios.]
|
||||
|
||||
## Datos legacy
|
||||
|
||||
[Reglas para compatibilidad y eliminación.]
|
||||
|
||||
## Referencias
|
||||
|
||||
- [ADR relacionado]
|
||||
- [Documento relacionado]
|
||||
52
docs/arquitectura/frontend.md
Normal file
52
docs/arquitectura/frontend.md
Normal file
@ -0,0 +1,52 @@
|
||||
# Arquitectura frontend
|
||||
|
||||
## Objetivo
|
||||
|
||||
Definir la estructura y las reglas generales del frontend.
|
||||
|
||||
## Organización
|
||||
|
||||
[Aplicaciones, módulos, features, pages, components, hooks, etc.]
|
||||
|
||||
## Estado
|
||||
|
||||
### Estado remoto
|
||||
|
||||
[Herramienta y reglas.]
|
||||
|
||||
### Estado local
|
||||
|
||||
[Reglas.]
|
||||
|
||||
## Formularios
|
||||
|
||||
[Convenciones de formularios y validación.]
|
||||
|
||||
## Componentes
|
||||
|
||||
[Reutilización, sistema de diseño y composición.]
|
||||
|
||||
## Navegación
|
||||
|
||||
[Routing y layouts.]
|
||||
|
||||
## UI / UX
|
||||
|
||||
[Patrones visuales, loading, empty, error, disabled, responsive.]
|
||||
|
||||
## Internacionalización
|
||||
|
||||
[Convenciones i18n.]
|
||||
|
||||
## Accesibilidad
|
||||
|
||||
[Reglas mínimas.]
|
||||
|
||||
## Errores
|
||||
|
||||
[Manejo de errores de UI y API.]
|
||||
|
||||
## Referencias
|
||||
|
||||
- [ADR relacionado]
|
||||
- [Documento relacionado]
|
||||
55
docs/arquitectura/testing.md
Normal file
55
docs/arquitectura/testing.md
Normal file
@ -0,0 +1,55 @@
|
||||
# Estrategia de testing
|
||||
|
||||
## Objetivo
|
||||
|
||||
Definir qué se prueba, dónde y con qué nivel de profundidad.
|
||||
|
||||
## Niveles
|
||||
|
||||
### Unitarios
|
||||
|
||||
[Qué deben cubrir.]
|
||||
|
||||
### Integración
|
||||
|
||||
[Qué deben cubrir.]
|
||||
|
||||
### E2E
|
||||
|
||||
[Qué deben cubrir.]
|
||||
|
||||
## Criterios
|
||||
|
||||
- Validar comportamiento observable.
|
||||
- Evitar depender de detalles internos irrelevantes.
|
||||
- Añadir regresión para bugs cuando sea viable.
|
||||
- Mantener tests deterministas.
|
||||
|
||||
## Fixtures y datos de prueba
|
||||
|
||||
[Convenciones.]
|
||||
|
||||
## Mocks
|
||||
|
||||
[Cuándo y cómo usarlos.]
|
||||
|
||||
## Validación por cambio
|
||||
|
||||
```text
|
||||
tests específicos
|
||||
→ tests del módulo
|
||||
→ typecheck
|
||||
→ lint
|
||||
→ integración
|
||||
→ E2E
|
||||
→ validación global
|
||||
```
|
||||
|
||||
## Fallos preexistentes
|
||||
|
||||
[Cómo distinguirlos y documentarlos.]
|
||||
|
||||
## Referencias
|
||||
|
||||
- [ADR relacionado]
|
||||
- [Documento relacionado]
|
||||
39
docs/arquitectura/vision-general.md
Normal file
39
docs/arquitectura/vision-general.md
Normal file
@ -0,0 +1,39 @@
|
||||
# Visión general de arquitectura
|
||||
|
||||
## Objetivo
|
||||
|
||||
Describir la arquitectura general del sistema y sus principales límites.
|
||||
|
||||
## Sistema
|
||||
|
||||
[Descripción breve del producto y su propósito.]
|
||||
|
||||
## Principales módulos o áreas
|
||||
|
||||
- [Módulo 1]
|
||||
- [Módulo 2]
|
||||
- [Módulo 3]
|
||||
|
||||
## Relaciones principales
|
||||
|
||||
[Describir dependencias y comunicación entre módulos.]
|
||||
|
||||
## Límites arquitectónicos
|
||||
|
||||
- [Regla 1]
|
||||
- [Regla 2]
|
||||
- [Regla 3]
|
||||
|
||||
## Flujos principales
|
||||
|
||||
[Describir los flujos más importantes a alto nivel.]
|
||||
|
||||
## Dependencias externas
|
||||
|
||||
- [Servicio / API / infraestructura]
|
||||
- [Servicio / API / infraestructura]
|
||||
|
||||
## Referencias
|
||||
|
||||
- [ADR relacionado]
|
||||
- [Documento relacionado]
|
||||
124
docs/guias/cierre-de-tareas.md
Normal file
124
docs/guias/cierre-de-tareas.md
Normal file
@ -0,0 +1,124 @@
|
||||
# Cierre de tareas
|
||||
|
||||
## Objetivo
|
||||
|
||||
Definir cuándo una tarea puede considerarse realmente terminada y qué evidencias deben existir antes de cerrarla.
|
||||
|
||||
---
|
||||
|
||||
## Checklist de cierre
|
||||
|
||||
- [ ] El objetivo solicitado está implementado.
|
||||
- [ ] El alcance real coincide con el solicitado.
|
||||
- [ ] No se han introducido cambios innecesarios.
|
||||
- [ ] La solución respeta la arquitectura y los patrones existentes.
|
||||
- [ ] Los contratos afectados siguen siendo coherentes.
|
||||
- [ ] Se han añadido o actualizado tests cuando corresponde.
|
||||
- [ ] Se han ejecutado las validaciones relevantes.
|
||||
- [ ] Los errores introducidos por el cambio están resueltos.
|
||||
- [ ] Los fallos preexistentes están diferenciados de los nuevos.
|
||||
- [ ] Se ha revisado el diff final.
|
||||
- [ ] No quedan logs, código temporal, archivos accidentales o secretos.
|
||||
- [ ] La documentación se ha actualizado si el cambio lo requiere.
|
||||
- [ ] Los riesgos, limitaciones o pendientes están identificados.
|
||||
|
||||
---
|
||||
|
||||
## Validación
|
||||
|
||||
Según el alcance y riesgo del cambio, utilizar:
|
||||
|
||||
```text
|
||||
tests específicos
|
||||
→ tests del módulo
|
||||
→ typecheck
|
||||
→ lint
|
||||
→ integración
|
||||
→ E2E
|
||||
→ validación global
|
||||
```
|
||||
|
||||
No es obligatorio ejecutar siempre toda la cadena.
|
||||
|
||||
La validación debe ser proporcional al impacto del cambio.
|
||||
|
||||
No declarar una validación como superada si no se ha ejecutado correctamente.
|
||||
|
||||
---
|
||||
|
||||
## Estados finales
|
||||
|
||||
### COMPLETA
|
||||
|
||||
Usar cuando:
|
||||
|
||||
- el objetivo está cumplido;
|
||||
- las validaciones necesarias se han ejecutado;
|
||||
- no quedan defectos conocidos dentro del alcance.
|
||||
|
||||
### PARCIAL
|
||||
|
||||
Usar cuando:
|
||||
|
||||
- parte de la tarea está completada;
|
||||
- faltan puntos del alcance;
|
||||
- faltan validaciones relevantes;
|
||||
- existe algún bloqueo que impide cerrar completamente.
|
||||
|
||||
Debe indicarse exactamente qué queda pendiente.
|
||||
|
||||
### BLOQUEADA
|
||||
|
||||
Usar cuando no puede avanzarse correctamente por:
|
||||
|
||||
- falta de información;
|
||||
- dependencia externa;
|
||||
- error de entorno;
|
||||
- problema del repositorio;
|
||||
- decisión pendiente;
|
||||
- requisito incompatible.
|
||||
|
||||
Debe indicarse qué impide continuar.
|
||||
|
||||
---
|
||||
|
||||
## No considerar completa una tarea solo porque
|
||||
|
||||
- compila;
|
||||
- un test concreto pasa;
|
||||
- desaparece el error visible;
|
||||
- Codex afirma que funciona;
|
||||
- el diff parece correcto;
|
||||
- no aparecen errores de TypeScript.
|
||||
|
||||
El criterio es el cumplimiento verificable del objetivo.
|
||||
|
||||
---
|
||||
|
||||
## Informe final recomendado
|
||||
|
||||
```text
|
||||
Estado:
|
||||
|
||||
Objetivo:
|
||||
|
||||
Cambios realizados:
|
||||
|
||||
Archivos principales:
|
||||
|
||||
Validaciones ejecutadas:
|
||||
|
||||
Resultados:
|
||||
|
||||
Problemas preexistentes:
|
||||
|
||||
Riesgos o pendientes:
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Regla principal
|
||||
|
||||
No cerrar una tarea por sensación de finalización.
|
||||
|
||||
Cerrar únicamente cuando exista evidencia suficiente de que el resultado esperado funciona y el alcance está controlado.
|
||||
226
docs/guias/flujo-chatgpt-codex.md
Normal file
226
docs/guias/flujo-chatgpt-codex.md
Normal file
@ -0,0 +1,226 @@
|
||||
# Flujo ChatGPT → Codex
|
||||
|
||||
## Objetivo
|
||||
|
||||
Definir un flujo de trabajo consistente para analizar, implementar y validar cambios de desarrollo utilizando ChatGPT y Codex.
|
||||
|
||||
---
|
||||
|
||||
## Flujo general
|
||||
|
||||
```text
|
||||
Necesidad
|
||||
→ Análisis
|
||||
→ Auditoría
|
||||
→ Diseño
|
||||
→ Prompt para Codex
|
||||
→ Implementación
|
||||
→ Validación
|
||||
→ Revisión
|
||||
→ Cierre
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. Plantear la necesidad
|
||||
|
||||
Definir:
|
||||
|
||||
- qué problema se quiere resolver;
|
||||
- qué comportamiento se espera;
|
||||
- qué módulo o área está afectada;
|
||||
- qué restricciones conocidas existen.
|
||||
|
||||
Evitar empezar por una solución técnica concreta si todavía no se ha auditado el código.
|
||||
|
||||
---
|
||||
|
||||
## 2. Analizar el contexto
|
||||
|
||||
Antes de pedir cambios:
|
||||
|
||||
- revisar decisiones previas;
|
||||
- identificar documentación relevante;
|
||||
- comprobar si existe contexto suficiente;
|
||||
- determinar el nivel de complejidad de la tarea.
|
||||
|
||||
---
|
||||
|
||||
## 3. Auditar el estado actual
|
||||
|
||||
Para cambios no triviales:
|
||||
|
||||
- localizar el flujo actual;
|
||||
- identificar archivos, clases, hooks, casos de uso o servicios implicados;
|
||||
- buscar patrones equivalentes;
|
||||
- identificar contratos y consumidores;
|
||||
- localizar causa raíz si existe un bug.
|
||||
|
||||
No modificar código cuando la fase tenga como objetivo exclusivo comprender el sistema.
|
||||
|
||||
---
|
||||
|
||||
## 4. Diseñar la solución
|
||||
|
||||
Definir:
|
||||
|
||||
- resultado esperado;
|
||||
- alcance;
|
||||
- invariantes;
|
||||
- restricciones;
|
||||
- componentes afectados;
|
||||
- compatibilidad necesaria;
|
||||
- validaciones requeridas.
|
||||
|
||||
Preferir la solución mínima compatible con la arquitectura existente.
|
||||
|
||||
---
|
||||
|
||||
## 5. Preparar el prompt para Codex
|
||||
|
||||
El prompt debe incluir, cuando corresponda:
|
||||
|
||||
```text
|
||||
CONTEXTO
|
||||
|
||||
OBJETIVO
|
||||
|
||||
ALCANCE
|
||||
|
||||
RESTRICCIONES
|
||||
|
||||
PROCEDIMIENTO
|
||||
|
||||
CRITERIOS DE VALIDACIÓN
|
||||
|
||||
FORMATO DE RESPUESTA
|
||||
```
|
||||
|
||||
No repetir reglas ya definidas claramente en `AGENTS.md` salvo que sean especialmente relevantes para la tarea.
|
||||
|
||||
---
|
||||
|
||||
## 6. Implementación con Codex
|
||||
|
||||
Codex debe:
|
||||
|
||||
- inspeccionar el repositorio antes de modificar;
|
||||
- respetar `AGENTS.md`;
|
||||
- trabajar dentro del alcance;
|
||||
- reutilizar patrones existentes;
|
||||
- evitar cambios colaterales;
|
||||
- mantener el código validable durante el proceso.
|
||||
|
||||
Para trabajos grandes, dividir la implementación en fases verificables.
|
||||
|
||||
---
|
||||
|
||||
## 7. Validación
|
||||
|
||||
Después de implementar:
|
||||
|
||||
```text
|
||||
tests específicos
|
||||
→ tests del módulo
|
||||
→ typecheck
|
||||
→ lint
|
||||
→ integración
|
||||
→ E2E
|
||||
→ validación global si corresponde
|
||||
```
|
||||
|
||||
No ejecutar toda la cadena automáticamente si el alcance no lo requiere.
|
||||
|
||||
Exigir siempre evidencia de qué validaciones se han ejecutado realmente.
|
||||
|
||||
---
|
||||
|
||||
## 8. Revisar el resultado
|
||||
|
||||
Comprobar:
|
||||
|
||||
- que se ha resuelto el objetivo original;
|
||||
- que el alcance no se ha ampliado innecesariamente;
|
||||
- que las decisiones coinciden con el diseño;
|
||||
- que no existen regresiones evidentes;
|
||||
- que los tests cubren el comportamiento relevante;
|
||||
- que los fallos preexistentes están diferenciados.
|
||||
|
||||
Si algo no está claro, auditar antes de pedir nuevas modificaciones.
|
||||
|
||||
---
|
||||
|
||||
## 9. Iterar si es necesario
|
||||
|
||||
Si aparecen defectos:
|
||||
|
||||
```text
|
||||
Diagnosticar
|
||||
→ corregir causa
|
||||
→ validar
|
||||
→ volver a revisar
|
||||
```
|
||||
|
||||
Evitar encadenar instrucciones correctivas sin reconstruir primero el problema cuando Codex empiece a desviarse.
|
||||
|
||||
---
|
||||
|
||||
## 10. Cerrar la tarea
|
||||
|
||||
Antes de considerar terminada una tarea:
|
||||
|
||||
- objetivo cumplido;
|
||||
- alcance revisado;
|
||||
- tests relevantes ejecutados;
|
||||
- typecheck y lint revisados cuando corresponda;
|
||||
- pendientes reales identificados;
|
||||
- documentación actualizada si el cambio lo requiere.
|
||||
|
||||
Estados:
|
||||
|
||||
```text
|
||||
COMPLETA
|
||||
PARCIAL
|
||||
BLOQUEADA
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nivel de proceso según la tarea
|
||||
|
||||
### Cambio pequeño
|
||||
|
||||
```text
|
||||
Analizar
|
||||
→ Implementar
|
||||
→ Validar
|
||||
```
|
||||
|
||||
### Cambio normal
|
||||
|
||||
```text
|
||||
Auditar
|
||||
→ Diseñar
|
||||
→ Implementar
|
||||
→ Validar
|
||||
→ Revisar
|
||||
```
|
||||
|
||||
### Cambio complejo o delicado
|
||||
|
||||
```text
|
||||
Auditoría independiente
|
||||
→ Diseño
|
||||
→ Implementación por fases
|
||||
→ Validación entre fases
|
||||
→ Verificación final
|
||||
→ Documentación
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Regla principal
|
||||
|
||||
No convertir el proceso en burocracia.
|
||||
|
||||
Aplicar únicamente el nivel de análisis, documentación y validación proporcional al riesgo, complejidad y alcance de la tarea.
|
||||
0
docs/guias/gestion-de-chats-degradados.md
Normal file
0
docs/guias/gestion-de-chats-degradados.md
Normal file
246
docs/guias/organizacion-de-chats.md
Normal file
246
docs/guias/organizacion-de-chats.md
Normal file
@ -0,0 +1,246 @@
|
||||
# Organización de chats en proyectos de desarrollo
|
||||
|
||||
## Objetivo
|
||||
|
||||
Organizar los chats de un Proyecto de ChatGPT de forma que cada conversación mantenga un contexto claro, estable y reutilizable.
|
||||
|
||||
---
|
||||
|
||||
## Chats básicos
|
||||
|
||||
### `[ARCH] Arquitectura y decisiones`
|
||||
|
||||
Para:
|
||||
|
||||
- arquitectura;
|
||||
- patrones;
|
||||
- convenciones;
|
||||
- decisiones transversales;
|
||||
- ADR;
|
||||
- límites entre módulos.
|
||||
|
||||
### `[BACKEND] Backend transversal`
|
||||
|
||||
Para aspectos de backend que afecten a varios módulos:
|
||||
|
||||
- APIs;
|
||||
- middleware;
|
||||
- DI;
|
||||
- errores;
|
||||
- transacciones;
|
||||
- autenticación/autorización;
|
||||
- infraestructura común.
|
||||
|
||||
### `[FRONTEND] Frontend / UI / UX`
|
||||
|
||||
Para:
|
||||
|
||||
- layouts;
|
||||
- componentes compartidos;
|
||||
- sistema de diseño;
|
||||
- navegación;
|
||||
- UX;
|
||||
- accesibilidad;
|
||||
- responsive;
|
||||
- patrones frontend.
|
||||
|
||||
### `[TESTS] Testing / E2E`
|
||||
|
||||
Para:
|
||||
|
||||
- estrategia de tests;
|
||||
- infraestructura de testing;
|
||||
- E2E;
|
||||
- fixtures;
|
||||
- mocks;
|
||||
- problemas generales de testing.
|
||||
|
||||
### `[INFRA] Infraestructura / DevOps`
|
||||
|
||||
Para:
|
||||
|
||||
- Docker;
|
||||
- CI/CD;
|
||||
- despliegues;
|
||||
- servidores;
|
||||
- observabilidad;
|
||||
- logging;
|
||||
- monitorización;
|
||||
- backups;
|
||||
- entornos.
|
||||
|
||||
### `[DATA] Base de datos / persistencia`
|
||||
|
||||
Opcional.
|
||||
|
||||
Para:
|
||||
|
||||
- migraciones;
|
||||
- índices;
|
||||
- rendimiento;
|
||||
- integridad;
|
||||
- concurrencia;
|
||||
- persistencia transversal.
|
||||
|
||||
### `[DOCS] Documentación`
|
||||
|
||||
Opcional.
|
||||
|
||||
Para:
|
||||
|
||||
- estructura documental;
|
||||
- ADR;
|
||||
- revisión de documentación;
|
||||
- documentación técnica transversal.
|
||||
|
||||
---
|
||||
|
||||
## Chats por módulo o área funcional
|
||||
|
||||
Crear un chat por cada módulo o área con suficiente entidad propia.
|
||||
|
||||
Formato:
|
||||
|
||||
```text
|
||||
[MODULO] Nombre
|
||||
```
|
||||
|
||||
Ejemplos:
|
||||
|
||||
```text
|
||||
[CUSTOMERS] Customers
|
||||
[COMPANIES] Companies
|
||||
[CATALOGS] Catalogs
|
||||
[PROFORMAS] Proformas
|
||||
[INVOICES] Issued Invoices
|
||||
[IDENTITY] Identity
|
||||
```
|
||||
|
||||
Usar estos chats para todo el trabajo específico del módulo:
|
||||
|
||||
- dominio;
|
||||
- backend;
|
||||
- frontend;
|
||||
- persistencia;
|
||||
- tests;
|
||||
- bugs;
|
||||
- pequeñas refactorizaciones.
|
||||
|
||||
---
|
||||
|
||||
## Chats temporales
|
||||
|
||||
Crear solo cuando el trabajo tenga suficiente entidad propia:
|
||||
|
||||
```text
|
||||
[AUDIT] ...
|
||||
[BUG] ...
|
||||
[REFACTOR] ...
|
||||
[MIGRATION] ...
|
||||
[FEATURE] ...
|
||||
```
|
||||
|
||||
No crear un chat nuevo para tareas pequeñas que encajen correctamente en un chat existente.
|
||||
|
||||
---
|
||||
|
||||
## Regla para elegir chat
|
||||
|
||||
```text
|
||||
¿Pertenece claramente a un módulo?
|
||||
→ Chat del módulo
|
||||
|
||||
¿Afecta a varios módulos dentro de una disciplina?
|
||||
→ BACKEND / FRONTEND / TESTS / DATA / INFRA
|
||||
|
||||
¿Es una decisión transversal?
|
||||
→ ARCH
|
||||
|
||||
¿Es un trabajo grande e independiente?
|
||||
→ AUDIT / BUG / REFACTOR / MIGRATION / FEATURE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cuándo abrir un chat nuevo
|
||||
|
||||
Abrir uno cuando:
|
||||
|
||||
- cambie sustancialmente el contexto;
|
||||
- el trabajo tenga entidad propia;
|
||||
- existan muchas fases;
|
||||
- sea una investigación independiente;
|
||||
- el chat anterior sea demasiado largo;
|
||||
- mezclar el nuevo trabajo dificulte entender decisiones anteriores.
|
||||
|
||||
No abrir un chat nuevo simplemente porque empieza una nueva tarea.
|
||||
|
||||
---
|
||||
|
||||
## Chats demasiado largos
|
||||
|
||||
Cuando un chat acumule demasiado histórico, cerrarlo conceptualmente y continuar en otro.
|
||||
|
||||
Ejemplo:
|
||||
|
||||
```text
|
||||
[PROFORMAS] Fiscalidad I
|
||||
[PROFORMAS] Fiscalidad II
|
||||
```
|
||||
|
||||
Al iniciar el nuevo chat, trasladar únicamente:
|
||||
|
||||
```text
|
||||
Objetivo actual:
|
||||
Estado:
|
||||
Decisiones vigentes:
|
||||
Completado:
|
||||
Pendientes:
|
||||
Restricciones:
|
||||
Fuentes de verdad:
|
||||
Siguiente tarea:
|
||||
```
|
||||
|
||||
No copiar toda la conversación anterior.
|
||||
|
||||
---
|
||||
|
||||
## Convención de nombres
|
||||
|
||||
Usar:
|
||||
|
||||
```text
|
||||
[CATEGORIA] Descripción
|
||||
```
|
||||
|
||||
Ejemplos:
|
||||
|
||||
```text
|
||||
[ARCH] Arquitectura general
|
||||
[FRONTEND] Layouts
|
||||
[PROFORMAS] Fiscalidad
|
||||
[BUG] Error al emitir factura
|
||||
[REFACTOR] Inyección de dependencias
|
||||
```
|
||||
|
||||
Evitar nombres ambiguos:
|
||||
|
||||
```text
|
||||
Dudas
|
||||
Cambios varios
|
||||
Problema de hoy
|
||||
Nuevo chat
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Principio general
|
||||
|
||||
Un chat debe representar un **contexto de trabajo estable**.
|
||||
|
||||
No debe representar necesariamente:
|
||||
|
||||
- todo el proyecto;
|
||||
- ni una única tarea.
|
||||
|
||||
Debe agrupar conversaciones que realmente se beneficien de compartir contexto entre sí.
|
||||
39
docs/trabajo/plantilla-estado-actual.md
Normal file
39
docs/trabajo/plantilla-estado-actual.md
Normal file
@ -0,0 +1,39 @@
|
||||
# Estado de trabajo — Título
|
||||
|
||||
## Objetivo
|
||||
|
||||
[Qué se quiere conseguir.]
|
||||
|
||||
## Estado actual
|
||||
|
||||
EN CURSO / BLOQUEADA / COMPLETA
|
||||
|
||||
## Completado
|
||||
|
||||
- [P1]
|
||||
- [P2]
|
||||
|
||||
## Decisiones vigentes
|
||||
|
||||
- [Decisión 1]
|
||||
- [Decisión 2]
|
||||
|
||||
## Pendiente
|
||||
|
||||
- [Pendiente 1]
|
||||
- [Pendiente 2]
|
||||
|
||||
## Riesgos / bloqueos
|
||||
|
||||
- [Riesgo o bloqueo]
|
||||
|
||||
## Fuentes de verdad
|
||||
|
||||
- `AGENTS.md`
|
||||
- [ADR]
|
||||
- [Documento]
|
||||
- [Código relevante]
|
||||
|
||||
## Siguiente paso
|
||||
|
||||
[Próxima tarea concreta]
|
||||
Loading…
Reference in New Issue
Block a user