Operating Hours Schema
Source of truth:
callytics-common/src/db/schema/operating-schedules.ts·operating-overrides.ts·blackout-periods.ts(verified 2026-06-15) ⚠️ 数据已建模,SLA 计算待接入 — 三张表已存在,但当前computeDueAt()用硬编码 8 AM–9 PM ET,per-store 时区 / 营业时间 / blackout override 未接线。函数签名支持传 per-storebusinessHours/timezone,但 lead 和 contacts 两条管道的调用处都没传。本页是"schema 占位,SLA 计算尚未读取"状态。
1. 表说明
这三张表合起来定义 Lead SLA 的"营业时段内才计时"逻辑:Lead SLA 倒计时只在营业时段内走,落在闭店时段或 blackout 时段被排除/推迟。三表都从 DynamoDB 旧记录迁来,主键都以 store_id 打头。
写入者:studio-api 的 operating-hours / blackouts 路由(create / update / delete)。 读取者:同上路由(list / effective / expanded)+ SLA 计算(待接入)。
2. Schema 全字段
2.1 operating_schedules — 每周营业时间模板
替代 DDB OperatingHours 里 SK prefix SCHEDULE# 的记录。
- 主键:
(store_id, sk) - 索引:
idx_op_schedules_effectiveon(store_id, effective_date)— 按生效日查当前 active 模板
2.2 operating_overrides — 单日营业例外
替代 DDB OperatingHours 里 SK prefix OVERRIDE# 的记录。
- 主键:
(store_id, sk) - Upsert 语义: 同一日期再建 override 会替换前一条(service 层
ON CONFLICT DO UPDATE) - 索引:
idx_op_overrides_date_rangeon(store_id, date)
2.3 blackout_periods — Lead SLA 排除时段
替代 DDB studio-BlackoutPeriods-{env}。支持 one-time 和 recurring(每周重复)两种。
- 主键:
(store_id, blackout_id) - 重复规则展开: studio-api 的
expandBlackouts()把 recurring 规则解析成单个日期实例,用于日历展示和 SLA 计算
3. Enum 清单
三张表没有 text-as-enum 字段(schedule / override_data / recurrence 是结构化 JSONB,不是枚举)。
唯一的枚举状态是 JSONB payload 内的约定值,无 DB CHECK,合法值靠写入方(studio-api 路由)遵守:
4. Prompt Output ↔ Schema 字段对照
N/A — 7 个 prompt 都不直接读写这三张表。 Operating-hours 数据由 studio-api UI 维护(店主/管理员手动配置),AI pipeline 不产出 schedule / override / blackout 数据。
给 SLA 接入工程师的注意: 当 computeDueAt() 接入 per-store operating-hours 后,Lead Outreach / Follow-up 两类 task 的 dueAt 计算路径会变成:
createdAt → 取当前 operating_schedule(by effective_date) → 应用 operating_override(if 同日有) → 跳过 blackout_periods(if excludeFromSla=true) → 累计 SLA 时长 → dueAt。
5. Appendix A — Re-verification commands
2026-06-01 verified。文档 stale(>30 天)时重跑下方命令并比对。
6. Cross-References
- Live schema:
callytics-common/src/db/schema/operating-schedules.tscallytics-common/src/db/schema/operating-overrides.tscallytics-common/src/db/schema/blackout-periods.ts
- Tasks schema(dueAt / SLA 字段的下游消费者): ../tasks-feature/tasks-schema.md
- Calls schema: ../calls-feature/calls-schema.md
- Unified pipeline: ../unified-pipeline/unified-pipeline-final.md
- Task pipeline deliverable: ../tasks-feature/design/task-pipeline-deliverable-codex.md