# 前后端类型对齐 > 创建: 2026-06-10 | 状态: 初稿 --- ## 概述 DevFlow 前端 (TypeScript) 和后端 (Rust) 通过 Tauri IPC 和 JSON 序列化通信。两侧的类型定义必须保持一致。 ## 类型映射 ### 基础类型 | Rust | TypeScript | 说明 | |------|-----------|------| | `String` | `string` | 文本字段 | | `i64` | `number` | 时间戳 (Unix timestamp) | | `Option` | `string \| null` | 可空字段 | | `Vec` | `string[]` | 数组 (JSON 序列化) | | `bool` | `boolean` | 布尔值 | ### ID 类型 | 实体 | Rust | TypeScript | 格式 | |------|------|-----------|------| | 所有 ID | `String` | `string` | UUID v4 | 所有 ID 统一使用 UUID v4 字符串,便于前后端传递。 ### 枚举对齐 #### IdeaStatus (8 值) | Rust | TypeScript | |------|-----------| | `Draft` | `"Draft"` | | `Evaluating` | `"Evaluating"` | | `Scored` | `"Scored"` | | `Hot` | `"Hot"` | | `Promoted` | `"Promoted"` | | `Parked` | `"Parked"` | | `Merged` | `"Merged"` | | `Discarded` | `"Discarded"` | #### TaskStatus (6 值) | Rust | TypeScript | |------|-----------| | `Created` | `"Created"` | | `BranchCreated` | `"BranchCreated"` | | `InProgress` | `"InProgress"` | | `ReviewReady` | `"ReviewReady"` | | `Merged` | `"Merged"` | | `Abandoned` | `"Abandoned"` | #### WorkflowRunStatus (6 值) | Rust | TypeScript | |------|-----------| | `Pending` | `"Pending"` | | `Running` | `"Running"` | | `Paused` | `"Paused"` | | `Completed` | `"Completed"` | | `Failed` | `"Failed"` | | `Cancelled` | `"Cancelled"` | #### ProjectStatus (4 值) | Rust | TypeScript | |------|-----------| | `Active` | `"Active"` | | `Paused` | `"Paused"` | | `Completed` | `"Completed"` | | `Archived` | `"Archived"` | ## 约定 1. 枚举值使用 PascalCase 字符串,前后端保持一致 2. JSON 字段(如 `scores`、`tags`)在 Rust 侧用 `TEXT` 存储 JSON 字符串,前端解析为对象/数组 3. 时间字段统一用 `i64` (Unix timestamp),前端用 `new Date(ts * 1000)` 转换 4. 新增枚举值时,Rust 和 TypeScript 两侧必须同步更新