zerosaturation
0029fb8cc8
feat(statistic): T9-T12 dashboard 7 RPCs - additional business-side service modifications
...
Modifications to 5 existing business services for TrackEvent integration:
- socialService/asset_like_service.go: TrackEvent(asset.like) after LikeAsset
- galleryService/exhibition_service.go: TrackEvent(exhibition.start) + (exhibition.end with duration)
- taskService/revenue_service.go: TrackEvent(exhibition.revenue) after OnExhibitionCompleted
- assetService/mint_service.go: TrackEvent(asset.mint) after CreateMintOrder
- assetService/asset_level_service.go: TrackEvent(asset.level_up) in logLevelChange
- userService/user_service.go: fireCrystalChangeEvent wrapper (call site TBD by service owner)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:20:53 +08:00
zerosaturation
3d3f2260f3
feat(statistic): T13-T16 Gateway routes + 5-service business integration (7/7 event types)
...
Gateway:
- 7 routes /api/v1/dashboard/* with JWT auth (middleware.AuthMiddleware)
- statistic_controller.go: 7 methods, response format {code:200, data:resp}
- gateway/main.go: StatisticServiceClient wired
- gateway/config: StatisticServiceURL (DUBBO_STATISTIC_SERVICE_URL, default tri://127.0.0.1:20009)
pkg/statistic SDK:
- fire-and-forget TrackEvent + BatchTrackEvent
- Init(client) + Get() global singleton pattern
Business-side integration (7/7 event types):
- socialService.LikeAsset → asset.like
- galleryService.PlaceAsset → exhibition.start
- galleryService.RemoveFromSlot → exhibition.end (with duration_ms)
- taskService.OnExhibitionCompleted → exhibition.revenue
- assetService.CreateMintOrder → asset.mint
- assetService.logLevelChange → asset.level_up
- userService.UpdateCrystalBalance → crystal.change (wrapper fn added)
Cache warmup:
- main.go: 7 RPCs x 5 sample starIDs at startup (15s delay)
- prevents cold-start DB thundering herd
Existing service modifications:
- galleryService/exhibition_service.go
- taskService/revenue_service.go
- assetService/{mint_service,asset_level_service}.go
- userService/user_service.go
- socialService/asset_like_service.go
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:20:53 +08:00
zerosaturation
dd9952ccc9
feat(statistic): T9-T12 dashboard 7 RPCs (Provider + Materializer + Service + Cache)
...
- StatisticInternalProvider: TrackEvent/BatchTrackEvent
- StatisticCombinedProvider: all 9 RPCs (7 dashboard + 2 event) on single service
- materializer: 4 MV REFRESH CONCURRENTLY + pg_try_advisory_lock + refresh_log
- dashboard_repo: 7 aggregation SQLs (week_rank / 7d curve / top5 / level dist / upgrade progress)
- dashboard_service: 7 RPCs with Redis 5min TTL + cache miss protection (1min empty)
- Cache wrapper: JSON serialize + format dash:{rpc}:{starID}:{userID}
- main.go: integrated workers + Dubbo triple server :20009
- cross-service userService.GetFanProfile (for crystal_balance)
- client/user_rpc_client.go
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:20:53 +08:00
zerosaturation
bed8f8e578
feat(statistic): T4-T8 event collection framework (Event + Sink + Repo + Service + Workers)
...
- Event model + ToJSON
- EventSink interface + ChannelEventSink (non-blocking Submit)
- event_repo: batch INSERT ON CONFLICT DO NOTHING dedup
- event_service: 7-type whitelist + 1KB props limit + ReceivedAt auto-fill
- event_flusher: 100/1s batch + sync metric_recent_level_ups on level_up
- metric_weekly + metric_upcoming workers (5min/15min with pg_try_advisory_lock)
- partitioner: 7-day pre-create + 30-day cleanup (00:05 create / 00:30 cleanup)
- 22 unit + integration tests (model/repo/service/sink/worker)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:20:53 +08:00
zerosaturation
f5ece5e1d2
feat(statistic): T3 service skeleton (config + main + healthz + metrics + 10 SQL)
...
- 6 config blocks (DB/Redis/Channel/Refresh/Partition/Extension with 4 EnableXxx=false)
- 14 Prometheus metric declarations
- self-impl healthz (/healthz + /metrics) — bypasses pkg/health to keep /metrics
- main.go startup: logger → config → DB → Redis → healthz HTTP :21009
- 10 SQL migrations: events partitioned + 4 MV + 3 pre-agg + refresh_log + 7-day initial
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:20:53 +08:00
zerosaturation
182cc812ce
docs(statistic): add 本期实施范围 chapter to design doc + implementation plan
...
- design doc §0.1 scope matrix (16 items: 8 ✅ in, 8 ❌ out)
- 4-phase breakdown (P1-P4) with cycle estimates
- P1 末 precheck list (10 items) with real method names
- plan doc 3014 lines, 16 tasks, 126 checkboxes
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:20:53 +08:00
zerosaturation
4212914057
feat(statistic): add event.proto and statistic.proto with 7 RPCs + 2 event RPCs
2026-06-08 17:20:53 +08:00
zerosaturation
3707125549
feat(statistic): scaffold statisticService with go.mod and directory structure
2026-06-08 17:20:53 +08:00
zerosaturation
9d7e360845
docs: 文档修改
2026-06-08 17:06:53 +08:00
zerosaturation
aba8ec6ba7
feat:增加env配置
2026-06-05 12:26:05 +08:00
zerosaturation
6e470a2b56
feat: 修改详细页图片闪烁bug
2026-06-04 18:06:09 +08:00
zerosaturation
8127a536af
feat: 修改详细页图片闪烁bug
2026-06-04 18:00:38 +08:00
zerosaturation
0e0570fbc8
feat: 修改详细页图片闪烁bug
2026-06-04 17:59:04 +08:00
7c94e9209d
image: 更换图片
2026-06-04 17:58:02 +08:00
zerosaturation
23a8051e96
feat: 修改头像显示不全,修改docker的配置
2026-06-04 16:41:20 +08:00
zerosaturation
df11dabd1e
feat: 移除不需要的图片
2026-06-04 16:10:57 +08:00
zerosaturation
58e303894e
feat: 样式调整
2026-06-04 16:01:31 +08:00
zerosaturation
71b8e454ee
feat: 样式调整
2026-06-04 15:57:42 +08:00
6c18bb7564
image: 更换图片
2026-06-04 15:29:20 +08:00
7d16772805
image: 添加图片
2026-06-04 14:23:58 +08:00
408e027f5f
feat: 修改页面bug
2026-06-04 01:42:29 +08:00
zerosaturation
456bf10352
feat: 修改合并bug
2026-06-04 00:52:32 +08:00
f768613509
feat: 修改页面bug
2026-06-04 00:51:29 +08:00
f0b650de26
feat: 解决合并冲突
2026-06-04 00:03:40 +08:00
bc3d82e20e
fix: 合并冲突
2026-06-03 23:44:33 +08:00
liulong
6ff8743c72
feat:修复合并问题
2026-06-03 23:25:08 +08:00
liulong
b9527bee70
feat:合并新
2026-06-03 22:41:19 +08:00
liulong
10168f8e6b
feat:实现AI生成镭射卡功能
2026-06-03 22:19:22 +08:00
0284bd6951
feat: 修改铸造页面的样式
2026-06-03 22:12:51 +08:00
fa83788fd0
image: 压缩图片
2026-06-03 21:44:42 +08:00
5f5ee0d7a1
feat: 修改铸造页面的样式
2026-06-03 21:43:21 +08:00
75e1222c55
feat: 修改数据看板
2026-06-03 20:25:22 +08:00
zerosaturation
76c4e2cdf8
feat: 修改docker配置
2026-06-03 18:19:15 +08:00
zerosaturation
12e08703d4
feat: 修改刷新问题
2026-06-03 18:18:44 +08:00
4aa11903f4
fix: 样式修复、创作者头像修复
2026-06-03 18:13:16 +08:00
zerosaturation
feb98dd865
feat: 新增运营活动的进度条显示
2026-06-03 01:21:28 +08:00
463e6cc008
feat:新增数据看板
2026-06-03 01:20:51 +08:00
20f86ceec0
feat(dashboard): onShow 强制刷新 + Tab 缓存 + 下拉刷新(scroll-view refresher)
2026-06-03 01:20:50 +08:00
b40ca02bd1
feat(dashboard): UpcomingUpgrades + RecentUpgrades 双列布局
2026-06-03 01:20:50 +08:00
1dbdcc5e20
feat(dashboard): LevelDistribution 5个conic-gradient环形图
2026-06-03 01:20:50 +08:00
e2555dc015
feat(dashboard): CollectionMatrix 容器 + TopFiveAssets
2026-06-03 01:20:50 +08:00
537b6fbc24
feat(dashboard): LikeIncomeBoard 左侧统计+右侧等级列表
2026-06-03 01:20:50 +08:00
0bf2d152be
feat(dashboard): ExhibitionCenter 3联+5行表格
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 01:20:50 +08:00
dd33e87d0f
feat(dashboard): IncomeCurve 七日柱状+折线(qiun-data-charts uni_modules)
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 01:20:49 +08:00
1328aadee9
feat(dashboard): CrystalOverview 双卡(水晶余额+今日收益)
2026-06-03 01:20:49 +08:00
6c8ecb8fda
refactor(dashboard): Header .tab 改用具体属性 transition 而非 transition: all
...
代码评审指出 `transition: all` 是已知的 CSS 反模式——会触
发所有属性的动画,包括未预期的 layout-trigger 属性(width、
height、padding 等)。窄化为 `background` 与 `color`,符合
.tab 实际变化的状态。
2026-06-03 01:20:49 +08:00
a91d7a5e61
feat(dashboard): Header 完整视觉(毛绒怪占位+渐变标题+Tab胶囊)
2026-06-03 01:20:49 +08:00
b31cf01da4
refactor(dashboard): dashboard.vue 改用 <script setup> 语法
...
代码评审发现 Options API 与项目 30+ 个页面(square.vue、
discover.vue、exhibition.vue 等)惯例不一致。改写为
<script setup>,并把 pageBg 提到模块顶层(不再通过 setup
return 传递)。Header 组件无 script 逻辑,无需改动。
2026-06-03 01:20:49 +08:00
282eb72e46
feat(dashboard): 页面骨架 + Header 占位
2026-06-03 01:20:48 +08:00
3676fc977e
refactor(dashboard): useDashboardData 提取 SECTION_FETCHERS 模块级单例
...
代码评审建议:loadAll 与 refresh 各有一份相同的 7 项 fetcher 映射,
且 refresh 每次调用都重建对象。提取为模块级单例后:
- 消除重复(单一信源)
- 节省每次 refresh 的对象分配
- loadAll 用 Object.entries 驱动而非手写 7 行
2026-06-03 01:20:48 +08:00