monitor/html/record.html
fds2610-bot 9426406ee5 Sprachaufnahme: Agent-Kachel, Aufnahme-Webseite und API-Warteschlange
Setzt den in #84 skizzierten Workflow um: record.html nimmt im
Handy-Browser eine Sprachnotiz per MediaRecorder auf und laedt sie
unauthentifiziert zu POST /api/v1/agents/{id}/recordings hoch. Ein
Klick auf die Personen-Figur jedes registrierten Agenten in der
Buero-Visualisierung verlinkt dorthin, ein Zaehler am Schreibtisch
zeigt offene Aufnahmen. Der Agent selbst holt seine Warteschlange
ueber die bestehenden Api-Key-authentifizierten Endpunkte ab
(GET .../recordings, GET /recordings/{id}/audio) und markiert eine
Aufnahme nach der Transkription per PATCH als erledigt - die
eigentliche Transkription (whisper.cpp/faster-whisper) bleibt
agent-seitig, siehe fds2610/Agent#17.

Schliesst #85
2026-09-03 21:26:28 +02:00

38 lines
1.6 KiB
HTML

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="/favicon.png">
<title>Sprachaufnahme</title>
<link rel="stylesheet" href="css/record.css">
</head>
<body>
<header class="record-header">
<h1>Sprachaufnahme</h1>
<p>Für: <strong id="agent-name">…</strong></p>
</header>
<main class="record-main">
<p id="status" class="record-status" role="status"></p>
<div class="record-controls">
<button id="start-button" type="button" class="record-button record-button-start">Aufnahme starten</button>
<button id="stop-button" type="button" class="record-button record-button-stop" hidden>Aufnahme beenden</button>
</div>
<audio id="audio-preview" class="record-preview" controls hidden></audio>
<div class="record-controls">
<button id="upload-button" type="button" class="record-button record-button-upload" hidden>Hochladen</button>
<button id="discard-button" type="button" class="record-button record-button-discard" hidden>Verwerfen</button>
</div>
</main>
<!-- Laufzeit-Konfiguration (API-Basis-URL): wird vom Webserver aus MONITOR_API_BASE
erzeugt, siehe docker/nginx/default.conf.template - dieselbe Datei wie office.html
nutzt, damit record.js ueber office-api.js dieselbe API erreicht. -->
<script src="/config.js"></script>
<script type="module" src="js/record.js"></script>
</body>
</html>