2.8 KiB
US-MGN-011-001-001: CRUD Proyectos
RF Asociado: RF-MGN-011-001 Módulo: MGN-011 - Proyectos Genéricos Epic: Proyectos Prioridad: P0 Story Points: 5 Sprint: Sprint 24 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como gerente de proyectos, Quiero crear y gestionar proyectos, Para organizar trabajo y recursos.
Descripción Detallada
Proyecto incluye:
- Nombre, código, descripción
- Cliente (partner_id)
- Fechas inicio/fin
- Presupuesto total
- Gerente del proyecto
- Estado (draft, in_progress, on_hold, done, cancelled)
- Cuenta analítica vinculada (opcional)
Criterios de Aceptación
Escenario 1: Crear proyecto
Dado que soy project_manager, Cuando creo proyecto: name="Desarrollo App Mobile", code="MOB-001", customer_id=1, budget=100000, start_date="2024-01-01", Entonces sistema crea proyecto state=draft, genera cuenta analítica automáticamente.
Escenario 2: Código único
Dado que ya existe proyecto con code="MOB-001", Cuando intento crear otro con mismo código, Entonces error 400 "Código ya existe".
Escenario 3: Actualizar proyecto
Dado que proyecto existe, Cuando actualizo end_date="2024-12-31", budget=120000, Entonces sistema actualiza y registra en audit_log.
Escenario 4: Vincular a cuenta analítica
Dado que proyecto se crea, Cuando se completa creación, Entonces sistema crea cuenta analítica con code=proyecto.code para trackeo de costos.
Reglas de Negocio
- RN-1: Código único por empresa.
- RN-2: Budget >= 0.
- RN-3: start_date <= end_date (si ambos existen).
- RN-4: Crea cuenta analítica automáticamente.
- RN-5: RLS filtra por empresa.
Tareas Técnicas
Backend
- Endpoint: POST/GET/PUT/DELETE
/api/v1/projects - Service:
ProjectService(CRUD) - Crear cuenta analítica al crear proyecto
- Unit tests
Frontend
- Página:
ProjectsPage.tsx - Formulario:
ProjectForm.tsx - Vista: Dashboard de proyecto
Database
- Tabla:
projects.projects(code, name, customer_id, manager_id, budget, start_date, end_date, state, analytical_account_id) - Constraint: unique(company_id, code)
- Enum: project_state
Estimación Detallada
| Tarea | Horas |
|---|---|
| Backend | 2.5 |
| Frontend | 2.5 |
| Testing | 2 |
| TOTAL | 7 horas = 5 SP |
Definition of Done
- CRUD completo
- Cuenta analítica creada automáticamente
- Validaciones aplicadas
- Tests >80%
- QA/PO aprobado