# 表单引擎开发路线图

> 开发计划、进度跟踪、待办事项

**最后更新**: 2025-12-25

---

## 📊 总体进度

| 模块 | 进度 | 状态 |
|------|------|------|
| 表单定义管理 | 100% | ✅ 完成 |
| 可视化设计器 | 100% | ✅ 完成 |
| 表单版本管理 | 100% | ✅ 完成 |
| 表单实例管理 | 100% | ✅ 完成 |
| 审批流集成 | 100% | ✅ 完成 |
| 多语言支持 | 100% | ✅ 完成 |
| 模板系统 | 80% | 🔄 进行中 |
| 高级字段 | 0% | 📋 待开发 |

---

## 🔄 当前迭代

### v1.2 - 高级功能

- [ ] **计算字段**
  - [ ] 公式定义
  - [ ] 依赖字段检测
  - [ ] 实时计算
  - [ ] 公式验证

- [ ] **条件显示**
  - [ ] 条件表达式解析
  - [ ] 字段显示/隐藏
  - [ ] 条件必填
  - [ ] 设计器配置界面

- [ ] **模板系统完善**
  - [ ] 保存为模板功能
  - [ ] 模板分类管理
  - [ ] 模板预览图

---

## 📋 待规划

### v1.3 - 体验优化

- [ ] 设计器快捷键支持
- [ ] 字段分组/分节
- [ ] 表单分页
- [ ] 移动端设计器适配

### v1.4 - 数据能力

- [ ] 表单数据导出 (Excel/CSV)
- [ ] 表单数据导入
- [ ] 数据统计图表
- [ ] 数据趋势分析

### v1.5 - 集成扩展

- [ ] 外部数据源集成
- [ ] 自定义字段组件
- [ ] Webhook 通知
- [ ] 第三方系统对接

### v2.0 - Headless 模式

> **背景**: KPI 绩效等复杂业务模块需要表单引擎的数据能力（Schema 验证、版本管理、审批集成），但 UI 需要独立渲染（评分滑块、雷达图、对齐树等复杂组件）。

- [ ] **Headless 模式支持**
  - [ ] FormDefinition 增加 `renderMode` 字段（`FORM_ENGINE` | `HEADLESS`）
  - [ ] Headless 配置（businessModule、detailPageUrl）
  - [ ] 表单列表根据 renderMode 跳转不同页面

- [ ] **Headless API**
  - [ ] `POST /api/forms/validate` - 仅验证，不渲染
  - [ ] `POST /api/forms/instances` 支持 `headless: true` 参数
  - [ ] `GET /api/forms/instances?businessType=xxx&businessId=xxx` - 按业务查询

- [ ] **审批详情集成**
  - [ ] 审批引擎查看详情时，根据 renderMode 跳转
  - [ ] Headless 模式跳转到业务模块详情页
  - [ ] 普通模式使用 FormRenderer 只读渲染

- [ ] **文档**
  - [ ] Headless 模式使用指南
  - [ ] 业务模块集成示例（KPI）

---

## ✅ 已完成

### v1.1 - 可视化设计器 (2025-12-05)

- [x] 字段面板组件 (FieldPalette)
- [x] 设计画布组件 (DesignCanvas)
- [x] 属性面板组件 (PropertyPanel)
- [x] 拖拽添加字段
- [x] 拖拽排序字段
- [x] 字段属性配置
- [x] 15 种字段类型支持
- [x] 实时预览
- [x] 代码视图
- [x] 保存到后端
- [x] **动态表格字段 (Detail)** - DetailFieldDesigner.tsx
  - [x] 表格列定义 - 支持子字段配置
  - [x] 行增删操作 - 最小/最大行数控制
  - [x] 拖拽排序列 - 使用 @dnd-kit/sortable
  - [x] 列属性配置 - 独立属性面板
- [x] **设计器撤销/重做** - useDesignerStore.ts
  - [x] 历史栈管理 (最大 50 条)
  - [x] Undo/Redo 操作
  - [x] useCanUndo/useCanRedo 钩子

### v1.0 - MVP (2025-11-20)

- [x] 表单定义 CRUD
- [x] 表单版本管理
- [x] 表单实例管理
- [x] JSON Schema 渲染
- [x] 基础字段类型 (8 种)
- [x] 表单验证
- [x] 审批流集成
- [x] 多语言支持
- [x] 模板列表

---

## ⚠️ 问题与风险

### 已解决

| 问题 | 解决方案 | 解决日期 |
|------|----------|----------|
| 拖拽性能问题 | 使用 @dnd-kit 替代原生拖拽 | 2025-12-05 |
| Schema 解析复杂 | 封装 fromJSONSchema/toJSONSchema | 2025-12-05 |

### 待解决

| 问题 | 优先级 | 状态 |
|------|--------|------|
| 大表单性能 (100+ 字段) | P2 | 待优化 |
| 复杂嵌套结构 | P2 | 待设计 |

---

## 📝 开发笔记

### 设计器技术栈

```
拖拽库: @dnd-kit/core, @dnd-kit/sortable
状态管理: zustand
UI 组件: shadcn/ui
Schema: JSON Schema Draft 7
```

### 关键文件

```
frontend/src/components/forms/designer/
├── FormDesigner.tsx    # 主组件
├── FieldPalette.tsx    # 字段面板
├── DesignCanvas.tsx    # 设计画布
├── PropertyPanel.tsx   # 属性面板
├── types.ts            # 类型定义
└── useDesignerStore.ts # 状态管理
```

---

## 📊 进度统计

| 阶段 | 已完成 | 进行中 | 待开发 |
|------|--------|--------|--------|
| v1.0-1.1 | 100% | 0% | 0% |
| v1.2 | 0% | 20% | 80% |
| v1.3-2.0 | 0% | 0% | 100% |
| **总体进度** | **约 70%** | - | - |

---

## 📚 相关文档

- [产品需求文档](./01-prd.md)
- [架构设计](./03-architecture.md)
- [UI 交互规范](./05-ui-interaction-spec.md)
- [API 文档](./07-api.md)
- [变更日志](./99-changelog.md)
- [模块索引](./README.md)

---

**创建时间**: 2025-11-20  
**迁移时间**: 2025-12-25  
**最后更新**: 2025-12-14  
**维护者**: FFOA 开发团队

