跳到主要内容

design

Context

待办事项功能需要追踪每个待办的归属员工(创建人)。当前实现使用硬编码值,导致所有新建待办都归属于同一个用户。

Goals / Non-Goals

Goals:

  • 修复待办创建时的用户归属问题
  • 使用现有的 getCurrentUserForApi() 函数获取用户信息
  • 保持编辑模式的原有行为不变

Non-Goals:

  • 修改后端 API 或数据库结构
  • 修改其他页面的用户获取逻辑
  • 引入新的用户状态管理方案

Decisions

Decision 1: 使用 getCurrentUserForApi 而非 useCurrentUser hook

分析:

  • getCurrentUserForApi(): 同步函数,直接返回用户信息对象
  • useCurrentUser(): React hook,需要在组件内使用

选择: 使用 getCurrentUserForApi()

理由: handleSubmit 是普通函数(非 React 组件),无法使用 hook。同步函数更适合当前场景,且已有良好的兜底逻辑(未登录时返回默认值)。

Decision 2: 保持编辑模式的用户信息不变

分析:

  • 编辑已有待办时,应保持原有的归属信息
  • 修改他人创建的待办时,不应改变创建人

选择: 仅在新建模式下应用用户信息

理由: 归属信息应反映待办的原始创建人,编辑操作不应改变这一属性。

实现方案

// 引入
import { getCurrentUserForApi } from '@/commons';

// 在 handleSubmit 中
const currentUser = getCurrentUserForApi();
const payload: Partial<TodoEntity> = {
// ... 其他字段
belongEmployeeId: isEdit ? values.belongEmployeeId : currentUser.userId,
belongEmployeeName: isEdit ? values.belongEmployeeName : currentUser.userName,
};

注意: 后端可能返回字符串类型的 ID,需要确保类型兼容性。