feat: add shared config and models

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 10:25:34 -05:00
parent df53903ceb
commit d95fa30017
2 changed files with 78 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
db_path: str = "/data/linkedstorm.db"
clips_dir: str = "/data/clips"
speaches_url: str = "http://192.168.86.150:8000"
ollama_url: str = "http://192.168.86.150:11434"
ollama_model: str = "qwen2.5:14b"
livekit_url: str = "ws://192.168.86.150:7880"
livekit_api_key: str = "devkey"
livekit_api_secret: str = "devsecret"
pipeline_internal_url: str = "http://linkedstorm-pipeline:8300"
clip_retention_days: int = 30
speaker_known_threshold: float = 0.85
speaker_ambiguous_threshold: float = 0.60
vad_silence_ms: int = 600
vad_min_speech_ms: int = 500
model_config = {"env_file": ".env", "env_file_encoding": "utf-8"}
def get_settings() -> Settings:
return Settings()
+54
View File
@@ -0,0 +1,54 @@
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
@dataclass
class Room:
id: int
name: str
device_label: Optional[str]
is_active: bool
last_seen: Optional[datetime]
created_at: datetime
@dataclass
class Speaker:
id: int
name: str
created_at: datetime
updated_at: datetime
@dataclass
class VoiceEmbedding:
id: int
speaker_id: int
embedding: bytes # packed float32
audio_sample: Optional[bytes]
created_at: datetime
@dataclass
class Utterance:
id: int
room_id: int
speaker_id: Optional[int]
transcript: str
embedding: Optional[bytes]
match_status: str # known | unknown | ambiguous | unreviewed
match_confidence: Optional[float]
start_time: datetime
end_time: datetime
audio_clip_path: Optional[str]
livekit_room: Optional[str]
created_at: datetime
@dataclass
class DailySummary:
id: int
date: str # YYYY-MM-DD
summary_text: str
generated_at: datetime