chore: bootstrap storage migrations and frontend
This commit is contained in:
@@ -8,96 +8,96 @@
|
||||
|
||||
## 第一阶段:MVP 任务总表(73 个)
|
||||
|
||||
| # | 任务名 | 端 | 预估 |
|
||||
|---|--------|:--:|:----:|
|
||||
| | **环境搭建** | | |
|
||||
| 001 | 初始化 FastAPI 项目 + main.py + health 接口 | 后端 | 0.25d |
|
||||
| 002 | 配置 MySQL 连接 + SQLAlchemy session | 后端 | 0.25d |
|
||||
| 003 | 配置 MinIO 客户端 | 后端 | 0.25d |
|
||||
| 004 | Alembic 初始化 + 第一个迁移脚本 | 后端 | 0.25d |
|
||||
| 005 | Docker Compose 编排(MySQL + MinIO) | 后端 | 0.25d |
|
||||
| 006 | 初始化 Vue3 + Vite 项目 | 前端 | 0.25d |
|
||||
| 007 | 安装 Ant Design Vue + 全局注册 | 前端 | 0.25d |
|
||||
| 008 | 安装 Vue Router + 配置路由结构 | 前端 | 0.25d |
|
||||
| 009 | 安装 Pinia + 创建根 store | 前端 | 0.25d |
|
||||
| 010 | 安装 Axios + 创建 API 客户端 base.ts | 前端 | 0.25d |
|
||||
| 011 | 定义全局 CSS 变量 | 前端 | 0.25d |
|
||||
| | **数据库建表(3 个)** | | |
|
||||
| 012 | 创建 template 表 + SQLAlchemy Model | 后端 | 0.25d |
|
||||
| 013 | 创建 template_block 表 + SQLAlchemy Model | 后端 | 0.25d |
|
||||
| 014 | 创建 block_config 表 + SQLAlchemy Model(含 unique 约束) | 后端 | 0.25d |
|
||||
| | **模板上传** | | |
|
||||
| 015 | 实现文件接收 + .docx 格式校验 + 大小校验 | 后端 | 0.25d |
|
||||
| 016 | 实现文件存储到 MinIO | 后端 | 0.25d |
|
||||
| 017 | 实现 template 表 insert | 后端 | 0.25d |
|
||||
| 018 | 组装上传接口 `POST /api/templates/upload` | 后端 | 0.25d |
|
||||
| | **Word 解析** | | |
|
||||
| 019 | 实现 docx 文件打开 + 逐段落遍历 | 后端 | 0.25d |
|
||||
| 020 | 实现标题识别(Heading 1-6)→ type=heading | 后端 | 0.25d |
|
||||
| 021 | 实现段落识别 → type=paragraph | 后端 | 0.25d |
|
||||
| 022 | 实现表格识别 + 行数列数提取 → type=table | 后端 | 0.25d |
|
||||
| 023 | 实现 block_id 生成器(顺序编号) | 后端 | 0.25d |
|
||||
| 024 | 实现层级构建(parent_block_id)+ 结构树 tree 输出 | 后端 | 0.25d |
|
||||
| 025 | 将解析结果批量写入 template_block 表 | 后端 | 0.25d |
|
||||
| | **HTML 预览生成** | | |
|
||||
| 026 | 标题 → `<h2 data-block-id>` 转换 + 居中加粗样式 | 后端 | 0.25d |
|
||||
| 027 | 段落 → `<p data-block-id>` 转换 + 首行缩进样式 | 后端 | 0.25d |
|
||||
| 028 | 表格 → `<table data-block-id>` 转换 + 边框样式 | 后端 | 0.25d |
|
||||
| 029 | 拼接完整 HTML 字符串(带内联 CSS) | 后端 | 0.25d |
|
||||
| | **查询 + 配置接口** | | |
|
||||
| 030 | 实现 `GET /api/templates/{id}` 组装全部数据 | 后端 | 0.5d |
|
||||
| 031 | 实现 `POST /api/templates/{id}/blocks/{blockId}/config` upsert | 后端 | 0.25d |
|
||||
| 032 | 实现 `GET /api/data-sources` 返回预设列表 | 后端 | 0.25d |
|
||||
| 033 | 实现 `POST /api/data-sources` 新增数据源 | 后端 | 0.25d |
|
||||
| | **四栏布局** | | |
|
||||
| 034 | 实现四栏 CSS Grid 布局 | 前端 | 0.5d |
|
||||
| 035 | 实现左侧菜单 shell 组件 | 前端 | 0.25d |
|
||||
| 036 | 实现顶部工具栏 shell 组件 | 前端 | 0.25d |
|
||||
| 037 | 实现配置面板 shell 组件 | 前端 | 0.25d |
|
||||
| 038 | 实现预览区 shell 组件(A4 纸效果) | 前端 | 0.25d |
|
||||
| 039 | 实现结构树 shell 组件 | 前端 | 0.25d |
|
||||
| | **左侧菜单** | | |
|
||||
| 040 | 菜单数据模型(JSON)+ 子菜单配置 | 前端 | 0.25d |
|
||||
| 041 | 菜单展开/收起交互 + 箭头旋转动画 | 前端 | 0.25d |
|
||||
| 042 | 菜单选中高亮(蓝色左侧竖条) | 前端 | 0.25d |
|
||||
| | **顶部工具栏** | | |
|
||||
| 043 | 面包屑导航渲染 | 前端 | 0.25d |
|
||||
| 044 | 模板名称 + 版本号标签展示 | 前端 | 0.25d |
|
||||
| 045 | 保存状态指示器(已保存/未保存 圆点切换) | 前端 | 0.25d |
|
||||
| 046 | 操作按钮区(预览/保存/生成测试/导出模板/全屏) | 前端 | 0.25d |
|
||||
| | **Word 预览区** | | |
|
||||
| 047 | v-html 渲染后端 HTML + 为 [data-block-id] 添加 doc-block class | 前端 | 0.25d |
|
||||
| 048 | 点击事件委托 + block_id 提取 | 前端 | 0.25d |
|
||||
| 049 | 选中高亮(蓝色虚线 outline + 浅蓝背景) | 前端 | 0.25d |
|
||||
| 050 | 区域类型颜色映射(蓝/黄/绿/紫/灰)+ 保存后更新 | 前端 | 0.5d |
|
||||
| 051 | block_id 标签 absolute 定位 + hover 显示 | 前端 | 0.25d |
|
||||
| 052 | 显示/隐藏标签 toggle 开关 | 前端 | 0.25d |
|
||||
| 053 | 缩放控制(70%/100%/150% scale 切换) | 前端 | 0.25d |
|
||||
| | **结构树** | | |
|
||||
| 054 | 递归树组件 + 数据绑定 | 前端 | 0.5d |
|
||||
| 055 | 展开/折叠交互 + 图标 | 前端 | 0.25d |
|
||||
| 056 | 状态圆点(已配置绿/待审核黄/已禁用红/未配置灰) | 前端 | 0.25d |
|
||||
| 057 | 点击树节点 → 预览区 scrollIntoView + 闪烁高亮 | 前端 | 0.5d |
|
||||
| | **配置面板** | | |
|
||||
| 058 | 区域名称 input(默认取 text_preview) | 前端 | 0.25d |
|
||||
| 059 | 区域类型 select | 前端 | 0.25d |
|
||||
| 060 | 数据来源 tag chips 多选组件 | 前端 | 0.5d |
|
||||
| 061 | 提示词 textarea + 字数统计 | 前端 | 0.5d |
|
||||
| 062 | 输出格式 select | 前端 | 0.25d |
|
||||
| 063 | 是否需要审核 radio | 前端 | 0.25d |
|
||||
| 064 | 备注 textarea + 字数统计 | 前端 | 0.25d |
|
||||
| 065 | 保存按钮 + loading 状态 + 成功/失败提示 | 前端 | 0.25d |
|
||||
| 066 | 未选中区域时的空状态占位提示 | 前端 | 0.25d |
|
||||
| | **Pinia Store** | | |
|
||||
| 067 | templateStore | 前端 | 0.5d |
|
||||
| 068 | selectionStore | 前端 | 0.25d |
|
||||
| 069 | uiStore | 前端 | 0.25d |
|
||||
| | **三区联动** | | |
|
||||
| 070 | watch selectedBlockId → 配置面板加载 | 前端 | 0.5d |
|
||||
| 071 | watch selectedBlockId → 结构树节点高亮 | 前端 | 0.25d |
|
||||
| 072 | 页面初始化 loading(全页遮罩 + a-spin) | 前端 | 0.25d |
|
||||
| 073 | 加载失败错误页 + 重新加载按钮 | 前端 | 0.25d |
|
||||
| | **总计** | | **~18.25d** |
|
||||
| # | 任务名 | 端 | 预估 | 状态 |
|
||||
|---|--------|:--:|:----:|:--:|
|
||||
| | **环境搭建** | | | |
|
||||
| 001 | 初始化 FastAPI 项目 + main.py + health 接口 | 后端 | 0.25d | ✅ 已完成 |
|
||||
| 002 | 配置 MySQL 连接 + SQLAlchemy session | 后端 | 0.25d | ✅ 已完成 |
|
||||
| 003 | 配置 MinIO 客户端 | 后端 | 0.25d | ✅ 已完成 |
|
||||
| 004 | Alembic 初始化 + 第一个迁移脚本 | 后端 | 0.25d | ✅ 已完成 |
|
||||
| 005 | Docker Compose 编排(MySQL + MinIO) | 后端 | 0.25d | ✅ 已完成 |
|
||||
| 006 | 初始化 Vue3 + Vite 项目 | 前端 | 0.25d | ✅ 已完成 |
|
||||
| 007 | 安装 Ant Design Vue + 全局注册 | 前端 | 0.25d | ✅ 已完成 |
|
||||
| 008 | 安装 Vue Router + 配置路由结构 | 前端 | 0.25d | ✅ 已完成 |
|
||||
| 009 | 安装 Pinia + 创建根 store | 前端 | 0.25d | ✅ 已完成 |
|
||||
| 010 | 安装 Axios + 创建 API 客户端 base.ts | 前端 | 0.25d | ✅ 已完成 |
|
||||
| 011 | 定义全局 CSS 变量 | 前端 | 0.25d | ✅ 已完成 |
|
||||
| | **数据库建表(3 个)** | | | |
|
||||
| 012 | 创建 template 表 + SQLAlchemy Model | 后端 | 0.25d | ✅ 已完成 |
|
||||
| 013 | 创建 template_block 表 + SQLAlchemy Model | 后端 | 0.25d | ✅ 已完成 |
|
||||
| 014 | 创建 block_config 表 + SQLAlchemy Model(含 unique 约束) | 后端 | 0.25d | ✅ 已完成 |
|
||||
| | **模板上传** | | | |
|
||||
| 015 | 实现文件接收 + .docx 格式校验 + 大小校验 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 016 | 实现文件存储到 MinIO | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 017 | 实现 template 表 insert | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 018 | 组装上传接口 `POST /api/templates/upload` | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| | **Word 解析** | | | |
|
||||
| 019 | 实现 docx 文件打开 + 逐段落遍历 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 020 | 实现标题识别(Heading 1-6)→ type=heading | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 021 | 实现段落识别 → type=paragraph | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 022 | 实现表格识别 + 行数列数提取 → type=table | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 023 | 实现 block_id 生成器(顺序编号) | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 024 | 实现层级构建(parent_block_id)+ 结构树 tree 输出 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 025 | 将解析结果批量写入 template_block 表 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| | **HTML 预览生成** | | | |
|
||||
| 026 | 标题 → `<h2 data-block-id>` 转换 + 居中加粗样式 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 027 | 段落 → `<p data-block-id>` 转换 + 首行缩进样式 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 028 | 表格 → `<table data-block-id>` 转换 + 边框样式 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 029 | 拼接完整 HTML 字符串(带内联 CSS) | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| | **查询 + 配置接口** | | | |
|
||||
| 030 | 实现 `GET /api/templates/{id}` 组装全部数据 | 后端 | 0.5d | ⏳ 未完成 |
|
||||
| 031 | 实现 `POST /api/templates/{id}/blocks/{blockId}/config` upsert | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 032 | 实现 `GET /api/data-sources` 返回预设列表 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| 033 | 实现 `POST /api/data-sources` 新增数据源 | 后端 | 0.25d | ⏳ 未完成 |
|
||||
| | **四栏布局** | | | |
|
||||
| 034 | 实现四栏 CSS Grid 布局 | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| 035 | 实现左侧菜单 shell 组件 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 036 | 实现顶部工具栏 shell 组件 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 037 | 实现配置面板 shell 组件 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 038 | 实现预览区 shell 组件(A4 纸效果) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 039 | 实现结构树 shell 组件 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| | **左侧菜单** | | | |
|
||||
| 040 | 菜单数据模型(JSON)+ 子菜单配置 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 041 | 菜单展开/收起交互 + 箭头旋转动画 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 042 | 菜单选中高亮(蓝色左侧竖条) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| | **顶部工具栏** | | | |
|
||||
| 043 | 面包屑导航渲染 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 044 | 模板名称 + 版本号标签展示 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 045 | 保存状态指示器(已保存/未保存 圆点切换) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 046 | 操作按钮区(预览/保存/生成测试/导出模板/全屏) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| | **Word 预览区** | | | |
|
||||
| 047 | v-html 渲染后端 HTML + 为 [data-block-id] 添加 doc-block class | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 048 | 点击事件委托 + block_id 提取 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 049 | 选中高亮(蓝色虚线 outline + 浅蓝背景) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 050 | 区域类型颜色映射(蓝/黄/绿/紫/灰)+ 保存后更新 | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| 051 | block_id 标签 absolute 定位 + hover 显示 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 052 | 显示/隐藏标签 toggle 开关 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 053 | 缩放控制(70%/100%/150% scale 切换) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| | **结构树** | | | |
|
||||
| 054 | 递归树组件 + 数据绑定 | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| 055 | 展开/折叠交互 + 图标 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 056 | 状态圆点(已配置绿/待审核黄/已禁用红/未配置灰) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 057 | 点击树节点 → 预览区 scrollIntoView + 闪烁高亮 | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| | **配置面板** | | | |
|
||||
| 058 | 区域名称 input(默认取 text_preview) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 059 | 区域类型 select | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 060 | 数据来源 tag chips 多选组件 | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| 061 | 提示词 textarea + 字数统计 | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| 062 | 输出格式 select | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 063 | 是否需要审核 radio | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 064 | 备注 textarea + 字数统计 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 065 | 保存按钮 + loading 状态 + 成功/失败提示 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 066 | 未选中区域时的空状态占位提示 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| | **Pinia Store** | | | |
|
||||
| 067 | templateStore | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| 068 | selectionStore | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 069 | uiStore | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| | **三区联动** | | | |
|
||||
| 070 | watch selectedBlockId → 配置面板加载 | 前端 | 0.5d | ⏳ 未完成 |
|
||||
| 071 | watch selectedBlockId → 结构树节点高亮 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 072 | 页面初始化 loading(全页遮罩 + a-spin) | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| 073 | 加载失败错误页 + 重新加载按钮 | 前端 | 0.25d | ⏳ 未完成 |
|
||||
| | **总计** | | **~18.25d** | |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user