feat: Abschreiben im Cluster mit Whisper-Image und Voice-CronJob (T7 L3 Task 13)
Backend Image / build-and-push (push) Successful in 5m49s
Frontend Image / build-and-push (push) Successful in 13m3s
Manifests / validate (push) Successful in 17s
Whisper Image / build-and-push (push) Successful in 1m56s

ApiCore-Whisper: transcribe.py liest das Manifest im RAM-Arbeitsordner,
dekodiert mit festem Demuxer je Endung, misst die Länge vor dem
Abschreiben (TOO_LONG > 240 s, DECODE_FAILED bei Länge 0), sperrt das
Netz vor dem Modell-Laden und schreibt nur Zähler auf stdout. Image:
python:3.12-slim per Digest, Nutzer 1000, alle Pakete mit Hash
(faster-whisper 1.2.1, av 18.1.0 wegen Inkompatibilität mit av 19),
Modell faster-whisper-small auf fester Revision mit SHA-256 je Datei.
CI-Workflow nur bei Änderungen unter ApiCore-Whisper/, Actions per SHA.

deploy/k8s/components/voice: CronJob alle 2 Minuten mit fetch, whisper,
ingest (gleiche UID, getrennte /tmp-Volumes, damit der Decoder dem
Container mit den Secrets nichts unterschieben kann; whisper ohne
Secrets und Umgebungsvariablen außer WHISPER_CPU_THREADS), Overlay mit
Platzhalter-Digest, ConfigMap-Werte für Sprache, Policy-Tests (55).
Die Anbindung des Anthropic-Schlüssels bleibt offen (Ruling 9).

Refs #27

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-10-16 11:12:59 +02:00
1 parent e614ded967
commit c53810b8a6
16 files changed
+1448 -5

No files matched your search

@@ -28,3 +28,10 @@ data:
# bei BotFather noch nicht angelegt ist (Runbook); dann den Namen eintragen.
# Das Token liegt im Secret apicore-telegram (nur Worker).
TELEGRAM_BOT_USERNAME: ""
# Sprachnotizen (T7). VOICE_RECORDING_ENABLED blendet die Aufnahme in der App
# aus ("false") oder ein ("true"); VOICE_MODEL und VOICE_DAILY_EXTRACTIONS
# gelten fuer die Claude-Auswertung (zurueckgestellt). Den Schluessel
# ANTHROPIC_API_KEY gibt es hier nie: er gehoert ins Secret apicore-anthropic.
VOICE_RECORDING_ENABLED: "false"
VOICE_MODEL: "claude-sonnet-5-5"
VOICE_DAILY_EXTRACTIONS: "60"
@@ -43,10 +43,15 @@ components:
- ../../components/pod-hardening # Schritt 3
- ../../components/backend-roles # Schritt 3
- ../../components/api-hpa # Schritt 5
- ../../components/voice # Sprachnotizen (T7), erst nach VOICE_ENCRYPTION_KEY im Secret
images:
- name: git.encry.de/nick.rosenloecher/apicore-backend
digest: sha256:0000000000000000000000000000000000000000000000000000000000000000
- name: git.encry.de/nick.rosenloecher/apicore-frontend
digest: sha256:0000000000000000000000000000000000000000000000000000000000000000
# Abschreib-Image (.gitea/workflows/whisper-image.yml, Tag sha-<commit>).
# Platzhalter bis zum ersten CI-Build; dann den Digest eintragen.
- name: git.encry.de/nick.rosenloecher/apicore-whisper
digest: sha256:0000000000000000000000000000000000000000000000000000000000000000
- name: postgres
digest: sha256:0000000000000000000000000000000000000000000000000000000000000000