# Work Log - 菜单状态切换接口统一(FL-119) - 背景: - 菜单管理页创建、编辑、删除均使用 `/api/v1/admin/menus*`,但表格和卡片视图的启用/禁用状态切换仍调用 `/api/menus/{id}`,接口资源族不一致。 - 本次处理: - 在 `web/src/app/admin/menus/page.tsx` 新增统一的菜单状态切换函数,表格与卡片视图复用同一逻辑。 - 状态切换请求统一为 `PATCH /api/v1/admin/menus/{id}`,payload 仅包含 `{ status }`。 - 新增行级 `updatingStatusMenuId` busy 状态,状态切换期间禁用对应行/卡片操作。 - 状态切换成功后刷新菜单列表,并通过统一 toast 状态反馈成功/失败,避免重复提示或残留旧错误。 - 验证: - 基线:`npm --workspace web exec eslint src/app/admin/menus/page.tsx` 通过,存在 3 条既有 warning。 - 修改后:`npm --workspace web exec eslint src/app/admin/menus/page.tsx` 通过,仅剩 1 条既有 pagination hook warning。 - 修改后:`npm --workspace web exec tsc --noEmit` 通过。 - 风险与关注点: - 改动仅影响菜单管理页状态切换的前端请求路径、复用逻辑和行级 busy 状态,不改变后端接口、字段结构或菜单 CRUD 其他行为。