# 素材库系统 (Material Library) Flask + SQLite + FTS5 全文检索 + DeepSeek/豆包大模型分析 的素材管理平台。 ## 功能 ### 1. 项目与素材管理 - **新建项目**:名称、描述、类别、标签(逗号分隔) - **修改项目**:改类别/标签/描述/名称,增删素材 - **素材导入**: - 拖拽/点击批量上传文件:文本(txt/md/csv/json/xml/srt…) · 文档(pdf/docx/pptx) · 图片 · 视频 · 音频 - 直接粘贴文本素材 - **自动文本抽取**:txt/md/pdf/docx/pptx 上传即抽取正文,图片提取分辨率/格式元数据 ### 2. 大模型分析(DeepSeek + 豆包视觉) - **素材级分析**:一键分析单个或全部素材,提取 - 摘要 (summary) · 关键要点 (key_points) · 关键词 (keywords) · 推荐标签 (tags) · 建议归类 (category) - 图片走豆包视觉模型生成"视觉描述",再让 DeepSeek 提炼关键信息 - **项目级摘要**:汇总项目全部素材,生成项目报告(摘要/关键发现/项目级关键词/标签/类别) - 后台线程执行 + 前端轮询进度 ### 3. 索引与查询 - **SQLite FTS5 全文索引**(jieba 分词):素材名 + 抽取文本 + AI摘要 + 关键词 全部入库 - 站内搜索:项目匹配 + 素材匹配(带 AI 摘要预览) - 分类 / 标签过滤 ## 技术栈 - 后端:Flask 3 (Python 3.12, openclaw conda 环境) - 存储:SQLite (WAL) + 文件系统 (data/uploads/) - 检索:SQLite FTS5 + jieba - LLM:DeepSeek `deepseek-v4-flash`(结构化 JSON 分析)+ 豆包 `doubao-seed-evolving`(图片视觉描述) ## 快速开始 ```bash ./start.sh # 启动 (默认 16091) ./start.sh stop # 停止 ./start.sh restart # 重启 # 访问 http://:16091/ ``` ## 目录结构 ``` material-library/ ├── app.py # Flask 主程序(路由/抽取/LLM/FTS/后台任务) ├── start.sh # 启停脚本 (PID 管理) ├── static/index.html # 前端单页应用 └── data/ ├── material.db # SQLite 数据库 ├── uploads/ # 上传的素材文件 └── shots/ # 界面截图 ``` ## 数据库表 - `projects` — 项目(名称/描述/类别/标签) - `materials` — 素材(类型/文件/抽取文本/状态) - `analyses` — 分析结果(素材级 + 项目级,JSON 字段) - `materials_fts` — FTS5 全文索引 ## API 一览 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/projects?q=&category=&tag=` | 项目列表 | | POST/PUT/DELETE | `/api/projects[/]` | 项目增改删 | | GET | `/api/projects/` | 项目详情(含素材+分析) | | POST | `/api/projects//materials/upload` | 批量上传文件 | | POST | `/api/projects//materials` | 新增文本素材 | | GET/PUT/DELETE | `/api/materials/` | 素材详情/改名/删除 | | POST | `/api/materials//analyze` | 分析单个素材 | | POST | `/api/projects//analyze` | 分析项目全部素材 | | POST | `/api/projects//summary` | 生成项目摘要 | | GET | `/api/search?q=` | 全文搜索 | | GET | `/api/meta` | 统计/分类/标签 | | GET | `/files/` | 素材下载/预览 |