facc04aa65
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交 (5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。 一、docs 结构整改(整改 #14) 根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入, 随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录 树并存于 docs/,共 791 文件、双分类体系冲突。 修复动作: - b2 同名异主题文件改名迁移保全 9 个 - C 类 39 个孤立文件按主题正确归类 - A/B1 类 222 个重复文件删除(新结构已有内容副本) - 9 个旧独有空目录删除 - 270 处内部引用按 verified 映射改写 - 整改记录 #14 登记于 04-运维文档/部署运维 结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。 残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。 二、compose 双目录对齐(消除踩坑 A) - docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist 改为 src/frontend-*/dist(h5 / agent / admin / terminal) - docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/ - 效果:本地 docker compose up 不再把根目录 stale dist 挂回, 与线上一致,分叉隐患消除(已 docker compose config 校验通过) 防复发铁律: - 重构须提交;仓库修复须 git stash -u 或先 commit - 新结构须 git add 并提交,避免再次 untracked 复活 - H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
125 lines
3.0 KiB
Markdown
125 lines
3.0 KiB
Markdown
# PRD - 文件上传
|
||
|
||
> **REQ编号**: REQ-用户-002
|
||
> **版本**: v1.0
|
||
> **优先级**: P0
|
||
> **阶段**: 近期(1-2个月)
|
||
> **作者**: 宋献
|
||
> **日期**: 2026-07-19
|
||
|
||
---
|
||
|
||
## 一、问题陈述
|
||
|
||
**用户问题**:
|
||
- 员工无法在 H5 端上传截图/文件
|
||
- 遇到问题时只能文字描述,无法提供错误截图、日志文件等
|
||
- 限制了 AI 多模态理解能力
|
||
|
||
**业务目标**:
|
||
- 员工可上传图片、文档、日志等文件
|
||
- 坐席端可查看上传的文件
|
||
- 为后续多模态 AI 能力铺路
|
||
|
||
---
|
||
|
||
## 二、需求范围
|
||
|
||
### 2.1 核心功能
|
||
|
||
| 功能 | 描述 |
|
||
|------|------|
|
||
| H5图片上传 | 支持拍照、相册选择上传图片 |
|
||
| H5文件上传 | 支持上传文档、日志等文件 |
|
||
| 坐席端查看 | 坐席可查看会话中上传的文件 |
|
||
| 文件预览 | 支持图片、PDF、TXT 等常见格式预览 |
|
||
|
||
### 2.2 非目标
|
||
|
||
- 不支持大文件(>10MB)直接上传
|
||
- 不支持文件编辑/协作
|
||
- 不支持文件夹上传
|
||
|
||
---
|
||
|
||
## 三、用户故事
|
||
|
||
| 角色 | 用户故事 | 验收标准 |
|
||
|------|----------|---------|
|
||
| 员工 | 我可以拍照或选择相册图片上传 | 点击上传按钮,可选择拍照或相册,上传成功后在消息中显示缩略图 |
|
||
| 员工 | 我可以上传文档或日志文件 | 上传后显示文件名,点击可预览或下载 |
|
||
| 坐席 | 我可以查看会话中的文件 | 文件作为消息的一部分显示,点击可查看详情 |
|
||
| 坐席 | 我可以下载原始文件 | 支持下载到本地 |
|
||
|
||
---
|
||
|
||
## 四、功能详情
|
||
|
||
### 4.1 H5 端
|
||
|
||
**入口**:
|
||
- 聊天输入框右侧增加「附件」按钮
|
||
- 点击弹出操作菜单:拍照、相册、文件
|
||
|
||
**交互**:
|
||
- 图片:选择后显示缩略图预览,支持删除重选
|
||
- 文件:选择后显示文件名、大小,支持删除重选
|
||
- 上传中显示进度条
|
||
- 上传失败显示错误提示,支持重试
|
||
|
||
**限制**:
|
||
- 单文件最大 10MB
|
||
- 每天最多上传 20 个文件
|
||
|
||
### 4.2 坐席端
|
||
|
||
**展示**:
|
||
- 图片显示为缩略图,点击放大
|
||
- 文件显示文件名、类型、大小
|
||
- 支持下载到本地
|
||
|
||
**预览**:
|
||
- 图片:支持缩放、旋转
|
||
- PDF:内嵌 PDF 查看器
|
||
- TXT/LOG:文本内容预览
|
||
|
||
### 4.3 后端
|
||
|
||
**存储**:
|
||
- 本地存储(/opt/wecom-it-desk/uploads)
|
||
- 文件名使用 UUID 重命名
|
||
- 保留原始文件名和扩展名
|
||
|
||
**接口**:
|
||
- `POST /api/file/upload` - 上传文件
|
||
- `GET /api/file/{id}` - 获取文件信息
|
||
- `GET /api/file/{id}/download` - 下载文件
|
||
- `DELETE /api/file/{id}` - 删除文件
|
||
|
||
---
|
||
|
||
## 五、指标设计
|
||
|
||
| 指标 | 目标 | 测量方式 |
|
||
|------|------|---------|
|
||
| 上传成功率 | ≥ 99% | 上传成功次数/上传总次数 |
|
||
| 平均上传时间 | ≤ 3s | 1MB以内文件上传耗时 |
|
||
| 日上传量 | 统计 | 每日上传文件数 |
|
||
|
||
---
|
||
|
||
## 六、技术方案
|
||
|
||
| 端 | 技术选型 |
|
||
|----|---------|
|
||
| H5端 | van-uploader 组件 |
|
||
| 坐席端 | el-upload 组件 |
|
||
| 后端 | FastAPI + 静态文件服务 |
|
||
|
||
---
|
||
|
||
## 七、关联文档
|
||
|
||
- 前置需求: 无
|
||
- 后续需求: REQ-AI-003 多模态视觉理解
|