8.9 KiB
8.9 KiB
Events(事件)
动作或状态变更后发生的事实(过去时)。用于埋点、状态机迁移、领域事件。
Store 相关
event:store_registered
老板入驻成功,Store + boss User 创建完成,session_token 签发。
- 触发动作:
action:register_boss - payload:
storeId、bossUserId、inviteCode - 证据:
anchored
User / 鉴权相关
event:session_issued
登录/注册成功后签发 HMAC session token。
- 触发动作:
action:register_boss、action:login、action:wx_phone_login、register_staff - payload:
userId、storeId、role、exp - 代码:
backend/src/main/java/com/petstore/auth/SessionTokenService.java#issue - 测试:
SessionTokenServiceTest - 证据:
anchored
event:wx_bound
微信 openid/unionid 绑定到用户。
- 触发动作:
action:bind_wechat(action:wx_phone_login内) - payload:
userId、openid、unionid? - 代码:
backend/src/main/java/com/petstore/service/UserService.java#bindWechatMiniIdentity - 证据:
anchored
Appointment 相关
event:appointment_created
预约创建成功(status=new,下单即占号生效)。
- 触发动作:
action:create_appointment - payload:
appointmentId、storeId、customerUserId、createdByUserId、appointmentTime - 代码:
backend/src/main/java/com/petstore/service/AppointmentService.java#createBooking - 证据:
anchored
event:appointment_status_changed
预约状态迁移(new→doing、new→cancel、doing→done、doing→cancel)。
- 触发动作:
action:start_service(new→doing)、action:transition_appointment_status、action:submit_report(doing→done) - payload:
appointmentId、fromStatus、toStatus、assignedStaffId? - 适用规则:
rule:BR-APPT-001 - 代码:
backend/src/main/java/com/petstore/service/AppointmentService.java#startService/#transitionStatus、backend/src/main/java/com/petstore/service/ReportService.java#create(置 done) - 测试:
AppointmentServiceTest、ReportServiceTest#createDoingAppointmentMarksDone - 证据:
anchored
Report 相关
event:report_submitted
报告提交成功,关联预约置 done。
- 触发动作:
action:submit_report - payload:
reportId、appointmentId、storeId、reportToken - 适用规则:
rule:BR-RPT-001、rule:BR-RPT-002、rule:BR-RPT-004 - 代码:
backend/src/main/java/com/petstore/service/ReportService.java#create - 测试:
ReportServiceTest - 证据:
anchored
event:report_opened
报告页首次打开(本地 storage 标记首次)。
- 触发动作:
action:track_report_open - payload:
reportTokenHash(SHA-256 前 8 位)、isFirstOpen、source、ts - 适用规则:
rule:BR-RPT-007(token hash 日志) - 代码:
backend/src/main/java/com/petstore/controller/ReportController.java#trackReportOpen - 文档:
docs/本期主线-下一步产品优化点.md 埋点事件 schema - 证据:
anchored(日志埋点已实现;统计落地documented)
event:report_reopened
报告页再次打开(非首次)。
- 触发动作:
action:track_report_open - payload:同
event:report_opened,isFirstOpen=false - 证据:
documented(schema 已冻结,前端isFirstOpen判断已实现)
ReportLead 相关
event:lead_submitted
宠主留资提交成功(含重复提交幂等更新)。
- 触发动作:
action:submit_lead - payload:
reportTokenHash、storeId、hasPhone、hasPetName、repeatSubmit、ts - 适用规则:
rule:BR-LEAD-001 - 代码:
backend/src/main/java/com/petstore/controller/ReportLeadController.java#submitReminder - 文档:
docs/本期主线-下一步产品优化点.md 埋点事件 schema - 证据:
documented(埋点 schema 已冻结,事件上报与统计落地gap)
Batch 2 录入事件
Highlight 相关
event:highlight_succeeded
成片生成成功(highlight_video_status 置 done)。
- 触发动作:
action:generate_highlight(异步回调) - payload:
reportTokenHash、appointmentId、durationSec、composeMode、ts - 适用规则:
rule:BR-HL-002 - 代码:
backend/src/main/java/com/petstore/service/ReportHighlightVideoService.java - 文档:
docs/本期主线-下一步产品优化点.md 埋点事件 schema - 证据:
documented(schema 已冻结;事件上报与统计落地gap)
event:highlight_failed
成片生成失败(highlight_video_status 置 failed,highlight_fail_reason 归类)。
- 触发动作:
action:generate_highlight(异步回调) - payload:
reportTokenHash、appointmentId、failReason(material/service/network/unknown)、ts - 适用规则:
rule:BR-HL-002 - 代码:
backend/src/main/java/com/petstore/service/ReportHighlightVideoService.java - 文档:
docs/本期主线-下一步产品优化点.md 埋点事件 schema - 证据:
documented
event:video_play
报告页成片点击播放。
- 触发动作:
action:track_video_play(前端客户端) - payload:
reportTokenHash、ts、source - 文档:
docs/本期主线-下一步产品优化点.md 埋点事件 schema - 证据:
documented(schema 已冻结;上报未实现gap)
event:video_save
报告页成片保存到相册。
- 触发动作:
action:track_video_save(前端客户端) - payload:
reportTokenHash、ts - 文档:
docs/本期主线-下一步产品优化点.md 埋点事件 schema - 证据:
documented(schema 已冻结;上报未实现gap)
Upload 相关
event:upload_completed
上传图片/视频完成。
- 触发动作:
action:upload_image - payload:
url、mediaType、size、ts - 代码:
backend/src/main/java/com/petstore/controller/FileController.java#uploadImage - 证据:
implemented(接口返回 url,事件未单独上报)
Schedule 相关
event:schedule_block_created
手动占用时段创建成功。
- 触发动作:
action:create_schedule_block - payload:
blockId、storeId、slotStart、blockType、createdByUserId - 代码:
backend/src/main/java/com/petstore/service/ScheduleService.java#createBlock - 证据:
anchored
event:schedule_block_deleted
手动占用时段取消。
- 触发动作:
action:delete_schedule_block - payload:
blockId、storeId - 代码:
backend/src/main/java/com/petstore/service/ScheduleService.java#deleteBlock - 证据:
anchored
ServiceType / Pet / Staff 相关
event:service_type_created
服务类型创建(仅门店自定义)。
- 触发动作:
action:create_service_type - payload:
serviceTypeId、storeId、name - 代码:
backend/src/main/java/com/petstore/service/ServiceTypeService.java#create - 证据:
anchored
event:service_type_deleted
服务类型删除(仅门店自定义)。
- 触发动作:
action:delete_service_type - payload:
serviceTypeId、storeId - 代码:
backend/src/main/java/com/petstore/service/ServiceTypeService.java#delete - 证据:
anchored
event:pet_created
宠物档案创建。
- 触发动作:
action:create_pet - payload:
petId、ownerUserId、name、petType - 代码:
backend/src/main/java/com/petstore/service/PetService.java#create - 证据:
anchored
event:staff_created
老板创建员工。
- 触发动作:
action:create_staff - payload:
staffId、storeId、name、phone - 代码:
backend/src/main/java/com/petstore/service/UserService.java#createStaff - 证据:
anchored
event:user_updated
当前登录用户信息更新(头像/姓名/手机号)。
- 触发动作:
action:update_user - payload:
userId、updatedFields - 代码:
backend/src/main/java/com/petstore/service/UserService.java#updateUser - 证据:
anchored
event:testimonial_saved
宠主寄语已保存(一报告一寄语,重复提交为更新)。
- 触发动作:
action:submit_testimonial - payload:
reportTokenHash、testimonialId、isPublic、ts - 适用规则:
rule:BR-TST-001 - 代码:
backend/src/main/java/com/petstore/service/ReportTestimonialService.java - 证据:
documented(写库已实现;独立事件上报/统计未落地)
event:session_revoked
会话吊销(服务端 logout)。
- 触发动作:
action:logout - payload:
userId、ts - 证据:
gap(当前无服务端吊销实现)
event:workbench_viewed
门店后台工作台已打开(可选埋点)。
- 触发动作:
action:view_workbench - payload:
storeId、userId、ts - 证据:
gap(A 期可不实现上报)