Blame view

项目文档相关/docs/修改加班系数接口测试说明.md 9.25 KB
257347ad   “wangming”   feat: enhance fil...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  # 修改加班系数接口测试说明
  
  **接口地址**`PUT /api/Extend/LqXhHyhk/{id}/overtime-coefficient`  
  **创建日期**:2025年1月  
  **文档目的**:说明如何测试修改加班系数接口
  
  ---
  
  ## 一、接口说明
  
  ### 1.1 接口信息
  
  - **请求方式**:PUT
  - **接口路径**`/api/Extend/LqXhHyhk/{id}/overtime-coefficient`
  - **Content-Type**`application/json`
  - **需要认证**:是(Bearer Token)
  
  ### 1.2 请求参数
  
  **路径参数**
  - `id`:消耗单编号(string)
  
  **请求体**
  ```json
  {
    "overtimeCoefficient": 0.5
  }
  ```
  
  **参数说明**
  - `overtimeCoefficient`:新的加班系数(decimal?)
    - `NULL` 或 `0`:表示非加班单
    - 大于 `0`(如 0.5、1、1.5):表示加班单,系数值表示加倍的倍数
  
  ### 1.3 响应格式
  
  **成功响应**(200):
  ```json
  {
    "code": 200,
    "msg": "操作成功",
    "data": null
  }
  ```
  
  **错误响应**(400/500):
  ```json
  {
    "code": 400,
    "msg": "错误信息",
    "data": null
  }
  ```
  
  ---
  
  ## 二、测试步骤
  
  ### 2.1 使用测试脚本(推荐)
  
d8035736   “wangming”   Refactor project ...
61
  **测试脚本位置**`项目文档相关/scripts/sh/test_update_overtime_coefficient.sh`
257347ad   “wangming”   feat: enhance fil...
62
63
64
65
  
  **执行命令**
  ```bash
  cd /Users/mr.wang/代码库/绿纤/lvqianmeiye_ERP
d8035736   “wangming”   Refactor project ...
66
  ./项目文档相关/scripts/sh/test_update_overtime_coefficient.sh
257347ad   “wangming”   feat: enhance fil...
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  ```
  
  **测试脚本包含的测试用例**
  1. ✅ 获取登录token
  2. ✅ 获取消耗单记录ID
  3. ✅ 查询当前消耗单信息
  4. ✅ 修改加班系数为0.5
  5. ✅ 验证修改结果(检查计算是否正确)
  6. ✅ 修改加班系数为1.0
  7. ✅ 修改加班系数为0(非加班单)
  8. ✅ 验证修改为0后的结果
  9. ✅ 测试不存在的ID(错误处理)
  10. ✅ 测试无效参数(负数)
  
  ---
  
  ### 2.2 使用curl命令手动测试
  
  #### 步骤1:获取登录token
  
  ```bash
8daf47d0   “wangming”   修改访问地址
88
  TOKEN=$(curl -s -X POST "http://localhost:2015/api/oauth/Login" \
257347ad   “wangming”   feat: enhance fil...
89
90
91
92
93
94
95
96
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e" | \
    python3 -c "import sys, json; print(json.load(sys.stdin)['data']['token'])")
  ```
  
  #### 步骤2:获取一个消耗单记录ID
  
  ```bash
8daf47d0   “wangming”   修改访问地址
97
  CONSUME_ID=$(curl -s -X GET "http://localhost:2015/api/Extend/LqXhHyhk?currentPage=1&pageSize=1" \
257347ad   “wangming”   feat: enhance fil...
98
99
100
101
102
103
104
    -H "Authorization: $TOKEN" | \
    python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('list', [{}])[0].get('id', ''))")
  ```
  
  #### 步骤3:查询当前消耗单信息
  
  ```bash
8daf47d0   “wangming”   修改访问地址
105
  curl -s -X GET "http://localhost:2015/api/Extend/LqXhHyhk/$CONSUME_ID" \
257347ad   “wangming”   feat: enhance fil...
106
107
108
109
110
111
    -H "Authorization: $TOKEN" | python3 -m json.tool
  ```
  
  #### 步骤4:修改加班系数为0.5
  
  ```bash
8daf47d0   “wangming”   修改访问地址
112
  curl -s -X PUT "http://localhost:2015/api/Extend/LqXhHyhk/$CONSUME_ID/overtime-coefficient" \
257347ad   “wangming”   feat: enhance fil...
113
114
115
116
117
118
119
120
121
122
    -H "Authorization: $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "overtimeCoefficient": 0.5
    }' | python3 -m json.tool
  ```
  
  #### 步骤5:验证修改结果
  
  ```bash
8daf47d0   “wangming”   修改访问地址
123
  curl -s -X GET "http://localhost:2015/api/Extend/LqXhHyhk/$CONSUME_ID" \
257347ad   “wangming”   feat: enhance fil...
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
    -H "Authorization: $TOKEN" | python3 -m json.tool
  ```
  
  **验证要点**
  - 检查 `overtimeCoefficient` 是否为 0.5
  - 检查 `overtimeSgfy`(加班手工费)是否正确计算:`原始手工费 × 0.5`
  - 检查 `sgfy`(最终手工费)是否正确计算:`原始手工费 + 加班手工费`
  - 检查品项明细的 `overtimeProjectNumber` 和 `projectNumber` 是否正确
  - 检查健康师业绩的 `overtimeKdpxNumber`、`kdpxNumber`、`overtimeLaborCost`、`laborCost` 是否正确
  
  ---
  
  ### 2.3 使用Postman测试
  
  1. **创建新请求**
     - 方法:PUT
8daf47d0   “wangming”   修改访问地址
140
     - URL:`http://localhost:2015/api/Extend/LqXhHyhk/{id}/overtime-coefficient`
257347ad   “wangming”   feat: enhance fil...
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
     -`{id}` 替换为实际的消耗单ID
  
  2. **设置请求头**
     - `Authorization`: `Bearer {token}`
     - `Content-Type`: `application/json`
  
  3. **设置请求体**(Body -> raw -> JSON)
     ```json
     {
       "overtimeCoefficient": 0.5
     }
     ```
  
  4. **发送请求并验证响应**
  
  ---
  
  ## 三、测试用例
  
  ### 3.1 正常测试用例
  
  #### 测试用例1:修改加班系数为0.5
  
  **前置条件**
  - 存在一个有效的消耗单记录
  - 原始手工费 = 100元
  - 原始项目次数 = 2次
  
  **操作步骤**
  1. 调用接口,设置 `overtimeCoefficient = 0.5`
  
  **预期结果**
  - 主表:
    - `overtimeCoefficient = 0.5`
    - `overtimeSgfy = 100 × 0.5 = 50元`
    - `sgfy = 100 + 50 = 150元`
  - 品项明细:
    - `overtimeProjectNumber = 2 × 0.5 = 1次`
    - `projectNumber = 2 + 1 = 3次`
  - 健康师业绩:
    - `overtimeKdpxNumber = 原始值 × 0.5`
    - `kdpxNumber = 原始值 + 加班值 + 陪同值`
    - `overtimeLaborCost = 原始值 × 0.5`
    - `laborCost = 原始值 + 加班值`
  
  ---
  
  #### 测试用例2:修改加班系数为1.0
  
  **操作步骤**
  1. 调用接口,设置 `overtimeCoefficient = 1.0`
  
  **预期结果**
  - 加班手工费 = 原始手工费 × 1.0 = 原始手工费
  - 最终手工费 = 原始手工费 × 2
  
  ---
  
  #### 测试用例3:修改加班系数为0(非加班单)
  
  **操作步骤**
  1. 调用接口,设置 `overtimeCoefficient = 0`
  
  **预期结果**
  - 所有加班相关字段(`F_Overtime*`)都变为 0
  - 最终值 = 原始值
  
  ---
  
  ### 3.2 异常测试用例
  
  #### 测试用例4:不存在的消耗单ID
  
  **操作步骤**
  1. 调用接口,使用不存在的ID(如:999999999999999999)
  
  **预期结果**
  - 返回错误:`耗卡记录不存在或已作废`
  - HTTP状态码:400
  
  ---
  
  #### 测试用例5:无效参数(负数)
  
  **操作步骤**
  1. 调用接口,设置 `overtimeCoefficient = -0.5`
  
  **预期结果**
  - 系统应该允许负数(如果需要限制,需要在前端或后端添加验证)
  - 或者返回参数验证错误
  
  ---
  
  #### 测试用例6:原始数据不存在
  
  **操作步骤**
  1. 找到一个原始手工费为空的消耗单记录
  2. 尝试修改加班系数
  
  **预期结果**
  - 如果原始手工费为空且最终手工费也为空,应该返回错误:`原始手工费不存在,无法修改加班系数`
  - 如果原始手工费为空但最终手工费存在,应该自动使用最终手工费作为原始值
  
  ---
  
  ## 四、验证要点
  
  ### 4.1 数据一致性验证
  
  1. **原始数据不变**
     - ✅ 所有 `F_Original*` 字段保持不变
     - ✅ 验证方法:修改前后对比原始字段值
  
  2. **加班数据重新计算**
     - ✅ 所有 `F_Overtime*` 字段都根据新系数重新计算
     - ✅ 验证方法:检查计算公式是否正确
  
  3. **最终数据正确**
     - ✅ 所有最终字段 = 原始值 + 加班值
     - ✅ 验证方法:检查最终值是否等于原始值 + 加班值
  
  ---
  
  ### 4.2 事务一致性验证
  
  1. **事务回滚测试**
     - 在更新过程中模拟异常(如数据库连接断开)
     - 验证所有数据是否回滚,保持一致性
  
  2. **并发测试**
     - 同时修改同一个消耗单的加班系数
     - 验证数据是否正确,不会出现脏数据
  
  ---
  
  ### 4.3 性能验证
  
  1. **批量更新性能**
     - 测试有大量品项明细和健康师业绩的消耗单
     - 验证更新速度是否可接受
  
  ---
  
  ## 五、常见问题
  
  ### 5.1 原始数据为空怎么办?
  
  **问题**:如果原始数据(`F_Original*`)为空,系统会如何处理?
  
  **答案**
  - 系统会自动从当前值中推导出原始值
  - 对于主表:如果 `OriginalSgfy` 为空,使用 `Sgfy` 作为原始值
  - 对于品项明细:如果 `OriginalProjectNumber` 为空,使用 `ProjectNumber` 作为原始值
  - 对于健康师业绩:从最终值中减去加班值和陪同值,得到原始值
  
  ---
  
  ### 5.2 科技部老师业绩是否参与计算?
  
  **问题**:科技部老师业绩表的加班字段是否会被更新?
  
  **答案**
  - 当前代码中,科技部老师业绩表的加班字段被固定为 0,不参与加班计算
  - 如果需要支持,可以取消注释代码中的相关部分
  
  ---
  
  ### 5.3 修改后是否需要重新计算业绩?
  
  **问题**:修改加班系数后,是否需要重新计算相关的业绩统计?
  
  **答案**
  - 修改加班系数只影响当前消耗单的数据
  - 如果业绩统计是基于消耗单数据实时计算的,会自动反映新的加班系数
  - 如果业绩统计是预先计算的,可能需要重新计算相关统计
  
  ---
  
  ## 六、测试结果记录
  
  ### 6.1 测试环境
  
  - **测试时间**:2025年1月
8daf47d0   “wangming”   修改访问地址
324
  - **测试环境**:开发环境(localhost:2015)
257347ad   “wangming”   feat: enhance fil...
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
  - **测试人员**:开发团队
  
  ### 6.2 测试结果
  
  | 测试用例 | 测试结果 | 备注 |
  |---------|---------|------|
  | 修改加班系数为0.5 | ✅ 通过 | 计算正确 |
  | 修改加班系数为1.0 | ✅ 通过 | 计算正确 |
  | 修改加班系数为0 | ✅ 通过 | 所有加班字段为0 |
  | 不存在的ID | ✅ 通过 | 返回正确错误信息 |
  | 无效参数(负数) | ⚠️ 待验证 | 需要确认业务规则 |
  | 原始数据为空 | ✅ 通过 | 自动推导原始值 |
  
  ---
  
  ## 七、总结
  
  ### 7.1 接口功能
  
  **已实现功能**
  - 修改消耗单的加班系数
  - 自动重新计算所有相关的加班字段
  - 使用事务保证数据一致性
  - 处理原始数据为空的情况
  
  ### 7.2 注意事项
  
  1. **数据备份**:修改前建议备份数据
  2. **权限控制**:确保只有有权限的用户才能修改
  3. **日志记录**:建议记录修改操作日志
  4. **性能考虑**:对于有大量明细的消耗单,更新可能需要一些时间
  
  ---
  
  **文档结束**