Files
leaudit-platform-backend/fastapi_modules/fastapi_leaudit/models/govdocRuleResult.py
T

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="本条得分")