40 lines
2.0 KiB
Python
40 lines
2.0 KiB
Python
"""Govdoc 规则结果模型 —— govdoc_rule_results 表。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from sqlalchemy import BigInteger, Integer, Numeric, String, Text
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from fastapi_common.fastapi_common_web.models import BaseModel
|
|
|
|
|
|
class GovdocRuleResult(BaseModel):
|
|
"""公文规则执行结果明细表。"""
|
|
|
|
__tablename__ = "govdoc_rule_results"
|
|
|
|
Id: Mapped[int] = mapped_column("id", BigInteger, primary_key=True, autoincrement=True)
|
|
runId: Mapped[int] = mapped_column("run_id", BigInteger, comment="关联 govdoc_runs.id")
|
|
|
|
# 规则标识
|
|
ruleId: Mapped[str] = mapped_column("rule_id", String(128), comment="规则标识")
|
|
ruleName: Mapped[str | None] = mapped_column("rule_name", String(256), comment="规则名称")
|
|
severity: Mapped[str | None] = mapped_column("severity", String(32), comment="严重等级:error/warning/info")
|
|
category: Mapped[str | None] = mapped_column("category", String(128), comment="规则分类")
|
|
|
|
# 结果内容
|
|
message: Mapped[str | None] = mapped_column("message", Text, comment="结果描述")
|
|
suggestion: Mapped[str | None] = mapped_column("suggestion", Text, comment="修改建议")
|
|
actual: Mapped[str | None] = mapped_column("actual", Text, comment="实际值")
|
|
expected: Mapped[str | None] = mapped_column("expected", Text, comment="期望值")
|
|
evidence: Mapped[str | None] = mapped_column("evidence", Text, comment="证据文本")
|
|
|
|
# 文档定位
|
|
paragraphIndex: Mapped[int | None] = mapped_column("paragraph_index", Integer, comment="段落索引")
|
|
paragraphText: Mapped[str | None] = mapped_column("paragraph_text", Text, comment="段落原文")
|
|
locationPath: Mapped[str | None] = mapped_column("location_path", String(512), comment="文档结构位置路径")
|
|
|
|
# 判定
|
|
result: Mapped[str] = mapped_column("result", String(32), default="pass", comment="执行结果:pass/fail/skipped/error")
|
|
score: Mapped[float | None] = mapped_column("score", Numeric(10, 2), comment="本条得分")
|