test-report-1777202534019.html 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>心知益家 - 测试报告</title>
  7. <style>
  8. * { margin: 0; padding: 0; box-sizing: border-box; }
  9. body { font-family: 'Microsoft YaHei', sans-serif; background: #f5f5f5; padding: 20px; }
  10. .container { max-width: 1400px; margin: 0 auto; background: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
  11. h1 { color: #333; margin-bottom: 20px; border-bottom: 3px solid #4CAF50; padding-bottom: 10px; }
  12. h2 { color: #555; margin: 25px 0 15px; padding-left: 10px; border-left: 4px solid #4CAF50; }
  13. h3 { color: #666; margin: 15px 0 10px; }
  14. .summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin: 20px 0; }
  15. .summary-card { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 25px; border-radius: 12px; text-align: center; }
  16. .summary-card.passed { background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%); }
  17. .summary-card.failed { background: linear-gradient(135deg, #eb3349 0%, #f45c5d 100%); }
  18. .summary-card.rate { background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); }
  19. .summary-card h3 { font-size: 42px; margin-bottom: 8px; color: white; }
  20. .summary-card p { font-size: 14px; opacity: 0.9; }
  21. .test-section { margin: 30px 0; padding: 20px; background: #fafafa; border-radius: 8px; }
  22. .test-type { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 12px; font-weight: bold; margin-right: 10px; }
  23. .test-type.api { background: #e3f2fd; color: #1565c0; }
  24. .test-type.web { background: #f3e5f5; color: #7b1fa2; }
  25. table { width: 100%; border-collapse: collapse; margin: 15px 0; }
  26. th, td { padding: 12px; text-align: left; border-bottom: 1px solid #e0e0e0; }
  27. th { background: #4CAF50; color: white; font-weight: 600; }
  28. tr:hover { background: #f5f5f5; }
  29. .status-passed { color: #4CAF50; font-weight: bold; }
  30. .status-failed { color: #f44336; font-weight: bold; }
  31. .code-block { background: #263238; color: #eceff1; padding: 15px; border-radius: 4px; font-family: 'Consolas', monospace; font-size: 12px; overflow-x: auto; margin: 10px 0; }
  32. .code-block .label { color: #80cbc4; font-weight: bold; }
  33. .timestamp { color: #999; font-size: 12px; margin-top: 30px; text-align: center; }
  34. .screenshot-list { margin: 10px 0; }
  35. .screenshot-list span { display: inline-block; background: #e8f5e9; color: #2e7d32; padding: 4px 8px; border-radius: 4px; font-size: 11px; margin: 2px; }
  36. </style>
  37. </head>
  38. <body>
  39. <div class="container">
  40. <h1>心知益家 - 自动化测试报告</h1>
  41. <div class="summary">
  42. <div class="summary-card">
  43. <h3>70</h3>
  44. <p>总测试数</p>
  45. </div>
  46. <div class="summary-card passed">
  47. <h3>19</h3>
  48. <p>通过 ✅</p>
  49. </div>
  50. <div class="summary-card failed">
  51. <h3>51</h3>
  52. <p>失败 ❌</p>
  53. </div>
  54. <div class="summary-card rate">
  55. <h3>27.1%</h3>
  56. <p>通过率</p>
  57. </div>
  58. </div>
  59. <div class="test-section">
  60. <h2>API接口测试结果(小程序端)</h2>
  61. <p style="color: #666; margin: 10px 0;">测试策略:构造请求数据,调用后端接口,验证响应,不进行UI点击</p>
  62. <table>
  63. <tr>
  64. <th>测试ID</th>
  65. <th>描述</th>
  66. <th>优先级</th>
  67. <th>状态</th>
  68. <th>请求数据</th>
  69. </tr>
  70. <tr>
  71. <td><strong>API-001</strong></td>
  72. <td>家长登录接口</td>
  73. <td>P0</td>
  74. <td class="status-passed">PASSED</td>
  75. <td><code>{"url":"http://192.168.16.18:8080/api/auth/login","method":"POST","headers":{"Content-Type":"application/json"},"body":{"phone":"13800138001","code":"123456","role":"parent"},"timestamp":"2026-04-26T11:22:13.980Z"}</code></td>
  76. </tr>
  77. <tr>
  78. <td><strong>API-002</strong></td>
  79. <td>家长创建任务接口</td>
  80. <td>P0</td>
  81. <td class="status-passed">PASSED</td>
  82. <td><code>{"url":"http://192.168.16.18:8080/api/tasks","method":"POST","headers":{"Content-Type":"application/json"},"body":{"childId":2,"name":"完成语文作业","points":5,"category":"study","deadline":"2026-04-15T18:00:00","description":"完成课本第10页到第15页的练习题"},"timestamp":"2026-04-26T11:22:13.981Z"}</code></td>
  83. </tr>
  84. <tr>
  85. <td><strong>API-003</strong></td>
  86. <td>获取孩子今日任务列表</td>
  87. <td>P0</td>
  88. <td class="status-passed">PASSED</td>
  89. <td><code>{"url":"http://192.168.16.18:8080/api/tasks/today/2","method":"GET","headers":{"Content-Type":"application/json"},"body":{"childId":2,"date":"2026-04-26"},"timestamp":"2026-04-26T11:22:13.982Z"}</code></td>
  90. </tr>
  91. <tr>
  92. <td><strong>API-004</strong></td>
  93. <td>孩子完成任务接口</td>
  94. <td>P0</td>
  95. <td class="status-passed">PASSED</td>
  96. <td><code>{"url":"http://192.168.16.18:8080/api/tasks/1/complete","method":"POST","headers":{"Content-Type":"application/json"},"body":{"taskId":1,"completedAt":"2026-04-26T11:22:13.983Z","proof":{"type":"photo","url":"https://example.com/photo.jpg","description":"已完成作业拍照"}},"timestamp":"2026-04-26T11:22:13.983Z"}</code></td>
  97. </tr>
  98. <tr>
  99. <td><strong>API-005</strong></td>
  100. <td>获取积分记录接口</td>
  101. <td>P0</td>
  102. <td class="status-passed">PASSED</td>
  103. <td><code>{"url":"http://192.168.16.18:8080/api/points/records","method":"GET","headers":{"Content-Type":"application/json"},"body":{"childId":2,"startDate":"2026-04-01","endDate":"2026-04-30"},"timestamp":"2026-04-26T11:22:13.983Z"}</code></td>
  104. </tr>
  105. <tr>
  106. <td><strong>API-006</strong></td>
  107. <td>孩子添加心愿接口</td>
  108. <td>P0</td>
  109. <td class="status-passed">PASSED</td>
  110. <td><code>{"url":"http://192.168.16.18:8080/api/rewards/wishlist","method":"POST","headers":{"Content-Type":"application/json"},"body":{"childId":2,"name":"去游乐园玩","category":"experience","description":"周末全家一起去游乐园"},"timestamp":"2026-04-26T11:22:13.983Z"}</code></td>
  111. </tr>
  112. <tr>
  113. <td><strong>API-007</strong></td>
  114. <td>孩子兑换奖励接口</td>
  115. <td>P0</td>
  116. <td class="status-passed">PASSED</td>
  117. <td><code>{"url":"http://192.168.16.18:8080/api/rewards/1/exchange","method":"POST","headers":{"Content-Type":"application/json"},"body":{"rewardId":1,"childId":2,"pointsUsed":50},"timestamp":"2026-04-26T11:22:13.984Z"}</code></td>
  118. </tr>
  119. <tr>
  120. <td><strong>API-008</strong></td>
  121. <td>家长审批奖励兑换接口</td>
  122. <td>P0</td>
  123. <td class="status-passed">PASSED</td>
  124. <td><code>{"url":"http://192.168.16.18:8080/api/rewards/1/approve","method":"POST","headers":{"Content-Type":"application/json"},"body":{"exchangeId":1,"approved":true,"comment":"同意兑换,表现很好!"},"timestamp":"2026-04-26T11:22:13.984Z"}</code></td>
  125. </tr>
  126. <tr>
  127. <td><strong>API-009</strong></td>
  128. <td>获取连续打卡天数接口</td>
  129. <td>P0</td>
  130. <td class="status-passed">PASSED</td>
  131. <td><code>{"url":"http://192.168.16.18:8080/api/streak/2","method":"GET","headers":{"Content-Type":"application/json"},"body":{"childId":2},"timestamp":"2026-04-26T11:22:13.984Z"}</code></td>
  132. </tr>
  133. <tr>
  134. <td><strong>API-010</strong></td>
  135. <td>获取家庭信息接口</td>
  136. <td>P0</td>
  137. <td class="status-passed">PASSED</td>
  138. <td><code>{"url":"http://192.168.16.18:8080/api/family/info","method":"GET","headers":{"Content-Type":"application/json"},"body":{"familyId":1},"timestamp":"2026-04-26T11:22:13.984Z"}</code></td>
  139. </tr>
  140. <tr>
  141. <td><strong>API-011</strong></td>
  142. <td>指导师首次登录角色选择</td>
  143. <td>P0</td>
  144. <td class="status-passed">PASSED</td>
  145. <td><code>{"url":"http://192.168.16.18:8080/api/auth/role-select","method":"POST","headers":{"Content-Type":"application/json"},"body":{"userId":1,"role":"teacher"},"timestamp":"2026-04-26T11:22:13.986Z"}</code></td>
  146. </tr>
  147. <tr>
  148. <td><strong>API-012</strong></td>
  149. <td>指导师信息录入</td>
  150. <td>P0</td>
  151. <td class="status-passed">PASSED</td>
  152. <td><code>{"url":"http://192.168.16.18:8080/api/user/profile","method":"PUT","headers":{"Content-Type":"application/json"},"body":{"idCard":"110101199001011234","gender":"male","teacherPhoto":"https://example.com/photo.jpg","teacherNo":"TEACHER20260001","certificateImage":"https://example.com/cert.jpg"},"timestamp":"2026-04-26T11:22:13.986Z"}</code></td>
  153. </tr>
  154. <tr>
  155. <td><strong>API-013</strong></td>
  156. <td>指导师查看关联家庭列表</td>
  157. <td>P0</td>
  158. <td class="status-passed">PASSED</td>
  159. <td><code>{"url":"http://192.168.16.18:8080/api/guide/families","method":"GET","headers":{"Content-Type":"application/json"},"body":{"teacherId":1},"timestamp":"2026-04-26T11:22:13.987Z"}</code></td>
  160. </tr>
  161. <tr>
  162. <td><strong>API-014</strong></td>
  163. <td>指导师审核家庭任务</td>
  164. <td>P0</td>
  165. <td class="status-passed">PASSED</td>
  166. <td><code>{"url":"http://192.168.16.18:8080/api/guide/tasks/1/review","method":"POST","headers":{"Content-Type":"application/json"},"body":{"taskId":1,"approved":true,"comment":"审核通过"},"timestamp":"2026-04-26T11:22:13.987Z"}</code></td>
  167. </tr>
  168. <tr>
  169. <td><strong>API-015</strong></td>
  170. <td>舒尔特方格开始游戏</td>
  171. <td>P1</td>
  172. <td class="status-passed">PASSED</td>
  173. <td><code>{"url":"http://192.168.16.18:8080/api/mini-games/schulte/start","method":"POST","headers":{"Content-Type":"application/json"},"body":{"childId":2,"gridSize":5},"timestamp":"2026-04-26T11:22:13.987Z"}</code></td>
  174. </tr>
  175. <tr>
  176. <td><strong>API-016</strong></td>
  177. <td>猜数字(1a2b)开始游戏</td>
  178. <td>P1</td>
  179. <td class="status-passed">PASSED</td>
  180. <td><code>{"url":"http://192.168.16.18:8080/api/mini-games/1a2b/start","method":"POST","headers":{"Content-Type":"application/json"},"body":{"childId":2},"timestamp":"2026-04-26T11:22:13.988Z"}</code></td>
  181. </tr>
  182. <tr>
  183. <td><strong>API-017</strong></td>
  184. <td>创建任务模板</td>
  185. <td>P1</td>
  186. <td class="status-passed">PASSED</td>
  187. <td><code>{"url":"http://192.168.16.18:8080/api/task-templates","method":"POST","headers":{"Content-Type":"application/json"},"body":{"title":"每日阅读","description":"阅读30分钟课外书籍","category":"study","points":3,"duration":30,"completeTypes":["checkin","text"]},"timestamp":"2026-04-26T11:22:13.988Z"}</code></td>
  188. </tr>
  189. <tr>
  190. <td><strong>API-018</strong></td>
  191. <td>创建小游戏类任务</td>
  192. <td>P1</td>
  193. <td class="status-passed">PASSED</td>
  194. <td><code>{"url":"http://192.168.16.18:8080/api/tasks","method":"POST","headers":{"Content-Type":"application/json"},"body":{"childId":2,"title":"完成舒尔特方格训练","category":"小游戏类","minigameCode":"schulte","points":5,"deadline":"2026-04-20T18:00:00","needReview":0},"timestamp":"2026-04-26T11:22:13.988Z"}</code></td>
  195. </tr>
  196. <tr>
  197. <td><strong>API-019</strong></td>
  198. <td>完成小游戏任务获积分</td>
  199. <td>P1</td>
  200. <td class="status-passed">PASSED</td>
  201. <td><code>{"url":"http://192.168.16.18:8080/api/tasks/1/complete","method":"POST","headers":{"Content-Type":"application/json"},"body":{"childId":2,"completionTime":45,"score":80},"timestamp":"2026-04-26T11:22:13.989Z"}</code></td>
  202. </tr>
  203. </table>
  204. <h3>API测试数据汇总</h3>
  205. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  206. <strong>[API-001] 家长登录接口</strong>
  207. <div class="code-block">
  208. <div><span class="label">请求:</span></div>
  209. <pre>{
  210. "url": "http://192.168.16.18:8080/api/auth/login",
  211. "method": "POST",
  212. "headers": {
  213. "Content-Type": "application/json"
  214. },
  215. "body": {
  216. "phone": "13800138001",
  217. "code": "123456",
  218. "role": "parent"
  219. },
  220. "timestamp": "2026-04-26T11:22:13.980Z"
  221. }</pre>
  222. <div><span class="label">响应:</span></div>
  223. <pre>{
  224. "status": 200,
  225. "statusText": "OK",
  226. "data": {
  227. "code": 200,
  228. "message": "success",
  229. "data": {}
  230. },
  231. "duration": 1,
  232. "timestamp": "2026-04-26T11:22:13.981Z"
  233. }</pre>
  234. </div>
  235. </div>
  236. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  237. <strong>[API-002] 家长创建任务接口</strong>
  238. <div class="code-block">
  239. <div><span class="label">请求:</span></div>
  240. <pre>{
  241. "url": "http://192.168.16.18:8080/api/tasks",
  242. "method": "POST",
  243. "headers": {
  244. "Content-Type": "application/json"
  245. },
  246. "body": {
  247. "childId": 2,
  248. "name": "完成语文作业",
  249. "points": 5,
  250. "category": "study",
  251. "deadline": "2026-04-15T18:00:00",
  252. "description": "完成课本第10页到第15页的练习题"
  253. },
  254. "timestamp": "2026-04-26T11:22:13.981Z"
  255. }</pre>
  256. <div><span class="label">响应:</span></div>
  257. <pre>{
  258. "status": 200,
  259. "statusText": "OK",
  260. "data": {
  261. "code": 200,
  262. "message": "success",
  263. "data": {}
  264. },
  265. "duration": 0,
  266. "timestamp": "2026-04-26T11:22:13.981Z"
  267. }</pre>
  268. </div>
  269. </div>
  270. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  271. <strong>[API-003] 获取孩子今日任务列表</strong>
  272. <div class="code-block">
  273. <div><span class="label">请求:</span></div>
  274. <pre>{
  275. "url": "http://192.168.16.18:8080/api/tasks/today/2",
  276. "method": "GET",
  277. "headers": {
  278. "Content-Type": "application/json"
  279. },
  280. "body": {
  281. "childId": 2,
  282. "date": "2026-04-26"
  283. },
  284. "timestamp": "2026-04-26T11:22:13.982Z"
  285. }</pre>
  286. <div><span class="label">响应:</span></div>
  287. <pre>{
  288. "status": 200,
  289. "statusText": "OK",
  290. "data": {
  291. "code": 200,
  292. "message": "success",
  293. "data": {}
  294. },
  295. "duration": 0,
  296. "timestamp": "2026-04-26T11:22:13.982Z"
  297. }</pre>
  298. </div>
  299. </div>
  300. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  301. <strong>[API-004] 孩子完成任务接口</strong>
  302. <div class="code-block">
  303. <div><span class="label">请求:</span></div>
  304. <pre>{
  305. "url": "http://192.168.16.18:8080/api/tasks/1/complete",
  306. "method": "POST",
  307. "headers": {
  308. "Content-Type": "application/json"
  309. },
  310. "body": {
  311. "taskId": 1,
  312. "completedAt": "2026-04-26T11:22:13.983Z",
  313. "proof": {
  314. "type": "photo",
  315. "url": "https://example.com/photo.jpg",
  316. "description": "已完成作业拍照"
  317. }
  318. },
  319. "timestamp": "2026-04-26T11:22:13.983Z"
  320. }</pre>
  321. <div><span class="label">响应:</span></div>
  322. <pre>{
  323. "status": 200,
  324. "statusText": "OK",
  325. "data": {
  326. "code": 200,
  327. "message": "success",
  328. "data": {}
  329. },
  330. "duration": 0,
  331. "timestamp": "2026-04-26T11:22:13.983Z"
  332. }</pre>
  333. </div>
  334. </div>
  335. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  336. <strong>[API-005] 获取积分记录接口</strong>
  337. <div class="code-block">
  338. <div><span class="label">请求:</span></div>
  339. <pre>{
  340. "url": "http://192.168.16.18:8080/api/points/records",
  341. "method": "GET",
  342. "headers": {
  343. "Content-Type": "application/json"
  344. },
  345. "body": {
  346. "childId": 2,
  347. "startDate": "2026-04-01",
  348. "endDate": "2026-04-30"
  349. },
  350. "timestamp": "2026-04-26T11:22:13.983Z"
  351. }</pre>
  352. <div><span class="label">响应:</span></div>
  353. <pre>{
  354. "status": 200,
  355. "statusText": "OK",
  356. "data": {
  357. "code": 200,
  358. "message": "success",
  359. "data": {}
  360. },
  361. "duration": 0,
  362. "timestamp": "2026-04-26T11:22:13.983Z"
  363. }</pre>
  364. </div>
  365. </div>
  366. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  367. <strong>[API-006] 孩子添加心愿接口</strong>
  368. <div class="code-block">
  369. <div><span class="label">请求:</span></div>
  370. <pre>{
  371. "url": "http://192.168.16.18:8080/api/rewards/wishlist",
  372. "method": "POST",
  373. "headers": {
  374. "Content-Type": "application/json"
  375. },
  376. "body": {
  377. "childId": 2,
  378. "name": "去游乐园玩",
  379. "category": "experience",
  380. "description": "周末全家一起去游乐园"
  381. },
  382. "timestamp": "2026-04-26T11:22:13.983Z"
  383. }</pre>
  384. <div><span class="label">响应:</span></div>
  385. <pre>{
  386. "status": 200,
  387. "statusText": "OK",
  388. "data": {
  389. "code": 200,
  390. "message": "success",
  391. "data": {}
  392. },
  393. "duration": 0,
  394. "timestamp": "2026-04-26T11:22:13.983Z"
  395. }</pre>
  396. </div>
  397. </div>
  398. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  399. <strong>[API-007] 孩子兑换奖励接口</strong>
  400. <div class="code-block">
  401. <div><span class="label">请求:</span></div>
  402. <pre>{
  403. "url": "http://192.168.16.18:8080/api/rewards/1/exchange",
  404. "method": "POST",
  405. "headers": {
  406. "Content-Type": "application/json"
  407. },
  408. "body": {
  409. "rewardId": 1,
  410. "childId": 2,
  411. "pointsUsed": 50
  412. },
  413. "timestamp": "2026-04-26T11:22:13.984Z"
  414. }</pre>
  415. <div><span class="label">响应:</span></div>
  416. <pre>{
  417. "status": 200,
  418. "statusText": "OK",
  419. "data": {
  420. "code": 200,
  421. "message": "success",
  422. "data": {}
  423. },
  424. "duration": 0,
  425. "timestamp": "2026-04-26T11:22:13.984Z"
  426. }</pre>
  427. </div>
  428. </div>
  429. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  430. <strong>[API-008] 家长审批奖励兑换接口</strong>
  431. <div class="code-block">
  432. <div><span class="label">请求:</span></div>
  433. <pre>{
  434. "url": "http://192.168.16.18:8080/api/rewards/1/approve",
  435. "method": "POST",
  436. "headers": {
  437. "Content-Type": "application/json"
  438. },
  439. "body": {
  440. "exchangeId": 1,
  441. "approved": true,
  442. "comment": "同意兑换,表现很好!"
  443. },
  444. "timestamp": "2026-04-26T11:22:13.984Z"
  445. }</pre>
  446. <div><span class="label">响应:</span></div>
  447. <pre>{
  448. "status": 200,
  449. "statusText": "OK",
  450. "data": {
  451. "code": 200,
  452. "message": "success",
  453. "data": {}
  454. },
  455. "duration": 0,
  456. "timestamp": "2026-04-26T11:22:13.984Z"
  457. }</pre>
  458. </div>
  459. </div>
  460. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  461. <strong>[API-009] 获取连续打卡天数接口</strong>
  462. <div class="code-block">
  463. <div><span class="label">请求:</span></div>
  464. <pre>{
  465. "url": "http://192.168.16.18:8080/api/streak/2",
  466. "method": "GET",
  467. "headers": {
  468. "Content-Type": "application/json"
  469. },
  470. "body": {
  471. "childId": 2
  472. },
  473. "timestamp": "2026-04-26T11:22:13.984Z"
  474. }</pre>
  475. <div><span class="label">响应:</span></div>
  476. <pre>{
  477. "status": 200,
  478. "statusText": "OK",
  479. "data": {
  480. "code": 200,
  481. "message": "success",
  482. "data": {}
  483. },
  484. "duration": 0,
  485. "timestamp": "2026-04-26T11:22:13.984Z"
  486. }</pre>
  487. </div>
  488. </div>
  489. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  490. <strong>[API-010] 获取家庭信息接口</strong>
  491. <div class="code-block">
  492. <div><span class="label">请求:</span></div>
  493. <pre>{
  494. "url": "http://192.168.16.18:8080/api/family/info",
  495. "method": "GET",
  496. "headers": {
  497. "Content-Type": "application/json"
  498. },
  499. "body": {
  500. "familyId": 1
  501. },
  502. "timestamp": "2026-04-26T11:22:13.984Z"
  503. }</pre>
  504. <div><span class="label">响应:</span></div>
  505. <pre>{
  506. "status": 200,
  507. "statusText": "OK",
  508. "data": {
  509. "code": 200,
  510. "message": "success",
  511. "data": {}
  512. },
  513. "duration": 1,
  514. "timestamp": "2026-04-26T11:22:13.985Z"
  515. }</pre>
  516. </div>
  517. </div>
  518. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  519. <strong>[API-011] 指导师首次登录角色选择</strong>
  520. <div class="code-block">
  521. <div><span class="label">请求:</span></div>
  522. <pre>{
  523. "url": "http://192.168.16.18:8080/api/auth/role-select",
  524. "method": "POST",
  525. "headers": {
  526. "Content-Type": "application/json"
  527. },
  528. "body": {
  529. "userId": 1,
  530. "role": "teacher"
  531. },
  532. "timestamp": "2026-04-26T11:22:13.986Z"
  533. }</pre>
  534. <div><span class="label">响应:</span></div>
  535. <pre>{
  536. "status": 200,
  537. "statusText": "OK",
  538. "data": {
  539. "code": 200,
  540. "message": "success",
  541. "data": {}
  542. },
  543. "duration": 0,
  544. "timestamp": "2026-04-26T11:22:13.986Z"
  545. }</pre>
  546. </div>
  547. </div>
  548. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  549. <strong>[API-012] 指导师信息录入</strong>
  550. <div class="code-block">
  551. <div><span class="label">请求:</span></div>
  552. <pre>{
  553. "url": "http://192.168.16.18:8080/api/user/profile",
  554. "method": "PUT",
  555. "headers": {
  556. "Content-Type": "application/json"
  557. },
  558. "body": {
  559. "idCard": "110101199001011234",
  560. "gender": "male",
  561. "teacherPhoto": "https://example.com/photo.jpg",
  562. "teacherNo": "TEACHER20260001",
  563. "certificateImage": "https://example.com/cert.jpg"
  564. },
  565. "timestamp": "2026-04-26T11:22:13.986Z"
  566. }</pre>
  567. <div><span class="label">响应:</span></div>
  568. <pre>{
  569. "status": 200,
  570. "statusText": "OK",
  571. "data": {
  572. "code": 200,
  573. "message": "success",
  574. "data": {}
  575. },
  576. "duration": 0,
  577. "timestamp": "2026-04-26T11:22:13.986Z"
  578. }</pre>
  579. </div>
  580. </div>
  581. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  582. <strong>[API-013] 指导师查看关联家庭列表</strong>
  583. <div class="code-block">
  584. <div><span class="label">请求:</span></div>
  585. <pre>{
  586. "url": "http://192.168.16.18:8080/api/guide/families",
  587. "method": "GET",
  588. "headers": {
  589. "Content-Type": "application/json"
  590. },
  591. "body": {
  592. "teacherId": 1
  593. },
  594. "timestamp": "2026-04-26T11:22:13.987Z"
  595. }</pre>
  596. <div><span class="label">响应:</span></div>
  597. <pre>{
  598. "status": 200,
  599. "statusText": "OK",
  600. "data": {
  601. "code": 200,
  602. "message": "success",
  603. "data": {}
  604. },
  605. "duration": 0,
  606. "timestamp": "2026-04-26T11:22:13.987Z"
  607. }</pre>
  608. </div>
  609. </div>
  610. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  611. <strong>[API-014] 指导师审核家庭任务</strong>
  612. <div class="code-block">
  613. <div><span class="label">请求:</span></div>
  614. <pre>{
  615. "url": "http://192.168.16.18:8080/api/guide/tasks/1/review",
  616. "method": "POST",
  617. "headers": {
  618. "Content-Type": "application/json"
  619. },
  620. "body": {
  621. "taskId": 1,
  622. "approved": true,
  623. "comment": "审核通过"
  624. },
  625. "timestamp": "2026-04-26T11:22:13.987Z"
  626. }</pre>
  627. <div><span class="label">响应:</span></div>
  628. <pre>{
  629. "status": 200,
  630. "statusText": "OK",
  631. "data": {
  632. "code": 200,
  633. "message": "success",
  634. "data": {}
  635. },
  636. "duration": 0,
  637. "timestamp": "2026-04-26T11:22:13.987Z"
  638. }</pre>
  639. </div>
  640. </div>
  641. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  642. <strong>[API-015] 舒尔特方格开始游戏</strong>
  643. <div class="code-block">
  644. <div><span class="label">请求:</span></div>
  645. <pre>{
  646. "url": "http://192.168.16.18:8080/api/mini-games/schulte/start",
  647. "method": "POST",
  648. "headers": {
  649. "Content-Type": "application/json"
  650. },
  651. "body": {
  652. "childId": 2,
  653. "gridSize": 5
  654. },
  655. "timestamp": "2026-04-26T11:22:13.987Z"
  656. }</pre>
  657. <div><span class="label">响应:</span></div>
  658. <pre>{
  659. "status": 200,
  660. "statusText": "OK",
  661. "data": {
  662. "code": 200,
  663. "message": "success",
  664. "data": {}
  665. },
  666. "duration": 0,
  667. "timestamp": "2026-04-26T11:22:13.987Z"
  668. }</pre>
  669. </div>
  670. </div>
  671. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  672. <strong>[API-016] 猜数字(1a2b)开始游戏</strong>
  673. <div class="code-block">
  674. <div><span class="label">请求:</span></div>
  675. <pre>{
  676. "url": "http://192.168.16.18:8080/api/mini-games/1a2b/start",
  677. "method": "POST",
  678. "headers": {
  679. "Content-Type": "application/json"
  680. },
  681. "body": {
  682. "childId": 2
  683. },
  684. "timestamp": "2026-04-26T11:22:13.988Z"
  685. }</pre>
  686. <div><span class="label">响应:</span></div>
  687. <pre>{
  688. "status": 200,
  689. "statusText": "OK",
  690. "data": {
  691. "code": 200,
  692. "message": "success",
  693. "data": {}
  694. },
  695. "duration": 0,
  696. "timestamp": "2026-04-26T11:22:13.988Z"
  697. }</pre>
  698. </div>
  699. </div>
  700. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  701. <strong>[API-017] 创建任务模板</strong>
  702. <div class="code-block">
  703. <div><span class="label">请求:</span></div>
  704. <pre>{
  705. "url": "http://192.168.16.18:8080/api/task-templates",
  706. "method": "POST",
  707. "headers": {
  708. "Content-Type": "application/json"
  709. },
  710. "body": {
  711. "title": "每日阅读",
  712. "description": "阅读30分钟课外书籍",
  713. "category": "study",
  714. "points": 3,
  715. "duration": 30,
  716. "completeTypes": [
  717. "checkin",
  718. "text"
  719. ]
  720. },
  721. "timestamp": "2026-04-26T11:22:13.988Z"
  722. }</pre>
  723. <div><span class="label">响应:</span></div>
  724. <pre>{
  725. "status": 200,
  726. "statusText": "OK",
  727. "data": {
  728. "code": 200,
  729. "message": "success",
  730. "data": {}
  731. },
  732. "duration": 0,
  733. "timestamp": "2026-04-26T11:22:13.988Z"
  734. }</pre>
  735. </div>
  736. </div>
  737. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  738. <strong>[API-018] 创建小游戏类任务</strong>
  739. <div class="code-block">
  740. <div><span class="label">请求:</span></div>
  741. <pre>{
  742. "url": "http://192.168.16.18:8080/api/tasks",
  743. "method": "POST",
  744. "headers": {
  745. "Content-Type": "application/json"
  746. },
  747. "body": {
  748. "childId": 2,
  749. "title": "完成舒尔特方格训练",
  750. "category": "小游戏类",
  751. "minigameCode": "schulte",
  752. "points": 5,
  753. "deadline": "2026-04-20T18:00:00",
  754. "needReview": 0
  755. },
  756. "timestamp": "2026-04-26T11:22:13.988Z"
  757. }</pre>
  758. <div><span class="label">响应:</span></div>
  759. <pre>{
  760. "status": 200,
  761. "statusText": "OK",
  762. "data": {
  763. "code": 200,
  764. "message": "success",
  765. "data": {}
  766. },
  767. "duration": 1,
  768. "timestamp": "2026-04-26T11:22:13.989Z"
  769. }</pre>
  770. </div>
  771. </div>
  772. <div style="margin: 15px 0; padding: 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px;">
  773. <strong>[API-019] 完成小游戏任务获积分</strong>
  774. <div class="code-block">
  775. <div><span class="label">请求:</span></div>
  776. <pre>{
  777. "url": "http://192.168.16.18:8080/api/tasks/1/complete",
  778. "method": "POST",
  779. "headers": {
  780. "Content-Type": "application/json"
  781. },
  782. "body": {
  783. "childId": 2,
  784. "completionTime": 45,
  785. "score": 80
  786. },
  787. "timestamp": "2026-04-26T11:22:13.989Z"
  788. }</pre>
  789. <div><span class="label">响应:</span></div>
  790. <pre>{
  791. "status": 200,
  792. "statusText": "OK",
  793. "data": {
  794. "code": 200,
  795. "message": "success",
  796. "data": {}
  797. },
  798. "duration": 0,
  799. "timestamp": "2026-04-26T11:22:13.989Z"
  800. }</pre>
  801. </div>
  802. </div>
  803. </div>
  804. <div class="test-section">
  805. <h2>Web浏览器测试结果(管理后台)</h2>
  806. <p style="color: #666; margin: 10px 0;">测试策略:浏览器自动化测试,管理员和指导师登录,测试过程截图</p>
  807. <p style="color: #999; font-size: 12px;">测试账号:管理员 N/A / 指导师 N/A</p>
  808. <table>
  809. <tr>
  810. <th>测试ID</th>
  811. <th>描述</th>
  812. <th>优先级</th>
  813. <th>状态</th>
  814. <th>截图</th>
  815. </tr>
  816. <tr>
  817. <td><strong>WEB-001</strong></td>
  818. <td>管理员登录Web后台</td>
  819. <td>P0</td>
  820. <td class="status-failed">FAILED</td>
  821. <td class="screenshot-list">-</td>
  822. </tr>
  823. <tr>
  824. <td><strong>WEB-002</strong></td>
  825. <td>管理员查看用户列表</td>
  826. <td>P0</td>
  827. <td class="status-failed">FAILED</td>
  828. <td class="screenshot-list">-</td>
  829. </tr>
  830. <tr>
  831. <td><strong>WEB-003</strong></td>
  832. <td>管理员查看任务统计</td>
  833. <td>P0</td>
  834. <td class="status-failed">FAILED</td>
  835. <td class="screenshot-list">-</td>
  836. </tr>
  837. <tr>
  838. <td><strong>WEB-004</strong></td>
  839. <td>指导师登录Web后台</td>
  840. <td>P0</td>
  841. <td class="status-failed">FAILED</td>
  842. <td class="screenshot-list">-</td>
  843. </tr>
  844. <tr>
  845. <td><strong>WEB-005</strong></td>
  846. <td>指导师查看分配的家庭</td>
  847. <td>P0</td>
  848. <td class="status-failed">FAILED</td>
  849. <td class="screenshot-list">-</td>
  850. </tr>
  851. <tr>
  852. <td><strong>WEB-006</strong></td>
  853. <td>管理员审核指导师注册</td>
  854. <td>P1</td>
  855. <td class="status-failed">FAILED</td>
  856. <td class="screenshot-list">-</td>
  857. </tr>
  858. <tr>
  859. <td><strong>WEB-007</strong></td>
  860. <td>管理员查看街道统计</td>
  861. <td>P1</td>
  862. <td class="status-failed">FAILED</td>
  863. <td class="screenshot-list">-</td>
  864. </tr>
  865. <tr>
  866. <td><strong>WEB-008</strong></td>
  867. <td>指导师审核家庭任务</td>
  868. <td>P0</td>
  869. <td class="status-failed">FAILED</td>
  870. <td class="screenshot-list">-</td>
  871. </tr>
  872. <tr>
  873. <td><strong>WEB-009</strong></td>
  874. <td>指导师查看家庭任务详情</td>
  875. <td>P1</td>
  876. <td class="status-failed">FAILED</td>
  877. <td class="screenshot-list">-</td>
  878. </tr>
  879. <tr>
  880. <td><strong>WEB-010</strong></td>
  881. <td>管理员查看用户列表</td>
  882. <td>P0</td>
  883. <td class="status-failed">FAILED</td>
  884. <td class="screenshot-list">-</td>
  885. </tr>
  886. <tr>
  887. <td><strong>WEB-011</strong></td>
  888. <td>管理员查看用户详情</td>
  889. <td>P0</td>
  890. <td class="status-failed">FAILED</td>
  891. <td class="screenshot-list">-</td>
  892. </tr>
  893. <tr>
  894. <td><strong>WEB-012</strong></td>
  895. <td>管理员编辑用户信息</td>
  896. <td>P0</td>
  897. <td class="status-failed">FAILED</td>
  898. <td class="screenshot-list">-</td>
  899. </tr>
  900. <tr>
  901. <td><strong>WEB-013</strong></td>
  902. <td>管理员停用孩子账号</td>
  903. <td>P0</td>
  904. <td class="status-failed">FAILED</td>
  905. <td class="screenshot-list">-</td>
  906. </tr>
  907. <tr>
  908. <td><strong>WEB-014</strong></td>
  909. <td>管理员启用孩子账号</td>
  910. <td>P0</td>
  911. <td class="status-failed">FAILED</td>
  912. <td class="screenshot-list">-</td>
  913. </tr>
  914. <tr>
  915. <td><strong>WEB-015</strong></td>
  916. <td>管理员创建任务</td>
  917. <td>P0</td>
  918. <td class="status-failed">FAILED</td>
  919. <td class="screenshot-list">-</td>
  920. </tr>
  921. <tr>
  922. <td><strong>WEB-016</strong></td>
  923. <td>管理员设置任务分类</td>
  924. <td>P0</td>
  925. <td class="status-failed">FAILED</td>
  926. <td class="screenshot-list">-</td>
  927. </tr>
  928. <tr>
  929. <td><strong>WEB-017</strong></td>
  930. <td>管理员设置任务积分</td>
  931. <td>P0</td>
  932. <td class="status-failed">FAILED</td>
  933. <td class="screenshot-list">-</td>
  934. </tr>
  935. <tr>
  936. <td><strong>WEB-018</strong></td>
  937. <td>管理员设置任务截止时间</td>
  938. <td>P0</td>
  939. <td class="status-failed">FAILED</td>
  940. <td class="screenshot-list">-</td>
  941. </tr>
  942. <tr>
  943. <td><strong>WEB-019</strong></td>
  944. <td>管理员编辑任务</td>
  945. <td>P0</td>
  946. <td class="status-failed">FAILED</td>
  947. <td class="screenshot-list">-</td>
  948. </tr>
  949. <tr>
  950. <td><strong>WEB-020</strong></td>
  951. <td>管理员删除任务</td>
  952. <td>P0</td>
  953. <td class="status-failed">FAILED</td>
  954. <td class="screenshot-list">-</td>
  955. </tr>
  956. <tr>
  957. <td><strong>WEB-021</strong></td>
  958. <td>管理员使用任务模板</td>
  959. <td>P1</td>
  960. <td class="status-failed">FAILED</td>
  961. <td class="screenshot-list">-</td>
  962. </tr>
  963. <tr>
  964. <td><strong>WEB-022</strong></td>
  965. <td>管理员查看任务历史</td>
  966. <td>P0</td>
  967. <td class="status-failed">FAILED</td>
  968. <td class="screenshot-list">-</td>
  969. </tr>
  970. <tr>
  971. <td><strong>WEB-023</strong></td>
  972. <td>管理员查看任务统计</td>
  973. <td>P0</td>
  974. <td class="status-failed">FAILED</td>
  975. <td class="screenshot-list">-</td>
  976. </tr>
  977. <tr>
  978. <td><strong>WEB-024</strong></td>
  979. <td>管理员查看奖励列表</td>
  980. <td>P0</td>
  981. <td class="status-failed">FAILED</td>
  982. <td class="screenshot-list">-</td>
  983. </tr>
  984. <tr>
  985. <td><strong>WEB-025</strong></td>
  986. <td>管理员创建奖励</td>
  987. <td>P0</td>
  988. <td class="status-failed">FAILED</td>
  989. <td class="screenshot-list">-</td>
  990. </tr>
  991. <tr>
  992. <td><strong>WEB-026</strong></td>
  993. <td>管理员设置奖励分类</td>
  994. <td>P0</td>
  995. <td class="status-failed">FAILED</td>
  996. <td class="screenshot-list">-</td>
  997. </tr>
  998. <tr>
  999. <td><strong>WEB-027</strong></td>
  1000. <td>管理员编辑奖励</td>
  1001. <td>P2</td>
  1002. <td class="status-failed">FAILED</td>
  1003. <td class="screenshot-list">-</td>
  1004. </tr>
  1005. <tr>
  1006. <td><strong>WEB-028</strong></td>
  1007. <td>管理员删除奖励</td>
  1008. <td>P2</td>
  1009. <td class="status-failed">FAILED</td>
  1010. <td class="screenshot-list">-</td>
  1011. </tr>
  1012. <tr>
  1013. <td><strong>WEB-029</strong></td>
  1014. <td>管理员查看奖励模板</td>
  1015. <td>P0</td>
  1016. <td class="status-failed">FAILED</td>
  1017. <td class="screenshot-list">-</td>
  1018. </tr>
  1019. <tr>
  1020. <td><strong>WEB-030</strong></td>
  1021. <td>管理员查看奖励兑换进度</td>
  1022. <td>P0</td>
  1023. <td class="status-failed">FAILED</td>
  1024. <td class="screenshot-list">-</td>
  1025. </tr>
  1026. <tr>
  1027. <td><strong>WEB-031</strong></td>
  1028. <td>管理员查看家庭列表</td>
  1029. <td>P0</td>
  1030. <td class="status-failed">FAILED</td>
  1031. <td class="screenshot-list">-</td>
  1032. </tr>
  1033. <tr>
  1034. <td><strong>WEB-032</strong></td>
  1035. <td>管理员查看家庭详情</td>
  1036. <td>P0</td>
  1037. <td class="status-failed">FAILED</td>
  1038. <td class="screenshot-list">-</td>
  1039. </tr>
  1040. <tr>
  1041. <td><strong>WEB-033</strong></td>
  1042. <td>管理员编辑家庭信息</td>
  1043. <td>P1</td>
  1044. <td class="status-failed">FAILED</td>
  1045. <td class="screenshot-list">-</td>
  1046. </tr>
  1047. <tr>
  1048. <td><strong>WEB-034</strong></td>
  1049. <td>管理员删除家庭</td>
  1050. <td>P1</td>
  1051. <td class="status-failed">FAILED</td>
  1052. <td class="screenshot-list">-</td>
  1053. </tr>
  1054. <tr>
  1055. <td><strong>WEB-035</strong></td>
  1056. <td>管理员查看孩子管理</td>
  1057. <td>P0</td>
  1058. <td class="status-failed">FAILED</td>
  1059. <td class="screenshot-list">-</td>
  1060. </tr>
  1061. <tr>
  1062. <td><strong>WEB-036</strong></td>
  1063. <td>管理员查看积分管理</td>
  1064. <td>P0</td>
  1065. <td class="status-failed">FAILED</td>
  1066. <td class="screenshot-list">-</td>
  1067. </tr>
  1068. <tr>
  1069. <td><strong>WEB-037</strong></td>
  1070. <td>管理员系统设置入口</td>
  1071. <td>P0</td>
  1072. <td class="status-failed">FAILED</td>
  1073. <td class="screenshot-list">-</td>
  1074. </tr>
  1075. <tr>
  1076. <td><strong>WEB-038</strong></td>
  1077. <td>管理员操作日志查看</td>
  1078. <td>P1</td>
  1079. <td class="status-failed">FAILED</td>
  1080. <td class="screenshot-list">-</td>
  1081. </tr>
  1082. <tr>
  1083. <td><strong>WEB-039</strong></td>
  1084. <td>管理员套餐审核</td>
  1085. <td>P1</td>
  1086. <td class="status-failed">FAILED</td>
  1087. <td class="screenshot-list">-</td>
  1088. </tr>
  1089. <tr>
  1090. <td><strong>WEB-040</strong></td>
  1091. <td>指导师登录Web后台</td>
  1092. <td>P0</td>
  1093. <td class="status-failed">FAILED</td>
  1094. <td class="screenshot-list">-</td>
  1095. </tr>
  1096. <tr>
  1097. <td><strong>WEB-041</strong></td>
  1098. <td>指导师查看我的家庭</td>
  1099. <td>P0</td>
  1100. <td class="status-failed">FAILED</td>
  1101. <td class="screenshot-list">-</td>
  1102. </tr>
  1103. <tr>
  1104. <td><strong>WEB-042</strong></td>
  1105. <td>指导师查看家庭任务详情</td>
  1106. <td>P0</td>
  1107. <td class="status-failed">FAILED</td>
  1108. <td class="screenshot-list">-</td>
  1109. </tr>
  1110. <tr>
  1111. <td><strong>WEB-043</strong></td>
  1112. <td>指导师审核任务</td>
  1113. <td>P0</td>
  1114. <td class="status-failed">FAILED</td>
  1115. <td class="screenshot-list">-</td>
  1116. </tr>
  1117. <tr>
  1118. <td><strong>WEB-044</strong></td>
  1119. <td>指导师任务审核通过</td>
  1120. <td>P0</td>
  1121. <td class="status-failed">FAILED</td>
  1122. <td class="screenshot-list">-</td>
  1123. </tr>
  1124. <tr>
  1125. <td><strong>WEB-045</strong></td>
  1126. <td>指导师任务审核拒绝</td>
  1127. <td>P0</td>
  1128. <td class="status-failed">FAILED</td>
  1129. <td class="screenshot-list">-</td>
  1130. </tr>
  1131. <tr>
  1132. <td><strong>WEB-046</strong></td>
  1133. <td>管理员登出</td>
  1134. <td>P0</td>
  1135. <td class="status-failed">FAILED</td>
  1136. <td class="screenshot-list">-</td>
  1137. </tr>
  1138. <tr>
  1139. <td><strong>WEB-047</strong></td>
  1140. <td>SQL注入测试</td>
  1141. <td>P0</td>
  1142. <td class="status-failed">FAILED</td>
  1143. <td class="screenshot-list">-</td>
  1144. </tr>
  1145. <tr>
  1146. <td><strong>WEB-048</strong></td>
  1147. <td>XSS测试</td>
  1148. <td>P0</td>
  1149. <td class="status-failed">FAILED</td>
  1150. <td class="screenshot-list">-</td>
  1151. </tr>
  1152. <tr>
  1153. <td><strong>WEB-049</strong></td>
  1154. <td>无效手机号测试</td>
  1155. <td>P0</td>
  1156. <td class="status-failed">FAILED</td>
  1157. <td class="screenshot-list">-</td>
  1158. </tr>
  1159. <tr>
  1160. <td><strong>WEB-050</strong></td>
  1161. <td>无效身份证测试</td>
  1162. <td>P0</td>
  1163. <td class="status-failed">FAILED</td>
  1164. <td class="screenshot-list">-</td>
  1165. </tr>
  1166. <tr>
  1167. <td><strong>WEB-051</strong></td>
  1168. <td>积分超范围测试</td>
  1169. <td>P0</td>
  1170. <td class="status-failed">FAILED</td>
  1171. <td class="screenshot-list">-</td>
  1172. </tr>
  1173. </table>
  1174. </div>
  1175. <p class="timestamp">报告生成时间: 2026-04-26T11:22:14.019Z</p>
  1176. </div>
  1177. </body>
  1178. </html>