Browse Source

feat: survey for project prd

ryanemax 14 hours ago
parent
commit
dcf4ae9c68
2 changed files with 126 additions and 1 deletions
  1. 107 0
      docs/prd/组件-项目问卷.md
  2. 19 1
      rules/schemas.md

+ 107 - 0
docs/prd/组件-项目问卷.md

@@ -0,0 +1,107 @@
+
+# 项目问卷组件及功能描述
+# 数据范式
+SurveyLog 问卷结果
+- contact Pointer<ContactInfo> 提交联系人
+- project Pointer<Project> 关联项目
+- profile Pointer<Profile> 提交员工
+- company Pointer<Company> 所属帐套 localStorage.get("company")
+- data Object 问卷的结果存储
+- type String
+   - survey-project 项目问卷
+   - survey-contact 联系人问卷
+   - survey-profile 员工问卷
+
+
+# 核心组件
+- 请您根据Project.id及currentContact.id持久化该项目该联系人本次合作问卷,存储在SurveyLog表
+- 请您设计project-survey组件页面,专用于采集本项目用户的需求信息。
+- 页面需要有三种状态:欢迎阶段、答题阶段、结果报告
+    - 初始状态,欢迎阶段,通过/survey/project/:pid进入,携带WxworkAuthGuard守卫
+        - 页面初始化中采用 rules/wxwork/auth.md 外部联系人直接通过.currentContact()获取外部用户信息
+        - 欢迎页主要介绍问卷目标,亲切引导用户填写,帮助项目更好开展
+        - 显示当前外部联系人的currentContact加载的头像与名称
+        - 有一个开始按钮,点击后进入答题阶段
+    - 答题阶段
+        - 单屏显示一道题目,单选点击若非其他可以切换下一题,若是其他需要用户补充内容再进入下一题
+        - 若是问答题则需要用户填写完成,手动点击下一题
+        - 其中涉及到姓名、手机等选项,若ContactInfo表中已存在则隐藏,方便客户快速完成
+    - 结果展示
+        - 当查询到SurveyLog的内容完整,则默认展示结果,方便客服、组员查看。
+
+# 配合使用
+- 项目详情页的问卷发送与查看
+   - src/modules/project/pages/project-detail/project-detail.component.ts 项目详情页中,客户联系人卡片的位置,需要显示问卷的填写状态
+      - 如果已填写,打开后,弹出加载项目问卷project-survey组件,展示结果
+      - 如果未填写,提示用户点击,发送问卷,调用WxworkSDK中的ww属性进行发送
+      ``` ts
+      import { WxworkSDK, WxworkCorp, WxworkCurrentChat } from 'fmode-ng/core';
+
+      // 属性声明
+     wework: WxworkSDK;
+      // 初始化
+      let cid = localStorage.getItem("company") || "cDL6R1hgSi"
+      this.wework = new WxworkSDK({ cid: this.cid, appId: 'crm' });
+
+
+      // 具体方法
+      thi.wework.ww.openExistedChatWithMsg({
+      chatId: 'chatId123', // 当前项目详情页的groupChat.get("chat_id")
+      msg: { // 构造一个美观漂亮的链接分享,邀请客户填写
+         msgtype: 'link',
+         link: {
+            title: 'title1',
+            desc: 'desc1',
+            url: 'link1', // 参考组件路由规则
+            imgUrl: 'imgurl1' // 可用 assets/logo.jpg
+         }
+      }
+      })
+      ```
+
+# 《家装效果图服务初次合作需求调查表》
+## 尊敬的伙伴:  
+为让本次效果图服务更贴合您的工作节奏与核心需求,我们准备了简短选择式问卷,您的偏好将直接帮我们校准服务方向,感谢支持!
+
+
+## 一、基础需求:快速明确服务范围  
+1. 本次您需要的核心服务是?  
+   □ 纯效果图渲染(仅输出可视化图像)  
+   □ 效果图+技术配合(含方案相关建议)  
+   □ 其他补充:______  
+
+2. 需覆盖的关键空间数量及类型?  
+   数量:______个(例:3个,空间类型:客厅/主卧/儿童房)  
+
+
+## 二、核心侧重:帮我们锁定服务重点  
+3. 您更希望本次效果图突出哪些价值?(可多选,选2-3项)  
+   □ 细节写实度(如空间尺寸匹配、材质还原,贴合落地需求)  
+   □ 视觉吸引力(如氛围营造、风格亮点,方便对接业主)  
+   □ 风格适配性(精准匹配预设调性,减少后期调整)  
+   □ 其他重点:______  
+
+4. 关于方案建议,是否需要我们技术团队配合?  
+   □ 需要(侧重方向:□ 材质搭配 □ 灯光布局 □ 空间优化)  
+   □ 暂不需要(已有明确方案,仅需渲染)  
+
+
+## 三、协作节奏:匹配您的沟通习惯  
+5. 您偏好的服务协作方式是?  
+   □ 前期多沟通(确认方向、细节后再推进,减少返工)  
+   □ 先出初版再修改(快速看到成果,针对性调整)  
+   □ 灵活协调(根据进度随时沟通)  
+
+
+## 四、特殊提醒:提前规避潜在偏差  
+6. 过往合作中,是否有需要特别注意的点?(可多选)  
+   □ 软装色调易偏差 □ 建模细节需盯控 □ 其他:______  
+
+7. 本次项目是否有特殊要求?(如业主禁忌、重点展示点)  
+   ______  
+
+8. 是否有参考素材(如风格图、实景图)需同步?  
+   □ 有(后续群内发送) □ 无(需求已清晰)  
+
+
+感谢您的反馈!我们将根据您的选择制定服务方案,对接人:______(姓名),电话:______,有问题可随时联系~

+ 19 - 1
rules/schemas.md

@@ -76,6 +76,7 @@ TABLE(Profile, "Profile\n员工档案表") {
 TABLE(ContactInfo, "ContactInfo\n客户信息表") {
     FIELD(objectId, String)
     FIELD(name, String)
+    FIELD(realname, String)
     FIELD(mobile, String)
     FIELD(company, Pointer→Company)
     FIELD(external_userid, String)
@@ -358,7 +359,8 @@ GroupChat "n" --> "1" Project : 关联项目(可选)
 | 字段名 | 类型 | 必填 | 说明 | 示例值 |
 |--------|------|------|------|--------|
 | objectId | String | 是 | 主键ID | "contact001" |
-| name | String | 是 | 客户姓名 | "李四" |
+| name | String | 是 | 客户微信名 | "唯美家装老李" |
+| realname | String | 是 | 客户真实姓名 | "李四" |
 | mobile | String | 否 | 手机号 | "13900139000" |
 | company | Pointer | 是 | 所属企业 | → Company |
 | external_userid | String | 否 | 企微外部联系人ID | "wmxxx" |
@@ -854,6 +856,22 @@ const totalPaid = payments.reduce((sum, payment) => {
 
 ---
 
+### 9.问卷数据说明
+
+
+## 11.问卷模块
+
+SurveyLog 问卷结果表
+- contact Pointer<ContactInfo> 提交联系人
+- project Pointer<Project> 关联项目
+- profile Pointer<Profile> 提交员工
+- company Pointer<Company> 所属帐套 localStorage.get("company")
+- data Object 问卷的结果存储
+- type String
+   - survey-project 项目问卷
+   - survey-contact 联系人问卷
+   - survey-profile 员工问卷
+
 ## Product表统一空间管理的优势
 
 ### 1. 行业语义清晰