ByeCode · Arquitectura y evaluación del prototipo
<aside> 📌
Decisión de stack: Laravel + React + Inertia.js, con navegación SPA y sin API REST separada para la interfaz. PostgreSQL, Eloquent, Vite, TypeScript, Tailwind, shadcn/ui, jobs Laravel, Pest y OpenAI desde el servidor.
Estado: diseño y plan de pruebas completos; auditoría estática del kit público realizada. La aplicación, las llamadas al modelo y las pruebas de funcionamiento todavía están pendientes de implementación y ejecución.
</aside>
ByeCode · Diseño de implementación · Versión 1.0 · 10 de octubre de 2026.
Este apartado convierte el Modelo de IA y su flujo de información en una aplicación Laravel. El stack fue acordado con el usuario. Los módulos, tablas y rutas siguientes son decisiones de diseño propuestas; todavía no existe una aplicación implementada ni un despliegue verificado.
ByeCode será un monolito modular Laravel con React e Inertia.js, con navegación tipo SPA y un mismo repositorio. Laravel recibirá las solicitudes, controlará el estado y entregará a React las propiedades autorizadas de cada página. Inertia permite este modelo con rutas y controladores del servidor; el starter kit oficial integra React, TypeScript, Tailwind y shadcn/ui. Documentación de Laravel.
| Capa | Tecnología acordada | Responsabilidad en ByeCode |
|---|---|---|
| Backend | Laravel + PHP | Ingesta, sesiones, permisos, reglas, orquestación y publicación. |
| Frontend | React + TypeScript | Listado de casos, historial, explicación, estados y formularios. |
| Unión frontend/backend | Inertia.js | Navegación, envío de formularios y propiedades de página. |
| Construcción | Vite | Compilar los recursos del frontend. |
| Interfaz | Tailwind CSS + shadcn/ui | Componentes visuales y diseño consistente. |
| Persistencia | PostgreSQL + Eloquent | Eventos, estado, evaluaciones, recomendaciones y trazabilidad. |
| Procesamiento diferido | Jobs y colas de Laravel | Evaluaciones de IA y reintentos controlados. |
| IA | OpenAI API desde Laravel | Interpretación semántica y propuesta estructurada. |
| Pruebas del backend | Pest | Reglas, importación, persistencia, rutas y publicación. |
Las versiones concretas se fijarán en los archivos de dependencias al iniciar la implementación. El modelo de IA, sus límites de consumo y el proveedor de hosting permanecen pendientes. Next.js deja de formar parte de esta arquitectura; Supabase y Vercel no son dependencias confirmadas.
El flujo mínimo del reto debe cargar el kit JSONL, agrupar casos, deduplicar eventos, interpretar mensajes mediante IA, aplicar R1–R6, conservar decisiones anteriores y exportar un array JSON. Un botón de evaluación es suficiente según el documento oficial. Reto, pp. 1–3 (Reto_Byecode_Participantes_24h.pdf, copia local del proyecto).
| Entrega inicial | Ampliación del producto |
|---|---|
Importación de manifest.json, events.jsonl y updates.jsonl. |
Conectores autorizados de cotizaciones, CRM, almacén y producción. |
| Historial, métricas temporales y restricciones por caso. | Versiones de cotización, líneas, tallas, stock, capacidad y aceptaciones parciales. |
| Recomendación, evidencia, incertidumbre y comparación antes/después. | Ranking de cartera, revisión humana y feedback ampliado. |
| Exportación de los once campos oficiales. | Informes operativos y exportaciones adicionales con contratos separados. |
La especialización de prendas blank no debe alterar los casos oficiales: una pregunta sobre instalación o entrega se interpreta según su propio contexto. No se agregará información del nicho para completar artificialmente el kit.
flowchart TD
UI["React: casos, historial y recomendaciones"] --> WEB["Rutas web Laravel e Inertia"]
FILE["Kit JSONL y manifest"] --> IMP["Importador y adaptador del kit"]
WEB --> IMP
IMP --> DB[("PostgreSQL: historial, estado y trabajo pendiente")]
WEB --> EVAL["Solicitud de evaluación"]
EVAL --> DB
DB --> JOB["Worker Laravel"]
JOB --> SNAP["Contexto inmutable y restricciones"]
SNAP --> AI["Adaptador OpenAI"]
AI --> CHECK["Contrato, evidencia, reglas y vigencia"]
CHECK --> PUB["Recomendación o error explícito"]
PUB --> DB
DB --> WEB
WEB --> UI
WEB --> OUT["Exportación JSON oficial"]