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
+100 -2
View File
@@ -2,6 +2,7 @@
"nav": {
"quickCreate": "Create project",
"board": "Metrics",
"transcriptions": "Transcriptions",
"projects": "Projects",
"lifecycle": "Lifecycle",
"analytics": "Analytics",
@@ -10,7 +11,8 @@
"dataLibrary": "Data Library",
"reports": "Reports",
"wordAssistant": "Word Assistant",
"templates": "Templates"
"templates": "Templates",
"settings": "Settings"
},
"siteHeader": {
"title": "Dashboard",
@@ -21,6 +23,7 @@
},
"settings": {
"title": "Settings",
"subtitle": "Manage AI providers, models, and preferences",
"language": "Language",
"theme": "Theme",
"light": "Light",
@@ -28,7 +31,37 @@
"system": "System",
"about": "About",
"documentation": "Documentation",
"logout": "Log out"
"logout": "Log out",
"aiProvider": "AI Provider",
"aiProviderDesc": "Choose which AI engine to use for transcript analysis and story generation",
"recommended": "Recommended",
"bridge": "Bridge",
"openrouterDesc": "Access 200+ models with a single API key. Free and paid tiers available.",
"minimaxDesc": "High-performance Chinese models (MiniMax Text-01). Use your Token Plan API key from platform.minimax.io.",
"opencodeDesc": "Inherit model configuration from OpenCode (reads auth.json)",
"keyHelp": "You need an API key for this provider.",
"minimaxKeyHelp": "You need a User Token (not sk-... API key) from User Center → Interface Key. The token starts with 'eyJ...' or is a long string:",
"minimaxGroupId": "Group ID (optional)",
"minimaxGroupIdPlaceholder": "mg-...",
"minimaxGroupIdHelp": "Required if using a Group API Key. Find it at: platform.minimaxi.com → Group management.",
"apiKey": "API Key",
"apiKeyPlaceholder": "sk-or-v1-...",
"keyConfigured": "API key configured",
"saveKey": "Save",
"removeKey": "Remove",
"keySaved": "API key saved successfully",
"opencodeInfoTitle": "OpenCode Integration",
"opencodeInfoDesc": "Alpha can read API keys you've already configured in OpenCode from:",
"opencodeInfoFuture": "In the future, this will happen automatically when Alpha runs on Tauri (direct filesystem access). For now, configure OpenRouter manually.",
"opencodeFallback": "In the meantime, use",
"model": "AI Model",
"modelDesc": "Select which model to use for transcript analysis",
"freeModels": "Free",
"cheapModels": "Cheap",
"premiumModels": "Premium",
"currentModel": "Current model",
"account": "Account",
"loggedInAs": "Logged in as"
},
"login": {
"title": "Sign in",
@@ -214,6 +247,71 @@
"trendingUp": "Trending up",
"trendingDown": "Trending down"
},
"transcriptions": {
"title": "Transcriptions",
"subtitle": "Manage project sessions. Upload transcripts, analyze with AI, and maintain an incremental document.",
"configureAI": "Configure AI",
"aiKeyTitle": "OpenRouter API Key",
"aiKeyDesc": "You need an OpenRouter API key to analyze transcripts with DeepSeek.",
"apiKeyLabel": "OpenRouter API Key",
"apiKeyPlaceholder": "sk-or-v1-...",
"saveKey": "Save",
"selectProject": "Target project",
"projectPlaceholder": "Select a project...",
"dropzone": "Drop a file here",
"dropzoneFormats": "DOCX, VTT, TXT or MD",
"selectFile": "Select file",
"parsing": "Processing file...",
"addMore": "Add files",
"changeFile": "Change file",
"analyze": "Analyze with AI",
"chars": "characters",
"analyzingTitle": "Analyzing transcript...",
"analyzingDesc": "DeepSeek model is extracting user stories. This may take a few seconds.",
"error": "Error",
"tryAgain": "Try again",
"clear": "Clear all",
"summary": "Analysis summary",
"husFound": "{count} stories found",
"selected": "selected",
"createInKappa": "Create {count} in KAPPA",
"type": "Type",
"title": "Title",
"priority": "Priority",
"selectProjectToCreate": "Select a project above to create stories in KAPPA",
"analyzeSession": "Analyze session",
"sessionError": "Error analyzing session",
"sessionSummary": "Summary",
"sessionObjectives": "Objectives",
"sessionDecisions": "Decisions",
"sessionTasks": "Pending tasks",
"sessionCommitments": "Commitments",
"sessionKeyPoints": "Key points",
"generateDoc": "Update document",
"docUpdated": "Document updated",
"downloadDoc": "Download .md",
"docSaved": "Document saved to local database.",
"sessionCountTitle": "Sessions",
"sessionsRecorded": "sessions recorded",
"sessionDates": "Session calendar",
"noSessions": "No sessions recorded",
"sessionsLabel": "sessions",
"updatedAt": "Updated:",
"docViewer": "Session document",
"selectProjectHint": "Select a project to view its sessions",
"sessionCount": "{count} sessions | {count} session | {count} sessions"
},
"projectAi": {
"title": "Project AI Assistant",
"configure": "Configure",
"noKey": "No API key",
"keyReady": "Ready",
"configureLink": "Set up an AI provider",
"placeholder": "Ask something about the project...",
"thinking": "Thinking...",
"switchModel": "Switch model",
"settings": "Settings..."
},
"workitems": {
"unnamedEpic": "Epic {id}"
}