Files
plantillas-proyectos/docs/SCHEMA_A76_UPDATE.md
Kevin Rosales c1dee97092 # Reporte de Trabajo - 5 de Noviembre de 2025
## Cambios Realizados

### 1. **Modelos**
- Se actualizaron los modelos para incluir el esquema  en las tablas:
  -
  -
  -
  -
- Ajustes en relaciones y claves foráneas para garantizar consistencia con el esquema .
- Se añadieron anotaciones de tipo y mejoras en la documentación de los modelos.

### 2. **Servicios**
- Implementación de lógica de negocio en  para el módulo :
  - Creación, actualización, eliminación y búsqueda de partes.
  - Métodos para estadísticas y manejo de estados habilitado/deshabilitado.

### 3. **Migraciones**
- Creación de nuevas migraciones de Alembic para las tablas:
  -
  -
  -
  -
  - Tablas relacionadas con direcciones y programas de clientes/proveedores.

### 4. **Documentación**
- Actualización de :
  - Detalles de las nuevas funcionalidades implementadas.
  - Endpoints REST API agregados para los módulos.
  - Relaciones principales entre tablas.
- Actualización de :
  - Cambios realizados en los modelos para usar el esquema .
  - Beneficios de la separación de esquemas.
  - Próximos pasos para completar la integración.

## Próximos Pasos
1. Verificar las migraciones generadas y aplicarlas en el entorno de desarrollo.
2. Implementar pruebas unitarias para los nuevos servicios y modelos.

---

*Documento generado automáticamente el 5 de noviembre de 2025.*
2025-11-05 22:38:58 -06:00

3.8 KiB

Actualización de Schemas A76

Fecha de actualización: 5 de noviembre de 2025


Modelos Actualizados al Schema A76

Se han actualizado todos los modelos en api/v1/modules/a76/ para usar el schema a76 en PostgreSQL.

📋 Tablas Configuradas

Módulo Tabla Schema Estado
Company gcompany a76 Actualizada
Client & Provider gclient_provider a76 Actualizada
Client & Provider gclient_provider_address a76 Actualizada
Client & Provider gclient_provider_programs a76 Actualizada
GParts gparts a76 Actualizada
GClass gclasses a76 Actualizada
Licenses licenses a76 Ya estaba
Licenses license_usage a76 Ya estaba
Tenants tenants a76 Ya estaba

🔄 Cambios Realizados

1. Configuración de Schema

# ANTES
class GCompany(Base):
    __tablename__ = "gcompany"

# DESPUÉS  
class GCompany(Base):
    __tablename__ = "gcompany"
    __table_args__ = {"schema": "a76"}

2. Foreign Keys Actualizadas

# ANTES
client_id = Column(String(8), ForeignKey('gclient_provider.client_id'), ...)

# DESPUÉS
client_id = Column(String(8), ForeignKey('a76.gclient_provider.client_id'), ...)

🏗️ Estructura de Schemas

PostgreSQL Database
├── Schema: public
│   ├── countries
│   ├── currency_types  
│   ├── material_types
│   └── ... (reference data)
│
└── Schema: a76
    ├── tenants
    ├── licenses
    ├── license_usage
    ├── gcompany
    ├── gclient_provider
    ├── gclient_provider_address
    ├── gclient_provider_programs
    ├── gparts
    └── gclasses

🔗 Relaciones Mantenidas

Las relaciones entre schemas funcionan correctamente:

  • A76 → Public: Los modelos A76 pueden referenciar datos de referencia en public
  • A76 → A76: Las relaciones internas del schema A76 están actualizadas
  • Composite Keys: Las relaciones con claves compuestas funcionan correctamente

Ejemplos de Relaciones Cross-Schema:

# GPart (a76) → Country (public)
country_of_origin = Column(String(3), ForeignKey('public.countries.m3_key'))

# GPart (a76) → CurrencyType (public) 
currency_key = Column(String(3), ForeignKey('public.currency_types.code'))

# GClass (a76) → MaterialType (public)
material_key = Column(String(10), ForeignKey('public.material_types.key'))

🎯 Beneficios de la Separación

  1. Organización: Datos de negocio separados de datos de referencia
  2. Seguridad: Permisos granulares por schema
  3. Mantenimiento: Facilita respaldos y migraciones selectivas
  4. Escalabilidad: Permite distribuir schemas en el futuro
  5. Claridad: Separación lógica de responsabilidades

⚠️ Consideraciones Importantes

  1. Migraciones: Las nuevas migraciones deben especificar el schema a76
  2. Permisos DB: El usuario de base de datos necesita permisos en ambos schemas
  3. Testing: Los tests deben considerar la estructura de schemas
  4. Backup: Configurar respaldos para incluir ambos schemas

📝 Próximos Pasos

  1. Crear migraciones de Alembic con el schema correcto
  2. Verificar permisos de base de datos para el usuario de aplicación
  3. Actualizar tests para considerar la estructura de schemas
  4. Documentar convenciones de naming para futuros modelos

🔧 Comando de Verificación

Para verificar que todos los modelos tienen el schema correcto:

grep -r "__table_args__ = {\"schema\": \"a76\"}" backend/api/v1/modules/a76/*/models.py

Resultado esperado: 8 coincidencias (una por cada modelo A76)


Actualización completada el 5 de noviembre de 2025