- 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.
126 lines
3.8 KiB
Markdown
126 lines
3.8 KiB
Markdown
# 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
|
|
```python
|
|
# ANTES
|
|
class Company(Base):
|
|
__tablename__ = "company"
|
|
|
|
# DESPUÉS
|
|
class Company(Base):
|
|
__tablename__ = "company"
|
|
__table_args__ = {"schema": "a76"}
|
|
```
|
|
|
|
#### 2. Foreign Keys Actualizadas
|
|
```python
|
|
# 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:
|
|
```python
|
|
# 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
|
|
|
|
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:
|
|
|
|
```bash
|
|
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* |