feat(db): phone_call.record_media_hash 列 + 迁移(录音本地化 FK→Media)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
浅念
2026-08-07 16:20:18 +08:00
parent 90e614e2d7
commit 8f70ac5220
2 changed files with 35 additions and 0 deletions
+5
View File
@@ -456,6 +456,11 @@ class PhoneCall(Base):
sim_number: Mapped[str | None] = mapped_column(String(64), nullable=True)
imei: Mapped[str | None] = mapped_column(String(128), nullable=True)
record_file: Mapped[str | None] = mapped_column(String(1024), nullable=True)
# sha256 media_hash of the localized recording blob (FK -> Media.media_hash);
# NULL until sync_call_recordings downloads it. Populated by the
# call_recordings sync pass; playback prefers /api/media/{this} over the
# OSS record_file URL.
record_media_hash: Mapped[str | None] = mapped_column(String(64), nullable=True)
is_upload: Mapped[bool | None] = mapped_column(Boolean, nullable=True)
download_count: Mapped[int | None] = mapped_column(Integer, nullable=True)
ai_asr: Mapped[str | None] = mapped_column(Text, nullable=True)
@@ -0,0 +1,30 @@
"""phone_call record_media_hash
Revision ID: 8c4f1d2a9e6b
Revises: 3892dbfab839
Create Date: 2026-08-07 00:00:00.000000
"""
from collections.abc import Sequence
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision: str = '8c4f1d2a9e6b'
down_revision: str | Sequence[str] | None = '3892dbfab839'
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
def upgrade() -> None:
"""Upgrade schema."""
with op.batch_alter_table('phone_call', schema=None) as batch_op:
batch_op.add_column(sa.Column('record_media_hash', sa.String(length=64), nullable=True))
def downgrade() -> None:
"""Downgrade schema."""
with op.batch_alter_table('phone_call', schema=None) as batch_op:
batch_op.drop_column('record_media_hash')