Files
Alpha/AGENTS.md
T
ricardo 7d299554bf K-10 pipeline transcripciones + settings IA + cache-aside + session doc
Nuevos modulos:
- services/ai.ts: cliente IA provider-agnostico (OpenRouter, MiniMax)
- services/db.ts: Dexie core con tabla settings + project_docs
- services/storage.ts: Cache-Aside + Write-Through (L1 Map → L2 Dexie → L3 localStorage)
- services/parse-transcription.ts: parser .docx/.vtt/.txt/.md
- services/session-analyzer.ts: extraccion IA de sesiones (resumen, tareas, decisiones)
- services/project-doc.ts: documento maestro MD (Bloque 1 resumen + Bloque 2 sesiones)
- stores/settings.ts: proveedores IA, modelos, API keys separadas por provider
- stores/transcriptions.ts: pipeline upload → analyze → create HU en KAPPA
- views/SettingsView.vue: configuracion IA (OpenRouter, MiniMax, OpenCode bridge)
- views/TranscriptionsView.vue: subida multiple + analisis sesion + visor MD + calendario
- components/AiProjectChat.vue: chat contextual por proyecto con selector de modelo

Cambios en existentes:
- stores/auth.ts, kappa-api.ts, upload-hu.ts: migrados a storage service (Dexie + localStorage)
- stores/projects.ts, workitems.ts: kappa_last_project via storage
- DashboardView.vue: descripcion reemplazada por AiProjectChat
- NewDashboardView.vue: tabs transcriptions + settings + navigate-settings events
- NavMain.vue: items Transcripciones + Configuracion
- SiteHeader.vue: labels tabs + language via storage
- LoginView.vue: remember_email via storage
- i18n: +80 keys español/ingles
- vite.config.ts: proxy CORS para MiniMax
- package.json: +mammoth.js
2026-05-28 12:42:30 -05:00

6.3 KiB

KAPPA Hub

Asistente multi-proyecto para KAPPA. Semilla de RUMBO. POC → validación diaria → lo que funciona migra a RUMBO.

Stack

Capa Tecnología Versión
Desktop shell Tauri v2 2.11
Frontend Vue 3 + TypeScript + Vite 3.4 / 5.x
Runtime JS Bun 1.3+
Estado Pinia 2.1
BD local Turso (libSQL) Embedded
HTTP fetch() directo a KAPPA (proxy Vite en dev)
Auth Bearer token (POST /api/users/login/)
UI shadcn-vue (New York) + Tailwind CSS v4 2.7
Tablas AG Grid Community + tanstack/vue-table 35.3
i18n vue-i18n (es.json + en.json) — PROHIBIDO hardcodear texto 11.4

Reglas de código

  1. PROHIBIDO hardcodear texto visible al usuario. Todo texto debe usar t('clave') de vue-i18n. Si no existe la clave, agregarla a es.json y en.json.
  2. KAPPA retorna tipos mixtos: strings, números y booleanos para el mismo campo (ej: status puede ser "active", true, o 3). Siempre usar String(valor) o safeStr() antes de operar.
  3. No usar .catch(() => {}) sin loguear el error. Siempre console.error().
  4. Los nombres de funciones y archivos van en español cuando son semánticos del dominio (ej: syncHUsToTurso → OK, pero labels visibles van en i18n).
  5. Toda función debe tener observabilidad: loguear entrada con [Alpha] + acción + datos clave, loguear errores con [Alpha] + descripción + error completo. Sin logs no se puede diagnosticar.
  6. IDs jerárquicos obligatorios en componentes: todo elemento raíz de sección debe tener id="{view}-{section}-{element}" en kebab-case. Ej: dashboard-stats-epics, login-card, users-table. Permite ubicar cualquier componente por su ID sin ambigüedad.

Sincronización entre máquinas (Mac Mini ↔ MacBook Air)

El proyecto vive en iCloud Drive: com~apple~CloudDocs/AI/Teloprax/02_productos/kappa-hub/.

  • Código: se sincroniza automáticamente vía iCloud. Solo bun install una vez por máquina.
  • Datos de KAPPA: viven en el servidor (kappa.lambdaanalytics.co). El Hub es solo un cliente.
  • Token: localStorage del navegador. Loguearse una vez por máquina.
  • Datos locales futuros (borradores, caché): se guardarán como archivos en data/ dentro del proyecto, sincronizados vía iCloud. Ver ../rumbo/sincronizacion.md.

Calendarios externos (K-21)

Servicio Auth Capacidad
Google Calendar OAuth2 Leer eventos, escribir eventos
Microsoft Graph (Outlook/Teams) OAuth2 Leer eventos, escribir eventos
iCal (.ics) Archivo Importar/exportar

Flujo post-reunión (K-22)

1. RUMBO lee calendario (Google/Outlook)
2. Detecta: "Reunión con Cliente X, 8-9am"
3. Después de la reunión (+15/30 min):
   → 🔔 "Terminó tu reunión con Cliente X"
   → "¿Ya capturaste las notas?"
   → "¿Hay transcripción?"
   → "¿Se extrajeron las tareas?"
4. Si no → RUMBO guía a completar

Analogía: RUMBO como Apple Watch — te alerta cuando llevas mucho tiempo sentado (reuniones sin seguimiento = deuda de contexto).

API de recordatorios (futuro)

interface Reminder {
  id: string
  trigger_at: string        // ISO datetime
  title: string
  body: string
  action_url?: string      // deep link a la vista correspondiente
  dismissed: boolean
  source: 'calendar' | 'scheduler' | 'hu_deadline'
}

APIs KAPPA integradas

Endpoint Método Uso en el hub
/users/login/ POST Auth
/initiatives-all/ GET Listar proyectos
/users/all/ GET Listar usuarios
/userstorys/create/ POST Crear HU desde transcripción
/logbooks_master/create/ POST Crear bitácora
/logbooks/create/ POST Entrada de bitácora
/plannings_master/create/ POST Crear planeación
/plannings/create/ POST Entrada de planeación
/business-rules/create/ POST Reglas de negocio
/functionalrequirements/create/ POST Requisitos funcionales/no funcionales

Estructura

kappa-hub/
├── src/
│   ├── types/kappa.ts          # Tipos TypeScript
│   ├── services/kappa-api.ts   # Cliente HTTP KAPPA
│   ├── stores/                 # Pinia
│   │   ├── auth.ts
│   │   ├── projects.ts
│   │   └── workitems.ts
│   ├── views/
│   │   ├── LoginView.vue
│   │   └── DashboardView.vue
│   ├── components/layout/
│   │   └── AppShell.vue
│   ├── App.vue
│   └── main.ts
├── package.json
└── vite.config.ts

Cómo ejecutar

cd "02_productos/kappa-hub"
bun install   # una vez por máquina
bun dev       # http://localhost:5173

Abre http://localhost:5173. El proxy de Vite redirige /api/* a https://kappa.lambdaanalytics.co.

Pipeline de transcripciones (K-10)

Nueva vista Transcripciones en la barra lateral (icono upload).

Flujo:

  1. Configurar API key de OpenRouter (DeepSeek) — se guarda en localStorage
  2. Seleccionar proyecto destino desde el dropdown
  3. Arrastrar o seleccionar archivo (.docx, .vtt, .txt, .md)
  4. El archivo se parsea localmente (mammoth.js para docx, parseo manual para VTT)
  5. Click "Analizar con IA" → se envía a OpenRouter DeepSeek
  6. La IA devuelve HUs estructuradas (título, descripción, criterios de aceptación, prioridad, tipo)
  7. Revisar, seleccionar/deseleccionar, eliminar HUs
  8. Click "Crear en KAPPA" → se crean vía API
  9. Las HUs creadas se marcan en verde y se refresca el store de workitems

Archivos nuevos:

  • src/services/ai.ts — Cliente OpenRouter DeepSeek
  • src/services/parse-transcription.ts — Parseo de .docx/.vtt/.txt/.md
  • src/stores/transcriptions.ts — Pinia store del pipeline
  • src/views/TranscriptionsView.vue — Vista completa con upload, preview, análisis, resultados

Modelo usado: deepseek/deepseek-chat-v3-0324:free (free tier de OpenRouter)

Próximos pasos

  1. Agregar Dexie.js para cache offline (K-15)
  2. Pipeline de transcripciones (K-10)
  3. Dashboard multi-proyecto (K-11)
  4. Priorizador diario (K-12)
  5. Generador de reportes (K-13)
  6. Integración calendario Google/Outlook (K-21)
  7. Alertas post-reunión (K-22)