MK Basic Node · Bundle (v2) Qué hace: - Captura audio del micrófono. - Guarda chunks (default 10s) en IndexedDB (offline-first). - Si hay internet, sube chunks al server en segundo plano. - En server (PHP) opcional: - OpenAI STT (whisper-1) por chunk. - Análisis incremental con LLM (gpt-4o-mini) para acomodar respuestas por cuestionario. - Monitor RT (monitor.html): transcripción en vivo + respuestas estructuradas + tópicos. - Editor (admin_questionnaire.html): cuestionario consultable/editable. Archivos: - basic.html / basic.js / style.css / sw.js / manifest.json - monitor.html / monitor.js - admin_questionnaire.html / admin_questionnaire.js - api/ (PHP endpoints) - data/ (se crea sola) Requisitos: - HTTPS o localhost para getUserMedia (mic). - PHP 8+ recomendado (cURL habilitado). - Carpeta writable: ./data (chmod 775 o equivalente). OpenAI (server-side): 1) Exporta tu key en el server: export OPENAI_API_KEY="sk-...." 2) (Opcional) modelos: export OPENAI_TRANSCRIBE_MODEL="whisper-1" export OPENAI_ANALYZE_MODEL="gpt-4o-mini" 3) (Opcional) frecuencia de análisis: export ANALYSIS_EVERY_N_CHUNKS=1 Si NO configuras OpenAI, el sistema sigue guardando + subiendo audio, y puedes usar STT local (WebSpeech) si lo activas. Endpoints principales: - POST ./api/session_event.php (JSON) start/pause/resume/stop - POST ./api/audio_chunk_upload.php (multipart) sube audio chunk + (opcional) STT+Análisis - POST ./api/transcript_push.php (JSON) (opcional) STT local desde cliente - GET ./api/list_sessions.php?node_id=... - GET ./api/session_state.php?node_id=...&session_id=...&since_ts=... - SSE ./api/stream_sse.php?node_id=...&session_id=...&since_ts=... - GET ./api/questionnaire_get.php?name=default - POST ./api/questionnaire_save.php (JSON) - POST ./api/analyze_now.php (JSON) fuerza análisis Notas: - Los datos quedan en: data/nodes/{node}/sessions/{session}/ - audio/*.webm - transcripts.jsonl - answers.json - events.jsonl - Export ZIP por sesión: ./api/session_zip.php?node_id=...&session_id=...