Files
group_fqcd_jr/tests/unit/service/test_agent_persistence_audit.py
T
张胜宇 e239eb778b docs: 品牌全量口径统一为「南方基金」+ 作废文档清理
1) 客服 Agent 四份交付文档 + 构建脚手架:品牌由包装占位 XX科技 / 旧名 南方财富
   统一为南方基金(热线 400-889-8899 / 官网 nffund.com),系统名改为「智能服务系统」;
   同步追加 §0.4 修订记录行,工程记录行保留原占位字面以支撑硬编码扫描验收。
2) 开发文档:清理 28 份已作废/残留文档(14 份移出归档 + 14 份仓库副本),
   新增《文档规整方案与开发前待决事项-2026-09-17》。
3) 客服agent 四份交付文档首次纳入本分支。
2026-09-17 15:15:22 +08:00

52 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""治理审计落库的字段契约(`agent_type` + 治理是否改写过输出)。
**为什么需要这个文件**:治理层(`PlatformGovernance.review`)会**改写对外输出** ——
追加固定免责声明(门禁 F5),命中禁用词时还会把整条回复替换成安全话术。
架构师评审明确要求:"治理层改写了对外输出,事后必须能追溯到是哪个 Agent 触发的。"
所以 `agent.run_completed` 那条审计的 `detail` 里必须带 `agent_type`;
本文件锁住这个契约,避免以后有人"顺手精简"掉它。
"""
from app.core.contracts import AgentResult, CoreResult
from app.service.agent_persistence_service import _governance_rewrote
def _result(text: str, *, transfer_required: bool = False) -> AgentResult:
return AgentResult(
run_id="r",
result=CoreResult(text=text, transfer_required=transfer_required),
)
def test_plain_answer_without_disclaimer_counts_as_rewritten() -> None:
"""客服出口的正文**不带**免责声明(话术由治理层统一注入)。
所以"Agent 产出的纯粹正文"在治理前后的差异就是那句被追加的话术——
见到治理后的正文(含话术)即说明治理改写过。
"""
assert _governance_rewrote(
_result(
"交易日 15:00 前提交,T+1 日确认份额。\n\n"
"本内容仅为投资分析参考,不构成任何直接投资建议。"
)
) is True
def test_transfer_required_counts_as_rewritten() -> None:
"""拦截分支:治理层把回复替换成"该内容需要人工核实"并置 `transfer_required`。"""
assert _governance_rewrote(
_result("该内容需要人工核实。基金投资存在风险,本系统不代客交易。",
transfer_required=True)
) is True
def test_untouched_text_is_not_marked_as_rewritten() -> None:
"""没有任何治理痕迹时不标记(避免"全部记 True"让这个字段失去信息量)。"""
assert _governance_rewrote(_result("交易日 15:00 前提交,T+1 日确认份额。")) is False
def test_empty_text_does_not_crash() -> None:
"""空正文(异常路径)不得让审计写入抛异常。"""
assert _governance_rewrote(_result("")) is False