3681564ca4
- 在 ColumnDataType 中新增对 PostgreSQL 和 Oracle 数据类型的支持 - 更新 Db2JSON 方法,优化对达梦数据库表和列信息的查询逻辑 - 增强字段备注解析,支持从备注中提取提示信息并清理标签 - 更新文档,详细说明字段备注格式及前端提示的展示效果
4.7 KiB
4.7 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段备注空格扩展 | 在 hotime 的列注释解析中,除保留「首段为系统内 label」外,将「第一个空格之后、选项/花括号规则之前」的内容单独写入新字段(如 remark),供前端展示;并澄清:管理端若列来自已有配置或 JSON,可能未经过 DB 新列分支,故不会表现为「整段 label 被丢掉」。 |
|
false |
表字段备注:空格后扩展备注(修正认知)
为何你能在管理端看到「完整」label
[hotimev1.5/code/makecode.go](d:/work/hotimev1.5/code/makecode.go) 中,空格截断与 : 处理仅发生在 if coloum == nil 分支(约 189–325 行),即:仅当该列尚未在 TableColumns 中存在、完全由本次从库表结构推断新建列时才会执行。
若列定义已来自 [config/adminDB.json](d:/work/myst-go/config/adminDB.json) 等已有配置,会走 coloum != nil,不会执行上述截断逻辑,管理端下发的 column.label 仍可能是你在 JSON 里写的整段字符串,因此不会出现「整段在 UI 里被丢掉」的现象。
你遇到的「断言/解析」问题更可能出在:需要同时支持「系统内短 label」与「空格后的说明」两种语义,而不是单纯丢失数据。
目标行为(约定)
对数据库列注释(以及与之对齐的生成逻辑)采用统一解析顺序,避免与现有 : 选项、{...} 的 ps 冲突:
- 用
**SplitN(raw, ":", 2)** 拆出「主文案」与「选项串」(替代当前对整串strings.Split(..., ":"),避免备注里出现冒号时误伤)。 - 在「主文案」中按 第一个空格 拆成:
- 第一段:
label(系统内字段名/短标题,与现有一致) - 第二段及以后(或仅第二段,按产品定):trim 后写入新字段,建议键名
**remark**(若你更倾向note/labelRemark可再定)
**{...}→ps:仍在完整主文案或完整 raw** 上提取(与现有行为一致),避免破坏依赖ps的表单。- 选项解析:使用
SplitN的第二段,保持1-男,2-女这类格式不变。
示例:姓名 对外展示说明 :1-男,2-女 → label=姓名,remark=对外展示说明,options 从 :1-男,2-女 解析。
实现位置
| 层级 | 文件 | 内容 |
|---|---|---|
| 后端 | [hotimev1.5/code/makecode.go](d:/work/hotimev1.5/code/makecode.go) |
重构 218–233 与 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 花括号"]