- 
Contexto: - Coordinar los turnos de guardia para cada servicio monitoreado por semana
 
- 
Sistema que permite: - Indicar la disponibilidad de tiempo en la semana de cada ingeniero del equipo
- Asignar a ingenieros a turnos de monitoreo de servicios.
- Visualizar los turnos asignados
 
- Gestión de Turnos:
- Facilita la visualización de los turnos asignados
- Asegura que la información sobre las horas sin asignar sea clara y accesible.
- Gestión de Disponibilidad:
- Permite a los ingenieros
- Seleccionar el servicio y la semana,
- Visualizar su disponibilidad
- Marcar su disponibilidad.
 
- Los ingenieros se reunen para organizar su disponibilidad y turnos
- Se revisa los turnos indicados por el servicio de empresa para esa semana
- Se pasa a consultar a cada ingeniero (segun el servicio que le toca esa semana) su disponibilidad para esa semana. Al finalizar se presiona en "Guardar".
- Se regresa a revisar los turnos asignados automaticamente para la semana segun el servicio.
- 1st Dropdown (Services)
- GET /api/company_services
- example response
 
- 2nd Dropdown (Weeks)
- GET /api/company_services/:id/weeks
- example response
 
- Engineers Table
- GET /api/company_services/:id/engineers?week=YYYY-WW
- example response
 
- Shifts Table
- GET /api/company_services/:id/shifts?week=YYYY-WW
- example response
 
- Dropdowns anteriores (gestion de turnos) para el filtrado y llenado de semana
- Boton Editar Disponibilidad: Consultar Disponibilidad de ingenieros
- GET /api/company_services/:id/engineers/availability?week=YYYY-WW
- example response
 
- Updates Engineer Availability
- POST /api/company_services/:id/engineers/availability
- week
- availability (array)
- engineer_id
- time_blocks (array)
- day
- start_time
- end_time
- available
 
 
 
 
- POST /api/company_services/:id/engineers/availability
- Servicios monitoreados
- Contrato: Fechas Establecidas
- Engineer
- CompanyServiceEngineer
- Asignar 3 ingenieros encargados del servicio durante el contrato.
- Shift (Turno) - bloques de 1 hora
- Contrato: Horas por dia de semana establecidas (grupo de bloques)
- EngineerShift
- Bloque asignado a ingeniero
- Availability (Disponibilidad) - Must: engineer
- 
CompanyService id: 1 name: "Service A" contract_start_date: "2024-08-01" contract_end_date: "2024-08-31" 
- 
Engineer id: 1 name:"Alice Smith" color:"Bob Johnson" 
- 
Shift company_service:1 engineer:(sin asignar) week:"2024-32" day:"Monday" start_time:"2024-08-07 09:00:00" end_time:"2024-08-07 10:00:00" 
- 
Availability engineer:1 week:"2024-32" day:"Monday" start_time:"2024-08-07 09:00:00" end_time:"2024-08-07 10:00:00" available:true 
# 1. CompanyService
FactoryBot.attributes_for :company_service
=> {:name=>"Farrell, Mohr and Haley", :contract_start_date=>Thu, 18 Jul 2024, :contract_end_date=>Tue, 20 Aug 2024}
# 2. Engineer
FactoryBot.attributes_for :engineer
=> {:name=>"Russell Hermann", :color=>"#0c0d0d"}
# 3. CompanyServiceEngineer
#FactoryBot.attributes_for :company_service_engineer
# 4. Shift
FactoryBot.attributes_for :shift
=> {:week=>"2024-32", :day=>"Tuesday", :start_time=>"13:00", :end_time=>"18:00"}
# 5. EngineerShift
# 6. Availability
FactoryBot.attributes_for :availability- View
- Components
- provider: useShiftManagement
- CompanyServiceApi.ts
 
 
- provider: useShiftManagement
 
- Components
- 
Se ha usado Devcontainer y docker-compose para facilitar el desarrollo usando contenedores y vscode 
- 
Pasos para ejecutar: - Tener instalado la extension Devcontainer en vscode
- Abrir el proyecto en vscode
- Ejecutar el contenedor Rails API Container:
- abrir command palette: ctrl + shift + p
- Seleccionar: Reopen in container
- Seleccionar: "Rails API Container"
- Dentro ejecutar:
rails db:setup rails s -b 0.0.0.0 
 
- Ejecutar el contenedor Vue Container:
- abrir command palette: ctrl + shift + p
- Seleccionar: Reopen in container
- Seleccionar: "Vue Container"
- Dentro ejecutar mocked: yarn dev
- (alternativa) Dentro ejecutar api: yarn serve:api
 
- navegar a 0.0.0.0:8080 para empezar a usar la app
 
- 
Ejecutar tests e2e: # Conectarse a contenedor de playwright docker exec -it monit-playwright /bin/bash # ejectuar tests yarn test:e2e 
- usar directamente docker-compose up desde la ruta base
docker-compose -f .devcontainer/docker-compose.yml up
# verificar los servicios- navegar a 0.0.0.0:8080 para empezar a usar la app



