Commit Graph

24 Commits

Author SHA1 Message Date
root 7e7534ec13 fix: 添加更详细的调试日志 2026-02-28 10:38:27 +08:00
root b0fd009eb1 fix: 在调用 tt.requestAuthCode 前先调用 h5sdk.config
- 预先获取 appId 并配置 h5sdk
- 避免 'invalid url' 错误
2026-02-28 10:35:03 +08:00
root 6f7ac6c40b fix: 重新添加 H5 JSSDK 并使用 h5sdk.ready() 等待 tt 对象
- H5 JSSDK 是飞书网页应用免登必需的
- 使用 h5sdk.ready() 确保 tt 对象被注入后再调用 API
2026-02-28 10:25:04 +08:00
root fdb030cba0 fix: 移除 H5 JSSDK,直接使用飞书客户端注入的 tt 对象
- H5 JSSDK 与 tt 对象冲突,导致警告
- tt 对象由飞书客户端自动注入,无需额外 SDK
- 使用 tt.requestAuthCode 进行免登
2026-02-28 10:19:33 +08:00
root 12eeab6d2d fix: 使用 tt.requestAccess 替代 tt.requestAuthCode
根据飞书官方文档,网页应用免登应使用 tt.requestAccess 而非 tt.requestAuthCode
参数名从 appId 改为 appID
2026-02-28 09:24:41 +08:00
root d8644cac1e refactor: 简化登录页面逻辑,移除冗余调试代码
- 保留三种登录方式核心功能
- 飞书外:邮箱密码登录 + 飞书扫码登录
- 飞书内:静默授权登录
- 移除大量调试日志和测试页面引用
2026-02-28 09:21:15 +08:00
root 7cd2aacd7b fix: 添加 redirectUri 参数和详细调试日志 2026-02-28 09:12:47 +08:00
root 4667590feb fix: 修复飞书免登功能,添加 H5 JSSDK 和 appId 自动获取
后端改动:
- 新增 /api/v1/auth/feishu-config 接口,根据 company 参数返回对应 appId

前端改动:
- 添加飞书 H5 JSSDK (h5-js-sdk-1.5.19.js)
- 修改登录页免登逻辑:先从后端获取 appId,再调用 tt.requestAuthCode
- 新增飞书环境检测测试页面 (/feishu-env-test)
- 移除测试页面的自动轮询逻辑

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 08:58:51 +08:00
root 4c3b750884 fix: 优化飞书内免登功能,移除外部 JSBridge SDK 加载
- tt 对象由飞书客户端自动注入,无需加载外部 SDK
- 增加轮询超时时间到 10 秒
- 添加更详细的调试日志
- 超时时降级到扫码登录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 23:05:43 +08:00
root 5855546a7c fix: 修复飞书内免登功能
- 动态加载飞书 JSBridge SDK(多 CDN 备用)
- 等待 tt 对象加载后尝试免登
- 超时后降级为二维码登录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 22:34:03 +08:00
root ba9b1f9d2b fix: 飞书内环境自动显示二维码登录
- 移除 JSBridge SDK(URL 不可用)
- 飞书内环境自动触发二维码登录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 22:30:36 +08:00
root b1ca2c58b7 feat: 飞书登录支持多租户和用户工号管理
后端改动:
- FeishuService: 从飞书用户信息获取 tenant_key 和手机号
- FeishuService: 新增 user_sn 表工号分配机制
- FeishuService: 优先使用 enterprise_email,支持手机号
- AuthController: 飞书免登支持 company 参数

前端改动:
- FeishuAutoLogin: 支持多租户 company 参数
- login/index: 支持 redirect 参数和已登录检测
- QRCodeLogin: 支持多租户参数传递
- router: 新增路由守卫和参数处理
- api.ts: 优化飞书登录 API 调用

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 17:57:49 +08:00
root 6d08695a7d feat: 优化飞书免登失败后的用户体验
问题:
- 移动端飞书 WebView 中 JSBridge SDK 未注入
- 导致免登功能不可用

修复:
1. debug-feishu.tsx - 多次检测环境,添加重试和重新检测功能
2. login/index.tsx - 支持 redirect 参数,登录成功后返回原页面
3. QRCodeLogin.tsx - 支持 redirect 参数

用户体验改进:
- 免登失败时,友好提示用户使用其他登录方式
- 登录成功后自动返回到原页面(审批详情页)
- 用户完成登录后可直接进行审批操作

替代方案:
1. 点击飞书消息中的"查看详情"按钮
2. 跳转到登录页面
3. 使用邮箱/密码或扫码登录
4. 登录成功后自动返回审批详情页
5. 直接进行审批操作

相关文件:
- frontend/src/pages/debug-feishu.tsx
- frontend/src/pages/login/index.tsx
- frontend/src/pages/login/QRCodeLogin.tsx

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:24:20 +08:00
root 3ad8f34914 feat: 添加飞书免登自动登录功能
修改内容:
1. approval/detail.tsx - 在加载详情前检查登录状态,如果在飞书内则自动免登
2. login/index.tsx - 改进飞书环境检测和tt对象注入逻辑

业务流程:
1. 用户在飞书中点击消息按钮
2. 打开审批详情页 → 检测未登录
3. 如果在飞书客户端内 → 自动调用 tt.requestAuthCode
4. 免登成功 → 自动加载详情
5. 免登失败 → 跳转到登录页面

相关文件:
- frontend/src/pages/approval/detail.tsx
- frontend/src/pages/login/index.tsx

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:14:19 +08:00
root 2e5f570b40 feat: 完善鉴权和密码功能,添加飞书通知模块
- 完善Token过期/不存在时跳转登录重新认证
- 实现正常的账号密码登录验证(邮箱/手机号+密码)
- 用户初始化密码设为工号(sn)
- 添加修改密码功能(API+前端页面)
- 修复扫码登录后跳转问题(zustand persist格式)
- 创建飞书通知服务 FeishuNotificationService
- 设置页面添加修改密码入口

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:19:37 +08:00
root fa8843d9e0 fix: 使用官方 tt.requestAuthCode API 替代 ttjsBridge
- 添加 tt 对象类型声明(官方 H5 API)
- 优先使用 tt.requestAuthCode() 获取授权码
- 保留 ttjsBridge 作为降级兼容方案
- 修正环境检测逻辑

参考文档: https://open.feishu.cn/document/quickly-create-a-login-free-web-app/introduction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:14:03 +08:00
root df07b16c7a feat: 实现多端飞书登录功能
1. 飞书客户端内:静默自动登录
   - 检测飞书环境 (userAgent + ttjsBridge)
   - 调用 ttjsBridge.getAuthCode() 获取授权码
   - 自动登录到后台

2. 飞书客户端外:扫码登录
   - 后端新增三个接口:
     * POST /api/v1/auth/qrcode-login - 生成登录会话和二维码
     * GET /api/v1/auth/qrcode-login/status - 轮询登录状态
     * GET /login/qrcode/{id} - 飞书授权回调
   - 前端新增 QRCodeLogin 组件:
     * 使用 qrcode.react 生成二维码
     * 每 2 秒轮询登录状态
     * 状态:loading → pending → scanning → success/expired

3. 数据库表:feishu_login_session
   - 存储 session_id, auth_url, status, user_id
   - 状态:pending, scanning, success, expired
   - 2 分钟过期机制

4. 其他优化
   - 移除审批详情页的 header
   - 更新 PROJECT_ISSUES.md 文档

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 09:58:19 +08:00
root 1780822528 fix: 飞书登录回调地址改为https协议
- 重定向URI改为: https://xsm.dev.hnxinyouhe.com/login

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 00:33:14 +08:00
root e4e2be904b fix: 修正飞书登录回调地址为http协议
- 重定向URI改为: http://xsm.dev.hnxinyouhe.com/login
- 移除scope参数,使用飞书默认权限

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 00:32:35 +08:00
root 4712cc4446 fix: 添加飞书授权scope参数并增加调试日志
- scope参数设置为必需的权限范围
- 添加授权URL日志输出便于调试

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 00:28:34 +08:00
root fd48d35f8c fix: 修改飞书登录回调地址为公网域名
- 使用 https://xsm.dev.hnxinyouhe.com/login 作为回调地址
- 确保飞书授权可以正常跳转

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 00:28:00 +08:00
root 04953b22dc feat: 完善审批功能
- 新增通用审批列表页面(我发起的/待我审批/我已审批)
- 新增通用审批详情页面(支持审批通过/拒绝操作)
- 修复审批列表过滤逻辑("我已审批"只显示已完成订单)
- 修复登录页面未设置 Zustand store 的问题
- 修复 User 类型定义(id 改为 number 类型)
- 修复草稿恢复时的日期转换问题
- 创建测试数据脚本(test_data.php)
- 安装 webman 官方依赖包(database, redis, pagination 等)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:54:38 +08:00
root 09d4cb8054 fix: 修复页面间状态丢失问题并优化选择页面
- 修复选择审批人后再选择抄送人导致状态丢失的问题
- 使用独立的 sessionStorage key (selectedApprovers, selectedCc)
- 组件每次挂载时从 sessionStorage 恢复状态
- 只在提交/保存成功后清除 sessionStorage
- 优化人员选择页面布局和样式
- 更新 CLAUDE.md 文档记录问题和解决方案

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 15:22:12 +08:00
root 8d78e18267 Initial commit: X-Server Mobile enterprise tool system
- Frontend: React 18 + TypeScript + Vite + Ant Design Mobile
- Backend: PHP 8.5 + Webman 2.x + MySQL + Redis
- i18n support: Chinese, English, Russian, Spanish, French
- Approval workflow engine
- Docker development environment
- Feishu integration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:57:25 +08:00