# 员工问卷组件产品需求文档 ## 一、概述 ### 1.1 功能定位 员工问卷是内部技术组员的**专业特长及偏好调研工具**,通过系统化问卷了解员工的技术能力、项目经验、承接偏好和协作习惯,为客服智能分配订单提供数据支撑。 ### 1.2 业务价值 - **员工视角**: 清晰表达技术优势和承接意愿,避免不匹配项目导致返工 - **管理视角**: 精准掌握团队能力分布,合理分配订单,提升交付质量 - **客服视角**: 快速匹配设计师特长与客户需求,减少沟通成本 - **数据视角**: 积累员工能力画像,优化团队培训和项目排期 ### 1.3 应用场景 1. **员工入职时**: 新员工首次登录企微端,完成身份认证后填写问卷 2. **定期更新**: 员工可更新问卷内容(如新增擅长风格、调整承接意愿) 3. **订单分配前**: 客服查看员工问卷,匹配合适的设计师 4. **组长管理**: 组长在员工详情弹窗中查看完整问卷答案和能力画像 --- ## 二、数据范式 ### 2.1 SurveyLog 问卷结果表(复用现有表) | 字段名 | 类型 | 必填 | 说明 | 示例值 | |--------|------|------|------|--------| | objectId | String | 是 | 主键ID | "survey_profile_001" | | **profile** | **Pointer** | **是** | **提交员工** | **→ Profile** | | project | Pointer | 否 | 关联项目(员工问卷为null) | null | | contact | Pointer | 否 | 关联联系人(员工问卷为null) | null | | **company** | **Pointer** | **是** | **所属帐套** | **→ Company** | | **type** | **String** | **是** | **问卷类型** | **"survey-profile"** | | **data** | **Object** | **是** | **问卷结果** | **{q1: ["奶油风"], ...}** | | isCompleted | Boolean | 否 | 是否完整填写 | true | | completedAt | Date | 否 | 完成时间 | 2025-10-30T10:00:00.000Z | | version | Number | 否 | 问卷版本号 | 1 | | isDeleted | Boolean | 否 | 软删除标记 | false | | createdAt | Date | 自动 | 创建时间 | 2025-10-30T09:00:00.000Z | | updatedAt | Date | 自动 | 更新时间 | 2025-10-30T10:00:00.000Z | **type 枚举值**: - `survey-project`: 项目问卷(客户填写) - `survey-contact`: 联系人问卷(暂未实现) - `survey-profile`: **员工问卷(本次实现)** **data 字段结构示例**: ```json { "q1_expertise_styles": ["奶油风", "极简风", "新中式"], "q2_expertise_spaces": ["常规住宅空间", "大平层/别墅复杂空间", "特殊功能空间"], "q3_technical_advantages": ["渲染精度高", "方案深化能力"], "q4_case_1_type": "140㎡极简风四居室", "q4_case_1_highlight": "高还原度材质渲染,精准呈现原木与水泥灰的质感碰撞", "q4_case_2_type": "90㎡奶油风三居室", "q4_case_2_highlight": "方案深化能力突出,优化客餐厅动线并设计嵌入式收纳系统", "q5_project_difficulty": "中等难度", "q6_prefer_project_types": ["擅长风格的常规项目", "新风格探索项目", "需方案深化的项目"], "q7_weekly_capacity": "1-2个(中等难度)", "q8_urgent_willingness": "愿意承接", "q8_urgent_limit": "2", "q9_progress_feedback": "关键节点同步", "q10_delivery_confirmation": ["交付前必同步客服/组长", "参考图逐张确认"], "q11_requirement_clarity": "基础需求+核心偏好", "q12_communication_methods": ["群内文字同步", "短语音快速沟通", "复杂需求开线上会议"], "q13_sensitive_words_awareness": "可识别部分敏感词", "q14_problem_handling": "先尝试自行调整", "q15_task_notification": "工作群@+私信提醒", "q16_cannot_accept": "暂无法承接大型商业空间(如超过500㎡的商场展厅、连锁餐饮门店)项目,以及无任何参考图且客户需求极度模糊的项目。", "q17_additional_notes": "擅长使用SU进行建模,同时熟练运用Lumion、V-Ray进行渲染;希望多承接新中式风格项目,进一步提升该风格的方案深化与软装搭配能力;针对老人房、儿童房等特殊功能空间,可提供符合使用者生理与心理需求的细节优化建议。" } ``` --- ## 三、核心组件设计 ### 3.1 ProfileSurveyComponent 员工问卷组件 #### 3.1.1 路由配置 ```typescript // 路由: /wxwork/:cid/survey/profile { path: 'wxwork/:cid', children: [ { path: 'survey/profile', loadComponent: () => import('../modules/profile/pages/profile-survey/profile-survey.component'), title: '员工技能调研' } ] } ``` #### 3.1.2 组件状态机 组件包含三种状态,通过 `currentState` 控制: ```typescript type SurveyState = 'welcome' | 'questionnaire' | 'result'; currentState: SurveyState = 'welcome'; ``` **状态转换流程**: ``` [欢迎页] --点击开始--> [答题页] --提交完成--> [结果页] ↑ ↓ └──────────────── 重新填写 ──────────────────┘ ``` --- ### 3.2 欢迎页 (welcome) #### 3.2.1 页面布局 ``` ┌─────────────────────────────────┐ │ 员工问卷欢迎页 │ ├─────────────────────────────────┤ │ [员工头像] │ │ 您好,张三 │ │ │ │ 《技术组员偏好及状况调研表》 │ │ │ │ 尊敬的伙伴: │ │ 为了更精准地匹配项目与您的专业能力│ │ 请完成本次能力调研。您的选择将帮助│ │ 我们合理分配订单,避免不匹配项目导│ │ 致返工,让您的优势得到充分发挥! │ │ │ │ • 预计用时: 8-10分钟 │ │ • 题目数量: 17题 │ │ • 题型: 选择题为主,少量填空题 │ │ │ │ [开始填写] │ │ │ │ [已填写过? 查看/更新答案] │ └─────────────────────────────────┘ ``` #### 3.2.2 功能实现 1. **用户识别**: - 通过 `WxworkAuth.currentProfile()` 获取当前登录员工 - 显示员工头像和姓名 - 记录 `profile.id` 用于后续保存 2. **数据检查**: - 组件初始化时查询 SurveyLog 表 - 条件: `type == 'survey-profile' AND profile == profileId` - 如果已存在且 `isCompleted == true`,显示"查看/更新答案"入口 3. **开始按钮**: - 点击后执行 `startSurvey()` - 切换状态: `currentState = 'questionnaire'` - 初始化题目索引: `currentQuestionIndex = 0` --- ### 3.3 答题页 (questionnaire) #### 3.3.1 页面布局 ``` ┌─────────────────────────────────┐ │ 进度: 1/17 ●○○○○○○○○○○○○○○○○ │ ├─────────────────────────────────┤ │ 一、核心技术能力 │ │ │ │ 1. 您最擅长的家装风格? │ │ (可多选,优先选3项) │ │ │ │ ☑ 奶油风 │ │ ☑ 极简风(含侘寂风) │ │ ☑ 新中式 │ │ □ 轻奢风 │ │ □ 美式/欧式 │ │ □ 复古风(如法式、美式复古) │ │ □ 其他: [____________] │ │ │ │ [← 上一题] [下一题 →] │ └─────────────────────────────────┘ ``` #### 3.3.2 题目数据结构 ```typescript interface Question { id: string; // 题目ID,如 "q1", "q2" section: string; // 章节,如 "核心技术能力", "项目经验与案例" title: string; // 题目文本 subtitle?: string; // 副标题提示 type: 'single' | 'multiple' | 'text' | 'number' | 'textarea'; // 题型 options?: string[]; // 选项列表 hasOther?: boolean; // 是否有"其他"选项 required?: boolean; // 是否必填 maxSelections?: number; // 多选题最多选择数量 placeholder?: string; // 输入框占位符 } ``` #### 3.3.3 题目列表 ```typescript const questions: Question[] = [ // ==================== 一、核心技术能力 ==================== { id: 'q1_expertise_styles', section: '核心技术能力', title: '您最擅长的家装风格?', subtitle: '可多选,优先选3项', type: 'multiple', maxSelections: 3, options: [ '奶油风', '极简风(含侘寂风)', '新中式', '轻奢风', '美式/欧式', '复古风(如法式、美式复古)' ], hasOther: true, required: true }, { id: 'q2_expertise_spaces', section: '核心技术能力', title: '您擅长的空间类型?', subtitle: '可多选', type: 'multiple', options: [ '常规住宅空间(客厅/卧室/厨房)', '大平层/别墅复杂空间(如挑空客厅、独立书房)', '商业空间(民宿/小型展厅/餐饮)', '特殊功能空间(如儿童房、老人房、电竞房)' ], required: true }, { id: 'q3_technical_advantages', section: '核心技术能力', title: '技术能力优势?', subtitle: '可多选,优先选2项', type: 'multiple', maxSelections: 2, options: [ '渲染精度高(光影/材质还原度优)', '建模速度快(高效完成基础建模)', '软装搭配落地性强(贴合实际采购与风格统一)', '方案深化能力(可提供空间优化/灯光布局建议)', '复杂场景处理(如异形吊顶、定制柜体建模)' ], required: true }, // ==================== 二、项目经验与案例 ==================== { id: 'q4_case_1_type', section: '项目经验与案例', title: '代表性案例1:项目类型', subtitle: '例如:120㎡极简风三居室', type: 'text', placeholder: '请输入项目类型...', required: true }, { id: 'q4_case_1_highlight', section: '项目经验与案例', title: '代表性案例1:核心亮点', subtitle: '例如:高还原度材质渲染/复杂吊顶建模', type: 'textarea', placeholder: '请输入核心亮点...', required: true }, { id: 'q4_case_2_type', section: '项目经验与案例', title: '代表性案例2:项目类型', subtitle: '选填,便于客服对接同类需求', type: 'text', placeholder: '请输入项目类型...', required: false }, { id: 'q4_case_2_highlight', section: '项目经验与案例', title: '代表性案例2:核心亮点', subtitle: '选填', type: 'textarea', placeholder: '请输入核心亮点...', required: false }, { id: 'q5_project_difficulty', section: '项目经验与案例', title: '可独立处理的项目难度?', type: 'single', options: [ '基础难度(常规户型、成熟风格、无复杂结构)', '中等难度(复杂户型、小众风格、需基础深化)', '高等难度(别墅/异形空间、高还原度需求、深度方案配合)' ], required: true }, // ==================== 三、项目承接偏好 ==================== { id: 'q6_prefer_project_types', section: '项目承接偏好', title: '您优先想承接的项目类型?', subtitle: '可多选', type: 'multiple', options: [ '擅长风格的常规项目(稳定发挥优势)', '新风格探索项目(愿意尝试未接触过的风格)', '需方案深化的项目(可输出技术建议)', '批量小型项目(如多套同户型基础渲染)' ], hasOther: true, required: true }, { id: 'q7_weekly_capacity', section: '项目承接偏好', title: '您可承接的单周期项目数量上限?', subtitle: '以周为单位', type: 'single', options: [ '2-3个(基础难度)', '1-2个(中等难度)', '1个(高等难度)', '可灵活调整(需提前沟通)' ], required: true }, { id: 'q8_urgent_willingness', section: '项目承接偏好', title: '对紧急订单的承接意愿?', subtitle: '紧急订单:需24-48小时内交付初版', type: 'single', options: [ '愿意承接', '暂不承接(优先保证常规订单质量)', '视情况而定(需提前确认时间是否充裕)' ], required: true }, { id: 'q8_urgent_limit', section: '项目承接偏好', title: '如愿意承接紧急订单,每月上限?', subtitle: '如不承接可跳过', type: 'number', placeholder: '请输入数字(次)', required: false }, // ==================== 四、协作与交付习惯 ==================== { id: 'q9_progress_feedback', section: '协作与交付习惯', title: '项目进度反馈与时效把控?', type: 'single', options: [ '每日同步进度(含"建模完成50%"等节点),超时前6小时主动预警', '关键节点同步(建模完成/渲染初版/最终交付前),超时前12小时主动预警', '有问题时即时反馈,无问题则按约定时间交付' ], required: true }, { id: 'q10_delivery_confirmation', section: '协作与交付习惯', title: '交付前确认流程?', subtitle: '可多选', type: 'multiple', options: [ '交付前必同步客服/组长,确认"是否需先给客户预览"后再发送', '若客户明确要参考图,会逐张确认具体参考要求并同步记录至工作群', '简单需求可直接交付,但复杂需求必提前同步确认' ], required: true }, { id: 'q11_requirement_clarity', section: '协作与交付习惯', title: '对接需求时,您希望获取的客户信息清晰度?', type: 'single', options: [ '需详细需求文档(含每张图的参考图、尺寸、风格说明)', '基础需求+核心偏好(可自主补充细节,但需确认"是否符合客户预期")', '灵活(简单沟通后推进,若遇参考要求不明确,会主动向客服/组长确认)' ], required: true }, { id: 'q12_communication_methods', section: '协作与交付习惯', title: '若项目需协作,您倾向的对接方式?', subtitle: '可多选', type: 'multiple', options: [ '群内文字同步(含参考要求、进度节点,便于追溯)', '短语音快速沟通(紧急时)', '复杂需求开线上会议(明确参考细节/深化方向)' ], required: true }, // ==================== 五、问题应对与风险预警 ==================== { id: 'q13_sensitive_words_awareness', section: '问题应对与风险预警', title: '您了解项目中的"敏感词"吗?', subtitle: '如"效果图不满意"、"出图时间拖了"、"参考不对"', type: 'single', options: [ '了解,遇到会即时截图反馈客服/组长,触发Issue跟进', '不了解,需提供敏感词清单', '可识别部分敏感词,不确定时会先咨询组长再处理' ], required: true }, { id: 'q14_problem_handling', section: '问题应对与风险预警', title: '若某个环节出问题,您的处理流程?', subtitle: '如"建模尺寸偏差"、"客户不认可色调"', type: 'single', options: [ '先暂停当前工作,即时在群内说明问题+附截图,触发代办任务后等待协调', '先尝试自行调整,调整无效后再反馈(最长不超过2小时)', '优先联系客服了解"客户真实诉求",再同步组长制定解决方案' ], required: true }, { id: 'q15_task_notification', section: '问题应对与风险预警', title: '您希望的代办任务通知方式?', subtitle: '可多选', type: 'multiple', options: [ '工作群@+私信提醒', '电话通知(仅紧急任务)', '企业微信工单提醒' ], required: true }, // ==================== 六、补充说明 ==================== { id: 'q16_cannot_accept', section: '补充说明', title: '暂时无法承接的项目类型?', subtitle: '例如:暂不接商业空间/暂不接无参考图的项目', type: 'textarea', placeholder: '请输入暂时无法承接的项目类型...', required: false }, { id: 'q17_additional_notes', section: '补充说明', title: '其他项目相关补充?', subtitle: '例如:擅长用SU建模/希望多接新中式项目提升能力', type: 'textarea', placeholder: '请输入其他补充说明...', required: false } ]; ``` #### 3.3.4 答题交互逻辑 1. **单选题**: - 点击选项后自动保存答案到 `answers[questionId]` - 自动跳转下一题 2. **多选题**: - 可选择多个选项 - 如有 `maxSelections` 限制,达到上限后禁用其他选项 - 显示选择数量提示:`已选 2/3 项` - 点击"下一题"后保存并跳转 3. **文本题/数字题**: - 输入完成后点击"下一题" - 文本输入框支持单行输入 4. **多行文本题**: - 使用 textarea,支持多行输入 - 输入完成后点击"下一题" 5. **进度指示**: - 顶部显示进度条: `currentQuestionIndex / totalQuestions` - 显示当前章节名称 6. **导航按钮**: - "上一题": 返回上一题,可修改答案 - "下一题": 保存当前答案并跳转(最后一题显示"提交") #### 3.3.5 数据保存策略 **自动保存**: - 每答完一题后自动保存到 Parse(防止中途退出丢失数据) - 保存方式: ```typescript surveyLog.set('data', { ...surveyLog.get('data'), [questionId]: answer }); await surveyLog.save(); ``` **完成标记**: - 最后一题提交后设置 `isCompleted = true` - 设置 `completedAt = new Date()` - 设置 `version = 1`(用于后续问卷更新迭代) --- ### 3.4 结果页 (result) #### 3.4.1 页面布局 ``` ┌─────────────────────────────────┐ │ ✓ 问卷提交成功 │ ├─────────────────────────────────┤ │ 感谢您的反馈! │ │ 系统已记录您的能力画像,客服将根据│ │ 您的专长合理分配订单。 │ │ │ │ 【您的能力画像】 │ │ ━━━━━━━━━━━━━━━━━━━━━━━ │ │ 擅长风格: 奶油风、极简风、新中式 │ │ 擅长空间: 常规住宅、特殊功能空间 │ │ 技术优势: 渲染精度高、方案深化能力│ │ 项目难度: 中等难度 │ │ 周承接量: 1-2个(中等难度) │ │ 紧急订单: 愿意承接(每月不超过2次)│ │ 进度同步: 关键节点同步 │ │ 沟通方式: 群内文字、短语音、会议 │ │ ━━━━━━━━━━━━━━━━━━━━━━━ │ │ │ │ 提示:您可以随时重新填写问卷更新信息│ │ │ │ [返回首页] [重新填写] │ └─────────────────────────────────┘ ``` #### 3.4.2 功能实现 1. **结果展示**: - 从 SurveyLog.data 读取答案 - 格式化显示(选择题显示选项文本,文本题直接显示) - 提取关键信息形成"能力画像摘要" 2. **权限控制**: - 员工本人: 可查看完整结果 - 组长: 可查看所有组员的完整结果 - 管理员: 可查看所有员工的完整结果 - 客服: 可查看受限字段(不含敏感信息) 3. **操作按钮**: - "返回首页": 返回企微端工作台 - "重新填写": 重新进入答题页,更新问卷答案 --- ## 四、员工详情弹窗集成 ### 4.1 员工列表问卷状态显示 在 `employees.component.html` 的员工列表中增加问卷状态标识: ```html
| 头像 | 姓名 | 职位 | 部门 | 问卷状态 | 操作 |
|---|---|---|---|---|---|
| {{ employee.name }} | {{ employee.roleName }} | {{ employee.department }} | {{ employee.surveyCompleted ? '✓ 已填写' : '未填写' }} |
该员工尚未填写能力问卷
项目类型: {{ surveyData.q4_case_1_type }}
核心亮点: {{ surveyData.q4_case_1_highlight }}
项目类型: {{ surveyData.q4_case_2_type }}
核心亮点: {{ surveyData.q4_case_2_highlight }}