mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-02-06 02:36:47 +00:00
* brady bunch PRD/tasks * clean dead daily.co code * brady bunch prototype (no-mistakes) * brady bunch prototype (no-mistakes) review * self-review * daily poll time match (no-mistakes) * daily poll self-review (no-mistakes) * daily poll self-review (no-mistakes) * daily co doc * cleanup * cleanup * self-review (no-mistakes) * self-review (no-mistakes) * self-review * self-review * ui typefix * dupe calls error handling proper * daily reflector data model doc * logging style fix * migration merge --------- Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
"""
|
|
Daily.co recording instanceId generation utilities.
|
|
|
|
Deterministic instance ID generation for cloud and raw-tracks recordings.
|
|
MUST match frontend logic
|
|
"""
|
|
|
|
from uuid import UUID, uuid5
|
|
|
|
from reflector.utils.string import NonEmptyString
|
|
|
|
# Namespace UUID for UUIDv5 generation of raw-tracks instanceIds
|
|
# DO NOT CHANGE: Breaks instanceId determinism across deployments and frontend/backend matching
|
|
RAW_TRACKS_NAMESPACE = UUID("a1b2c3d4-e5f6-7890-abcd-ef1234567890")
|
|
|
|
|
|
def generate_cloud_instance_id(meeting_id: NonEmptyString) -> UUID:
|
|
"""
|
|
Generate instanceId for cloud recording.
|
|
|
|
Cloud recordings use meeting ID directly as instanceId.
|
|
This ensures each meeting has one unique cloud recording.
|
|
"""
|
|
return UUID(meeting_id)
|
|
|
|
|
|
def generate_raw_tracks_instance_id(meeting_id: NonEmptyString) -> UUID:
|
|
"""
|
|
Generate instanceId for raw-tracks recording.
|
|
|
|
Raw-tracks recordings use UUIDv5(meeting_id, namespace) to ensure
|
|
different instanceId from cloud while remaining deterministic.
|
|
|
|
Daily.co requires cloud and raw-tracks to have different instanceIds
|
|
for concurrent recording.
|
|
"""
|
|
return uuid5(RAW_TRACKS_NAMESPACE, meeting_id)
|