1fa35e9870
按生产级备份组合落地:
- internal/releasesnapshot:新增门禁包,要求 root 下存在覆盖目标库、未过期
(默认 24h)、含 wiki_pages.jsonl 与 sha256 的快照;本地文件再校验哈希。
7 条单测(过期/换库/篡改/缺页/未接线/半成品)。
- 发布器:写目标库之前(Publish/Delete/Rollback 三条路)先过门禁;映射目标
(源库→目标库,共享真实库)或 policy=always 时必须有快照;门禁未接线
同样拒绝(fail-closed)。新错误码 release_target_snapshot_missing(不可重试)
+ 页面中文提示。6 条发布器单测。
- worker 配置新增 target_snapshot{root,max_age_hours,policy},校验 policy/
max_age/绝对路径;compose.release-sim.yaml 只读挂载快照目录。
- scripts/target_kb_snapshot.sh:默认云内执行(与 DB 同 VPC,凭据取自 WeKnora
容器)+ 默认不导 chunks(44s 出 8 张表);修复 \copy 不能跨行/不能带 WITH、
ES 计数改用 knowledge_base_id.keyword。
- ES:注册 kb_backup 仓库(path.repo),首个快照 36s/4.7GB/0 分片失败,
SLM kb-hourly(3d)+kb-daily(7d) 已建并执行成功。
- OSS:目标桶开启版本控制(此前未开启)。
- 文档 P6 增补硬门禁与云内执行;真实快照目录上门禁实测:两个绑定库通过、
未覆盖库拒绝、未接线拒绝。
52 lines
1.8 KiB
JSON
52 lines
1.8 KiB
JSON
{
|
|
"archive_root": "/var/lib/knowledge-governance/release-bundles",
|
|
"target_snapshot": {
|
|
"root": "/var/lib/knowledge-governance/target-kb-snapshots",
|
|
"max_age_hours": 24,
|
|
"policy": "mapped"
|
|
},
|
|
"routes": [
|
|
{
|
|
"tenant_id": 10000,
|
|
"knowledge_base_id": "0c84a098-d3ed-4b82-a165-e6de9691d6a8",
|
|
"embedding_model": "text-embedding-v4",
|
|
"source": {
|
|
"database_url_file": "/run/release-secrets/source_database_url",
|
|
"elasticsearch": {
|
|
"base_url": "http://elasticsearch:9200",
|
|
"index": "weknora_full_chunks"
|
|
},
|
|
"object": {
|
|
"provider": "oss",
|
|
"endpoint": "https://oss-cn-shenzhen.aliyuncs.com",
|
|
"region": "cn-shenzhen",
|
|
"bucket": "yzh-weknora-test",
|
|
"access_key_file": "/run/release-secrets/source_object_access_key",
|
|
"secret_key_file": "/run/release-secrets/source_object_secret_key"
|
|
}
|
|
},
|
|
"target": {
|
|
"database_url_file": "/run/release-secrets/target_database_url",
|
|
"elasticsearch": {
|
|
"base_url": "http://prod-es:29200",
|
|
"index": "weknora_test_chunks"
|
|
},
|
|
"object": {
|
|
"provider": "oss",
|
|
"endpoint": "https://oss-cn-shenzhen.aliyuncs.com",
|
|
"region": "cn-shenzhen",
|
|
"bucket": "dobot-weknora-test",
|
|
"storage_backend_id": "6129cfd1-a26c-41dd-88cb-e6a800daa3bb",
|
|
"access_key_file": "/run/release-secrets/target_object_access_key",
|
|
"secret_key_file": "/run/release-secrets/target_object_secret_key"
|
|
},
|
|
"weknora": {
|
|
"base_url": "http://prod-weknora:28080",
|
|
"api_key_file": "/run/release-secrets/target_weknora_api_key",
|
|
"allow_docker_http": true
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|