20260917165839

This commit is contained in:
oneao committed 2026-09-17 16:58:40 +08:00
1 parent 182ed86966
commit 38e1e66c3b
108 files changed
+2497 -1215

No files matched your search

+21 -3
View File
@@ -370,8 +370,9 @@ query
},
{
"type": "group",
"id": "group1",
"title": "费用信息",
"i18n": "group.cw_fee.amount",
"i18n": "group.cw_fee.view.group1",
"children": [
{ "field": "mx_amount", "width": 120, "format": "money" },
{ "field": "mx_currency", "width": 90 }
@@ -389,8 +390,9 @@ query
"children": [
{
"type": "group",
"id": "group1",
"title": "基础信息",
"i18n": "group.sea_main.basic",
"i18n": "group.sea_main.edit.group1",
"children": [
{
"type": "row",
@@ -442,6 +444,20 @@ query
}
```
### 6.4 分组节点 id 与资源键
`view`、`edit` 的 JSON 里,分组节点(`type: "group"`)用 `id` 表达稳定身份;层级由 `children` 嵌套表达,顺序由数组顺序表达,分组不建独立表(见本节开头的 `s_field_group`)。
```text
"id": "group1" 按 schema 类型独立编号(view 与 edit 各自从 group1 开始)
```
- **唯一范围**:分组 id 只在单个 `b_schema_json` 内唯一。列表的 `group1` 与表单的 `group1` 是两处不同分组,互不引用,因此也不做模块内跨 schema 全局唯一。
- **稳定优先**:编号一旦分配不再重排,删除分组留下的空洞允许存在(重排会改身份,进而改资源键)。
- **取号规则**:新建分组取该配置内已用编号里最小的未用正整数;同时保留 `s_i18n` 中该模块同 schema 已存在的分组键编号,避免新分组捡到已删除分组的编号、连带继承其残留译文。
- **老数据兼容**:`id` 缺失或重复的节点由归一化补齐(先序、取最小可用编号),非 `group{n}` 的自定义 id 视为已占用并原样保留。归一化必须是确定性纯函数——加载后要与基线比较,若补号依赖外部上下文,同一份数据两次归一化结果会不同而被误判为未保存改动。
- **资源键**:分组标题的资源键为 `group.{模块编码}.{schema 类型}.{分组编号}`(如 `group.cw_fee.view.group1`),由 id 派生而非人工填写;节点上的 `i18n` 手填优先,未填时按此规则派生,使分组标题无需手工登记即进入多语言受管清单。schema 类型必须入键,否则列表与表单的同号分组会互相覆盖译文。
## 7. 用户个性化(个人层)
个人配置是两层继承的最上层,只保存相对系统默认(`s_module_schema`)的偏离量,不复制完整模块配置。与 `s_module_schema` 统一使用 `b_schema_type` + `b_schema_json`,按 schema 类型分别存一条。
@@ -623,11 +639,13 @@ create index ix_s_i18n_locale
| `module.` | 模块名称或模块业务文案 | `module.sea.name` |
| `menu.` | 菜单名称 | `menu.main.title` |
| `field.` | 字段名称 | `field.sea.b_no` |
| `group.` | 列表/表单布局分组标题 | `group.sea.basic` |
| `group.` | 列表/表单布局分组标题 | `group.sea.view.group1` |
| `action.` | 动作动词(按钮 + 权限共用) | `action.insert` |
资源键一旦投入使用原则上不可修改;模块、菜单或字段删除时,由业务层根据已知资源键清理对应翻译行。
`module.*`、`menu.*`、`field.*`、`action.*` 由业务编码派生,不需要人工填写;`group.*` 的编号段取自界面配置里分组节点的 `id`,未手填节点 `i18n` 时同样由 id 派生,规则见 6.4 节。模块管理页登记的分组译文在表单渲染时按同一规则解析(节点缺失 id 的老数据由归一化补齐后同样能取到译文)。
`action.*` 保存通用的动作动词资源键(例如 `action.insert`、`action.update`、`action.audit`),按钮文案和权限点名称共用同一翻译,同一动词只维护一份;动作动词是通用词,不按模块或对象分段。
## 12. 日志