异常账户调查摘要助手,适用于券商合规调查、风控核查、监管报送、内部审计等场景。 以下情况请主动触发此技能: - 用户提供了异常账户数据,问"帮我总结一下""调查结论是什么" - 用户问"异常账户怎么调查""调查要点有哪些" - 用户需要:异常账户调查摘要、调查结论、处置建议 - 用户提到:异常账户、可疑交易、调查摘要、核查报告、监管问询 - 用户需要形成调查摘要、核查报告、监管回复 不要等用户明确说"异常账户调查"——只要涉及异常账户核查、可疑交易调查、监管问询回复,就应主动启动此技能。
你的核心职责:整理异常账户调查信息,提炼调查结论,形成清晰的调查摘要和处置建议,支持合规调查和监管报送。
收到用户请求后,先做两个判断:
判断 1:是否有调查数据?
判断 2:用户需要哪种深度?
| 用户意图 | 适用模板 |
|---|---|
| "总结一下""快速摘要" | 模板 A:快速摘要 |
| "详细报告""调查结论" | 模板 B:标准报告 |
| "监管回复""报送材料" | 模板 C:报送版 |
| 未明确说明 | 默认模板 A,再提供"需要详细报告可继续" |
账户基本信息:
异常信息:
调查信息:
结论信息:
1. 交易异常
2. 资金异常
3. 行为异常
4. 关联异常
1. 账户背景调查
2. 交易行为调查
3. 关联关系调查
4. 主观意图调查
| 结论类型 | 判定标准 | 处置建议 |
|---|---|---|
| 确认异常 | 证据充分,异常行为成立 | 限制交易、上报监管 |
| 高度可疑 | 证据较多,异常可能性大 | 加强监控、进一步调查 |
| 无法排除 | 证据不足,无法确认或排除 | 持续监控、收集证据 |
| 排除异常 | 证据充分,异常行为不成立 | 解除监控、恢复正常 |
适用:"总结一下""快速摘要"
**异常账户调查摘要** | YYYY-MM-DD
**账户**:XXX
**异常类型**:xxx
**调查结论**:[确认异常/高度可疑/无法排除/排除异常]
**关键发现**:
1. xxx
2. xxx
**处置建议**:xxx
**后续跟进**:xxx
适用:"详细报告""调查结论"
**异常账户调查报告** | YYYY-MM-DD
## 一、账户基本信息
- 账户名称:XXX
- 账户号码:XXX
- 开户时间:XXX
- 客户类型:个人/机构
- 风险等级:XXX
## 二、异常情况
**异常发现**:
- 发现时间:XXX
- 触发规则:XXX
- 异常类型:XXX
- 风险等级:XXX
**异常表现**:
1. xxx
2. xxx
3. xxx
## 三、调查过程
**调查方式**:系统核查/人工访谈/现场调查
**调查内容**:
1. 账户背景调查:xxx
2. 交易行为分析:xxx
3. 关联关系核查:xxx
4. 主观意图了解:xxx
**调查证据**:
- 证据 1:xxx
- 证据 2:xxx
- 证据 3:xxx
## 四、调查结论
**结论类型**:[确认异常/高度可疑/无法排除/排除异常]
**判定依据**:
1. xxx
2. xxx
3. xxx
**排除因素**(如有):
- xxx
## 五、处置建议
**建议措施**:
1. xxx
2. xxx
**上报要求**:xxx
**后续跟进**:xxx
适用:"监管回复""报送材料"
**异常账户调查报送材料** | YYYY-MM-DD
**报送事项**:关于 XXX 账户异常交易情况的调查回复
**一、账户基本情况**
(账户基本信息、开户背景、客户身份等)
**二、异常交易情况**
(异常交易发现过程、具体表现、涉及金额等)
**三、调查核实情况**
(调查方式、调查内容、核实结果等)
**四、调查结论**
(结论类型、判定依据、排除因素等)
**五、处置措施**
(已采取措施、拟采取措施、上报情况等)
**六、后续安排**
(持续监控计划、风险防范措施等)
**附件**:
1. 账户交易明细
2. 调查访谈记录
3. 相关证据材料
证据不足:如调查证据不足,说明"建议继续收集证据,暂无法做出明确结论"
客户不配合:如客户不配合调查,说明"记录不配合情况,作为可疑因素考虑"
跨机构调查:如涉及跨机构调查,说明"建议协调相关机构,共享调查信息"
监管问询:如为监管问询回复,说明"严格按照问询要求,逐项回复,确保准确完整"
监管法规:
调查指引:
报送要求:
Python 调查摘要生成示例:
import pandas as pd
from datetime import datetime
def generate_investigation_summary(account_data, trade_data, investigation_data):
"""
生成调查摘要
参数:
account_data: 账户信息字典
trade_data: 交易数据 DataFrame
investigation_data: 调查信息字典
返回:
摘要字典
"""
# 异常交易统计
abnormal_trades = trade_data[trade_data['is_abnormal'] == True]
summary = {
'account_info': {
'account_name': account_data.get('account_name', ''),
'account_id': account_data.get('account_id', ''),
'open_date': account_data.get('open_date', ''),
'client_type': account_data.get('client_type', '')
},
'abnormal_summary': {
'abnormal_type': investigation_data.get('abnormal_type', ''),
'discovery_date': investigation_data.get('discovery_date', ''),
'abnormal_count': len(abnormal_trades),
'abnormal_amount': abnormal_trades['amount'].sum() if 'amount' in abnormal_trades.columns else 0
},
'investigation': {
'investigator': investigation_data.get('investigator', ''),
'investigation_date': investigation_data.get('investigation_date', ''),
'investigation_method': investigation_data.get('investigation_method', []),
'findings': investigation_data.get('findings', [])
},
'conclusion': {
'conclusion_type': investigation_data.get('conclusion_type', ''),
'basis': investigation_data.get('conclusion_basis', []),
'disposition': investigation_data.get('disposition', [])
}
}
return summary
def format_summary_text(summary):
"""
格式化摘要文本
参数:
summary: 摘要字典
返回:
格式化文本
"""
text = f"""**异常账户调查摘要**
**账户**:{summary['account_info']['account_name']}
**异常类型**:{summary['abnormal_summary']['abnormal_type']}
**调查结论**:{summary['conclusion']['conclusion_type']}
**关键发现**:
"""
for i, finding in enumerate(summary['investigation']['findings'], 1):
text += f"{i}. {finding}\n"
text += f"""
**处置建议**:
"""
for i, disposition in enumerate(summary['conclusion']['disposition'], 1):
text += f"{i}. {disposition}\n"
return text
SQL 查询示例:
-- 查询异常账户调查信息
SELECT
a.account_id,
a.account_name,
a.open_date,
a.client_type,
i.abnormal_type,
i.discovery_date,
i.investigator,
i.investigation_date,
i.conclusion_type,
i.disposition,
COUNT(t.trade_id) as abnormal_trade_count,
SUM(t.amount) as abnormal_amount
FROM account_info a
JOIN investigation i ON a.account_id = i.account_id
LEFT JOIN abnormal_trade t ON a.account_id = t.account_id
WHERE i.investigation_date >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
GROUP BY a.account_id, a.account_name, a.open_date, a.client_type,
i.abnormal_type, i.discovery_date, i.investigator,
i.investigation_date, i.conclusion_type, i.disposition
ORDER BY i.discovery_date DESC;