PROJECT-RETROSPECTIVE-DATA-ANALYSIS.md 39 KB

项目复盘数据分析与设计文档

目标:梳理项目复盘能采集的数据、计算的指标,以及从项目和个人两个维度进行深度分析


📋 目录

  1. 数据采集层
  2. 数据计算层
  3. 项目维度复盘
  4. 个人维度复盘
  5. 数据流转与架构
  6. 实现优先级

1. 数据采集层

1.1 项目基础数据(来源:Project 表)

1.1.1 时间数据

字段 说明 数据来源 用途
createdAt 项目创建时间 Parse 自动生成 计算项目总周期
deadline 项目截止时间 订单分配阶段设定 计算延期情况
updatedAt 项目最后更新时间 Parse 自动生成 追踪项目活跃度
currentStage 当前所处阶段 项目流转自动更新 统计阶段耗时

1.1.2 人员数据

字段 说明 数据来源 用途
creator 项目创建人 客服创建项目时设定 统计客服工作量
assignee 项目负责人 订单分配阶段指定 主设计师绩效
assigneeRole 负责人角色 ProjectTeam 表 区分组长/组员
teams (ProjectTeam) 项目团队成员 订单分配阶段指定 团队协作分析

1.1.3 财务数据

字段 说明 数据来源 用途
data.quotation.total 项目报价总额 订单分配阶段设定 项目规模、利润率
data.quotation.products 产品明细报价 订单分配阶段设定 产品级财务分析
data.aftercare.finalPayment.paidAmount 已支付金额 售后归档阶段统计 回款分析
data.aftercare.finalPayment.paymentVouchers 支付凭证列表 客户上传 回款明细

1.1.4 客户信息

字段 说明 数据来源 用途
contact.name 客户姓名 项目创建时填写 客户画像
contact.phone 客户电话 项目创建时填写 客户联系
contact.company 客户公司 项目创建时填写 企业客户分析
title 项目名称 项目创建时填写 项目标识

1.2 阶段详细数据(来源:Project.data)

1.2.1 订单分配阶段 (data.order)

字段 说明 计算价值
startTime 阶段开始时间 阶段耗时
endTime 阶段结束时间 阶段耗时
quotation.products[].name 产品名称 产品复杂度分析
quotation.products[].quantity 产品数量 工作量估算
quotation.products[].unitPrice 单价 定价策略分析
quotation.discountRate 折扣率 商务策略分析

1.2.2 需求确认阶段 (data.requirements)

字段 说明 计算价值
startTime 阶段开始时间 阶段耗时
endTime 阶段结束时间 阶段耗时
filesCount 需求文件数量 需求复杂度
communicationRounds 沟通轮次 沟通效率

1.2.3 交付执行阶段 (data.delivery)

字段 说明 计算价值
startTime 阶段开始时间 阶段耗时
endTime 阶段结束时间 阶段耗时
submittedFiles[] 提交的文件列表 交付物数量
deliveryApprovalStatus 审批状态 质量控制
approvalTime 审批通过时间 审批效率
revisionCount 修改次数 质量指标

1.2.4 售后归档阶段 (data.aftercare)

字段 说明 计算价值
startTime 阶段开始时间 阶段耗时
endTime 阶段结束时间 阶段耗时
finalPayment.totalAmount 尾款总额 财务分析
finalPayment.paidAmount 已支付金额 回款率
finalPayment.paymentVouchers[] 支付凭证 回款明细
customerFeedback.overallRating 总体评分 客户满意度
customerFeedback.dimensionRatings 维度评分 多维度满意度
customerFeedback.wouldRecommend 是否推荐 NPS 计算

1.3 团队协作数据(来源:ProjectTeam 表)

字段 说明 计算价值
profile (Pointer) 团队成员 成员列表
role 成员角色 角色分布
joinedAt 加入时间 成员参与时长
contribution 贡献度 成员绩效
status 成员状态 成员活跃度

1.4 问题与沟通数据(来源:ProjectIssue 表)

字段 说明 计算价值
title 问题标题 问题分类
type 问题类型 (bug, task, feedback, risk, feature) 问题统计
priority 优先级 (critical, urgent, high, medium, low) 问题严重度
status 状态 (待处理, 处理中, 已解决, 已关闭) 问题解决率
assignee 责任人 成员响应能力
creator 创建人 问题提出者
createdAt 创建时间 问题发现时间
updatedAt 更新时间 问题处理时长
resolvedAt 解决时间 问题解决效率
description 问题描述 问题详情
relatedStage 相关阶段 阶段质量

1.5 文件交付数据(来源:ProjectFile 表)

字段 说明 计算价值
name 文件名称 文件类型统计
size 文件大小 工作量估算
type 文件类型 交付物分析
uploadedBy 上传者 成员贡献
uploadedAt 上传时间 交付时效
stage 所属阶段 阶段产出
version 版本号 迭代次数
status 状态 (草稿, 待审, 已审, 已驳回) 质量控制

1.6 时间轴数据(来源:ActivityLog 表)

字段 说明 计算价值
project (Pointer) 关联项目 项目活动
action 动作类型 (created, updated, stage-changed, assigned, approved, rejected, archived) 关键节点
actor 操作人 成员活跃度
createdAt 操作时间 时间线
metadata 详细信息 变更历史
description 描述 活动记录

1.7 客户反馈数据(来源:ProjectFeedback 表)

字段 说明 计算价值
project (Pointer) 关联项目 反馈关联
type 反馈类型 (satisfaction, complaint, suggestion, praise) 反馈分类
rating 评分 满意度
content 反馈内容 文本分析
submittedBy 提交人 反馈来源
submittedAt 提交时间 反馈时效
handled 是否处理 响应率
handledAt 处理时间 处理时效

2. 数据计算层

2.1 时间效率指标

2.1.1 项目总周期

计算公式:
projectDuration = 归档时间 - 创建时间
plannedDuration = deadline - createdAt
timeVariance = (projectDuration - plannedDuration) / plannedDuration * 100

分级:
- A级 (90-100分): timeVariance <= 0% (提前完成)
- B级 (80-89分): 0% < timeVariance <= 10% (略微延期)
- C级 (70-79分): 10% < timeVariance <= 20% (轻度延期)
- D级 (60-69分): 20% < timeVariance <= 30% (中度延期)
- F级 (<60分): timeVariance > 30% (严重延期)

2.1.2 阶段耗时分析

每个阶段的实际耗时 vs 计划耗时

订单分配阶段: 标准 1-2 天
需求确认阶段: 标准 3-5 天
交付执行阶段: 标准 7-15 天(根据项目规模)
售后归档阶段: 标准 1-3 天

效率得分 = (计划天数 / 实际天数) * 100

2.1.3 响应时效

问题响应时长 = Issue.updatedAt - Issue.createdAt(首次响应)
问题解决时长 = Issue.resolvedAt - Issue.createdAt

平均响应时长 = sum(响应时长) / 问题总数
平均解决时长 = sum(解决时长) / 问题总数

2.2 质量指标

2.2.1 首次通过率(First Pass Yield)

firstPassYield = (未修改直接通过的交付物数量 / 总交付物数量) * 100

判断标准:
- 未修改: revisionCount = 0
- 通过: deliveryApprovalStatus = 'approved'

2.2.2 修改率

revisionRate = (需要修改的交付物数量 / 总交付物数量) * 100

修改次数分布:
- 0次修改: 优秀
- 1-2次修改: 良好
- 3-4次修改: 一般
- 5+次修改: 需改进

2.2.3 问题数量与严重度

issueCount = ProjectIssue 表中该项目的问题总数

严重问题数 = priority = 'critical' or 'urgent'
高优先级问题数 = priority = 'high'
中低优先级问题数 = priority = 'medium' or 'low'

质量得分 = 100 - (严重问题数 * 10 + 高优先级问题数 * 5 + 中低优先级问题数 * 2)

2.3 财务指标

2.3.1 回款率

collectionRate = (paidAmount / totalAmount) * 100

分级:
- 100%: 已全额回款
- 80-99%: 部分回款
- < 80%: 回款不足

2.3.2 利润率(如果有成本数据)

profitMargin = ((revenue - cost) / revenue) * 100

成本构成:
- 人力成本: 团队人数 * 人均日薪 * 实际天数
- 修改成本: 修改次数 * 单次修改成本
- 管理成本: 沟通轮次 * 单次沟通成本

2.3.3 产品级财务分析

每个 Product 的:
- 报价金额
- 实际回款金额
- 回款进度 = (实际回款 / 报价金额) * 100

2.4 客户满意度指标

2.4.1 总体满意度

overallSatisfaction = customerFeedback.overallRating (1-5分)

转换为百分制:
score = (overallRating / 5) * 100

2.4.2 NPS(Net Promoter Score)

NPS = (推荐者比例 - 批评者比例) * 100

分类:
- 推荐者: overallRating >= 4
- 中立者: overallRating = 3
- 批评者: overallRating <= 2

NPS = ((推荐者数 - 批评者数) / 总反馈数) * 100

2.4.3 维度满意度

维度评分(1-5分):
- designQuality: 设计质量
- serviceAttitude: 服务态度
- deliveryTimeliness: 交付及时性
- valueForMoney: 性价比
- communication: 沟通效率

每个维度转换为百分制,与行业基准对比

2.5 团队协作指标

2.5.1 成员工作量

// 通过 ProjectTeam 和项目时长计算
memberWorkload = 项目实际天数 * 成员参与比例

参与比例 = (成员参与天数 / 项目总天数) * 100

2.5.2 成员贡献度

// 基于多维度计算
contribution = {
  fileUploads: 文件上传数量,
  issuesResolved: 解决的问题数量,
  communicationActivity: 沟通活跃度,
  qualityScore: 质量得分
}

总贡献度 = weighted_sum(contribution)

2.5.3 协作效率

// 基于团队规模和沟通成本
teamSize = ProjectTeam 成员数量
communicationOverhead = (沟通轮次 / 团队规模) * 项目天数

协作效率 = 100 - min(communicationOverhead * 10, 50)

2.6 个人绩效指标

2.6.1 及时性得分

timelinessScore = {
  // 基于问题响应时长
  avgResponseTime: 平均响应时长,
  // 基于交付时效
  deliveryOnTime: (按时交付次数 / 总交付次数) * 100,
  // 基于阶段完成时效
  stageCompletion: (按时完成阶段数 / 总阶段数) * 100
}

总及时性 = weighted_average(timelinessScore)

2.6.2 质量得分

qualityScore = {
  // 首次通过率
  firstPassYield: (无修改通过 / 总交付物) * 100,
  // 问题率
  issueRate: 100 - (引起的问题数 * 5),
  // 客户评价
  customerRating: (相关客户评分 / 5) * 100
}

总质量 = weighted_average(qualityScore)

2.6.3 创新能力

innovationScore = {
  // 提出的改进建议数量
  suggestions: count(type = 'feature' or 'suggestion'),
  // 客户表扬次数
  praises: count(feedback.type = 'praise'),
  // 创新解决方案数量
  innovations: manual_input
}

创新得分 = min(sum(innovationScore) * 10, 100)

2.6.4 协作能力

collaborationScore = {
  // 协助其他成员的次数
  helpOthers: count(assigned_to_others_issues),
  // 沟通响应速度
  communicationSpeed: 100 - (avgResponseTime / 60) * 10,
  // 团队评价
  teamFeedback: manual_input
}

协作得分 = weighted_average(collaborationScore)

3. 项目维度复盘

3.1 效率分析(Efficiency Analysis)

interface EfficiencyAnalysis {
  overallScore: number;           // 总体效率得分 (0-100)
  grade: 'A' | 'B' | 'C' | 'D' | 'F';  // 效率等级
  
  timeEfficiency: {
    score: number;                // 时间效率得分
    plannedDuration: number;      // 计划工期(天)
    actualDuration: number;       // 实际工期(天)
    variance: number;             // 偏差率(%)
  };
  
  qualityEfficiency: {
    score: number;                // 质量效率得分
    firstPassYield: number;       // 首次通过率(%)
    revisionRate: number;         // 修改率(%)
    issueCount: number;           // 问题数量
  };
  
  resourceUtilization: {
    score: number;                // 资源利用率得分
    teamSize: number;             // 团队规模
    workload: number;             // 工作量(人天)
    idleRate: number;             // 闲置率(%)
  };
  
  stageMetrics: Array<{
    stage: string;                // 阶段名称
    plannedDays: number;          // 计划天数
    actualDays: number;           // 实际天数
    efficiency: number;           // 阶段效率(%)
    status: 'on-time' | 'delayed' | 'ahead';  // 状态
    delayReason?: string;         // 延期原因
  }>;
  
  bottlenecks: Array<{
    stage: string;                // 瓶颈阶段
    issue: string;                // 具体问题
    severity: 'high' | 'medium' | 'low';  // 严重程度
    suggestion: string;           // 改进建议
  }>;
}

数据来源

  • Project.createdAt, Project.deadline → 计划工期
  • Project.data.order.startTime, data.order.endTime → 订单分配耗时
  • Project.data.requirements.startTime, data.requirements.endTime → 需求确认耗时
  • Project.data.delivery.startTime, data.delivery.endTime → 交付执行耗时
  • Project.data.aftercare.startTime, data.aftercare.endTime → 售后归档耗时
  • ProjectFile 表 → 修改率、首次通过率
  • ProjectIssue 表 → 问题数量、严重程度
  • ProjectTeam 表 → 团队规模、资源利用

计算逻辑

  1. 时间效率: (计划工期 / 实际工期) * 100
  2. 质量效率: 100 - (修改率 * 0.5 + 问题数量 * 2)
  3. 资源利用: (实际工作量 / 计划工作量) * 100
  4. 总体效率: weighted_average(时间效率, 质量效率, 资源利用)

3.2 团队绩效(Team Performance)

interface TeamPerformance {
  overallScore: number;           // 团队总体得分
  
  members: Array<{
    memberId: string;
    memberName: string;
    role: string;                 // 角色(组长/组员)
    
    scores: {
      workload: number;           // 工作量得分 (0-100)
      quality: number;            // 质量得分 (0-100)
      efficiency: number;         // 效率得分 (0-100)
      collaboration: number;      // 协作得分 (0-100)
      innovation: number;         // 创新得分 (0-100)
      overall: number;            // 总体得分
    };
    
    timeDistribution: {
      design: number;             // 设计时间占比(%)
      communication: number;      // 沟通时间占比(%)
      revision: number;           // 修改时间占比(%)
      admin: number;              // 管理时间占比(%)
    };
    
    contributions: string[];      // 主要贡献
    strengths: string[];          // 优势
    improvements: string[];       // 改进建议
    ranking: number;              // 团队排名
  }>;
}

数据来源

  • ProjectTeam 表 → 成员列表、角色、参与时长
  • ProjectFile.uploadedBy → 成员贡献(文件上传)
  • ProjectIssue.assignee → 成员负责的问题
  • ProjectIssue.resolvedAt → 问题解决效率
  • ActivityLog.actor → 成员活跃度
  • CustomerFeedback → 客户对成员的评价(如果有)

计算逻辑

  1. 工作量得分: 基于文件上传数、问题处理数、活动记录数
  2. 质量得分: 基于首次通过率、问题数量、客户评价
  3. 效率得分: 基于响应时长、解决时长、交付时效
  4. 协作得分: 基于协助他人次数、沟通响应速度
  5. 创新得分: 基于改进建议数、客户表扬、创新方案

3.3 财务分析(Financial Analysis)

interface FinancialAnalysis {
  budgetVariance: number;         // 预算偏差(%)
  profitMargin: number;           // 利润率(%)
  
  costBreakdown: {
    labor: number;                // 人力成本
    materials: number;            // 材料成本
    overhead: number;             // 管理成本
    revisions: number;            // 修改成本
  };
  
  revenueAnalysis: {
    contracted: number;           // 合同金额
    received: number;             // 已收金额
    pending: number;              // 待收金额
  };
}

数据来源

  • Project.data.quotation.total → 合同金额
  • Project.data.aftercare.finalPayment.paidAmount → 已收金额
  • Project.data.aftercare.finalPayment.paymentVouchers → 回款明细
  • ProjectTeam + 项目天数 → 人力成本
  • Project.data.delivery.revisionCount → 修改成本

计算逻辑

  1. 人力成本: 团队人数 * 人均日薪 * 实际天数
  2. 修改成本: 修改次数 * 单次修改成本系数
  3. 利润率: ((收入 - 成本) / 收入) * 100
  4. 回款率: (已收 / 合同) * 100

3.4 客户满意度分析(Satisfaction Analysis)

interface SatisfactionAnalysis {
  overallScore: number;           // 总体满意度得分 (0-100)
  nps: number;                    // 净推荐值 (-100 to 100)
  
  dimensions: Array<{
    name: string;                 // 维度名称
    label: string;                // 维度标签
    score: number;                // 得分 (0-100)
    benchmark: number;            // 行业基准
    variance: number;             // 与基准的差异(%)
  }>;
  
  improvementAreas: Array<{
    area: string;                 // 改进领域
    currentScore: number;         // 当前得分
    targetScore: number;          // 目标得分
    priority: 'high' | 'medium' | 'low';  // 优先级
    actionPlan: string;           // 行动计划
  }>;
}

数据来源

  • Project.data.aftercare.customerFeedback.overallRating → 总体评分
  • Project.data.aftercare.customerFeedback.dimensionRatings → 维度评分
  • Project.data.aftercare.customerFeedback.wouldRecommend → NPS 计算
  • Project.data.aftercare.customerFeedback.comments → 文本分析
  • Project.data.aftercare.customerFeedback.improvements → 改进建议

计算逻辑

  1. 总体满意度: (overallRating / 5) * 100
  2. NPS: ((推荐者数 - 批评者数) / 总数) * 100
  3. 维度得分: (dimensionRating / 5) * 100
  4. 与基准比较: ((当前得分 - 基准) / 基准) * 100

3.5 风险与机会(Risks and Opportunities)

interface RisksAndOpportunities {
  risks: Array<{
    type: 'timeline' | 'budget' | 'quality' | 'resource' | 'scope';
    description: string;
    likelihood: number;           // 可能性 (1-5)
    impact: number;               // 影响 (1-5)
    severity: 'high' | 'medium' | 'low';
    mitigation: string;           // 缓解措施
  }>;
  
  opportunities: Array<{
    area: string;
    description: string;
    potential: number;            // 潜力 (1-5)
    effort: number;               // 所需努力 (1-5)
    priority: 'high' | 'medium' | 'low';
    actionPlan: string;
  }>;
}

数据来源

  • ProjectIssue 表(type = 'risk') → 风险识别
  • Project.data.delivery.revisionCount → 质量风险
  • Project 延期情况 → 时间风险
  • Project.data.aftercare.finalPayment 回款情况 → 财务风险
  • CustomerFeedback.improvements → 改进机会

计算逻辑

  1. 风险严重度: likelihood * impact
  2. 机会优先级: potential / effort

3.6 产品级复盘(Product Retrospectives)

interface ProductRetrospective {
  productId: string;
  productName: string;
  performance: number;            // 性能得分 (0-100)
  plannedDays: number;            // 计划天数
  actualDays: number;             // 实际天数
  issues: string[];               // 遇到的问题
  recommendations: string[];      // 改进建议
}

数据来源

  • Project.data.quotation.products → 产品列表
  • Project.data.aftercare.customerFeedback.productFeedbacks → 产品评价
  • ProjectFile 表(按产品分类) → 产品交付物
  • ProjectIssue 表(按产品分类) → 产品问题

计算逻辑

  1. 产品性能: 基于客户评分、问题数量、交付时效
  2. 产品复杂度: 基于文件数量、修改次数、耗时

3.7 基准对比(Benchmarking)

interface Benchmarking {
  comparisonToHistory: {
    averageEfficiency: number;    // 历史平均效率
    currentEfficiency: number;    // 当前效率
    ranking: number;              // 排名
    percentile: number;           // 百分位
  };
  
  industryBenchmark: {
    timelineVariance: number;     // 行业平均延期率
    satisfactionScore: number;    // 行业平均满意度
    profitMargin: number;         // 行业平均利润率
  };
}

数据来源

  • 历史项目数据(所有已归档项目)
  • 行业基准数据(配置或外部数据)

计算逻辑

  1. 历史对比: 当前项目与过去项目的平均值对比
  2. 排名: 在所有历史项目中的排名
  3. 百分位: (排名 / 总项目数) * 100

4. 个人维度复盘

4.1 个人绩效总览

interface IndividualPerformance {
  employeeId: string;
  employeeName: string;
  role: string;
  period: {
    startDate: Date;
    endDate: Date;
    projectsCompleted: number;
  };
  
  // 核心指标
  coreMetrics: {
    workloadScore: number;        // 工作量得分 (0-100)
    qualityScore: number;         // 质量得分 (0-100)
    efficiencyScore: number;      // 效率得分 (0-100)
    collaborationScore: number;   // 协作得分 (0-100)
    innovationScore: number;      // 创新得分 (0-100)
    overallScore: number;         // 综合得分
  };
  
  // 详细分析
  detailedAnalysis: {
    timeliness: TimelinessAnalysis;
    quality: QualityAnalysis;
    productivity: ProductivityAnalysis;
    collaboration: CollaborationAnalysis;
    growth: GrowthAnalysis;
  };
  
  // 排名与对比
  ranking: {
    teamRanking: number;          // 团队内排名
    companyRanking: number;       // 公司内排名
    percentile: number;           // 百分位
    comparison: {
      vsTeamAverage: number;      // vs 团队平均(%)
      vsCompanyAverage: number;   // vs 公司平均(%)
      vsLastPeriod: number;       // vs 上期(%)
    };
  };
  
  // 成长轨迹
  growthTrack: Array<{
    period: string;
    score: number;
    projects: number;
    highlights: string[];
  }>;
  
  // 优势与改进
  strengthsAndWeaknesses: {
    topStrengths: string[];
    improvementAreas: string[];
    actionPlans: string[];
  };
}

4.2 及时性分析(Timeliness Analysis)

interface TimelinessAnalysis {
  score: number;                  // 及时性总分 (0-100)
  
  responseMetrics: {
    avgResponseTime: number;      // 平均响应时长(分钟)
    responseTimeDistribution: {
      within30min: number;        // 30分钟内响应率(%)
      within1hour: number;        // 1小时内响应率(%)
      within4hours: number;       // 4小时内响应率(%)
      over4hours: number;         // 超过4小时响应率(%)
    };
    urgentIssueResponseTime: number;  // 紧急问题响应时长
  };
  
  deliveryMetrics: {
    onTimeDeliveryRate: number;   // 按时交付率(%)
    avgDelayDays: number;         // 平均延期天数
    earlyDeliveryCount: number;   // 提前交付次数
    lateDeliveryCount: number;    // 延期交付次数
  };
  
  stageCompletion: {
    onTimeCompletionRate: number; // 按时完成阶段比例(%)
    avgStageOverrun: number;      // 平均阶段超期(%)
  };
}

数据来源

  • ProjectIssue 表(assignee = 该成员) → 问题响应时长
    • 首次响应时间: min(updatedAt) - createdAt
    • 问题解决时间: resolvedAt - createdAt
  • ProjectFile 表(uploadedBy = 该成员) → 文件交付时效
    • 对比计划交付时间与实际上传时间
  • ActivityLog 表(actor = 该成员) → 活动时间线
  • Project.data.delivery.endTime vs Project.deadline → 阶段完成时效

计算逻辑

// 响应时长得分
responseScore = 100 - (avgResponseTime / 60) * 10  // 每小时扣10分

// 按时交付得分
deliveryScore = onTimeDeliveryRate

// 及时性总分
timelinessScore = responseScore * 0.4 + deliveryScore * 0.6

4.3 质量分析(Quality Analysis)

interface QualityAnalysis {
  score: number;                  // 质量总分 (0-100)
  
  outputQuality: {
    firstPassYield: number;       // 首次通过率(%)
    revisionRate: number;         // 修改率(%)
    avgRevisionsPerDeliverable: number;  // 平均修改次数
    qualityTrend: 'improving' | 'stable' | 'declining';  // 质量趋势
  };
  
  issueMetrics: {
    issuesCreated: number;        // 引起的问题数量
    criticalIssues: number;       // 严重问题数量
    issueRate: number;            // 问题率(问题数/交付物数)
    issueResolutionRate: number;  // 问题解决率(%)
  };
  
  customerRating: {
    avgRating: number;            // 平均客户评分 (1-5)
    ratingDistribution: {
      excellent: number;          // 5分比例(%)
      good: number;               // 4分比例(%)
      average: number;            // 3分比例(%)
      poor: number;               // 2分及以下比例(%)
    };
    praiseCount: number;          // 客户表扬次数
    complaintCount: number;       // 客户投诉次数
  };
  
  dimensionalQuality: {
    designQuality: number;        // 设计质量得分
    technicalQuality: number;     // 技术质量得分
    communicationQuality: number; // 沟通质量得分
    serviceQuality: number;       // 服务质量得分
  };
}

数据来源

  • ProjectFile 表(uploadedBy = 该成员) → 交付物质量
    • version 字段 → 修改次数
    • status = '已审' and version = 1 → 首次通过
  • ProjectIssue 表(creator = 该成员或 assignee = 该成员) → 问题统计
    • type = 'bug' and creator = 该成员 → 质量问题
    • status = '已解决' and assignee = 该成员 → 解决的问题
  • ProjectFeedback 表 → 客户反馈
    • type = 'praise' and 相关成员 → 表扬
    • type = 'complaint' and 相关成员 → 投诉
  • Project.data.aftercare.customerFeedback → 客户评分

计算逻辑

// 首次通过率得分
firstPassScore = firstPassYield

// 问题率得分
issueScore = 100 - (issueRate * 100)  // 问题率越低越好

// 客户评分得分
customerScore = (avgRating / 5) * 100

// 质量总分
qualityScore = firstPassScore * 0.4 + issueScore * 0.3 + customerScore * 0.3

4.4 生产力分析(Productivity Analysis)

interface ProductivityAnalysis {
  score: number;                  // 生产力总分 (0-100)
  
  outputMetrics: {
    totalProjects: number;        // 总项目数
    completedProjects: number;    // 完成项目数
    avgProjectDuration: number;   // 平均项目周期(天)
    filesProduced: number;        // 产出文件数
    avgFilesPerProject: number;   // 平均每项目文件数
  };
  
  efficiencyMetrics: {
    avgCompletionTime: number;    // 平均完成时长(vs 标准)
    efficiencyRatio: number;      // 效率比(实际产出/预期产出)
    peakPerformanceDays: number;  // 高效工作日数
    lowPerformanceDays: number;   // 低效工作日数
  };
  
  workloadDistribution: {
    avgDailyWorkload: number;     // 平均每日工作量
    peakWorkload: number;         // 峰值工作量
    workloadBalance: number;      // 工作量平衡度(0-100)
    overtimeRate: number;         // 加班率(%)
  };
  
  utilizationRate: {
    activeProjectDays: number;    // 活跃项目天数
    idleDays: number;             // 闲置天数
    utilizationPercentage: number; // 利用率(%)
  };
}

数据来源

  • Project 表(assignee = 该成员或在 ProjectTeam 中) → 项目列表
    • status = 'completed' → 完成的项目
    • createdAt to data.aftercare.archiveTime → 项目周期
  • ProjectFile 表(uploadedBy = 该成员) → 产出文件数
    • uploadedAt 日期分组 → 每日产出
  • ProjectTeam 表(profile = 该成员) → 参与的项目
    • joinedAt to 项目结束 → 参与时长
  • ActivityLog 表(actor = 该成员) → 活动记录
    • 按日期统计活动频率 → 工作日分布

计算逻辑

// 产出效率
outputEfficiency = (实际产出文件数 / 预期产出文件数) * 100

// 时间效率
timeEfficiency = (标准项目周期 / 实际项目周期) * 100

// 利用率
utilizationRate = (activeProjectDays / totalDays) * 100

// 生产力总分
productivityScore = (outputEfficiency + timeEfficiency + utilizationRate) / 3

4.5 协作分析(Collaboration Analysis)

interface CollaborationAnalysis {
  score: number;                  // 协作总分 (0-100)
  
  teamworkMetrics: {
    projectsWithTeam: number;     // 团队项目数
    avgTeamSize: number;          // 平均团队规模
    crossTeamCollaborations: number; // 跨团队协作次数
    leadershipRole: number;       // 担任领导角色的项目数
  };
  
  communicationMetrics: {
    communicationFrequency: number; // 沟通频率(次/天)
    avgResponseTime: number;      // 平均响应时长(分钟)
    proactiveReach: number;       // 主动沟通次数
    communicationRating: number;  // 沟通质量评分 (1-5)
  };
  
  supportMetrics: {
    helpedColleagues: number;     // 协助同事次数
    sharedKnowledge: number;      // 知识分享次数
    mentorshipActivities: number; // 指导活动次数
    issuesResolvedForOthers: number; // 为他人解决的问题数
  };
  
  conflictResolution: {
    conflictsInvolved: number;    // 涉及的冲突数
    conflictsResolved: number;    // 解决的冲突数
    resolutionRate: number;       // 解决率(%)
  };
}

数据来源

  • ProjectTeam 表 → 团队协作信息
    • 成员所在团队数量
    • 团队规模
    • 担任的角色(组长 vs 组员)
  • ProjectIssue 表 → 协助他人
    • assignee = 该成员 and creator ≠ 该成员 → 协助解决的问题
    • creator = 该成员 and type = 'task' → 主动创建的协作任务
  • ActivityLog 表 → 沟通记录
    • action = 'commented' → 沟通次数
    • action = 'shared' → 知识分享
  • CustomerFeedback.dimensionRatings.communication → 沟通质量

计算逻辑

// 团队协作得分
teamworkScore = (projectsWithTeam / totalProjects) * 100

// 沟通得分
communicationScore = (communicationRating / 5) * 100 - (avgResponseTime / 60) * 5

// 支持得分
supportScore = min((helpedColleagues + sharedKnowledge) * 10, 100)

// 协作总分
collaborationScore = (teamworkScore + communicationScore + supportScore) / 3

4.6 成长分析(Growth Analysis)

interface GrowthAnalysis {
  score: number;                  // 成长总分 (0-100)
  
  skillDevelopment: {
    newSkillsAcquired: string[];  // 新技能
    skillProficiency: {
      technical: number;          // 技术能力 (0-100)
      design: number;             // 设计能力 (0-100)
      communication: number;      // 沟通能力 (0-100)
      management: number;         // 管理能力 (0-100)
    };
    certifications: string[];     // 获得的认证
  };
  
  performanceTrend: {
    period: string;
    overallScore: number;
    improvement: number;          // vs 上期(%)
    trend: 'improving' | 'stable' | 'declining';
  }[];
  
  learningAndInnovation: {
    trainingsCompleted: number;   // 完成的培训
    experimentsAttempted: number; // 尝试的新方法
    innovationsImplemented: number; // 实施的创新
    knowledgeContributions: number; // 知识贡献
  };
  
  responsibilityGrowth: {
    projectComplexityTrend: 'increasing' | 'stable' | 'decreasing';
    leadershipOpportunities: number;
    mentoringExperience: boolean;
    strategicInvolvement: number; // 战略项目参与度
  };
}

数据来源

  • 历史数据对比 → 成长轨迹
    • 每月/每季度的绩效得分
    • 项目数量、质量、效率的变化趋势
  • Profile 表(如果有)→ 技能、认证
    • skills → 技能列表
    • certifications → 认证列表
  • Project 复杂度 → 责任成长
    • 项目金额 → 项目规模
    • 团队规模 → 管理责任
    • assigneeRole = '组长' → 领导机会
  • ProjectIssue 表(type = 'feature') → 创新尝试
    • creator = 该成员 → 提出的创新建议

计算逻辑

// 技能发展得分
skillScore = average(skillProficiency)

// 绩效改进得分
improvementScore = (当期得分 - 上期得分) / 上期得分 * 100

// 创新得分
innovationScore = min((experimentsAttempted + innovationsImplemented) * 10, 100)

// 成长总分
growthScore = (skillScore + improvementScore + innovationScore) / 3

5. 数据流转与架构

5.1 数据采集流程

项目创建
  ↓
订单分配阶段(记录时间、人员、报价)
  ↓
需求确认阶段(记录沟通、文件)
  ↓
交付执行阶段(记录交付物、修改、问题)
  ↓
售后归档阶段(记录回款、评价、复盘)
  ↓
数据汇总 → 生成复盘报告

5.2 数据表关系图

Project (主表)
  ├── ProjectTeam (团队成员)
  │     └── Profile (人员信息)
  ├── ProjectFile (文件记录)
  │     └── Profile (上传者)
  ├── ProjectIssue (问题记录)
  │     ├── Profile (创建者)
  │     └── Profile (责任人)
  ├── ProjectFeedback (客户反馈)
  ├── ProjectPayment (支付记录)
  └── ActivityLog (活动日志)
        └── Profile (操作人)

5.3 数据计算架构

// 数据采集层
class DataCollector {
  collectProjectData(projectId: string): ProjectRawData;
  collectTeamData(projectId: string): TeamRawData;
  collectIssueData(projectId: string): IssueRawData;
  collectFileData(projectId: string): FileRawData;
  collectFeedbackData(projectId: string): FeedbackRawData;
  collectActivityData(projectId: string): ActivityRawData;
}

// 数据计算层
class MetricsCalculator {
  calculateTimeEfficiency(data: ProjectRawData): TimeEfficiency;
  calculateQualityMetrics(data: FileRawData, issueData: IssueRawData): QualityMetrics;
  calculateFinancialMetrics(data: ProjectRawData): FinancialMetrics;
  calculateSatisfactionMetrics(data: FeedbackRawData): SatisfactionMetrics;
  calculateTeamPerformance(data: TeamRawData): TeamPerformance;
  calculateIndividualPerformance(employeeId: string, data: AllData): IndividualPerformance;
}

// 分析生成层
class RetrospectiveGenerator {
  generateProjectRetrospective(projectId: string): ProjectRetrospective;
  generateIndividualRetrospective(employeeId: string, period: DateRange): IndividualPerformance;
  generateTeamRetrospective(teamId: string, period: DateRange): TeamRetrospective;
  generateCompanyRetrospective(period: DateRange): CompanyRetrospective;
}

// AI 增强层(豆包1.6 API)
class AIEnhancedAnalyzer {
  generateInsights(retrospective: ProjectRetrospective): AIInsights;
  generateRecommendations(performance: IndividualPerformance): AIRecommendations;
  predictFuturePerformance(historicalData: PerformanceData[]): Prediction;
  identifyPatterns(data: AllData): Pattern[];
}

6. 实现优先级

阶段一:基础数据采集(1-2周)

  • 确保所有关键数据点被正确记录
  • 完善 Project.data 结构(订单、需求、交付、售后)
  • 添加必要的时间戳字段
  • 确保 ProjectTeam、ProjectFile、ProjectIssue 表数据完整

阶段二:核心指标计算(2-3周)

  • 实现时间效率计算
  • 实现质量指标计算
  • 实现财务指标计算
  • 实现客户满意度计算
  • 实现团队绩效计算

阶段三:项目维度复盘(2周)

  • 效率分析报告
  • 团队绩效报告
  • 财务分析报告
  • 客户满意度报告
  • 风险与机会识别

阶段四:个人维度复盘(2周)

  • 及时性分析
  • 质量分析
  • 生产力分析
  • 协作分析
  • 成长分析

阶段五:可视化与报告(1-2周)

  • 复盘报告 UI 设计
  • 图表可视化(ECharts)
  • PDF 导出功能
  • 数据对比功能
  • 历史趋势分析

阶段六:AI 增强(2-3周)

  • 集成豆包1.6 API
  • AI 洞察生成
  • 智能建议
  • 预测分析
  • 模式识别

7. 总结

7.1 我们能采集到什么数据?

项目数据

✅ 项目基本信息(名称、客户、时间、金额) ✅ 阶段详细数据(每个阶段的开始/结束时间、产出) ✅ 团队成员及其角色 ✅ 文件交付记录(数量、版本、修改) ✅ 问题与风险记录 ✅ 客户反馈与评价 ✅ 支付与回款记录 ✅ 活动时间线

人员数据

✅ 个人参与的项目列表 ✅ 文件产出记录 ✅ 问题处理记录 ✅ 沟通活动记录 ✅ 客户评价 ✅ 工作时长与分布

7.2 根据这些数据我们能算出什么?

项目维度

✅ 时间效率(延期率、阶段耗时) ✅ 质量效率(首次通过率、修改率、问题数) ✅ 资源利用率(团队规模、工作量) ✅ 财务表现(利润率、回款率) ✅ 客户满意度(总分、NPS、维度评分) ✅ 团队协作效率 ✅ 风险识别与机会发现 ✅ 与历史项目的对比排名

个人维度

✅ 及时性(响应时长、按时交付率) ✅ 质量(首次通过率、问题率、客户评分) ✅ 生产力(项目完成数、文件产出、工作效率) ✅ 协作能力(沟通质量、协助他人、团队贡献) ✅ 创新能力(新方法尝试、改进建议) ✅ 成长轨迹(绩效变化趋势、技能发展) ✅ 排名与对比(团队内、公司内、历史对比)

7.3 这些数据能表现出什么?

项目层面

📊 项目执行的效率和质量水平 📊 团队配置的合理性 📊 客户满意度和口碑 📊 财务健康度和盈利能力 📊 风险点和改进机会 📊 与行业标准的差距

个人层面

👤 员工的综合能力(质量、效率、协作) 👤 员工的工作风格(响应速度、沟通方式) 👤 员工的成长潜力(学习能力、创新意识) 👤 员工的优势与短板 👤 员工的适合岗位和发展方向 👤 员工的绩效排名和激励方向


文档版本: v1.0 创建日期: 2025-11-10 作者: AI Assistant 状态: 待评审