Files
2026-05-09 14:00:04 -04:00

248 lines
5.1 KiB
Markdown

# Configuración
## Archivos de Configuración
La configuración está organizada en archivos separados por proyecto en `App/Config/`.
## GeneralConfig.py
Configuraciones globales aplicables a todos los proyectos.
### Base de Datos
```python
# SQL Server Connection
SERVER = "sql.glmanalytics.com"
DATABASES = {
"pg": {"id": "00080001", "name": "glm_pg"},
"feduro": {"id": "00010007", "name": "IS001"}
}
USERNAME = "tu_usuario"
PASSWORD = "tu_password"
```
### Zonas Horarias
```python
TIMEZONES = {
"central": "America/El_Salvador", # UTC-6
"caribbean": "America/Santo_Domingo" # UTC-4
}
```
### Notificaciones
```python
WHATSAPP_WEBHOOK = "https://automation.glmanalytics.com/webhook/wsp-notifcation"
EMAIL_CONFIG = {
"smtp_server": "smtp.gmail.com",
"port": 587,
"username": "tu_email@gmail.com",
"password": "tu_password"
}
```
### FTP Global
```python
FTP_CONFIG = {
"host": "rcomhost.com",
"username": "tu_usuario",
"password": "tu_password",
"base_path": "/www/TranferData_APP_PYTHON"
}
```
## Configuración por Proyecto
### pgConfig.py
Configuración específica para Pentagono Group.
```python
class PGConfig:
name = "pg"
timezone = "central"
reports = [
{"name": "Cobertura", "ftp": True, "sharepoint": True, "n8n": False},
{"name": "Checkout", "ftp": True, "sharepoint": False, "n8n": True},
# ... más reportes
]
sharepoint_config = {
"site_url": "https://pgone.sharepoint.com",
"client_id": "tu_client_id",
"tenant_id": "tu_tenant_id",
"folder_mappings": {
"Cobertura": "/sites/PGReports/Cobertura",
"Checkout": "/sites/PGReports/Checkout"
}
}
```
### feduroConfig.py
Configuración para proyecto FEDURO.
```python
class FeduroConfig:
name = "feduro"
timezone = "caribbean"
reports = [
{"name": "Cobertura", "ftp": False, "sftp": True, "n8n": False},
# ... más reportes
]
sftp_config = {
"host": "tu-azure-container-instance",
"username": "tu_usuario",
"password": "tu_password",
"port": 22,
"path_mappings": {
"Cobertura": "/feduro/reports/cobertura",
"Checkout": "/feduro/reports/checkout"
}
}
```
## Flags de Distribución
Cada reporte puede configurarse para múltiples destinos:
- **ftp:** Subida a servidor FTP
- **sftp:** Subida a servidor SFTP (Azure)
- **sharepoint:** Subida a SharePoint/OneDrive
- **n8n:** Trigger de webhook N8N
## Credenciales Seguras
### Variables de Entorno (Recomendado)
```bash
# Linux/macOS
export DB_USER="usuario_seguro"
export DB_PASSWORD="password_seguro"
export SHAREPOINT_CLIENT_ID="client_id_seguro"
# Windows
set DB_USER=usuario_seguro
set DB_PASSWORD=password_seguro
```
### Modificar Código para Usar Variables
```python
import os
USERNAME = os.getenv("DB_USER", "default_user")
PASSWORD = os.getenv("DB_PASSWORD", "default_password")
```
## Configuración de Docker
### Dockerfile
```dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "main.py"]
```
### docker-compose.yml
```yaml
version: '3.8'
services:
datatransfer:
build: .
ports:
- "5000:5000"
environment:
- DB_USER=${DB_USER}
- DB_PASSWORD=${DB_PASSWORD}
volumes:
- ./Reportes:/app/Reportes
- ./Logs:/app/Logs
```
## Validación de Configuración
### Verificar Conexiones
```python
# Probar conexión DB
from App.Utils.db_utils import DatabaseManager
db = DatabaseManager()
conn = db.get_connection("pg")
# Debería conectar sin errores
# Probar FTP
from App.Utils.ftp_utils import FTPManager
ftp = FTPManager()
ftp.connect()
# Debería conectar sin errores
```
### Validar Reportes
```python
# Verificar que todos los reportes tengan configuraciones válidas
for config in [PGConfig, FeduroConfig]:
for report in config.reports:
assert "name" in report
assert any([report.get("ftp"), report.get("sftp"), report.get("sharepoint"), report.get("n8n")])
```
## Configuración de Producción
### Variables de Entorno
- `FLASK_ENV=production`
- `SECRET_KEY=tu_clave_secreta`
- `LOG_LEVEL=INFO`
### Configuración de Logging
```python
LOGGING_CONFIG = {
"version": 1,
"formatters": {
"detailed": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
}
},
"handlers": {
"file": {
"class": "logging.FileHandler",
"filename": "Logs/app.log",
"formatter": "detailed"
}
},
"root": {
"level": "INFO",
"handlers": ["file"]
}
}
```
## Troubleshooting
### Problemas Comunes
1. **Conexión DB falla:** Verificar credenciales y firewall
2. **FTP timeout:** Revisar configuración de red y credenciales
3. **SharePoint error:** Validar client_id y permisos en Azure AD
4. **SFTP falla:** Confirmar host y puerto de Azure Container Instance
### Logs de Configuración
Los errores de configuración se registran en `Logs/etl.log` con mensajes descriptivos.