lixi
|
8ea6265046
|
fix: Web 平台 Platform.operatingSystemVersion 不支持降级处理
CI / flutter-gates (push) Successful in 1m5s
AnalyticsService._defaultOsVersion() 在 Web 平台调用 Platform.operatingSystemVersion
会抛 UnsupportedError,导致 flutter run -d chrome 启动崩溃。加 kIsWeb 判断,
Web 平台降级为 'web-unknown',Android/iOS 保持动态读取不变。
复现:flutter run -d chrome → 报错 analytics_service.dart:53
修复后:Web 平台正常启动;51 测试全绿、flutter analyze 0 问题。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 15:44:17 +08:00 |
|
lixi
|
6fef0db009
|
新增:page_viewed 集中式路由埋点(NavigatorObserver)
CI / flutter-gates (push) Successful in 1m3s
- AnalyticsRouteObserver:didPush/didReplace/didPop 集中捕获,页面零侵入
- AnalyticsPageName 枚举:pageName 编译期锁死(字典 v2 九个初始值 + 客户端现存 create/pet_archive/services/post_detail),字典外路由不上报
- PageViewTracker:page_viewed 单一上报出口,维护 referrer 链(栈底/冷启动首页为 null)与去重(Tab 重复点选)
- 三类非路由曝光手动补点:主壳 Tab 切换(IndexedStack)、认证状态机切页(AnimatedSwitcher)、回栈到无名根路由(resolveRootPage)
- 既有 Navigator.push 挂 RouteSettings.name:login_page(register)、main_shell_page(post_detail);fade_route 签名扩展可选 settings
- M2 健康档案页面(pet_list/pet_detail/pet_form/record_form/record_detail)先留枚举定义,待功能落地接线
测试新增 8 例(analytics_route_observer_test):push 上报/push 两页 referrer 链正确 + pop 补报/根路由 resolveRootPage 补报/枚举外不报/dialog 不报/Tab 去重/referrer 连贯/reportTab。
验收对照(06 号报告 §5.2 六条):1✓ observer 注册、2✓ pageName 枚举含 pet_form、3✓ referrer 链、4✓ 字典外不报、5✓ 单测 push/pop/referrer、6✓ M1 存量四页接全。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 14:50:04 +08:00 |
|
lixi
|
4c2f839a01
|
修复:埋点接线与三处偏差(sessionId/eventId/设备信息)
- 生产接线修复:app.dart 组装时传 analytics 实例给 ApiAuthRepository(_buildRepository),修复 M1 遗留的「生产环境 _analytics 恒为 null、挂接点空转」问题
- sessionId 生命周期:新建 SessionTracker (WidgetsBindingObserver),冷启动生成 UUIDv7、后台超 30 分钟换新、未超阈值沿用原值,不再每事件随机生成
- eventId 改 UUIDv7:对齐 13 号规范(uuid 包已在依赖,直接用 v7()),保留插入时间局部性
- appVersion 动态注入:package_info_plus(新增依赖)异步读取后 setAppVersion,不再硬编码 '1.0.0+1'
- osVersion 动态读取:Platform.operatingSystemVersion 正则提取主版本(如 android-14),不再硬编码
- 队列顺手加固:上传失败批次重回队首而非整批丢弃(一行级缓解,分段持久化属 M2 第二波)
测试新增 9 例:session_tracker_test(5 例:冷启动/短后台/长后台/级联状态/连续幂等),analytics_service_test 补强 4 例(UUIDv7/sessionId 不再逐事件生成/appVersion 可注入/失败重回队列)。
验收对照(06 号报告 §5.1 六条):1✓ SessionTracker 新建、2✓ 三条语义、3✓ 同会话 sessionId 一致、4✓ sessionId 为 UUID 不持久化、5✓ 单测 3 例(实际 5 例)、6✓ 真机脚本(开发者手测)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 14:49:24 +08:00 |
|
lixi
|
3f8388e5d4
|
fix: 清零 flutter analyze 问题并修复隐私红线正则缺陷(CI 门禁)
CI / flutter-gates (push) Successful in 50s
- 修复真实缺陷:隐私红线 RegExp 使用 Dart 不支持的 (?i) 内联标志,构造即抛异常
导致带 props 的事件被静默丢弃;改为 caseSensitive: false
- 清理埋点模块未用 import/字段/变量(4 warning)
- 构造函数改用初始化形参(含 Dart 3.12 私有具名参数)
- E2E 手动脚本声明 ignore avoid_print + library 指令
- 门禁:format 0 changed / analyze No issues / flutter test 34 passed
|
2026-09-04 19:44:46 +08:00 |
|
lixi
|
45f94d2558
|
style: dart format analytics_service(CI 门禁要求)
CI / flutter-gates (push) Failing after 22s
|
2026-09-04 18:31:04 +08:00 |
|
lixi
|
60d67a355b
|
feat: 埋点采集模块落地——AnalyticsService + 登录/注册/退出三事件(M0 简化版,报告 13)
- AnalyticsService:trackEvent(name, props?)/identify(userId)/reset();隐私红线本地校验(password/token/phone 等模式拒绝);匿名 ID 持久化复用 session deviceId;sessionId 简化为每事件生成(M0);网络失败静默丢弃(无重试,按规范)
- 登录/注册成功挂接 auth_login_succeeded / auth_register_succeeded(durationMs);失败挂接 _failed(failureReason);退出挂接 auth_logout
- TODO(工单允许部分挂接):page_viewed(登录/注册/首页/个人中心各一次,M0 无路由埋点基础);health_record_action(M2 档案实现后挂接);auth_session_restore_*(Splash 恢复流程待完善);队列持久化到 shared_preferences 分段(当前内存队列 max 500,满 20 触发上传)
- 测试:flutter test → 34 passed(30→34,新增 analytics_service_test 4 例:字段/隐私拒绝/identify/reset);flutter analyze → 86 issues(与上一波同源);dart format → 1 changed
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-04 17:14:20 +08:00 |
|