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
This commit is contained in:
2026-05-28 12:42:30 -05:00
parent 96ed01d922
commit 7d299554bf
28 changed files with 2426 additions and 56 deletions
+2 -1
View File
@@ -1,11 +1,12 @@
import * as XLSX from 'xlsx'
import { kappa } from '@/services/kappa-api'
import { storage } from '@/services/storage'
import type { HuDraftRecord } from '@/services/tauri-db'
const BASE = '/api'
async function uploadExcel(initiativeId: number, file: Blob): Promise<Response> {
const token = localStorage.getItem('kappa_token')
const token = storage.get('kappa_token')
const formData = new FormData()
formData.append('file', file, 'HistoriasUsuario.xlsx')
return fetch(`${BASE}/userstorys/upload-excel/${initiativeId}/`, {