# 知识库管理系统 - 需求与决策记录 ## 1. 项目背景 用户拥有大量收藏文章(md / txt / 链接 / 视频),希望建立一个本地知识库管理系统: - 通过分级标签体系组织知识 - 通过 LLM 自动分析文章主题并归类 - 同主题文章聚合为单一知识 MD - 完整的变更追踪(类似 git diff) - 通过前端 UI 进行所有操作 ## 2. 原始需求 | 编号 | 需求 | |---|---| | R1 | 使用 tag-system 技能建立分级标签管理体系 | | R2 | LLM 分析文章主题,在已有体系中匹配标签;找不到时可在当前体系下新增标签类别 | | R3 | 同主题文章聚合为一篇 MD 知识(如"大模型部署方法.md") | | R4 | 记录每篇文章对聚合知识的变更(描述 + 变更行),支持类似 git diff 的展示 | | R5 | 前端:标签管理 + 文章录入 + 知识查看(含时间轴) | | R6 | 文章格式支持 md/txt/链接,视频暂缓 | | R7 | Spring Boot + Vue 架构,fullstack-merge-deploy 技能合并部署,端口 7945 | ## 3. 关键决策(已确认) | 决策点 | 选择 | 说明 | |---|---|---| | 数据库 | **MySQL 8+** | JSON 字段足够使用,部署熟悉度高 | | LLM 接入 | **OpenAI 兼容** | 通过 base_url + api_key + model 配置 | | 聚合粒度 | **LLM 主题自由生成** | LLM 根据文章归纳主题名,匹配现有 knowledge 标题,避免重复 | | 版本策略 | **全量快照** | 每次变更保存完整 MD 内容,同时存 diff 行便于时间轴展示 | | 链接处理 | **自动抓取 + 手动回退** | Jsoup + readability 解析,失败弹窗提示手动贴入 | | 用户认证 | **单用户登录** | JWT,首次启动引导设置管理员账号 | | 标签初始状态 | **全手动构建** | 空白启动,所有分类由用户手动创建 | | LLM 配置 | **前端配置 + DB 存储** | api_key 用 AES 加密入库 | ## 4. 非功能性要求 - 端口:**7945**(合并部署) - Java:**17**(Spring Boot 3.2 最低要求) - 构建:**Maven** - 包名:`com.knowledge.extractor` - 编码:UTF-8 全链路 ## 5. 范围排除 - ❌ 视频文章解析(后续迭代) - ❌ 多用户 RBAC(仅单用户) - ❌ 移动端适配(PC 优先) - ❌ 全文搜索引擎接入(MySQL LIKE 即可,后续可加 ES)