chore(backend): update config and user agent schema
- core/config.py: update application configuration - schemas/user_agent.py: update user agent data schemas
This commit is contained in:
@@ -71,6 +71,10 @@ class Settings(BaseSettings):
|
|||||||
ocr_timeout_seconds: int = Field(default=180, alias="OCR_TIMEOUT_SECONDS")
|
ocr_timeout_seconds: int = Field(default=180, alias="OCR_TIMEOUT_SECONDS")
|
||||||
ocr_max_file_size_mb: int = Field(default=20, alias="OCR_MAX_FILE_SIZE_MB")
|
ocr_max_file_size_mb: int = Field(default=20, alias="OCR_MAX_FILE_SIZE_MB")
|
||||||
ocr_language: str = Field(default="ch", alias="OCR_LANGUAGE")
|
ocr_language: str = Field(default="ch", alias="OCR_LANGUAGE")
|
||||||
|
seed_demo_financial_records: bool = Field(
|
||||||
|
default=False,
|
||||||
|
alias="SEED_DEMO_FINANCIAL_RECORDS",
|
||||||
|
)
|
||||||
ocr_text_detection_model: str = Field(
|
ocr_text_detection_model: str = Field(
|
||||||
default="PP-OCRv5_mobile_det",
|
default="PP-OCRv5_mobile_det",
|
||||||
alias="OCR_TEXT_DETECTION_MODEL",
|
alias="OCR_TEXT_DETECTION_MODEL",
|
||||||
|
|||||||
@@ -34,6 +34,52 @@ class UserAgentDraftPayload(BaseModel):
|
|||||||
status: str | None = Field(default=None, description="当前报销草稿状态。")
|
status: str | None = Field(default=None, description="当前报销草稿状态。")
|
||||||
|
|
||||||
|
|
||||||
|
class UserAgentQueryStatusGroup(BaseModel):
|
||||||
|
key: str = Field(description="状态分组键名。")
|
||||||
|
label: str = Field(description="状态分组展示名。")
|
||||||
|
count: int = Field(default=0, ge=0, description="该分组单据数。")
|
||||||
|
|
||||||
|
|
||||||
|
class UserAgentExpenseQueryRecord(BaseModel):
|
||||||
|
claim_id: str = Field(description="报销单主键。")
|
||||||
|
claim_no: str = Field(description="报销单号。")
|
||||||
|
employee_name: str = Field(default="", description="申请人。")
|
||||||
|
expense_type: str = Field(default="", description="费用类型编码。")
|
||||||
|
expense_type_label: str = Field(default="", description="费用类型中文名。")
|
||||||
|
amount: float = Field(default=0.0, ge=0.0, description="金额。")
|
||||||
|
status: str = Field(default="", description="单据状态编码。")
|
||||||
|
status_label: str = Field(default="", description="单据状态中文名。")
|
||||||
|
status_group: str = Field(default="", description="状态分组编码。")
|
||||||
|
status_group_label: str = Field(default="", description="状态分组中文名。")
|
||||||
|
approval_stage: str | None = Field(default=None, description="审批节点。")
|
||||||
|
document_date: str = Field(default="", description="用于近 10 日展示的单据日期。")
|
||||||
|
occurred_at: str = Field(default="", description="业务发生日期。")
|
||||||
|
reason: str = Field(default="", description="事由。")
|
||||||
|
location: str = Field(default="", description="地点。")
|
||||||
|
|
||||||
|
|
||||||
|
class UserAgentQueryPayload(BaseModel):
|
||||||
|
result_type: str = Field(default="expense_claim_list", description="结构化查询结果类型。")
|
||||||
|
scope_label: str = Field(default="报销单", description="当前查询范围名。")
|
||||||
|
recent_window_applied: bool = Field(default=False, description="是否应用了近 10 日窗口。")
|
||||||
|
window_days: int | None = Field(default=None, ge=1, description="近 N 日窗口天数。")
|
||||||
|
window_start_date: str | None = Field(default=None, description="近 N 日窗口开始日期。")
|
||||||
|
window_end_date: str | None = Field(default=None, description="近 N 日窗口结束日期。")
|
||||||
|
record_count: int = Field(default=0, ge=0, description="当前展示范围内的单据数。")
|
||||||
|
preview_count: int = Field(default=0, ge=0, description="当前返回的单据数。")
|
||||||
|
older_record_count: int = Field(default=0, ge=0, description="超出近 10 日窗口的单据数。")
|
||||||
|
has_more_in_window: bool = Field(default=False, description="当前展示范围内是否还有更多单据未返回。")
|
||||||
|
total_amount: float = Field(default=0.0, ge=0.0, description="当前展示范围内金额合计。")
|
||||||
|
status_groups: list[UserAgentQueryStatusGroup] = Field(
|
||||||
|
default_factory=list,
|
||||||
|
description="当前展示范围内的状态分组统计。",
|
||||||
|
)
|
||||||
|
records: list[UserAgentExpenseQueryRecord] = Field(
|
||||||
|
default_factory=list,
|
||||||
|
description="当前返回的单据列表。",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UserAgentReviewRiskBrief(BaseModel):
|
class UserAgentReviewRiskBrief(BaseModel):
|
||||||
title: str = Field(description="风险或注意事项标题。")
|
title: str = Field(description="风险或注意事项标题。")
|
||||||
level: str = Field(default="info", description="级别,例如 info / warning / high。")
|
level: str = Field(default="info", description="级别,例如 info / warning / high。")
|
||||||
@@ -159,6 +205,10 @@ class UserAgentResponse(BaseModel):
|
|||||||
default_factory=list,
|
default_factory=list,
|
||||||
description="建议的下一步动作。",
|
description="建议的下一步动作。",
|
||||||
)
|
)
|
||||||
|
query_payload: UserAgentQueryPayload | None = Field(
|
||||||
|
default=None,
|
||||||
|
description="结构化查询结果,用于前端渲染真实单据列表。",
|
||||||
|
)
|
||||||
draft_payload: UserAgentDraftPayload | None = Field(default=None, description="可选草稿内容。")
|
draft_payload: UserAgentDraftPayload | None = Field(default=None, description="可选草稿内容。")
|
||||||
review_payload: UserAgentReviewPayload | None = Field(
|
review_payload: UserAgentReviewPayload | None = Field(
|
||||||
default=None,
|
default=None,
|
||||||
|
|||||||
Reference in New Issue
Block a user