2025101701-admin-completed.md 7.3 KB

任务完成报告:管理系统数据对接

任务概述

完成./src/app/pages/admin/所有组件的数据增删查改对接,所有数据指向 cDL6R1hgSi 映三色帐套。

已完成的工作

1. 数据服务层 (Services)

1.1 基础服务

  • AdminDataService (services/admin-data.service.ts)
    • 提供统一的数据访问接口
    • 自动添加公司过滤和软删除逻辑
    • 支持CRUD操作、查询、统计等

1.2 业务服务

  • ProjectService (services/project.service.ts)

    • 项目管理的增删查改
    • 支持按状态、关键词筛选
    • 关联客户(ContactInfo)和负责人(Profile)
  • DepartmentService (services/department.service.ts)

    • 项目组管理
    • 支持设置组长(leader → Profile)
    • 统计项目组成员数量
  • EmployeeService (services/employee.service.ts)

    • 员工管理(Profile表)
    • 按roleName区分身份(客服/组员/组长/人事/财务)
    • 支持编辑和禁用(isDisabled),不支持新增删除(企微同步)
  • CustomerService (services/customer.service.ts)

    • 客户管理(ContactInfo表)
    • 支持按来源(source)筛选
    • 基本增删查改操作
  • GroupChatService (services/groupchat.service.ts)

    • 群组管理
    • 关联项目(project)
    • 支持编辑和禁用,不支持新增删除(企微同步)

2. 页面组件层

2.1 Dashboard总览看板

  • ✅ 对接真实数据统计
    • 项目总数、进行中、已完成
    • 设计师(员工)总数
    • 客户总数
    • 总收入(从ProjectSettlement统计)
  • ✅ 最近动态从Project.createdAt获取
  • ✅ 项目状态分布统计
  • ✅ 设计师工作量统计

2.2 ProjectManagement项目管理

  • ✅ 对接Project表数据
  • ✅ 显示客户名称(通过include customer)
  • ✅ 显示负责人(通过include assignee)
  • ✅ 支持按状态筛选、关键词搜索
  • ✅ 状态映射:待分配/进行中/已完成/已暂停/已延期/已取消

2.3 Departments项目组管理 (新建)

  • ✅ 创建完整的Department组件
  • ✅ 显示组长信息(leader → Profile)
  • ✅ 统计成员数量
  • ✅ 创建时必须选择组长
  • ✅ 默认type为'project'
  • ✅ 支持增删查改

2.4 Employees员工管理 (改造自Designers)

  • ✅ 创建新的Employees组件
  • ✅ 按roleName统计:客服/组员/组长/人事/财务
  • ✅ 点击统计卡片快捷筛选
  • ✅ 只支持编辑和禁用(企微同步数据)
  • ✅ 不提供新增删除功能
  • ✅ 可编辑字段:roleName, department, isDisabled

2.5 Customers客户管理

  • ✅ 对接ContactInfo表
  • ✅ 显示客户基本信息
  • ✅ 支持搜索和筛选
  • ✅ 支持增删查改

2.6 GroupChats群组管理 (新建)

  • ✅ 创建完整的GroupChat组件
  • ✅ 显示企微群信息(chat_id, name, member_list)
  • ✅ include查询显示当前项目信息
  • ✅ 支持关联/取消关联项目
  • ✅ 只支持编辑和禁用(企微同步数据)
  • ✅ 不提供新增删除功能

3. 路由配置

  • ✅ 更新app.routes.ts
  • ✅ 添加departments路由
  • ✅ 添加employees路由(替代原designers)
  • ✅ 添加groupchats路由
  • ✅ 保留customers路由
  • ✅ 保留finance路由(隐藏)

技术实现要点

数据操作规范

严格按照 ./rules/parse.md 规范实现:

  • ✅ 使用 FmodeParse.with("nova") 初始化
  • ✅ 使用 FmodeObject, FmodeQuery 类型
  • ✅ 所有查询自动添加 company 过滤
  • ✅ 所有查询自动过滤 isDeleted !== true
  • ✅ 删除操作使用软删除(设置isDeleted=true)

数据关联

  • ✅ Project → Customer (Pointer)
  • ✅ Project → Assignee (Pointer)
  • ✅ Department → Leader (Pointer)
  • ✅ Profile → Department (Pointer)
  • ✅ GroupChat → Project (Pointer)
  • ✅ 所有表 → Company (Pointer固定为cDL6R1hgSi)
  • 特殊处理

    1. 企微同步数据(Profile, GroupChat)

      • ❌ 不提供新增功能
      • ❌ 不提供删除功能
      • ✅ 只提供编辑功能
      • ✅ 支持禁用(isDisabled字段)
    2. 项目组管理

      • ✅ 创建时必须提供组长选择
      • ✅ 默认type='project'
      • ✅ 统计成员数量
    3. 员工管理统计

      • ✅ 不再按在线/忙碌/离线统计
      • ✅ 改为按身份统计(客服/组员/组长/人事/财务)
      • ✅ 点击统计卡片快捷筛选

    文件清单

    新增文件

    src/app/pages/admin/
    ├── services/
    │   ├── admin-data.service.ts       # 基础数据服务
    │   ├── project.service.ts          # 项目服务
    │   ├── department.service.ts       # 项目组服务
    │   ├── employee.service.ts         # 员工服务
    │   ├── customer.service.ts         # 客户服务
    │   └── groupchat.service.ts        # 群组服务
    ├── departments/
    │   ├── departments.ts
    │   ├── departments.html
    │   └── departments.scss
    ├── employees/
    │   ├── employees.ts
    │   ├── employees.html
    │   └── employees.scss
    └── groupchats/
        ├── groupchats.ts
        ├── groupchats.html
        └── groupchats.scss
    

    修改文件

    src/app/
    ├── app.routes.ts                   # 添加新路由
    └── pages/admin/
        ├── dashboard/
        │   ├── dashboard.ts            # 对接真实数据
        │   └── dashboard.service.ts    # 使用AdminDataService
        ├── project-management/
        │   └── project-management.ts   # 对接真实数据
        └── customers/
            └── customers.ts             # 对接真实数据
    

    验证建议

    1. 数据查询验证

      // 确认company过滤生效
      console.log(await adminData.count('Project'));
      console.log(await adminData.count('Profile'));
      
    2. 关联查询验证

      // 验证include查询
      const projects = await projectService.findProjects();
      projects.forEach(p => {
       console.log(p.get('customer')?.get('name'));
       console.log(p.get('assignee')?.get('name'));
      });
      
    3. 软删除验证

      // 验证删除后不再查询到
      await projectService.deleteProject(id);
      const found = await projectService.getProject(id);
      console.log(found); // 应该查不到
      

    注意事项

    1. Parse初始化

      • 确保在app.component中完成Parse初始化
      • 其他页面直接import使用
    2. 公司指针

      • 所有数据操作都自动关联到cDL6R1hgSi
      • 通过AdminDataService.getCompanyPointer()获取
    3. 企微同步字段

      • Profile.userId (企微UserID)
      • GroupChat.chat_id (企微群ID)
      • 这些数据从企微同步,前端只读或编辑部分字段
    4. 身份字段

      • Profile.roleName: "客服" | "组员" | "组长" | "人事" | "财务"
      • 用于权限控制和统计

    后续工作建议

    1. 完善错误处理和加载状态
    2. 添加分页功能(当前limit写死)
    3. 优化查询性能(添加缓存)
    4. 补充单元测试
    5. 添加数据导入导出功能
    6. 实现批量操作功能

    总结

    所有admin管理页面已完成数据对接,严格按照Parse数据规范实现,所有数据指向映三色帐套(cDL6R1hgSi)。核心功能包括:

    • ✅ 统一的数据服务层
    • ✅ 完整的增删查改操作
    • ✅ 企微同步数据的特殊处理
    • ✅ 数据关联和include查询
    • ✅ 软删除机制
    • ✅ 按需统计和筛选

    任务已全部完成,可以进行测试和验证。