petstore-docs/ontology/events.md

252 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 期可不实现上报)