is_subscription_available 的现状与新增值类型对应项目调整规划本文为对 t_patient_reminder.is_subscription_available 字段的现状梳理与将其从二值(0/1)扩展到三值(0/1/2)时的项目调整规划文档(数据库保持 TINYINT,Java 层使用枚举映射)。
t_patient_reminder.is_subscription_available,当前定义为 TINYINT(1) DEFAULT '0',注释:'一次性订阅开关 (0-需要重新授权, 1-已授权可发送一次)'。api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/service/impl/PatientReminderServiceImpl.java(保存时从请求将 Boolean->Byte,读取时 Byte->Boolean 给 VO)。api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/service/impl/MessageServiceImpl.java(发送订阅推送前检查 pr.getNotificationEnabled()==1 && pr.getSubscriptionAvailable()==1,当前并未在发送后消费/置 0)。api-springboot/docs(见处理目录下的汇总与变更计划文档)。将 is_subscription_available 扩展为三值语义:
要求:数据库字段保持 TINYINT,在 Java 层新增枚举以表达三状态;最小化对现有前端/后端的破坏,优先保证线上行为可控。
docs/DB/t_patient_reminder.txt。
SubscriptionAvailability 枚举及 MyBatis SubscriptionAvailabilityTypeHandler,相关文件:src/main/java/work/baiyun/chronicdiseaseapp/enums/SubscriptionAvailability.java 与 src/main/java/work/baiyun/chronicdiseaseapp/handler/SubscriptionAvailabilityTypeHandler.java。subscriptionAvailable 切换为枚举类型:PatientReminder(PO)、PatientReminderRequest、PatientReminderResponse 已改为使用 SubscriptionAvailability;相应的保存/读取逻辑已在 PatientReminderServiceImpl 中调整。MessageServiceImpl 中改用枚举语义判断订阅可用性,并在发送成功后对一次性授权(ONCE)进行消费(写回 NONE),以实现一次性订阅的语义。