Repository navigation
配置热加载真重建
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)
配置映射修复
GetEnvConfigskey 改真实 .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