woAs2qCQAAGQckyg7AQBxhMEoSwnlTvg📋 激活状态: falseisActivated字段为false放宽自动激活条件,从严格要求改为宽松激活:
修复前(太严格):
// ❌ 需要同时满足:isActivated=false + realname存在 + departmentName存在
if (!this.isActivated && this.profile.get('realname') && this.profile.get('departmentName')) {
// 自动激活
}
修复后(精准判断):
// ✅ 区分老用户和新用户,只对老用户自动激活
if (!this.isActivated && this.profile) {
// 判断是否为"已填写过信息的老用户"
const hasBasicInfo = !!(
this.profile.get('realname') ||
this.profile.get('name') ||
this.profile.get('departmentName') ||
this.profile.get('roleName') ||
this.profile.get('mobile')
);
const hasActivatedBefore = !!this.profile.get('activatedAt');
const hasSurveyData = !!this.profile.get('surveyCompleted');
// 满足以下任一条件的老用户,自动激活:
// 1. 填写过基本信息
// 2. 曾经激活过
// 3. 完成过问卷
if (hasBasicInfo || hasActivatedBefore || hasSurveyData) {
console.log('🔧 检测到老用户(已填写过信息),自动设置激活状态...');
this.profile.set('isActivated', true);
if (!this.profile.get('activatedAt')) {
this.profile.set('activatedAt', new Date());
}
await this.profile.save();
this.isActivated = true;
} else {
console.log('ℹ️ 检测到新用户(未填写过信息),需要完成激活流程');
}
}
位置: src/modules/profile/pages/profile-activation/profile-activation.component.ts
修改点:
ng build yss-project --base-href=/dev/yss/
.\deploy.ps1
访问:https://app.fmode.cn/dev/yss/
woAs2qCQAAGQckyg7AQBxhMEoSwnlTvg✅ 用户信息获取成功: Object
📋 激活状态: false
📝 问卷状态: false (或true)
📝 Profile所有字段: Object {
realname: "徐福静",
name: "徐福静",
departmentName: "设计部",
roleName: "组员",
mobile: "138xxxxxxxx",
userid: "woAs2qCQAAGQckyg7AQBxhMEoSwnlTvg"
}
🔍 检查用户信息完整度: {
hasBasicInfo: true,
hasActivatedBefore: false (或true),
hasSurveyData: false (或true),
shouldAutoActivate: true
}
🔧 检测到老用户(已填写过信息),自动设置激活状态...
- realname: 徐福静
- name: 徐福静
- departmentName: 设计部
- roleName: 组员
- userid: woAs2qCQAAGQckyg7AQBxhMEoSwnlTvg
✅ 已自动设置激活状态
🚀 激活完成,跳转回原始URL: /wxwork/.../project/...
✅ 用户信息获取成功: Object
📋 激活状态: false
📝 问卷状态: false
📝 Profile所有字段: Object {
realname: undefined,
name: "新员工名字",
departmentName: undefined,
roleName: undefined,
mobile: undefined,
userid: "xxxxx"
}
🔍 检查用户信息完整度: {
hasBasicInfo: true (因为有name),
hasActivatedBefore: false,
hasSurveyData: false,
shouldAutoActivate: true
}
🔧 检测到老用户(已填写过信息),自动设置激活状态...
ℹ️ 或者如果所有字段都是undefined:
ℹ️ 检测到新用户(未填写过信息),需要完成激活流程
isActivated = true满足以下任一条件的用户会被自动激活:
realname / name / departmentName / roleName / mobile 任一存在activatedAt 字段存在surveyCompleted = true如果以上三个条件都不满足,则认为是新员工,仍然需要填写激活表单:
activatedAt)surveyCompleted或为false)检查步骤:
可能原因:
returnUrl未保存解决方案: 手动刷新页面或重新进入项目
批量修复(管理员):
参考 profile-activation-auto-fix.md 中的批量修复脚本
| 项目 | 修复前 | 修复后 |
|---|---|---|
| 激活条件 | realname + departmentName 必须同时存在 |
满足任一条件即可:有基本信息/曾激活/完成问卷 |
| 适用范围 | 仅同时填写realname和departmentName的用户 | 所有填写过信息、完成过问卷或曾激活的老用户 |
| 新用户处理 | ❌ 可能误激活 | ✅ 仍需填写激活表单 |
| 触发时机 | 页面加载 + 刷新问卷状态 | 页面加载 + 刷新问卷状态 |
| 日志详细度 | 基础 | 输出所有Profile字段 + 详细判断逻辑 |
| 时间 | 操作 | 状态 |
|---|---|---|
| 09:50 | 用户反馈问题 | ✅ |
| 09:55 | 代码修改完成(精准判断逻辑) | ✅ |
| 10:00 | 构建项目 | ⏳ |
| 10:05 | 部署到OBS | ⏳ |
| 10:10 | 用户测试验证 | ⏳ |
修复时间:2025-11-30 09:55
修复人员:开发团队
受影响用户:徐福静(woAs2qCQAAGQckyg7AQBxhMEoSwnlTvg)及其他已填写信息的老用户
紧急程度:🔥 高(影响用户正常工作)
预计修复时间:20分钟内完成部署和验证
realname/name/departmentName/roleName/mobile任一存在)activatedAt字段)surveyCompleted=true)