Files
plantillas-proyectos/docs/SCHEMA_A76_UPDATE.md
acazares 29f637a5ee Refactor pedimento-related interfaces and forms to standardize date and payment fields
- 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.
2025-11-07 10:08:55 -06:00

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*