Files
hotime/.cursor/plans/字段备注空格扩展_e164bdb6.plan.md
T
hoteas 34365fdaa0 feat(config): 扩展数据类型映射与数据库字段备注提取功能
- 在 ColumnDataType 中新增对 PostgreSQL 和 Oracle 数据类型的支持
- 更新 Db2JSON 方法,优化对达梦数据库表和列信息的查询逻辑
- 增强字段备注解析,支持从备注中提取提示信息并清理标签
- 更新文档,详细说明字段备注格式及前端提示的展示效果
2026-03-23 16:48:56 +08:00

4.7 KiB
Raw Blame History

name, overview, todos, isProject
name overview todos isProject
字段备注空格扩展 在 hotime 的列注释解析中,除保留「首段为系统内 label」外,将「第一个空格之后、选项/花括号规则之前」的内容单独写入新字段(如 remark),供前端展示;并澄清:管理端若列来自已有配置或 JSON,可能未经过 DB 新列分支,故不会表现为「整段 label 被丢掉」。
id content status
parse-makecode 在 makecode.go 中实现 SplitN + 空格拆分 + remark 字段,并统一 options/ps 解析顺序 pending
id content status
ui-remark 在 myst-web Edit/Info 中展示 column.remark(可选样式) pending
id content status
docs-format 补充列注释格式说明文档 pending
false

表字段备注:空格后扩展备注(修正认知)

为何你能在管理端看到「完整」label

[hotimev1.5/code/makecode.go](d:/work/hotimev1.5/code/makecode.go) 中,空格截断与 : 处理仅发生在 if coloum == nil 分支(约 189325 行),即:仅当该列尚未在 TableColumns 中存在、完全由本次从库表结构推断新建列时才会执行。

若列定义已来自 [config/adminDB.json](d:/work/myst-go/config/adminDB.json) 等已有配置,会走 coloum != nil不会执行上述截断逻辑,管理端下发的 column.label 仍可能是你在 JSON 里写的整段字符串,因此不会出现「整段在 UI 里被丢掉」的现象

你遇到的「断言/解析」问题更可能出在:需要同时支持「系统内短 label」与「空格后的说明」两种语义,而不是单纯丢失数据。

目标行为(约定)

数据库列注释(以及与之对齐的生成逻辑)采用统一解析顺序,避免与现有 : 选项、{...}ps 冲突:

  1. **SplitN(raw, ":", 2)** 拆出「主文案」与「选项串」(替代当前对整串 strings.Split(..., ":"),避免备注里出现冒号时误伤)。
  2. 在「主文案」中按 第一个空格 拆成:
  • 第一段label(系统内字段名/短标题,与现有一致)
  • 第二段及以后(或仅第二段,按产品定):trim 后写入新字段,建议键名 **remark**(若你更倾向 note / labelRemark 可再定)
  1. **{...}ps:仍在完整主文案或完整 raw** 上提取(与现有行为一致),避免破坏依赖 ps 的表单。
  2. 选项解析:使用 SplitN 的第二段,保持 1-男,2-女 这类格式不变。

示例:姓名 对外展示说明 :1-男,2-女label=姓名remark=对外展示说明options 从 :1-男,2-女 解析。

实现位置

层级 文件 内容
后端 [hotimev1.5/code/makecode.go](d:/work/hotimev1.5/code/makecode.go) 重构 218233 与 300–308 行附近逻辑:先 : 再空格,并设置 coloum["remark"];无空格时行为与现有一致
前端(可选但推荐) [myst-web/src/components/Edit.vue](d:/work/myst-web/src/components/Edit.vue)[Info.vue](d:/work/myst-web/src/components/Info.vue) 在表单项标签旁或下方展示 column.remark(小字/灰色提示),无则不占位
文档 [myst-go/docs/](d:/work/myst-go/docs/) 或 QUICKSTART 简短说明列注释格式:label 备注 :选项

依赖关系:[myst-go/go.mod](d:/work/myst-go/go.mod)replace code.hoteas.com/golang/hotime => ../hotimev1.5,改 hotime 源码即可被 myst-go 使用。

兼容与回归

  • 无空格、仅 label:选项、仅 {ps}:行为与现网一致。
  • adminDB.json 手工写的长 label:若需同样拆分,可在后续加「对已有列合并 DB 注释时补写 remark」或提供一次性脚本;首版以 Db2JSON 新列路径重新生成/同步列 为主。

流程示意

flowchart LR
  raw[DB列注释raw]
  raw --> splitColon["SplitN 第一处冒号"]
  splitColon --> mainPart[主文案]
  splitColon --> optPart[选项串]
  main --> splitSpace["第一处空格"]
  splitSpace --> label[label]
  splitSpace --> remark[remark]
  raw --> psBrace["提取 ps 花括号"]