修复风控时间口径与Agent截断提示
This commit is contained in:
@@ -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 时,必须明确说明当前证据不完整,不能按全量证据下结论;"
|
||||
"只有结果明确完整时,才能表述为覆盖全部记录。"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user