Files
material-library/README.md
T

74 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 素材库系统 (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
- LLMDeepSeek `deepseek-v4-flash`(结构化 JSON 分析)+ 豆包 `doubao-seed-evolving`(图片视觉描述)
## 快速开始
```bash
./start.sh # 启动 (默认 16091)
./start.sh stop # 停止
./start.sh restart # 重启
# 访问 http://<IP>: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[/<id>]` | 项目增改删 |
| GET | `/api/projects/<id>` | 项目详情(含素材+分析) |
| POST | `/api/projects/<id>/materials/upload` | 批量上传文件 |
| POST | `/api/projects/<id>/materials` | 新增文本素材 |
| GET/PUT/DELETE | `/api/materials/<id>` | 素材详情/改名/删除 |
| POST | `/api/materials/<id>/analyze` | 分析单个素材 |
| POST | `/api/projects/<id>/analyze` | 分析项目全部素材 |
| POST | `/api/projects/<id>/summary` | 生成项目摘要 |
| GET | `/api/search?q=` | 全文搜索 |
| GET | `/api/meta` | 统计/分类/标签 |
| GET | `/files/<id>` | 素材下载/预览 |