# 坐席端截图 + 拍照功能 — 系统架构设计 > **文档版本**: v1.0 > **架构师**: Bob (Architect) > **日期**: 2025-01 > **关联 PRD**: `docs/02-产品需求/坐席端截图拍照功能-PRD.md` > **技术栈**: Vue 3 + Element Plus + Tailwind CSS + 原生 Canvas API --- ## 目录 - [Part A: 系统设计](#part-a-系统设计) - [1. 实现方案](#1-实现方案) - [2. 文件列表](#2-文件列表) - [3. 数据结构和接口](#3-数据结构和接口) - [4. 程序调用流程](#4-程序调用流程) - [5. 待明确事项](#5-待明确事项) - [Part B: 任务分解](#part-b-任务分解) - [6. 依赖包列表](#6-依赖包列表) - [7. 任务列表](#7-任务列表) - [8. 共享知识](#8-共享知识) - [9. 任务依赖图](#9-任务依赖图) --- ## Part A: 系统设计 ### 1. 实现方案 #### 1.1 核心技术挑战分析 | 挑战 | 难度 | 解决方案 | |------|------|----------| | **屏幕捕获** | 中 | `getDisplayMedia()` 获取屏幕流 → `Canvas.drawImage()` 捕获单帧。已有 `useScreenCapture.ts` 可复用 | | **选区编辑器** | 高 | 全屏 Canvas 遮罩 + 矩形选框 + 8 方向手柄。基于现有 `ScreenCapture.vue` 改造 | | **马赛克工具** | 中 | Canvas 像素化:将选定区域缩小再放大(`drawImage` + `imageSmoothingEnabled=false`)| | **撤销机制** | 中 | `ImageData` 历史栈,每次操作入栈,撤销弹栈恢复 | | **摄像头预览** | 低 | `getUserMedia()` + `