@qingflow-tech/qingflow-cli 1.1.51 → 1.1.54
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 +4 -4
- package/npm/lib/runtime.mjs +29 -13
- package/package.json +1 -1
- package/pyproject.toml +8 -2
- package/skills/qingflow-cli/SKILL.md +93 -322
- package/skills/qingflow-cli/manifest.yaml +1 -1
- package/skills/qingflow-cli/reference/00-INDEX.md +4 -4
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md +1 -1
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_BUILDER_VIEWS_WORKFLOW.md +3 -9
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md +3 -137
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_EXPLORATION_REPORT.md +6 -4
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_FIELD_DATA_TYPES.md +14 -14
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md +20 -19
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md +18 -14
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md +7 -12
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md +2 -1
- package/skills/qingflow-cli/reference/builder/20-build-complete-system.md +3 -2
- package/skills/qingflow-cli/reference/builder/30-schema-fields.md +9 -5
- package/skills/qingflow-cli/reference/builder/50-views.md +192 -191
- package/skills/qingflow-cli/reference/builder/80-buttons-associated-resources.md +2 -0
- package/skills/qingflow-cli/reference/builder/README.md +1 -1
- package/skills/qingflow-cli/reference/builder/reference/app-delivery-sop.md +6 -6
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_ADMIN_CHEATSHEET.md +1 -1
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md +76 -95
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_EXPLORATION_REPORT.md +6 -4
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_FIELD_DATA_TYPES.md +13 -13
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_MEMBER_CHEATSHEET.md +20 -19
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md +18 -14
- package/skills/qingflow-cli/reference/data/README.md +32 -0
- package/skills/qingflow-cli/reference/examples/README.md +1 -1
- package/skills/qingflow-cli/reference/examples/views/views_apply_v1alpha1.example.json +14 -0
- package/skills/qingflow-cli/reference/examples/views/views_upsert_table_minimal.example.json +30 -36
- package/skills/qingflow-cli/reference/record/QINGFLOW_CLI_RECORD_SPECIALIZED_WORKFLOW.md +50 -0
- package/skills/qingflow-cli/reference/record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md +2 -1
- package/skills/qingflow-cli/reference/record/analysis/README.md +21 -113
- package/skills/qingflow-cli/reference/record/analysis/analysis-gotchas.md +10 -10
- package/skills/qingflow-cli/reference/record/analysis/analysis-patterns.md +9 -9
- package/skills/qingflow-cli/reference/record/analysis/business-context.md +1 -1
- package/skills/qingflow-cli/reference/record/analysis/confidence-reporting.md +10 -10
- package/skills/qingflow-cli/reference/record/analysis/data-access-playbook.md +52 -80
- package/skills/qingflow-cli/reference/record/analysis/pandas-recipes.md +2 -2
- package/skills/qingflow-common/SKILL.md +7 -4
- package/src/qingflow_mcp/app_form_compat.py +3 -0
- package/src/qingflow_mcp/app_form_validator.py +69 -17
- package/src/qingflow_mcp/builder_facade/app_form.py +497 -100
- package/src/qingflow_mcp/builder_facade/models.py +227 -17
- package/src/qingflow_mcp/builder_facade/schemas/app_form/manifest.json +1 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +64 -30
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +6 -10
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +6 -10
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +11 -18
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +6 -10
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +6 -10
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +6 -10
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +46 -15
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/rich_text.json +146 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +61 -27
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +4 -8
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/formula.json +43 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +7 -12
- package/src/qingflow_mcp/builder_facade/schemas/views/manifest.json +42 -0
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/complete.json +1245 -0
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/button-config.json +53 -0
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/data-permission.json +60 -0
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/display.json +73 -0
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/operation-permission.json +48 -0
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/query-condition.json +47 -0
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/summary.json +319 -0
- package/src/qingflow_mcp/builder_facade/service.py +1709 -518
- package/src/qingflow_mcp/builder_facade/views_extract.py +595 -0
- package/src/qingflow_mcp/builder_facade/views_schema.py +400 -0
- package/src/qingflow_mcp/cli/commands/__init__.py +2 -1
- package/src/qingflow_mcp/cli/commands/builder.py +76 -55
- package/src/qingflow_mcp/cli/commands/data.py +134 -0
- package/src/qingflow_mcp/cli/commands/record.py +1 -1
- package/src/qingflow_mcp/cli/context.py +3 -0
- package/src/qingflow_mcp/cli/formatters.py +97 -1
- package/src/qingflow_mcp/public_surface.py +8 -0
- package/src/qingflow_mcp/response_trim.py +11 -2
- package/src/qingflow_mcp/server.py +2 -0
- package/src/qingflow_mcp/server_app_builder.py +34 -10
- package/src/qingflow_mcp/server_app_user.py +4 -0
- package/src/qingflow_mcp/solution/compiler/view_compiler.py +2 -1
- package/src/qingflow_mcp/solution/executor.py +96 -8
- package/src/qingflow_mcp/solution/spec_models.py +1 -0
- package/src/qingflow_mcp/tools/ai_builder_tools.py +218 -398
- package/src/qingflow_mcp/tools/csv_export.py +168 -0
- package/src/qingflow_mcp/tools/data_tools.py +284 -0
- package/src/qingflow_mcp/tools/record_tools.py +11 -46
- package/src/qingflow_mcp/tools/solution_tools.py +2 -0
- package/src/qingflow_mcp/tools/view_tools.py +0 -6
- package/src/qingflow_mcp/tools/view_writer.py +44 -0
- package/skills/qingflow-cli/reference/examples/views/views_batch_full.example.json +0 -159
- package/skills/qingflow-cli/reference/views_upsert_table_minimal.example.json +0 -42
|
@@ -38,7 +38,7 @@ Rules:
|
|
|
38
38
|
- Portal chart sections use one `chart` field: `{"chart_id":"..."}` to reuse an existing QingBI chart, or `{"app_key":"...","name":"...","chart_type":"...",...}` to create/update the needed chart inline.
|
|
39
39
|
- Buttons are part of the view design: declare them in the target view with `action_buttons`.
|
|
40
40
|
- Update instructions live inside the resource document. Do not use `update-*` as a separate main route.
|
|
41
|
-
- Batch read, batch write, and patch are resource-specific variants, not separate workflows.
|
|
41
|
+
- Batch read, batch write, and patch are resource-specific variants, not separate workflows. View writes are single-operation: `builder views apply` handles one view per call; consult [50-views.md](./50-views.md) before preparing multiple view changes.
|
|
42
42
|
|
|
43
43
|
## File responsibilities
|
|
44
44
|
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
这些不是独立流程,而是读、写、改三个动作的多资源形态:
|
|
42
42
|
|
|
43
43
|
- **批量读**:读多个应用时优先用 `--app-keys`,例如 `builder app get --app-keys a,b fields`、`builder app get --app-keys a,b views`、`builder button get --app-keys a,b`、`builder associated-resource get --app-keys a,b`、`builder publish verify --app-keys a,b`。读结果同时看成功项和 `errors[]`,不要因单个应用失败否定全批。
|
|
44
|
-
-
|
|
44
|
+
- **批量写**:仅在资源契约明确支持时使用批量文件;视图例外,`builder views apply` 每次只提交一个视图的一种操作,不支持多视图批量创建或把 upsert/patch/remove 混在一次调用中。应用表单不走 `apps-file`,而是每个应用独立提交完整 AppForm 声明。
|
|
45
45
|
- **局部改**:只改已存在资源的少量参数时用对应 patch 文件;`patch_*` 内只写目标定位字段和 `set/unset`,不要用不完整 `upsert_*` 伪装局部更新。
|
|
46
46
|
|
|
47
47
|
---
|
|
@@ -201,8 +201,8 @@ qingflow builder schema apply \
|
|
|
201
201
|
- 如果返回 `MULTI_APP_STATIC_VALIDATION_FAILED`,读取 `details.issues[]` 的 `path/error_code/fix_hint` 修 payload;这是写入前失败,通常可以修正后重试,不需要 readback。
|
|
202
202
|
- 多应用 schema apply 不做事务回滚;如果部分失败,只补失败的 `apps[].row_number`,不要整批重复提交。
|
|
203
203
|
- 这个模式只负责应用壳与字段;视图、按钮、关联资源、报表仍拿返回的 `app_key` 继续走各自 apply 工具。
|
|
204
|
-
- `target_app_ref`、`as_data_title`、`display_field` 等只属于旧载荷。迁移时将关系改写为 AppForm `config.targetAppKey`、`config.
|
|
205
|
-
- 历史 schema adapter 写入后可读 `details.relation_readback_matrix[]`:逐项核对旧 `target_app_key`、`relation_mode`、`display_field`、`visible_fields`。迁移到当前 AppForm 后,改为读取 draft/published form 的 `config.targetAppKey`、`config.relationMode`、`config.
|
|
204
|
+
- `target_app_ref`、`as_data_title`、`display_field` 等只属于旧载荷。迁移时将关系改写为 AppForm `config.targetAppKey`、`config.displayFields[]`(含 `auth`)、`config.twoWayBoundField`,并使用已确认的真实 app key。
|
|
205
|
+
- 历史 schema adapter 写入后可读 `details.relation_readback_matrix[]`:逐项核对旧 `target_app_key`、`relation_mode`、`display_field`、`visible_fields`。迁移到当前 AppForm 后,改为读取 draft/published form 的 `config.targetAppKey`、`config.relationMode`、`config.twoWayBoundField`、`config.displayFields[]`,不要提交旧 `update_fields` patch。
|
|
206
206
|
- 一个应用可以包含多个 `relation` 字段;不要因为 relation 数量超过 1 就降级成文本。若真实写入失败或 relation readback mismatch,只按实际错误和 `details.relation_repair_plan[]` 做最小修复。
|
|
207
207
|
- 完整系统遇到超时、`partial_success`、`write_executed=true`、`safe_to_retry=false` 或 readback 不完整时,先按 §3.4 读回,不要直接拆成单应用创建。
|
|
208
208
|
|
|
@@ -349,7 +349,7 @@ qingflow builder flow apply \
|
|
|
349
349
|
| **`address`** | 地址复合字段。 |
|
|
350
350
|
| **`attachment`** | 附件。 |
|
|
351
351
|
| **`boolean`** | 是否。 |
|
|
352
|
-
| **`relation`** | 旧载荷使用 `target_app_key` / `target_app_ref`;当前 AppForm 使用 `config.targetAppKey`、`config.relationMode`、`config.
|
|
352
|
+
| **`relation`** | 旧载荷使用 `target_app_key` / `target_app_ref`;当前 AppForm 使用 `config.targetAppKey`、`config.relationMode`、`config.twoWayBoundField`、`config.displayFields[]`。 |
|
|
353
353
|
| **`subtable`** | 当前 AppForm 使用 `subfields[]` 及 Schema 返回的 camelCase 配置;旧 `subfield_updates` 只作迁移线索。 |
|
|
354
354
|
| **`q_linker`** | 当前 AppForm 使用 `config.qLinkerBinding`,其 `outputs[].targetField` 必须按字段 Schema 配置。 |
|
|
355
355
|
| **`code_block`** | 当前 AppForm 使用 `config.codeBlockBinding`,其 `outputs[].targetField` 必须按字段 Schema 配置。 |
|
|
@@ -374,14 +374,14 @@ qingflow builder flow apply \
|
|
|
374
374
|
|
|
375
375
|
后端很多保存接口仍是整份配置保存,但新版 CLI/MCP 对外提供 **public partial patch**:
|
|
376
376
|
|
|
377
|
-
- 已有视图:`builder views apply --views-file
|
|
377
|
+
- 已有视图:`builder views apply --app-key APP_KEY --patch-views-file PATH`,文件只放一项,写 `view_key`/`name` 与 `set`/`unset`
|
|
378
378
|
- 已有按钮:`builder button apply --patch-buttons-file`
|
|
379
379
|
- 已有关联资源:`builder associated-resource apply --patch-resources-file`
|
|
380
380
|
- 已有报表:`builder charts apply --patch-file`
|
|
381
381
|
- 已有流程节点:`builder flow apply --patch-nodes-file`
|
|
382
382
|
- 已有门户组件:`builder portal apply --patch-sections-file`
|
|
383
383
|
|
|
384
|
-
局部更新的语义是:你只写要替换的参数,工具内部读取当前配置、补齐后端必填字段,再整份保存。每个 patch 项直接使用对象真实定位字段 + `set` / 可选 `unset`,不要写字面量 `selector` key。示例:`{"
|
|
384
|
+
局部更新的语义是:你只写要替换的参数,工具内部读取当前配置、补齐后端必填字段,再整份保存。每个 patch 项直接使用对象真实定位字段 + `set` / 可选 `unset`,不要写字面量 `selector` key。示例:`{"view_key":"VIEW_KEY","set":{"query_conditions":{...}}}`、`{"button_id": 1001, "set": {"button_text": "新名称"}}`、`{"associated_item_id": 123, "set": {"match_mappings": [...]}}`、`{"chart_id": 456, "set": {"name": "新报表名"}}`、`{"id": "node_1", "set": {"name": "主管审批"}}`、`{"chart": {"chart_key": "xxx"}, "set": {"rows": 7}}`。
|
|
385
385
|
|
|
386
386
|
`upsert_*` 用于创建或提供完整目标配置;不要只给 `name/type/query_conditions` 这类局部片段然后期待后端自动合并。
|
|
387
387
|
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
## 4. 记录数据
|
|
45
45
|
|
|
46
|
-
与 **[成员速查](./QINGFLOW_CLI_MEMBER_CHEATSHEET.md)** 及 **[SKILL.md](../../SKILL.md)
|
|
46
|
+
与 **[成员速查](./QINGFLOW_CLI_MEMBER_CHEATSHEET.md)** 及 **[SKILL.md](../../SKILL.md)** 一致:直接数据操作使用 [data 操作说明](../data/README.md);最终统计结论、分析报告、趋势/排名/比例/分布统一使用 **[record/analysis](../record/analysis/README.md) 的 `data query --all --output csv -> Python/pandas`**。
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
@@ -1,139 +1,120 @@
|
|
|
1
|
-
# Qingflow CLI
|
|
1
|
+
# Qingflow CLI:应用数据查询工作流
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
5
|
-
>
|
|
3
|
+
> **用途**:使用视图无关的 `data query/get` 完成普通应用数据查询、筛选、排序、分页和单条读取。
|
|
4
|
+
> **边界**:本文只给流程与 JSON 形状;操作符、字段类型、权限范围和动态限制以当前 `--help`、`schema`、`field_capabilities`、`access` 与 `hints` 为准。
|
|
5
|
+
> **record 专项**:需要完整日志、附件/图片上下文时,阅读 [record 专项参考](../record/QINGFLOW_CLI_RECORD_SPECIALIZED_WORKFLOW.md)。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## 概念步骤 → CLI 映射
|
|
10
|
-
|
|
11
|
-
| 习惯概念名(编排/文档) | CLI 等价命令 | 必填要点 |
|
|
12
|
-
| --- | --- | --- |
|
|
13
|
-
| `app_get`(列应用内可访问视图) | `qingflow --json app get --app-key <APP_KEY>` | 从返回体的 **`data`(若存在)** 内取 `accessible_views[]` |
|
|
14
|
-
| `record_schema_get`,`schema_mode=browse` | `qingflow --json record schema browse --app-key <APP_KEY> --view-id <VIEW_ID>` | 子命令 **`browse`** 即「浏览视图」表结构 |
|
|
15
|
-
| `record_list` | `qingflow --json record list --app-key <APP_KEY> --view-id <VIEW_ID> [--query 文本] [--query-field FIELD_ID] [--page-size N]` | 样本浏览 / 模糊定位,默认最多返回 10 条;`query_fields` 是全文搜索字段范围 |
|
|
16
|
-
| `record_get` | `qingflow --json record get --app-key <APP_KEY> --record-id <RECORD_ID> [--view-id <VIEW_ID>]` | 前端详情页首屏上下文:字段、首屏日志、引用、关联资源、图片与文件资产 |
|
|
17
|
-
| `record_logs_get` | `qingflow --json record logs --app-key <APP_KEY> --record-id <RECORD_ID> [--view-id <VIEW_ID>]` | 单条记录全量可见数据日志 + 流程日志;自动分页写本地 JSONL,响应只返回摘要和文件路径 |
|
|
18
|
-
|
|
19
|
-
**补充**:若尚未持有 `APP_KEY`,先做 `qingflow --json app list [--query <关键词>]`,在 `items[].app_key` 里选应用;带 `--query` 时读取 `matched_count` / `unfiltered_count` 判断是否命中。
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## 推荐执行顺序
|
|
7
|
+
## 推荐顺序
|
|
24
8
|
|
|
25
9
|
```text
|
|
26
|
-
|
|
27
|
-
→
|
|
28
|
-
→
|
|
29
|
-
→
|
|
30
|
-
→
|
|
10
|
+
data query(默认带 schema)
|
|
11
|
+
→ 从 schema / field_capabilities 定位 field_id 与能力
|
|
12
|
+
→ 按需追加 columns / where / sort
|
|
13
|
+
→ 根据 records.has_more 与 hints 继续分页或收窄范围
|
|
14
|
+
→ 已知 record_id 时按需 data get
|
|
31
15
|
```
|
|
32
16
|
|
|
33
|
-
|
|
34
|
-
- **当你需要稳定映射列名、写过滤条件或对接自动化**时,应按上表**显式**走 `schema browse`,避免对着 `list` 里中文列名猜字段定义。
|
|
35
|
-
- **当用户只给出模糊信息定位单条数据**时,走 `record schema browse` 确认可搜索字段,再用 `record list --query ... --query-field ...` 返回候选;只有候选明确后才 `record get`。
|
|
36
|
-
- **需要分组/聚合统计、最终统计结论、分析报告、趋势/排名/比例/分布**时,必须按 **[record/analysis](../record/analysis/README.md)** 执行 `app get -> record schema browse -> record access -> Python/pandas -> final answer`。
|
|
17
|
+
已知 `app_key` 时直接 query;未知时只做必要的 `app list --query`。不要先执行 `app get → record schema browse`,普通数据查询也不需要 `view_id`。
|
|
37
18
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
## 命令模板(占位符替换即可)
|
|
41
|
-
|
|
42
|
-
**1)应用与视图**
|
|
19
|
+
## 1. 首次查询与字段能力
|
|
43
20
|
|
|
44
21
|
```bash
|
|
45
|
-
|
|
22
|
+
mkdir -p tmp
|
|
23
|
+
qingflow --json data query --app-key APP_KEY \
|
|
24
|
+
> tmp/qingflow_data_query.json
|
|
46
25
|
```
|
|
47
26
|
|
|
48
|
-
|
|
27
|
+
首次查询保留默认 schema。响应重点读取:
|
|
49
28
|
|
|
50
|
-
|
|
29
|
+
- `records.items[]`:当前页记录;
|
|
30
|
+
- `records.page/page_size/has_more`:分页状态;
|
|
31
|
+
- `schema`:字段 id、标题与结构;
|
|
32
|
+
- `field_capabilities`:筛选、排序和写入能力;
|
|
33
|
+
- `access`:本次实际访问范围;
|
|
34
|
+
- `hints`:需要收窄、继续、停止或调整参数的动态提示。
|
|
51
35
|
|
|
52
|
-
|
|
36
|
+
不要用 insert/update 探测字段能力,也不要从 record schema 推断 data 能力。
|
|
53
37
|
|
|
54
|
-
|
|
55
|
-
qingflow --json record schema browse \
|
|
56
|
-
--app-key <APP_KEY> \
|
|
57
|
-
--view-id <VIEW_ID> \
|
|
58
|
-
> tmp/qingflow_schema_browse.json
|
|
59
|
-
```
|
|
38
|
+
## 2. 字段筛选
|
|
60
39
|
|
|
61
|
-
|
|
40
|
+
从首次响应中准确定位目标 `field_id`,并确认该字段 `filter_operators` 中存在所需 `op`、值符合 `value_shape`。例如:
|
|
62
41
|
|
|
63
|
-
|
|
42
|
+
```json
|
|
43
|
+
[
|
|
44
|
+
{"field_id": 101, "op": "eq", "value": "已完成"}
|
|
45
|
+
]
|
|
46
|
+
```
|
|
64
47
|
|
|
65
48
|
```bash
|
|
66
|
-
qingflow --json
|
|
67
|
-
--app-key
|
|
68
|
-
--
|
|
69
|
-
> tmp/
|
|
49
|
+
qingflow --json data query \
|
|
50
|
+
--app-key APP_KEY \
|
|
51
|
+
--where-file tmp/where.json \
|
|
52
|
+
> tmp/qingflow_data_filtered.json
|
|
70
53
|
```
|
|
71
54
|
|
|
72
|
-
|
|
55
|
+
本文示例不代表完整操作符矩阵;真实能力只认当前响应。
|
|
73
56
|
|
|
74
|
-
|
|
57
|
+
## 3. 排序
|
|
75
58
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
59
|
+
只对 `sort_supported=true` 的字段构造排序:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
[
|
|
63
|
+
{"field_id": 102, "direction": "desc"}
|
|
64
|
+
]
|
|
79
65
|
```
|
|
80
66
|
|
|
81
|
-
|
|
67
|
+
```bash
|
|
68
|
+
qingflow --json data query \
|
|
69
|
+
--app-key APP_KEY \
|
|
70
|
+
--sort-file tmp/sort.json \
|
|
71
|
+
> tmp/qingflow_data_sorted.json
|
|
72
|
+
```
|
|
82
73
|
|
|
83
|
-
|
|
74
|
+
## 4. 分页
|
|
84
75
|
|
|
85
76
|
```bash
|
|
86
|
-
qingflow --json
|
|
87
|
-
|
|
88
|
-
--view-id <VIEW_ID> \
|
|
89
|
-
--query "北京和路元" \
|
|
90
|
-
--page-size 20 \
|
|
91
|
-
--query-field 6299262 \
|
|
92
|
-
> tmp/qingflow_record_lookup.json
|
|
77
|
+
qingflow --json data query --app-key APP_KEY --page 1 --page-size 100 \
|
|
78
|
+
> tmp/qingflow_data_page_1.json
|
|
93
79
|
```
|
|
94
80
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
**4)单条记录详情**
|
|
81
|
+
仅当 `records.has_more=true` 时请求下一页,并继续读取 `hints`:
|
|
98
82
|
|
|
99
83
|
```bash
|
|
100
|
-
qingflow --json
|
|
101
|
-
|
|
102
|
-
--record-id <RECORD_ID> \
|
|
103
|
-
--view-id <VIEW_ID> \
|
|
104
|
-
> tmp/qingflow_record_get.json
|
|
84
|
+
qingflow --json data query --app-key APP_KEY --page 2 --page-size 100 \
|
|
85
|
+
> tmp/qingflow_data_page_2.json
|
|
105
86
|
```
|
|
106
87
|
|
|
107
|
-
|
|
88
|
+
不要只按 `total/page_size` 猜测完整性;若 hints 要求收窄范围或响应说明结果不完整,先按提示处理。
|
|
89
|
+
|
|
90
|
+
## 5. 单条读取
|
|
108
91
|
|
|
109
|
-
|
|
92
|
+
从 query 得到明确 `record_id` 后,按需读取单条:
|
|
110
93
|
|
|
111
94
|
```bash
|
|
112
|
-
qingflow --json record
|
|
113
|
-
|
|
114
|
-
--record-id <RECORD_ID> \
|
|
115
|
-
--view-id <VIEW_ID> \
|
|
116
|
-
> tmp/qingflow_record_logs.json
|
|
95
|
+
qingflow --json data get --app-key APP_KEY --record-id RECORD_ID \
|
|
96
|
+
> tmp/qingflow_data_get.json
|
|
117
97
|
```
|
|
118
98
|
|
|
119
|
-
|
|
99
|
+
`data get` 用于普通单条业务数据。若用户需要详情页附件、图片或完整数据/流程日志,切换到 record 专项,不要把它们误写成 data get 的默认合同。
|
|
120
100
|
|
|
121
|
-
|
|
101
|
+
## 6. 统计分析
|
|
122
102
|
|
|
123
|
-
|
|
103
|
+
最终统计结论、分布、比例、排名和趋势使用:
|
|
124
104
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
## 落盘与解析
|
|
105
|
+
```bash
|
|
106
|
+
qingflow --json data query \
|
|
107
|
+
--app-key APP_KEY \
|
|
108
|
+
--where-file tmp/where.json \
|
|
109
|
+
--all --output csv \
|
|
110
|
+
> tmp/qingflow_data_analysis.json
|
|
111
|
+
```
|
|
133
112
|
|
|
134
|
-
|
|
135
|
-
- 解析前**先 unwrap `data`**:多数业务成功响应为 `{ "data": { ... } }`,与 `schema browse` 部分字段在顶层的形态可能不同,以每次响应为准。
|
|
113
|
+
读取全部 `files[].local_path` 后再用 Python/pandas 分析。只有 `complete=true`、`truncated=false`、`safe_for_final_conclusion=true` 时,才能形成完整总体结论;详见 [数据分析说明](../record/analysis/README.md)。
|
|
136
114
|
|
|
137
|
-
|
|
115
|
+
## 落盘与错误处理
|
|
138
116
|
|
|
139
|
-
|
|
117
|
+
- query/get 的 JSON 与分析摘要必须落盘,只解析所需键;CSV 读取本地文件路径,不打印全文。
|
|
118
|
+
- 参数错误按当前 `qingflow data ... --help` 修正。
|
|
119
|
+
- 权限、范围和字段错误按响应说明处理;data 失败时不得自动改用 record 查询绕过限制。
|
|
120
|
+
- CLI 升级后用 `qingflow data --help`、`qingflow data query --help`、`qingflow data get --help` 复核。
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
## 1. 当前能力树摘要
|
|
8
8
|
|
|
9
|
-
-
|
|
9
|
+
- 顶层数据操作目标入口为 `data query/get/insert/update/delete`;发布前必须以当前真实 package 的 `qingflow data --help` 复核可用性。
|
|
10
10
|
- `builder` 与 `build` 等价;默认写法仍推荐 `builder`。
|
|
11
11
|
- `record schema`:公开主路径为 `browse`、`insert`、`update`、`import`、`code-block`;`applicant` 仅为兼容保留入口,不作为推荐链路。
|
|
12
12
|
- `record` 公开执行入口:`list`、`access`、`get`、`logs`、`insert`、`update`、`delete`、`code-block-run`。
|
|
13
|
-
- 最终统计结论统一按 [record/analysis](../record/analysis/README.md) 走 `
|
|
13
|
+
- 最终统计结论统一按 [record/analysis](../record/analysis/README.md) 走 `data query --all --output csv -> Python/pandas`,不要寻找或使用其它聚合捷径。
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
@@ -37,13 +37,15 @@
|
|
|
37
37
|
| 入口 | 当前定位 |
|
|
38
38
|
| --- | --- |
|
|
39
39
|
| `record list` | 样本浏览 / 模糊定位候选;默认最多返回 10 条,返回 `data.pagination.total_count`,带 `--query` 时看 `lookup.total_count` 与 `lookup.next_action` |
|
|
40
|
-
| `record access` |
|
|
40
|
+
| `record access` | 旧 CLI 非默认兼容入口;不得作为分析默认链或 data query 失败后的自动回退 |
|
|
41
41
|
| `record get` | 前端详情页首屏上下文;字段、引用、首屏数据日志、首屏流程日志、关联资源、`media_assets`、`file_assets` |
|
|
42
42
|
| `record logs` | 单条记录全量可见数据日志 + 流程日志;自动分页写本地 JSONL,响应给路径和完整性 |
|
|
43
43
|
| `record insert` | 批量 `items` JSON;单条也是 `items` 数组一行;CLI 用 `--items-file` |
|
|
44
44
|
| `record update` | 单条 `--record-id + --fields-file` 或批量 `--items-file`;不要混用 |
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
直接 query/get/insert/update/delete 统一阅读 [data 操作说明](../data/README.md) 并使用对应 data 工具。最终分析使用 `data query --all --output csv`,按真实响应的 `files[].local_path` 读取全部 CSV 分片。
|
|
47
|
+
|
|
48
|
+
`record_get` 下载本地附件的规则仅适用于用户明确要求旧 CLI 兼容入口的场景。
|
|
47
49
|
|
|
48
50
|
---
|
|
49
51
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Qingflow CLI:字段数据类型(Schema / 列表 / 写入)
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
> **依据**:当前
|
|
5
|
-
>
|
|
3
|
+
> **用途**:普通数据查询、读取和写入默认使用 **[data 操作说明](../data/README.md)**,先读取 `data query/get` 返回的 **`schema + field_capabilities`**,再按 `data insert/update` 的字段能力构造值。本文保留旧 `record` 字段形态,供用户明确要求兼容旧命令时参考。
|
|
4
|
+
> **依据**:当前 data 合同以 `field_id`、`filter_operators`、`value_shape`、`write_kind`、`insertable` 和 `updatable` 为事实源;运行时字段错误仍是最终结果。旧 `record schema` 的精简 `kind` 不得代替该合同。
|
|
5
|
+
> **关联**:默认数据操作见 **[data 操作说明](../data/README.md)**;旧 record 写入值细节与成员/部门见 **[QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md](../record/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md)**,更新流程见 **[QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](../record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)**;**搭建侧** AppForm 的 `type` 见 **[30-schema-fields.md](../builder/30-schema-fields.md)**;主技能 **[../SKILL.md](../../SKILL.md)**。
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## 1. `fields[]`
|
|
9
|
+
## 1. 旧 record `fields[]` 兼容结构(`--json` 精简后)
|
|
10
10
|
|
|
11
11
|
| 字段 | 含义 |
|
|
12
12
|
|------|------|
|
|
13
|
-
| **`field_id`** | 内部题 id
|
|
13
|
+
| **`field_id`** | 内部题 id(数字);data query 的 `columns` / `where` / `sort` 以此引用列。 |
|
|
14
14
|
| **`title`** | 题目标题;insert/update 的 `fields` map 键通常与之一致。 |
|
|
15
15
|
| **`kind`** | 见 **§2 `kind` 枚举**;决定读写时值的形态。 |
|
|
16
16
|
| **`options`** | 可选;**`kind=select`** 时常为允许选项的字符串列表。 |
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
| **`required`** | 部分场景(如 **`record schema update`** 拆出的 `required_fields` / `optional_fields`)出现。 |
|
|
21
21
|
| **`template`** | 少数响应里与 **`payload_template`** 联动出现,供生成初稿。 |
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
**兼容说明**:旧 `browse` 产出视图表头的精简 **`fields[]`**,旧 `record get` 产出记录详情字段,一般 **不含** 完整 **`que_type`/`writable`** 元数据。普通数据操作不要据此猜测字段能力;应读取 data 返回的 `schema + field_capabilities`。
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
27
|
## 2. `kind` 枚举(CLI 对外)
|
|
28
28
|
|
|
29
|
-
内部写入类别经归并后形成下表 **`kind
|
|
29
|
+
旧 record 内部写入类别经归并后形成下表 **`kind`**;本表仅用于显式兼容旧命令,不是普通 data 操作的能力事实源:
|
|
30
30
|
|
|
31
31
|
| CLI `kind` | 维护侧常见内部类别(参考) | 在 `record list` / `record get` / `record access` 中(常见) | insert/update 写入值 |
|
|
32
32
|
|------------|-----------------------------------|--------------------------------------------|----------------------------------|
|
|
@@ -110,20 +110,20 @@
|
|
|
110
110
|
## 4. 与 `field_id` / 列选择
|
|
111
111
|
|
|
112
112
|
|
|
113
|
-
- **`
|
|
114
|
-
- **`
|
|
113
|
+
- **`data query --columns-file`**:列投影使用数字 `field_id`,并与 `schema`、`field_capabilities` 对照。
|
|
114
|
+
- **`data get`**:按记录 id 读取普通数据详情;需要日志、引用或资产等旧专用上下文时,才显式使用相应 record 命令。
|
|
115
115
|
- **标题重复**:同一 `title` 可能对应多个 `field_id`(极少见);列表 DSL 应用 **`field_id`** 消歧。
|
|
116
116
|
|
|
117
117
|
---
|
|
118
118
|
|
|
119
119
|
## 5. 读者操作建议
|
|
120
120
|
|
|
121
|
-
1.
|
|
122
|
-
2. **数据分析**:最终统计结论、分析报告、趋势/排名/比例/分布必须走 **[record/analysis](../record/analysis/README.md) 的 `
|
|
121
|
+
1. **按场景取上下文**:普通查询和读取用 `data query/get`,新建和更新用 `data insert/update`;先检查返回的 `access` 与 `field_capabilities`。旧 record 命令只在用户明确要求兼容能力时使用。
|
|
122
|
+
2. **数据分析**:最终统计结论、分析报告、趋势/排名/比例/分布必须走 **[record/analysis](../record/analysis/README.md) 的 `data query --all --output csv -> Python/pandas`**。
|
|
123
123
|
3. **看 `kind` + `options` / `row_fields` / `target_app_key`**,并对照 **§3 特殊字段** 判断是否存在联动、引用或只读带出。
|
|
124
124
|
4. **选项联动 / 引用带出**:先写 **驱动题**,再写 **被带出的题**;只读带出列 **不要强写**。
|
|
125
|
-
5. **写入前缩小 payload
|
|
125
|
+
5. **写入前缩小 payload**;`data insert --items-file` 的单条输入也是数组中的一个 item。根据 **`write_executed` / `retry_safe` / `field_errors` / `hints`** 迭代(`--json` 保持无损)。
|
|
126
126
|
|
|
127
127
|
---
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
*维护:普通数据操作以 data 返回的字段能力为准;旧 record 的 `kind` 与内部 `que_type` 仅作兼容参考。*
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
# Qingflow CLI 普通成员命令速查表
|
|
2
2
|
|
|
3
3
|
> **适用对象**:当前会话为 **普通/基本成员**(`permission_level` 非租户/应用管理员、`import_capability` 常为无导入权等)。Wingent Momo runtime 下不要先跑 `auth whoami`;只有业务失败、账号不确定或排障时才核对身份。
|
|
4
|
-
> **与主技能关系**:请以 **[SKILL.md](../../SKILL.md)
|
|
4
|
+
> **与主技能关系**:请以 **[SKILL.md](../../SKILL.md)**(本目录上一级)的规则与命令速查表为准。普通查询、读取和写入默认阅读 [data 操作说明](../data/README.md);本文保留的旧 `record` 命令只供用户明确要求兼容入口时查阅。**租户/管理员向差异**请参阅同目录 **[QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./QINGFLOW_CLI_ADMIN_CHEATSHEET.md)**。
|
|
5
5
|
> **可选补充**:同一目录 **[QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md](./QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md)** 收录 **全体角色通用**的子命令逐项模板(与本文分工:本文偏「成员能跑通的策略」,ONE_SHOT 偏「参数逐项闭合示例」)。
|
|
6
6
|
|
|
7
7
|
> **实证**:以下结论以会话内 `qingflow …` 为准;换账号/环境请以 `qingflow … -h` 与必要的身份核对结果为准。
|
|
8
8
|
|
|
9
9
|
**统一习惯**
|
|
10
10
|
|
|
11
|
-
-
|
|
11
|
+
- 直接查询、读取、新增、更新或删除使用 [data 操作说明](../data/README.md),权限范围、字段 schema 和写入结果以 data 工具当次响应为准;最终统计结论统一使用 **[record/analysis](../record/analysis/README.md) 的 `data query --all --output csv -> Python/pandas`**;批量导入阅读导入 SOP。
|
|
12
12
|
- 避免无必要地先绕 `workspace`、`view get`。
|
|
13
13
|
- 加 `--json`,便于区分 **CONFIG_ERROR**(少参)与 **backend**(权限/业务)。
|
|
14
14
|
- `app get` / `portal list` 等业务体常在 `**{ "data": { ... } }`** 里:取 `accessible_views`、`items` 前先 unwrap `data`。
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## 最短路径:普通成员使用 data 查询
|
|
19
19
|
|
|
20
|
-
> **目标**:直接使用当前 CLI 会话,用**最少 RPC
|
|
20
|
+
> **目标**:直接使用当前 CLI 会话,用**最少 RPC、无多余子命令**执行 `data query`;找应用用 `app list [--query 关键词]`,字段结构与能力读取同一次 data 响应的 `schema + field_capabilities`。
|
|
21
21
|
|
|
22
22
|
### 调用次数
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
| 前置 | 命令数 | 说明 |
|
|
26
26
|
| ------------ | ------ | ---------------------------------------- |
|
|
27
|
-
| 从零选应用 | **
|
|
28
|
-
| 已知 `APP_KEY` | **
|
|
27
|
+
| 从零选应用 | **2** | `app list` → `data query` |
|
|
28
|
+
| 已知 `APP_KEY` | **1** | `data query` |
|
|
29
29
|
| 排障 | **+1** | 业务命令明确提示会话不可用、账号不确定时,再追加 `auth whoami` |
|
|
30
30
|
|
|
31
31
|
|
|
@@ -37,12 +37,9 @@ qingflow --json app list
|
|
|
37
37
|
qingflow --json app list --query <关键词>
|
|
38
38
|
# 在 items 中取 app_key → APP_KEY
|
|
39
39
|
|
|
40
|
-
qingflow
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
qingflow --json record list \
|
|
44
|
-
--app-key <APP_KEY> \
|
|
45
|
-
--view-id <VIEW_ID>
|
|
40
|
+
qingflow data query --help
|
|
41
|
+
qingflow --json data query --app-key <APP_KEY>
|
|
42
|
+
# 首次读取保留 include_schema=true,并从同一响应读取 schema + field_capabilities。
|
|
46
43
|
```
|
|
47
44
|
|
|
48
45
|
大 JSON 按规范 **重定向落盘**(`> tmp/qingflow_records.json`)。
|
|
@@ -52,9 +49,9 @@ qingflow --json record list \
|
|
|
52
49
|
|
|
53
50
|
| 关注点 | 说明 |
|
|
54
51
|
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
55
|
-
| **连通性优先** |
|
|
56
|
-
| **不一定有明细行** |
|
|
57
|
-
| **读不到数据时** |
|
|
52
|
+
| **连通性优先** | 直接执行 `data query`;访问范围、字段投影和提示以当次响应为准,不预先选择 `view_id`。 |
|
|
53
|
+
| **不一定有明细行** | `items` 为空不等于 CLI 坏了,先检查响应的 `access`、`hints` 与筛选条件。若目标是任务中心待办/已办/抄送,应换 `task list --task-box …`。 |
|
|
54
|
+
| **读不到数据时** | 按 [data 操作说明](../data/README.md) 处理权限、筛选或字段错误,不切换旧 record 视图绕过。 |
|
|
58
55
|
|
|
59
56
|
|
|
60
57
|
**普通成员不要使用「自定义 + 纯数字 id」去读数:** 形如 `**custom:1`、`custom:2`、`custom:12`**(`custom:` 后**仅数字**)。此类在实测中 `**record schema browse` / `list` / `access` 一致 40038**(`Object not exist`),**不可用其作为换源备选**——应直接跳过并在 **其它视图 id** 上取样。
|
|
@@ -65,12 +62,16 @@ qingflow --json record list \
|
|
|
65
62
|
| 不先调 | 原因 |
|
|
66
63
|
| ---------------------------------- | -------------------------------------------------------- |
|
|
67
64
|
| `workspace get` / `workspace list` | 读应用记录**不依赖**;徒增一次往返,且 list 在部分环境受 **59004** 等影响。 |
|
|
68
|
-
| `view get` |
|
|
69
|
-
| `record schema browse` |
|
|
65
|
+
| `view get` | data query 不依赖视图;仅在用户明确查询视图配置时调用。 |
|
|
66
|
+
| `record schema browse` | data 默认路径从同一次响应读取 `schema + field_capabilities`。 |
|
|
70
67
|
|
|
71
68
|
|
|
72
69
|
---
|
|
73
70
|
|
|
71
|
+
## 旧 record 兼容参考
|
|
72
|
+
|
|
73
|
+
以下旧 `record` 规则只在用户明确要求兼容入口时使用,不得作为 data query/get/insert/update/delete 失败后的自动回退。
|
|
74
|
+
|
|
74
75
|
## 1. 优先使用(成员场景下实测高概率 exit 0)
|
|
75
76
|
|
|
76
77
|
|
|
@@ -145,7 +146,7 @@ qingflow --json record list \
|
|
|
145
146
|
|
|
146
147
|
## 5. 扩展链路(含 workspace / schema)
|
|
147
148
|
|
|
148
|
-
若你还要 **核对当前工作区** 或
|
|
149
|
+
若你还要 **核对当前工作区** 或 **先看字段**,在 **§「最短路径」** 之外可增加(顺序仍建议 **先最短再扩展**)。注意:最终统计结论、分析报告、趋势/排名/比例/分布必须使用 [record/analysis](../record/analysis/README.md) 的 `data query --all --output csv -> Python/pandas`:
|
|
149
150
|
|
|
150
151
|
```bash
|
|
151
152
|
qingflow --json auth whoami # 仅业务失败、账号不确定或需要写清当前租户上下文时
|
|
@@ -191,5 +192,5 @@ qingflow --json record list --app-key <APP_KEY> --view-id <VIEW_ID>
|
|
|
191
192
|
| §1 表内多数「高概率 exit 0」命令 | 在典型成员会话下过 help/试跑对齐;仍以当前 CLI 与服务端为准。 |
|
|
192
193
|
| `custom:*` 与 `system:*` 在 browse/list/access 上差异 | 同上;`custom:+纯数字` 读数常 40038 已在上文单列。 |
|
|
193
194
|
| `workspace select` 可能 59004 | 流币等配额与其它失败区分;非每次必现。 |
|
|
194
|
-
|
|
|
195
|
+
| **旧 record 兼容路径**(app list→get→record list;优先表格类业务视图;空数据则换其它可读表格视图;**勿用 `custom:<仅数字>`**) | 仅用于用户明确要求旧入口时的兼容核对。 |
|
|
195
196
|
| 本文未逐条自动化验证的项 | `task get`/`log`/`report`(缺 id)、`chart get`(缺真实 id)、**写路径** `record insert` 等 — 按通用表与业务策略,需有数据/权限时再测 |
|
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
> **本文档目的**:按**场景**给出**形态正确、参数闭合**时的命令模板,便于复制后替换占位符即跑,减少「缺参 / 引号 / 根级选项」类返工。
|
|
6
6
|
> **不是**「任何账号、任何租户、任何时刻都 100% HTTP 200」——若遇 `59004`(流币/AI 配额)、401、或目标资源不存在,仍可能失败;那种情况属于**环境与权限**,不是本表要解决的「命令写对一次成」问题。
|
|
7
|
+
> **数据默认入口**:普通 query/get/insert/update/delete 统一阅读 [data 操作说明](../data/README.md) 并使用 `qingflow data ...`;本文保留的旧 `record` 命令只供用户明确要求兼容入口时查阅。
|
|
7
8
|
|
|
8
9
|
**统一建议**
|
|
9
10
|
|
|
10
11
|
- 自动化读取命令优先加 `**--json`**;builder 写入/apply 命令默认只输出 JSON,不需要额外选择格式;展示写入结果时优先读 `operation + summary + resources[]`,不要按不同工具分别解析旧字段。
|
|
11
12
|
- 需要稳定 profile 时加 `**--profile default`**(或与你的会话一致的名字)。
|
|
12
|
-
- `task` / `
|
|
13
|
+
- `task` / `data` 的大 JSON 查询类输出,按团队规范**落盘**(例如 `> tmp/qingflow_*.json`),本表为简洁只写核心参数。
|
|
13
14
|
|
|
14
15
|
---
|
|
15
16
|
|
|
@@ -66,23 +67,26 @@
|
|
|
66
67
|
|
|
67
68
|
---
|
|
68
69
|
|
|
69
|
-
## 5.
|
|
70
|
+
## 5. 应用数据:`data` 默认,旧 `record` 仅兼容
|
|
70
71
|
|
|
71
|
-
|
|
72
|
+
普通数据操作使用 [data 操作说明](../data/README.md)。下面旧 `record` 行只说明兼容命令形态,不得作为 data 命令失败后的自动回退;服务端仍可能因权限返回错误 JSON。
|
|
72
73
|
|
|
73
74
|
|
|
74
75
|
| 场景 | 一次成功写法 | 必填/注意 |
|
|
75
76
|
| ----------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
|
|
76
|
-
|
|
|
77
|
+
| Data query | `qingflow --json data query --app-key <APP_KEY>` | 首次读取保留 schema,并从同一响应读取 `schema + field_capabilities`。 |
|
|
78
|
+
| Data get | `qingflow --json data get --app-key <APP_KEY> --record-id <RECORD_ID>` | 单条读取默认入口;记录 id 必须来自已确认上下文。 |
|
|
79
|
+
| Data insert | `qingflow --json data insert --app-key <APP_KEY> --items-file items.json` | 新建记录按 data 操作说明执行;字段键与值以 data schema 和当次工具响应为准。 |
|
|
80
|
+
| Data update | `qingflow --json data update --app-key <APP_KEY> --record-id <RECORD_ID> --fields-file fields.json` | 写入前检查 access 与字段能力;结果不明或已执行时不得重放。 |
|
|
81
|
+
| Data delete | `qingflow --json data delete --app-key <APP_KEY> --record-ids <RECORD_ID>` | 删除前确认精确目标与影响范围。 |
|
|
77
82
|
| Import / code-block schema | `qingflow --json record schema import --app-key <APP_KEY>` / `qingflow --json record schema code-block --app-key <APP_KEY>` | 仅在导入或代码块任务明确需要时使用。 |
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
| 分析取数 | `qingflow --json
|
|
81
|
-
|
|
|
82
|
-
| 全量记录日志 | `qingflow --json record logs --app-key <APP_KEY> --record-id <RECORD_ID> [--view-id <VIEW_ID>]` | 仅在需要完整审计/日志历史时使用;全量数据日志和流程日志写本地 JSONL。 |
|
|
83
|
+
| 旧 record schema browse | `qingflow --json record schema browse --app-key <APP_KEY> --view-id <VIEW_ID>` | 仅兼容入口;必须 `--view-id`。 |
|
|
84
|
+
| 旧 record 列表 | `qingflow --json record list --app-key <APP_KEY> --view-id <VIEW_ID>` | 仅兼容入口;通常最多返回 10 条,适合样本/模糊定位。 |
|
|
85
|
+
| 分析取数 | `qingflow --json data query --app-key <APP_KEY> --columns-file columns.json --where-file where.json --all --output csv` | 最终统计结论统一使用 [record/analysis](../record/analysis/README.md) 的 `data query --all --output csv -> Python/pandas`。 |
|
|
86
|
+
| 旧 record 日志 | `qingflow --json record logs --app-key <APP_KEY> --record-id <RECORD_ID> [--view-id <VIEW_ID>]` | 仅在用户明确需要完整审计/日志历史时使用;不替代 data get。 |
|
|
83
87
|
|
|
84
88
|
|
|
85
|
-
|
|
89
|
+
**高风险写操作**:`data insert/update/delete` 按 [data 操作说明](../data/README.md) 做确认与结果恢复;旧 `record code-block-run` 仅在明确代码块任务时按 `-h` 执行。
|
|
86
90
|
|
|
87
91
|
---
|
|
88
92
|
|
|
@@ -148,11 +152,11 @@
|
|
|
148
152
|
|
|
149
153
|
在满足账号权限的前提下:
|
|
150
154
|
|
|
151
|
-
1. `qingflow --json app list [--query <关键词>]` → 选一个
|
|
152
|
-
2. `qingflow
|
|
153
|
-
3. `qingflow --json
|
|
155
|
+
1. `qingflow --json app list [--query <关键词>]` → 选一个 `app_key`
|
|
156
|
+
2. `qingflow data query --help` → 按当前帮助确认 JSON 文件形状
|
|
157
|
+
3. `qingflow --json data query --app-key <APP_KEY>`
|
|
154
158
|
|
|
155
|
-
若要落盘再给第 3 步加 `> tmp/
|
|
159
|
+
若要落盘再给第 3 步加 `> tmp/qingflow_data.json`。只有业务命令明确返回会话不可用、账号不确定或工作区异常时,才回到第 2 节做会话恢复。
|
|
156
160
|
|
|
157
161
|
---
|
|
158
162
|
|