// 工作台跨 widget 共享的"项目色注册器"。
// 同一个 projectKey 在不同 widget（C12 团队工时分布、C13 团队负载、D16 我的本周工时…）
// 颜色保持一致，形成系统级"项目色码"。
//
// 分配策略：按首次访问顺序循环取 PROJECT_COLORS；personal/other 固定色。
// 整页生命周期内稳定；新增项目自动追加。

// 项目色：纯分类色，不含红/橙系。告警语义留给等级色（红/橙/绿），避免视觉混淆。
const PROJECT_COLORS = ['#5B8FF9', '#5AD8A6', '#5D7092', '#F6BD16', '#6DC8EC', '#73D13D', '#36CFC9', '#36495D'];
// 我的事项独占紫色，与项目色明显区分
const PERSONAL_COLOR = '#9254DE';
const OTHER_COLOR = '#BFBFBF';

export type WorkbenchItemKind = 'project' | 'personal' | 'other';

const projectColorMap = new Map<string, string>();

export function getWorkbenchProjectColor(projectKey: string): string {
  let color = projectColorMap.get(projectKey);
  if (!color) {
    color = PROJECT_COLORS[projectColorMap.size % PROJECT_COLORS.length];
    projectColorMap.set(projectKey, color);
  }
  return color;
}

export function getWorkbenchItemColor(key: string, kind: WorkbenchItemKind): string {
  if (kind === 'personal') return PERSONAL_COLOR;
  if (kind === 'other') return OTHER_COLOR;
  return getWorkbenchProjectColor(key);
}

export const WORKBENCH_PERSONAL_COLOR = PERSONAL_COLOR;
export const WORKBENCH_OTHER_COLOR = OTHER_COLOR;
