Guía de contribución
Las reglas completas están en AGENTS.md. A continuación el resumen práctico.
Arquitectura por capas
Sección titulada «Arquitectura por capas»Backend:
api/→ routers FastAPI, validan entrada y llaman al servicio.services/→ lógica de negocio, sin dependencias HTTP.repositories/→ acceso a datos.models/→ SQLAlchemy.schemas/→ Pydantic v2.
Frontend:
pages/→ vistas.components/→ componentes reutilizables.hooks/→ TanStack Query.api/→ clientes HTTP (axios).stores/→ Zustand.types/→ TypeScript.utils/→ helpers.
Límites estrictos
Sección titulada «Límites estrictos»- Máximo 15 métodos/funciones por clase.
- Máximo 30 líneas por función.
- Máximo 180 líneas por archivo.
Si un archivo supera los límites, se debe refactorizar antes de seguir añadiendo código.
No duplicar lógica. Extraer a servicios o helpers compartidos:
- Backend:
backend/app/services/shared/, helpers enrepositories/outils/. - Frontend:
frontend/src/utils/o hooks compartidos.
Componentes compartidos
Sección titulada «Componentes compartidos»Usar Ant Design nativos y ProComponents siempre que sea posible. No reinventar componentes básicos.
- Layout full-width con tope de 1920px.
- Usar clase
.app-container. - Breakpoints en
frontend/src/styles/tokens.css.
Reactividad asíncrona
Sección titulada «Reactividad asíncrona»staleTimede 5-30 segundos en TanStack Query.- Invalidar queries en
onSuccessde mutaciones. - Optimistic updates en drag&drop, reordenar y toggles.
- Sin
useStatepara datos del servidor. - Loading states con
Spin/Skeleton.
- Rama de trabajo:
serconsa-react. - Commits con conventional commits:
tipo(scope): descripcion. - No trabajar en
main. - Merge a
maincon--ff-only.
OpenSpec
Sección titulada «OpenSpec»Antes de implementar funcionalidades relevantes, crear un change de OpenSpec:
openspec-propose → openspec-apply-change → openspec-archive-changeSeguridad
Sección titulada «Seguridad»- Todo cambio pasa por
@security-specialist. - No exponer secretos.
- Validar ownership en recursos.
- Usar AST seguro en lugar de
eval().
Cómo empezar una tarea
Sección titulada «Cómo empezar una tarea»- Leer
AGENTS.mdy esta documentación. - Revisar la tarea de kanban asignada.
- Explorar el código relevante con
search_files/read_file. - Si es funcionalidad relevante, crear change de OpenSpec.
- Implementar siguiendo las capas y límites.
- Escribir o actualizar tests.
- Ejecutar lint y tests.
- Hacer commit en
serconsa-react.
Revisión de código
Sección titulada «Revisión de código»Antes de marcar una tarea como lista:
- Tests pasan.
- Lint sin errores nuevos.
- No se superan límites de líneas/métodos.
- Se ha verificado la funcionalidad.
- Se actualiza la documentación si procede.