Serendipity
|
4710a305be
|
docs: README 补充 Web UI、.docx 支持说明
|
2026-07-11 20:04:11 +08:00 |
|
Serendipity
|
6b89488677
|
test: 补充测试覆盖率 — DB/CLI/Search/Ingest + 修复 chromadb 异常兼容
|
2026-07-11 20:02:24 +08:00 |
|
Serendipity
|
10c5d3d347
|
feat: 添加 Web 管理界面(Vue 3 SPA 单文件)+ /admin 挂载
|
2026-07-11 19:57:30 +08:00 |
|
Serendipity
|
e71018a9a3
|
feat: 新增数据导出功能和 CLI export 命令(JSON/CSV)
|
2026-07-11 19:55:57 +08:00 |
|
Serendipity
|
d9b03ab5f0
|
feat: 新增 DocxSplitter — 支持 .docx 文档入库
|
2026-07-11 19:55:03 +08:00 |
|
Serendipity
|
04f2f8a8a8
|
refactor: 修复 Embedder Protocol 标准写法和 PDF/EPUB Splitter 参数语义
|
2026-07-11 19:53:08 +08:00 |
|
Serendipity
|
2d0e8c4997
|
chore: ruff lint 修复 + 第一优先级全部完成
|
2026-07-11 19:50:35 +08:00 |
|
Serendipity
|
3e51e166c2
|
docs: 更新 README — 混合检索、增量入库、Docker、导出功能
|
2026-07-11 19:48:15 +08:00 |
|
Serendipity
|
1df4793acb
|
feat: 添加 Dockerfile 和 docker-compose.yml 部署方案
|
2026-07-11 19:47:39 +08:00 |
|
Serendipity
|
9784f5f436
|
feat: API 安全加固 — 请求体大小限制、审计日志、健康检查免限速
|
2026-07-11 19:47:14 +08:00 |
|
Serendipity
|
ba814c7a70
|
feat: CLI 添加 --incremental/--force/--mode 选项
|
2026-07-11 19:45:50 +08:00 |
|
Serendipity
|
82924ff5f3
|
feat: 添加 Cross-Encoder Reranker + 集成到 Searcher
|
2026-07-11 19:44:56 +08:00 |
|
Serendipity
|
1d58a55a73
|
feat: Searcher 集成 HybridRetriever + SearchConfig 配置
|
2026-07-11 19:43:49 +08:00 |
|
Serendipity
|
cb470e516b
|
feat: 添加 HybridRetriever — BM25+向量混合检索
|
2026-07-11 19:42:20 +08:00 |
|
Serendipity
|
7b3c7d5323
|
feat: DocumentIngestor 支持增量入库(FileTracker)
|
2026-07-11 19:41:21 +08:00 |
|
Serendipity
|
3e2c61402a
|
feat: 添加 FileTracker — 基于 SHA256 的文件变更追踪
|
2026-07-11 19:39:12 +08:00 |
|
Serendipity
|
78ad21d311
|
chore: 添加 rank-bm25 依赖(混合检索用)
|
2026-07-11 19:38:33 +08:00 |
|
Serendipity
|
f7801b45a7
|
fix: CLI 路径检查改用 is_safe_cli_path(允许绝对路径),更新文档
|
2026-07-10 15:45:22 +08:00 |
|
Serendipity
|
ec3898ecb7
|
fix: auth 测试改用 monkeypatch.setattr,MarkdownSplitter 跳过代码块内标题识别
|
2026-07-10 15:30:58 +08:00 |
|
Serendipity
|
20eec96e92
|
fix: splitters/__init__.py 导出 HTMLSplitter
|
2026-07-10 15:29:21 +08:00 |
|
Serendipity
|
f8ec682474
|
test: 提取 MarkdownSplitter 边界测试到独立文件
|
2026-07-10 15:29:10 +08:00 |
|
Serendipity
|
9dd1efeec9
|
fix: ingest_obsidian 移除硬编码回退路径,改为明确错误提示
|
2026-07-10 15:29:00 +08:00 |
|
Serendipity
|
e99c090152
|
fix: 速率限制器配置从环境变量读取而非硬编码
|
2026-07-10 15:28:30 +08:00 |
|
Serendipity
|
76ae81c772
|
test: test_config 用 monkeypatch 替代 importlib.reload
|
2026-07-10 15:28:22 +08:00 |
|
Serendipity
|
788f610d3f
|
test: 修复 EPUB 缺失依赖测试设计问题
|
2026-07-10 15:28:13 +08:00 |
|
Serendipity
|
2e95f68864
|
fix: list_collections 异常向上传播而非静默吞掉
|
2026-07-10 15:28:03 +08:00 |
|
Serendipity
|
3308636086
|
refactor: 去重删除逻辑统一到 VectorDB.delete_by_source
|
2026-07-10 15:27:52 +08:00 |
|
Serendipity
|
ebfae1f60c
|
fix: EXPECTED_API_KEY 改为惰性求值防加载顺序问题
|
2026-07-10 15:27:38 +08:00 |
|
Serendipity
|
29bdfcfb18
|
fix: 替换过时的 X-XSS-Protection 为 Content-Security-Policy
|
2026-07-10 15:27:27 +08:00 |
|
Serendipity
|
276a1401f4
|
fix: content 模式默认 file_name 改用 UUID 防并发覆盖
|
2026-07-10 15:27:19 +08:00 |
|
Serendipity
|
b0319f366a
|
test: 补充 Searcher list_sources/delete_by_source/get_collection_info 测试
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 15:25:54 +08:00 |
|
Serendipity
|
925499b05b
|
test: 补充 ingest_file 和 ingest_directory 的测试覆盖
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 15:25:50 +08:00 |
|
Serendipity
|
e0190e8d2d
|
test: 添加 verify_api_key 和 RateLimiter 完整单元测试
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 15:25:47 +08:00 |
|
Serendipity
|
a368e640c1
|
test: 添加 CLI 模块基础测试 (ingest/search/stats/json)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 15:25:43 +08:00 |
|
Serendipity
|
fc010cda06
|
fix: CLI serve 使用 load_config 避免主进程双重加载嵌入模型
- 用 load_config(config) 替代 get_state().config
- 避免 CLI 主进程加载嵌入模型后 uvicorn 子进程再次加载
- 移除对 get_state 的隐式依赖(已有 DEFAULT_CONFIG_PATH 导入)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 15:23:19 +08:00 |
|
Serendipity
|
b97cff8857
|
fix: chunk 配置通过 DocumentIngestor 传递,不再被硬编码覆盖
- DocumentIngestor 新增 chunk_config 参数,类型 ChunkConfig
- ingest_file 使用 self.chunk_config.max_size/overlap 代替硬编码 1000/100
- deps.py get_ingestor 传入 config.chunk 配置对象
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 15:23:14 +08:00 |
|
Serendipity
|
6a5be5f3e7
|
fix: ingest_obsidian 初始化添加异常处理和友好错误信息
|
2026-07-10 15:21:29 +08:00 |
|
Serendipity
|
8445af7be0
|
fix: HF_ENDPOINT 环境变量操作添加线程锁防竞态
|
2026-07-10 15:19:43 +08:00 |
|
Serendipity
|
298f13721c
|
fix: 统一 CLI/API 路径安全检查为 is_path_within_workspace
|
2026-07-10 15:19:17 +08:00 |
|
Serendipity
|
1eb6f44ef4
|
fix: delete_document 的 collection 参数添加正则校验
|
2026-07-10 15:18:56 +08:00 |
|
Serendipity
|
0a4a4c766c
|
fix: search_documents 端点添加异常处理防止 traceback 泄露
|
2026-07-10 15:18:46 +08:00 |
|
Serendipity
|
284a4b9e09
|
fix: 修复 CORS allow_credentials 与 allow_origins=* 冲突
|
2026-07-10 15:18:39 +08:00 |
|
Serendipity
|
3b8b585f31
|
feat: 添加 EPUBSplitter — ebooklib 提取章节文字后分块
- 新增 splitters/epub.py: ebooklib 读取 EPUB → BeautifulSoup 去标签 → TextSplitter 分块
- epub 作为可选依赖: uv sync --extra epub
- registry 新增 .epub 映射, ingest_file 处理 EPUB 二进制文件
- 测试: 3 个 EPUBSplitter 测试 (含空 EPUB/Protocol 合规)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-10 14:32:41 +08:00 |
|
Serendipity
|
eda080bc05
|
docs: 更新文档记录多格式支持特性
|
2026-07-10 14:27:11 +08:00 |
|
Serendipity
|
b8afc9043d
|
test: 添加 PDFSplitter 和 HTMLSplitter 测试
|
2026-07-10 14:25:40 +08:00 |
|
Serendipity
|
9db0c15dee
|
test: 添加 Splitter 注册表和 TextSplitter 测试
|
2026-07-10 14:23:34 +08:00 |
|
Serendipity
|
30716f10dc
|
feat: 添加 HTMLSplitter — bs4 去标签后分块
|
2026-07-10 14:22:28 +08:00 |
|
Serendipity
|
69fb8cac9f
|
feat: 添加 PDFSplitter — pymupdf 提取文字后分块
|
2026-07-10 14:20:53 +08:00 |
|
Serendipity
|
cde4ae7ddc
|
feat: ingest.py 使用 registry 自动选择 Splitter,ingest_directory 支持多格式
|
2026-07-10 14:19:03 +08:00 |
|
Serendipity
|
13d63ba6ff
|
feat: 添加 TextSplitter 和 registry 自动选择机制
|
2026-07-10 14:17:17 +08:00 |
|