FeedLens反馈透镜

产品需求文档(PRD)

项目 内容
产品 FeedLens 反馈透镜
版本 v0.1(最小可运行版本)
状态 已实现;功能验收见文末表格
相关 项目背景 · 用户与场景 · 业务流程

1. 背景与目标

小团队的用户反馈分散、无结构、轻重混杂。FeedLens v0.1 要验证一件事:一个可以本地运行的 64M 小模型,能否把短反馈整理成可统计、可排序的结构,并且质量明显好于关键词规则。

v0.1 的成功不以用户量衡量,而以三个问题是否有了基于证据的答案来衡量:

  1. 模型在独立测试集上达到预设标准了吗?(见 项目背景 的 A1–A5)
  2. 一个陌生访客能在两分钟内理解它是做什么的、并亲手跑通一次吗?
  3. 它在哪些情况下不可靠,说清楚了吗?

2. 用户与场景

主要用户:小团队产品经理。主要场景:每周把一批评论贴进来,快速找出最急的问题和类别分布。详见 用户与场景分析。

3. 任务定义

输入:一条中文反馈,2–140 字。

输出:

字段 取值 定义
类别 功能故障 / 性能体验 / 功能建议 / 界面交互 / 账号登录 / 支付订单 / 广告骚扰 / 表扬认可 / 其他 用户最主要的诉求;并列时取影响更严重的一项
情感 正面 / 中性 / 负面 报告问题或不满=负面;建议、咨询且无明显不满=中性;认可、感谢=正面
紧急度 高 / 中 / 低 高=核心流程被阻断、资金损失、数据丢失、账号安全;中=功能或体验明显受损但仍可用;低=不影响使用
摘要 不超过 20 字 “发生了什么 / 想要什么”,不带情绪词,能直接作工单标题

为什么是这四个字段:类别回答“归谁处理”,紧急度回答“先处理谁”,情感用于统计口碑走向,摘要用于免去重读原文。再多的字段(如涉及的功能模块、设备型号)需要实体抽取,超出了 v0.1 小模型的可靠范围。

为什么限制 140 字:训练数据的长度分布集中在 50 字以内;限制输入长度是在告诉用户模型的能力边界,而不是让它对长文本给出没有依据的结果。

为什么输出是四行文本而不是 JSON:MiniMind 的词表只有 6400,引号、花括号这类符号会被切成零碎的 token,增加出错位置。固定的“字段名:值”四行格式更短,也更容易校验。解析成 JSON 由程序完成(feedlens/schema.py)。

4. 功能需求

优先级:P0 = v0.1 必须有;P1 = 应该有;P2 = 后续版本。

4.1 单条分析(P0)

编号 需求 验收标准
F1 输入一条反馈并提交 文本框带字数计数;支持按钮和 Ctrl/⌘+Enter 提交
F2 展示四个字段 类别、紧急度以标签呈现,摘要为主视觉;同时展示原文
F3 加载状态 提交后按钮禁用并显示加载动画,结果区显示骨架屏
F4 输入校验 少于 2 字或超过 140 字时不发请求,就地提示原因
F5 透明度 可展开查看模型原始输出、耗时、生成 token 数
F6 格式失败的处理 模型输出不合规时明确告知,展示原始输出,不做任何兜底替换
F7 示例 提供若干可点击示例,一点即填入并分析
F8 规则基线对照(P1) 可展开查看规则基线的结果,与模型不一致的字段高亮,并标注“非模型”

4.2 批量分诊(P0)

编号 需求 验收标准
B1 每行一条,最多 50 条 实时显示条数;超限或单条超长时提示具体是第几条
B2 结果按紧急度从高到低排序 高紧急度在最前;格式失败的排在最后并标明
B3 汇总 总数、高紧急度条数、负面占比、格式未通过条数;类别分布条形图
B4 导出 一键导出 CSV(UTF-8 带 BOM,表格软件可直接打开)

4.3 评测结果页(P0)

编号 需求 验收标准
E1 展示各系统在两份测试集上的指标 数据从后端读取评测输出文件,页面不写死任何数字
E2 说明数据性质 页面明确写出训练和测试数据均为合成数据
E3 没有结果时 显示“尚无评测结果”和生成方法,而不是空表或示例数字

4.4 模型状态与演示模式(P0)

编号 需求 验收标准
M1 顶栏常驻模型状态 已加载:模型名、版本、设备;未加载:显示“演示数据”
M2 演示模式 找不到权重时服务仍能启动;页面顶部出现横幅;只能查看预置示例,每张结果卡带“演示数据”戳记
M3 接入真实权重 只需设置一个环境变量指向模型目录并重启,无需改代码

4.5 接口(P1)

接口 用途
GET /api/status 模型是否加载、版本、限制、标签集合
POST /api/analyze 单条分析
POST /api/analyze_batch 批量分析与汇总
GET /api/eval 评测结果摘要

5. 非功能需求

类别 要求
延迟 CPU 上单条请求 P95 < 500 ms
资源 不需要 GPU;内存占用在普通笔记本可接受范围内
可用性 窄屏(手机)下所有功能可用,表格可横向滚动
可访问性 键盘可操作,有焦点样式,结果区域使用 aria-live
安全 所有用户输入和模型输出以纯文本渲染,不拼接 HTML;权重加载只反序列化张量
诚实 任何非模型产生的内容(演示数据、规则基线)都有明确标注

6. 不做什么

不做 原因
接入应用商店、客服系统等数据源 先验证核心能力;渠道接入是工程量,不是不确定性所在
多标签 / 一条反馈拆成多个诉求 会显著增加任务难度,小模型能否胜任需要单独验证
相似反馈聚类、趋势图 需要向量检索或额外模型,属于下一阶段
用户账号、历史记录 与验证目标无关
用规则或大模型对模型结果做自动修正 会让“模型到底行不行”变得说不清

7. 指标

层面 指标 目标 数据来源
模型 格式合规率、三标签全对率、摘要 ROUGE-L 见 A1–A4 eval/results/
性能 单请求 P95 延迟 < 500 ms eval/results/
产品(待上线后收集) 批量分诊后用户修改标签的比例;摘要被直接采用的比例 待定 需要埋点,v0.1 未实现

8. 风险

风险 影响 应对
合成数据与真实反馈差距大 线上效果远低于测试集 额外建一份不经过语法的手写测试集;文档与页面明确标注;把获取真实数据列为首要待办
用户过度信任结果 漏掉被错判为低紧急度的严重问题 始终展示原文和原始输出;说明卡写明不能用于自动决策
类别体系不符合实际 大量反馈落入“其他” 类别集中定义在一处;用真实数据验证 H3

9. 功能验收记录

验收方式和结果见 项目复盘 的“实际执行过的验证”一节。

本页由 docs/04-prd.md 生成。