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:
249
docs/CONTEXT_SESSION_2026-01-29.md
Normal file
249
docs/CONTEXT_SESSION_2026-01-29.md
Normal 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*
|
||||
Reference in New Issue
Block a user