Schema
CREATE TABLE correo_chat_queries (
id INTEGER PRIMARY KEY AUTOINCREMENT,
owner TEXT NOT NULL,
question TEXT NOT NULL,
tool_rounds INTEGER NOT NULL DEFAULT 0,
duration_ms INTEGER,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE INDEX idx_correo_chat_queries_created
ON correo_chat_queries(created_at);
Descripción
Telemetría de bajo nivel para el endpoint [[entity—correo—endpoint—ask]] (chat F1). Registra una fila por cada pregunta realizada por un miembro, capturando:
- owner: el miembro que preguntó (
'Edu'|'Dani'|'Txell'). - question: la pregunta misma (truncada a 500 chars).
- tool_rounds: cuántas rondas de búsqueda/lectura ejecutó el Worker.
- duration_ms: latencia total de la llamada.
- created_at: timestamp de inserción.
Propósito
Dato real de la apuesta #9 (WAGERS.md):
Para el 31-08-2026: el chat de F1 usado en ≥3 días distintos y ≥2 peticiones F2 atendidas.
Las queries se consultan así:
-- ¿Cuántos días distintos ha usado el chat cada miembro?
SELECT owner, COUNT(DISTINCT DATE(created_at))
FROM correo_chat_queries
GROUP BY owner;
-- ¿Cuántas preguntas por día?
SELECT DATE(created_at), COUNT(*)
FROM correo_chat_queries
GROUP BY DATE(created_at);
-- Latencias percentil 95, 99?
SELECT
owner,
COUNT(*) as queries,
AVG(duration_ms) as avg_ms,
MAX(duration_ms) as max_ms
FROM correo_chat_queries
GROUP BY owner;
Registración Best-Effort
La inserción en correo_chat_queries es best-effort en el endpoint POST /api/correo/ask:
try {
await env.DB.prepare(
`INSERT INTO correo_chat_queries (owner, question, tool_rounds, duration_ms)
VALUES (?, ?, ?, ?)`
).bind(member, question.slice(0, 500), rounds, durationMs).run();
} catch {
/* telemetría best-effort */
}
Si la inserción falla, la respuesta al cliente sigue siendo 200 y la pregunta se responde normalmente. No interrumpe la UX.
Índice
Se indexa por created_at para las consultas de rango (ej. “última semana”).
CREATE INDEX idx_correo_chat_queries_created ON correo_chat_queries(created_at);
Para análisis por miembro/fecha, considera agregar:
CREATE INDEX idx_correo_chat_queries_owner_date
ON correo_chat_queries(owner, DATE(created_at));
(No estaba en la migración inicial; puede añadirse si las queries de medición se ralentizan.)
Comparación con oraculo_queries
Patrón heredado del Oráculo ([[entity—d1—table—oraculo-queries]]):
| Aspecto | oraculo_queries | correo_chat_queries |
|---|---|---|
| Endpoint | /api/oraculo/ask | /api/correo/ask |
| Propósito | Rate-limit + telemetría | Telemetría + apuesta #9 |
| Rondas | Sin tool-calling nativo | Hasta 3 rondas (buscar/leer) |
| Truncado | Sí (question ≤500 chars) | Sí (question ≤500 chars) |
| Índices | idx_oraculo_queries_created | idx_correo_chat_queries_created |
Véase también
- [[entity—correo—endpoint—ask]]
- [[feature—workspace—correo-menu-f0-f1-f2]]
- [[entity—d1—table—oraculo-queries]]