# Proyecto ERP Web Empresarial Integrado con SAP Business One Service Layer # Objetivo General Desarrollar una aplicación web empresarial para mantenimiento de datos maestros de Socios de Negocio similar al formulario estándar de SAP Business One. La solución utilizará: - Frontend: - React.js - Next.js - TypeScript - Backend: - Python - FastAPI - Integración: - SAP Business One Service Layer --- # Filosofía de Arquitectura La solución debe: - Ser escalable - Ser desacoplada - Tener arquitectura por capas - Tener código mantenible - Tener funciones pequeñas y reutilizables - Aplicar principios SOLID - Tener separación de responsabilidades - Tener documentación técnica --- # Arquitectura General ```mermaid flowchart TD A[Frontend Next.js] --> B[Backend FastAPI] B --> C[SAP Business One Service Layer] C --> D[SAP Business One Database] ``` --- # Tecnologías # Frontend - React.js - Next.js - TypeScript - React Hook Form - Zod - Axios - Zustand - TailwindCSS - Shadcn UI --- # Backend - Python - FastAPI - Pydantic - SQLAlchemy - httpx - passlib[bcrypt] - JWT Authentication --- # Integración SAP - SAP Business One Service Layer - Session Management - B1SESSION - ROUTEID --- # Estrategia de Desarrollo por Etapas # IMPORTANTE NO desarrollar frontend y backend simultáneamente. El proyecto debe ejecutarse por etapas para: - minimizar errores - facilitar pruebas - mantener arquitectura limpia - evitar acoplamiento prematuro --- # ETAPA 1 - Diseño de Arquitectura ## Objetivo Definir completamente la arquitectura antes de programar. --- ## Tareas ### 1. Crear diagramas Mermaid Crear: - arquitectura general - flujo login - flujo CRUD - flujo Service Layer - arquitectura backend - arquitectura frontend --- ## Diagramas recomendados ### Flujo Login ```mermaid sequenceDiagram Frontend->>Backend: Login usuario Backend->>SAP Service Layer: Login técnico SAP SAP Service Layer-->>Backend: B1SESSION Backend->>SAP Service Layer: Consultar EmployeesInfo SAP Service Layer-->>Backend: Datos usuario Backend-->>Frontend: JWT ``` --- ### Arquitectura Backend ```mermaid flowchart TD A[Routes] --> B[Services] B --> C[Repositories] C --> D[SAP Integration] D --> E[Service Layer] ``` --- # Resultado esperado ETAPA 1 - Diagramas completos - Arquitectura definida - Carpetas definidas - Responsabilidades definidas --- # ETAPA 2 - Backend Base # IMPORTANTE Primero construir backend. Razones: - frontend depende APIs - frontend depende autenticación - frontend depende estructura JSON - frontend depende validaciones --- # Objetivos ETAPA 2 Construir: - estructura FastAPI - autenticación - integración SAP - manejo sesiones - JWT - logging - manejo errores --- # Estructura Backend ```text /app /api /services /repositories /schemas /models /validators /middlewares /core /integrations /sap /utils /queries ``` --- # Funcionalidades Backend Iniciales ## 1. Login SAP técnico Endpoint: ```text POST /auth/login ``` --- ## 2. Session Manager SAP Implementar: - login automático - refresh automático - manejo cookies - timeout - retry policy --- ## 3. JWT propio Implementar: - access token - refresh token - expiración - middleware autenticación --- ## 4. Integración OHEM Usar: ```text EmployeesInfo ``` del Service Layer. --- # Usuarios Los usuarios funcionales estarán en: ```text OHEM ``` mediante Service Layer. --- # UDFs requeridos | Campo | Uso | |---|---| | U_APP_USERNAME | Usuario | | U_APP_PASSWORD | Password hash | | U_APP_ROLE | Rol | | U_APP_ACTIVE | Estado | --- # Seguridad Passwords Usar: ```text bcrypt ``` Nunca guardar passwords en texto plano. --- # Resultado esperado ETAPA 2 - Backend funcionando - Login funcionando - JWT funcionando - Integración SAP funcionando --- # ETAPA 3 - CRUD Socios de Negocio # Objetivo Implementar CRUD Business Partners. --- # Entidad principal ```text BusinessPartners ``` --- # Campos OCRD | Campo | Uso | |---|---| | CardCode | Código | | CardName | Nombre | | CardType | Tipo | | LicTradNum | Documento | | Phone1 | Teléfono | | E_Mail | Correo | | Currency | Moneda | | GroupCode | Grupo | --- # Campos CRD1 | Campo | Uso | |---|---| | Address | Dirección | | Country | País | | Street | Calle | | ZipCode | Código Postal | | AdresType | Tipo | --- # Reglas de negocio ## LicTradNum Debe: - tener 8 caracteres - ser numérico --- ## CardCode Debe autogenerarse: ```text CardType + LicTradNum ``` Ejemplo: ```text C12345678 ``` --- # Operaciones CRUD | Operación | Método | |---|---| | Listar | GET | | Obtener | GET | | Crear | POST | | Actualizar | PATCH | | Eliminar | DELETE/PATCH | --- # Resultado esperado ETAPA 3 - CRUD completo - Validaciones - Integración real SAP --- # ETAPA 4 - Queries Optimizados # Objetivo Mejorar performance. --- # IMPORTANTE NO usar entidades completas SAP para listados masivos. --- # Estrategia ## Escrituras Usar: - Service Layer estándar --- ## Lecturas masivas Usar: - SQLQueries - queries optimizados - paginación --- # Resultado esperado ETAPA 4 - Listados rápidos - Filtros - Paginación --- # ETAPA 5 - Frontend Base # Objetivo Construir frontend luego de estabilizar backend. --- # Estructura Frontend ```text /src /app /components /services /hooks /layouts /store /validators /types /utils ``` --- # Pantallas Iniciales ## Login Campos: - usuario - password - company db --- ## Master Layout - sidebar - header - content --- ## Socio de Negocio - formulario OCRD - grid CRD1 - CRUD - validaciones --- # Resultado esperado ETAPA 5 - Login UI - navegación - consumo APIs --- # ETAPA 6 - Frontend Empresarial # Objetivo Mejorar experiencia usuario. --- # Funcionalidades - loading states - toast notifications - manejo errores - tablas - búsqueda - debounce - paginación - responsive --- # ETAPA 7 - Seguridad y Performance # Objetivo Preparar entorno productivo. --- # Implementar - cache - retry policy - correlation ID - logs - auditoría - middleware seguridad - rate limiting - circuit breaker --- # ETAPA 8 - DevOps y Despliegue # Backend - Docker - Variables entorno - Gunicorn/Uvicorn --- # Frontend - Build Next.js - Reverse proxy --- # Infraestructura - HTTPS - NGINX - SSL - monitoreo --- # Recomendaciones Arquitectónicas ## NO hacer - acceso SQL directo escritura SAP - passwords en texto plano - lógica SAP en frontend - consultas gigantes Service Layer --- # SI hacer - backend desacoplado - funciones pequeñas - validaciones separadas - logs centralizados - manejo global errores --- # Objetivo Final Construir una plataforma empresarial: - mantenible - escalable - desacoplada - compatible con SAP Business One - optimizada para crecimiento futuro