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
|
9e84db3faf
|
Merge feature/mzl-dev: 修复飞书免登功能
|
2026-02-28 09:03:58 +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
|
5d581201e7
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 22:34:03 +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
|
58acb574d8
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 22:30:37 +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
|
e5bca85402
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 22:21:31 +08:00 |
|
root
|
ea86a4d68c
|
fix: 修复飞书 JSBridge SDK URL
正确的路径: /lark/passport/h5-jsbridge-1.0.3.js
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 22:21:26 +08:00 |
|
root
|
17623042ee
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 22:14:23 +08:00 |
|
root
|
40234a1d90
|
fix: 使用数据库中的 mobile_callback_url 作为回调地址
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 22:14:18 +08:00 |
|
root
|
5f255fb91f
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 22:12:51 +08:00 |
|
root
|
103da81a5c
|
fix: 移除硬编码的开发环境域名
- 使用动态域名配置(从 request 或 config 读取)
- 添加 FEISHU_BASE_URL 环境变量支持
- 修复回调地址为当前站点域名
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 22:12:46 +08:00 |
|
root
|
c414b32ed1
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 21:47:42 +08:00 |
|
root
|
3b5107d4cd
|
fix: 移除过期的飞书 JSBridge SDK
JSBridge 仅用于飞书内免登,扫码登录不需要
QRCode SDK 已包含所需功能
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 21:47:34 +08:00 |
|
root
|
e460cfd94b
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 19:17:49 +08:00 |
|
root
|
40fbba9f61
|
feat: 添加最新的数据库导出文件
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 19:17:43 +08:00 |
|
root
|
2b8845357e
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 19:05:07 +08:00 |
|
root
|
f1162e6958
|
fix: 移除后端代码挂载(避免覆盖容器内 vendor)
生产环境代码已打包到镜像中,无需挂载
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 19:05:07 +08:00 |
|
root
|
22a35e2cd0
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 19:03:12 +08:00 |
|
root
|
3f47b6080c
|
fix: 在 composer install 前创建 config 目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 19:03:11 +08:00 |
|
root
|
92fb050dd6
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 19:01:04 +08:00 |
|
root
|
9619f916f9
|
fix: 移除 opcache 扩展安装(PHP 8.5 内置)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 19:01:04 +08:00 |
|
root
|
6e1d0f62fb
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 18:58:35 +08:00 |
|
root
|
9cbf5627d3
|
fix: 移除 php-prod.ini 依赖(文件不在构建上下文中)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:58:30 +08:00 |
|
root
|
3a6b161c4f
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 18:56:47 +08:00 |
|
root
|
9e783963f1
|
fix: 修正 Dockerfile 路径(在 deploy 目录)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:56:43 +08:00 |
|
root
|
9872191097
|
Merge branch 'feature/mzl-dev'
|
2026-02-27 18:50:58 +08:00 |
|
root
|
ebac0c8452
|
feat: 更新部署配置适应新的目录结构
- 后端代码在 server/ 目录(Git 仓库)
- docker-compose 在 deploy/ 目录
- 部署脚本路径更新
- 部署文档更新
目录结构:
/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
├── index.html # 前端入口
├── assets/ # 前端静态资源
└── server/ # 整个项目(Git)
├── backend/
├── deploy/
└── logs/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:50:44 +08:00 |
|
root
|
f82855141e
|
docs: 更新Git工作流程
- 明确开发分支和发布分支的职责
- 发布分支用于部署和打包
- 开发分支用于日常开发
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:41:11 +08:00 |
|
root
|
2df57fb5d5
|
feat: 更新部署配置和发布流程
- 修复前端 TypeScript 编译错误
- 更新部署文档(前端本地构建,后端 Git 部署)
- 新增服务器端部署脚本
- 优化部署流程
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:39:20 +08:00 |
|
root
|
5f110b6988
|
docs: 明确前端本地打包部署流程,优化部署脚本
更新内容:
- DEPLOY_ONLINE_GUIDE.md: 详细说明前端本地打包的优势和流程
- deploy-1panel.sh: 优化部署脚本,添加前端构建验证
- 强调前后端分离部署的架构差异
核心变更:
1. 明确说明前端必须本地打包(npm run build)
2. 上传的是打包后的静态文件,不需要服务器 Node.js
3. 添加前端构建验证步骤
4. 优化部署流程提示和输出
部署流程:
- 本地:前端构建 → 验证构建 → 上传静态文件
- 服务器:后端代码 → Docker 容器运行
- 1Panel:Nginx 托管静态文件 + 反向代理后端 API
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:24:42 +08:00 |
|
root
|
7bdd0850f5
|
feat: 添加 1Panel 静态站点部署配置和线上部署指南
新增文件:
- deploy/docker-compose.prod.yml - 配置线上数据库和 Redis 连接
- deploy/nginx-1panel.conf - 1Panel Nginx 完整配置参考
- deploy/deploy-1panel.sh - 适配 1Panel 的自动部署脚本
- deploy/.env.production - 线上环境变量模板
- docs/DEPLOY_ONLINE_GUIDE.md - 详细部署说明文档
线上环境信息:
- 域名: uniservice-mobile.hnxinyouhe.com
- MySQL: 1Panel-mysql-XyxS
- Redis: 1Panel-redis-pxdb
- Docker 网络: 1panel-network
特性:
- 前后端分离部署
- 前端静态文件由 1Panel Nginx 直接托管
- 后端运行在 Docker 容器中
- 1Panel 面板管理 Nginx 配置和 SSL 证书
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:21:22 +08:00 |
|
root
|
c1e54d9457
|
chore: 移除已迁移的旧文件
|
2026-02-27 18:01:32 +08:00 |
|
root
|
4ceb5eac7e
|
chore: 重组项目文件结构,文档和部署文件归档
文件结构优化:
- docs/ 归档所有项目文档(PROJECT.md, PROJECT_ISSUES.md 等)
- deploy/ 归档所有部署相关文件(docker-compose.prod.yml, nginx 配置等)
- scripts/ 归档脚本文件(deploy.sh, rollback.sh)
- tests/ 归档测试文件(test_data.php)
更新引用路径:
- CLAUDE.md 更新文档路径引用
- 部署文档更新配置文件路径引用
清理文件:
- 移除非必要的测试文件(TestController, 测试脚本等)
- 移除重复/错误的目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 18:01:17 +08:00 |
|
root
|
1004aea725
|
feat: 审批功能优化和拒绝原因弹窗
后端改动:
- ApprovalService: 添加调试日志,简化详情页 URL 生成逻辑
- BusinessTripService: 优化出差审批详情展示
前端改动:
- approval/detail: 审批详情页优化,支持查看完整审批流程
- approval/reject: 新增拒绝原因弹窗组件
- business-trip/detail: 出差详情页增强,展示审批状态和操作
功能特性:
- 审批详情页显示完整审批流程和记录
- 拒绝操作支持填写拒绝原因
- 出差申请详情页优化展示
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 17:57:56 +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
|
b1895be50d
|
feat: 优化飞书审批通知卡片,改用卡片回调机制
主要改动:
- 去掉卡片中的备注输入框和表单元素
- 改为三个按钮(通过、拒绝、查看详情)横向排列在一行
- 通过/拒绝按钮使用卡片回调(value)而不是跳转 URL
- 新增 FeishuCardController 处理飞书卡片回调
- 添加提示文字告知用户如需备注可去详情页操作
技术细节:
- 按钮点击触发 card.action.trigger 事件
- 后端通过 FeishuCardController 处理回调
- 支持 url_verification 和 card.callback 两种事件类型
- 查看详情 URL 添加公司参数支持多租户
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-27 17:53:10 +08:00 |
|
root
|
ea185eb6cc
|
fix: 移除快速审批页面中重复的 return 语句
修复白屏问题:
- 移除组件末尾的重复 return 语句
- 这些代码是死代码,导致组件无法正常渲染
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-26 19:34:38 +08:00 |
|
root
|
390bdc348c
|
fix: 修复快速审批页面路由和错误处理
修复内容:
1. router/index.tsx - 将 QuickAction 路由移到 MobileLayout 外部
2. quick-action.tsx - 修复导入错误,增强错误处理和调试信息
问题分析:
- QuickAction 不需要 MobileLayout,应该作为独立页面
- 添加详细的调试日志便于排查问题
- 增强页面关闭逻辑(支持多种方式)
工作流程:
1. 用户点击飞书消息按钮
2. 打开快速审批页面
3. 检查登录状态,未登录则跳转登录页
4. 已登录则自动执行审批操作
5. 显示操作结果
6. 尝试关闭页面或跳转到列表
相关文件:
- frontend/src/router/index.tsx
- frontend/src/pages/approval/quick-action.tsx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-26 19:33:33 +08:00 |
|
root
|
09a7220e76
|
feat: 实现无感快速审批操作
问题:
- 用户点击飞书消息按钮需要跳转到web界面
- 需要登录才能操作,体验不流畅
解决方案:
1. 创建快速审批页面 (quick-action.tsx)
2. 用户点击按钮后自动执行审批操作
3. 操作成功后自动关闭页面或返回
4. 全流程无需用户手动跳转
工作流程:
1. 用户在飞书中点击"通过"/"拒绝"按钮
2. 打开快速审批页面
3. 自动执行审批操作(如果已登录)
4. 显示操作成功/失败
5. 自动关闭页面(飞书客户端)或返回列表
优势:
- 一步完成审批,无需跳转
- 已登录用户无感操作
- 未登录用户会引导登录后返回
相关文件:
- frontend/src/pages/approval/quick-action.tsx (新建)
- frontend/src/router/index.tsx
- backend/app/service/FeishuNotificationService.php
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-26 19:30:12 +08:00 |
|
root
|
e31cf88eab
|
fix: 添加与登录页相同的 tt 对象刷新机制
问题:
- 登录页可以飞书免登,但审批详情页不能
- 原因:登录页有刷新机制等待 tt 对象注入,审批详情页没有
修复:
- approval/detail.tsx - 添加与登录页相同的刷新逻辑
- 在飞书中但 tt 对象不存在时,自动刷新页面(最多3次)
- 每次刷新后重新检测 tt 对象是否已注入
工作流程:
1. 用户点击飞书消息按钮
2. 打开审批详情页
3. 检测到在飞书中但 tt 对象不存在
4. 自动刷新页面(最多3次)
5. tt 对象注入成功后自动免登
6. 免登成功后加载审批详情
相关文件:
- frontend/src/pages/approval/detail.tsx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-26 19:28:04 +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
|
7e57e8720b
|
feat: 添加飞书 JSBridge SDK 支持
问题:
- 移动端飞书 WebView 中 tt 对象没有被注入
- 导致免登功能无法使用
修复:
1. index.html - 引入飞书 H5 JSBridge SDK
2. approval/detail.tsx - 添加对多种飞书 API 的支持
3. debug-feishu.tsx - 更新调试页面,检测所有可能的 API 对象
支持的飞书 API:
- window.tt (标准 H5 应用)
- window.h5sdk (JSBridge)
- window.bridge (JSBridge)
- window.ttjsBridge (旧版)
相关文件:
- frontend/index.html
- frontend/src/pages/approval/detail.tsx
- frontend/src/pages/debug-feishu.tsx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-26 19:21:01 +08:00 |
|
root
|
f31abf2c68
|
feat: 添加飞书环境调试页面和详细日志
修改内容:
1. 新增 debug-feishu.tsx - 飞书环境调试页面
2. approval/detail.tsx - 添加详细的调试日志
3. router/index.tsx - 添加调试页面路由
4. business-trip.ts - 修复 import 错误
调试页面功能:
- 检测是否在飞书客户端内
- 显示 window.tt 等对象状态
- 测试飞书免登功能
使用方法:
1. 在飞书客户端中打开: https://xsm.dev.hnxinyouhe.com/debug-feishu
2. 查看环境信息
3. 点击"测试飞书免登"按钮
相关文件:
- frontend/src/pages/debug-feishu.tsx
- frontend/src/pages/approval/detail.tsx
- frontend/src/router/index.tsx
- frontend/src/services/business-trip.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-26 19:16:33 +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 |
|