@josephyan/qingflow-cli 1.1.3 → 1.1.5
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 +7 -3
- package/docs/local-agent-install.md +57 -6
- package/entry_point.py +1 -1
- package/npm/bin/qingflow-skills.mjs +5 -0
- package/npm/bin/qingflow.mjs +1 -34
- package/npm/lib/runtime.mjs +21 -101
- package/npm/scripts/postinstall.mjs +1 -10
- package/package.json +3 -2
- package/pyproject.toml +1 -1
- package/skills/qingflow-cli/SKILL.md +58 -44
- package/skills/qingflow-cli/manifest.yaml +1 -1
- package/skills/qingflow-cli/reference/00-INDEX.md +35 -0
- package/skills/qingflow-cli/reference/builder/10-build-single-app.md +38 -0
- package/skills/qingflow-cli/reference/builder/20-build-complete-system.md +39 -0
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_SCHEMA_APPLY_FIELD_TYPES_AND_SCENARIOS.md → builder/30-schema-fields.md} +52 -10
- package/skills/qingflow-cli/reference/builder/40-layout.md +52 -0
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_BUILDER_VIEWS_WORKFLOW.md → builder/50-views.md} +39 -15
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_BUILDER_CHARTS_WORKFLOW.md → builder/60-charts.md} +36 -13
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_BUILDER_PORTAL_WORKFLOW.md → builder/70-portal.md} +36 -13
- package/skills/qingflow-cli/reference/builder/80-buttons-associated-resources.md +41 -0
- package/skills/qingflow-cli/reference/builder/90-workflow.md +34 -0
- package/skills/qingflow-cli/reference/builder/99-publish-verify.md +46 -0
- package/skills/qingflow-cli/reference/builder/README.md +41 -0
- package/skills/qingflow-cli/reference/builder/code-integrations/README.md +130 -0
- package/skills/qingflow-cli/reference/builder/code-integrations/code-block.md +66 -0
- package/skills/qingflow-cli/reference/builder/code-integrations/q-linker.md +77 -0
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_BUILDER_APP_DELIVERY_WORKFLOW.md → builder/reference/app-delivery-sop.md} +26 -16
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/README.md +293 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/build-complete-system.md +809 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/build-single-app.md +830 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/complete-system-development-guide.md +123 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/create-app.md +182 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/environments.md +63 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/flow-actors-and-permissions.md +142 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/gotchas.md +108 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/match-rules.md +114 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/public-surface-sync.md +75 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/single-app-development-guide.md +58 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/solution-playbooks.md +52 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/tool-selection.md +107 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/update-flow.md +7 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/update-layout.md +7 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/update-schema.md +7 -0
- package/skills/qingflow-cli/reference/builder/reference/legacy-playbooks/update-views.md +7 -0
- package/skills/qingflow-cli/reference/builder/workflow/01-overview.md +45 -0
- package/skills/qingflow-cli/reference/builder/workflow/02-update-mode.md +53 -0
- package/skills/qingflow-cli/reference/builder/workflow/03-flow-patterns.md +57 -0
- package/skills/qingflow-cli/reference/builder/workflow/04-stage1-business-modeling.md +131 -0
- package/skills/qingflow-cli/reference/builder/workflow/05-stage2-members-roles.md +29 -0
- package/skills/qingflow-cli/reference/builder/workflow/06-stage3-build-spec.md +165 -0
- package/skills/qingflow-cli/reference/builder/workflow/07-stage4-validate-spec.md +33 -0
- package/skills/qingflow-cli/reference/builder/workflow/08-stage5-apply-verify.md +51 -0
- package/skills/qingflow-cli/reference/builder/workflow/09-stage6-summary.md +88 -0
- package/skills/qingflow-cli/reference/builder/workflow/10-node-config-reference.md +93 -0
- package/skills/qingflow-cli/reference/builder/workflow/11-troubleshooting.md +15 -0
- package/skills/qingflow-cli/reference/builder/workflow/README.md +88 -0
- package/skills/qingflow-cli/reference/builder/workflow/workflow-schema.json +1754 -0
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_ADMIN_CHEATSHEET.md → core/QINGFLOW_CLI_ADMIN_CHEATSHEET.md} +3 -3
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md → core/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md} +6 -6
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_EXPLORATION_REPORT.md → core/QINGFLOW_CLI_EXPLORATION_REPORT.md} +2 -2
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_FIELD_DATA_TYPES.md → core/QINGFLOW_CLI_FIELD_DATA_TYPES.md} +11 -11
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_MEMBER_CHEATSHEET.md → core/QINGFLOW_CLI_MEMBER_CHEATSHEET.md} +4 -4
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md → core/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md} +4 -4
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md → record/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md} +3 -3
- package/skills/qingflow-cli/reference/record/QINGFLOW_CLI_RECORD_DELETE_WORKFLOW.md +31 -0
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_RECORD_IMPORT_WORKFLOW.md → record/QINGFLOW_CLI_RECORD_IMPORT_WORKFLOW.md} +4 -4
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md → record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md} +7 -7
- package/skills/qingflow-cli/reference/record/analysis/README.md +130 -0
- package/skills/qingflow-cli/reference/record/analysis/analysis-gotchas.md +91 -0
- package/skills/qingflow-cli/reference/record/analysis/analysis-patterns.md +112 -0
- package/skills/qingflow-cli/reference/record/analysis/business-context.md +74 -0
- package/skills/qingflow-cli/reference/record/analysis/confidence-reporting.md +69 -0
- package/skills/qingflow-cli/reference/record/analysis/data-access-playbook.md +106 -0
- package/skills/qingflow-cli/reference/record/analysis/pandas-recipes.md +172 -0
- package/skills/qingflow-cli/reference/record/analysis/report-format.md +76 -0
- package/skills/qingflow-cli/reference/record/insert/README.md +75 -0
- package/skills/qingflow-cli/reference/{QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md → task/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md} +5 -5
- package/skills/qingflow-cli/reference/task/ops/README.md +131 -0
- package/skills/qingflow-cli/reference/task/ops/environments.md +43 -0
- package/skills/qingflow-cli/reference/task/ops/workflow-usage.md +26 -0
- package/skills/qingflow-cli/scripts/validate_system_build_summary.py +124 -0
- package/skills/qingflow-cli/scripts/workflow/diff_flow_spec.py +275 -0
- package/skills/qingflow-cli/scripts/workflow/validate_flow_spec.py +605 -0
- package/skills/qingflow-mcp-setup/SKILL.md +115 -0
- package/skills/qingflow-mcp-setup/agents/openai.yaml +4 -0
- package/skills/qingflow-mcp-setup/references/claude-desktop.md +34 -0
- package/skills/qingflow-mcp-setup/references/environments.md +62 -0
- package/skills/qingflow-mcp-setup/references/generic-stdio.md +32 -0
- package/skills/qingflow-mcp-setup/scripts/check_local_server.sh +38 -0
- package/src/qingflow_mcp/__init__.py +1 -1
- package/src/qingflow_mcp/__main__.py +6 -2
- package/src/qingflow_mcp/builder_facade/models.py +287 -25
- package/src/qingflow_mcp/builder_facade/service.py +4195 -856
- package/src/qingflow_mcp/cli/commands/builder.py +316 -247
- package/src/qingflow_mcp/cli/commands/chart.py +1 -1
- package/src/qingflow_mcp/cli/commands/common.py +12 -3
- package/src/qingflow_mcp/cli/commands/exports.py +2 -2
- package/src/qingflow_mcp/cli/commands/imports.py +3 -3
- package/src/qingflow_mcp/cli/commands/portal.py +2 -2
- package/src/qingflow_mcp/cli/commands/record.py +101 -27
- package/src/qingflow_mcp/cli/commands/task.py +28 -47
- package/src/qingflow_mcp/cli/commands/view.py +1 -1
- package/src/qingflow_mcp/cli/context.py +0 -3
- package/src/qingflow_mcp/cli/formatters.py +784 -16
- package/src/qingflow_mcp/cli/main.py +117 -33
- package/src/qingflow_mcp/errors.py +43 -2
- package/src/qingflow_mcp/public_surface.py +26 -17
- package/src/qingflow_mcp/response_trim.py +81 -17
- package/src/qingflow_mcp/server.py +14 -12
- package/src/qingflow_mcp/server_app_builder.py +65 -21
- package/src/qingflow_mcp/server_app_user.py +22 -16
- package/src/qingflow_mcp/session_store.py +11 -7
- package/src/qingflow_mcp/solution/compiler/__init__.py +3 -1
- package/src/qingflow_mcp/solution/compiler/workflow_compiler.py +173 -0
- package/src/qingflow_mcp/solution/executor.py +245 -18
- package/src/qingflow_mcp/tools/ai_builder_tools.py +1782 -399
- package/src/qingflow_mcp/tools/app_tools.py +184 -43
- package/src/qingflow_mcp/tools/approval_tools.py +197 -35
- package/src/qingflow_mcp/tools/auth_tools.py +92 -16
- package/src/qingflow_mcp/tools/code_block_tools.py +298 -40
- package/src/qingflow_mcp/tools/custom_button_tools.py +64 -10
- package/src/qingflow_mcp/tools/directory_tools.py +236 -72
- package/src/qingflow_mcp/tools/export_tools.py +244 -34
- package/src/qingflow_mcp/tools/feedback_tools.py +9 -0
- package/src/qingflow_mcp/tools/file_tools.py +9 -3
- package/src/qingflow_mcp/tools/import_tools.py +336 -49
- package/src/qingflow_mcp/tools/navigation_tools.py +91 -12
- package/src/qingflow_mcp/tools/package_tools.py +118 -6
- package/src/qingflow_mcp/tools/portal_tools.py +39 -3
- package/src/qingflow_mcp/tools/qingbi_report_tools.py +116 -7
- package/src/qingflow_mcp/tools/record_tools.py +1141 -356
- package/src/qingflow_mcp/tools/resource_read_tools.py +188 -39
- package/src/qingflow_mcp/tools/role_tools.py +80 -9
- package/src/qingflow_mcp/tools/solution_tools.py +59 -45
- package/src/qingflow_mcp/tools/task_context_tools.py +662 -158
- package/src/qingflow_mcp/tools/task_tools.py +113 -29
- package/src/qingflow_mcp/tools/view_tools.py +106 -3
- package/src/qingflow_mcp/tools/workflow_tools.py +48 -4
- package/src/qingflow_mcp/tools/workspace_tools.py +71 -3
- /package/skills/qingflow-cli/reference/{QINGFLOW_CLI_BUILDER_MATCH_RULES.md → builder/reference/match-rules.md} +0 -0
- /package/skills/qingflow-cli/reference/{QINGFLOW_CLI_BUILDER_WORKSPACE_ICONS.md → builder/reference/workspace-icons.md} +0 -0
- /package/skills/qingflow-cli/reference/{charts_remove.example.json → examples/charts/charts_remove.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{charts_reorder.example.json → examples/charts/charts_reorder.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{charts_upsert_bar.example.json → examples/charts/charts_upsert_bar.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{charts_upsert_dashboard_starter.example.json → examples/charts/charts_upsert_dashboard_starter.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{charts_upsert_minimal.example.json → examples/charts/charts_upsert_minimal.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{portal_sections_all_types.example.json → examples/portal/portal_sections_all_types.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{portal_sections_five_types.example.json → examples/portal/portal_sections_five_types.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{portal_sections_standard_workbench.example.json → examples/portal/portal_sections_standard_workbench.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{_batch_schema_complex.json → examples/schema/_batch_schema_complex.json} +0 -0
- /package/skills/qingflow-cli/reference/{_batch_schema_scalar.json → examples/schema/_batch_schema_scalar.json} +0 -0
- /package/skills/qingflow-cli/reference/{schema_add_fields_minimal.example.json → examples/schema/schema_add_fields_minimal.example.json} +0 -0
- /package/skills/qingflow-cli/reference/{schema_apply_add_fields_all_types.json → examples/schema/schema_apply_add_fields_all_types.json} +0 -0
- /package/skills/qingflow-cli/reference/{views_upsert_table_minimal.example.json → examples/views/views_upsert_table_minimal.example.json} +0 -0
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
name: qingflow-cli
|
|
3
3
|
description: |
|
|
4
4
|
【强制】在执行或编排任何 qingflow CLI 命令前必须优先加载本 Skill。
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Qingflow CLI 包以本 Skill 作为 CLI 主入口;record/app-builder/task/workflow 等相关说明按场景组织在 reference 子目录。
|
|
6
|
+
指导安装、执行上下文失败恢复、查询与写入;规定 task/record/import/builder 查询落盘;覆盖普通成员读数、字段 kind 与数据形态、任务上下文、批量导入、record access/list/get/insert/update/delete 与管理端边界。
|
|
7
|
+
Builder SOP 按智能体任务路径组织:完整系统、单应用、字段、布局、视图、报表、门户、按钮/关联资源、流程、发布校验;更新动作并入对应资源文档,批量读/批量写/局部改作为资源文档内的写法变体;明细见「关联文件」表与文末命令索引。
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Qingflow CLI 使用技能
|
|
10
11
|
|
|
11
|
-
> **Skill 版本**:`qingflow-skills-2026.06.
|
|
12
|
+
> **Skill 版本**:`qingflow-skills-2026.06.26.1`(入口文档版本;CLI 包版本用 `qingflow --version`;需要定位版本漂移时用 `qingflow --json version` 读取 `version/package/command_path/executable_path/package_root/skill_version`)。
|
|
12
13
|
|
|
13
|
-
**硬约束(必读)**:正文各节与文末「命令速查」中的命令**只作子命令形态索引**,不覆盖 JSON 结构、`--*-file` 键名、枚举全集、执行顺序与排障细节。凡工作**偏复杂**(多步串联、大块 payload、导入全链、**Builder 搭建向**(应用/schema/流程/布局/视图/门户/报表/按钮/关联资源的配置与发布、系统列与字段 `type`)、契约型 `apply`、按 schema 组织写入 payload、任务下钻与 `task action` 等),或你判断当前任务与「关联文件」里某篇所描述的内容**需求一致、场景相同或大体同类**,都应**先 Read 对应 `reference
|
|
14
|
+
**硬约束(必读)**:正文各节与文末「命令速查」中的命令**只作子命令形态索引**,不覆盖 JSON 结构、`--*-file` 键名、枚举全集、执行顺序与排障细节。凡工作**偏复杂**(多步串联、大块 payload、导入全链、**Builder 搭建向**(应用/schema/流程/布局/视图/门户/报表/按钮/关联资源的配置与发布、系统列与字段 `type`)、契约型 `apply`、按 schema 组织写入 payload、任务下钻与 `task action` 等),或你判断当前任务与「关联文件」里某篇所描述的内容**需求一致、场景相同或大体同类**,都应**先 Read 对应 `reference/...` 文档**,再结合 `qingflow … --help` 与 **[EXPLORATION_REPORT](./reference/core/QINGFLOW_CLI_EXPLORATION_REPORT.md)**。**禁止**仅凭索引、习惯或类比去补参数、臆造字段名或推断服务端行为。**CLI 自动化场景只通过 `qingflow` 命令工作**;相关说明已按主题合并为本文档下的 `reference/` 子目录。**最终统计结论、分析报告、趋势/排名/比例/分布**统一走 **[record/analysis](./reference/record/analysis/README.md)** 的 `qingflow record access -> Python/pandas`。
|
|
14
15
|
|
|
15
|
-
> **CLI**:当前验证包为 `@qingflow-tech/qingflow-cli`(查版本优先用 `qingflow --version`;需要 JSON 时用 `qingflow --json version
|
|
16
|
+
> **CLI**:当前验证包为 `@qingflow-tech/qingflow-cli`(查版本优先用 `qingflow --version`;需要 JSON 时用 `qingflow --json version`)。**复杂任务先读 [reference/00-INDEX.md](./reference/00-INDEX.md)**。**搭建/创建/系统配置**:先区分 **完整系统/应用包** 与 **单应用**。完整系统主链路必须走 `builder package apply -> builder schema apply --apps-file`,并用 `apps[].client_key + relation.target_app_ref` 处理同批跨应用关联;单应用才走 `builder schema apply --app-key` 或 `--package-id --app-name --create-if-missing`。完整系统 schema apply 超时、`partial_success`、`write_executed=true`、`safe_to_retry=false` 或回读不完整时,下一步固定是 **`readback_before_retry`**(`package get` / `app resolve` / `app get fields`),禁止直接拆成单应用重建、用 V2/测试/随机后缀绕过重名或重放整批创建;随后按 **[builder/README.md](./reference/builder/README.md)** 选择单应用、完整系统或具体资源文档。仅成员读数速通仍可先打开 **[MEMBER_CHEATSHEET](./reference/core/QINGFLOW_CLI_MEMBER_CHEATSHEET.md)**。
|
|
16
17
|
|
|
17
18
|
## 关联文件
|
|
18
19
|
|
|
@@ -20,22 +21,35 @@ description: |
|
|
|
20
21
|
| 文件 | 说明 |
|
|
21
22
|
| ------------------------------------------------------------------------------------------------ |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
22
23
|
| `manifest.yaml` | 技能清单 |
|
|
23
|
-
| [reference/
|
|
24
|
-
| [reference/
|
|
25
|
-
| [reference/
|
|
26
|
-
| [reference/
|
|
27
|
-
| [reference/
|
|
28
|
-
| [reference/
|
|
29
|
-
| [reference/
|
|
30
|
-
| [reference/
|
|
31
|
-
| [reference/
|
|
32
|
-
| [reference/
|
|
33
|
-
| [reference/
|
|
34
|
-
| [reference/
|
|
35
|
-
| [reference/
|
|
36
|
-
| [reference/
|
|
37
|
-
| [reference/
|
|
38
|
-
| [reference/
|
|
24
|
+
| [reference/00-INDEX.md](./reference/00-INDEX.md) | **总导航**:按用户目标选择 record / task / builder 文档;复杂任务先读 |
|
|
25
|
+
| [reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_MEMBER_CHEATSHEET.md) | **普通成员**主线:最短路径、`view_id`、与管理命令的差异预期 |
|
|
26
|
+
| [reference/QINGFLOW_CLI_FIELD_DATA_TYPES.md](./reference/core/QINGFLOW_CLI_FIELD_DATA_TYPES.md) | **字段数据类型**:`record schema …` 的 `fields[]`(`field_id`、`title`、`kind`、`options`…);`record list/get/access` 与写入 payload 的形态对照 |
|
|
27
|
+
| [reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md](./reference/core/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md) | **应用记录获取数据**:`app get`(`accessible_views`)→ `record schema browse` → `record list(query)` 模糊定位 / `record get` 详情页首屏上下文 / `record logs` 全量日志;分析取数转 `record_access` |
|
|
28
|
+
| [reference/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md](./reference/task/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md) | **任务(待办已办)上下文 SOP**:`task list` → `task get` → `task log` → `task report` → `task action`;只把 `task_id` 作为主定位参数 |
|
|
29
|
+
| [reference/QINGFLOW_CLI_RECORD_IMPORT_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_IMPORT_WORKFLOW.md) | **批量导入 SOP**:`app_get`(**`import_capability`**)→ `record_import_template_get` → `record_import_verify` →(可选)`record_import_repair_local` → `record_import_start` → `record_import_status_get`;CLI `import` / `record schema import` |
|
|
30
|
+
| [reference/builder/README.md](./reference/builder/README.md) | **Builder 总导航**:完整系统、单应用、字段、布局、视图、报表、门户、按钮/关联资源、流程、发布校验 |
|
|
31
|
+
| [reference/builder/10-build-single-app.md](./reference/builder/10-build-single-app.md) | **单应用搭建主入口**:一个应用端到端交付顺序 |
|
|
32
|
+
| [reference/builder/20-build-complete-system.md](./reference/builder/20-build-complete-system.md) | **完整系统/应用包主入口**:多应用、同批 relation、门户闭环 |
|
|
33
|
+
| [reference/builder/30-schema-fields.md](./reference/builder/30-schema-fields.md) | **字段 / schema**:字段类型、直觉别名、数据标题/封面、schema 创建与更新 |
|
|
34
|
+
| [reference/builder/40-layout.md](./reference/builder/40-layout.md) | **布局**:分组、`rows` 矩阵、布局创建/更新/批量写 |
|
|
35
|
+
| [reference/builder/50-views.md](./reference/builder/50-views.md) | **视图**:表格/卡片/看板/甘特、固定筛选、查询面板、视图 patch |
|
|
36
|
+
| [reference/builder/60-charts.md](./reference/builder/60-charts.md) | **报表 / QingBI**:指标卡、图表、语义聚合、筛选、排序、更新 |
|
|
37
|
+
| [reference/builder/70-portal.md](./reference/builder/70-portal.md) | **门户**:标准工作台、业务入口、指标、图表、视图组件、发布 |
|
|
38
|
+
| [reference/builder/80-buttons-associated-resources.md](./reference/builder/80-buttons-associated-resources.md) | **按钮与关联资源**:自定义按钮、关联视图/报表、`match_mappings`、上下文传参 |
|
|
39
|
+
| [reference/builder/90-workflow.md](./reference/builder/90-workflow.md) | **流程**:流程预设、`patch_nodes`、角色/成员、流程回读 |
|
|
40
|
+
| [reference/builder/99-publish-verify.md](./reference/builder/99-publish-verify.md) | **发布与回读**:`publish verify`、partial/readback 处理、最终汇报口径 |
|
|
41
|
+
| [reference/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md) | **新建记录**:`record schema insert -> record insert --items-file`;成员/部门/关联优先自然语言输入;细节见 [record/insert](./reference/record/insert/README.md) |
|
|
42
|
+
| [reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md) | **更新记录**:主链路是 `record get` → 智能体按 `fields[]` 组 key/value → **`record update`**;`record schema update` 仅用于失败后诊断可写字段/路径 |
|
|
43
|
+
| [reference/QINGFLOW_CLI_RECORD_DELETE_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_DELETE_WORKFLOW.md) | **删除记录**:`record list/get` 精确定位 → `record delete --app-key --record-id --view-id system:*`;批量用 `--record-ids-file` |
|
|
44
|
+
| [reference/record/analysis/README.md](./reference/record/analysis/README.md) | **数据分析**:最终统计结论、分析报告、趋势/排名/比例/分布统一走 `record access -> Python/pandas` |
|
|
45
|
+
| [reference/builder/reference/app-delivery-sop.md](./reference/builder/reference/app-delivery-sop.md) | **底层交付参考**:历史完整 SOP、权限、旧 fallback、系统列和工具细节;不是主入口 |
|
|
46
|
+
| [reference/builder/reference/workspace-icons.md](./reference/builder/reference/workspace-icons.md) | **图标参考**:`builder icon catalog`;新建应用包、应用、门户必须显式选择非 `template` 的 `icon + color` |
|
|
47
|
+
| [reference/builder/reference/match-rules.md](./reference/builder/reference/match-rules.md) | **字段匹配规则参考**:按钮新增数据 `field_mappings`、关联视图/报表 `match_mappings`、类型兼容 |
|
|
48
|
+
| [reference/builder/workflow/README.md](./reference/builder/workflow/README.md) | **工作流搭建**:已有应用的流程建模、节点配置、`builder flow apply` 与 `patch_nodes` |
|
|
49
|
+
| [reference/builder/code-integrations/README.md](./reference/builder/code-integrations/README.md) | **代码块 / Q-Linker 配置**:字段别名、绑定、输入字段插入和配置排障 |
|
|
50
|
+
| [reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_ADMIN_CHEATSHEET.md) | **管理员**:检索、导入等与成员差异(主技能正文不展开) |
|
|
51
|
+
| [reference/QINGFLOW_CLI_EXPLORATION_REPORT.md](./reference/core/QINGFLOW_CLI_EXPLORATION_REPORT.md) | CLI 实测与 argparse/服务端对齐备忘 |
|
|
52
|
+
| [reference/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md) | **可选**:全角色「一次可复制」分项模板;默认执行技能**不必**打开 |
|
|
39
53
|
| [scripts/find-app-by-keyword.py](./scripts/find-app-by-keyword.py) | **旧版 CLI 兼容脚本**:当 `app list --query` 不可用时,用 `app list` 本地解析;默认优先使用 `qingflow --json app list --query <关键词>` |
|
|
40
54
|
| [scripts/builder-package-from-app-list.py](./scripts/builder-package-from-app-list.py) | **旧版 CLI 兼容脚本**:当 `builder package list` 不可用时,才从 `app list` 曲线反查 **`package_name` / `resolve-id`**;新版默认直接用 `qingflow --json builder package list --query <关键词>` |
|
|
41
55
|
|
|
@@ -145,7 +159,7 @@ qingflow --json auth whoami
|
|
|
145
159
|
`app get` 里的 `CUSTOM_VIEW_LIST_UNAVAILABLE` 表示自定义视图列表读取被权限或后端限制降级;若 `accessible_views` 中仍有 `system:*`,可继续用该视图读数。若没有任何视图,再回到前端 URL、`app list` 可见应用、或用户提供的 `viewgraphKey` 补充上下文,不要直接断言应用不可读。
|
|
146
160
|
`app get.data.can_create=false` 才表示 applicant/create 路径不可用;创建权限探测遇到 auth / server 等非权限类错误时应直接按失败处理,不要包装成“未知创建权限”或“用户无新建权限”。
|
|
147
161
|
|
|
148
|
-
**细则、响应解包、`view_id` 雷区与命令模板**见 **[reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md](./reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md)**(编写前已对当前 CLI **实跑**校验)。若仅需「最快看一眼有没有行」,可省略 **`schema browse
|
|
162
|
+
**细则、响应解包、`view_id` 雷区与命令模板**见 **[reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md](./reference/core/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md)**(编写前已对当前 CLI **实跑**校验)。若仅需「最快看一眼有没有行」,可省略 **`schema browse`**,直接走下文「最短路径」。如果用户要任何最终统计结论、分析报告、趋势/排名/比例/分布,按 **[record/analysis](./reference/record/analysis/README.md)** 执行 `record access -> Python/pandas`。
|
|
149
163
|
|
|
150
164
|
---
|
|
151
165
|
|
|
@@ -153,11 +167,11 @@ qingflow --json auth whoami
|
|
|
153
167
|
|
|
154
168
|
推荐顺序:
|
|
155
169
|
|
|
156
|
-
1.
|
|
157
|
-
2. **`
|
|
158
|
-
3.
|
|
170
|
+
1. **`record schema insert`**:先读取 insert-ready schema、`required_fields`、`payload_template`、`format_hint`、`example_value`、联动与运行时必填提示。
|
|
171
|
+
2. **`record insert --items-file`**:单条也是 `items` 数组的一行;成员、部门、关联字段优先写自然语言(如 `"张三"`、`"直销部"`、`"海军军医大学"`),仅在返回 `needs_confirmation` 时再让用户确认候选。
|
|
172
|
+
3. **写后读回**:单条重要数据用 `record get`,批量样本用 `record list` 或业务视图校验;`partial_success` 只重试失败行,不重放全批。
|
|
159
173
|
|
|
160
|
-
**细则、字段 JSON 结构与排障**见 **[reference/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md](./reference/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md)**。
|
|
174
|
+
**细则、字段 JSON 结构与排障**见 **[reference/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md)**。
|
|
161
175
|
|
|
162
176
|
---
|
|
163
177
|
|
|
@@ -172,9 +186,9 @@ qingflow --json auth whoami
|
|
|
172
186
|
|
|
173
187
|
**更新路径**:`record update` 会自动先尝试数据管理员直改,再 fallback 到前端同源的 custom view 详情编辑路径;如果当前用户存在这条记录的唯一待办且目标字段在当前节点可编辑,最后会尝试 workflow save-only。成功时只需要读 **`status / update_route / verification_status`**;失败时再读失败原因与路线诊断。不要把中间 route 或辅助 schema/readback 探测的 40002 / 40027 / 404 当作最终失败。
|
|
174
188
|
|
|
175
|
-
**大号 `record_id`(常见于 Snowflake 类 id)**:若干 CLI 版本在 **`record update` 写入路径**上对 `apply_id` 会做 **JavaScript 安全整数**相关校验,`list`/`get`/`schema update` 仍可能正常而 **更新落库报错**(常为 `apply_id must be positive`)。排障见 **[reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](./reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)**。业务统计与最终结论仍必须按
|
|
189
|
+
**大号 `record_id`(常见于 Snowflake 类 id)**:若干 CLI 版本在 **`record update` 写入路径**上对 `apply_id` 会做 **JavaScript 安全整数**相关校验,`list`/`get`/`schema update` 仍可能正常而 **更新落库报错**(常为 `apply_id must be positive`)。排障见 **[reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)**。业务统计与最终结论仍必须按 **[record/analysis](./reference/record/analysis/README.md)** 使用 `record access -> Python/pandas`。
|
|
176
190
|
|
|
177
|
-
**命令模板、批量 `items` 形态、与新建相同的写入值约定**(按 **`kind`** 分题型见 **[QINGFLOW_CLI_FIELD_DATA_TYPES.md](./reference/QINGFLOW_CLI_FIELD_DATA_TYPES.md)**)见 **[reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](./reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)**。
|
|
191
|
+
**命令模板、批量 `items` 形态、与新建相同的写入值约定**(按 **`kind`** 分题型见 **[QINGFLOW_CLI_FIELD_DATA_TYPES.md](./reference/core/QINGFLOW_CLI_FIELD_DATA_TYPES.md)**)见 **[reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)**。
|
|
178
192
|
|
|
179
193
|
**成员 / 部门候选排障**:若成员、部门字段返回 `needs_confirmation` 或候选不清,使用 `qingflow record member-candidates` / `qingflow record department-candidates`;它们优先走表单字段候选范围接口(与前端选择器一致)。不要改用通讯录管理类查询去“补候选”,那会把普通成员误带到 ContactAuth 管理权限链路。
|
|
180
194
|
|
|
@@ -212,7 +226,7 @@ qingflow --json record list \
|
|
|
212
226
|
|
|
213
227
|
`record list` 默认最多返回 10 条,适合样本检查和模糊定位;需要更大或更小样本时用 `--page-size <N>`,但最终统计结论仍转 `record_access -> Python/pandas`。若用户只给出模糊文本,使用 `--query` 和可选 `--query-field <FIELD_ID>` 收窄候选,再用 `record get` 读详情。若用户明确要完整日志/审计历史,继续执行 `qingflow --json record logs --app-key <APP_KEY> --record-id <RECORD_ID> --view-id <VIEW_ID> > tmp/qingflow_record_logs.json`,再读取返回的 `data_logs.local_path` / `workflow_logs.local_path`。
|
|
214
228
|
|
|
215
|
-
**找应用包(Builder 管理面)**:默认直接用 **`builder package list --query <关键词>`**;它调用应用包后端 `/tag`,能看到空包、同名包和包级权限。拿到 `items[].package_id` 后再 `builder package get --package-id <ID>`。`package get` 会优先读 `/tag/{id}/baseInfo`,再尝试增强读取 `/tag/{id}`;若返回 `PACKAGE_DETAIL_READ_DEGRADED`,表示详细配置接口需要包编辑/加应用权限但基础信息已读到,不要当成包读取失败。旧版 CLI 没有该命令时,才看 **[reference/
|
|
229
|
+
**找应用包(Builder 管理面)**:默认直接用 **`builder package list --query <关键词>`**;它调用应用包后端 `/tag`,能看到空包、同名包和包级权限。拿到 `items[].package_id` 后再 `builder package get --package-id <ID>`。`package get` 会优先读 `/tag/{id}/baseInfo`,再尝试增强读取 `/tag/{id}`;若返回 `PACKAGE_DETAIL_READ_DEGRADED`,表示详细配置接口需要包编辑/加应用权限但基础信息已读到,不要当成包读取失败。旧版 CLI 没有该命令时,才看 **[reference/builder/reference/app-delivery-sop.md](./reference/builder/reference/app-delivery-sop.md) §2.3** 与 **[scripts/builder-package-from-app-list.py](./scripts/builder-package-from-app-list.py)**。
|
|
216
230
|
|
|
217
231
|
**按关键字找应用(成员可用)**:默认直接用 **`app list --query`**,它只读取当前用户可见应用并在本地过滤,响应看 `items[].app_key`、`matched_count`、`unfiltered_count`、`filter_mode`。
|
|
218
232
|
|
|
@@ -231,7 +245,7 @@ qingflow --json app list --keyword '发票'
|
|
|
231
245
|
- **`--view-id`** 仅从 **`app get`** 的 **`accessible_views`** 选取 **业务 / 自定义视图**(优先 **非「`custom:` 后仅数字」**,如带字母后缀的 `custom:…`)。
|
|
232
246
|
- 若 `app get.warnings` 含 **`CUSTOM_VIEW_LIST_UNAVAILABLE`**,说明 custom view 列表辅助读取不可用;已有 `system:*` 视图仍可继续使用,缺 custom view 本身不等同于应用无权。
|
|
233
247
|
- **禁止**把 `custom:1`、`custom:12` 等纯数字后缀自定义视图当作读数首选:成员侧常见 **`schema browse` / `record list`** 返回 **40038**。
|
|
234
|
-
- 读数前**不必**前置 `workspace get`、`view get`。若仅需列表可先省略 **`record schema browse`**;若要列定义或与 **「获取数据工作流」** 对齐,见 **[reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md](./reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md)**。
|
|
248
|
+
- 读数前**不必**前置 `workspace get`、`view get`。若仅需列表可先省略 **`record schema browse`**;若要列定义或与 **「获取数据工作流」** 对齐,见 **[reference/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md](./reference/core/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md)**。
|
|
235
249
|
|
|
236
250
|
---
|
|
237
251
|
|
|
@@ -247,7 +261,7 @@ qingflow --json app list --keyword '发票'
|
|
|
247
261
|
| 工作区切换 | `workspace select` | 可能 **59004**(配额),与未登录区分 |
|
|
248
262
|
|
|
249
263
|
|
|
250
|
-
**成员侧只读仍较稳**的示例:`app list` / `app get`、`portal list`。其它管理向子命令参见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)**。
|
|
264
|
+
**成员侧只读仍较稳**的示例:`app list` / `app get`、`portal list`。其它管理向子命令参见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)**。
|
|
251
265
|
|
|
252
266
|
---
|
|
253
267
|
|
|
@@ -276,7 +290,7 @@ qingflow --json task list \
|
|
|
276
290
|
|
|
277
291
|
### 待办 / 已办 / 抄送处理 SOP(`task list`)
|
|
278
292
|
|
|
279
|
-
> **与编排工具名逐步对齐的独立长文**(含 **`task_workflow_log_get` / `task_associated_report_detail_get` / `task_action_execute`** 与 **`task log` / `task report` / `task action`** 对照、实测排障):**[reference/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md](./reference/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md)**。
|
|
293
|
+
> **与编排工具名逐步对齐的独立长文**(含 **`task_workflow_log_get` / `task_associated_report_detail_get` / `task_action_execute`** 与 **`task log` / `task report` / `task action`** 对照、实测排障):**[reference/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md](./reference/task/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md)**。
|
|
280
294
|
> **命令形态与参数级写法**见下文 **「命令速查 → 待办 `task`」**;本节约定 **执行顺序** 与 **是否传入 `--app-key`**。
|
|
281
295
|
|
|
282
296
|
**与前序通路区分**:若以 **待办 / 已办 / 抄送「任务箱」** 为目标,**须**按本节下文 **「待办 / 已办 / 抄送处理 SOP」** 使用 `**task list --task-box …`**; `**record list` + `system:todo`、`system:done`、`system:cc` 等 `view_id` 已过时,不作为推荐**。`record list` 用于 **应用内业务视图**:在 `**app get**` 的 `accessible_views` 中取可用的 `**custom:***` 等 `**--view-id**`,与本节 SOP 勿混为一谈。
|
|
@@ -329,7 +343,7 @@ qingflow --json task list \
|
|
|
329
343
|
|
|
330
344
|
**勿把记录列表的 `list_type`(或过时文档里的 `system:*` 视图口径)与任务中心的 `type` 混为一谈**:`task list --task-box …` 的映射见上表(例如任务中心「已办」为 `type=5`);**不要**再把旧表单视图侧的编号抄到 `**--task-box`** 或自行拼接请求 `type`。
|
|
331
345
|
|
|
332
|
-
更深的行为差异与踩坑备忘仍见 **[reference/QINGFLOW_CLI_EXPLORATION_REPORT.md](./reference/QINGFLOW_CLI_EXPLORATION_REPORT.md)**。
|
|
346
|
+
更深的行为差异与踩坑备忘仍见 **[reference/QINGFLOW_CLI_EXPLORATION_REPORT.md](./reference/core/QINGFLOW_CLI_EXPLORATION_REPORT.md)**。
|
|
333
347
|
|
|
334
348
|
#### `--query`(列表检索与回退)
|
|
335
349
|
|
|
@@ -358,7 +372,7 @@ qingflow --json task list \
|
|
|
358
372
|
|
|
359
373
|
### 记录:表结构、列表、分析取数
|
|
360
374
|
|
|
361
|
-
多级子命令 **不要** 整体加引号;`record list` / `record access` **运行时必须** `--view-id`(从 `app get` 的 `accessible_views`
|
|
375
|
+
多级子命令 **不要** 整体加引号;`record list` / `record access` **运行时必须** `--view-id`(从 `app get` 的 `accessible_views` 取)。最终统计结论、分析报告、趋势/排名/比例/分布必须按 **[record/analysis](./reference/record/analysis/README.md)** 使用 `record access -> Python/pandas`。
|
|
362
376
|
|
|
363
377
|
```bash
|
|
364
378
|
qingflow --json record schema browse \
|
|
@@ -386,9 +400,9 @@ qingflow --json record access \
|
|
|
386
400
|
| `record insert/update` | 可用 `--verify-write`;`record update --dry-run` **仅批量**且需 `--items-file` |
|
|
387
401
|
|
|
388
402
|
|
|
389
|
-
更多见 **[reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md](./reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md)**;**管理向**(检索/导入等)见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)**。
|
|
403
|
+
更多见 **[reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_MEMBER_CHEATSHEET.md)**;**管理向**(检索/导入等)见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)**。
|
|
390
404
|
|
|
391
|
-
`record delete`
|
|
405
|
+
`record delete` 必须传可访问的系统 `--view-id system:*`;删除前可用 custom/system view 的 `record list/get` 精确定位 record_id,但真正删除提交不要传 `custom:*`、`list_type`,也不要省略系统视图上下文。完整规则见 **[RECORD_DELETE](./reference/record/QINGFLOW_CLI_RECORD_DELETE_WORKFLOW.md)**。
|
|
392
406
|
|
|
393
407
|
### 注销
|
|
394
408
|
|
|
@@ -405,10 +419,10 @@ qingflow auth logout --forget-persisted
|
|
|
405
419
|
| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
406
420
|
| 未登录 / profile 未登录 | **再**走「认证方式」节,重试业务命令 |
|
|
407
421
|
| `record_list requires view_id` | 先 `app get --app-key`,取 `view_id` |
|
|
408
|
-
| JSON 内 `backend_code` / `error_code` | 区分配额、权限与参数错误;普通成员见上节「偏向管理」;非本技能速查表覆盖的报错见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)** |
|
|
422
|
+
| JSON 内 `backend_code` / `error_code` | 区分配额、权限与参数错误;普通成员见上节「偏向管理」;非本技能速查表覆盖的报错见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)** |
|
|
409
423
|
| `task get` / `task log` / `task report` / `task action` 报 config | 回到 `task list`,复制 `data.items[].task_id` 后再传 `--task-id`;不要用列表序号、record_id、workflow_node_id 或自行拼三键。详见 **「待办 … SOP」步骤 2** |
|
|
410
424
|
| 成员 + `custom:` 后纯数字视图 | 读数时**跳过**,换 `system:*` 或其它 `custom:*` |
|
|
411
|
-
| `record update` 报 **`apply_id must be positive`** 等而 `get`/`list` 正常 | 常为 **超大 `record_id`(超 JS 安全整数)** 下的 CLI 校验问题;见 **[reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](./reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)** |
|
|
425
|
+
| `record update` 报 **`apply_id must be positive`** 等而 `get`/`list` 正常 | 常为 **超大 `record_id`(超 JS 安全整数)** 下的 CLI 校验问题;见 **[reference/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md](./reference/record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)** |
|
|
412
426
|
|
|
413
427
|
|
|
414
428
|
---
|
|
@@ -417,7 +431,7 @@ qingflow auth logout --forget-persisted
|
|
|
417
431
|
|
|
418
432
|
**何时须细读引用、勿凭本节推测**:见**文首「硬约束(必读)」**。
|
|
419
433
|
|
|
420
|
-
> **适用范围**:普通/基本成员在只读或小范围写入里**较高概率可用**的形态;勿照抄旧应用搜索入口、无权的 **`import …`**(易 **40002 / IMPORT_\***);管理闭环见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)**。
|
|
434
|
+
> **适用范围**:普通/基本成员在只读或小范围写入里**较高概率可用**的形态;勿照抄旧应用搜索入口、无权的 **`import …`**(易 **40002 / IMPORT_\***);管理闭环见 **[reference/QINGFLOW_CLI_ADMIN_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_ADMIN_CHEATSHEET.md)**。
|
|
421
435
|
|
|
422
436
|
**形态**:`qingflow [--profile 名] [--json] …` · 自动化**始终**建议 `--json` · `profile` 是根级执行上下文,若 `builder contract` 示例 JSON 里出现 `"profile": "default"`,不要复制进 CLI 的 `--*-file` 载荷;CLI 要写 `qingflow --profile default ...` · 嵌套子命令(如 `record schema browse`)**勿**整体加引号 · 包版本用 `qingflow --version`;需要结构化输出时用 `qingflow --json version`。
|
|
423
437
|
|
|
@@ -426,14 +440,14 @@ qingflow auth logout --forget-persisted
|
|
|
426
440
|
| **auth** | `auth whoami` · `auth use-credential --base-url "$QINGFLOW_BASE_URL" --credential-stdin --persist` · `auth login …`(见「失败恢复时的认证方式」)· `auth logout --forget-persisted` |
|
|
427
441
|
| **workspace** | `workspace list` · `workspace get --ws-id` · `workspace select`(慎用,可读数前不必;可能 **59004**) |
|
|
428
442
|
| **app / portal / view / chart** | `app list [--query 关键词]` → **`app get --app-key`**(`accessible_views` / `view_id`、`import_capability`)· `builder package list [--query 关键词]` → `builder package get --package-id` · `portal list` · `portal get --dash-key` · `view get --view-id`(只读视图元信息;`baseInfo` 或 `viewConfig` 只有 40002 / 40027 / 404 这类权限/缺失边界可用另一侧降级,非权限类后端错误不隐藏;解析 app 仅依赖同源 view/form 与可见应用树,不回退旧应用搜索)· `chart get --chart-id`(图表 `baseInfo` / 数据 / 配置分阶段读取;单个辅助阶段 40002 / 40027 / 404 只作为 warning,非权限类后端错误不隐藏) |
|
|
429
|
-
| **record** | `record schema insert`(新建记录 insert-ready schema,仅 `--app-key`)· **`browse`/`list`/`access`:`--app-key` + `--view-id`(缺一常 CONFIG)** · `record list --query ... [--query-field FIELD_ID] [--page-size N]` 用于候选定位/样本浏览 · `record get --record-id` 读详情页首屏上下文 · `record logs --record-id` 读完整数据/流程日志 JSONL · `record insert --items-file`(单条也是 items 一行)· `schema update --record-id [--view-id]` / **`update`**(单条 `--fields-file` **或** 批量 `--items-file`/`--dry-run`,二者勿混)· `export start/direct --view-id` 仅用于明确导出文件 ·
|
|
430
|
-
| **import** | `record schema import?` · `import template` → `verify` → `repair?` → `start`(**`being-enter-auditing` 必填**)→ `status`(**三者 selector 只选一**);导入权限预检的 `baseInfo` 只有 40002 / 40027 / 404 可降级为 unknown,非权限错误不能当成无导入权或继续执行;**链路与本机目录**只靠本节不够 → **[RECORD_IMPORT](./reference/QINGFLOW_CLI_RECORD_IMPORT_WORKFLOW.md)** |
|
|
431
|
-
| **builder** |
|
|
432
|
-
| **task**(须落盘见上文) | `task list [--task-box][--flow-status][--app-key][--query] --page --page-size`(**枚举、`--query`、与 `record` 视图口径勿混**:见上文 SOP · **[TASK_CONTEXT](./reference/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md)**)· **`get`/`log`/`report`/`action`**:默认只传 `task list` 返回的 **`data.items[].task_id`**;`report` 另须必选 **`--report-id`**;`action` **无 `--dry-run`** |
|
|
443
|
+
| **record** | `record schema insert`(新建记录 insert-ready schema,仅 `--app-key`)· **`browse`/`list`/`access`:`--app-key` + `--view-id`(缺一常 CONFIG)** · `record list --query ... [--query-field FIELD_ID] [--page-size N]` 用于候选定位/样本浏览 · `record get --record-id` 读详情页首屏上下文 · `record logs --record-id` 读完整数据/流程日志 JSONL · `record insert --items-file`(单条也是 items 一行)· `schema update --record-id [--view-id]` / **`update`**(单条 `--fields-file` **或** 批量 `--items-file`/`--dry-run`,二者勿混)· `record delete --app-key --record-id --view-id system:*` / `--record-ids-file` · `export start/direct --view-id` 仅用于明确导出文件 · **大 schema**:先 **[FIELD_DATA_TYPES](./reference/core/QINGFLOW_CLI_FIELD_DATA_TYPES.md)** / **[RECORD_CREATE](./reference/record/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md)** / **[RECORD_UPDATE](./reference/record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md)** / **[RECORD_DELETE](./reference/record/QINGFLOW_CLI_RECORD_DELETE_WORKFLOW.md)**,再 `-h` |
|
|
444
|
+
| **import** | `record schema import?` · `import template` → `verify` → `repair?` → `start`(**`being-enter-auditing` 必填**)→ `status`(**三者 selector 只选一**);导入权限预检的 `baseInfo` 只有 40002 / 40027 / 404 可降级为 unknown,非权限错误不能当成无导入权或继续执行;**链路与本机目录**只靠本节不够 → **[RECORD_IMPORT](./reference/record/QINGFLOW_CLI_RECORD_IMPORT_WORKFLOW.md)** |
|
|
445
|
+
| **builder** | **搭建/系统化配置**:先按 **[INDEX](./reference/00-INDEX.md)** / **[BUILDER](./reference/builder/README.md)** 选主路径,再读 `builder contract`。**完整系统/应用包**:`builder package apply --config-file` → `builder schema apply --apps-file`(主写法 `{package_id, apps}`;同批 relation 主写 `target_app_ref` 指向 `client_key`)→ layout/views/flow/charts/buttons/associated resources/portal。超时、`partial_success`、`write_executed=true`、`safe_to_retry=false` 或回读不完整时先 `readback_before_retry`,不得直接拆单应用重建、重放整批或创建 V2/测试/随机后缀绕过重名。**单应用**:`app resolve/get` → `schema/layout/flow/views/charts apply`。更新动作归入对应资源文档:字段 [30](./reference/builder/30-schema-fields.md)、布局 [40](./reference/builder/40-layout.md)、视图 [50](./reference/builder/50-views.md)、报表 [60](./reference/builder/60-charts.md)、门户 [70](./reference/builder/70-portal.md)、按钮/关联资源 [80](./reference/builder/80-buttons-associated-resources.md)、流程 [90](./reference/builder/90-workflow.md)、发布 [99](./reference/builder/99-publish-verify.md)。 |
|
|
446
|
+
| **task**(须落盘见上文) | `task list [--task-box][--flow-status][--app-key][--query] --page --page-size`(**枚举、`--query`、与 `record` 视图口径勿混**:见上文 SOP · **[TASK_CONTEXT](./reference/task/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md)**)· **`get`/`log`/`report`/`action`**:默认只传 `task list` 返回的 **`data.items[].task_id`**;`report` 另须必选 **`--report-id`**;`action` **无 `--dry-run`** |
|
|
433
447
|
|
|
434
448
|
**高发必败**:旧应用搜索入口 · **`record list`/`browse`/`access` 缺 `--view-id`** · **`task report` 缺 `--report-id`** · **`record update` 批量与单条参数混用**。
|
|
435
449
|
|
|
436
|
-
更多成员策略:**[reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md](./reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md)** · 一次性长模板:**[reference/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md](./reference/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md)** · 对齐说明:**[reference/QINGFLOW_CLI_EXPLORATION_REPORT.md](./reference/QINGFLOW_CLI_EXPLORATION_REPORT.md)**。
|
|
450
|
+
更多成员策略:**[reference/QINGFLOW_CLI_MEMBER_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_MEMBER_CHEATSHEET.md)** · 一次性长模板:**[reference/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md](./reference/core/QINGFLOW_CLI_ONE_SHOT_CHEATSHEET.md)** · 对齐说明:**[reference/QINGFLOW_CLI_EXPLORATION_REPORT.md](./reference/core/QINGFLOW_CLI_EXPLORATION_REPORT.md)**。
|
|
437
451
|
|
|
438
452
|
---
|
|
439
453
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
identity: qingflow_cli
|
|
2
2
|
type: skill
|
|
3
|
-
description: 「使用 qingflow CLI 的任何命令或自动化脚本前必须先调用本 Skill
|
|
3
|
+
description: 「使用 qingflow CLI 的任何命令或自动化脚本前必须先调用本 Skill」。Qingflow CLI 包以本 Skill 作为 CLI 主入口;record/app-builder/task/workflow 等相关说明按场景组织在 reference 子目录。涵盖安装、执行上下文失败恢复、task/record/import/builder 查询落盘规则、普通成员读数速通、record list 模糊定位、record get 详情上下文、record access 分析取数、record insert/update/delete/import、schema 字段类型、任务上下文 SOP。Builder reference 按智能体任务路径组织:单应用、完整系统/应用包、字段、布局、视图、报表/QingBI、门户、按钮与关联资源、流程、发布校验;更新动作并入对应资源文档,批量读、批量写、局部改作为资源内写法变体;默认不把登录或工作区校验作为业务前置
|
|
4
4
|
tags:
|
|
5
5
|
- cli
|
|
6
6
|
- qingflow
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Qingflow CLI Reference Index
|
|
2
|
+
|
|
3
|
+
Use this file as the first routing page after `SKILL.md` when the task is not a trivial one-command lookup.
|
|
4
|
+
|
|
5
|
+
## Route by user goal
|
|
6
|
+
|
|
7
|
+
| User goal | Read first | Then read |
|
|
8
|
+
|-----------|------------|-----------|
|
|
9
|
+
| Read records, locate one record, inspect schema | [core/data retrieval](./core/QINGFLOW_CLI_DATA_RETRIEVAL_WORKFLOW.md) | [core/field data types](./core/QINGFLOW_CLI_FIELD_DATA_TYPES.md) |
|
|
10
|
+
| Create records | [record/create](./record/QINGFLOW_CLI_RECORD_CREATE_WORKFLOW.md) | [record/insert details](./record/insert/README.md) |
|
|
11
|
+
| Update records | [record/update](./record/QINGFLOW_CLI_RECORD_UPDATE_WORKFLOW.md) | [core/field data types](./core/QINGFLOW_CLI_FIELD_DATA_TYPES.md) |
|
|
12
|
+
| Delete records | [record/delete](./record/QINGFLOW_CLI_RECORD_DELETE_WORKFLOW.md) | - |
|
|
13
|
+
| Import records in bulk | [record/import](./record/QINGFLOW_CLI_RECORD_IMPORT_WORKFLOW.md) | - |
|
|
14
|
+
| Statistical analysis, ratios, rankings, trends | [record/analysis](./record/analysis/README.md) | [analysis patterns](./record/analysis/analysis-patterns.md) |
|
|
15
|
+
| Task/todo context or task action | [task context](./task/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md) | [task ops](./task/ops/README.md) |
|
|
16
|
+
| Build or modify apps, views, charts, portal, workflow | [builder index](./builder/README.md) | The resource document named there |
|
|
17
|
+
|
|
18
|
+
## Builder task shortcuts
|
|
19
|
+
|
|
20
|
+
| Builder task | Main document |
|
|
21
|
+
|--------------|---------------|
|
|
22
|
+
| One app end-to-end | [builder/single app](./builder/10-build-single-app.md) |
|
|
23
|
+
| Multi-app system / app package | [builder/complete system](./builder/20-build-complete-system.md) |
|
|
24
|
+
| Fields, schema, data title/cover | [builder/schema fields](./builder/30-schema-fields.md) |
|
|
25
|
+
| Form layout | [builder/layout](./builder/40-layout.md) |
|
|
26
|
+
| Views and view filters | [builder/views](./builder/50-views.md) |
|
|
27
|
+
| QingBI charts/reports | [builder/charts](./builder/60-charts.md) |
|
|
28
|
+
| Portal/workbench | [builder/portal](./builder/70-portal.md) |
|
|
29
|
+
| Custom buttons and associated views/reports | [builder/buttons and associated resources](./builder/80-buttons-associated-resources.md) |
|
|
30
|
+
| Workflow | [builder/workflow](./builder/90-workflow.md) |
|
|
31
|
+
| Publish and readback verification | [builder/publish verify](./builder/99-publish-verify.md) |
|
|
32
|
+
|
|
33
|
+
## Reading rule
|
|
34
|
+
|
|
35
|
+
Pick the document for the target resource first. Do not start from historical playbooks or old MCP skill names. If a task says "update", route by the resource being updated: fields -> schema fields, views -> views, portal -> portal, charts -> charts, workflow -> workflow.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Build Single App
|
|
2
|
+
|
|
3
|
+
Read this when the user asks to create or complete exactly one Qingflow app.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Responsible for: package/app resolution, schema fields, layout, workflow, views, charts, buttons/resources if needed, sample data if requested, and final verification.
|
|
8
|
+
|
|
9
|
+
Not responsible for: multi-app relation modeling or a portal across several apps. Use [20-build-complete-system.md](./20-build-complete-system.md) when the user asks for a system, package, multiple modules, or cross-app relations.
|
|
10
|
+
|
|
11
|
+
## Main chain
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
package/app resolve -> schema -> layout -> workflow -> views -> charts -> buttons/resources -> sample data -> publish/readback verify
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Required reads by phase
|
|
18
|
+
|
|
19
|
+
| Phase | Read |
|
|
20
|
+
|-------|------|
|
|
21
|
+
| Fields and app creation | [30-schema-fields.md](./30-schema-fields.md) |
|
|
22
|
+
| Layout | [40-layout.md](./40-layout.md) |
|
|
23
|
+
| Workflow | [90-workflow.md](./90-workflow.md) |
|
|
24
|
+
| Views | [50-views.md](./50-views.md) |
|
|
25
|
+
| Charts | [60-charts.md](./60-charts.md) |
|
|
26
|
+
| Buttons or associated resources | [80-buttons-associated-resources.md](./80-buttons-associated-resources.md) |
|
|
27
|
+
| Final status | [99-publish-verify.md](./99-publish-verify.md) |
|
|
28
|
+
|
|
29
|
+
## Completion standard
|
|
30
|
+
|
|
31
|
+
- Exactly one top-level data title field exists.
|
|
32
|
+
- Common business fields use canonical or supported intuitive aliases from [30-schema-fields.md](./30-schema-fields.md).
|
|
33
|
+
- Layout places the important fields into readable groups.
|
|
34
|
+
- New business views use business names, not default names such as `全部数据` or `我的数据`.
|
|
35
|
+
- Charts and portal references are only reported complete after readback or the specific apply result verifies them.
|
|
36
|
+
- If a write returns `partial_success`, `write_executed=true`, `safe_to_retry=false`, timeout, or readback 40002, read back before retrying the write.
|
|
37
|
+
|
|
38
|
+
For a longer example playbook, use [reference/legacy-playbooks/build-single-app.md](./reference/legacy-playbooks/build-single-app.md) only as supporting material.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Build Complete System
|
|
2
|
+
|
|
3
|
+
Read this when the user asks for a complete business system, app package, multiple modules, or related apps.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Responsible for: package creation/reuse decision, all app schemas, cross-app relation fields, shared layout/view/report/portal conventions, workflow where requested, and final verification.
|
|
8
|
+
|
|
9
|
+
Not responsible for: single existing-app record CRUD. Use record documents from [../00-INDEX.md](../00-INDEX.md) for data work.
|
|
10
|
+
|
|
11
|
+
## Main chain
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
package apply/get -> schema apply --apps-file -> app readback -> layout -> workflow -> views -> charts -> buttons/resources -> portal -> publish/readback verify
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Hard rules
|
|
18
|
+
|
|
19
|
+
- Create related apps in one `builder schema apply --apps-file` call when possible.
|
|
20
|
+
- Use the recommended apps-file shape: `{"package_id": 123, "apps": [...]}`.
|
|
21
|
+
- Use `apps[].client_key` and relation `target_app_ref` for same-batch relations.
|
|
22
|
+
- If schema apply times out or returns uncertain write state, perform readback before retrying. Do not recreate apps with `V2`, `测试`, or random suffixes.
|
|
23
|
+
- Do not create default views such as `全部数据` or `我的数据`; those are platform defaults.
|
|
24
|
+
- Portal business-entry grid components must contain real entry items, not empty `config` or `items: []`.
|
|
25
|
+
|
|
26
|
+
## Required reads by phase
|
|
27
|
+
|
|
28
|
+
| Phase | Read |
|
|
29
|
+
|-------|------|
|
|
30
|
+
| App package and schema | [30-schema-fields.md](./30-schema-fields.md) |
|
|
31
|
+
| Layout | [40-layout.md](./40-layout.md) |
|
|
32
|
+
| Workflow | [90-workflow.md](./90-workflow.md) |
|
|
33
|
+
| Views | [50-views.md](./50-views.md) |
|
|
34
|
+
| Charts | [60-charts.md](./60-charts.md) |
|
|
35
|
+
| Associated reports/views and buttons | [80-buttons-associated-resources.md](./80-buttons-associated-resources.md) |
|
|
36
|
+
| Portal | [70-portal.md](./70-portal.md) |
|
|
37
|
+
| Final status | [99-publish-verify.md](./99-publish-verify.md) |
|
|
38
|
+
|
|
39
|
+
For a longer example playbook, use [reference/legacy-playbooks/build-complete-system.md](./reference/legacy-playbooks/build-complete-system.md) only as supporting material.
|
|
@@ -1,6 +1,48 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Builder Schema And Fields
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Read this when the task is about app creation fields, schema updates, field types, data title, data cover, relation fields, or system fields.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Responsible for: `builder schema apply`, `add_fields`, `update_fields`, `remove_fields`, app creation through schema apply, field type aliases, data title/cover, and relation field shape.
|
|
8
|
+
|
|
9
|
+
Not responsible for: form placement. Use [40-layout.md](./40-layout.md) after fields exist.
|
|
10
|
+
|
|
11
|
+
## Main chain
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
app/package resolve -> app get fields -> schema apply -> app get fields readback -> publish/readback verify
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For complete systems, use `builder schema apply --apps-file` with `{package_id, apps}` and same-batch `target_app_ref`. For a single existing app, use `--app-key` plus field files.
|
|
18
|
+
|
|
19
|
+
## Update existing schema
|
|
20
|
+
|
|
21
|
+
- Re-read fields before updating; selectors may use `name`, `field_id`, or `que_id`.
|
|
22
|
+
- Switch from `add_fields` to `update_fields` when a field already exists.
|
|
23
|
+
- Use `remove_fields` only when deletion is explicitly intended.
|
|
24
|
+
- If apply returns uncertain write state, re-read fields before retrying.
|
|
25
|
+
|
|
26
|
+
Example patch:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"app_key": "APP_KEY",
|
|
31
|
+
"publish": true,
|
|
32
|
+
"add_fields": [{"name": "跟进日期", "type": "date"}],
|
|
33
|
+
"update_fields": [
|
|
34
|
+
{
|
|
35
|
+
"selector": {"name": "金额"},
|
|
36
|
+
"set": {"name": "订单金额", "required": true}
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"remove_fields": [{"name": "旧字段"}]
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Field type reference
|
|
44
|
+
|
|
45
|
+
> **口径**:`field.type` 枚举以 **`qingflow --json builder contract --tool-name app_schema_apply`**(及包内 `PublicFieldType`)为准;**形状校验**以 `qingflow_mcp` 的 **`FieldPatch`**(`builder_facade/models.py`)与 **`app_schema_apply` 编排**(`builder_facade/service.py`)为准。
|
|
4
46
|
> **CLI**:`qingflow [--profile NAME] builder schema apply [--app-key APP_KEY | 创建模式… | --apps-file 多应用对象] [--publish|--no-publish] [--add-fields-file …] [--update-fields-file …] [--remove-fields-file …]`;**`qingflow` 未在 PATH 时**可用 `npx @qingflow-tech/qingflow-cli` 前缀,并把 `--profile` 放在 `builder` 之前。
|
|
5
47
|
> **新建应用主规则**:`add_fields[]` 里必须有且仅有一个顶层字段标记 `as_data_title: true`;数据封面可选,只能在顶层 `attachment` 字段标记 `as_data_cover: true`。
|
|
6
48
|
> **权限**:包内新建应用按后端 `CreateAppBean` 链路只预检目标包 **AddAppAuth**;已有应用的字段/基础信息变更才走应用自身 **EditAppAuth**。
|
|
@@ -33,7 +75,7 @@
|
|
|
33
75
|
| `relation` | 关联记录(**`relation_mode`**:`single` \| `multiple`) |
|
|
34
76
|
| `subtable` | 子表(**`subfields[]`**) |
|
|
35
77
|
|
|
36
|
-
**`relation_mode`**:仅 **`relation`** 使用,取值为 **`single`** 或 **`multiple`**(多关联字段能力受 **`verification.relation_field_limit_verified`**
|
|
78
|
+
**`relation_mode`**:仅 **`relation`** 使用,取值为 **`single`** 或 **`multiple`**(多关联字段能力受 **`verification.relation_field_limit_verified`** 等约束,见 [reference/app-delivery-sop.md](./reference/app-delivery-sop.md))。
|
|
37
79
|
|
|
38
80
|
### 1.1 智能体友好字段类型别名
|
|
39
81
|
|
|
@@ -83,16 +125,16 @@
|
|
|
83
125
|
|
|
84
126
|
| 内容 | 位置 |
|
|
85
127
|
|------|------|
|
|
86
|
-
| **19 种 `type` + `code_block` + `q_linker` + 1 个 `relation`(一次 `add_fields`)** | [schema_apply_add_fields_all_types.json](
|
|
128
|
+
| **19 种 `type` + `code_block` + `q_linker` + 1 个 `relation`(一次 `add_fields`)** | [schema_apply_add_fields_all_types.json](../examples/schema/schema_apply_add_fields_all_types.json)(首字段已标记 `as_data_title`,附件字段已标记 `as_data_cover`;`relation.target_app_key` 须指向含「单行文字」「多行文字」的目标应用,默认 `ead8ims5i401`) |
|
|
87
129
|
| **`q_linker_example` / `code_block_example`**(契约内置形状) | `ai_builder_tools.py` 中 `app_schema_apply` 合约 |
|
|
88
|
-
| 最小新建字段(1 个 text 标题字段) | [schema_add_fields_minimal.example.json](
|
|
89
|
-
| 历史 scalar / complex 批测(可选) | [_batch_schema_scalar.json](
|
|
130
|
+
| 最小新建字段(1 个 text 标题字段) | [schema_add_fields_minimal.example.json](../examples/schema/schema_add_fields_minimal.example.json) |
|
|
131
|
+
| 历史 scalar / complex 批测(可选) | [_batch_schema_scalar.json](../examples/schema/_batch_schema_scalar.json)、[_batch_schema_complex.json](../examples/schema/_batch_schema_complex.json) |
|
|
90
132
|
|
|
91
133
|
---
|
|
92
134
|
|
|
93
135
|
## 5. 实跑结论
|
|
94
136
|
|
|
95
|
-
**一次性新建应用**:`--package-id` + `--app-name` + `--create-if-missing` + [schema_apply_add_fields_all_types.json](
|
|
137
|
+
**一次性新建应用**:`--package-id` + `--app-name` + `--create-if-missing` + [schema_apply_add_fields_all_types.json](../examples/schema/schema_apply_add_fields_all_types.json) 是当前推荐示例;它已包含唯一数据标题和可选数据封面(`q_linker` 使用 `https://httpbin.org/get`,`relation` 指向可读模板应用 `ead8ims5i401`)。
|
|
96
138
|
|
|
97
139
|
**一次性新建多个应用**:用 `builder schema apply --package-id <TAG_ID> --create-if-missing --apps-file tmp/apps.json`,其中 `tmp/apps.json` 主写法为 `{ "package_id": 123, "apps": [...] }`,每个 `apps[]` 写顶层 `icon + color`;`apps[].client_key` 可被同批 relation 字段的 `target_app_ref` 引用,`apps[].app_name` 可被 `target_app` 引用,工具会编译成真实 `target_app_key`。这是应用包/系统搭建的默认路径,尤其适合“商机 + 订单 + 回款”“花名册 + 工时”等互相关联场景;不要为了拿 `app_key` 先逐个创建再二次补关联字段。
|
|
98
140
|
|
|
@@ -102,6 +144,6 @@
|
|
|
102
144
|
|
|
103
145
|
## 6. 交叉引用
|
|
104
146
|
|
|
105
|
-
- 交付主流程(读场 / 改场 / 发布):[
|
|
106
|
-
- 记录读写 `kind`(与搭建 `type` 不同系):[QINGFLOW_CLI_FIELD_DATA_TYPES.md](
|
|
107
|
-
- 主技能:[../SKILL.md](
|
|
147
|
+
- 交付主流程(读场 / 改场 / 发布):[reference/app-delivery-sop.md](./reference/app-delivery-sop.md)(类型速查与 `relation`/`q_linker`/`code_block` 要点)。
|
|
148
|
+
- 记录读写 `kind`(与搭建 `type` 不同系):[QINGFLOW_CLI_FIELD_DATA_TYPES.md](../core/QINGFLOW_CLI_FIELD_DATA_TYPES.md)。
|
|
149
|
+
- 主技能:[../SKILL.md](../../SKILL.md)。
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Builder Layout
|
|
2
|
+
|
|
3
|
+
Read this when the task is about form grouping, row order, field placement, or layout repair.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Responsible for: `builder layout apply`, section titles, `rows` matrix, merge/replace mode, layout batch writes.
|
|
8
|
+
|
|
9
|
+
Not responsible for: adding fields. Add or update fields first through [30-schema-fields.md](./30-schema-fields.md).
|
|
10
|
+
|
|
11
|
+
## Main chain
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
app get fields -> app get layout -> prepare sections -> builder layout apply -> readback when needed
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Public shape
|
|
18
|
+
|
|
19
|
+
Use section `title + rows`. Do not invent top-level `columns`.
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"app_key": "APP_KEY",
|
|
24
|
+
"mode": "merge",
|
|
25
|
+
"publish": true,
|
|
26
|
+
"sections": [
|
|
27
|
+
{
|
|
28
|
+
"title": "基础信息",
|
|
29
|
+
"rows": [
|
|
30
|
+
["客户名称", "订单金额"],
|
|
31
|
+
["状态", "负责人"]
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Update existing layout
|
|
39
|
+
|
|
40
|
+
- Prefer `mode: "merge"` unless intentionally replacing the entire layout.
|
|
41
|
+
- Re-read `app get fields` before writing; every field in `rows` must exist.
|
|
42
|
+
- Re-read `app get layout` when apply returns `partial_success` or layout validation details.
|
|
43
|
+
- Batch layout writes use the resource's `--apps-file`; each `apps[]` item carries its own `app_key` and layout payload.
|
|
44
|
+
|
|
45
|
+
## Common failures
|
|
46
|
+
|
|
47
|
+
| Failure | Action |
|
|
48
|
+
|---------|--------|
|
|
49
|
+
| `UNKNOWN_LAYOUT_FIELD` | Re-read fields and remove or correct the missing field name. |
|
|
50
|
+
| `DUPLICATE_LAYOUT_FIELD` | Keep each field in only one row. |
|
|
51
|
+
| `INCOMPLETE_LAYOUT` | Switch to `merge` unless replacing the whole layout intentionally. |
|
|
52
|
+
| repeated shape errors | Read `builder contract --tool-name app_layout_apply`; reuse the canonical section example. |
|