6.7 KiB
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
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
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
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
/app
/api
/services
/repositories
/schemas
/models
/validators
/middlewares
/core
/integrations
/sap
/utils
/queries
Funcionalidades Backend Iniciales
1. Login SAP técnico
Endpoint:
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:
EmployeesInfo
del Service Layer.
Usuarios
Los usuarios funcionales estarán en:
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:
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
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:
CardType + LicTradNum
Ejemplo:
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
/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