- Updated `PedimentoDates`, `PedimentoPayments`, `PedimentoTransportMeans`, and `PedimentoValidation` interfaces to include new fields and rename existing ones for consistency. - Modified forms in Svelte components to reflect the updated interfaces, including new input fields for various dates and payment details. - Enhanced status handling in the dashboard to accommodate new status options and improve user feedback. - Implemented token validation on the server-side to ensure secure access to the dashboard. - Cleaned up login logic to prevent redirection loops when tokens are present but potentially expired.
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 | company |
a76 |
✅ Actualizada |
| Client & Provider | client_provider |
a76 |
✅ Actualizada |
| Client & Provider | client_provider_address |
a76 |
✅ Actualizada |
| Client & Provider | client_provider_programs |
a76 |
✅ Actualizada |
| GParts | parts |
a76 |
✅ Actualizada |
| Class | classes |
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 Company(Base):
__tablename__ = "company"
# DESPUÉS
class Company(Base):
__tablename__ = "company"
__table_args__ = {"schema": "a76"}
2. Foreign Keys Actualizadas
# ANTES
client_id = Column(String(8), ForeignKey('client_provider.client_id'), ...)
# DESPUÉS
client_id = Column(String(8), ForeignKey('a76.client_provider.client_id'), ...)
🏗️ Estructura de Schemas
PostgreSQL Database
├── Schema: public
│ ├── countries
│ ├── currency_types
│ ├── material_types
│ └── ... (reference data)
│
└── Schema: a76
├── tenants
├── licenses
├── license_usage
├── company
├── client_provider
├── client_provider_address
├── client_provider_programs
├── parts
└── classes
🔗 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:
# Part (a76) → Country (public)
country_of_origin = Column(String(3), ForeignKey('public.countries.m3_key'))
# Part (a76) → CurrencyType (public)
currency_key = Column(String(3), ForeignKey('public.currency_types.code'))
# Class (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