## 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.*
3.8 KiB
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
- Organización: Datos de negocio separados de datos de referencia
- Seguridad: Permisos granulares por schema
- Mantenimiento: Facilita respaldos y migraciones selectivas
- Escalabilidad: Permite distribuir schemas en el futuro
- Claridad: Separación lógica de responsabilidades
⚠️ Consideraciones Importantes
- Migraciones: Las nuevas migraciones deben especificar el schema
a76 - Permisos DB: El usuario de base de datos necesita permisos en ambos schemas
- Testing: Los tests deben considerar la estructura de schemas
- Backup: Configurar respaldos para incluir ambos schemas
📝 Próximos Pasos
- Crear migraciones de Alembic con el schema correcto
- Verificar permisos de base de datos para el usuario de aplicación
- Actualizar tests para considerar la estructura de schemas
- 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