Skip to content

v1.8: 后端依赖热更新 + 文章发布事务化 + 纯净审计

Latest

Choose a tag to compare

@int2t05 int2t05 released this 06 Sep 13:16

配置热加载真重建

  • Embedder.client 改 atomic.Pointer — 修复配置热替换时的数据竞争
  • ConfigReloader(onReload 闭包) — 写 .env 后原子重建 LLM/Embedding 客户端,无需重启
  • database.Init 指数退避重试(5 次),DB 未就绪不再立即退出

文章发布事务化(修复"索引已写但状态 failed")

根因:ReplaceVectors 自管 *sql.Tx 提交,process_status 经回调在独立 GORM 连接单独写——四个非原子窗口。

  • ReplaceVectorsWithTx 加入调用方 GORM 事务 → 向量写入与 process_status='completed' 同一提交(Window A)
  • ProcessTask.Finalize 回调:post-commit 副作用 panic 不再改写为 failed(Window B)
  • UpdateArticleProcessStatusCAS:重试路径 CAS 声明,避免并发双写(Window C)
  • ListArticlesForRetry 扩展 stuck-processing 恢复:10min 阈值拾取崩溃残留(Window D)

配置映射修复

  • GetEnvConfigs key 改真实 .env 变量名(COGNIK_*),写回即生效,消除 friendly-key 漂移
  • 前端 SECTIONS/defaults/AppShell 同步 COGNIK_* 键空间

系统配置页 Tab 栏

  • 顶端 segmented Tab 栏(通用/LLM/Embedding/RAG/搜索/上传/重排序)
  • 字段友好标签 + 三种渲染:文本/密钥脱敏/布尔即时切换
  • 清理 ~30 个死 i18n key

纯净审计(421c951 后全部 diff)

  • 删 2 死文档(llm-config.md/llm-config-hot-reload-flow.md),新增 config.md
  • 修 TECH/ROADMAP/FLOW/API/knowledge 共 ~20 处死引用(LLMConfigManager/system_configs/llm_config_id)
  • 修 COGNOS_→COGNIK_ 改名残留(重试配置 env)
  • 删死配置键(RAG_QUERY_REWRITE/MULTI_ROUTE/HYBRID/RERANK/DEFAULT_TOP_K),.env.example 对齐 config.go
  • benchmark 死代码清理(ResultArticleIDs/maskKey/var_)+ Phase 编号修复

验证

  • go build/go vet/tsc --noEmit 全通过
  • 后端健康 HTTP 200;retry scanner 无报错
  • 热重建运行时验证:改 model → 日志确认重建;配置写回 roundtrip 生效

Full Changelog: v1.7...v1.8