Repository navigation
Expand file tree
/
Copy pathmodels.py
More file actions
40 lines (34 loc) · 1.97 KB
/
Copy pathmodels.py
File metadata and controls
40 lines (34 loc) · 1.97 KB
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
from sqlalchemy import Column, Integer, String, Text, DateTime, JSON, ForeignKey
from sqlalchemy.sql import func
from database import Base
class ReviewConfig(Base):
"""审核配置表(Prompt模板与评分维度)"""
__tablename__ = "review_configs"
id = Column(Integer, primary_key=True, index=True)
task_name = Column(String(255), unique=True, index=True)
prompt_template = Column(Text, nullable=False)
# dimensions: ["relevance", "accuracy", "security"]
dimensions = Column(JSON, nullable=False)
ai_model = Column(String(100), default="gpt-4o-mini") # 支持如 "gpt-4o-mini", "gemini/gemini-1.5-pro"
created_at = Column(DateTime(timezone=True), server_default=func.now())
class Submission(Base):
"""标注员提交的数据表"""
__tablename__ = "submissions"
id = Column(Integer, primary_key=True, index=True)
submission_id = Column(String(255), unique=True, index=True) # 用于幂等性校验,MySQL对String有长度要求
task_name = Column(String(255), index=True)
annotator_id = Column(String(255), index=True)
data_type = Column(String(50), default="text") # "text", "image"
data = Column(Text, nullable=False) # 具体数据内容(文本,或者是图片的Base64/URL)
status = Column(String(50), default="pending") # pending, processing, reviewed, failed
created_at = Column(DateTime(timezone=True), server_default=func.now())
class ReviewResult(Base):
"""审核结果表"""
__tablename__ = "review_results"
id = Column(Integer, primary_key=True, index=True)
submission_id = Column(String(255), ForeignKey("submissions.submission_id"), unique=True)
scores = Column(JSON, nullable=False) # {"relevance": 5, "accuracy": 4}
ai_comment = Column(Text)
conclusion = Column(String(50)) # "pass" or "return"
original_prompt = Column(Text) # 当时使用的Prompt,如果是图片则只存文本部分的记录
created_at = Column(DateTime(timezone=True), server_default=func.now())