first commit
This commit is contained in:
@@ -0,0 +1,248 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user