Tracking Block Club: phần gắn bổ sung
Đối chiếu file Block_Club_Event_Tracking (2).xlsx (bản 1.0.2, 05/11/2026) với code. Kết quả: 3 event mới đã gắn, 4 event có sẵn được thêm param. Ngày 05/11/2026, bản web test v168.
22event đã gắn đủ từ trước
3event mới gắn thêm
4event được thêm param
7tên trong sheet cố ý không bắn
1. Event mới gắn thêm
| Event | Bắn lúc nào | Param | Chống trùng | Vị trí code |
|---|---|---|---|---|
mớino_space_left |
Core xác nhận hết chỗ: lúc offer hồi sinh mở, hoặc lúc ván chết thẳng (không có offer). Trước revive_offer và trước round_end/level_end. Finish (Settings, op replay) và Adventure thắng không bắn. |
round_id, game_mode, no_space_index, score, moves_count, duration, revive_count; Adventure thêm level_id, attempts | Khoá round_id + no_space_index. Cờ "đã gửi" lưu UserDefault (qua redraw/resume). Lượt hết chỗ kế tiếp chỉ mở sau revive_success. |
BoardPlay.cpp:727 (Session::pxApply)AnalyticsTrack.cpp:439 |
mớiresult_view |
Ngay sau khi màn kết quả hiện. Classic: settlement mở (sau interstitial endInsertFail nếu có). Adventure: màn Thắng/Thua Travel dựng xong. | round_id (lượt vừa kết thúc), game_mode, result, score; Adventure thêm level_id, attempts | Một lần mỗi round_id vừa kết thúc. Reloader đổi cỡ màn dựng lại settlement không gửi lại. | BoardPlay.cpp:913 (Classic)BoardPlay.cpp:1748 (Adventure)AnalyticsTrack.cpp:460 |
mớiresult_action |
Người chơi bấm trên màn kết quả, trước khi chuyển scene. | round_id (lượt vừa kết thúc), game_mode, result, action; Adventure thêm level_id, attempts | Một lần mỗi round_id vừa kết thúc: bấm đúp chỉ tính một. | AnalyticsTrack.cpp:478, xem bảng action bên dưới |
Giá trị action đã gắn
| action | Nút | Vị trí |
|---|---|---|
play | Classic: nút Chơi trên settlement | BoardPlay.cpp:885 |
next_level | Adventure thắng: nút Next (chế độ điểm có theme, chế độ điểm thường, màn kết quả thắng) | BoardPlay.cpp:1784, :1851 |
retry_level | Adventure thua: nút Chơi lại | BoardPlay.cpp:1915 |
back | Adventure: nút Back về lobby (màn thắng, Well Done, màn thua) | BoardPlay.cpp:1752, :1866, :1910 |
Không có action restart, đúng sheet.
2. Param thêm vào event có sẵn
| Event | Param thêm | Cách tính | Vị trí |
|---|---|---|---|
đổiround_start | start_reason, previous_round_id | round_end lưu pending (round_id + end_reason). Ván Classic kế tiếp: after_no_space_left / after_finish. Chưa từng chơi Classic: first_game (bỏ previous_round_id). Có lịch sử mà mất pending (bản cũ): unknown. |
AnalyticsTrack.cpp:329 |
đổiround_end | best_score_before, is_new_record | best_score_before = GameState::topScoreOnEnterGame chốt lúc round_start, lưu cùng round qua resume/revive. is_new_record = 1 khi score > best_score_before. Thiếu baseline thì bỏ cả hai. |
BoardPlay.cpp:942/1065/1083 truyền baseline |
đổilevel_end | goal_type, goal_required, goal_achieved, goal_remaining | way 0 = score (requiredScore), 2 = line_clear (requiredRowCol), 1 = collection (tổng required). achieved kẹp trong [0, required]; remaining = max(required - achieved, 0). way khác 0/1/2 thì bỏ cả nhóm. |
BoardPlay.cpp:772-774AnalyticsTrack.cpp:395 |
đổirevive_success | game_mode, moves_count, duration, no_space_index; Adventure thêm level_id, attempts | Cùng bộ đếm với no_space_left và end. Sau khi bắn, mở lượt hết chỗ kế tiếp. | AnalyticsTrack.cpp:544 |
3. Tên trong sheet cố ý không bắn
| Tên | Lý do |
|---|---|
level_win, level_lose | Sheet quy về level_end (success / reason). Bắn thêm là đếm đôi; test tracking-plan-excel cấm hai tên này. |
tutorial_step | Sheet quy về tutorial_start / tutorial_end. |
revive_rewarded, travel_prop_clear, travel_prop_hammer, travel_prop_universal | Giá trị placement (location) của sheet IAA, không phải tên event. Đã có trong các event quảng cáo. |
4. File đã sửa
game/Source/platform/AnalyticsTrack.h,.cpp: toàn bộ logic, trạng thái lưu UserDefault (an_nsl_*,an_best_before,an_prev_*,an_end_*).game/Source/screens/board/BoardPlay.cpp: chỉ gọi một dòng ở từng điểm gắn.tracking-plan.yaml,docs/tracking/Event_Tracking.csv: 3 event mới (đặt saurevive_success) + param mới.
5. Kiểm chứng
npm run build: xanh.node --test tools/test/tracking-plan-excel.test.mjs tools/test/analytics-track-wire.test.mjs: 5/5 xanh.npm test: 367 xanh, 6 đỏ. Cả 6 đã đỏ từ trước, không do thay đổi này: code-shape (BoardPlay.cpp đã vượt mốc), asset path, cấu trúc, qa:anim, core doctest, _cl/_nt.- Web test:
https://block-crush-70u.pages.dev/?v=168.
Chưa nghiệm thu runtime. Chưa xem event trên Firebase DebugView. Nên chạy checklist dưới trên máy thật trước khi chốt.
6. Checklist QA (theo sheet Level)
- Hết chỗ, hồi sinh:
no_space_left(1),revive_offer,revive_action/level_continue,ad_reward,revive_success(no_space_index=1). Chưa córound_end/level_end. - Hết chỗ lần 2 cùng ván:
no_space_left(no_space_index=2). - Hết chỗ, không hồi sinh (từ chối / hết giờ / ad chưa sẵn): một
no_space_left, rồiround_end(no_space_left)hoặclevel_end(success=0), rồiresult_view. - Settings, Finish:
round_end(finish), không cóno_space_left. - Bấm Chơi:
result_action(play)mang round_id cũ, rồiround_start(start_reason=after_..., previous_round_id=round_id cũ). - Đổi cỡ cửa sổ khi đang ở settlement: không có
result_viewthứ hai. - Adventure thắng/thua:
level_endcó đủ goal_*; Next / Chơi lại / Back mỗi ván chỉ mộtresult_action. - Kỷ lục: score vượt kỷ lục cũ thì
is_new_record=1.