docs: 添加线上部署和调试步骤文档
This commit is contained in:
@@ -0,0 +1,238 @@
|
||||
# 线上部署和调试步骤
|
||||
|
||||
**版本**: 1.0.0
|
||||
**更新时间**: 2026-02-28
|
||||
**分支**: feature/debug-feishu-message
|
||||
|
||||
---
|
||||
|
||||
## 📋 部署前检查清单
|
||||
|
||||
### 代码变更文件
|
||||
```
|
||||
backend/app/model/FeishuMessage.php # 新建 - 消息映射模型
|
||||
backend/app/model/FeishuMessageLog.php # 新建 - 消息日志模型
|
||||
backend/app/service/ApprovalService.php # 修改 - 添加消息更新逻辑
|
||||
backend/app/service/FeishuNotificationService.php # 修改 - 添加日志记录
|
||||
backend/app/controller/DebugController.php # 新建 - 调试接口
|
||||
backend/app/service/BusinessTripService.php # 修改 - 添加node_id参数
|
||||
backend/config/route.php # 修改 - 添加调试路由
|
||||
```
|
||||
|
||||
### 数据库变更
|
||||
```
|
||||
新建表:
|
||||
- feishu_message # 消息映射表
|
||||
- feishu_message_log # 消息日志表
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 部署步骤
|
||||
|
||||
### Step 1: 备份数据库
|
||||
```bash
|
||||
ssh root@45.153.130.80
|
||||
|
||||
# 备份数据库
|
||||
docker exec 1Panel-mysql-XyxS mysqldump -uxserver -pNsNBSQm4b2b7SzhR xserver > backup_$(date +%Y%m%d_%H%M%S).sql
|
||||
```
|
||||
|
||||
### Step 2: 创建数据库表
|
||||
```bash
|
||||
# 创建 feishu_message_log 表
|
||||
docker exec 1Panel-mysql-XyxS mysql -uxserver -pNsNBSQm4b2b7SzhR xserver << 'EOF'
|
||||
CREATE TABLE IF NOT EXISTS feishu_message_log (
|
||||
id bigint unsigned NOT NULL AUTO_INCREMENT,
|
||||
action varchar(20) NOT NULL COMMENT '操作类型:send=发送, update=更新, update_card=更新卡片',
|
||||
order_id bigint unsigned NOT NULL COMMENT '审批订单ID',
|
||||
node_id bigint unsigned DEFAULT NULL COMMENT '审批节点ID',
|
||||
user_id bigint unsigned DEFAULT NULL COMMENT '用户ID',
|
||||
message_id varchar(64) DEFAULT NULL COMMENT '飞书消息ID',
|
||||
status varchar(10) NOT NULL COMMENT '状态:success=成功, failed=失败',
|
||||
request_data text DEFAULT NULL COMMENT '请求数据(JSON)',
|
||||
response_data text DEFAULT NULL COMMENT '响应数据(JSON)',
|
||||
error_message text DEFAULT NULL COMMENT '错误信息',
|
||||
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_order_id (order_id),
|
||||
KEY idx_action (action),
|
||||
KEY idx_status (status),
|
||||
KEY idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='飞书消息日志表';
|
||||
EOF
|
||||
|
||||
# 验证表创建
|
||||
docker exec 1Panel-mysql-XyxS mysql -uxserver -pNsNBSQm4b2b7SzhR xserver -e "SHOW TABLES LIKE 'feishu%';"
|
||||
```
|
||||
|
||||
### Step 3: 部署代码
|
||||
```bash
|
||||
# 进入项目目录
|
||||
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index
|
||||
|
||||
# 拉取最新代码
|
||||
git fetch origin
|
||||
git checkout feature/debug-feishu-message
|
||||
git pull origin feature/debug-feishu-message
|
||||
```
|
||||
|
||||
### Step 4: 重启后端服务
|
||||
```bash
|
||||
# 重启后端容器
|
||||
docker restart x-server-backend
|
||||
|
||||
# 检查服务状态
|
||||
docker logs x-server-backend --tail 50
|
||||
```
|
||||
|
||||
### Step 5: 验证部署
|
||||
```bash
|
||||
# 检查PHP报错
|
||||
docker logs x-server-backend 2>&1 | grep -i error
|
||||
|
||||
# 测试调试接口
|
||||
curl "http://localhost:8787/debug/message-logs?debug=1&limit=10"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 调试测试计划
|
||||
|
||||
### 测试场景1:会签(and_approve)
|
||||
|
||||
**配置:**
|
||||
```sql
|
||||
-- 确认节点类型为会签
|
||||
UPDATE approval_node SET type='and_approve' WHERE id=7;
|
||||
```
|
||||
|
||||
**测试步骤:**
|
||||
1. 选择3个审批人提交申请
|
||||
2. 第一个审批人通过 → 检查状态仍为 pending
|
||||
3. 第二个审批人通过 → 检查状态仍为 pending
|
||||
4. 第三个审批人通过 → 检查状态变为 approved
|
||||
5. 检查消息日志,验证所有操作都被记录
|
||||
|
||||
**验证点:**
|
||||
- [ ] 每次审批后状态正确更新
|
||||
- [ ] 审批记录正确保存
|
||||
- [ ] 消息日志有记录
|
||||
- [ ] 会签完成后通知申请人
|
||||
|
||||
---
|
||||
|
||||
### 测试场景2:或签(or_approve)
|
||||
|
||||
**配置:**
|
||||
```sql
|
||||
-- 修改节点类型为或签
|
||||
UPDATE approval_node SET type='or_approve' WHERE id=7;
|
||||
```
|
||||
|
||||
**测试步骤:**
|
||||
1. 选择3个审批人提交申请
|
||||
2. 第一个审批人通过 → 状态变为 approved
|
||||
3. 检查其他审批人的消息卡片是否更新
|
||||
|
||||
**验证点:**
|
||||
- [ ] 一人通过后立即完成流程
|
||||
- [ ] 消息卡片更新被调用
|
||||
- [ ] 其他审批人的消息移除按钮
|
||||
- [ ] 消息日志记录更新操作
|
||||
|
||||
---
|
||||
|
||||
### 测试场景3:单人审批(approver)
|
||||
|
||||
**配置:**
|
||||
```sql
|
||||
-- 修改节点类型为单人审批
|
||||
UPDATE approval_node SET type='approver' WHERE id=7;
|
||||
```
|
||||
|
||||
**测试步骤:**
|
||||
1. 选择多个审批人提交申请
|
||||
2. 第一个审批人通过 → 状态变为 approved
|
||||
3. 检查消息更新
|
||||
|
||||
**验证点:**
|
||||
- [ ] 一人通过后完成流程
|
||||
- [ ] 消息卡片正确更新
|
||||
- [ ] 其他人无法重复操作
|
||||
|
||||
---
|
||||
|
||||
## 🔍 问题排查
|
||||
|
||||
### 查看消息日志
|
||||
```bash
|
||||
# 查看最近50条日志
|
||||
docker exec 1Panel-mysql-XyxS mysql -uxserver -pNsNBSQm4b2b7SzhR xserver -e "
|
||||
SELECT id, action, order_id, user_id, message_id, status,
|
||||
created_at
|
||||
FROM feishu_message_log
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 50;
|
||||
"
|
||||
|
||||
# 查看失败的日志
|
||||
docker exec 1Panel-mysql-XyxS mysql -uxserver -pNsNBSQm4b2b7SzhR xserver -e "
|
||||
SELECT * FROM feishu_message_log
|
||||
WHERE status = 'failed'
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 10\G
|
||||
"
|
||||
```
|
||||
|
||||
### 查看消息映射
|
||||
```bash
|
||||
# 查看某个订单的消息映射
|
||||
docker exec 1Panel-mysql-XyxS mysql -uxserver -pNsNBSQm4b2b7SzhR xserver -e "
|
||||
SELECT * FROM feishu_message
|
||||
WHERE order_id = <ORDER_ID>;
|
||||
"
|
||||
```
|
||||
|
||||
### 查看后端日志
|
||||
```bash
|
||||
# 实时日志
|
||||
docker logs x-server-backend -f --tail 100
|
||||
|
||||
# 查看特定关键词
|
||||
docker logs x-server-backend 2>&1 | grep -i "飞书\|审批\|消息"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 测试记录模板
|
||||
|
||||
### 审批测试记录
|
||||
| 订单ID | 申请人 | 审批人 | 节点类型 | 操作 | 预期结果 | 实际结果 | 状态 |
|
||||
|--------|--------|--------|----------|------|----------|----------|------|
|
||||
| | | | | | | | |
|
||||
|
||||
### 消息测试记录
|
||||
| 订单ID | 操作 | message_id | 状态 | 预期行为 | 实际行为 | 状态 |
|
||||
|--------|------|------------|------|----------|----------|------|
|
||||
| | |------------|------|----------| | |
|
||||
|
||||
---
|
||||
|
||||
## 🔄 回滚方案
|
||||
|
||||
如果出现问题需要回滚:
|
||||
```bash
|
||||
# 回滚代码
|
||||
git checkout master
|
||||
git pull origin master
|
||||
docker restart x-server-backend
|
||||
|
||||
# 恢复数据库(如果需要)
|
||||
docker exec -i 1Panel-mysql-XyxS mysql -uxserver -pNsNBSQm4b2b7SzhR xserver < backup_xxx.sql
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**维护人**: 开发团队
|
||||
**最后更新**: 2026-02-28
|
||||
Reference in New Issue
Block a user