Se diseñaron las siguientes tablas en el archivo schema.prisma:
- Plant: Representa una planta. Cada planta tiene un nombre único.
- Operation: Representa una operación asociada a una planta. Cada operación tiene un nombre único por planta.
- CostConfig: Representa la configuración de costos indirectos para una operación, con volumen (en kg) y costo. Cada combinación de volumen y operación es única.
Relación entre entidades:
- Una planta puede tener muchas operaciones.
- Cada operación puede tener muchos costos indirectos (CostConfig).
- Relación: 1 planta → muchas operaciones → muchos costos indirectos.
Se implementó un backend con las siguientes características:
- Schema GraphQL:
- Permite consultar operaciones y sus costos indirectos por planta.
- Permite crear y editar operaciones y sus costos asociados.
- Resolvers en Node.js:
- Usan Prisma para interactuar con la base de datos.
- Incluyen validaciones y manejo de errores para restricciones únicas.
- Se utiliza un objeto de respuesta genérico para las mutations.
- Se construyó una pantalla similar a la de Figma:
- Listado de operaciones y sus costos indirectos.
- Permite guardar los valores en las columnas de rango de volumen.
- Tecnologías utilizadas:
- Node.js v20
- React 18 + Apollo Client para consumir GraphQL.
- TailwindCSS o Material UI para el diseño.
- Se utilizó la convención de branching
feature/indirect-costs. - Para mantener el branch actualizado con
main, se realizan regularmentegit pull origin mainy se resuelven los conflictos. - Si otro desarrollador edita el mismo archivo
schema.graphql, se revisan los cambios, se conversa sobre la mejor solución y se resuelven los conflictos manualmente, asegurando que ambos aportes se integren correctamente.
- Modelo de DB en Prisma: schema.prisma
- Schema GraphQL + resolvers:
- src/costs/cost-config.resolver.ts
- src/costs/operation.resolver.ts
- src/costs/sample.resolver.ts
- Componentes React que representan la tabla de costos indirectos.
- Instrucciones para correr el proyecto (README.md).
Video (DEMO)
2025-09-01.12-35-49.mp4