# 知识库管理系统 基于 Spring Boot + Vue 的本地知识库管理系统,支持文章录入、LLM 自动归类、同主题聚合为知识、全量版本管理与变更 diff 展示。 ## 核心功能 - **分级标签体系**:基于 tag-system 标准三表(tag_group / tag / tag_assignment),支持任意层级、导入导出 - **多格式文章录入**:Markdown / 纯文本 / 链接(自动抓取网页正文) - **LLM 智能归类**:OpenAI 兼容协议,自动匹配/新建标签 + 归纳主题 - **同主题聚合**:LLM 判定并入已有知识或新建,自动整合内容 - **全量版本管理**:每次变更保存完整快照 + diff 行数统计 - **时间轴 UI**:三栏布局展示知识全文 + 时间轴 + 版本详情 + 差异 - **单用户登录**:JWT 认证,首次启动引导设置管理员 - **前端配置 LLM**:base_url / api_key / model 通过前端设置页配置,api_key AES 加密入库 ## 快速开始 ### 1. 准备 MySQL 数据库 ```bash mysql -u root -p < backend/src/main/resources/schema.sql ``` 或在 MySQL 客户端中执行 `backend/src/main/resources/schema.sql` 全部内容。 ### 2. 修改数据库配置(可选) 如需修改数据库连接,编辑 `backend/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/knowledge_extractor?... username: root password: your_password ``` ### 3. 一键构建运行(Windows) ```bash run.bat # 构建 + 启动(端口 7945) run.bat build # 仅构建 ``` ### 4. 一键构建运行(Linux/macOS) ```bash chmod +x run.sh ./run.sh # 构建 + 启动 ./run.sh build # 仅构建 ``` ### 5. 访问系统 浏览器打开 **http://localhost:7945** 首次访问会跳转到 `/setup` 页面,设置管理员账号并配置 LLM。 ## 技术栈 | 层 | 技术 | |---|---| | 后端 | Spring Boot 3.2 + MyBatis Plus + MySQL 8 + JWT (jjwt) + Jsoup + DiffMatchPatch | | 前端 | Vue 3 + Vite + Element Plus + Pinia + Vue Router + marked + diff-match-patch | | 部署 | 合并部署(前端构建产物直出后端 static),端口 7945 | ## 项目结构 ``` knowledge-extractor/ ├── backend/ Spring Boot 后端 ├── frontend/ Vue 3 前端 ├── docs/ 设计文档 │ ├── 01-requirements.md 需求与决策记录 │ ├── 02-architecture.md 架构设计 │ ├── 03-skill-constraints.md 技能约束备忘录 │ └── 04-llm-prompts.md LLM Prompt 设计 ├── run.bat / run.sh 一键构建脚本 ├── .gitattributes └── README.md ``` ## 文档导航 详细设计请查看 [`docs/`](./docs/) 目录下 4 份文档。 ## LLM 配置说明 系统使用 OpenAI 兼容协议,已测试可用的服务商: | 服务商 | base_url | model 示例 | |---|---|---| | OpenAI | `https://api.openai.com/v1` | gpt-4o-mini | | DeepSeek | `https://api.deepseek.com/v1` | deepseek-chat | | 智谱 GLM | `https://open.bigmodel.cn/api/paas/v4` | glm-4-flash | | Moonshot | `https://api.moonshot.cn/v1` | moonshot-v1-8k | | 通义千问 | `https://dashscope.aliyuncs.com/compatible-mode/v1` | qwen-plus | | 本地 Ollama | `http://localhost:11434/v1` | llama3.1:8b | 任何兼容 OpenAI `/v1/chat/completions` 协议的服务均可使用。 ## 业务流程 ``` 录入文章(md/txt/链接) ↓ LLM 归类 ├── 匹配已有标签(0~5 个) ├── 建议新增标签(最多 2 个,含父路径) └── 归纳主题名 ↓ LLM 聚合判定 ├── 并入已有知识 → 生成增补内容 + diff └── 新建知识 → 生成初版全文 + diff ↓ 知识库展示 └── 时间轴查看每次变更(描述 + diff + 关联原文章) ``` ## 常见问题 **Q:忘记管理员密码怎么办?** 直接操作数据库重置: ```sql -- 用 BCrypt 工具生成新密码 hash(如密码 "123456") UPDATE sys_user SET password_hash = '$2a$10$xxx', salt = '$2a$10$xxx' WHERE username = 'admin'; ``` **Q:如何修改 JWT 密钥?** 编辑 `backend/src/main/resources/application.yml` 的 `jwt.secret` 字段(至少 32 字节)。 **Q:前端如何修改后再部署?** 只需重新执行 `run.bat` 或 `run.bat build`,Vite 会自动把最新前端打包到后端 static 目录。 **Q:链接抓取失败怎么办?** 在文章录入页选择"链接"类型时,若抓取失败,系统会提示错误。可改用 md 类型手动粘贴正文。