- 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>
251 lines
7.0 KiB
Markdown
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
|