clinica-veterinaria/docs/01-epicas/VET-005-estetica.md
rckrdmrd c461208a51 [SPRINT-7] docs: Agregar documentacion, schemas y reportes
- Epicas documentadas
- Schema de farmacia veterinaria
- Inventario de base de datos
- Reporte de ejecucion Sprint 7

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:42 -06:00

251 lines
7.0 KiB
Markdown

# VET-005: Estetica (Grooming)
## Metadata
- **Codigo:** VET-005
- **Modulo:** Estetica
- **Prioridad:** P2
- **Estado:** DDL Completado
- **Fase:** 4 - Servicios Adicionales
## Descripcion
Sistema de gestion de servicios de estetica canina y felina (grooming): agenda de servicios, tipos de corte, productos utilizados, observaciones de piel/pelaje, y registro de tiempos.
## Objetivos
1. Agenda de servicios de estetica
2. Registro de servicios realizados
3. Control de productos (shampoos)
4. Observaciones de piel/pelaje
5. Historial por mascota
## Alcance
### Incluido
- Tipos de servicio: bano, corte, limpieza oidos, corte unas
- Tipos de corte por raza
- Productos/shampoos utilizados
- Estado del servicio
- Hora inicio/fin
- Observaciones de piel
- Precio por servicio
### Excluido
- Reservas online
- Fotos antes/despues
- Calificacion del cliente
## Servicios de Estetica
| Servicio | Descripcion | Duracion Aprox |
|----------|-------------|----------------|
| Bano | Bano con shampoo | 30-45 min |
| Corte | Corte de pelo | 45-90 min |
| Bano + Corte | Servicio completo | 60-120 min |
| Limpieza oidos | Limpieza auditiva | 10 min |
| Corte unas | Corte de unas | 10 min |
| Deslanado | Remocion de pelo muerto | 30-60 min |
| Tratamiento piel | Tratamiento dermatologico | 30 min |
## Tipos de Corte por Raza
### Caninos
| Raza | Cortes Tipicos |
|------|----------------|
| Poodle | Continental, Puppy, Teddy Bear |
| Schnauzer | Schnauzer estandar, Puppy |
| Cocker | Cocker estandar, Puppy |
| Yorkshire | Show, Puppy |
| Bichon | Bichon estandar, Teddy Bear |
### Felinos
| Tipo | Cortes |
|------|--------|
| Pelo largo | Leon, Higienico |
| Pelo corto | Solo bano (sin corte) |
## Modelo de Datos
### Tabla: veterinaria.estetica
| Campo | Tipo | Descripcion |
|-------|------|-------------|
| id | UUID | PK |
| tenant_id | UUID | FK |
| mascota_id | UUID | FK |
| estilista_id | UUID | FK empleado |
| fecha_servicio | TIMESTAMPTZ | Fecha/hora |
| servicios | TEXT[] | Lista de servicios |
| tipo_corte | VARCHAR(50) | Tipo de corte |
| shampoo_usado | VARCHAR(100) | Producto |
| estado | VARCHAR(20) | pendiente, en_proceso, terminado |
| hora_inicio | TIME | Inicio |
| hora_fin | TIME | Fin |
| observaciones | TEXT | Notas generales |
| observaciones_piel | TEXT | Estado de piel/pelaje |
| precio | NUMERIC(10,2) | Total |
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /estetica | Servicios del dia |
| GET | /estetica/:id | Detalle servicio |
| POST | /estetica | Agendar servicio |
| PUT | /estetica/:id | Actualizar |
| PUT | /estetica/:id/iniciar | Iniciar servicio |
| PUT | /estetica/:id/terminar | Terminar servicio |
| GET | /mascotas/:id/estetica | Historial mascota |
| GET | /estetica/agenda | Agenda por fecha |
## Interfaz del Servicio
```typescript
interface EsteticaService {
getDelDia(): Promise<Estetica[]>;
getById(id: string): Promise<Estetica>;
agendar(data: AgendarEstetica): Promise<Estetica>;
iniciar(id: string): Promise<Estetica>;
terminar(id: string, data: TerminarEstetica): Promise<Estetica>;
getHistorial(mascotaId: string): Promise<Estetica[]>;
getAgenda(fecha: Date): Promise<Estetica[]>;
}
interface AgendarEstetica {
mascotaId: string;
estilistaId?: string;
fechaServicio: Date;
servicios: string[];
tipoCorte?: string;
precio?: number;
}
interface TerminarEstetica {
shampooUsado?: string;
observaciones?: string;
observacionesPiel?: string;
precioFinal?: number;
}
```
## Flujos
### Agendar Servicio
```
1. Propietario solicita servicio
2. Verificar disponibilidad de estilista
3. Crear registro de estetica:
- Mascota
- Servicios solicitados
- Tipo de corte (si aplica)
- Fecha/hora
4. Confirmar con propietario
5. Estado: pendiente
```
### Ejecutar Servicio
```
1. Mascota llega a la clinica
2. Estilista marca inicio
3. Realiza servicios:
- Bano
- Secado
- Corte (si aplica)
- Extras (orejas, unas)
4. Revisar piel/pelaje
5. Registrar observaciones
6. Marcar como terminado
7. Notificar a propietario
8. Agregar a cuenta
```
## Productos/Shampoos
```typescript
const SHAMPOOS = [
{ nombre: 'Shampoo Regular', tipo: 'normal' },
{ nombre: 'Shampoo Antipulgas', tipo: 'antiparasitario' },
{ nombre: 'Shampoo Dermatologico', tipo: 'medicado' },
{ nombre: 'Shampoo Pelo Blanco', tipo: 'especial' },
{ nombre: 'Shampoo Cachorro', tipo: 'suave' },
{ nombre: 'Acondicionador', tipo: 'complemento' }
];
```
## Observaciones de Piel
```typescript
interface ObservacionesPiel {
estado: 'normal' | 'irritada' | 'seca' | 'grasa' | 'con_lesiones';
parasitos: boolean;
pulgas: boolean;
garrapatas: boolean;
hotspots: boolean;
perdidaPelo: boolean;
nudos: 'ninguno' | 'pocos' | 'muchos';
notas: string;
}
```
## Panel de Estetica
```
┌─────────────────────────────────────────────────────────┐
│ ESTETICA - Agenda del Dia (07/01/2026) │
├─────────────────────────────────────────────────────────┤
│ 09:00 │ 🐕 Firulais │ Bano + Corte │ ✓ Terminado │
│ 10:30 │ 🐈 Michi │ Bano │ ⏳ En proceso │
│ 11:30 │ 🐕 Rocky │ Deslanado │ ⏸ Pendiente │
│ 14:00 │ 🐕 Luna │ Bano + Corte │ ⏸ Pendiente │
│ 15:30 │ 🐕 Max │ Corte unas │ ⏸ Pendiente │
├─────────────────────────────────────────────────────────┤
│ Estilistas: Ana (4 servicios), Carlos (1 servicio) │
└─────────────────────────────────────────────────────────┘
```
## Precios Sugeridos
| Servicio | Pequeno | Mediano | Grande |
|----------|---------|---------|--------|
| Bano | $150 | $200 | $300 |
| Corte | $200 | $300 | $450 |
| Bano + Corte | $300 | $450 | $650 |
| Deslanado | $200 | $300 | $400 |
| Limpieza oidos | $50 | $50 | $50 |
| Corte unas | $50 | $50 | $50 |
## Entregables
| Entregable | Estado | Archivo |
|------------|--------|---------|
| DDL estetica | Completado | `database/schemas/01-veterinaria-schema-ddl.sql` |
| estetica.module.ts | Pendiente | `backend/modules/estetica/` |
| EsteticaAgenda.tsx | Pendiente | `frontend/components/` |
| EsteticaForm.tsx | Pendiente | `frontend/components/` |
## Dependencias
### Depende de
- VET-001 (Mascotas)
- Employees (erp-core)
### Bloquea a
- Reportes de productividad
- App para propietarios
## Criterios de Aceptacion
- [ ] Agendar servicio funciona
- [ ] Lista de servicios configurable
- [ ] Estados se actualizan
- [ ] Hora inicio/fin se registra
- [ ] Observaciones de piel
- [ ] Historial por mascota
- [ ] Precio se calcula
---
**Ultima actualizacion:** 2026-01-07