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:
+100
-2
@@ -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}"
|
||||
}
|
||||
|
||||
+100
-2
@@ -2,6 +2,7 @@
|
||||
"nav": {
|
||||
"quickCreate": "Crear proyecto",
|
||||
"board": "Métricas",
|
||||
"transcriptions": "Transcripciones",
|
||||
"projects": "Proyectos",
|
||||
"lifecycle": "Ciclo de vida",
|
||||
"analytics": "Analíticas",
|
||||
@@ -10,7 +11,8 @@
|
||||
"dataLibrary": "Biblioteca",
|
||||
"reports": "Reportes",
|
||||
"wordAssistant": "Asistente Word",
|
||||
"templates": "Plantillas"
|
||||
"templates": "Plantillas",
|
||||
"settings": "Configuración"
|
||||
},
|
||||
"siteHeader": {
|
||||
"title": "Tablero",
|
||||
@@ -21,6 +23,7 @@
|
||||
},
|
||||
"settings": {
|
||||
"title": "Configuración",
|
||||
"subtitle": "Gestioná tus proveedores de IA, modelos y preferencias",
|
||||
"language": "Idioma",
|
||||
"theme": "Tema",
|
||||
"light": "Claro",
|
||||
@@ -28,7 +31,37 @@
|
||||
"system": "Sistema",
|
||||
"about": "Acerca de",
|
||||
"documentation": "Documentación",
|
||||
"logout": "Cerrar sesión"
|
||||
"logout": "Cerrar sesión",
|
||||
"aiProvider": "Proveedor de IA",
|
||||
"aiProviderDesc": "Elegí qué motor de IA usar para analizar transcripciones y generar HUs",
|
||||
"recommended": "Recomendado",
|
||||
"bridge": "Puente",
|
||||
"openrouterDesc": "Accedé a 200+ modelos con una sola API key. Gratuito y de pago.",
|
||||
"minimaxDesc": "Modelos chinos de alto rendimiento (M2.7, M2.5, M2.1). Usá tu API Key del plan Token desde platform.minimax.io.",
|
||||
"opencodeDesc": "Heredá la configuración de modelos desde OpenCode (lectura de auth.json)",
|
||||
"keyHelp": "Necesitás una API key de este proveedor.",
|
||||
"minimaxKeyHelp": "Necesitás un User Token (no API Key sk-...) desde User Center → Interface Key. El token empieza con 'eyJ...' o es un string largo:",
|
||||
"minimaxGroupId": "Group ID (opcional)",
|
||||
"minimaxGroupIdPlaceholder": "mg-...",
|
||||
"minimaxGroupIdHelp": "Obligatorio si usás una Group API Key. Encontrás el Group ID en tu panel de MiniMax → Gestión de grupos.",
|
||||
"apiKey": "API Key",
|
||||
"apiKeyPlaceholder": "sk-or-v1-...",
|
||||
"keyConfigured": "API key configurada",
|
||||
"saveKey": "Guardar",
|
||||
"removeKey": "Eliminar",
|
||||
"keySaved": "API key guardada correctamente",
|
||||
"opencodeInfoTitle": "Integración con OpenCode",
|
||||
"opencodeInfoDesc": "Alpha puede leer las API keys que ya configuraste en OpenCode desde:",
|
||||
"opencodeInfoFuture": "En el futuro, esto se hará automáticamente cuando Alpha corra en Tauri (acceso directo al sistema de archivos). Por ahora, configurá OpenRouter manualmente.",
|
||||
"opencodeFallback": "Mientras tanto, usá",
|
||||
"model": "Modelo de IA",
|
||||
"modelDesc": "Seleccioná qué modelo usar para el análisis de transcripciones",
|
||||
"freeModels": "Gratuitos",
|
||||
"cheapModels": "Económicos",
|
||||
"premiumModels": "Premium",
|
||||
"currentModel": "Modelo actual",
|
||||
"account": "Cuenta",
|
||||
"loggedInAs": "Conectado como"
|
||||
},
|
||||
"login": {
|
||||
"title": "Iniciar sesión",
|
||||
@@ -214,6 +247,71 @@
|
||||
"trendingUp": "Tendencia al alza",
|
||||
"trendingDown": "Tendencia a la baja"
|
||||
},
|
||||
"transcriptions": {
|
||||
"title": "Transcripciones",
|
||||
"subtitle": "Gestioná las sesiones del proyecto. Subí transcripciones, analizalas con IA y mantené un documento incremental.",
|
||||
"configureAI": "Configurar IA",
|
||||
"aiKeyTitle": "API Key de OpenRouter",
|
||||
"aiKeyDesc": "Necesitás una API key de OpenRouter para analizar transcripciones con DeepSeek.",
|
||||
"apiKeyLabel": "OpenRouter API Key",
|
||||
"apiKeyPlaceholder": "sk-or-v1-...",
|
||||
"saveKey": "Guardar",
|
||||
"selectProject": "Proyecto destino",
|
||||
"projectPlaceholder": "Seleccioná un proyecto...",
|
||||
"dropzone": "Arrastrá un archivo acá",
|
||||
"dropzoneFormats": "DOCX, VTT, TXT o MD",
|
||||
"selectFile": "Seleccionar archivo",
|
||||
"parsing": "Procesando archivo...",
|
||||
"addMore": "Agregar archivos",
|
||||
"changeFile": "Cambiar archivo",
|
||||
"analyze": "Analizar con IA",
|
||||
"chars": "caracteres",
|
||||
"analyzingTitle": "Analizando transcripción...",
|
||||
"analyzingDesc": "El modelo DeepSeek está extrayendo las HUs. Esto puede tomar unos segundos.",
|
||||
"error": "Error",
|
||||
"tryAgain": "Intentar de nuevo",
|
||||
"clear": "Limpiar todo",
|
||||
"summary": "Resumen del análisis",
|
||||
"husFound": "{count} HUs encontradas",
|
||||
"selected": "seleccionadas",
|
||||
"createInKappa": "Crear {count} en KAPPA",
|
||||
"type": "Tipo",
|
||||
"title": "Título",
|
||||
"priority": "Prioridad",
|
||||
"selectProjectToCreate": "Seleccioná un proyecto arriba para crear las HUs en KAPPA",
|
||||
"analyzeSession": "Analizar sesión",
|
||||
"sessionError": "Error al analizar la sesión",
|
||||
"sessionSummary": "Resumen",
|
||||
"sessionObjectives": "Objetivos",
|
||||
"sessionDecisions": "Decisiones",
|
||||
"sessionTasks": "Tareas pendientes",
|
||||
"sessionCommitments": "Compromisos",
|
||||
"sessionKeyPoints": "Puntos clave",
|
||||
"generateDoc": "Actualizar documento",
|
||||
"docUpdated": "Documento actualizado",
|
||||
"downloadDoc": "Descargar .md",
|
||||
"docSaved": "Documento guardado en la base de datos local.",
|
||||
"sessionCountTitle": "Sesiones",
|
||||
"sessionsRecorded": "sesiones registradas",
|
||||
"sessionDates": "Calendario de sesiones",
|
||||
"noSessions": "Sin sesiones registradas",
|
||||
"sessionsLabel": "sesiones",
|
||||
"updatedAt": "Actualizado:",
|
||||
"docViewer": "Documento de sesiones",
|
||||
"selectProjectHint": "Seleccioná un proyecto para ver sus sesiones",
|
||||
"sessionCount": "{count} sesiones | {count} sesión | {count} sesiones"
|
||||
},
|
||||
"projectAi": {
|
||||
"title": "Asistente IA del proyecto",
|
||||
"configure": "Configurar",
|
||||
"noKey": "Sin API key",
|
||||
"keyReady": "Lista",
|
||||
"configureLink": "Configurá un proveedor de IA",
|
||||
"placeholder": "Preguntale algo sobre el proyecto...",
|
||||
"thinking": "Pensando...",
|
||||
"switchModel": "Cambiar modelo",
|
||||
"settings": "Configuración..."
|
||||
},
|
||||
"workitems": {
|
||||
"unnamedEpic": "Épica {id}"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user