Outlook 循环日程同步能力对齐 PRD
版本:v1.0 | 创建日期:2026-06-18
需求来源:需求池 + 用户沟通 + 系统截图 + 本地代码 + Microsoft 官方文档
优先级:P1
文档状态:草稿
需求变更记录
| 变更日期 | 变更人 | 变更内容 |
|---|---|---|
| 2026-06-18 | 孙浩 / AI | 生成需求方案初稿,补充纷享本地循环日程编辑、作废现状,以及 Outlook 官方循环能力依据 |
依赖需求 Story 列表
| ID | 需求描述 | 涉及端与开发人员 | 是否有依赖项 | 备注 |
|---|---|---|---|---|
| 待确认 | Outlook 日程同步循环能力改造 | 待确认 | 是 | 依赖 Office 365 连接器 / Outlook 同步链路支持循环系列识别、创建和更新 |
一、需求概述
1.1 客户反馈
客户反馈结论: 当前纷享与 Outlook 的循环日程同步能力不完整。纷享侧创建需要同步到 Outlook 的第三方日程时无法选择循环日程;Outlook 侧创建循环日程同步到纷享后,纷享侧当前仅呈现一条日程,无法还原完整循环系列。
| 需求编号 | 反馈客户 | 客户级别 | 反馈人 | 业务场景 |
|---|---|---|---|---|
| 2026-06-11-24638 | fs 国际业务部 | kaiyi | 用户使用 Outlook / Office 365 连接器同步日程,希望周期性会议、周期性客户拜访、例会等循环日程能在纷享和 Outlook 之间完整同步 |
补充关联反馈:该需求下新增 3 条客户反馈,主要补充“按年循环/周年日提醒”场景,进一步支撑本期需要补齐年重复能力。
| 反馈编号 | 反馈客户 | 服务等级 | 核心场景 |
|---|---|---|---|
| fb_2026-05-18_063674 | 武汉启明泰和软件服务有限公司 | 标准 | 每月 30 日在 2 月无法触发,希望支持按年提醒。 |
| fb_2023-12-07_040295 | 北京仁宇通达供应链管理有限公司 | 重要/VIP | 管理员每年有固定付款提醒,希望日程支持按年循环提醒。 |
| fb_2023-11-05_039479 | 江西中科农牧动物保健品有限公司 | 小微 | 希望每年固定日期提醒关键事项,例如双十一策划启动提醒。 |
1.2 系统现状
- 纷享创建 Outlook 同步日程时,当前不支持循环日程。 用户创建第三方 Outlook 同步日程时,选择循环日程会被系统拦截,提示“第三方日程不支持创建循环日程”。代码依据:
ScheduleAddAction.java、ScheduleEditAction.java、ScheduleError.java。 - Outlook 创建循环日程同步到纷享后,当前只呈现一条日程。 当前问题不是“纷享侧生成多个日程实例”,而是 Outlook 循环系列没有被完整还原为纷享循环日程,导致纷享侧只看到一条日程。
- 一期未放开循环日程同步,主要有两个原因。
- 集成平台连接器当前更适合“一个内部对象对应一个外部对象”的同步流程;纷享日程和循环日程在代码中拆分为
ScheduleObj和ScheduleRepeatObj两类对象,循环日程不适配当前连接器的单对象同步流程。 - 纷享与 Outlook 的循环日程能力未对齐。Outlook 产品界面可见的年重复、相对月、每 N 周等能力,纷享当前未完整支持,直接放开同步会导致循环规则丢失或异常。
- 集成平台连接器当前更适合“一个内部对象对应一个外部对象”的同步流程;纷享日程和循环日程在代码中拆分为
- 纷享本地已有循环日程基础能力。 纷享本地循环日程支持每日、每周、每两周、每月重复;编辑循环日程时支持选择“仅此次日程”或“此次及后续未发生日程”;作废循环日程时支持选择“仅此次日程”或“此次及后续日程”。同时,纷享支持通过调整循环结束时间停止未来重复,并支持删除整个循环系列。代码依据:
RepeatTypeEnum.java、feed-body-schedule.js、ScheduleInvalidAction.java、ScheduleStopLoopAction.java、feed-foot-del-schedule.js。
1.3 截图依据
| 截图 | 现状结论 |
|---|---|
![]() | 纷享创建本地循环日程时,支持选择重复设置。 |
![]() | 纷享周循环支持选择具体重复星期。 |
![]() | 纷享支持月循环设置 但每月仅支持按照绝对的日期,进行循环,不支持按照星期的维度进行循环 |
![]() | 纷享编辑循环日程时,用户需要选择编辑范围:仅此次日程,或此次及后续未发生日程。 |
![]() | 纷享作废循环日程时,用户需要选择作废范围:仅此次日程,或此次及后续日程。 |
![]() | Outlook 周循环支持通过间隔值表达“每 N 周”,并可删除/选择结束日期。 |
![]() | Outlook 产品界面支持按周设置循环,以及循环间隔最大值为 99 |
![]() | Outlook 产品界面支持按月设置循环。循环数最大间隔 99 |
![]() | Outlook 产品界面支持按年设置循环。可以设置按日期的绝对循环和按照星期周的相对循环 |
![]() | Outlook 循环日程编辑入口以编辑事件/系列为主;支持此事件/此事件及后续事件/该系列的所有事件 |
![]() | Outlook 循环日程删除/取消入口用于处理单次或系列删除/取消。 |
![]() | 一期未做循环日程同步的原因之一是集成平台连接器按单对象同步,而纷享日程和循环日程拆分为ScheduleObj 与 ScheduleRepeatObj。 |
1.4 竞品现状
| 竞品 | 竞品分类 | 竞品现状 | 来源 |
|---|---|---|---|
| Outlook / Microsoft Graph | 第三方日历 / API | 支持 recurring event,并通过 recurrence pattern + recurrence range 描述循环规则 | https://learn.microsoft.com/en-us/graph/outlook-schedule-recurring-events |
| Outlook / Microsoft Graph | 第三方日历 / API | recurrencePattern 可用于解释 Outlook 循环规则模型,但本期产品范围以 Outlook 产品界面可见能力为准 | https://learn.microsoft.com/en-us/graph/api/resources/recurrencepattern?view=graph-rest-1.0 |
| Outlook / Microsoft Graph | 第三方日历 / API | event 类型包含 seriesMaster、occurrence、exception、singleInstance,可区分循环系列、单次实例和例外实例 | https://learn.microsoft.com/en-us/graph/api/resources/event?view=graph-rest-1.0 |
| Outlook / Microsoft Graph | 第三方日历 / API | 支持按时间范围获取循环系列下的实例 | https://learn.microsoft.com/en-us/graph/api/event-list-instances?view=graph-rest-1.0 |
| Outlook | 产品能力 | 支持编辑日程、会议或事件;循环日程可按单次、系列或当前及后续等范围处理,具体入口以 Outlook 客户端实际表现为准 | https://support.microsoft.com/en-gb/office/change-an-appointment-meeting-or-event-in-outlook-29b44f7a-8938-4b99-b98d-3efcf45f7613 |
补充说明:本文产品范围以 Outlook 产品界面可见能力为准。Microsoft Graph/API 层支持但 Outlook 产品体验中未暴露的能力,本期不纳入产品方案。Outlook 侧未看到独立的“结束循环”按钮,停止未来循环应按“编辑循环系列结束日期”理解。
1.5 产品价值
- 支持周期性客户会议、周期性拜访、例会等高频日程在纷享和 Outlook 之间同步。
- 避免 Outlook 循环日程同步到纷享后只出现一条,导致用户漏看后续日程。
- 避免用户在纷享创建 Outlook 同步日程时无法使用循环能力。
- 明确编辑、作废/删除、修改循环结束时间、删除系列等操作的同步规则,降低两端数据不一致风险。
1.6 需求目标
- 对齐纷享与 Outlook 在循环日程上的产品能力差异,优先补齐 Outlook 产品界面可见且业务必要的循环规则能力。
- 在双方循环能力对齐后,支持纷享创建循环日程并同步为 Outlook 循环日程;支持 Outlook 创建循环日程后同步为纷享循环日程,而不是只同步一条普通日程。
- 明确循环日程在编辑、作废/删除、修改循环结束时间、删除系列等场景下的双向同步规则;对暂未纳入的循环规则给出明确提示或同步异常,不静默降级为一条普通日程。
1.7 范围与非目标
| 类型 | 内容 |
|---|---|
| 本期范围 | 循环日程基础能力对齐;补齐 Outlook 产品界面可见且业务必要的差异能力;在能力对齐基础上实现纷享与 Outlook 循环日程创建、编辑、作废/删除、修改循环结束时间的同步 |
| 非目标范围 | Outlook 产品界面未暴露、仅 API 支持的循环能力暂不纳入;普通日程同步能力不在本期重构范围内 |
二、产品方案
2.1 整体产品方案
设计方案:
[www.figma.com/design/ubQUP0PZNqSjbZhutMfIsu/%E5%8D%8F%E5%90%8C%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91-%E5%91%A8?node-id=5-2](https://www.figma.com/design/ubQUP0PZNqSjbZhutMfIsu/%E5%8D%8F%E5%90%8C%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91-%E5%91%A8?node-id=5-2)
产品方案:分两层推进
第一层是 循环日程基础能力对齐 , 先梳理纷享与 Outlook 在循环周期、重复间隔、重复日期选择、结束方式、编辑范围、作废/删除范围上的能力差异;对于 Outlook 产品界面可见且业务必要的差异能力,优先补齐纷享能力,而不是只按纷享现有能力做同步。
第二层是在能力对齐基础上做同步能力对齐 ,系统在同步时应识别循环系列,而不是把循环日程当作一条普通日程处理;对补齐后的对齐能力范围内的循环日程,需要支持创建、更新、修改循环结束时间、删除等同步规则。
2.2 具体方案说明
2.2.2 循环日程能力对齐范围
本节只列需要评审决策的核心差异。目标不是逐项罗列所有循环设置,而是明确“差异在哪里、会造成什么同步问题、产品需要往哪个方向补齐”。
| 序号 | 能力场景 | 当前表现 | 差异 | 产品目标/方案 | 评审决议 |
|---|---|---|---|---|---|
| 1 | 第三方同步入口未支持循环日程 | 1. 纷享创建 Outlook 同步日程时,选择循环会被拦截。 2. Outlook 循环日程同步到纷享后,仅同步第一条。 | 1. 纷享无法发起同步到 Outlook 的循环日程。 2. Outlook 循环系列无法还原为纷享循环日程。 | 1. 放开纷享创建 Outlook 同步日程的循环入口。 2. Outlook 循环日程同步到纷享时,还原为纷享循环日程。 | |
| 2 | 循环日程对象模型与连接器模型不匹配 | 1. 连接器当前偏“一个内部对象对应一个外部对象”。 2. 纷享普通日程与循环日程拆分为 ScheduleObj 和 ScheduleRepeatObj。 | 1. 普通日程同步模型无法直接承接循环日程。 2. 容易导致只同步第一条或循环规则丢失。 | 1. 明确 Office 365 连接器对循环日程的处理方式,是由连接器支持 1 对 多的集成;还是需要改造目前循环日程的对象存储方式 | |
| 3 | 循环周期类型不一致 | 1. 纷享支持每日、每周、每两周、每月。 2. Outlook 支持日、周、月、年。 | 1. Outlook 年重复在纷享侧没有等价能力承接。 2. 同时不支持间隔 | 1。去掉【每两周】的循环维度,合并到间隔中 2。 增加基于【年】的循环能力。 | |
| 4 | 重复间隔能力不完整 | 1. Outlook 在日、周、月、年循环中均可设置重复间隔。 2. 纷享当前主要是固定周期,例如每日、每周、每两周、每月。 | 1. 纷享缺少统一的“每 N 日 / 每 N 周 / 每 N 月 / 每 N 年”能力。 2. Outlook 非固定间隔规则无法完整同步到纷享。 | 1. 将重复间隔作为通用循环能力补齐。 2. 各周期的间隔范围最大为 99 | |
| 5 | 按日期序 / 按星期序重复能力不完整 | 1. Outlook 在月重复、年重复中,会根据开始日期生成不同的循环规则选项。 2. 纷享当前主要按固定日期循环,缺少按星期序、最后一个星期序等相对规则。 | 1. 纷享无法完整承接 Outlook 的相对日期循环。 2. 不同开始日期会生成不同规则,不能只按“第几个星期几”单一规则处理。 | 1. 补齐按日期序、按星期序、最后一个星期序能力。 2. 覆盖月重复和年重复,规则详见下方矩阵。 3。 具体细节在下面补充 | |
| 6 | 循环结束规则不一致 | 1. 纷享要求设置终止日期。 2. 纷享存在最长一年限制。 3. Outlook 支持选择结束日期,也可取消/删除结束日期。 | 1. Outlook 无结束日期循环无法等价同步到纷享。 2. Outlook 超过一年周期的循环可能无法承接。 | 1。 可取消终止日期 2。 不限制可选的结束日期 | 评审是否补齐无结束日期 / 清空结束日期能力。 评审纷享最长一年限制是否保留。 |
| 7 | 编辑循环日程的处理范围需要对齐 | 1. 纷享支持“仅此次日程”和“此次及后续未发生日程”。 2. Outlook 支持单次、当前及后续、整个系列。 | 双方编辑范围不完全一致,可能导致改错范围或后续日程不同步。 | 1. 包括仅此次日程、此次及后续未发生日程之外,增加【整个系列】。 2。 点击【整个系列】后,此次循环规则产生的历史日程以及当前日程和未来日程均受到本次编辑的影响。 | |
| 8 | 作废/删除循环日程的处理范围需要对齐 | 1. 纷享支持“仅此次日程”和“此次及后续日程”。 2. Outlook 支持单次、当前及后续、整个系列。 | 双方作废范围不完全一致,可能导致两端系列状态不一致。 | 1。包括仅此次日程、此次及后续未发生日程之外,增加【整个系列】。 2。 点击【整个系列】后,此次循环规则产生的历史日程以及当前日程和未来日程均被作废掉。 |
核心结论:
- 第 1、2 条是同步链路层面的前置问题,决定循环日程能不能进入 Office 365 连接器。
- 第 3 到 6 条是循环规则能力差异,决定纷享能不能承接 Outlook 的循环规则。
- 第 7、8 条是循环生命周期规则差异,决定循环日程创建后,两端编辑、作废、删除能不能保持一致。
2.2.2.1 按日期 / 按星期 / 按最后一个星期的展示规则
本节补充第 5 条能力差异。产品交互不直接展示 Outlook 的“第几个星期几”复杂文案,只提供三个固定选项值:
- 按日期
- 按星期
- 按最后一个星期
系统根据用户选择的开始日期自动判断可展示选项,并在用户选择后生成对应循环规则。用户不需要手动选择“第几个”和“星期几”。
展示规则:
| 序号 | 适用周期 | 开始日期判断条件 | 展示选项 | 规则生成口径 |
|---|---|---|---|---|
| 1 | 每月 / 每年 | 开始日期是当月第 1-3 个相同星期几 | 按日期; 按星期 | 按日期:固定当前日; 按星期:按开始日期自动推导为第 N 个星期 X。 |
| 2 | 每月 / 每年 | 开始日期是当月第 4 个相同星期几 | 按日期; 按星期; 按最后一个星期 | 按日期:固定当前日; 按星期:固定为第 4 个星期 X; 按最后一个星期:固定为最后一个星期 X。 |
| 3 | 每月 / 每年 | 开始日期是当月第 5 个相同星期几 | 按日期; 按最后一个星期 | 按日期:固定当前日; 按最后一个星期:固定为最后一个星期 X。 本期不提供“第 5 个星期 X”独立规则。 |
判断方法:
- 先取开始日期的星期值,例如星期二。
- 计算该开始日期是当月第几个相同星期几的日期,例如第三个星期二。
- 若为第 1-3 个相同星期几,展示“按日期 / 按星期”。
- 若为第 4 个相同星期几,固定展示“按日期 / 按星期 / 按最后一个星期”,不再判断该日期是否已经是当月最后一个相同星期几。
- 若为第 5 个相同星期几,展示“按日期 / 按最后一个星期”,不展示“按星期”,避免生成 Outlook 无法承接的“第 5 个星期 X”规则。
补充说明:“按最后一个星期”是用户要生成的循环规则选项,不要求当前开始日期本身已经是当月最后一个相同星期几。例如从 2026-07-22 创建日程时,用户仍可选择“按最后一个星期”,生成每月最后一个星期三的循环规则。此时开始日期是规则生效起点,首个循环实例为生效起点之后首个符合规则的日期,即 2026-07-29。
示例:
| 开始日期 | 日期判断 | 展示选项 | 规则说明 |
|---|---|---|---|
| 2026-07-07 | 7 月第 1 个星期二 | 按日期;按星期 | 可生成“每月 7 日”或“每月第 1 个星期二”。 |
| 2026-07-21 | 7 月第 3 个星期二 | 按日期;按星期 | 可生成“每月 21 日”或“每月第 3 个星期二”。 |
| 2026-07-28 | 7 月第 4 个星期二 | 按日期;按星期;按最后一个星期 | 可生成“每月 28 日”“每月第 4 个星期二”或“每月最后一个星期二”。 |
| 2026-07-29 | 7 月第 5 个星期三 | 按日期;按最后一个星期 | 可生成“每月 29 日”或“每月最后一个星期三”; |
月重复和年重复使用同一套判断逻辑:
- 月重复:生成“每月 X 日 / 每月第 N 个星期 X / 每月最后一个星期 X”。
- 年重复:在月重复规则基础上固定月份,生成“每年 M 月 D 日 / 每年 M 月第 N 个星期 X / 每年 M 月最后一个星期 X”。
2.2.2.2 详情页循环设置回填文案规则
用户保存循环日程后,详情页“循环设置”字段需要回填为一句可读摘要,用于说明当前日程按什么规则重复、什么时候结束。
文案结构:
重复周期 + 重复规则 + 结束规则
现状规则:
| 现状场景 | 当前详情页文案 | 是否沿用 |
|---|---|---|
| 每日重复 | 每日重复,{YYYY年MM月DD日}结束 | 沿用 |
| 每周重复 | 每周重复:{星期列表},{YYYY年MM月DD日}结束 | 沿用 |
| 每两周重复 | 每两周重复:{星期列表},{YYYY年MM月DD日}结束 | 历史数据沿用;新建入口合并为“每 2 周重复”。 |
| 每月重复 | 每月重复,{YYYY年MM月DD日}结束 | 需要增强。现状没有展示“按日期 / 按星期 / 按最后一个星期”的具体规则。 |
本期新增规则:
| 新增场景 | 详情页文案规则 | 示例 |
|---|---|---|
| 每 N 日重复 | 每 {N} 日重复,{结束规则} | 每 2 日重复,2026年07月31日结束 |
| 每 N 周重复 | 每 {N} 周重复:{星期列表},{结束规则} | 每 2 周重复:周一、周二、周三,2026年07月16日结束 |
| 每月-按日期 | 每月重复:每月 {D} 日,{结束规则};若间隔大于 1,展示为 每 {N} 月重复:每月 {D} 日,{结束规则} | 每月重复:每月 9 日,2027年07月09日结束 |
| 每月-按星期 | 每月重复:每月第 {N} 个星期{X},{结束规则} | 每月重复:每月第 2 个星期四,2027年07月09日结束 |
| 每月-按最后一个星期 | 每月重复:每月最后一个星期{X},{结束规则} | 每月重复:每月最后一个星期四,2027年07月09日结束 |
| 每年-按日期 | 每年重复:每年 {M} 月 {D} 日,{结束规则};若间隔大于 1,展示为 每 {N} 年重复:每年 {M} 月 {D} 日,{结束规则} | 每年重复:每年 7 月 9 日,2027年07月09日结束 |
| 每年-按星期 | 每年重复:每年 {M} 月第 {N} 个星期{X},{结束规则} | 每年重复:每年 7 月第 2 个星期四,2027年07月09日结束 |
| 每年-按最后一个星期 | 每年重复:每年 {M} 月最后一个星期{X},{结束规则} | 每年重复:每年 7 月最后一个星期四,2027年07月09日结束 |
合并后的整体规则:
| 循环周期 | 间隔为 1 时 | 间隔大于 1 时 | 重复规则展示 |
|---|---|---|---|
| 日 | 每日重复 | 每 {N} 日重复 | 不展示额外重复规则。 |
| 周 | 每周重复:{星期列表} | 每 {N} 周重复:{星期列表} | 展示选择的星期列表,按周一到周日排序。 |
| 月 | 每月重复:{月规则} | 每 {N} 月重复:{月规则} | 月规则根据用户保存的规则展示为“每月 {D} 日 / 每月第 {N} 个星期{X} / 每月最后一个星期{X}”。 |
| 年 | 每年重复:{年规则} | 每 {N} 年重复:{年规则} | 年规则根据用户保存的规则展示为“每年 {M} 月 {D} 日 / 每年 {M} 月第 {N} 个星期{X} / 每年 {M} 月最后一个星期{X}”。 |
结束规则:
- 有结束日期:展示为
{YYYY年MM月DD日}结束。 - 无结束日期:展示为
无结束日期。
展示原则:
- 详情页文案必须来自保存后的循环规则,不根据当前日期重新推导,避免展示与实际同步规则不一致。
- 详情页需要区分“按日期 / 按星期 / 按最后一个星期”,不能只展示“每月重复”或“每年重复”,否则用户无法判断循环规则。
- 星期列表按周一到周日排序,多个星期之间用
、分隔。 - 当前线上详情页已有基础摘要拼接能力,前端代码中会按
repeatType + repeatData + repeatEndTime拼接摘要;本期需在此基础上补充年重复、间隔、按星期、按最后一个星期和无结束日期的展示口径。代码依据:feed-body-schedule.js、repeat_setting.js。
2.2.3 循环日程同步能力对齐
在完成循环日程基础能力对齐后,双方同步能力按对齐后的循环规则执行:
- 纷享创建循环日程同步到 Outlook 时,应创建 Outlook 循环系列。
- Outlook 创建循环日程同步到纷享时,应还原为纷享循环日程,而不是只同步第一条。
- 编辑、作废、删除等后续操作按照双方已确认的处理范围进行映射。
- 对评审决议中暂未纳入的循环规则,系统不得静默降级为普通单条日程,应提示同步异常或记录失败原因。
2.2.4 历史数据兼容规则
本期新增循环日程同步能力后,历史数据默认不做批量改写,避免误合并、重复生成或误删除。
| 场景 | 兼容规则 |
|---|---|
| 纷享历史本地循环日程 | 保持原有循环规则继续执行,不强制迁移为新规则;用户后续编辑时,可按新规则承接。 |
| 历史“每两周”循环日程 | 历史数据继续展示和执行;编辑时可映射为“每 2 周”。 |
| 历史 Outlook 同步过来的单条日程 | 不自动批量转换为循环日程,避免误合并或重复生成。 |
| Outlook 历史循环系列后续再次同步 | 能识别同一 Outlook 循环系列时,按新规则承接;无法确认系列归属时,不静默合并。 |
| 已作废、已删除、已结束的历史循环 | 不重新生成历史实例,不恢复已作废或已删除数据。 |
| 清空结束日期 / 无结束日期能力 | 仅对新建或编辑后的循环日程生效,不自动清空历史循环结束日期。 |
| 整个系列编辑 / 作废 | 原则上作用于该循环系列下全部实例;历史已单独编辑、已作废、已删除的例外实例是否覆盖,需评审确认。 |
兼容原则:新增能力默认向前生效;历史数据不批量改写;只有当系统能稳定识别同一循环系列时,才进入新同步规则。
三、规范检查项
3.1 业务文案多语言 Key
待确认。若新增“不支持循环规则”“同步异常原因”等用户可见文案,需要补充中英文文案和多语言 Key。
3.2 需求埋点
无明确产品埋点要求。若后续需要评估循环日程同步使用情况,可单独补充创建循环同步、同步失败、规则不支持等埋点。
3.3 沙盒/更改集能力
不涉及。
3.4 PaaS 国际化兼容检查
| ID | 多语接入事项 | 是否需要 | 注意事项 |
|---|---|---|---|
| 1 | 接入翻译工作台 | 否 | 本需求不新增可配置多语资源 |
| 2 | CRM提醒 | 待确认 | 如果同步失败通过 CRM 提醒通知用户,需要补充提醒文案 |
| 3 | 企信消息提醒 | 待确认 | 如果同步失败通过企信消息通知用户,需要补充消息文案 |
| 4 | 修改记录 | 待确认 | 循环日程编辑/作废是否新增修改记录口径需确认 |
| 5 | 审计日志 | 待确认 | 删除系列、作废后续、修改循环结束时间是否记录审计需确认 |
| 6 | 支持快捷翻译能力 | 否 | 不涉及 |
| 7 | 支持数据多语能力 | 否 | 不涉及 |
| 8 | 预置配置多语 | 否 | 不涉及 |
| 9 | 预置示例数据多语 | 否 | 不涉及 |
3.5 新对象/新字段 BI 分析申请
待确认。若新增循环系列标识、第三方系列 ID、单次实例 ID、同步异常原因等字段,需要补充 BI 分析申请。
3.6 操作日志说明
待确认。建议至少覆盖以下操作:
- 创建循环日程并同步 Outlook
- Outlook 循环日程同步为纷享循环日程
- 修改循环规则
- 编辑当前及后续日程
- 作废当前及后续日程
- 修改循环结束时间
- 删除整个循环系列
- 同步失败或规则不支持
3.7 需求风险点检测
| ID | 风险分组 | 风险类型 | 有无该风险 | 涉及风险的功能点 | 影响的企业数 | 是否报备 | 响应策略 |
|---|---|---|---|---|---|---|---|
| 1 | 对现逻辑有影响的风险点 | 交互体验有变化 | 有 | Outlook 同步日程创建时允许选择部分循环规则 | 待评估 | 待确认 | 灰度验证,明确不支持规则提示 |
| 2 | 对现逻辑有影响的风险点 | 功能有减少 | 无 | 不减少现有普通日程同步能力 | 待评估 | 待确认 | 保持普通日程同步逻辑不受影响 |
| 3 | 对现逻辑有影响的风险点 | 功能逻辑的调整 | 有 | 循环日程从只同步一条调整为同步系列 | 待评估 | 待确认 | 先补齐能力差异,再明确暂未覆盖规则的异常边界 |
| 4 | 新能力风险点 | 逻辑不完善 | 有 | 单次日程、后续编辑、修改循环结束时间、删除系列映射 | 待评估 | 待确认 | 本期先收敛范围,单次日程差异处理后续增强 |
| 5 | 新能力风险点 | 有性能压力 | 待确认 | Outlook 循环系列实例拉取和批量同步 | 待评估 | 待确认 | 研发评估同步范围、实例数量和重试策略 |
3.8 上线策略
3.8.1 收费标准
- [X] 不收费
- [ ] 收费
3.8.2 上线节奏
- [X] 全网
- [ ] 灰度
| 灰度发布的原因 | 涉及第三方日历双向同步和循环系列规则,建议先灰度验证公共循环能力、同步异常提示和删除/修改循环结束时间边界 |
|---|---|
| 预计全网时机 | 待确认 |
| 期间分几次灰度 | 待确认 |
| 各灰度批次的时间节点及灰度的客户范围 | 待确认 |
3.8.3 适用版本
| 资源名称 | 标准版 | 专业版 | 旗舰版 | 无限版 | 扩展资源包 |
|---|---|---|---|---|---|
| Outlook 循环日程同步能力 | 待确认 | 待确认 | 待确认 | 待确认 | 待确认 |
附录:依据
A. 本地代码依据
| 文件 | 结论 |
|---|---|
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-biz/src/main/java/com/facishare/schedule/biz/predefine/action/ScheduleAddAction.java | 第三方日程带循环设置时会被拦截 |
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-biz/src/main/java/com/facishare/schedule/biz/predefine/action/ScheduleEditAction.java | 编辑第三方日程时同样不支持循环设置 |
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-biz/src/main/java/com/facishare/schedule/biz/error/ScheduleError.java | 错误文案为“第三方日程不支持创建循环日程” |
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-api/src/main/java/com/facishare/schedule/api/enums/RepeatTypeEnum.java | 纷享支持每日、每周、每两周、每月 |
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-api/src/main/java/com/facishare/schedule/api/enums/ScheduleCategoryEnum.java | 纷享区分普通日程、循环首条、循环后续日程 |
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-biz/src/main/java/com/facishare/schedule/biz/service/ScheduleCheckerService.java | 循环需要结束时间,且当前有最长一年限制 |
/Users/soren/Desktop/work/fs/fs/modules/feed-item/feed-widgets/body/feed-schedule/feed-body-schedule.js | 编辑循环日程时支持“仅此次日程 / 此次及后续未发生日程” |
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-biz/src/main/java/com/facishare/schedule/biz/predefine/action/ScheduleInvalidAction.java | 作废支持当前及后续循环日程 |
/Users/soren/Desktop/work/fs-new-schedule/fs-new-schedule-biz/src/main/java/com/facishare/schedule/biz/predefine/action/ScheduleStopLoopAction.java | 支持结束日程循环 |
/Users/soren/Desktop/work/fs/fs/modules/feed-item/feed-widgets/foot/feed-foot-del-schedule.js | 首条循环日程支持删除整个系列 |
B. Microsoft 官方依据
| 官方文档 | 结论 |
|---|---|
| https://learn.microsoft.com/en-us/graph/outlook-schedule-recurring-events | Microsoft Graph 支持循环日程 |
| https://learn.microsoft.com/en-us/graph/api/resources/recurrencepattern?view=graph-rest-1.0 | recurrencePattern 支持多种循环模式 |
| https://learn.microsoft.com/en-us/graph/api/resources/recurrencerange?view=graph-rest-1.0 | recurrenceRange 可用于理解 Outlook API 循环结束模型;产品界面未暴露的能力不纳入本期方案 |
| https://learn.microsoft.com/en-us/graph/api/resources/event?view=graph-rest-1.0 | event 类型可区分 seriesMaster、occurrence、exception、singleInstance |
| https://learn.microsoft.com/en-us/graph/api/event-list-instances?view=graph-rest-1.0 | 支持获取循环系列下的实例 |
| https://support.microsoft.com/en-gb/office/change-an-appointment-meeting-or-event-in-outlook-29b44f7a-8938-4b99-b98d-3efcf45f7613 | Outlook 产品侧支持编辑日程、会议或事件,循环编辑范围需按客户端实际表现确认 |











