se agrego archivo Proyecto SAP React Next.js
This commit is contained in:
1 parent
b2b9ed6cca
commit
b2794978b0
2 files changed
+613
-1
No files matched your search
@@ -46,6 +46,31 @@ git add .
|
|||||||
git commit -m "primer commit"
|
git commit -m "primer commit"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 6.1 Commit de un proyecto dentro de una Solución
|
||||||
|
```bash
|
||||||
|
git add ProyectoA/
|
||||||
|
git status
|
||||||
|
git commit -m "mensaje commit para los archivos modificados del proyecto"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6.2 Commit de un archivo específico dentro de un proyecto
|
||||||
|
```bash
|
||||||
|
git add ProyectoA/FacturaNegociable.cs
|
||||||
|
git status
|
||||||
|
git commit -m "mensaje commit para el archivo especifico del proyecto"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. 3 Git reset , quita todos los archivos del staging area que coloco git add, reversa el git add antes del git commit
|
||||||
|
```bash
|
||||||
|
git reset
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. 4 Git reset , si ya hice commit, pero aún no hice push
|
||||||
|
```bash
|
||||||
|
git reset --soft HEAD~1
|
||||||
|
git reset
|
||||||
|
```
|
||||||
|
|
||||||
## 7. Crear repositorio en Gitea
|
## 7. Crear repositorio en Gitea
|
||||||
- Nombre: descarga_adjuntos_correos_cpe
|
- Nombre: descarga_adjuntos_correos_cpe
|
||||||
- Sin README
|
- Sin README
|
||||||
@@ -61,7 +86,7 @@ http://100.68.242.27:30000/george/descarga_adjuntos_correos_cpe.git
|
|||||||
git remote add origin http://100.68.242.27:30000/george/descarga_adjuntos_correos_cpe.git
|
git remote add origin http://100.68.242.27:30000/george/descarga_adjuntos_correos_cpe.git
|
||||||
```
|
```
|
||||||
|
|
||||||
## 10. Subir código
|
## 10. Subir código por primera vez
|
||||||
```bash
|
```bash
|
||||||
git branch -M main
|
git branch -M main
|
||||||
git push -u origin main
|
git push -u origin main
|
||||||
|
|||||||
@@ -0,0 +1,587 @@
|
|||||||
|
# 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
|
||||||
Reference in new issue
Block a user