/**
 * 缓存 Key 构建器（对齐 02-architecture-design.md §3.1.1）。
 *
 * 所有 key 以 env.REDIS_KEY_PREFIX（默认 bff:parent:）为前缀。
 * ioredis keyPrefix 选项会自动添加前缀，此处仅需构建后缀部分。
 */
export const CacheKeys = {
  /** 家长 Dashboard 聚合 (15s TTL) */
  dashboard: (parentId: string): string => `dashboard:${parentId}`,

  /** 孩子列表 (60s TTL) */
  children: (parentId: string): string => `children:${parentId}`,

  /** 孩子成绩列表 (30s TTL) */
  grades: (childId: string, page: number): string =>
    `grades:${childId}:${page}`,

  /** 孩子作业列表 (30s TTL) */
  homework: (childId: string, classId: string): string =>
    `homework:${childId}:${classId}`,

  /** 孩子考试列表 (30s TTL) */
  exams: (childId: string, classId: string): string =>
    `exams:${childId}:${classId}`,

  /** 孩子学情诊断 (300s TTL) */
  weakness: (childId: string): string => `analytics:weakness:${childId}`,

  /** 孩子学习趋势 (600s TTL) */
  trend: (childId: string, range: string): string =>
    `analytics:trend:${childId}:${range}`,

  /** 通知列表 (15s TTL) */
  notifications: (parentId: string, page: number): string =>
    `notifications:${parentId}:${page}`,

  /** 通知偏好 (300s TTL) */
  notificationPrefs: (parentId: string): string =>
    `notification-prefs:${parentId}`,

  /** ChildGuard 绑定列表缓存 (30s TTL) */
  childBindings: (parentId: string): string => `child-bindings:${parentId}`,
} as const;
