之前知识只能"存",不能"找"。这一版把链路补上:切片 → 向量 → 打分 → 带来源返回。 - chunk 表 + 迁移 0006:正文按标题归段切、代码块整块保留、超长按句切、 相邻片重叠 80 字;RLS 与 GRANT 与其它租户表一致 - 向量提供方做成协议:内置 hash(字符二元组,零依赖可复现,作为基线) 与 OpenAI 兼容端点两种,换实现不动业务代码 - 检索是混合打分:向量 0.6 + pg_trgm 0.4。专有编号、单号这类必须原样命中的词 靠词法兜,换个说法表达的同一件事靠向量兜 - 三条纪律:只搜 published(过滤写在 SQL 里)、低于阈值宁可不返回、 每条命中都带来源标题与 item_id - 发布时自动建索引,改完正文用 POST /knowledge/{id}/reindex 重建 - Web 知识页加检索框与命中卡片;新增 e2e/retrieval.mjs 6 项 为什么不是 pgvector:本机 Docker 起不来、fnsvr-01 没有该扩展且明确不动。 先用 real[] + SQL 余弦把链路跑通,将来换列类型与索引即可,接口不变。 后端 79 passed,e2e smoke/knowledge/richtext/retrieval 全绿。
- knowledge_doc 与 item 1:1,除 source_kind=manual 外必须有来源(库级约束) - 状态机 draft/in_review/published/archived,发布要 owner/admin;非法动作回 allowed_from 与 allowed_actions - 工单验收通过自动落 postmortem 草稿(generated_by=rule),同一来源只生成一次 - 接口:列表/详情/手记/改内容/状态动作/从事项沉淀;已发布禁改,改内容带乐观锁 - Web 知识页 + 详情抽屉;任务与工单详情里可「沉淀成知识」 - 8 个后端用例 + e2e 7 项断言(沉淀 → 待核对 → 发布)