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

4.3 KiB

name, overview, todos, isProject
name overview todos isProject
字段提示括号扩展 在后端解析数据库列注释中的 `()` 内容作为字段提示(ps),修复空格截断 bug,并在前端 Table/Info/Edit 组件中展示提示信息。
id content status
backend-parse 后端 makecode.go:新增 () 解析,调整解析顺序(先提取括号内容,再空格/冒号截断),存入 ps 字段 completed
id content status
backend-fix-space 后端 makecode.go:修复 coloum != nil 分支中 label 未截断空格的问题 completed
id content status
frontend-edit 前端 Edit.vue / Add.vue:输入框右侧显示 column.ps 提示文字 completed
id content status
frontend-table 前端 Table.vue:列头加 el-tooltip 展示 td.ps completed
id content status
frontend-info 前端 Info.vue:详情字段名加 tooltip 展示 column.ps completed
false

字段提示:支持 () 括号 + 前端展示

现状问题

  1. 后端已经能从 {} 提取 ps,但前端从未使用 ps 字段
  2. {} 写法不直观,用户希望用更常见的 () 来写字段提示
  3. 管理端某些列的 label 包含了空格后面的文字(未经截断)

数据库注释格式约定(举例)

注释写法 label ps options
姓名 姓名
状态(当前审核状态) 状态 当前审核状态
性别:1-男,2-女 性别 男/女
状态(当前审核状态):1-待审,2-通过,3-驳回 状态 当前审核状态 待审/通过/驳回
备注{请输入详细说明} 备注 请输入详细说明
姓名 xxx说明 姓名 无(空格后丢弃,同现有行为)

(){} 都提取到同一个 ps 字段(功能一致,只是写法不同)。

后端改动

文件:hotimev1.5/code/makecode.go 约 218-233 行

当前解析顺序是:空格截断 -> 花括号提取ps -> 冒号截断。需要调整为:

  1. 新增 () 解析:在原有 {} 提取 ps 的逻辑旁边,增加对 () 的检测,提取内容同样存入 coloum["ps"]
  2. 调整解析顺序:先提取 () / {}(从原始注释中),再做空格截断和冒号截断,避免截断后丢失括号内容
  3. 提取后清理 label:将 (...){...} 从 label 中移除,确保 label 干净

改后伪逻辑(自然语言):

原始注释 = "状态(当前审核状态):1-待审,2-通过,3-驳回"

第一步:从原始注释中找 () 或 {},提取内容 → ps = "当前审核状态"
第二步:把 (...) 或 {...} 从注释中去掉 → "状态:1-待审,2-通过,3-驳回"
第三步:空格截断(取第一个空格前的部分)
第四步:冒号截断 label → label = "状态"
第五步:冒号后面解析选项 → options

前端改动

1. Edit.vue / Add.vue — 输入框右侧显示提示

el-form-item 内、输入控件后面追加一个小字提示:

<span v-if="column.ps" class="field-hint">{{ column.ps }}</span>

样式为灰色小字,紧贴输入框右侧。

2. Table.vue — 列头 tooltip

el-table-column 加 header 插槽,当 td.ps 存在时用 el-tooltip 包裹列头文字:

<template #header v-if="td.ps">
  <el-tooltip :content="td.ps" placement="top">
    <span>{{ td.label }}</span>
  </el-tooltip>
</template>

ps 的列保持原样。

3. Info.vue — 字段名 tooltip

类似地,在详情页的 el-descriptions-item 的 label 上加 tooltip 展示 column.ps

关于"管理端空格后 label 未截断"的 bug

这个问题出在:当列已存在于配置(coloum != nil 分支),不会执行空格截断逻辑。如果 adminDB.json 里的 label 本身就包含空格后的文字,它会原样显示。

修复方式:在 makecode.go 的 coloum != nil 分支(即已有配置的列),也对 label 做同样的空格截断和 () / {} 提取处理。或者确认 adminDB.json 中的 label 是否需要手动清理。需要先确认具体是哪些列出现了这个问题。