-
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