- Added `ThresholdRepository` for managing customer loss threshold configurations and notifications. - Introduced `threshold_service` to handle loss threshold alerts based on customer portfolio performance. - Enhanced `customer_prompts` to include new intent for querying product net values. - Updated `customer_service` to integrate new threshold alert functionality into existing workflows. - Implemented `sanitize_postprocess` for improved compliance handling in customer interactions. - Enhanced course documentation to reflect updates in advisor training modules and interactive elements. This update significantly improves the customer experience by providing proactive loss threshold notifications and enhancing the overall service framework.
118 lines
6.7 KiB
HTML
118 lines
6.7 KiB
HTML
<section class="module" id="module-4">
|
||
<div class="module-inner">
|
||
<p class="eyebrow animate-in">模块 4 · 未做与误区</p>
|
||
<h1 class="module-title animate-in">T-20 还没做<br>Neo4j 也不是对话 Tool</h1>
|
||
<p class="module-lead animate-in">
|
||
顾问线 chat 骨架已通,但<strong>草稿复核工作台、合规巡检、Neo4j 实时查询</strong>都还没进对话链路。
|
||
课程中心卡片写 Neo4j,容易让 AI 去改不存在的 Cypher 节点——这模块专门纠偏。
|
||
</p>
|
||
|
||
<div class="screen animate-in">
|
||
<h2>T-20 未实现清单(2026-09 快照)</h2>
|
||
<div class="pattern-cards">
|
||
<div class="pattern-card">
|
||
<h3>A-03 话术草稿</h3>
|
||
<p>无 <code>advisor_draft</code> 表流程 · 无复核 UI · prompt 里「草稿不外发」≠ 有工作台。</p>
|
||
</div>
|
||
<div class="pattern-card">
|
||
<h3>A-05 合规巡检</h3>
|
||
<p>合规专员抽检全量顾问会话 — 无前端/API。</p>
|
||
</div>
|
||
<div class="pattern-card">
|
||
<h3>A-06 跟进日志</h3>
|
||
<p>确认后回写 L2 — 对话线未入库跟进草稿。</p>
|
||
</div>
|
||
<div class="pattern-card">
|
||
<h3>已有</h3>
|
||
<p>顾问通用 tool→llm→guard 编排(<code>agent_service.py</code>)tool→llm→guard · G-01 归属 · <code>search_knowledge</code>(kb_product_rules)。</p>
|
||
</div>
|
||
</div>
|
||
<div class="callout callout-accent">
|
||
<strong>prompt 禁外发 ≠ 系统禁外发:</strong> 代码里没有「发给客户」API,但也没有强制 <code>review_status</code> 门禁——上线前必须补 T-20。
|
||
</div>
|
||
</div>
|
||
|
||
<div class="screen animate-in">
|
||
<h2>Neo4j:同步脚本,不是 LangGraph 节点</h2>
|
||
<div class="translation-block">
|
||
<div class="translation-code">
|
||
<span class="translation-label">实际存在 · Neo4j 关系图离线同步(sync_neo4j.py)/ 顾问归属离线同步(sync_advisor_rel.py)离线同步脚本</span>
|
||
<pre><code><span class="code-line">python scripts/sync/sync_neo4j.py</span>
|
||
<span class="code-line">python scripts/sync/sync_advisor_rel.py</span>
|
||
<span class="code-line"><span class="code-comment"># Neo4j 关系图离线同步(sync_neo4j.py)/ 顾问归属离线同步(sync_advisor_rel.py)离线同步脚本</span></span></code></pre>
|
||
</div>
|
||
<div class="translation-english">
|
||
<span class="translation-label">白话</span>
|
||
<div class="translation-lines">
|
||
<p class="tl">顾问对话<strong>不</strong>在运行时发 Cypher;名下客户靠 G-01 + Core 只读 Tool(<code>core_ro_tool.py</code>)。</p>
|
||
<p class="tl">指挥 AI「加 Neo4j Tool 查客户关系」= 新需求,不是修现有 bug。</p>
|
||
<p class="tl">Neo4j 数据来自 Neo4j 关系图离线同步(sync_neo4j.py)/ 顾问归属离线同步(sync_advisor_rel.py)batch sync,和 Chat 会话无实时联动。</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="screen animate-in">
|
||
<h2>群聊:顾问想「一键发给客户」</h2>
|
||
<div class="chat-window" id="chat-advisor-m4">
|
||
<div class="chat-messages">
|
||
<div class="chat-message" data-msg="0" data-sender="adv" style="display:none">
|
||
<div class="chat-avatar" style="background:#8B6B4A">顾</div>
|
||
<div class="chat-bubble">
|
||
<span class="chat-sender" style="color:#8B6B4A">理财师</span>
|
||
<p>帮客户写一段持仓说明,我要发微信</p>
|
||
</div>
|
||
</div>
|
||
<div class="chat-message" data-msg="1" data-sender="llm" style="display:none">
|
||
<div class="chat-avatar" style="background:#6B5B4A">AI</div>
|
||
<div class="chat-bubble">
|
||
<span class="chat-sender" style="color:#6B5B4A">顾问通用 tool→llm→guard 编排(agent_service.py)</span>
|
||
<p>生成草稿文本(引用 fact_text)· 系统<strong>无</strong>外发通道</p>
|
||
</div>
|
||
</div>
|
||
<div class="chat-message" data-msg="2" data-sender="you" style="display:none">
|
||
<div class="chat-avatar" style="background:#2A7B9B">你</div>
|
||
<div class="chat-bubble">
|
||
<span class="chat-sender" style="color:#2A7B9B">正确指挥</span>
|
||
<p>先补 T-20 草稿表 + review_status,不要加 POST /send-to-customer</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="chat-typing" id="chat-advisor-m4-typing" style="display:none">
|
||
<div class="chat-avatar" id="chat-advisor-m4-typing-avatar">…</div>
|
||
<div class="chat-typing-dots"><span class="typing-dot"></span><span class="typing-dot"></span><span class="typing-dot"></span></div>
|
||
</div>
|
||
<div class="chat-controls">
|
||
<button class="btn chat-next-btn">下一条</button>
|
||
<button class="btn chat-all-btn">全部播放</button>
|
||
<button class="btn chat-reset-btn">重播</button>
|
||
<span class="chat-progress"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="quiz-container" id="quiz-advisor-m4">
|
||
<div class="quiz-question-block"
|
||
data-correct="option-c"
|
||
data-explanation-right="对。Neo4j 是 Neo4j 关系图离线同步(sync_neo4j.py)/ 顾问归属离线同步(sync_advisor_rel.py)离线灌图;顾问 runtime 走 core_ro + G-01,不是 Cypher Tool。"
|
||
data-explanation-wrong="Neo4j 不在 顾问通用 tool→llm→guard 编排(agent_service.py)LangGraph 里,别按课程卡片字面去加 Cypher 节点。">
|
||
<h3 class="quiz-question">顾问 Chat 查「我名下有哪些客户」,代码走哪?</h3>
|
||
<div class="quiz-options">
|
||
<button class="quiz-option" data-value="option-a" onclick="selectOption(this)">
|
||
<div class="quiz-option-radio"></div><span>Neo4j Cypher Tool</span>
|
||
</button>
|
||
<button class="quiz-option" data-value="option-b" onclick="selectOption(this)">
|
||
<div class="quiz-option-radio"></div><span>POST /api/chat/visitor</span>
|
||
</button>
|
||
<button class="quiz-option" data-value="option-c" onclick="selectOption(this)">
|
||
<div class="quiz-option-radio"></div><span>顾问通用编排(agent_service.py)+ Core 只读 Tool(core_ro_tool.py)+ G-01 归属</span>
|
||
</button>
|
||
</div>
|
||
<div class="quiz-feedback"></div>
|
||
</div>
|
||
<button class="quiz-check-btn" onclick="checkQuiz('quiz-advisor-m4')">检查答案</button>
|
||
<button class="quiz-reset-btn" onclick="resetQuiz('quiz-advisor-m4')">重做</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|