'use client';

import { create } from 'zustand';

/**
 * 批次落库后的「重新拉一次」信号 —— 助手那边确认/撤销 → 主管工作台两张表跟着刷新。
 *
 * ── 为什么要它(2026-08-10 产品提)────────────────────────────────
 * 确认单在**助手浮层**里,两张表在**页面**上,两边没有父子关系,谁也拿不到谁的 setState。
 * 在此之前确认完批次,「我分的批次」和「团队现在什么状态」都还是旧的,
 * 主管得手动刷页面才看得见自己刚分的那一批 —— 而那正是他确认完最想看的东西。
 *
 * ⭐ 只发一个自增的 `seq`,**不带任何数据**(⛔ 不学 plan-sync 那样带 planId/status)。
 *   那边是"改某一行的角标",消费方能就地 patch;这里落库的是**一整批**:
 *   批次列表多一行、每个客服的在手/分到全变了、退回率的分母也变了。
 *   想靠事件把这些补丁算准,等于把服务端的聚合口径在前端再实现一遍(必漂,而且不报错)。
 *   ⇒ 一律**重新拉**,让服务端说了算(T14:口径只有一份)。
 *
 * ⚠️ 消费方把 `seq` 放进 fetch effect 的依赖即可;⛔ 别在这里塞防抖/节流 ——
 *   一次确认只发一次,发多了说明调用点接错了,该去修调用点。
 */
interface AssignmentSyncState {
  seq: number;
  /** 批次落库 / 撤销之后调它 —— 订阅方重新拉数 */
  notifyChanged: () => void;
}

export const useAssignmentSyncStore = create<AssignmentSyncState>((set) => ({
  seq: 0,
  notifyChanged: () => set((s) => ({ seq: s.seq + 1 })),
}));
