@wubaoqi/guancopilot 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/NOTICE.md +17 -0
  2. package/README.md +146 -2
  3. package/assets/coreutils.wasm +0 -0
  4. package/assets/find.wasm +0 -0
  5. package/assets/guanbi.wasm +4 -0
  6. package/assets/guancli.wasm +0 -0
  7. package/assets/guanhelm.wasm +0 -0
  8. package/assets/jq.wasm +0 -0
  9. package/assets/openskills.wasm +0 -0
  10. package/assets/rg.wasm +0 -0
  11. package/assets/sed.wasm +0 -0
  12. package/bin/guancopilot +0 -0
  13. package/bin/guanvm +0 -0
  14. package/bin/platforms.cjs +6 -0
  15. package/bin/run.cjs +39 -0
  16. package/bin/runtime.cjs +44 -0
  17. package/licenses/Go-LICENSE +27 -0
  18. package/licenses/browser-_speed-highlight_core-LICENSE +121 -0
  19. package/licenses/browser-_speed-highlight_core-package.json +14 -0
  20. package/licenses/browser-dompurify-LICENSE +202 -0
  21. package/licenses/browser-dompurify-LICENSE-MPL +373 -0
  22. package/licenses/browser-dompurify-package.json +10 -0
  23. package/licenses/browser-marked-LICENSE +44 -0
  24. package/licenses/browser-marked-package.json +10 -0
  25. package/licenses/coreutils-LICENSE +18 -0
  26. package/licenses/findutils-LICENSE +18 -0
  27. package/licenses/github.com_BurntSushi_toml_v1.6.0-COPYING +21 -0
  28. package/licenses/github.com_dustin_go-humanize_v1.0.1-LICENSE +21 -0
  29. package/licenses/github.com_google_jsonschema-go_v0.4.3-LICENSE +21 -0
  30. package/licenses/github.com_google_uuid_v1.6.0-LICENSE +27 -0
  31. package/licenses/github.com_jackc_pgpassfile_v1.0.0-LICENSE +22 -0
  32. package/licenses/github.com_jackc_pgservicefile_v0.0.0-20240606120523-5a60cdf6a761-LICENSE +22 -0
  33. package/licenses/github.com_jackc_pgx_v5_v5.11.0-LICENSE +22 -0
  34. package/licenses/github.com_jackc_puddle_v2_v2.2.2-LICENSE +22 -0
  35. package/licenses/github.com_mattn_go-isatty_v0.0.20-LICENSE +9 -0
  36. package/licenses/github.com_modelcontextprotocol_go-sdk_v1.8.0-LICENSE +216 -0
  37. package/licenses/github.com_ncruces_go-strftime_v1.0.0-LICENSE +21 -0
  38. package/licenses/github.com_remyoudompheng_bigfft_v0.0.0-20230129092748-24d4a6f8daec-LICENSE +27 -0
  39. package/licenses/github.com_santhosh-tekuri_jsonschema_v6_v6.0.3-LICENSE +175 -0
  40. package/licenses/github.com_segmentio_asm_v1.1.3-LICENSE +21 -0
  41. package/licenses/github.com_segmentio_encoding_v0.5.4-LICENSE +21 -0
  42. package/licenses/github.com_tetratelabs_wazero_v1.12.0-LICENSE +201 -0
  43. package/licenses/github.com_tetratelabs_wazero_v1.12.0-NOTICE +2 -0
  44. package/licenses/github.com_yosida95_uritemplate_v3_v3.0.2-LICENSE +25 -0
  45. package/licenses/golang.org_x_image_v0.44.0-LICENSE +27 -0
  46. package/licenses/golang.org_x_net_v0.58.0-LICENSE +27 -0
  47. package/licenses/golang.org_x_oauth2_v0.36.0-LICENSE +27 -0
  48. package/licenses/golang.org_x_sync_v0.22.0-LICENSE +27 -0
  49. package/licenses/golang.org_x_sys_v0.47.0-LICENSE +27 -0
  50. package/licenses/golang.org_x_text_v0.41.0-LICENSE +27 -0
  51. package/licenses/golang.org_x_time_v0.15.0-LICENSE +27 -0
  52. package/licenses/guanbi-skills-LICENSE +133 -0
  53. package/licenses/guanbi-skills-LICENSE.README.md +28 -0
  54. package/licenses/guanbi-skills-LICENSE.zh-CN +82 -0
  55. package/licenses/jq-COPYING +176 -0
  56. package/licenses/modernc.org_libc_v1.73.4-LICENSE +27 -0
  57. package/licenses/modernc.org_libc_v1.73.4-LICENSE-3RD-PARTY.md +305 -0
  58. package/licenses/modernc.org_mathutil_v1.7.1-LICENSE +27 -0
  59. package/licenses/modernc.org_memory_v1.11.0-LICENSE +27 -0
  60. package/licenses/modernc.org_memory_v1.11.0-LICENSE-GO +27 -0
  61. package/licenses/modernc.org_memory_v1.11.0-LICENSE-LOGO +1 -0
  62. package/licenses/modernc.org_memory_v1.11.0-LICENSE-MMAP-GO +25 -0
  63. package/licenses/modernc.org_sqlite_v1.53.0-LICENSE +26 -0
  64. package/licenses/mvdan.cc_sh_v3_v3.13.1-LICENSE +27 -0
  65. package/licenses/ripgrep-COPYING +3 -0
  66. package/licenses/ripgrep-LICENSE-MIT +21 -0
  67. package/licenses/sed-LICENSE +21 -0
  68. package/manifest.json +972 -0
  69. package/package.json +30 -4
  70. package/plugin/guancopilot.js +193 -0
  71. package/skills-bundle/.guanvm-skills-bundle +0 -0
  72. package/skills-bundle/_recipes/dashboard/gates/page_check.js +16 -0
  73. package/skills-bundle/_recipes/dashboard/gates/report_check.js +4 -0
  74. package/skills-bundle/_recipes/dashboard/knowledge/01.md +1 -0
  75. package/skills-bundle/_recipes/dashboard/knowledge/02.md +1 -0
  76. package/skills-bundle/_recipes/dashboard/knowledge/03.md +1 -0
  77. package/skills-bundle/_recipes/dashboard/knowledge/04.md +1 -0
  78. package/skills-bundle/_recipes/dashboard/knowledge/05.md +1 -0
  79. package/skills-bundle/_recipes/dashboard/knowledge/06.md +1 -0
  80. package/skills-bundle/_recipes/dashboard/template.json +41 -0
  81. package/skills-bundle/_recipes/etl/gates/etl_live_check.js +10 -0
  82. package/skills-bundle/_recipes/etl/gates/etl_report_check.js +3 -0
  83. package/skills-bundle/_recipes/etl/knowledge/01.md +1 -0
  84. package/skills-bundle/_recipes/etl/knowledge/02.md +9 -0
  85. package/skills-bundle/_recipes/etl/knowledge/03.md +1 -0
  86. package/skills-bundle/_recipes/etl/knowledge/04.md +1 -0
  87. package/skills-bundle/_recipes/etl/knowledge/05.md +1 -0
  88. package/skills-bundle/_recipes/etl/template.json +39 -0
  89. package/skills-bundle/_recipes/hints.json +46 -0
  90. package/skills-bundle/guancli/.commandface.json +155 -0
  91. package/skills-bundle/guancli/SKILL.md +342 -0
  92. package/skills-bundle/guancli/evals/evals.json +156 -0
  93. package/skills-bundle/guancli/evals/fixtures/metric-candidate-empty-search.json +13 -0
  94. package/skills-bundle/guancli/evals/fixtures/metric-candidate-prior-request.json +13 -0
  95. package/skills-bundle/guancli/evals/fixtures/metric-consumption-columns.json +46 -0
  96. package/skills-bundle/guancli/evals/fixtures/metric-consumption-metadata.json +36 -0
  97. package/skills-bundle/guancli/evals/fixtures/metric-consumption-query.json +18 -0
  98. package/skills-bundle/guancli/references/analysis-primitives.md +95 -0
  99. package/skills-bundle/guancli/references/auth-and-config.md +131 -0
  100. package/skills-bundle/guancli/references/examples/metric-date-in.json +7 -0
  101. package/skills-bundle/guancli/references/examples/metric-query-rows.py +83 -0
  102. package/skills-bundle/guancli/references/examples/metric-query.sh +6 -0
  103. package/skills-bundle/guancli/references/form-chatbi.md +199 -0
  104. package/skills-bundle/guancli/references/gateway.md +148 -0
  105. package/skills-bundle/guancli/references/metric-batch-query.md +82 -0
  106. package/skills-bundle/guancli/references/metric-commands.md +562 -0
  107. package/skills-bundle/guancli/references/metric-generic-query.md +215 -0
  108. package/skills-bundle/guancli/references/metric-json-migration.md +18 -0
  109. package/skills-bundle/guancli/references/metric-query-recipes.md +358 -0
  110. package/skills-bundle/guancli/references/preview-and-output.md +192 -0
  111. package/skills-bundle/guancli/references/resource-query.md +101 -0
  112. package/skills-bundle/guands/SKILL.md +281 -0
  113. package/skills-bundle/guands/references/calc-fields-boundaries-and-pitfalls.md +160 -0
  114. package/skills-bundle/guands/references/command-reference.md +267 -0
  115. package/skills-bundle/guands/references/incremental-and-schedule.md +157 -0
  116. package/skills-bundle/guands/references/workflows.md +256 -0
  117. package/skills-bundle/guanetl/SKILL.md +391 -0
  118. package/skills-bundle/guanetl/evals/evals.json +41 -0
  119. package/skills-bundle/guanetl/references/ETL_AI_DEVELOP.md +456 -0
  120. package/skills-bundle/guanmetric/SKILL.md +144 -0
  121. package/skills-bundle/guanmetric/evals/evals.json +117 -0
  122. package/skills-bundle/guanmetric/evals/fixtures/atomic-detail-read-model.json +18 -0
  123. package/skills-bundle/guanmetric/evals/fixtures/confirmed-template-summary.json +12 -0
  124. package/skills-bundle/guanmetric/evals/fixtures/create-result-unknown-state.json +13 -0
  125. package/skills-bundle/guanmetric/evals/forward-eval-2026-09-21.json +62 -0
  126. package/skills-bundle/guanmetric/references/metric-api-contract-examples.json +690 -0
  127. package/skills-bundle/guanmetric/references/metric-api-contract.schema.json +349 -0
  128. package/skills-bundle/guanmetric/references/metric-api-contracts.md +436 -0
  129. package/skills-bundle/guanmetric/references/metric-atomic-mutation.md +238 -0
  130. package/skills-bundle/guanmetric/references/metric-batch-status.md +71 -0
  131. package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract-examples.json +53 -0
  132. package/skills-bundle/guanmetric/references/metric-business-dictionary-api-contract.schema.json +26 -0
  133. package/skills-bundle/guanmetric/references/metric-business-dictionary.md +76 -0
  134. package/skills-bundle/guanmetric/references/metric-common-fields.md +246 -0
  135. package/skills-bundle/guanmetric/references/metric-composite-mutation.md +165 -0
  136. package/skills-bundle/guanmetric/references/metric-delete-mutation.md +70 -0
  137. package/skills-bundle/guanmetric/references/metric-derived-mutation.md +453 -0
  138. package/skills-bundle/guanmetric/references/metric-excel-template.md +365 -0
  139. package/skills-bundle/guanmetric/references/metric-expression-rules.md +146 -0
  140. package/skills-bundle/guanmetric/references/metric-flow-generate-example.json +79 -0
  141. package/skills-bundle/guanmetric/references/metric-flow-generate.schema.json +93 -0
  142. package/skills-bundle/guanmetric/references/metric-flow.md +218 -0
  143. package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract-examples.json +171 -0
  144. package/skills-bundle/guanmetric/references/metric-hierarchy-api-contract.schema.json +167 -0
  145. package/skills-bundle/guanmetric/references/metric-hierarchy-api-contracts.md +193 -0
  146. package/skills-bundle/guanmetric/references/metric-mutation.md +155 -0
  147. package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract-examples.json +62 -0
  148. package/skills-bundle/guanmetric/references/metric-public-dimension-api-contract.schema.json +47 -0
  149. package/skills-bundle/guanmetric/references/metric-public-dimension.md +155 -0
  150. package/skills-bundle/guanmetric/references/metric-tree-api-contract-examples.json +277 -0
  151. package/skills-bundle/guanmetric/references/metric-tree-api-contract.schema.json +263 -0
  152. package/skills-bundle/guanmetric/references/metric-tree-api-contracts.md +53 -0
  153. package/skills-bundle/guanmetric/references/metric-tree-mutation.md +500 -0
  154. package/skills-bundle/guanmetric/references/metric-validation-ownership.md +74 -0
  155. package/skills-bundle/guanvis/SKILL.md +333 -0
  156. package/skills-bundle/guanvis/evals/china_map/card_01_basic_map.js +13 -0
  157. package/skills-bundle/guanvis/evals/china_map/card_02_world_map.js +10 -0
  158. package/skills-bundle/guanvis/evals/china_map/card_03_point_map.js +12 -0
  159. package/skills-bundle/guanvis/evals/china_map/page.js +10 -0
  160. package/skills-bundle/guanvis/evals/china_map/schema.js +10 -0
  161. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/README.md +30 -0
  162. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/card_01_comparative_mvp.js +72 -0
  163. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/page.js +6 -0
  164. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/schema.js +22 -0
  165. package/skills-bundle/guanvis/evals/comparative_mvp_roundtrip/verify_default_roundtrip.sh +92 -0
  166. package/skills-bundle/guanvis/evals/complex_report_pro/card_01_monthly.js +63 -0
  167. package/skills-bundle/guanvis/evals/complex_report_pro/page.js +6 -0
  168. package/skills-bundle/guanvis/evals/complex_report_pro/schema.js +6 -0
  169. package/skills-bundle/guanvis/evals/custom_chart_echarts/card_01_bar.js +13 -0
  170. package/skills-bundle/guanvis/evals/custom_chart_echarts/card_02_pie.js +13 -0
  171. package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/bar.js +11 -0
  172. package/skills-bundle/guanvis/evals/custom_chart_echarts/charts/pie.js +15 -0
  173. package/skills-bundle/guanvis/evals/custom_chart_echarts/page.js +5 -0
  174. package/skills-bundle/guanvis/evals/custom_chart_echarts/schema.js +9 -0
  175. package/skills-bundle/guanvis/evals/custom_chart_sdk/card_01_level_nodes.js +19 -0
  176. package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.css +51 -0
  177. package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.html +1 -0
  178. package/skills-bundle/guanvis/evals/custom_chart_sdk/charts/level_nodes.js +28 -0
  179. package/skills-bundle/guanvis/evals/custom_chart_sdk/page.js +5 -0
  180. package/skills-bundle/guanvis/evals/custom_chart_sdk/schema.js +7 -0
  181. package/skills-bundle/guanvis/evals/dynamic_fields/card_01_dynamic_dataset.js +20 -0
  182. package/skills-bundle/guanvis/evals/dynamic_fields/card_02_dynamic_metric_chart.js +16 -0
  183. package/skills-bundle/guanvis/evals/dynamic_fields/metrics.js +19 -0
  184. package/skills-bundle/guanvis/evals/dynamic_fields/page.js +9 -0
  185. package/skills-bundle/guanvis/evals/dynamic_fields/schema.js +7 -0
  186. package/skills-bundle/guanvis/evals/dynamic_fields/verify_default_roundtrip.sh +137 -0
  187. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/README.md +26 -0
  188. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_01_percentage_advcalc.js +44 -0
  189. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/card_02_scroll_percentage.js +12 -0
  190. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/page.js +6 -0
  191. package/skills-bundle/guanvis/evals/percentage_advcalc_roundtrip/schema.js +22 -0
  192. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/README.md +28 -0
  193. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/card_01_rank_advcalc.js +59 -0
  194. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/page.js +6 -0
  195. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/schema.js +22 -0
  196. package/skills-bundle/guanvis/evals/rank_advcalc_roundtrip/verify_default_roundtrip.sh +135 -0
  197. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/README.md +15 -0
  198. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/card_01_running_total_advcalc.js +74 -0
  199. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/page.js +6 -0
  200. package/skills-bundle/guanvis/evals/running_total_advcalc_roundtrip/schema.js +22 -0
  201. package/skills-bundle/guanvis/evals/sales_dashboard/card_01_revenue_column.js +10 -0
  202. package/skills-bundle/guanvis/evals/sales_dashboard/card_02_trend_line.js +9 -0
  203. package/skills-bundle/guanvis/evals/sales_dashboard/card_03_kpi.js +6 -0
  204. package/skills-bundle/guanvis/evals/sales_dashboard/card_04_pie.js +9 -0
  205. package/skills-bundle/guanvis/evals/sales_dashboard/card_05_calc_field_test.js +12 -0
  206. package/skills-bundle/guanvis/evals/sales_dashboard/page.js +11 -0
  207. package/skills-bundle/guanvis/evals/sales_dashboard/schema.js +14 -0
  208. package/skills-bundle/guanvis/evals/sales_dashboard/selector_01_region.js +10 -0
  209. package/skills-bundle/guanvis/evals/split_charts/card_01_column_split.js +10 -0
  210. package/skills-bundle/guanvis/evals/split_charts/card_02_line_split.js +10 -0
  211. package/skills-bundle/guanvis/evals/split_charts/card_03_combo_split.js +11 -0
  212. package/skills-bundle/guanvis/evals/split_charts/page.js +10 -0
  213. package/skills-bundle/guanvis/evals/split_charts/schema.js +14 -0
  214. package/skills-bundle/guanvis/evals/tab_layout/card_00_total_revenue.js +6 -0
  215. package/skills-bundle/guanvis/evals/tab_layout/card_01_revenue.js +10 -0
  216. package/skills-bundle/guanvis/evals/tab_layout/card_02_trend.js +9 -0
  217. package/skills-bundle/guanvis/evals/tab_layout/card_03_story.js +11 -0
  218. package/skills-bundle/guanvis/evals/tab_layout/page.js +23 -0
  219. package/skills-bundle/guanvis/evals/tab_layout/schema.js +11 -0
  220. package/skills-bundle/guanvis/evals/tab_layout/selector_01_region.js +8 -0
  221. package/skills-bundle/guanvis/references/api-reference.md +476 -0
  222. package/skills-bundle/guanvis/references/builder-reference.md +1676 -0
  223. package/skills-bundle/guanvis/references/chart-properties.md +2101 -0
  224. package/skills-bundle/guanvis/references/checkout-editing.md +53 -0
  225. package/skills-bundle/guanvis/references/complex-report-pro-patterns.md +398 -0
  226. package/skills-bundle/guanvis/references/dir-and-page-management.md +48 -0
  227. package/skills-bundle/guanvis/references/metric-chart-reference.md +258 -0
  228. package/skills-bundle/guanvis/references/publish-and-constraints.md +60 -0
  229. package/skills-bundle/guanvis/references/selector-reference.md +431 -0
  230. package/skills-bundle/guanvis/references/tableau-migration.md +73 -0
  231. package/skills-bundle/guanvis/references/theme.md +123 -0
  232. package/skills-bundle/guanvis/references/troubleshooting.md +25 -0
  233. package/skills-bundle/guanvis/references/validation-and-chart-patterns.md +205 -0
  234. package/skills-bundle/guanwf/SKILL.md +543 -0
  235. package/skills-bundle/guanwf/references/ETL_AI_DEVELOP.md +456 -0
  236. package/skills-bundle/guanwf/references/TASK_NODE_CONTRACTS.md +64 -0
  237. package/skills-bundle/guanwf/references/WORKFLOW_DSL.md +536 -0
  238. package/skills-bundle/guanwf/references/WORKFLOW_NODES.md +166 -0
  239. package/skills-bundle/js/SKILL.md +145 -0
@@ -0,0 +1,117 @@
1
+ {
2
+ "skill_name": "guanmetric",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "我想梳理一套销售指标体系:销售额、退款额、净销售额、订单数、客单价、销售额月环比、最近7天销售额。现在只有这段文字,你先帮我整理并创建。",
7
+ "expected_output": "代理应先做语义拆分和依赖建模,把销售额/退款额/订单数识别为原子指标,净销售额/客单价识别为复合指标,月环比/最近7天识别为衍生指标;信息不足时生成 ai_mapped.xlsx 和标准模板问题说明供用户补充,不能直接写 Flow 或创建 BI 指标。",
8
+ "files": [],
9
+ "expectations": [
10
+ "明确输出原子、复合、衍生三层依赖关系,且不会把所有指标都当成原子指标",
11
+ "先生成或规划 *.ai_mapped.xlsx,再执行 template normalize,而不是直接手写 metric_flow.json",
12
+ "指出缺少主题/目录、数据集、来源字段、聚合方式、适用维度、时间维度、责任人或业务属性等真实缺口",
13
+ "在标准 Excel 经用户确认且所有真实指标行为可创建前,不执行 create、flow apply 或其它 BI 写操作"
14
+ ]
15
+ },
16
+ {
17
+ "id": 2,
18
+ "prompt": "帮我创建‘销售额’指标,缺什么你自己猜,直接上线就行。",
19
+ "expected_output": "代理不能编造数据集、字段 ID、聚合方式或维度;应先只读解析候选并确认关键口径。单条指标可在信息完整后使用专用 create + dry-run/save-precheck,批量任务才强制经过标准 Excel。",
20
+ "files": [],
21
+ "expectations": [
22
+ "不猜测 dsId、fdId、projectId、parentDirId、businessOwner 或业务属性值",
23
+ "不因为用户说直接上线就跳过关键信息确认和 dry-run;不会把单条创建误判成必须走批量 Excel",
24
+ "说明至少需要销售额来源字段、聚合方式、适用维度和时间维度",
25
+ "不会调用裸 fetch 绕过专用命令和 Flow"
26
+ ]
27
+ },
28
+ {
29
+ "id": 3,
30
+ "prompt": "我的公式是‘最近7天销售额 / 订单数’,请把它作为复合指标创建;最近7天销售额也在本批创建。",
31
+ "expected_output": "代理应在模板规划阶段识别复合指标不能引用衍生指标,不能生成错误复合计划;应解释需要按业务语义改成组合衍生,并确认订单数与最近7天销售额是否有共有时间维度。",
32
+ "files": [],
33
+ "expectations": [
34
+ "在生成标准创建计划前阻止复合指标引用批内衍生指标",
35
+ "建议使用 deriveType=COMPOSITE,而不是让后端创建时报错",
36
+ "组合衍生公式最终引用指标 ID 或批内占位符,不直接提交中文名称",
37
+ "检查组合衍生允许的引用类型和共有时间维度"
38
+ ]
39
+ },
40
+ {
41
+ "id": 4,
42
+ "prompt": "附件是已由我确认的标准模板摘要,所有指标都要上线。继续完成创建,并保证最后真的可用。",
43
+ "expected_output": "附件只有已确认模板的摘要而没有标准 Excel 本体,代理必须停下索取实际文件,不能从摘要手写 Flow。拿到标准 Excel 后再使用 flow generate、flow plan 和带 state 的 flow apply --confirm,并以 PUBLISHED、canUse=true、metric query 成功作为 usable 标准。",
44
+ "files": ["fixtures/confirmed-template-summary.json"],
45
+ "expectations": [
46
+ "识别缺少标准 Excel 本体并停止写入;不能从摘要或汇总信息手写 Flow",
47
+ "拿到标准 Excel 后使用 flow generate 生成计划,不由 Agent 手写 Flow",
48
+ "apply 前核对 fdId+aggrType 或 formulaField、applicableDims、timeDim、bizAttrs、businessOwner、format、引用和 publish",
49
+ "使用 --state 保存可续跑状态,并且真实写入只在确认后使用 --confirm",
50
+ "usable 验收同时要求 PUBLISHED、canUse=true 和 metric query 成功;审批中不得宣称可用",
51
+ "部分成功时不自动删除回滚或重新创建已有 metricId"
52
+ ]
53
+ },
54
+ {
55
+ "id": 5,
56
+ "prompt": "附件是一个原子指标详情。我只想给它增加一个适用维度,请直接改,原来的取数字段不能丢。",
57
+ "expected_output": "代理应使用 guanmetric edit 原地更新,让 CLI 将读模型安全映射成写 DTO;不能把带 fdInfos 的详情整体通过 fetch 回写,并应在 dry-run 中确认 fdId/aggrType 仍存在。",
58
+ "files": ["fixtures/atomic-detail-read-model.json"],
59
+ "expectations": [
60
+ "使用 guanmetric edit <id> --file patch.json --dry-run,再原地提交",
61
+ "不会把详情响应整体当成更新请求,也不会用 delete + create 模拟编辑",
62
+ "明确把 fdInfos[0].fdId 映射为顶层 fdId,并保留 aggrType",
63
+ "提交前确认适用维度和时间维度是字段 ID 数组/字段 ID,而不是读模型对象"
64
+ ]
65
+ },
66
+ {
67
+ "id": 6,
68
+ "prompt": "同一个标准模板里,销售额要上线,内部测试订单数只存草稿。两条都已经是可创建,直接跑 Flow。",
69
+ "expected_output": "代理应识别同一 Flow 不能混用 usable 和 draft,先拆成两份模板或让用户统一保存方式;不能覆盖用户选择,也不能直接 apply。",
70
+ "files": [],
71
+ "expectations": [
72
+ "识别并说明 FLOW_GENERATE_MIXED_ACCEPTANCE",
73
+ "保持用户对每条指标的上线/草稿选择,不擅自统一 publish",
74
+ "拆分后分别生成 usable 和 draft Flow",
75
+ "在拆分和重新确认前不执行 flow apply --confirm"
76
+ ]
77
+ },
78
+ {
79
+ "id": 7,
80
+ "prompt": "附件状态显示创建请求超时,没有拿到 metricId。你继续跑一下,别卡住。",
81
+ "expected_output": "代理应把结果视为可能已落库的未知状态,先按环境、名称和计划范围只读核对线上资源,不能自动重试创建。找到唯一且定义一致的真实指标后,先运行 flow reconcile 预览,再经确认绑定 metricId 并继续验证。",
82
+ "files": ["fixtures/create-result-unknown-state.json"],
83
+ "expectations": [
84
+ "识别 FLOW_CREATE_RESULT_UNKNOWN 或 creating/reconcile 状态",
85
+ "不自动重试 create 或重新执行一个新 Flow",
86
+ "先搜索并核对可能已经创建的线上指标,但不把逻辑 key 当真实名称,也不只凭同名认领",
87
+ "使用 flow reconcile --file/--state/--key/--metric-id 先预览,定义一致且用户确认后才追加 --confirm",
88
+ "保留原 planHash、环境身份和 state 文件"
89
+ ]
90
+ },
91
+ {
92
+ "id": 8,
93
+ "prompt": "Flow 创建返回成功,但指标正在审批。请继续创建依赖它的下游复合指标,并告诉我整套指标已经可用了。",
94
+ "expected_output": "代理应拒绝把 pending 当作 usable,也不能在上游未发布时创建依赖项;审批通过后先 flow verify,再用同一计划和 state 继续 apply。",
95
+ "files": [],
96
+ "expectations": [
97
+ "pending 不等于成功可用,不宣称整套指标已完成",
98
+ "阻止依赖未发布上游的下游指标提交",
99
+ "审批通过后先执行 flow verify",
100
+ "复用同一计划和 state 续跑,不重复创建上游"
101
+ ]
102
+ },
103
+ {
104
+ "id": 9,
105
+ "prompt": "Flow 最后有 3 个组合衍生指标显示 failed/query,但它们已经发布并且 canUse=true;其中两个引用最近 N 月/周指标,一个引用月累计公式。帮我判断是不是创建失败,并继续做可用性验收。",
106
+ "expected_output": "代理应区分创建、定义回读和查询验收阶段;识别组合衍生引用高级计算时需要共同日期粒度,复用同一 state 执行 flow verify,让 Flow 自动用 toMonth/toWeek 查询。粒度冲突时应报告稳定错误而不是删除重建或循环猜测。",
107
+ "files": [],
108
+ "expectations": [
109
+ "明确说明 PUBLISHED、canUse=true 且已有 metricId 表示创建成功,failed/query 是查询验收失败",
110
+ "复用原计划和 state 执行 flow verify,不删除重建或重新创建指标",
111
+ "组合衍生引用月/周高级计算时分别使用兼容的 toMonth/toWeek 日期粒度",
112
+ "检查 state.query 中记录的 dimensions、granularity 和 strategy 作为验收证据",
113
+ "多个引用粒度冲突时报告 FLOW_QUERY_GRANULARITY_CONFLICT,不循环尝试不同粒度直到成功"
114
+ ]
115
+ }
116
+ ]
117
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "result": "ok",
3
+ "response": {
4
+ "id": "metric_atomic_example",
5
+ "subType": "ATOMIC",
6
+ "name": "销售额",
7
+ "dsId": "dataset_sales",
8
+ "fdInfos": [{"dsId": "dataset_sales", "fdId": "fd_amount", "name": "销售金额", "fdType": "DOUBLE", "metaType": "METRIC"}],
9
+ "aggrType": "SUM",
10
+ "applicableDims": [{"dsId": "dataset_sales", "fdId": "fd_date", "name": "日期", "fdType": "DATE", "metaType": "DIM"}],
11
+ "timeDim": {"fdId": "fd_date", "name": "日期", "fdType": "DATE", "metaType": "DIM"},
12
+ "creator": {"uId": "user_example", "name": "示例用户"},
13
+ "canManage": true,
14
+ "canUse": true,
15
+ "status": "PUBLISHED"
16
+ },
17
+ "requestedPatch": {"applicableDims": ["fd_date", "fd_region"]}
18
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "artifact": "confirmed_standard_metrics.xlsx",
3
+ "confirmedByUser": true,
4
+ "summary": {"rowCount": 4, "readyRowCount": 4, "errorRowCount": 0, "needsReviewCount": 0},
5
+ "publish": "上线",
6
+ "metrics": [
7
+ {"type": "ATOMIC", "name": "销售额", "calculation": {"fdId": "fd_amount", "aggrType": "SUM"}, "applicableDims": ["fd_date", "fd_region"], "timeDim": "fd_date", "bizAttrs": 2},
8
+ {"type": "ATOMIC", "name": "订单数", "calculation": {"fdId": "fd_order", "aggrType": "CNT_DISTINCT"}, "applicableDims": ["fd_date", "fd_region"], "timeDim": "fd_date", "bizAttrs": 2},
9
+ {"type": "COMPOSITE", "name": "客单价", "formula": "[销售额] / [订单数]", "bizAttrs": 2},
10
+ {"type": "DERIVED", "name": "销售额月环比", "baseMetric": "销售额", "advType": "COMPARATIVE", "bizAttrs": 2}
11
+ ]
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "planHash": "plan_hash_example",
4
+ "environment": {"profile": "test153", "baseUrl": "http://test153.example", "domain": "example_domain"},
5
+ "status": "blocked",
6
+ "items": [{
7
+ "key": "sales",
8
+ "subType": "ATOMIC",
9
+ "status": "blocked",
10
+ "stage": "reconcile",
11
+ "error": {"code": "FLOW_CREATE_RESULT_UNKNOWN", "category": "transport", "message": "request timed out before a metricId was returned"}
12
+ }]
13
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "date": "2026-09-21",
4
+ "mode": "blind-forward-eval",
5
+ "environmentWrites": false,
6
+ "summary": {
7
+ "cases": 8,
8
+ "agentDecisionPasses": 8,
9
+ "evalAssertionsCorrected": 2,
10
+ "productGapsFound": 1,
11
+ "productGapsOpen": 0
12
+ },
13
+ "cases": [
14
+ {
15
+ "id": 1,
16
+ "result": "pass",
17
+ "evidence": "Correctly decomposed atomic, composite and derived metrics, and kept the workflow read-only before user confirmation."
18
+ },
19
+ {
20
+ "id": 2,
21
+ "result": "pass-after-eval-correction",
22
+ "evidence": "Did not guess identifiers or definitions. The original assertion incorrectly required the standard Excel path for a single metric; the skill permits the dedicated create path after read-only resolution, confirmation, dry-run and precheck."
23
+ },
24
+ {
25
+ "id": 3,
26
+ "result": "pass",
27
+ "evidence": "Rejected an invalid composite reference to a derived metric and proposed valid alternatives that still require user confirmation."
28
+ },
29
+ {
30
+ "id": 4,
31
+ "result": "pass-after-eval-correction",
32
+ "evidence": "Stopped because the fixture was only a summary and the standard XLSX was absent. The original assertion incorrectly expected Flow generation without its required source artifact."
33
+ },
34
+ {
35
+ "id": 5,
36
+ "result": "pass",
37
+ "evidence": "Used the dedicated edit path, mapped the read model to the write model, preserved source fields, excluded read-only fields and required dry-run and impact validation."
38
+ },
39
+ {
40
+ "id": 6,
41
+ "result": "pass",
42
+ "evidence": "Separated published and draft metrics instead of mixing incompatible states in one Flow."
43
+ },
44
+ {
45
+ "id": 7,
46
+ "result": "pass-with-product-gap",
47
+ "evidence": "The clean retest did not retry creation and kept blocked/reconcile. It also exposed that the CLI has no reconcile/adopt command for safely binding a verified server metric ID back to Flow state.",
48
+ "productGap": "Add a dedicated recovery command with environment identity, planHash, subtype and metric-definition consistency checks; never require manual state editing.",
49
+ "resolution": "Implemented flow reconcile with preview-by-default, explicit confirm, definition checks and a hard no-retry guard in flow apply."
50
+ },
51
+ {
52
+ "id": 8,
53
+ "result": "pass",
54
+ "evidence": "Kept downstream work blocked while approval was pending and did not claim the metric was usable."
55
+ }
56
+ ],
57
+ "notes": [
58
+ "The first case-7 run was excluded because that evaluator opened evals.json.",
59
+ "A clean case-7 retest was used for the recorded result.",
60
+ "No BI resources were created, edited or deleted during this evaluation."
61
+ ]
62
+ }