7.7 KiB
7.7 KiB
模块管理重构进度交接报告(截至当前工作区状态)
一、整体进度
| 阶段 | 状态 | 提交 |
|---|---|---|
| 阶段一:useGroupTree 抽取 | ✅ 完成 | 158eb3c0 |
| 阶段二:字段查询与共享纯函数 | ✅ 完成 | 27752351 |
| 阶段三:index.vue 拆分 composables | ✅ 完成 | 91237c4a |
| R1 清场(删遗留文件、useConfirm 合回) | ✅ 完成 | 2dba8578 |
| R2a 小文件 UI 归一 | ✅ 完成 | ce3a9d87 |
| R2b 表格面板 UI 归一 | ✅ 完成 | 8c506ae5 |
| R2c 表单面板 UI 归一 | ✅ 完成 | 76b12cc5 |
| R3 阶段四:目录化拆分 | 🔄 进行中(未提交) | — |
R3 是当前唯一未提交的工作,工作区全部改动都属于它。
二、R3 当前进度(核心)
✅ 已完成:table-edit/ 完整拆分(测试全绿)
旧 ModuleTableEditPanel.vue(2614 行)已删除,拆为 6 个文件(均在 components/table-edit/):
| 新文件 | 行数 | 内容 |
|---|---|---|
TableEditPanel.vue |
860 | 壳:状态、分组树推导、commitColDrag/commitBandDrag、结构树编排、快捷键 |
TablePreview.vue |
482 | 多级表头预览表 + mock 行 + 拖拽落点指示 |
TableInspector.vue |
416 | 列/分组带/空态三态属性面板 |
useTablePreviewDrag.js |
113 | 预览表拖拽(onPreviewDragStart/Over/Drop 等) |
useColumnResize.js |
66 | 列宽拖拽(pointer capture 三件套) |
edit-panels/FieldLibrary.vue |
212 | 共享字段库(native/sortable 双模式,两编辑器共用) |
edit-panels/EditDataView.vue |
75 | 共享数据视图(工具栏 + FmsTable) |
index.vue已改为import ModuleTableEditPanel from './components/table-edit/TableEditPanel.vue'- 测试
tests/unit/module-table-edit-panel-dnd.spec.js的 import 已改为新路径(断言未动) - 验证结果:30/30 测试全绿(dnd 14 例 + tree-external-drag 3 例 + utils 13 例);lint 总数 57 < 基线 58(零新增告警,还消掉 1 个)
🔄 进行中:form-edit/ 部分拆分(半成品,未验证编译、未接 index.vue)
旧 ModuleFormEditPanel.vue(3168 行)仍在原位、未被引用改动,index.vue 仍指向它。已新建 3 个文件:
| 新文件 | 行数 | 状态 |
|---|---|---|
form-edit/useFormGrid.js |
95 | ✅ 完成:collectLineIndexes / rebalanceInsert / distributeLine / rebalanceRowByIds / sectionEndIndex / spanOf(纯逻辑) |
form-edit/FormInspector.vue |
350 | ✅ 完成:属性面板(占位符/栅格宽度/textarea 高度/4 开关),全部变更经 emits 转发 |
form-edit/FormEditPanel.vue |
2902 | 🔄 半成品:从 ModuleFormEditPanel.vue 复制改造的壳组件 |
form-edit/FormEditPanel.vue 已完成的改造(lint 零告警):
- ✅ imports:相对路径改为
../../,移除 PanelLeft/Right* 图标、Switch、FmsTable;新增./useFormGrid、./FormInspector、../edit-panels/FieldLibrary、../edit-panels/EditDataView - ✅ 删除本地重复定义:collectLineIndexes / rebalanceInsert / sectionEndIndex / distributeLine / rebalanceRowByIds / spanOf / TEXTAREA_HEIGHT_OPTIONS / isRowSelectedByField / libSearch / libraryFields / isFieldAdded(改为从 useFormGrid 导入或由 FieldLibrary 内部处理)
- ✅ 模板替换:字段库 →
<FieldLibrary drag-mode="sortable" :sortable="{group: libGroup, clone: libClone, filter: LIB_ADDED_FILTER, onStart: onLibDragStart, onEnd: onLibDragEnd}">;属性面板 →<FormInspector>;数据视图 →<EditDataView> - ✅ 注意:toggleInspector / onColspanChange / onColspanInput / onHeightChange / onPlaceholderChange 已重新加回壳组件(FormInspector 只转发事件,写 localEdit 的处理器必须留在壳里)——接手的 AI 不要再删
三、剩余工作(明确 todo)
- 验证 form-edit/FormEditPanel.vue 能编译(无测试覆盖表单面板,最稳妥是
pnpm build或 vite 编译该组件;也可以先接 index.vue 后手工冒烟) - 接 index.vue:
ModuleFormEditPanel的 import 改为./components/form-edit/FormEditPanel.vue - 删除旧文件
components/ModuleFormEditPanel.vue - 清理壳组件死样式(无害但冗余,仍在 FormEditPanel.vue 的
<style>里):.mm-fdesign__lib*、.mm-fdesign__inspector*、.mm-fdesign__subhead*、.mm-fdesign__prop*、.mm-fdesign__span-control、.mm-fdesign__span-input、.mm-fdesign__toggles、.mm-fdesign__toggle-line、.mm-fdesign__delete、.mm-edit__data、.mm-panel__*(这些已迁到 FieldLibrary/FormInspector/EditDataView,删的时候只删这些,别碰.mm-fdesign__canvas*、.mm-fdesign__section*、.mm-fdesign__field*、.mm-fdesign__drag-*、.mm-fdesign__sortable-*) - pnpm test + pnpm lint 回归(验收口径:dnd spec 14 例全绿、lint 警告不新增)
- 提交 R3(建议 message 注明:table-edit 重组完成 + form-edit 按停损条款部分交付——FormCanvas/useFormDrag 未拆,留待下轮)
四、注意事项(易踩坑)
- 计划停损条款:
docs/module-management-code-refactor-plan.md阶段四明确允许「完成 table-edit/ 重组 + form-edit 仅抽 useFormGrid.js」即达标。form-edit 的 FormCanvas(画布模板)与 useFormDrag(拖拽状态机 createDragBadge/updateDragIntent/rowRectAt)交织最深且无测试保护,建议保持现状、在交付说明记录,不要贸然继续拆。 - FieldLibrary 双模式:表格面板用
drag-mode="native"(原生 HTML5 DnD),表单面板用drag-mode="sortable"(vuedraggable + sortable 配置注入);两面板原字段库样式一致,已合并进 FieldLibrary。 - 测试基线:
module-table-edit-panel-dnd.spec.js只 stub 了draggable,依赖壳组件真实渲染ModuleStructureTree(.mst-node类),壳组件 import 路径别改错(../structure-tree/ModuleStructureTree.vue)。 - 无关改动别动:工作区还有 fms-api/*(Java 后端多文件)、
DefaultLayout.vue、dashboard/index.vue的未提交改动,与本重构无关,提交时只 stage module-management 相关文件。 - R2c 遗留约定:ui 组件覆写样式用
.button/.input-wrapper后缀(保证 specificity 覆盖 ui 默认尺寸),新文件里已沿用。
五、当前未提交改动清单
D components/ModuleTableEditPanel.vue (已删,table-edit 顶替)
M index.vue (表格 import 已改新路径)
M tests/unit/module-table-edit-panel-dnd.spec.js(仅 import 路径,断言未动)
?? components/table-edit/ (6 个新文件,完成)
?? components/form-edit/ (useFormGrid/FormInspector 完成,FormEditPanel 半成品)
?? components/edit-panels/ (FieldLibrary/EditDataView,完成)
(另有 fms-api/、DefaultLayout.vue、dashboard/index.vue 的无关改动,勿碰。)