|
|
94138ba7f4
|
test(e2e): mobile 视口测试 (375x812) + 扩展登录态路由
完整测试覆盖 (49 路由, 0 崩溃):
- 公开 desktop: 18/18 ✓
- 登录态 desktop: 17/17 ✓ (含 orderdetail/paynow/view-ticket/ocr-scan/renew-*)
- mobile 视口: 14/14 ✓ (仅 /me 4px RenderFlex 溢出, 无害布局警告)
修复汇总 (本轮自动化发现+修复):
1. download Scrollbar 缺 ScrollPosition -> primary:true
2. contact-stores initState dispose 后 setState -> mounted 保护
3. buy-service onGenerateRoute pathElements 越界 RangeError -> 长度检查
4. add_remove_button/shopping_cart_* cartInfo 误加 ! (nullfix 脚本)
5. checkout table_token(tableNumber!) 无判空
|
2026-08-03 02:01:17 +08:00 |
|
|
|
33b54fe454
|
feat(e2e): autologin patch (dev) + 登录态路由测试脚本
- util_web devAutologin: localStorage[_test_token]=user|pass -> 登录API写Hive+dispatch currentUser
- 延迟3s执行等 Flutter/Hive ready (否则 httpPost hang)
- main.dart 调用 devAutologin
- run_auth.js: 注入token遍历登录态路由
- 已验证: autologin API 200 OK
|
2026-08-03 01:50:12 +08:00 |
|
|
|
901e42a41b
|
fix(runtime): onGenerateRoute pathElements 越界 RangeError
- buy-service/renew-minioffice 加长度检查 (pathElements.length >= 4/3)
- 根因: Flutter web 深链接渐进式路径解析, onGenerateRoute 被调用多次,
pathElements 递增 ([,buy-service] -> [,buy-service,1] -> 完整),
前几次路径短但 pathElements[1]已匹配 -> int.parse([2])/[3] 越界
- 直接访问/刷新 /buy-service/x/y, /renew-minioffice/x 时崩溃
- 恢复 buy_service 实验代码 (data 校验 + mounted 保留)
|
2026-08-02 00:13:33 +08:00 |
|
|
|
af8934fe7f
|
diag: FlutterError.onError 加 CK_CTX (widget 上下文) 定位 RangeError 来源
|
2026-08-01 23:35:34 +08:00 |
|
|
|
1d4028f486
|
fix(compile): buy_service value cast Map<String,dynamic>.from; gitignore e2e node_modules
|
2026-08-01 23:26:14 +08:00 |
|
|
|
944493a39b
|
fix(runtime): e2e 发现的 3 个 bug 修复
- download: desktop_download_apps SingleChildScrollView 加 primary:true (Scrollbar 缺 ScrollPosition)
- contact-stores: checkDomainAvailability async 后 setState 加 mounted 保护 (dispose 后 setState)
- buy-service: _loadData 加 data 结构校验 + mounted 保护 (API 400 无效参数时 data 为错误结构 -> RangeError)
|
2026-08-01 23:20:25 +08:00 |
|
|
|
18abf4eb82
|
phase3: FIX arg-bang regex (missing \] in char class skipped subscripts). 235->183
|
2026-07-31 14:57:23 +08:00 |
|
|
|
154d696e70
|
phase3: improve arg-bang handler (allow ! in chains, ; terminator). 574->440
|
2026-07-26 10:41:02 +08:00 |
|
|
|
6d789c7b19
|
phase3: badges 2.x->3.x migration (badgeStyle/animation), SearchBar/onPrimary fixes. 596->580
|
2026-07-26 01:10:45 +08:00 |
|
|
|
cdaaa63d67
|
phase3: stabilize nullfix.py (disable risky local-nullable handler)
Script stable handlers (zero corruption): bang(!), late, param-nullable,
field-formal field-nullable, arg-bang. Reusable — re-run after manual fixes.
Errors: 2374(peak) -> 596 | web build: 1845 -> 571
|
2026-07-26 00:15:38 +08:00 |
|
|
|
a76b872966
|
phase3: nullfix arg-bang handler (argument_type/invalid_assignment). 872 -> 621
|
2026-07-25 18:16:40 +08:00 |
|
|
|
c21ccbd54d
|
phase3: nullfix field-formal field-nullable handler. 907 -> 872
|
2026-07-25 18:14:55 +08:00 |
|
|
|
fce670664b
|
phase3: nullfix.py batch script — bang/late/param-nullable
Automated null-safety fixes driven by dart analyze (no corruption):
- unchecked_use_of_nullable_value: insert '!' on receiver (property/method/[]/op)
- not_initialized field/var: mark 'late'
- missing_default_value_for_parameter: nullable param
Errors: 2374(peak) -> 907
|
2026-07-25 18:13:01 +08:00 |
|