/**
 * 迁移收尾：旧/新系列映射 + 过渡期日期覆盖规则
 *
 * 背景：FFAI EC / AI-Robotics EC 两个系列在新系统（[Video Conference Call] 前缀）上线后，
 * 旧系列保留历史可查，新系列承接当前业务。报表合并视图通过以下两个常量实现。
 */

/** 生产 seriesId 常量（供 seed / 测试 import 避免重复 hardcode） */
export const SERIES_IDS = Object.freeze({
  NEW_FFAI: 'cmmcqr4bi0k4zvfoxo29b1xxe',
  OLD_FFAI: 'cmhhz1kfl004sy6ovcfasuk73',
  NEW_AIR: 'cmmcqr34u0khjvfjnjx1w7kuh',
  OLD_AIR: 'cmkcxsjhz00n1vf0xe7gdjq2c',
} as const);

/** 新系列 id → 关联的旧系列 id 列表。打开"包含旧会议"开关时合并查询。 */
export const NEW_TO_LEGACY_SERIES: Readonly<Record<string, readonly string[]>> = Object.freeze({
  [SERIES_IDS.NEW_FFAI]: Object.freeze([SERIES_IDS.OLD_FFAI]) as readonly string[],
  [SERIES_IDS.NEW_AIR]: Object.freeze([SERIES_IDS.OLD_AIR]) as readonly string[],
});

/**
 * 合并视图下以旧系列数据为准的日期（YYYY-MM-DD UTC）。
 *
 * 这些日期的新系列 meeting 会从报表结果中排除（DB 中不动，仅影响 getSeriesReport 的查询）。
 * 用于过渡期"新系列只有 NOT_CHECKED_IN 占位 / 旧系列才有真实签到"的场景。
 *
 * FFAI 3/16：大家实际用旧码签到（旧 54 条实签），新系列 56 条是系统预创建占位。
 */
export const LEGACY_PREFERRED_DATES: Readonly<Record<string, readonly string[]>> = Object.freeze({
  [SERIES_IDS.NEW_FFAI]: Object.freeze(['2026-03-16']) as readonly string[],
});

export function getLegacySeriesIds(newSeriesId: string): readonly string[] {
  return NEW_TO_LEGACY_SERIES[newSeriesId] ?? [];
}

export function hasLegacy(newSeriesId: string): boolean {
  return newSeriesId in NEW_TO_LEGACY_SERIES;
}

export function getLegacyPreferredDates(newSeriesId: string): readonly string[] {
  return LEGACY_PREFERRED_DATES[newSeriesId] ?? [];
}
