修复风控时间口径与Agent截断提示

This commit is contained in:
zhangshy
2026-09-11 15:25:45 +08:00
parent 5102eaac64
commit d2cdbbac01
24 changed files with 318 additions and 27 deletions
@@ -362,7 +362,15 @@ def _agent_system_prompt(message: str) -> str:
"8. 查询结果包含 summary 时,客户、产品和规则数量必须依据完整 summary,"
"不能因为 items 被截断就回答只覆盖部分记录。\n"
"9. 最终回答使用中文,简洁说明结论、依据和剩余风险,并提醒由风控专员人工复核。\n"
f"{context}\n{filter_context}"
f"{context}\n{filter_context}\n{_truncation_instruction()}"
)
def _truncation_instruction() -> str:
return (
"10. 工具结果出现 data_truncated=true、evidence_truncated 非空或 "
"truncated=true 时,必须明确说明当前证据不完整,不能按全量证据下结论;"
"只有结果明确完整时,才能表述为覆盖全部记录。"
)
+3 -2
View File
@@ -14,6 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.api.schemas.risk import RiskNotificationPageQuery
from app.core.contracts import RequestContext
from app.core.risk_cursor import decode_offset_cursor
from app.core.timeutil import from_local
from app.model.fund import FundRiskAlert, FundRiskNotification
from app.repository.fund_query_repository import PageRequest
from app.repository.risk_repository import RiskRepository
@@ -38,8 +39,8 @@ class RiskNotificationService:
).list_notifications(
keyword=query.keyword,
send_status=query.send_status,
start_time=query.start_time,
end_time=query.end_time,
start_time=from_local(query.start_time) if query.start_time else None,
end_time=from_local(query.end_time) if query.end_time else None,
page=PageRequest(
limit=query.limit,
offset=decode_offset_cursor(query.cursor, binding=binding),
+10 -8
View File
@@ -112,6 +112,8 @@ class RiskQueryService:
offset=decode_offset_cursor(query.cursor, binding=binding),
)
repository = self._repository(context)
start_time = from_local(query.start_time) if query.start_time else None
end_time = from_local(query.end_time) if query.end_time else None
if source == "customers":
page = await repository.list_customers(
keyword=query.keyword,
@@ -123,15 +125,15 @@ class RiskQueryService:
elif source == "transactions":
page = await repository.list_transactions(
keyword=query.keyword,
start_time=query.start_time,
end_time=query.end_time,
start_time=start_time,
end_time=end_time,
page=page_request,
)
elif source == "capital_flows":
page = await repository.list_capital_flows(
keyword=query.keyword,
start_time=query.start_time,
end_time=query.end_time,
start_time=start_time,
end_time=end_time,
page=page_request,
)
elif source == "holdings":
@@ -139,8 +141,8 @@ class RiskQueryService:
elif source == "login_records":
page = await repository.list_login_records(
keyword=query.keyword,
start_time=query.start_time,
end_time=query.end_time,
start_time=start_time,
end_time=end_time,
page=page_request,
)
elif source == "alerts":
@@ -150,8 +152,8 @@ class RiskQueryService:
page = await repository.list_notifications(
keyword=query.keyword,
send_status=query.send_status,
start_time=query.start_time,
end_time=query.end_time,
start_time=start_time,
end_time=end_time,
page=page_request,
)
else: