一次性线上工作坊——开发与QA交接说明 适用范围:面向跨地区参加者的60分钟线上活动。排除重复日程、全天事件和线下场地预约。 决策:确认前以主办方输入的当地日期、时间及活动时区确定含义;确认后以保存的UTC时刻作为约定。 基准示例:2026-10-15 15:00,Asia/Seoul,UTC+09:00 → 2026-10-15T06:00:00Z;结束为07:00Z。纽约开始时间为10月15日02:00,洛杉矶为10月14日23:00。 输入:分别显示日期、时间和活动时区。浏览器时区只作为建议,须由主办方确认。界面语言不改变时间。 确认前:服务器检查时区是否受支持,并计算候选时刻。0个时说明当地时间不存在;2个时显示各自UTC偏移及第一次/第二次出现的说明,让用户明确选择。禁止静默修正或默认选择第一次。 最终确认:同时显示活动日期、时间、地区、UTC偏移,我的时区下的日期与时间,以及60分钟时长。服务器重验输入及规则并比较预览版本;结果变了就重新展示并再次确认。 记录:原始当地日期与时间、活动时区、所选UTC偏移、已确认UTC起止时刻、确认时间、时区规则库版本、日程版本和变更理由。显示值与原始输入分开。 确认后:设备时区改变仅影响显示。时区规则更新即使改变当地显示,也不得自动移动已确认UTC时刻。变更说明与当前日程一起展示。 改期:主办方另行预览并确认变更,再更新日程版本。保留旧值和理由。通知链接指向新版本;发送失败进入待重发队列,不回滚已经确认的日程。 分工:策划确定时间约定与改期范围;开发负责服务器判定、版本冲突与换算;设计负责双日期及错误提示;运营核对通知对象与失败发送;QA验证边界值。 验收:韩国/纽约/洛杉矶显示、无效或未选时区、夏令时缺口、重复时刻、明确选择后的重验、设备变化、语言变化、过期预览、规则更新及通知失败。 上线前:确定支持时区清单、规则库更新负责人及通知重发责任人。边界验证失败时阻止新的预约确认,修复原因,同时保留已有预约的确定时刻。 验证范围:文中的数值用Python zoneinfo做了往返换算;没有实现或联调真实预约与通知服务。 重新确认条件要写得明确:提交确认时,只要原始输入、所选重复时刻或时区规则库版本与预览不一致,就让旧预览失效。即使只改变了规则库版本,换算后的UTC时刻完全相同,也要重新展示预览并再次确认。