基于 React + Vite(前端)和 FastAPI + SQLite(后端)的网盘系统,首期包含网盘基础功能与 AI 检索问答能力。
frontend/:Web 前端(PC/移动端响应式)backend/:后端 API 与 SQLite 数据层docker-compose.yml:一键本地联调
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reloadcd frontend
npm install
npm run devdocker compose up- 认证:注册、登录
- 文件:获取列表、新建文件夹、上传文件、上传文件夹、文件下载元数据、文件夹下载打包任务
- 传输:秒传、分片上传初始化、断点续传状态查询
- 传输增强:分片上传(part/complete)、缺片校验、过期会话清理
- 分享:创建分享、我的分享、分享码提取
- 预览:文本预览、视频预览入口
- 视频流:支持
Range分片请求,非视频 MIME 拒绝访问 - 同步:增量变更拉取
- 多地登录:设备会话列表
- AI:文件名语义检索(首版)、问答接口占位(预留 DeepSeek 对接)
- 前端上传中心:支持普通上传、文件夹上传、分片上传、分片状态查询、断点补传、失败自动重试、会话过期重建、任务取消、任务历史(清空/过滤/导出 JSON)、分片重试计数展示、上传耗时、瞬时速率、滑动平均速率、失败原因统计与后端健康检查卡片
- 单文件上传大小限制:
5MB(超限返回413) - 分片上传校验:
chunk_index越界、分片大小超限将返回400 - AI 问答限流:每用户每分钟最多
5次(超限返回429)
以上限制可通过后端环境变量覆盖:
MAX_UPLOAD_FILE_SIZE(默认5242880)RATE_LIMIT_WINDOW_SECONDS(默认60)RATE_LIMIT_MAX_REQUESTS(默认5)
- 后端模板:
backend/.env.example - 前端模板:
frontend/.env.example
- 启动后端
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload- 启动前端
cd frontend
npm install
npm run dev- 运行后端 smoke test(无需手工点接口)
python scripts/smoke_test.py- 运行前端测试与构建
cd frontend
npm run test
npm run buildmake help
make smoke
make fe-test
make fe-build
make all- 版本变更:
CHANGELOG.md - Demo 清单:
docs/demo-checklist.md - 发布说明:
docs/release-notes.md - 演示讲稿:
docs/demo-script-5min.md - 非技术公告:
docs/release-announcement-nontech.md - 发布执行手册:
docs/release-day-runbook.md - 群公告模板:
docs/release-announcement-chat.md - 主持词:
docs/release-host-script-2min.md - 常见问题:
docs/release-faq.md - 提交前检查:
docs/final-pre-submit-checklist.md
后端新增了 lnet_cli.py,可在 shell 中直接完成主要网盘操作(登录、列文件、上传、删除、分享、AI问答、AI规划执行)。
cd backend
python lnet_cli.py login -u alice -p 12345678
python lnet_cli.py ls
python lnet_cli.py put "./demo.txt"
python lnet_cli.py cp "./demo.txt" --parent-id 3
python lnet_cli.py get 12 -o "./downloaded-demo.txt"
python lnet_cli.py mv 12 3
python lnet_cli.py find "合同"
python lnet_cli.py share 12 --hours 24
python lnet_cli.py ask "最近上传了什么文件?"
python lnet_cli.py agent "把 demo.txt 分享出去,有效期 24 小时" --dry-run
python lnet_cli.py agent "把 demo.txt 分享出去,有效期 24 小时" --confirm-each
python lnet_cli.py sh "把最近上传的文件分享出去" --dry-run执行 AI 规划命令前,需要在后端环境中配置 DeepSeek:
set DEEPSEEK_API_KEY=your_new_key
set DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
set DEEPSEEK_MODEL=deepseek-chatagent 命令支持执行保护:
--dry-run:只输出 AI 计划,不执行。--confirm-each:逐步确认,每步可执行/跳过/终止。--yes:允许删除类动作(未带时会自动跳过删除)。
命令别名:
cp:等价于put(上传文件)sh:等价于agent(自然语言快捷入口)get:按文件 ID 下载文件到本地mv:按 ID 移动文件/目录到目标目录