File size: 1,575 Bytes
793e953
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
"""
转写结果 ORM 模型

对应数据库表 transcripts,存储语音转文字的结果(JSON 格式)。
"""

import uuid
from datetime import datetime

from sqlalchemy import Column, String, Float, DateTime, ForeignKey, Text
from sqlalchemy.orm import relationship

from app.database import Base


class Transcript(Base):
    """
    转写结果表

    存储语音转文字的完整结果,content 字段为 JSON 字符串,
    包含说话人分离、时间戳、置信度等信息。
    """
    __tablename__ = "transcripts"

    # --- 主键 ---
    id = Column(
        String(36),
        primary_key=True,
        default=lambda: str(uuid.uuid4()),
        comment="转写记录唯一标识(UUID)",
    )

    # --- 外键 ---
    consultation_id = Column(
        String(36),
        ForeignKey("consultations.id", ondelete="CASCADE"),
        unique=True,
        nullable=False,
        comment="关联的问诊记录 ID",
    )

    # --- 转写内容 ---
    # JSON 字符串,结构见 TranscriptSchema
    content = Column(Text, nullable=True, default="", comment="转写结果 JSON")

    # --- 置信度 ---
    confidence = Column(Float, nullable=True, default=0.0, comment="整体置信度(0.0 ~ 1.0)")

    # --- 时间戳 ---
    created_at = Column(DateTime, default=datetime.now, nullable=False, comment="创建时间")

    # --- 关联 ---
    consultation = relationship("Consultation", back_populates="transcript")

    def __repr__(self):
        return f"<Transcript(id={self.id}, consultation_id={self.consultation_id})>"