Volver a la wiki

Tabla D1: correo_chat_queries · Telemetría del Chat F1

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:

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]]):

Aspectooraculo_queriescorreo_chat_queries
Endpoint/api/oraculo/ask/api/correo/ask
PropósitoRate-limit + telemetríaTelemetría + apuesta #9
RondasSin tool-calling nativoHasta 3 rondas (buscar/leer)
TruncadoSí (question ≤500 chars)Sí (question ≤500 chars)
Índicesidx_oraculo_queries_createdidx_correo_chat_queries_created

Véase también

Subir