iomgaa
|
fb6f9964d8
|
feat(tree): 字幕模块 — SRT 解析 + 完整性检查 + Voronoi 分配
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-07-07 01:54:09 -04:00 |
|
iomgaa
|
c1680447c0
|
feat(adapters): EmbeddingProvider Protocol + local/remote 双后端实现
- app/ports.py: 添加 EmbeddingProvider Protocol(runtime_checkable,dim 属性 + embed 方法)
- adapters/embedding.py: 从参考代码迁移,拆分为 LocalEmbeddingProvider 和 RemoteEmbeddingProvider
- Local: sentence-transformers 冻结推理,维度校验
- Remote: OpenAI 兼容 API,L2 归一化,按 index 排序
- 两者均提供 embed() 和 embed_tensor() 统一接口
- tests/unit/test_embedding_adapter.py: Protocol 满足性、形状校验、导入测试
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-07-07 01:45:09 -04:00 |
|
iomgaa
|
547c9ddd84
|
feat(tree): TreeConfig 配置 dataclass
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-07-07 01:41:50 -04:00 |
|
iomgaa
|
e0f7851975
|
fix(tree): from_dict 增加 ID 唯一性校验
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-07-07 01:40:46 -04:00 |
|
iomgaa
|
c136de076d
|
refactor(tree): extract _embed_l2_subtree to reduce embed_all complexity
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-07-07 01:37:09 -04:00 |
|
iomgaa
|
22ad014973
|
feat(tree): TreeIndex 数据结构 — Card 体系 + 节点 + 序列化
- 新增三级 frozen Card dataclass: L3Card(6字段), L2Card(7字段), L1Card(7字段)
- 节点重构: L3Node/L2Node/L1Node 使用 Card 替代原始字符串字段
- 添加 @property 兼容层: description/summary 代理到 Card 字段
- L3Node 新增 subtitle 字段(字幕集成预留)
- JSON 序列化/反序列化支持 Card 结构 + embedding base64 编解码
- load_json 新增 ID 唯一性校验(重复 ID 抛 ValueError)
- 移除 pickle 序列化(仅保留 JSON)
- 日志从 log_msg 迁移到 loguru
- 17 个单元测试全部通过
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-07-07 01:35:10 -04:00 |
|
iomgaa
|
e60823de1a
|
build: add README, pyproject.toml, package skeletons and smoke test
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-07-06 11:37:59 -04:00 |
|