背景
在使用对象列表视图(Console)做数据录入/迁移时,发现两类问题:① 没有"导出"能力(只能导入);② "导入"的校验与数据完整性存在隐患。下面给出可复现的实测记录与改进建议。
实测对象具备:必填字段、select(带值码/标签,如值 production ↔ 标签 00 生产)、多个 lookup 关联字段、以及跨字段校验规则(结束日期 ≥ 开始日期)。
一、新增:对象列表视图「导出」
现状:对象列表视图工具栏只有「导入」(object-view-import-button,支持 CSV/Excel/粘贴),没有任何「导出」入口;勾选记录后的批量操作栏也只有「删除」。检查前端产物,含导入按钮的对象视图包内无任何 export 相关代码,"导出"仅存在于 报表(Report) 模块。
问题:能批量导入却不能导出,能力不对称。用户做对账/上报/二次加工,以及"导出→改→再导入"的闭环都无法完成;绕道报表对"把当前筛选结果拉成 Excel"这类高频诉求过重。
期望:在列表视图提供与「导入」对称的「导出」:
- 尊重当前视图的筛选条件、列顺序与可见列、排序;
- 尊重字段级权限(不导出用户无权查看的字段);
- 支持导出全部 / 仅导出所选行;
- 大数据量走异步导出(生成文件后通知/下载),避免请求超时;
- 导出格式与导入兼容(CSV/Excel),形成可往返的闭环。
二、改进:导入
整体向导(上传 → 字段映射 → 预览)做得不错:自动按列头映射、必填标 *、映射模板可保存复用、预览支持单元格内联改错、逐行跳过 + 末尾带行号/错误码的报告。但核心校验存在以下问题(按严重度排序):
P0 — lookup 字段不解析、不校验,原样写入外键(静默数据损坏)
复现:导入一行,关联字段(如「项目」)填一个不存在的名称 不存在的项目XYZ。
实测:导入成功(已导入 1 / 已跳过 0),该字符串被原样写进关联字段。即使填写接近真实记录的名称(如填 WT-2026-A 风场,真实记录名为 WT-2026-A 风场项目),也不会匹配到真实记录,而是把原文存入——列表里看着有值,实则是断链的"孤儿字符串"。
影响:破坏引用完整性,且全程静默成功,用户无从察觉。关联字段越多的对象暴露面越大。
期望:按可配置键(如 name / 业务编号)解析关联;解析不到时在预览中标红为错误而非静默插入原文;允许用户选择按哪个字段匹配。
P1 — select 按"值码"匹配,不认界面上的"标签"
复现:界面上选择项显示为 00 生产、00 待开始,按所见在 CSV 填入这些标签。
实测:报 invalid_option,整行失败;必须填内部值码 production / pending 才能导入。
影响:配合"无导出、无模板下载",用户无从得知正确值码,最符合直觉的 CSV 反而全失败。
期望:导入时同时接受标签与值码(并能容忍 00 之类前缀);至少在映射界面展示合法值码,并在预览中校验。
P1 — 预览校验 ≠ 提交校验(给用户假信心)
复现:构造一批含"值码错误 / 结束日期早于开始 / 缺必填 / 数字格式错"的行,进入预览。
实测:预览只对字段级(必填、格式)报错,标记"2 行有错误";但不校验 select 合法性、跨字段规则、lookup 解析。"导入 N 行"按钮始终可点,提交后却因 invalid_option / rule_violation 被拒,最终 已导入 0 / 已跳过 4——预览的错误数与按钮状态都在误导用户。
期望:预览运行与提交一致的全量校验(含 select、跨字段规则、lookup 解析),使错误计数真实可信;存在错误行时禁用导入按钮或提供"仅导入有效行"。
P2 — 类型嗅探误报
编号 列(值如 IMP-TEST-001)在映射步骤被标记为"⚠ 疑似日期"。无害但易困惑;映射到目标字段后应以目标字段类型为准。
P2 — 缺「下载导入模板」
有"保存映射",但没有"下载模板"。建议在「导入」旁提供下载导入模板(含正确表头 + 合法 select 值码),尤其能缓解 P1。
P3 — 未见去重 / upsert 选项(待确认)
未发现按业务键"更新已有记录"的 upsert 能力,重复编号疑似会生成重复记录(未穷尽验证)。建议提供显式 upsert 模式与重复提醒。
建议汇总
- 列表视图补齐与「导入」对称的「导出」(尊重筛选/列/排序/权限,支持选中行与异步导出)。
lookup 导入按可配置键解析,解析失败在预览中报错,杜绝静默写入原文。
select 导入兼容标签与值码;映射界面展示合法值码。
- 预览与提交使用一致的全量校验;错误行时阻止整批导入或仅导入有效行。
- 提供「下载导入模板」。
- 修复
编号 "疑似日期"误判。
- 增加 upsert/去重能力。
环境
@objectstack/console 11.1.0、@objectstack/runtime / @objectstack/objectql / @objectstack/spec 11.1.0
- Console 路径:对象列表视图(CSV/Excel 导入向导)
背景
在使用对象列表视图(Console)做数据录入/迁移时,发现两类问题:① 没有"导出"能力(只能导入);② "导入"的校验与数据完整性存在隐患。下面给出可复现的实测记录与改进建议。
实测对象具备:必填字段、
select(带值码/标签,如值production↔ 标签00 生产)、多个lookup关联字段、以及跨字段校验规则(结束日期 ≥ 开始日期)。一、新增:对象列表视图「导出」
现状:对象列表视图工具栏只有「导入」(
object-view-import-button,支持 CSV/Excel/粘贴),没有任何「导出」入口;勾选记录后的批量操作栏也只有「删除」。检查前端产物,含导入按钮的对象视图包内无任何 export 相关代码,"导出"仅存在于 报表(Report) 模块。问题:能批量导入却不能导出,能力不对称。用户做对账/上报/二次加工,以及"导出→改→再导入"的闭环都无法完成;绕道报表对"把当前筛选结果拉成 Excel"这类高频诉求过重。
期望:在列表视图提供与「导入」对称的「导出」:
二、改进:导入
整体向导(上传 → 字段映射 → 预览)做得不错:自动按列头映射、必填标
*、映射模板可保存复用、预览支持单元格内联改错、逐行跳过 + 末尾带行号/错误码的报告。但核心校验存在以下问题(按严重度排序):P0 —
lookup字段不解析、不校验,原样写入外键(静默数据损坏)复现:导入一行,关联字段(如「项目」)填一个不存在的名称
不存在的项目XYZ。实测:导入成功(
已导入 1 / 已跳过 0),该字符串被原样写进关联字段。即使填写接近真实记录的名称(如填WT-2026-A 风场,真实记录名为WT-2026-A 风场项目),也不会匹配到真实记录,而是把原文存入——列表里看着有值,实则是断链的"孤儿字符串"。影响:破坏引用完整性,且全程静默成功,用户无从察觉。关联字段越多的对象暴露面越大。
期望:按可配置键(如 name / 业务编号)解析关联;解析不到时在预览中标红为错误而非静默插入原文;允许用户选择按哪个字段匹配。
P1 —
select按"值码"匹配,不认界面上的"标签"复现:界面上选择项显示为
00 生产、00 待开始,按所见在 CSV 填入这些标签。实测:报
invalid_option,整行失败;必须填内部值码production/pending才能导入。影响:配合"无导出、无模板下载",用户无从得知正确值码,最符合直觉的 CSV 反而全失败。
期望:导入时同时接受标签与值码(并能容忍
00之类前缀);至少在映射界面展示合法值码,并在预览中校验。P1 — 预览校验 ≠ 提交校验(给用户假信心)
复现:构造一批含"值码错误 / 结束日期早于开始 / 缺必填 / 数字格式错"的行,进入预览。
实测:预览只对字段级(必填、格式)报错,标记"2 行有错误";但不校验 select 合法性、跨字段规则、lookup 解析。"导入 N 行"按钮始终可点,提交后却因
invalid_option/rule_violation被拒,最终已导入 0 / 已跳过 4——预览的错误数与按钮状态都在误导用户。期望:预览运行与提交一致的全量校验(含 select、跨字段规则、lookup 解析),使错误计数真实可信;存在错误行时禁用导入按钮或提供"仅导入有效行"。
P2 — 类型嗅探误报
编号列(值如IMP-TEST-001)在映射步骤被标记为"⚠ 疑似日期"。无害但易困惑;映射到目标字段后应以目标字段类型为准。P2 — 缺「下载导入模板」
有"保存映射",但没有"下载模板"。建议在「导入」旁提供下载导入模板(含正确表头 + 合法 select 值码),尤其能缓解 P1。
P3 — 未见去重 / upsert 选项(待确认)
未发现按业务键"更新已有记录"的 upsert 能力,重复编号疑似会生成重复记录(未穷尽验证)。建议提供显式 upsert 模式与重复提醒。
建议汇总
lookup导入按可配置键解析,解析失败在预览中报错,杜绝静默写入原文。select导入兼容标签与值码;映射界面展示合法值码。编号"疑似日期"误判。环境
@objectstack/console11.1.0、@objectstack/runtime/@objectstack/objectql/@objectstack/spec11.1.0