e53b98f37d
- 依据 2026-09-28 实测:旧头对新网关 4/4 源返回 401,X-Gateway-Token 返回 200 - 取件通道 scripts/artifact_fetch.py 两处头名同步;镜像内生效需重建 worker - 修正过期结论:下载直链 /p/<path>?sign=… 为签名鉴权,请求头不影响(无头亦 206) - 同步文档与回归断言表述(重定向隔离测试仍 PASS)
3.9 KiB
3.9 KiB
来源目录实时刷新与分流验收
页面功能
- 进入子目录后显示“返回上一级”;顶部来源/目录标签仍可逐级返回。
- 右下角显示当前来源最近一次快照检查/激活时间。
- 每个文件显示不选择/对内/对外;有安全本地制品的文件可单条标注并立即进入对应本地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-Gateway-Token(2026-09-28 网关鉴权头由x-api-token改名,旧头已401失效;下载直链/p/<path>?sign=…为签名鉴权,不受请求头影响);拒绝所有重定向,不依赖钉钉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.jsontmp/CATALOG_ROUTING_REFRESH_FIREFOX.pngtmp/backups/pre-live-refresh-routing-20260909T170939.dump(3607159字节、0600、pg_restore目录检查通过)
生产发布请求和Release Worker保持关闭;未连接或写入生产WeKnora、生产数据库或OSS。