Files
GaoYiYuan_0626 66ec7eba08 feat: C6 FR-10 代理人行为链 RISK-008
代理人异常行为链识别(RISK-008)落地:
- 新增 agent_behavior_service:三条件证据聚合(A 诱导调仓/B AUTH_403_SCOPE 越权试探/C AUTH_403_NOT_OWNER|NOT_ASSIGNED 越权查询),按代理人维度独立出 pattern 单,payload.actor_id 指向代理人,审计仅 INSERT event_type=agent_behavior_detected。
- risk_repository 新增 list_audit_events / find_agent_behavior_alert / merge_agent_behavior_payload(同日同代理人一张单,证据并集)。
- trade_gateway.submit_trade 补 actor_id 透传(代理人发起交易归属发起人,缺省 SYSTEM);simulate 路由传入 auth.actor_id。
- chat_tools 新增 query_agent_behavior 只读 Tool(agent_id 过滤 + 客户脱敏),tool_service 补意图词与摘要。
- scripts/cron/agent_behavior_scan.py 定时扫描脚本。
- 修复 append_alert_event 序列化缺 default=str(C6 evidence 含 datetime 字段)。
- 单测 12 例(_count_induce 边界 / 三条件 / 出单去重 / payload 归属 / Tool 过滤脱敏)。
全量 pytest 482 passed 0 failed(470 基线 + 12 C6)。
2026-09-07 19:53:39 +08:00

33 lines
1.1 KiB
Python
Raw Permalink 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.
"""RISK-008 代理人行为链扫描(建议 30min 周期;RISK_AGENT_BEHAVIOR_SCAN_MINUTES 可配)。
初期独立脚本 + 系统 cron;结构对齐 scripts/cron/escalation_scan.py:
sys.path 引导 → new_trace → 扫描 → 打印 JSON 摘要(供 cron 日志 / 演示走查)。
审计写库失败由 service 内降级留底,不阻塞下次扫描(红线 5 口径)。
"""
from __future__ import annotations
import json
import sys
from pathlib import Path
# ① sys.path 引导项目根(escalation_scan 先例)
ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(ROOT))
from app.service.risk.agent_behavior_service import scan_and_alert # noqa: E402
from app.utils.trace import new_trace # noqa: E402
def main() -> int:
# ② 显式生成 trace(无 HTTP 上下文,service 内 current_trace 复用)
new_trace()
# ③ 扫描 → 打印 JSON 摘要
summary = scan_and_alert()
print(json.dumps(summary, ensure_ascii=False, default=str, indent=2))
return 0
if __name__ == "__main__":
sys.exit(main())