Files
knowledge-governance/docs/SOURCE_CATALOG_LIVE_ROUTING_ACCEPTANCE.md
T
zheromiku dcdc8d1ddd feat: 知识治理平台(含已验证发布/回滚契约)
全栈知识治理平台首次入库(P1-P10 + 发布链路模拟验证闭环):

- 治理核心:源目录/变更集/人工审核/发布批次/发布执行(fail-closed 闸口)
- 测试通道:WeKnora 测试 KB 上传/轮询/验收;poll 完成时写入
  parser_generation/index_generation,修复 manual/seed 路径发布闸口永久拦截
- 发布适配器 v071(本地 source=测试角色 / 云端 target=生产角色 模拟验证通过):
  * ES 导出/导入 mapping 自适应(.keyword 子字段、可选 tenant_id)
  * OSS locator 支持嵌套 scheme;chunks.seq_id 由目标序列分配
  * bundle 归档同身份重试原子替换;verifier 按 bundle chunk_type 计数
  * 回滚 job payload 支持 prior_execution_id(strict 解码)
- 三通道发布+回滚演练实测:publish 4/4 verified,检索命中,
  rollback 4/4 rolled_back,目标端 PG is_enabled=false、ES is_enabled=false
- 前端 A·Data-console 风格全站统一,120 用例通过
- 门禁:go vet / go test 全包通过,gofmt 干净
2026-09-30 10:54:06 +08:00

3.7 KiB
Raw Blame History

来源目录实时刷新与分流验收

页面功能

  • 进入子目录后显示“返回上一级”;顶部来源/目录标签仍可逐级返回。
  • 右下角显示当前来源最近一次快照检查/激活时间。
  • 每个文件显示不选择/对内/对外;有安全本地制品的文件可单条标注并立即进入对应本地WeKnora解析队列。
  • 当前页支持勾选、全选可入队文件、批量标注对内/对外。零选择按钮显式灰色禁用。
  • 目录元数据存在但没有可验证文件制品时,分流控件禁用并显示“只有目录元数据,尚无可上传文件”;不会假装入队。
  • 分流结果显示标注数、新入队、已在队列及暂不可入队数量。

本地WeKnora目标

新增并读回验证两个隔离本地知识库:

  • governance-internal-local:对内解析队列。
  • governance-external-local:对外解析队列。

API只返回两个范围是否启用,不把目标知识库ID交给浏览器。文件路由在单个PostgreSQL事务中写人工范围覆盖和审计、创建目标Publication及test.upload Job。重复标注同一文件/目标返回already_queued,不重复上传。

从PP公开Manifest选择最小的626字节TXT,按Manifest字节数和SHA-256复核后复制到治理Spool,并补齐一个content_object的受控spool引用。该文件分别通过对外和对内队列真实上传到本地WeKnora,两个Knowledge均达到parse_status=completed。测试对象保留,未调用删除API。

实时快照

点击“实时刷新目录”创建持久source.catalog.refresh Job。普通Worker运行只读扫描器,Job payload只保存来源治理ID、类型、名称、阶段、进度和计数,不保存URL、Token、Cookie或捕获请求。网页轮询Job,可以切换页面;完成后自动读取当前快照。

阶段:等待后台刷新→验证登录→扫描目录→校验父子关系和数量→写不可变快照/切换当前指针→完成。失败不会切换当前快照。

真实验收:

  • 钉钉公司级技术支持知识库:浏览器捕获会话有效;扫描1080个文件夹;新快照4524节点、1079目录、3444文件;原快照3468文件,证明读取的是实时来源变化;新快照原子激活,旧快照保留。
  • PP:当前凭据文件可读取且网络可达,但登录返回无Token;网页显示“PP登录失败,请在来源链接更新凭据;旧快照仍然保留”。
  • AList直连:保留各来源原地址,仅向POST /api/fs/list添加x-api-token;拒绝所有重定向,不依赖钉钉SSO Cookie。2026-09-10 实测四个来源均完成只读全量快照并原子激活:国内工业1718目录/4942文件、海外工业1486目录/4463文件、国内教育3566目录/9067文件、海外教育1742目录/5015文件。

Worker只读挂载源脚本和来源目录;DingTalk/PP/AList凭据副本位于治理secrets/、权限0600,仅普通Worker挂载,API/Web/Release Worker不挂载。AList直连令牌从secrets/alist_api_token读取,不进入来源地址表、任务载荷、数据库或日志。

验证证据

  • Python测试12项、Web 77项、Go全项目测试和相关vet通过。
  • 独立PostgreSQL验证:文件标注、人工范围审计、目标Publication、Job入队、重复幂等和未映射阻断。
  • 浏览器:返回、快照时间、实时任务完成卡、单条选择、当前页批量、幂等结果、灰态、1440/1024/768无页面级横向溢出。
  • tmp/catalog-routing-refresh-acceptance.json
  • tmp/CATALOG_ROUTING_REFRESH_FIREFOX.png
  • tmp/backups/pre-live-refresh-routing-20260909T170939.dump(3607159字节、0600、pg_restore目录检查通过)

生产发布请求和Release Worker保持关闭;未连接或写入生产WeKnora、生产数据库或OSS。