docs: Add session context document for continuity

Complete project state documentation including:
- System architecture and services
- Implemented features (content engine, threads, interactions, reports)
- Scheduled tasks and database schema
- Useful commands and pending items

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-30 09:00:19 +00:00
parent b6823651e0
commit cf1e06bb11

View File

@@ -0,0 +1,249 @@
# Contexto del Proyecto - Sesión 29 Enero 2026
## Resumen Ejecutivo
Sistema de automatización de redes sociales para **Consultoría AS** (Tijuana, México). Publica contenido automáticamente en X (Twitter), con soporte futuro para Facebook, Instagram y Threads.
## Estado Actual del Sistema
### Servicios en Ejecución (Docker Compose)
| Servicio | Puerto | Descripción |
|----------|--------|-------------|
| `app` | 8000 | FastAPI backend + Dashboard |
| `worker` | - | Celery worker para tareas async |
| `beat` | - | Celery beat scheduler |
| `db` | 5432 | PostgreSQL |
| `redis` | 6379 | Broker para Celery |
### Credenciales Configuradas (.env)
- **X (Twitter)**: Configurado y funcionando (plan de pago activo - $5 USD)
- **DeepSeek API**: Configurado para generación de contenido
- **Telegram Bot**: Configurado para notificaciones
- **Odoo**: Configurado pero no probado
## Funcionalidades Implementadas
### 1. Content Generation Engine v2
Motor de generación de contenido con IA usando DeepSeek.
**Arquitectura modular:**
```
app/services/ai/
├── __init__.py # Exports y singletons
├── prompt_library.py # Carga prompts YAML
├── context_engine.py # Anti-repetición + best performers
├── generator.py # Generador principal
├── platform_adapter.py # Adapta contenido por plataforma
└── validator.py # Scoring de calidad con IA
```
**Biblioteca de prompts:**
```
app/prompts/
├── personalities/ # Tonos de comunicación
├── templates/ # Tipos de contenido (tip, thread, promo)
├── examples/ # Ejemplos para few-shot learning
└── platforms/ # Reglas por plataforma
```
**API Endpoints:**
- `POST /api/v2/generate` - Genera contenido con el motor v2
- `GET /api/v2/templates` - Lista templates disponibles
### 2. Publicación de Hilos (Threads)
Los hilos se detectan automáticamente cuando el template es "thread".
**Formato de hilo:**
```
1/ Primer tweet del hilo...
2/ Segundo tweet...
3/ Tercer tweet...
```
**Flujo:**
1. Generador detecta template "thread"
2. Parsea posts separados por `N/` pattern
3. `publish_thread()` publica como self-replies
4. Se guarda el ID del primer tweet
### 3. Calendario de Contenido
**24 posts programados para Febrero 2026:**
- 12 tips tecnológicos (lunes, miércoles, viernes 10:00 AM)
- 4 hilos educativos (miércoles 12:00 PM)
- 8 posts promocionales de servicios (domingos 3:00 PM)
**Visualización:**
- Dashboard: `/calendar`
- API: `GET /api/calendar/posts/view?start_date=2026-02-01&days=28`
### 4. Tracking de Interacciones
**Tipos de interacciones capturadas:**
| Tipo | Descripción |
|------|-------------|
| `mention` | Tweets que mencionan @ConsultASTJ |
| `comment` | Respuestas a posts publicados |
| `follow` | Nuevos seguidores |
**Filtros implementados:**
- Excluye auto-respuestas (tweets del propio sistema)
- Detecta duplicados (mismo tweet como mención y comentario)
- Guarda username real (no solo ID numérico)
**Datos capturados por follower:**
- Username, nombre, bio, avatar URL
### 5. Reportes Diarios por Telegram
**Reporte Matutino (8:00 AM Tijuana):**
- Posts programados para el día
- Nuevos followers (24h)
- Interacciones pendientes
**Reporte Vespertino (6:00 PM Tijuana):**
- Posts publicados hoy
- Posts programados mañana
- Nuevos followers del día
- Interacciones sin responder
### 6. Dashboard Web
**URL:** `http://localhost:8000/`
**Secciones:**
- Stats (posts hoy/semana, pendientes, programados)
- Pendientes de aprobación
- Próximas publicaciones
- Publicaciones recientes (nuevo)
- Interacciones recientes
- Estado de plataformas
## Tareas Programadas (Celery Beat)
| Tarea | Frecuencia | Descripción |
|-------|------------|-------------|
| `publish_scheduled_posts` | Cada minuto | Publica posts cuyo `scheduled_at` llegó |
| `fetch_all_interactions` | Cada 5 min | Obtiene menciones, comentarios, followers |
| `generate_scheduled_content` | Cada hora | Genera contenido según calendario |
| `morning_report` | 8:00 AM | Reporte Telegram matutino |
| `afternoon_report` | 6:00 PM | Reporte Telegram vespertino |
| `daily_cleanup` | 3:00 AM | Limpieza de datos antiguos |
| `update_engagement_scores` | Cada 6h | Actualiza scores de engagement |
| `refresh_best_posts_yaml` | Domingos 5 AM | Regenera best_posts.yaml |
## Base de Datos
### Tablas Principales
```sql
-- Posts
posts (id, content, content_x, platforms, status, scheduled_at, published_at, platform_post_ids, content_type, ...)
-- Interacciones
interactions (id, platform, interaction_type, external_id, author_username, author_name, content, responded, ...)
-- Memoria de contenido (anti-repetición)
content_memory (id, content_hash, keywords, template_used, platform, engagement_score, ...)
```
### Post Publicado de Prueba
```
ID: 31
Tipo: hilo_educativo
Plataforma: X
X Post ID: 2016630637961351287
URL: https://x.com/i/web/status/2016630637961351287
Tema: "3 errores al usar ChatGPT"
```
## Archivos Clave Modificados en Esta Sesión
```
app/api/routes/dashboard.py # Agregada sección recent_published
app/publishers/x_publisher.py # Filtro self-replies + get_followers()
worker/tasks/fetch_interactions.py # Tracking followers + deduplicación
worker/tasks/daily_reports.py # Nuevo: reportes Telegram
worker/celery_app.py # Schedule de reportes
dashboard/templates/index.html # UI para publicaciones recientes
```
## Comandos Útiles
```bash
# Reiniciar servicios
docker compose up -d --build app worker
# Ver logs del worker
docker compose logs worker --tail=50
# Ejecutar task manualmente
docker compose exec app python -c "
from worker.tasks.fetch_interactions import fetch_platform_interactions
print(fetch_platform_interactions('x'))
"
# Ver posts programados
docker compose exec db psql -U social_user -d social_automation -c "
SELECT id, status, scheduled_at, content_type FROM posts
WHERE status = 'scheduled' ORDER BY scheduled_at LIMIT 10;
"
# Ver interacciones
docker compose exec db psql -U social_user -d social_automation -c "
SELECT id, interaction_type, author_username, content FROM interactions
ORDER BY interaction_at DESC LIMIT 10;
"
# Enviar reporte de prueba
docker compose exec worker python -c "
from worker.tasks.daily_reports import morning_report
print(morning_report())
"
```
## Pendientes / Ideas Futuras
1. **Integración Meta (Facebook/Instagram/Threads)**
- Credenciales en .env pero sin access token
- Publishers existen pero no probados
2. **Respuestas Automáticas**
- Infraestructura lista (`responded`, `response_content` en interactions)
- Falta implementar lógica de respuesta con IA
3. **Analytics Dashboard**
- Endpoint `/analytics` existe
- Falta poblar con datos reales de engagement
4. **A/B Testing**
- Modelo y rutas existen
- Falta implementar comparación de variantes
5. **Integración Odoo**
- Credenciales configuradas
- Sync de leads pendiente de probar
## Cuenta de X
- **Username:** @ConsultASTJ
- **User ID:** 2016319840709918720
- **Plan:** Básico con $5 USD de crédito
## Contacto / Negocio
- **Empresa:** Consultoría AS
- **Ubicación:** Tijuana, México
- **Website:** https://consultoria-as.com
- **Servicios:** Consultoría tecnológica, automatización, IA
---
*Documento generado el 29 de enero de 2026*