"""Local audio archive path: device / scene / date.""" from pathlib import Path from types import SimpleNamespace from core.audio_archive import archive_pcm_snapshot, archive_wav from core.app_runtime.assessment import pcm_snapshot_to_wav, save_turn_wav def test_archive_path_uses_device_mode_and_date(tmp_path, monkeypatch): monkeypatch.setattr("core.audio_archive.get_project_dir", lambda: str(tmp_path)) conn = SimpleNamespace( device_id="AA:BB:CC:DD:EE:FF", interaction_mode="SHADOWING", config={"audio_archive": {"enabled": True, "dir": "data/recordings"}}, ) wav = pcm_snapshot_to_wav([b"\x00\x00" * 80]) relative = archive_wav(conn, wav, kind="asr", extra="sess_0") assert relative is not None assert relative.startswith("AA-BB-CC-DD-EE-FF/shadowing/") assert "_asr_" in relative assert (tmp_path / "data" / "recordings" / Path(relative)).is_file() def test_archive_disabled(tmp_path, monkeypatch): monkeypatch.setattr("core.audio_archive.get_project_dir", lambda: str(tmp_path)) conn = SimpleNamespace( device_id="dev1", interaction_mode="CHAT", config={"audio_archive": {"enabled": False}}, ) wav = pcm_snapshot_to_wav([b"\x00\x00" * 80]) assert archive_wav(conn, wav) is None def test_save_turn_wav_uses_archive_layout(tmp_path, monkeypatch): monkeypatch.setattr("core.audio_archive.get_project_dir", lambda: str(tmp_path)) conn = SimpleNamespace( device_id="mac1", interaction_mode="SHADOWING", config={"audio_archive": {"enabled": True, "dir": "data/recordings"}}, ) wav = pcm_snapshot_to_wav([b"\x00\x00" * 160]) audio_id = save_turn_wav("sess", 3, wav, conn=conn) assert audio_id is not None assert "mac1/shadowing/" in audio_id assert audio_id.endswith(".wav") def test_chat_pcm_archive_uses_chat_dir(tmp_path, monkeypatch): monkeypatch.setattr("core.audio_archive.get_project_dir", lambda: str(tmp_path)) conn = SimpleNamespace( device_id="dev2", interaction_mode="CHAT", config={"audio_archive": {"enabled": True, "dir": "data/recordings"}}, ) relative = archive_pcm_snapshot(conn, [b"\x00\x00" * 80]) assert relative is not None assert relative.startswith("dev2/chat/")