Files
plantillas-proyectos/docs/SCHEMA_A76_UPDATE.md
acazares ef5c40af92 feat: Implement client and provider management service
- Added service layer for handling client and provider operations including creation, retrieval, updating, and deletion.
- Introduced DTOs for data transfer and validation.
- Implemented filtering and pagination for client/provider listing.
- Added logging for better traceability of operations.

feat: Create parts management module

- Developed a complete module for managing parts/components including creation, retrieval, updating, and deletion.
- Introduced DTOs for parts with detailed attributes and validation.
- Implemented search and filtering capabilities for parts based on various criteria.
- Added endpoints for regulatory information retrieval and parts statistics.
- Integrated logging for error handling and operational insights.
2025-11-06 20:29:18 -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** | `gcompany` | `a76` | ✅ Actualizada |
| **Client & Provider** | `client_provider` | `a76` | ✅ Actualizada |
| **Client & Provider** | `gclient_provider_address` | `a76` | ✅ Actualizada |
| **Client & Provider** | `gclient_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 GCompany(Base):
__tablename__ = "gcompany"
# DESPUÉS
class GCompany(Base):
__tablename__ = "gcompany"
__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
├── gcompany
├── client_provider
├── gclient_provider_address
├── gclient_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*