张胜宇
|
aa4b9bf367
|
Merge remote-tracking branch 'origin/qyqy_develop' into qyqy_develop
|
2026-09-13 19:26:31 +08:00 |
|
张胜宇
|
e3c316aafb
|
Enforce trading authorization and suitability checks
|
2026-09-13 19:24:59 +08:00 |
|
lzf_0626
|
f72a545c39
|
refactor: 品牌统一为「南方财富」(项目方定)
背景:品牌名此前三处不一致 —— 后端 Agent 自称「奶龙基金」(customer_service_rules
的防诈骗/转人工话术、risk_agent 与 risk_analysis_service 的系统提示词)、前端全站
「南方财富」、闲聊提示词与知识素材「南方科技」。docs/36 已把它登记为"上报项目方后
待定",现按项目方决定统一为「南方财富」。
改动:
- app/core/customer_service_rules.py:P0 防诈骗话术与 P2 转人工话术里的品牌名
- app/service/agent/implementations/customer_service.py:COMPANY 常量,
以及那处引用实测样本的注释(改为不绑定具体品牌名,免得下次改名又过时)
- app/service/agent/implementations/risk_agent.py:docstring、自我介绍、system prompt
- app/service/risk_analysis_service.py:SYSTEM_PROMPT
- app/worker/risk_scan_scheduler.py:--help 描述
- app/static/index.html(旧联调页 4 处)、portal/employee-risk/dashboard/index.html
- tests/unit/api/test_customer_service_test_page.py:同步断言(它断言的正是页面里的品牌名)
- tools/publish_chitchat_prompt.py:SYSTEM_PROMPT 改品牌;并修掉"存在即跳过"的检查
—— 原来只判当前版本有没有这一行,于是改了文案也发不出去(脚本打印"无需发布"直接
退出),没有任何提示。改为比对 system_prompt/user_prompt_template 内容。
闲聊提示词已重发为 release 308 / v5,生效内容为"你是南方财富的智能客服助手…"。
刻意未动:
- fin_product.fund_manager = "南方基金" —— 它被 market_quote_sync_service 与
product_history_sync_service 当过滤条件使用,改名会让同步链路查不到产品
- knowledge_search_service.py 注释里引用的知识库实际标题「南方科技有限公司…」
- docs/客服docs 下的历史素材与 docs/ 下的过程记录(属历史留痕)
⚠️ Milvus 里的知识条目仍写「奶龙基金」(RAG-*/NF-*)与「南方科技」(PROD-*),
属知识数据,需重灌才能统一;本轮不动。
同时:
- docs/40 把品牌条目标为已处理,并补上知识库缺口的现状
- 新增 docs/42-场内基金知识条目草稿.md:按 fin_product 的 20 只产品生成,
含通用交易规则与产品清单;费率等缺失字段一律标"以交易页面为准",未编造数字。
**该文件是草稿,未入库**,待审核后走 POST /api/v1/knowledge/documents 灌库。
|
2026-09-13 19:17:56 +08:00 |
|
lzf_0626
|
2098185477
|
fix(portal): 客服浮窗轮询参数调整,压感知延迟并留足超时预算
现象:访客在公开页问客服,等约 9.5 秒后报「客服响应超时」。
根因不在链路快慢 —— Agent Worker 没在跑,run 一直停在 queued,
前端把「没人处理」呈现成了「超时」。
启动 Worker 后实测同一条链路(受理 0.05s + 意图分类 + 知识检索 + 落库):
4.11s / 4.09s / 4.82s,三条全部 succeeded。模型已经是 deepseek-flash,
延迟主要来自一次意图分类加一次 embedding,不是模型选型问题。
不过原来的轮询参数余量确实偏薄:350ms 后首次、之后每 700ms 一次、共 14 次,
约 9.5 秒封顶,后端稍一抖动就撞上;而且平均要多等半个轮询周期才看到结果。
改为 300ms 后首次、之后每 500ms 一次、共 40 次(约 20 秒):
感知延迟压到半秒内,同时给模型与检索抖动留出余量。
超时文案也从「客服响应超时,请稍后重试」改为「客服繁忙,暂时没能给出答复」,
不再暗示是响应慢。代码注释里写明:若仍然超时,先确认 Agent Worker 已启动。
|
2026-09-13 19:03:49 +08:00 |
|
lzf_0626
|
d4a895c643
|
fix: 修好访客客服浮窗、投顾工作台数据口径,恢复访客页来源声明
组员这次提交的两套新页面方向都对,但各有一处"接不上"的地方,这里补齐。
1) 访客客服浮窗(此前一问即失败)
客服 Agent 让访客走 query_knowledge(访客令牌的角色是 visitor、权限只有
agent:run + knowledge:query),但发布配置里三个知识意图只发了 search_knowledge,
于是 ToolExecutor 直接抛 ForbiddenAgentError,而客服代码对白名单失败是
「必须冒泡」的 —— 访客拿不到任何回答,登录客户侧却完全正常。
发布脚本的知识类意图改为同时发 search_knowledge 与 query_knowledge:
访客走前者、客户走后者,缺任一条对应人群就失败关闭。
(suitability_check 不发 query_knowledge:访客意图白名单不含它,访客到不了。)
2) 发布脚本会静默丢提示词
旧写法只查 platform_config_item 就当作"继承",而 config_release 是整版本替换
语义,新版本没带上的行等于被删除 —— 实际把 customer_service_chitchat 提示词
漏在了旧版本里(admin 端只在激活时打一句 stderr 警告)。
改为走 ConfigReleaseService.effective_snapshot() 读全三张受管表,补上提示词
搬运(version 重分配、带上 input_schema/output_schema),并在激活后硬校验
配置项与提示词条数,条数不符即失败退出。
(model_routing_rule 本环境为空;不为空则直接中止,不假装支持。)
丢失的那条提示词已按原文恢复,active 版本现为 9 条配置项 + 1 条提示词。
3) 投顾工作台永远为空
published() 取的是 customer_id == 自己 user_id,而投顾是员工账号、不可能是
客户;且只认 advisor_recommendation_plan + approved,而投顾交付的主产物是
investment_goal_book,发布后状态是 published。三重不匹配下页面永远显示空态。
改为按「本人 + sys_customer_assignment 里名下归属客户」过滤(不用 data_scope:
投顾因持有 all 级权限会把整个身份的 scope 抬到 all,那会放开到全部客户),
并覆盖两类 content_type 与两种已发布取值。
实测:投顾可见归属客户 9001 的方案书,客户仍只见自己的,风控仍 403。
4) 访客页把"演示数据"声明删了但假数据还在
mock-data.js 的 MOCK_SOURCE_NOTICE 与两个页面的 data-source-notice 区块被删除,
而 MOCK_PRODUCTS/MOCK_RANKING_CHANGE 仍在渲染(详情页含历史净值曲线)。
恢复声明常量、页面区块与样式,并给 products/product-detail 的 link 与 script
加上版本参数 —— 此前没有版本号,浏览器会命中旧缓存,改动看不见。
其他:投顾页显示交付物类型与客户编号(后端新返回的字段),README 补上投顾页
数据口径、访客/客户两条检索工具的差别,以及"渲染 mock 必须带来源声明"的约定。
|
2026-09-13 18:54:09 +08:00 |
|
张胜宇
|
e740a58e9d
|
前端2
|
2026-09-13 18:31:38 +08:00 |
|
张胜宇
|
e38ece32bf
|
前端提交
|
2026-09-13 15:56:54 +08:00 |
|