session-demand-words.md 4.5 KB

会话多标签诉求词(F076)

后台对静默会话生成标题与摘要时,同次模型调用生成独立的demand_words字符串数组。输入为完整会话,长会话使用既有有界压缩;不只依据助手最后一条回答,也不直接把业务关注点名称当作诉求分类。它不受“青浦营商咨询/企业主体/入驻意向”判断限制,原关注点与招商分析保留。

分类规则

优先采用用户指定的12类:惠企政策咨询、企业开办服务、项目审批咨询、资金补贴申报、企业融资咨询、人才用工服务、不动产与场地、企业诉求反馈、资质认定咨询、税务相关咨询、市场监管咨询、产业配套咨询。全部用户指定同义词集中在src/step5_session_analysis/demand_words.py,同时提供给模型和程序归一去重。

模型按含义归一相近情况;程序额外将已列同义词转换为标准名称、去首尾空白并去重。确实不属于12类时允许创建简洁可复用的新类别;自定义类别的语义一致性依赖模型,不宣称任意两个同义新词都能自动确定性合并。纯问候/感谢可为空数组;非营商实质问题仍分类。助手主动推荐不能当用户诉求;明确撤回、更正以最新表述为准。

DMS字段与同步

准确栏目为「营商助手 → 诉求词」,已核验默认columnId=1891(modelId由栏目读取),可通过DMS_DEMANDS_COLUMN_ID覆盖。严格作用域必须精确允许“助手问答记录”“助手会话”“诉求词”,缺少时明确停止,不自动扩大配置。未修改任何现有环境配置。

字段 保存内容
c_session_id 与助手会话相同的会话ID
c_word 单个归一后的诉求类别
title 与c_word相同的归一后诉求类别,供DMS前端显示(F078)
c_created_at 该诉求词记录创建时的Unix毫秒时间戳
state 新建为0(草稿)

一个会话有多个类别就保存多条记录,不把数组塞进单条c_word。现有有效同名记录保留,缺少的类别新增;过时类别、旧同义词以及多余重复草稿定向改为state=4(销毁状态),不物理删除。业务列表/词频应查询states=0;state=4保留恢复与审计用途,不计入当前列表。同步后回读校验有效记录集合和数量,当前会话每个类别恰好一条,其他会话不受影响。

完整分类数组同时存入助手会话summary JSON的demand_words。先保存助手会话,再同步诉求词;后者部分失败或响应未知时,后续复读当前已有记录再补齐,不盲目重放新增。后台以5分钟间隔重试同步,已保存分类可跨重启复用,不重复调用模型。同步指纹写入调度状态,成功后无需每轮扫描重复访问诉求词。手动run_session复用已完成结果时也执行同步核验。

下游业务分析三次失败时,已生成的标题、摘要及诉求词会随失败结果保存;若摘要/分类本身失败,保留旧诉求词,不把失败冒充空列表。过期状态不重写旧分类;继续聊天并完成下一次分析后才更新当前标签。已有历史summary没有demand_words时兼容跳过,不批量触发模型重跑;下一次源会话内容变化后生成。

模型执行与写回前后沿用源内容指纹检查,变化则丢弃或标记过期。DMS无跨表事务,助手会话和诉求词短暂不一致时后台可恢复;同步过程中也可能短暂存在新增与待移除行。沿用单进程观察器锁,不支持多机器或多个手动命令同时写同一会话的数据库级唯一保证。不要同时运行API观察器与独立分析进程。

验证与交付边界

python -m unittest discover -s src/step5_session_analysis/tests -q验证分类契约、归一、逐词保存、续聊增减、重复清理、部分失败/重启恢复、失败分析保留分类及源变化;API回归验证既有接入兼容。

python -m src.step5_session_analysis.demand_check仅发送五组合成会话到真实模型,覆盖多标签、同义归一、撤回、闲聊以及自定义类别,输出只保存检查结果和标签数量。真实DMS独立合成会话已完成2标签新增、替换1标签、清空回读;测试记录已移入state=4,未修改真实用户会话。样例通过不代表总体分类质量验收。

需重启后端生效。未做真实用户会话端到端、后台长时间生产观察或历史批量回填;F059原有生产验收缺口保持。