docs: 移动蓝绿部署指南到 troubleshooting 目录
This commit is contained in:
+48
-3
@@ -260,8 +260,9 @@ async def get_oauth_authorize_url(
|
||||
encoded_redirect = quote(f"{default_origin}/itportal/", safe="")
|
||||
|
||||
# 构造企微OAuth2静默授权URL(snsapi_base:用户无感知)
|
||||
# 企业微信 OAuth2 地址(注意是 open.work.weixin.qq.com)
|
||||
authorize_url = (
|
||||
f"https://open.weixin.qq.com/connect/oauth2/authorize"
|
||||
f"https://open.work.weixin.qq.com/connect/oauth2/authorize"
|
||||
f"?appid={corp_id}"
|
||||
f"&redirect_uri={encoded_redirect}"
|
||||
f"&response_type=code"
|
||||
@@ -328,6 +329,7 @@ async def oauth_callback(
|
||||
position = ""
|
||||
avatar = ""
|
||||
|
||||
# 2.1 获取员工详细信息(包含头像)
|
||||
try:
|
||||
detail = await wecom_service.get_user_info(employee_id)
|
||||
employee_name = detail.get("name", "")
|
||||
@@ -337,8 +339,51 @@ async def oauth_callback(
|
||||
department = ",".join(str(d) for d in dept_ids) if dept_ids else ""
|
||||
position = detail.get("position", "")
|
||||
avatar = detail.get("avatar", "")
|
||||
except Exception:
|
||||
logger.warning(f"获取员工详细信息失败: employee_id={employee_id}")
|
||||
|
||||
# 调试日志:检查企微API返回的完整数据
|
||||
logger.info(f"企微用户详情返回: employee_id={employee_id}, avatar={avatar[:50] if avatar else '(空)'}...")
|
||||
except Exception as e:
|
||||
logger.warning(f"获取员工详细信息失败: employee_id={employee_id}, error={e}")
|
||||
|
||||
# 2.2 将员工信息保存到数据库(包含头像)
|
||||
try:
|
||||
from app.models.employee import Employee
|
||||
from sqlalchemy import select
|
||||
|
||||
stmt = select(Employee).where(
|
||||
Employee.employee_id == employee_id,
|
||||
Employee.corp_id == settings.wecom_corp_id
|
||||
)
|
||||
result = await db.execute(stmt)
|
||||
employee = result.scalars().first()
|
||||
|
||||
if employee:
|
||||
# 更新已有记录
|
||||
employee.name = employee_name
|
||||
employee.department = department
|
||||
employee.position = position
|
||||
# 【FE-UA-005 优化】每次登录强制更新头像URL,确保获取最新头像
|
||||
if avatar:
|
||||
employee.avatar = avatar
|
||||
employee.avatar_updated_at = datetime.utcnow()
|
||||
logger.info(f"更新员工头像: employee_id={employee_id}, avatar={avatar[:50] if avatar else '(空)'}...")
|
||||
else:
|
||||
# 创建新记录
|
||||
employee = Employee(
|
||||
corp_id=settings.wecom_corp_id,
|
||||
employee_id=employee_id,
|
||||
name=employee_name,
|
||||
department=department,
|
||||
position=position,
|
||||
avatar=avatar,
|
||||
)
|
||||
db.add(employee)
|
||||
logger.info(f"创建员工记录(含头像): employee_id={employee_id}")
|
||||
|
||||
await db.commit()
|
||||
except Exception as e:
|
||||
logger.warning(f"保存员工信息到数据库失败: employee_id={employee_id}, error={e}")
|
||||
# 不阻塞登录流程,继续执行
|
||||
|
||||
# 3. 生成 Bearer Token(与坐席端一致:secrets.token_urlsafe(32))
|
||||
token = secrets.token_urlsafe(32)
|
||||
|
||||
Reference in New Issue
Block a user