@finebi/finebi-cli 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/package.json +4 -3
- package/skills/finebi-cli-agent/SKILL.md +8 -4
- package/skills/finebi-cli-agent/references/command-workflows.md +7 -3
- package/skills/finebi-cli-agent/references/dashboard-data-result.md +191 -191
- package/skills/finebi-cli-agent/references/dashboard-dsl-api.md +8 -1018
- package/skills/finebi-cli-agent/references/dashboard-dsl-core.md +194 -0
- package/skills/finebi-cli-agent/references/dashboard-dsl-examples.md +378 -0
- package/skills/finebi-cli-agent/references/dashboard-dsl-items.md +456 -0
- package/skills/finebi-cli-agent/references/mapping-rules.md +14 -14
- package/skills/finebi-cli-agent/references/scenario-workflows.md +1 -1
- package/skills/finebi-cli-agent/references/web-app.md +13 -0
- package/skills/finebi-cli-agent/references/widget-dsl-api-examples.md +3 -4
- package/skills/finebi-cli-agent/references/widget-dsl-api.md +10 -1374
- package/skills/finebi-cli-agent/references/widget-dsl-contexts.md +142 -0
- package/skills/finebi-cli-agent/references/widget-dsl-core.md +374 -0
- package/skills/finebi-cli-agent/references/widget-dsl-encodings.md +457 -0
- package/skills/finebi-cli-agent/references/widget-dsl-styles.md +413 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/package.json +1 -1
- package/skills/finebi-cli-agent/scripts/finebi-cli/src/app.js +189 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/src/config.js +27 -27
- package/skills/finebi-cli-agent/scripts/finebi-cli/src/help.js +78 -55
- package/skills/finebi-cli-agent/scripts/finebi-cli/src/index.js +5 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/src/install-skill.js +89 -89
- package/skills/finebi-cli-agent/scripts/finebi-cli/src/profiles.js +158 -158
- package/skills/finebi-cli-agent/scripts/finebi-cli/src/skill-files.js +94 -94
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/AGENTS.md +27 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/README.md +30 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/docs/auth-and-deploy.md +17 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/docs/data-contract.md +21 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/docs/design.md +13 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/docs/filters.md +89 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/index.html +2 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/package-lock.json +2191 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/package.json +15 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/public/app-config.json +11 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/scripts/dev-proxy.mjs +56 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/App.tsx +31 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/components/Chart.tsx +31 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/components/DataTable.tsx +14 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/components/FilterBar.tsx +42 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/components/Widget.tsx +28 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/components/calendar.ts +14 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/finebi/client.ts +37 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/finebi/date.d.ts +1 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/finebi/date.js +5 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/finebi/filters.d.ts +4 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/finebi/filters.js +106 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/finebi/normalize.ts +77 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/finebi/types.ts +18 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/main.tsx +5 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/services/view-data.ts +18 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/src/styles.css +8 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/tests/calendar.test.mjs +25 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/tests/proxy.test.mjs +84 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/tests/runtime.test.mjs +136 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/tsconfig.json +4 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli/templates/web-app/vite.config.ts +13 -0
- package/skills/finebi-cli-agent/scripts/finebi-cli-runner.mjs +4 -4
- package/src/app.js +189 -0
- package/src/config.js +27 -27
- package/src/help.js +78 -55
- package/src/index.js +5 -0
- package/src/install-skill.js +89 -89
- package/src/profiles.js +158 -158
- package/src/skill-files.js +94 -94
- package/templates/web-app/AGENTS.md +27 -0
- package/templates/web-app/README.md +30 -0
- package/templates/web-app/docs/auth-and-deploy.md +17 -0
- package/templates/web-app/docs/data-contract.md +21 -0
- package/templates/web-app/docs/design.md +13 -0
- package/templates/web-app/docs/filters.md +89 -0
- package/templates/web-app/index.html +2 -0
- package/templates/web-app/package-lock.json +2191 -0
- package/templates/web-app/package.json +15 -0
- package/templates/web-app/public/app-config.json +11 -0
- package/templates/web-app/scripts/dev-proxy.mjs +56 -0
- package/templates/web-app/src/App.tsx +31 -0
- package/templates/web-app/src/components/Chart.tsx +31 -0
- package/templates/web-app/src/components/DataTable.tsx +14 -0
- package/templates/web-app/src/components/FilterBar.tsx +42 -0
- package/templates/web-app/src/components/Widget.tsx +28 -0
- package/templates/web-app/src/components/calendar.ts +14 -0
- package/templates/web-app/src/finebi/client.ts +37 -0
- package/templates/web-app/src/finebi/date.d.ts +1 -0
- package/templates/web-app/src/finebi/date.js +5 -0
- package/templates/web-app/src/finebi/filters.d.ts +4 -0
- package/templates/web-app/src/finebi/filters.js +106 -0
- package/templates/web-app/src/finebi/normalize.ts +77 -0
- package/templates/web-app/src/finebi/types.ts +18 -0
- package/templates/web-app/src/main.tsx +5 -0
- package/templates/web-app/src/services/view-data.ts +18 -0
- package/templates/web-app/src/styles.css +8 -0
- package/templates/web-app/tests/calendar.test.mjs +25 -0
- package/templates/web-app/tests/proxy.test.mjs +84 -0
- package/templates/web-app/tests/runtime.test.mjs +136 -0
- package/templates/web-app/tsconfig.json +4 -0
- package/templates/web-app/vite.config.ts +13 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# 控件筛选与页面联动
|
|
2
|
+
|
|
3
|
+
## 1. 通用交互约定
|
|
4
|
+
|
|
5
|
+
模板把页面筛选状态统一转换为 FineBI `widgets/query` 的 `refer`。`src/finebi/filters.js` 是配置校验、值编码和代理校验的共同入口;UI 库可以替换,不能绕过这个入口拼装条件。
|
|
6
|
+
|
|
7
|
+
### 1.1 绑定与能力发现
|
|
8
|
+
|
|
9
|
+
开发时从同一看板的 `dashboard info` 获取真实控件 `filterName` 和实例信息,必要时读取 `dashboard bean` 确认控件类型、绑定字段、保存默认值和作用范围。`name` 必须使用解码后的真实控件名;`label` 仅用于显示。重名控件需先在源看板消除歧义,不能用 label 或组件 ID 替代请求键。没有控件时 `filters` 保持空数组,不把任意字段伪造成服务端筛选。
|
|
10
|
+
|
|
11
|
+
`app inspect` 和浏览器只检查本地配置,不访问远端,也不能证明控件类型或作用范围正确。交付前必须用真实接口证明条件生效。配置不复制源看板默认值,恢复默认后由服务端读取当前保存条件。
|
|
12
|
+
|
|
13
|
+
### 1.2 条件组合与刷新
|
|
14
|
+
|
|
15
|
+
页面编辑的是草稿,点击“应用筛选”后统一提交;未应用时明确提示页面仍显示上次查询结果。应用和刷新均重查全部绑定组件,取消旧请求,并阻止旧响应覆盖新结果。请求失败显示错误,不以过期结果冒充最新数据。
|
|
16
|
+
|
|
17
|
+
同一文本多选表示选中值集合;不同控件的组合、与组件自身过滤的叠加以及作用组件,遵循源看板配置。页面不提供任意 AND/OR 表达式,不自动继承原生点击联动,不根据返回数据猜测控件作用范围。联动开发必须先建立真实控件映射。
|
|
18
|
+
|
|
19
|
+
### 1.3 空值、默认与清除
|
|
20
|
+
|
|
21
|
+
| 页面状态 | 请求及含义 |
|
|
22
|
+
|---|---|
|
|
23
|
+
| 未设置、`undefined`、空字符串;多选 `[]`;区间两端为空 | 省略请求键,使用源看板保存条件 |
|
|
24
|
+
| 恢复单项默认 | 将该项草稿设为空;应用后省略该项 |
|
|
25
|
+
| 恢复全部默认 | 立即提交空 `refer`,重新查询保存条件 |
|
|
26
|
+
| `null`,且配置 `allowNull:true` | 文本/数值选择发送 `["null"]`,只筛选空值 |
|
|
27
|
+
| 日期或年月区间只填写一端 | 只发送该端;服务端将另一端设为空,不继承保存端点 |
|
|
28
|
+
| 清除所有服务端筛选、不限制任何数据 | 当前协议没有统一清除操作,模板不提供这一承诺 |
|
|
29
|
+
|
|
30
|
+
“恢复默认”和“筛选空值”是不同操作。文本值 `"null"` 是原生保留字,不能作为普通文本值传递;多选不支持空值与普通值混选。日期类不支持 `allowNull`。
|
|
31
|
+
|
|
32
|
+
## 2. 模板当前内置支持
|
|
33
|
+
|
|
34
|
+
默认筛选栏使用 Ant Design:单选/多选可搜索本地配置的候选项,`date-range` 和 `month-range` 使用日历区间选择器,支持只填写一端、清空和重置。其余类型保留下面的字符串或选项状态;组件库不改变请求语义。样式与组件替换见[页面骨架](design.md)。
|
|
35
|
+
|
|
36
|
+
### 2.1 配置与状态
|
|
37
|
+
|
|
38
|
+
每个配置包含 `{name,label,type}`,`type` 省略时为 `select`。未知类型、重复名称、区间后缀与其他控件名冲突均提前报错。`options` 只用于选择类,每项为 `{label,value}`,value 是源控件接受的字符串,不能为空或重复。
|
|
39
|
+
|
|
40
|
+
| type | 页面状态(应用前) | 原生 refer 示例 | 对应源控件 |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| `text` | 字符串,精确值选择 | `{"地区":["上海"]}` | 文本选择控件;不是包含/模糊匹配 |
|
|
43
|
+
| `select` | 一个 options.value | `{"地区":["上海"]}` | 文本或数值选择 |
|
|
44
|
+
| `multi-select` | options.value 字符串数组 | `{"地区":["上海,北京"]}` | 文本或数值选择 |
|
|
45
|
+
| `number` | 十进制字符串 | `{"金额":["-12.50"]}` | NumberControl 数值选择;不是数值范围/滑块 |
|
|
46
|
+
| `date` | `YYYY-MM-DD` | `{"日期":["2024-02-29"]}` | 单日期或日期面板 |
|
|
47
|
+
| `date-range` | `{start,end}`,日期字符串 | `{"日期范围_s":["2024-02-01"],"日期范围_e":["2024-02-29"]}` | 日期区间 |
|
|
48
|
+
| `year` | `YYYY` | `{"年份":["2024"]}` | 年份 |
|
|
49
|
+
| `month` | `YYYY-MM` | `{"年月":["2024-02"]}` | 年月 |
|
|
50
|
+
| `month-range` | `{start,end}`,年月字符串 | `{"年月范围_s":["2024-01"],"年月范围_e":["2024-03"]}` | 年月区间 |
|
|
51
|
+
| `quarter` | `YYYY-Q`,Q 为 1–4 | `{"季度":["2024-3"]}` | 年季度 |
|
|
52
|
+
| `time-label` | 配置中的标签名称 | `{"时间标签":["本月"]}` | 源看板已配置的时间标签 |
|
|
53
|
+
|
|
54
|
+
日期选择器可以使用原生 HTML 或 UI 库,状态始终是日历字符串,不转时间戳或时区。年份限 0001–9999,校验真实日历和起止顺序;区间端点必须显式给出字符串,空字符串表示该端留空。服务端决定日期边界的计算口径,页面不自行追加 23:59:59 或把结束日期加一天。
|
|
55
|
+
|
|
56
|
+
数值保留十进制字符串精度,不先转 JavaScript Number;接受负号和小数,不接受指数、千分位、单位、NaN 或 Infinity。多选的外层请求数组始终只有一个字符串;不能直接发送 `["上海","北京"]`,服务端只读取首项。原生逗号协议没有转义,普通文本输入及选择项中的逗号和字面值 `"null"` 被拒绝。时间标签按完整名称匹配,不使用逗号拆分规则。
|
|
57
|
+
|
|
58
|
+
### 2.2 配置示例
|
|
59
|
+
|
|
60
|
+
以下名称为示例,必须替换为同一看板中类型相符的真实 filterName。
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
"filters": [
|
|
64
|
+
{"name":"地区", "label":"销售地区", "type":"multi-select", "allowNull":true,
|
|
65
|
+
"options":[{"label":"上海", "value":"上海"},{"label":"北京", "value":"北京"}]},
|
|
66
|
+
{"name":"订单日期范围", "label":"订单日期", "type":"date-range"},
|
|
67
|
+
{"name":"金额选择", "label":"金额", "type":"number"}
|
|
68
|
+
]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
上述区间配置用真实控件名,不手动添加 `_s/_e`;编码器统一生成后缀并检查冲突。单日期控件不能按区间协议绑定。已有两个单独 `date` 配置绑定 `_s/_e` 的项目可以继续运行,但只有 `date-range` 把两端作为一个整体校验。
|
|
72
|
+
|
|
73
|
+
### 2.3 候选项与支持边界
|
|
74
|
+
|
|
75
|
+
选择类当前使用配置中的静态 `options`,不自动查询完整候选项、不提供远端搜索、分页或级联。静态选项应来自经过核实的源控件值或业务明确允许的子集;不能把本次已加载结果中的唯一值宣称为全部候选项。`time-label.options` 必须来自源控件已有标签名称,不能自行发明动态日期表达式。
|
|
76
|
+
|
|
77
|
+
数值范围、滑块、树控件、级联控件、任意比较运算、日期时间精度输入、混选空值与普通值均不在当前适配范围。配置未知类型会报错;不要换成 `text` 绕过检查。原生 refer 没有覆盖能力的类型,需要先增加并验证服务端协议,不能只添加 UI。
|
|
78
|
+
|
|
79
|
+
本地搜索、排序、分页仅作用于已加载结果;`maxRows` 限制单次返回量,当前不提供服务端续页和全局排序。
|
|
80
|
+
|
|
81
|
+
## 3. 后续扩展方式
|
|
82
|
+
|
|
83
|
+
更换同语义 UI 组件时,沿用表中的状态类型和统一编码器。新增能力按以下链路扩展:
|
|
84
|
+
|
|
85
|
+
1. 确认源控件的类型、名称、字段、默认值、作用范围及真实请求编码,区分浏览器内部控件状态与 HTTP refer 协议;检查目标部署版本确实支持覆盖。
|
|
86
|
+
2. 扩展 `src/finebi/types.ts` 和 `filters.js` 中的配置、状态校验、编码和反向请求校验。CLI 的 `app inspect`、客户端和开发代理共用该模块,不另建一套允许列表。
|
|
87
|
+
3. 在 `FilterBar` 或业务页面接入控件。动态候选项必须有经过验证的接口、访问者权限、搜索/分页语义、加载失败状态、依赖条件和请求取消策略;级联还须定义上游变化后下游选择的保留或清除方式。不从样本推断完整候选项。
|
|
88
|
+
4. 测试合法值、非法值、保留字、名称冲突、空值、恢复默认、开放区间和组合提交;再用真实看板核对请求、数据范围与组件展示。源码或单测通过不能代替部署与浏览器验收。
|
|
89
|
+
5. 同步本契约、模板支持摘要并重新生成分发物。图表库和 UI 组件库选型见[页面骨架](design.md)。
|