本次开发完成了基于企业微信的完整项目管理模块,支持从客户咨询到项目归档的全流程管理。
开发时间: 2025-10-16 开发内容: 企微嵌入式项目管理系统 技术栈: Angular 17 + Ionic + Parse Server + 企业微信SDK
文件位置: /home/ryan/workspace/nova/yss-project/docs/prd/wxwork-project-management.md
内容包含:
文件位置: /home/ryan/workspace/nova/yss-project/src/modules/project/pages/project-loader/
核心功能:
文件位置: /home/ryan/workspace/nova/yss-project/src/modules/project/pages/contact/
核心功能:
文件位置: /home/ryan/workspace/nova/yss-project/src/modules/project/pages/project-detail/
核心功能:
文件位置: /home/ryan/workspace/nova/yss-project/src/modules/project/pages/project-detail/stages/stage-order.component.*
核心功能:
文件位置: /home/ryan/workspace/nova/yss-project/src/modules/project/pages/project-detail/stages/stage-requirements.component.*
核心功能:
文件位置: /home/ryan/workspace/nova/yss-project/src/modules/project/pages/project-detail/stages/stage-delivery.component.*
核心功能:
文件位置: /home/ryan/workspace/nova/yss-project/src/modules/project/pages/project-detail/stages/stage-aftercare.component.*
核心功能:
yss-project/
├── docs/
│   ├── prd/
│   │   └── wxwork-project-management.md        # 产品需求文档
│   └── implementation-summary-wxwork-project.md # 实现总结文档 (本文件)
│
├── src/
│   ├── app/
│   │   └── app.routes.ts                        # 路由配置 (已集成企微模块)
│   │
│   └── modules/
│       └── project/
│           └── pages/
│               ├── project-loader/              # 项目预加载页
│               │   ├── project-loader.component.ts
│               │   ├── project-loader.component.html
│               │   └── project-loader.component.scss
│               │
│               ├── contact/            # 客户画像页
│               │   ├── contact.component.ts
│               │   ├── contact.component.html
│               │   └── contact.component.scss
│               │
│               └── project-detail/              # 项目详情页
│                   ├── project-detail.component.ts
│                   ├── project-detail.component.html
│                   ├── project-detail.component.scss
│                   │
│                   └── stages/                  # 四阶段子组件
│                       ├── stage-order.component.*         # 订单分配
│                       ├── stage-requirements.component.*  # 确认需求 (含AI)
│                       ├── stage-delivery.component.*      # 交付执行
│                       └── stage-aftercare.component.*     # 售后归档 (含AI)
// 初始化企微SDK
this.wxwork = new WxworkSDK({ cid: this.cid, appId: 'crm' });
this.wecorp = new WxworkCorp(this.cid);
// 获取上下文
const chatObject = await this.wxwork.getCurrentChatObject();
this.groupChat = chatObject.GroupChat;
this.contact = chatObject.Contact;
// 获取当前用户
this.currentUser = await this.wxwork.getCurrentUser();
// 跳转企微群聊
await this.wxwork.openChat(chatId);
company: Pointer<Company> 字段localStorage.setItem("company", "cDL6R1hgSi") 实现data: Object 字段存储动态数据// 方式1: 通过@Input传入 (父组件调用)
@Input() project: FmodeObject | null = null;
// 方式2: 通过路由参数加载 (独立访问)
this.projectId = this.route.parent?.snapshot.paramMap.get('projectId');
const query = new Parse.Query('Project');
this.project = await query.get(this.projectId);
// AI方案生成流程
async generateAISolution() {
  // 1. 构建提示词
  const prompt = this.buildAIPrompt();
  // 2. 调用LLM接口 (预留)
  const response = await this.callAIService(prompt);
  // 3. 解析响应
  this.aiSolution = this.parseAIResponse(response);
  // 4. 保存到项目数据
  await this.saveDraft();
}
// 提示词构建 (基于需求数据)
buildAIPrompt(): string {
  return `作为专业设计师,根据以下需求生成方案:
  空间: ${this.requirements.spaces}
  风格: ${this.requirements.stylePreference}
  预算: ${this.requirements.budget}
  ...`;
}
// 基于角色的权限
const role = this.currentUser?.get('roleName');
// 编辑权限
this.canEdit = ['客服', '组员', '组长', '管理员'].includes(role);
// 敏感信息查看
this.canViewCustomerPhone = ['客服', '组长', '管理员'].includes(role);
// 设计师/组长角色区分
this.isDesigner = role === '组员';
this.isTeamLeader = role === '组长';
// 移动端优先
.images-grid {
  grid-template-columns: repeat(2, 1fr);
}
// 平板适配
@media (min-width: 768px) {
  .images-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
// 桌面端适配
@media (min-width: 1024px) {
  .images-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}
// /src/app/app.routes.ts
{
  path: 'wxwork/:cid',
  children: [
    // 项目预加载页 (企微上下文入口)
    {
      path: 'project-loader',
      component: ProjectLoaderComponent,
      title: '加载项目'
    },
    // 客户画像页
    {
      path: 'contact/:contactId',
      component: CustomerProfileComponent,
      title: '客户画像'
    },
    // 项目详情页 (含四阶段子路由)
    {
      path: 'project/:projectId',
      component: ProjectDetailComponent,
      children: [
        { path: '', redirectTo: 'order', pathMatch: 'full' },
        { path: 'order', component: StageOrderComponent, title: '订单分配' },
        { path: 'requirements', component: StageRequirementsComponent, title: '确认需求' },
        { path: 'delivery', component: StageDeliveryComponent, title: '交付执行' },
        { path: 'aftercare', component: StageAftercareComponent, title: '售后归档' }
      ]
    }
  ]
}
访问示例:
/wxwork/cDL6R1hgSi/project-loader/wxwork/cDL6R1hgSi/contact/abc123/wxwork/cDL6R1hgSi/project/xyz789/order/wxwork/cDL6R1hgSi/project/xyz789/requirements/wxwork/cDL6R1hgSi/project/xyz789/delivery/wxwork/cDL6R1hgSi/project/xyz789/aftercareCompany (企业)
  ↓
├── Profile (员工)
│   - role: 客服|组员|组长|财务|管理员
│   - permissions
│
├── ContactInfo (客户)
│   - data.preferences (客户画像)
│   - source
│
├── GroupChat (群聊)
│   - project: Pointer<Project>
│   - members
│
└── Project (项目)
    - customer: Pointer<ContactInfo>
    - assignee: Pointer<Profile>
    - status: 待分配|待审核|进行中|待结算|已完成
    - currentStage: 订单分配|确认需求|建模|渲染|尾款结算|已归档
    - data: {
        quotation: {...},          // 报价明细
        requirements: {...},        // 需求清单
        aiSolution: {...},         // AI方案
        deliverables: [...],       // 交付物
        finalPayment: {...},       // 尾款信息
        customerFeedback: {...},   // 客户评价
        projectRetrospective: {...} // 项目复盘
      }
1. 用户在企微群聊中打开应用
   ↓
2. 访问 /wxwork/:cid/project-loader
   ↓
3. SDK获取群聊上下文 (GroupChat)
   ↓
4. 查询群聊是否关联项目
   ↓
5a. 已关联 → 跳转项目详情
5b. 未关联 → 显示创建引导
   ↓
6. 填写项目名称 → 创建Project
   ↓
7. 关联群聊: GroupChat.project = Project
   ↓
8. 跳转到订单分配阶段
1. 用户在企微联系人详情打开应用
   ↓
2. 访问 /wxwork/:cid/project-loader
   ↓
3. SDK获取联系人上下文 (Contact)
   ↓
4. 查询联系人对应的ContactInfo
   ↓
5. 跳转客户画像页
   ↓
6. 显示客户信息/偏好/群聊/历史项目
订单分配 (客服/组长)
  - 填写项目信息
  - 配置报价明细
  - 分配设计师
  - 提交审批
  ↓
确认需求 (设计师+客户)
  - 上传参考图片
  - 上传CAD文件
  - 填写需求清单
  - 生成AI设计方案
  - 确认需求
  ↓
交付执行 (设计师+组长)
  - 设计师上传交付物
  - 质量自查
  - 提交审核
  - 组长审核通过/驳回
  - (循环直到全部通过)
  - 完成交付
  ↓
售后归档 (客服/财务)
  - 上传支付凭证 (OCR识别)
  - 客户提交评价
  - 生成AI项目复盘
  - 归档项目
实现文件上传服务
集成LLM接口
实现OCR识别
企微消息通知
色彩分析弹窗
工作量日历
数据统计看板
知识库系统
AI能力增强
客户端应用
开放平台
// src/app/app.config.ts
localStorage.setItem("company", "cDL6R1hgSi"); // 当前企业ID
const Parse = FmodeParse.with('nova'); // 使用nova应用
crm| 角色 | 创建项目 | 编辑项目 | 查看客户手机 | 审核交付 | 归档项目 | 
|---|---|---|---|---|---|
| 客服 | ✓ | ✓ | ✓ | ✗ | ✓ | 
| 组员(设计师) | ✗ | ✓ | ✗ | ✗ | ✗ | 
| 组长 | ✓ | ✓ | ✓ | ✓ | ✓ | 
| 财务 | ✗ | ✗ | ✗ | ✗ | ✗ | 
| 管理员 | ✓ | ✓ | ✓ | ✓ | ✓ | 
本次开发完成了一个功能完整、架构清晰的企微嵌入式项目管理系统,覆盖了从客户咨询到项目归档的全生命周期。
核心亮点:
技术债务:
代码质量:
开发完成时间: 2025-10-16 文档作者: Claude Code (Anthropic) 版本: v1.0.0