Files
obsidian-vault/005-Learn/Proyecto SAP B1 - FastAPI - React - Next.js.md
T

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