← Back to skills
extension
Category: Marketing & GrowthAPI key requirement unconfirmed

银行理财资产配置技能

生成专业的银行客户资产配置书(Word .docx / .doc 文档),帮助客户经理为客户提供符合银行内控规范与资产配置理论的专业资产配置建议。

personAuthor: manchellehubModelScope

银行客户资产配置助手

生成专业的银行客户资产配置书(Word .docx / .doc 文档),帮助客户经理为客户提供符合银行内控规范与资产配置理论的专业资产配置建议。

工作前提与安全边界

  • 本技能仅服务于银行客户经理在行内合规场景下的资产配置书生成,服务对象是行内真实客户与其真实资产。
  • 不得将该能力用于获取非授权客户数据、规避合规审查或任何越权、欺诈或恶意用途。查询与使用客户信息必须遵循最小必要原则与行内数据安全规范。
  • 客户资产数据的唯一合法来源是 MCP 服务 asset-query-mcp 的 queryCustomerAssets 工具(完整名 mcp__asset-query-mcp__queryCustomerAssets)。禁止使用模型记忆、历史对话中的资产数字、或任何模拟/Mock 数据充当客户真实资产;该 MCP 不可用时停止生成并提示,不得绕过。
  • 生成内容中涉及的任何收益率、利率、产品信息均须基于知识库/工具返回的真实行内数据,不得凭空捏造或编造数值。若数据缺失,应明确标注"数据缺失/待补充"并提示客户经理核实,而非虚构。

触发条件(自动识别)

主智能体必须自动识别以下所有用户输入模式,并立即启动本技能:

关键词识别(任意一条满足即触发)

  • "资产配置书"
  • "生成资产配置"
  • "资产配置分析"
  • "配置书"
  • "帮客户做资产配置"
  • "看看客户资产怎么分配"
  • "客户资产结构"
  • "资产配置建议"
  • "优化资产配置"
  • "资产配置方案"
  • "配置前后对比"
  • 给定具体客户资产数据(如"活期20万,定期50万...")

自然语言识别

  • 用户表达类似"帮我生成一份客户资产配置书"的意思
  • 用户要求"分析一下这个客户的资产情况"
  • 用户询问"这个客户应该怎么配置资产"

调用流程(主智能体必须执行)

【自动执行】当检测到上述任意触发条件时,直接执行以下流程,无需询问用户:
  1. 立即声明:

    正在使用 asset-allocation-assistant 技能为客户生成资产配置书...

  2. 查询客户资产:通过 MCP 服务 asset-query-mcp 查询客户资产总览与明细(未连接该 MCP 时立即停止并提示,见第 2 步)

  3. 解析模板:若有上传Word模板,直接读取 .docx 的 OpenXML 结构解析(禁止使用OCR),识别表格、图片、占位;具体见第 4 步

  4. 检索知识库:从"云岩支行资产配置理论知识库"获取配置理论、产品利率等

  5. 资产分析:分析资产结构,给出不合理预警

  6. 生成图表:绘制当前和优化后的资产配置饼状图

  7. 计算收益:计算配置前后的综合收益率

  8. 生成文档:复制模板为基底,在模板上原样填充内容生成 Word 配置书(完整保留模板的表格/图片/样式)

  9. 展示结果:将生成的配置书和饼状图交付给用户

核心工作流程

按以下顺序执行,灵活适配客户经理的实际输入(可能一次对话就带齐全部信息,也可能分步提供)。

第 1 步:收集客户身份标识

从客户经理对话中获取客户在我行的唯一标识,优先顺序:

  1. CustID 客户号(客户在我行的唯一标识)
  2. 客户身份证号

若客户经理尚未提供,请主动向客户经理索要:"请提供客户的 CustID 客户号(或身份证号),用于查询客户在我行的资产情况。"

注意:同一对话中可能已包含该标识,从上下文提取即可,避免重复询问。拿到标识后直接进入第 2 步,不要重复确认。

若客户经理已直接贴出客户资产明细(如"活期20万,定期50万…"),仍须用 queryCustomerAssets 核对一次;MCP 不可用时按 2.5 处理,不得仅凭手工数据出书。

第 2 步:通过 asset-query-mcp 查询客户资产总览(唯一数据源)

铁律:客户资产数据只能来自 mcp__asset-query-mcp__queryCustomerAssets。 不得使用模型记忆/历史对话中的资产数字,不得使用模拟数据,不得手工估算补全。本技能不设 Mock 模式。

2.1 调用资产查询工具

本技能使用的资产查询工具是固定的:

  • MCP 服务标识:asset-query-mcp
  • 工具名:queryCustomerAssets
  • 完整工具名:mcp__asset-query-mcp__queryCustomerAssets

调用链(MCP 工具通常以延迟加载方式挂载,必须先载入 schema 再调用):

// 1) 载入工具 schema(同时确认 MCP 已连接)
ToolSearch({ "tool_names": ["mcp__asset-query-mcp__queryCustomerAssets"] })

// 2) 按 schema 调用
DeferExecuteTool({ "toolName": "mcp__asset-query-mcp__queryCustomerAssets", "params": { "<按 schema 填客户标识>" } })

若工具已在当前可用工具列表中,可直接调用,不必重复检索。

工具未出现在可用列表且 tool_names 检索无结果时(服务升级导致改名、或 MCP 未启用),按关键词兜底检索一次:

ToolSearch({ "queries": ["客户资产总览查询", "客户资产查询", "queryCustomerAssets", "asset query", "customer asset"], "top_k": 10 })
  • 命中语义等价的替代工具 → 用它继续(并在配置书备注实际使用的工具名)。
  • 仍检索不到 → 判定 MCP 未连接,进入 2.5 的停止流程。

完整调用手册(schema 载入、参数映射、字段归一、排错清单)见 references/asset-query-mcp.md。

2.2 调用编排(按此顺序,能省则省)

  1. 先调 queryCustomerAssets 拿客户资产总览:传入客户标识,期望一次拿到总资产与分类汇总(存款、理财、基金、保险、贵金属等)。
  2. 返回不够细 → 按类别再调:若该工具支持按资产类别/产品类型入参,则带类别参数补调(存款:活期/定期/大额存单;理财:自营+代销;基金;保险(代销寿险等);贵金属/国债)。
  3. 客户信息(如需):姓名、财富等级(私人银行/钻石/白金/金),用于封面称呼与第二部分的权益行标黄;优先从 queryCustomerAssets 返回里取,取不到再用其他客户信息工具。
  4. 同一标识只查一次,结果在会话内复用;不要对同一客户重复发起相同查询。

参数填写规则:客户标识参数名以 queryCustomerAssets 的 schema 为准(常见 cust_id / custId / CustID / idNo / id_card),禁止臆造参数名;必填参数缺失时用已有值按语义对应填入,或提示客户经理补充。

2.3 数据归集与归一化

把各次 MCP 返回整理成统一的"客户资产总览数据表",作为后续第 5/6/7 步的唯一数据源:

| 字段 | 说明 | |---|---| | 客户标识 / 姓名 / 财富等级 | 来自客户信息或总览返回 | | 资产大类 | 归并为 现金类 / 稳健型 / 收益型 / 保障型(口径与知识库配置理论一致) | | 产品名称、金额(元)、占比、利率或业绩比较基准、期限、风险等级 | 逐条记录 | | 总资产合计、查询时间、数据来源 | 来源固定写作 asset-query-mcp |

  • 金额单位统一为元;文档展示转万元保留两位小数。
  • 占比 = 单项金额 ÷ 总资产;各项占比之和应为 100%。
  • 交叉校验:明细金额合计应 ≈ 总览总资产,偏差 > 1% 时以总览为准并在配置书注明差异原因(如部分产品未纳入统计),不得自行抹平。

2.4 资产类型覆盖范围

活期存款、定期存款、大额存单、自营理财、代销理财、代销基金、代销保险(寿险/分红险/增额终身寿)、贵金属、国债等 —— 以 asset-query-mcp 实际能查到的为准,查不到就记缺失,不假设为零以外的任何值。

2.5 失败处理(严格模式:不可用即停止)

| 情形 | 处理 | |---|---| | 检索不到 mcp__asset-query-mcp__queryCustomerAssets(MCP 未连接/未启用) | 立即停止生成配置书,提示:"未检测到资产查询服务 asset-query-mcp 的工具 queryCustomerAssets,请在连接器管理中启用 asset-query-mcp 后重试。客户资产数据不可编造,故本次不出具配置书。" | | MCP 已连接但调用报错/超时 | 原样转述错误要点,重试一次;仍失败则停止并提示联系行内系统管理员,不降级、不编数 | | 客户号查不到 / 返回空 | 提示客户经理核实 CustID,或改用身份证号重试;确认无此客户则停止 | | 某一资产类别返回空 | 记为该项缺失,可继续生成,在配置书对应位置标注"数据缺失/待补充"并说明缺失项,提示核实 | | 某一资产类别调用报错 | 重试一次;仍失败则按缺失处理并注明原因,不中断整体流程 | | 拿不到总资产/总览,只拿到零星类别 | 停止生成:资产总览是配置书的地基,缺了不能靠局部数据外推 | | 返回字段与预期不符 | 按实际返回语义映射,映射不了的字段留空并注明,不猜测含义 |

严格模式下没有"用模拟数据先出一版"这一选项;即使客户经理要求,也必须明确回复:真实资产数据只能来自 asset-query-mcp。

第 3 步:检索知识库中的配置理论与产品资料

从知识库**"云岩支行资产配置理论知识库"中检索与本任务相关的非结构化文档**,用于资产配置书的理论基础与实操经验基础。使用 knowledge-base 技能完成检索、打开文档、文档内定位与思维导图查看:

  • 检索范围(在"云岩支行资产配置理论知识库"中检索):
    • 资产配置规则 / 银行资产配置制度文件
    • 资产配置理论(资产配置三角图 / 三角理论)
    • 标准普尔家庭资产配置理论
    • 家庭生命周期理论
    • 银行内部产品资料、银行产品利率
    • 历史优秀的资产配置案例(如有)

按 knowledge-base 技能使用方式,在"云岩支行资产配置理论知识库"中检索、打开并阅读相关文档;文档较长时按需读取(可使用文档内定位、思维导图),将要点吸收进配置书的分析部分。

第 4 步:实时解析客户经理本次上传的资产配置书模板(关键步骤)

核心要求:模板是客户经理实时上传的,每一位客户经理上传的模板都可能不同,甚至同一客户经理不同客户也会使用不同模板。因此技能必须对"本次实际上传的那份 Word 模板"进行动态解析与适配,绝不能绑定、套用或假设某个固定的模板结构。

4.1 模板解析工具选择(重要!)

解析 Word 模板必须直接读取 .docx 的 OpenXML 结构,禁止使用 OCR 工具!

原因:

  • OCR 会把 Word 文档"压平"成文本,无法识别表格结构、图片、合并单元格、页眉页脚、字体字号等样式信息,导致生成的成品与模板"长得不一样"。
  • 只有直接读取 .docx(zip + OpenXML)才能拿到表格、图片、样式、编号、嵌入字体的完整信息。

推荐的两条技术路径(按优先级):

  1. 原样填充路径(首选,最保真):直接复制模板文件,在副本上仅做最小改动(替换占位文本、插入饼状图、填写金额列)。因为基底就是模板本身,所以模板的表格、图片、页眉页脚、嵌入字体、样式、编号、版式 100% 原样保留。

    • 工具:python-docx(from docx import Document)
    • 本技能已内置通用脚本:scripts/fill_docx_template.py(可直接调用,见 4.5)。
  2. 结构分析 / 校验路径(辅助):使用 minimax-docx(基于 OpenXML SDK)分析模板结构、并在生成后校验文档合法性。

    • minimax-docx 依赖 .NET 运行时;若环境无 dotnet 且安装失败,不阻塞主流程——原样填充路径不依赖它(python-docx 足够)。
    • 需要时:dotnet run --project MiniMaxAIDocx.Cli -- analyze --input 模板.docx

4.2 原样填充流程(首选路径,保真度最高)

第一步:先"看清"模板结构(只读,不改动文件)

用 python-docx 逐块列出模板的段落、表格、图片,建立"填充地图":

from docx import Document
doc = Document("模板.docx")
# 段落与表格的先后顺序、表格行列、图片所在段落

重点关注:

  • 客户称呼段(形如"尊敬的…财富客户 ○○○ 先生/女士:")——姓名填在哪两个文本片段之间;
  • 诊断段落(形如"占比超 __%,目前转存收益率为 __%,综合收益率可达 __%,提升 __")——各空白占位;
  • "当前综合资产饼状图:""配置后综合资产饼状图:"两处标注——其后的空段落即图片落位;
  • "我们的建议"表——"配置金额(万元)"列与"合计"行;
  • 其余章节(银行简况、权益展示、产品一览表、服务承诺)——原样不动。

第二步:生成两张饼状图(当前结构 / 优化后结构),中文标签需指定 CJK 字体。

第三步:复制模板 → 最小改动填充 → 另存

用通用脚本一键完成(推荐):

python3 /home/gem/user-data/agents/skills/asset-allocation-assistant/scripts/fill_docx_template.py \
  --template "模板.docx" \
  --output   "客户XX资产配置书.docx" \
  --config   data.json \
  --chart-current   outputs/chart_current.png \
  --chart-optimized outputs/chart_optimized.png

脚本内部严格遵循三条铁律:

  1. 绝不新建/重建文档——shutil.copyfile(模板, 成品) 以模板为基底;
  2. 只动三类内容——替换占位文本、插入饼状图、填写金额列;
  3. 按内容特征定位——不写死段落/表格下标,模板变了也能适配,匹配不到则安全跳过。

第四步:校验:确认成品可正常打开、表格数/图片数与模板一致(模板原有图片 x 张 + 新增饼状图 2 张)、页脚与嵌入字体保留。

4.3 结构分析 / 校验(辅助,minimax-docx,可选)

仅当需要更严格的 OpenXML 结构核验,或模板含极复杂结构(多节、分栏、域代码)时使用:

# 结构分析(依赖 .NET;不可用时可跳过,不影响主流程)
cd /home/gem/user-data/agents/skills/minimax-docx/scripts/dotnet
export PATH="$PATH:$HOME/.dotnet"     # 若已安装 dotnet
dotnet run --project MiniMaxAIDocx.Cli -- analyze --input "模板.docx"
dotnet run --project MiniMaxAIDocx.Cli -- validate --input "成品.docx"

分析结果包含:段落数、表格数及行列、图片数、页眉页脚数、自定义样式、各 XML 体积——用于对照检查成品是否"原样复刻"。 (若 dotnet 无法安装,以 4.2 的原样填充为准,其保真度已足够,且不依赖 .NET。)

4.4 若客户经理未上传模板

若客户经理本次未上传模板,使用默认的资产配置书结构(见下文"默认配置书结构")生成。

第 5 步:客户资产分析与不合理预警

基于第 2 步获取的客户真实资产数据,结合第 3 步检索到的理论与行内配置规则:

  1. 资产结构分析:按资产类型统计各类资产在总资产中的占比与绝对金额。
  2. 资产分配不合理预警:对照行内配置规则 / 标准普尔理论 / 三角理论,识别客户资产分配中的不合理之处,例如:
    • 应急备用金(现金类)比例过高或过低
    • 保障类资产(保险)缺失
    • 收益型/投资型资产占比失衡
    • 单一资产过度集中、流动性不足
    • 偏离家庭生命周期阶段应有的配置重心 逐条给出明确、可读的预警描述。
  3. 理论映射分析:分别用资产配置三角理论与标准普尔家庭资产配置理论(参考家庭生命周期理论)对照客户现状,说明偏差与建议方向。

第 6 步:生成资产配置饼状图(配置前 / 配置后)

  • 当前资产配置饼状图:按客户现有资产类型(现金类、稳健型、收益型、保障型等分类)绘制饼状图。
  • 优化后资产配置饼状图:基于第 5 步的分析与理论建议,给出优化后的目标配置比例并绘制饼状图。
  • 两图并列展示,便于客户与客户经理直观对比。
  • 分类口径须与知识库中的行内配置理论保持一致。
  • 饼状图保存为 PNG 格式,后续需要插入到 Word 文档中。

第 7 步:收益率计算(配置前 vs 配置后)

  • 配置前资产综合收益率 = 利用客户现有各类资产余额 × 对应行内利率/产品收益率,加权计算得到综合收益率(资产收益率/总资产)。
  • 配置后资产综合收益率 = 按优化后的目标配置比例,结合各类资产的收益率,加权计算得到优化后的综合收益率。
  • 收益率数据一律取自知识库 / 工具中的真实行内利率与产品收益率;缺失时使用"数据缺失"占位并提示核实,不得虚构。

第 8 步:生成 Word 资产配置书

8.1 文档生成策略选择

总原则:有模板 → 在模板上"原样填充"(保真);无模板 → 从零创建。

策略A:客户经理上传了模板(首选)

  • 复制模板为基底,仅做最小改动(替换占位文本 / 插入饼状图 / 填写金额列),完整保留模板的表格、图片、页眉页脚、嵌入字体与样式。
  • 首选工具:python-docx + 本技能内置脚本 scripts/fill_docx_template.py(见第 4 步 4.2)。
  • 若 dotnet 可用,可额外用 minimax-docx 做结构分析 / 合法性校验(可选,非必需)。

策略B:客户经理未提供模板

  • 使用 minimax-docx 的 A 流水线(从零创建),或回退用 python-docx 按"默认配置书结构"生成。

8.2 有模板时的生成(原样填充)

python3 /home/gem/user-data/agents/skills/asset-allocation-assistant/scripts/fill_docx_template.py \
  --template "上传的模板.docx" \
  --output   "客户XX资产配置书.docx" \
  --config   data.json \
  --chart-current   outputs/chart_current.png \
  --chart-optimized outputs/chart_optimized.png

其中 data.json 内含:客户姓名、诊断段落各数值(占比/转存收益率/配置后收益率/提升)、配置金额(按推荐产品名)、合计。

若需自行编码,务必遵守:复制模板为基底 → 只改占位/图标/金额 → 按内容特征定位 → 不重建文档。

8.3 无模板时 / 依赖回退

  • 无模板:minimax-docx A 流水线(需 .NET);若 .NET 不可用,用 python-docx 按默认结构生成。
  • 有模板:不依赖 .NET,python-docx 原样填充即可,保真度最高。
  • 任何情况下都不得硬造或伪造文档产物;依赖缺失且无法安装时,如实告知用户。

第 9 步:验证与输出

  • 验证生成的 Word 文档可以正常打开
  • 检查内容是否完整填充
  • 检查饼状图是否正确插入
  • 输出最终的资产配置书给用户

默认配置书结构(未提供模板时)

# 客户资产配置书
## 一、客户基本信息
## 二、客户资产总览(含资产类型、金额、占比;注明数据来源 asset-query-mcp 与查询时间)
## 三、当前资产配置分析
    · 资产结构
    · 资产分配不合理预警
## 四、资产配置理论分析
    · 资产配置三角理论
    · 标准普尔家庭资产配置理论
    · 家庭生命周期适配分析
## 五、当前资产配置饼状图
## 六、优化后资产配置方案及饼状图
## 七、资产综合收益率对比(配置前 / 配置后)
## 八、综合对比总结与建议

输出格式

  • 最终交付物为 Word 文档(.docx)资产配置书,使用客户经理提供的模板结构(若无则用默认结构)。
  • 优先使用 minimax-docx 生成;若 minimax-docx 不可用,则回退到 python-docx。
  • 配置前后饼状图为图片形式,由技能制图后嵌入 Word 文档相应位置。
  • 饼状图可借助图形生成工具先出图(如客户资产配置各分类占比饼状图),再经 minimax-docx 嵌入文档。
  • 文档须结构清晰、表述专业,数值真实来自行内数据。

质量要求

  • 数据真实性:客户资产一律来自 asset-query-mcp 的真实查询,利率/收益率来自知识库与行内产品资料,绝不虚构;MCP 未连接即停止,不以任何替代数据出书。
  • 理论准确性:三角理论、标准普尔理论、家庭生命周期理论的表述须与知识库文档一致。
  • 模板遵循:有模板时复制模板为基底做原样填充,完整保留模板的表格、图片、页眉页脚、嵌入字体与样式,做到"原模原样";模板信息不足时才退回默认结构。禁止用 OCR 解析模板,禁止重建/套用固定模板。
  • 可读性:预警与建议用通俗、可执行的语言,让客户能看懂、客户经理能照做。

asset-query-mcp 排错速查

| 症状 | 排查动作 | |---|---| | 可用工具列表里看不到 queryCustomerAssets | 先 ToolSearch({ "tool_names": ["mcp__asset-query-mcp__queryCustomerAssets"] }) 载入;仍无 → 用"客户资产总览/资产查询/asset query"关键词兜底检索一次 | | 调用报"未加载 / 参数校验失败" | 必须先 ToolSearch 载入 schema,再用 DeferExecuteTool 按 schema 传参,不能直接调用 | | 关键词检索也无结果 | 判定 asset-query-mcp 未启用,停止生成并提示客户经理在连接器管理中启用 | | 参数报错 | 客户标识字段名以 schema 为准(cust_id / custId / idNo …),不要臆造 | | 返回空 / 查无此客户 | 换身份证号重试;确认无此客户则停止并提示核实客户号 | | 部分类别为空 | 允许继续,配置书标注"数据缺失/待补充" |

详细调用规范见 references/asset-query-mcp.md。

常用命令速查

# 1. 设置 .NET 环境
export PATH="$PATH:$HOME/.dotnet"
export DOTNET_CLI_TELEMETRY_OPTOUT=1

# 2. 分析模板结构
cd /home/gem/user-data/agents/skills/minimax-docx/scripts/dotnet
dotnet run --project MiniMaxAIDocx.Cli -- analyze --input /path/to/template.docx

# 3. 验证文档
dotnet run --project MiniMaxAIDocx.Cli -- validate --input output.docx

# 4. 对比修改前后
dotnet run --project MiniMaxAIDocx.Cli -- diff --before template.docx --after output.docx