# 解决"未分配"问题和完整显示所有组员

**日期**: 2025-10-24  
**问题**: 组长端工作量负载概览图未显示全部组员，且项目负责人显示"未分配"

---

## 🔴 问题分析

### 1. 项目负责人显示"未分配"

**根本原因**: 数据库中 `Project` 表的 `assignee` 字段为空

**代码位置**: `src/app/pages/team-leader/services/designer.service.ts` 第330行

```typescript
designerName: assignee?.get('name') || '未分配',
```

**数据流程**:
```
Parse数据库 → Project表 → assignee字段(Pointer<Profile>) 
  ↓
如果assignee为null → designerName = '未分配'
```

### 2. 工作量甘特图未显示所有组员

**根本原因**: 只统计了**已分配项目**的设计师

**代码位置**: `src/app/pages/team-leader/dashboard/dashboard.ts` 约2000行

```typescript
// ❌ 问题代码：只获取有项目的设计师
const assigned = this.filteredProjects.filter(p => !!p.designerName);
const designers = Array.from(new Set(assigned.map(p => p.designerName)));
```

**结果**:
- ✅ 有项目的设计师：显示在甘特图中
- ❌ 没有项目的设计师：不显示

---

## ✅ 解决方案

### 方案1：修复甘特图 - 显示所有组员

修改 `updateWorkloadGantt()` 方法，使用真实的设计师列表而非从项目中提取：

```typescript
// ✅ 修改后：使用真实的设计师列表
const designers = this.realDesigners.length > 0 
  ? this.realDesigners.map(d => d.name)
  : Array.from(new Set(this.filteredProjects.filter(p => p.designerName && p.designerName !== '未分配').map(p => p.designerName)));

// 如果没有设计师，显示提示
if (designers.length === 0) {
  // 显示"暂无组员数据"
  return;
}
```

### 方案2：项目分配功能

在数据库层面为项目分配设计师：

```typescript
/**
 * 在designer.service.ts中已有方法
 */
async assignProject(projectId: string, designerId: string): Promise<boolean> {
  const project = Parse.Object.extend('Project').createWithoutData(projectId);
  const designer = Parse.Object.extend('Profile').createWithoutData(designerId);
  
  project.set('assignee', designer);
  project.set('status', '进行中');
  
  await project.save();
  return true;
}
```

### 方案3：数据库检查和修复

**检查步骤**:
1. 打开Parse Dashboard
2. 查看 `Project` 表
3. 检查 `assignee` 字段
4. 对于未分配的项目，手动设置 `assignee`

**SQL修复（如果有SQL访问权限）**:
```sql
-- 查看未分配的项目
SELECT objectId, title, status, assignee 
FROM Project 
WHERE assignee IS NULL OR assignee = '';

-- 批量分配给某个设计师
UPDATE Project 
SET assignee = {Profile的指针} 
WHERE assignee IS NULL;
```

---

## 📝 具体修改

### 修改1: updateWorkloadGantt方法

**文件**: `src/app/pages/team-leader/dashboard/dashboard.ts`

**位置**: updateWorkloadGantt() 方法内

**修改内容**:


