employee-activation-troubleshooting.md 7.1 KB

员工激活问题诊断与修复指南

📋 问题描述

员工在企业微信端已确认身份激活,但访问项目管理页面时仍显示"身份验证激活"页面,无法正常加载项目管理功能。

🔍 问题原因

  1. Profile表中isActivated字段未正确设置

    • 员工首次激活时,isActivated字段可能未被设置或设置为false
    • 数据迁移或导入时,isActivated字段缺失
  2. 缓存问题

    • WxworkAuth的Profile缓存未及时更新
    • 浏览器本地缓存存储了旧的激活状态
  3. userid不匹配

    • Profile表中的userid与企业微信返回的userid不一致
    • 员工信息从其他系统同步时,userid字段未正确填写

🛠️ 解决方案

方案1:使用管理员修复工具(推荐)

  1. 访问修复工具

    https://your-domain/admin/employee-activation-fix
    
  2. 扫描所有员工

    • 点击 "🔍 扫描所有员工" 按钮
    • 工具会自动扫描所有员工的激活状态
    • 显示统计信息:总数、已激活、未激活、字段缺失
  3. 批量修复

    • 查看未激活员工列表
    • 点击 "✅ 修复所有未激活员工" 按钮
    • 工具会自动将所有未激活员工的isActivated字段设置为true
  4. 单个修复

    • 在员工列表中找到特定员工
    • 点击该员工对应的 "修复" 按钮
    • 仅修复该员工的激活状态

方案2:手动数据库修复

如果无法访问管理员工具,可以直接在Parse Dashboard中修复:

  1. 登录Parse Dashboard

    https://your-parse-dashboard-url
    
  2. 查找员工记录

    • 进入 Profile
    • 根据姓名或userid搜索员工记录
  3. 修复字段

    • 找到目标员工记录
    • 设置 isActivated 字段为 true
    • 设置 activatedAt 字段为当前时间(如果为空)
    • 点击保存
  4. 验证修复

    • 员工重新登录企业微信
    • 访问项目管理页面
    • 应该能正常显示

方案3:强制重新激活

如果以上方法都不行,让员工进行强制重新激活:

  1. 清除浏览器缓存

    // 在浏览器控制台执行
    localStorage.clear();
    sessionStorage.clear();
    
  2. 重新访问激活页面

    https://your-domain/wxwork/{cid}/activation
    
  3. 完成激活流程

    • 填写真实姓名
    • 选择部门和角色
    • 点击 "确认激活"

📊 调试步骤

1. 检查控制台日志

在浏览器开发者工具的Console中查看详细日志:

🔐 CustomWxworkAuthGuard 执行,当前路由: /admin/project-management
✅ 获取用户信息成功: { name: "徐福静", userid: "..." }
🔎 currentProfile 查询结果: { id: "...", isActivated: false }
🔎 回退 Profile 查询结果: { userid查询: "...", 找到Profile: true, isActivated: false }
❌ Profile存在但未激活: { profileId: "...", isActivated: false }
⚠️ 用户未激活,跳转到激活页面

2. 关键字段检查清单

在Parse Dashboard中检查以下字段:

  • Profile.userid - 必须与企业微信的userid完全一致
  • Profile.isActivated - 必须为true
  • Profile.isDeleted - 必须为false或不存在
  • Profile.isDisabled - 必须为false或不存在
  • Profile.nameProfile.realname - 姓名不为空

3. 测试访问

修复后,测试以下路径:

  1. 项目管理页

    /admin/project-management
    
  2. 项目详情页

    /admin/project-detail/{projectId}
    
  3. 企微项目页

    /wxwork/{cid}/project/{projectId}
    

🚀 预防措施

1. 员工入职流程

确保新员工通过以下流程激活:

  1. 添加到企业微信
  2. 访问激活页面并完成激活
  3. 在管理后台验证激活状态

2. 数据同步规范

从其他系统同步员工数据时:

  • 确保userid字段正确填写
  • 自动设置isActivated = true
  • 设置activatedAt为当前时间

3. 定期检查

使用修复工具定期扫描:

  • 每周扫描一次
  • 发现未激活员工及时处理
  • 记录异常情况

📞 技术支持

如果以上方法都无法解决问题,请联系技术支持并提供以下信息:

  1. 员工姓名和企业微信userid
  2. 浏览器控制台完整日志
  3. Profile表中该员工的完整记录截图
  4. 问题发生的时间和频率

🔧 代码修改说明

本次修复包含以下代码改动:

1. CustomWxworkAuthGuard 增强

文件: src/app/custom-wxwork-auth-guard.ts

改动:

  • 增强Profile查询日志,输出更详细的字段信息
  • 添加Profile存在但未激活的详细错误信息
  • 区分"字段缺失"和"字段为false"两种情况

2. 员工激活修复工具

文件: src/app/pages/admin/employee-activation-fix/employee-activation-fix.ts

功能:

  • 扫描所有员工的激活状态
  • 统计已激活、未激活、字段缺失的员工数量
  • 提供批量修复和单个修复功能
  • 实时显示修复日志

3. 路由配置

文件: src/app/app.routes.ts

改动:

  • 添加/admin/employee-activation-fix路由
  • 管理员可直接访问修复工具

📝 使用示例

示例1:批量修复所有员工

// 访问修复工具页面
访问: https://your-domain/admin/employee-activation-fix

// 步骤:
1. 点击 "扫描所有员工"
2. 查看统计结果
3. 点击 "修复所有未激活员工"
4. 等待修复完成
5. 验证:所有员工应该都已激活

示例2:修复特定员工(徐福静)

// 方法1:使用修复工具
1. 访问: https://your-domain/admin/employee-activation-fix
2. 点击 "扫描所有员工"
3. 在列表中找到 "徐福静"
4. 点击对应的 "修复" 按钮
5. 员工可以立即重新登录使用

// 方法2:直接修改数据库
1. 登录Parse Dashboard
2. 进入Profile表
3. 搜索 realname = "徐福静" 或 name = "徐福静"
4. 编辑记录:
   - isActivated = true
   - activatedAt = 当前时间
5. 保存
6. 员工清除缓存后重新登录

示例3:查看详细调试信息

// 在浏览器控制台查看日志
// 当员工访问项目管理页面时,会自动输出:

🔐 CustomWxworkAuthGuard 执行
✅ 获取用户信息成功: {
  name: "徐福静",
  userid: "XuFuJing",
  cid: "cDL6R1hgSi"
}

🔎 currentProfile 查询结果: {
  id: "abc123",
  name: "徐福静",
  userid: "XuFuJing",
  isActivated: false,  // ⚠️ 问题:这里应该是true
  activatedAt: null
}

❌ Profile存在但未激活: {
  profileId: "abc123",
  isActivated: false,
  所有字段: {
    name: "徐福静",
    userid: "XuFuJing",
    roleName: "设计师",
    isActivated: false,  // ⚠️ 需要修复
    isDisabled: false,
    isDeleted: false
  }
}

⚠️ 用户未激活,跳转到激活页面

✅ 验证清单

修复完成后,请验证以下项目:

  • 员工可以正常访问项目管理页面
  • Profile表中isActivated字段为true
  • 控制台没有激活相关的错误日志
  • 员工可以正常查看和操作项目
  • 其他页面功能正常(设计师工作台、组长看板等)

最后更新: 2025-11-27
维护者: 开发团队