@thinkingai/ae-cli 6.1.20 → 6.1.21
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 +2 -1
- package/README.zh.md +2 -1
- package/dist/{auth-FUM37MHF.js → auth-XZNXFRJS.js} +5 -5
- package/dist/{capability-AXFQW5WM.js → capability-FYTU3X6L.js} +42 -12
- package/dist/{chunk-LNZBEQXW.js → chunk-4NRCTUZJ.js} +27041 -474
- package/dist/{chunk-VXNMYUXU.js → chunk-57RRFUEZ.js} +23 -7
- package/dist/{chunk-WZ6YVQSF.js → chunk-7FTTULED.js} +1 -1
- package/dist/{chunk-ATSM5XAW.js → chunk-7XGFSUOM.js} +2 -2
- package/dist/chunk-CCS66K4K.js +155 -0
- package/dist/{chunk-I4WQAEYB.js → chunk-DVMLWQD4.js} +8 -186
- package/dist/{chunk-CZU3V3DQ.js → chunk-DX5CDO34.js} +27 -6
- package/dist/chunk-EQ255HKO.js +38248 -0
- package/dist/{chunk-BBEFP4SB.js → chunk-HBGADCKA.js} +3 -3
- package/dist/{chunk-QJQZH5GQ.js → chunk-HFGZGYCG.js} +10 -6
- package/dist/{chunk-ECBLHAZO.js → chunk-JOCDD4ON.js} +1 -1
- package/dist/{chunk-TKHSULJT.js → chunk-KPQY44JQ.js} +6 -0
- package/dist/{chunk-4P355ZWB.js → chunk-MAPZ7VB6.js} +21 -1
- package/dist/chunk-V2NUHPXF.js +196 -0
- package/dist/{chunk-RSG4ONOI.js → chunk-VYXXOKYS.js} +5 -5
- package/dist/{community-report-client-XXWGSBSD.js → community-report-client-CU22W53K.js} +1 -1
- package/dist/{config-EXUGQN5T.js → config-XO3LI3SA.js} +4 -4
- package/dist/context-IFJI3LIT.js +46 -0
- package/dist/{data-integration-4NZ53OMT.js → data-integration-HNGUKFIC.js} +44 -35
- package/dist/index.js +101 -64
- package/dist/{local-data-upload-client-KYOKVYZV.js → local-data-upload-client-GTRIT64F.js} +3 -2
- package/dist/{memory-ATNKZNW5.js → memory-QGPSNCQS.js} +4 -4
- package/dist/{metadata-VZVC7YMH.js → metadata-DI5BMYFU.js} +8 -8
- package/dist/{model-E4JMQ4V2.js → model-RNPQXIBI.js} +4 -4
- package/dist/{personal-semantic-preference-7S2SQ3UV.js → personal-semantic-preference-5C3WUXFI.js} +11 -8
- package/dist/{project-semantic-2SZP2OPO.js → project-semantic-3LF6Q6JZ.js} +27 -21
- package/dist/{sync-YV3E66IF.js → sync-O45NXEQY.js} +7 -6
- package/dist/{te-agent-JB5T3PO7.js → te-agent-K5MSPNHJ.js} +5 -5
- package/dist/{te-analysis-3YJAAT2D.js → te-analysis-AISWCOOZ.js} +1086 -354
- package/dist/{te-community-UDBI672N.js → te-community-4OYU3BDA.js} +4 -4
- package/dist/{te-dataops-ZLYOCXZ4.js → te-dataops-NFIPB6FX.js} +5 -5
- package/dist/{te-engage-4XG6OJML.js → te-engage-BAM3GBFX.js} +7 -7
- package/dist/{te-experiment-VXUWPINJ.js → te-experiment-GUTZXZ5Z.js} +132 -14
- package/dist/{te-kb-WYQWHFSC.js → te-kb-3TS73NO6.js} +454 -194
- package/dist/{te-system-7G6F2LJA.js → te-system-STMHLS5J.js} +12 -7
- package/dist/{te-team-E7FBBXMQ.js → te-team-3I5AOX3N.js} +6 -6
- package/dist/{update-D47BUG25.js → update-RZXLPCRH.js} +4 -4
- package/package.json +21 -14
- package/skills/ae-analysis/SKILL.md +91 -78
- package/skills/ae-analysis/references/adhoc_export.md +11 -18
- package/skills/ae-analysis/references/adhoc_run.md +15 -7
- package/skills/ae-analysis/references/agent_review_detail.md +11 -0
- package/skills/ae-analysis/references/agent_review_evidence.md +46 -0
- package/skills/ae-analysis/references/agent_review_list.md +9 -0
- package/skills/ae-analysis/references/agent_review_preflight.md +96 -0
- package/skills/ae-analysis/references/agent_review_priorities_comparisons.md +76 -0
- package/skills/ae-analysis/references/agent_review_records.md +9 -0
- package/skills/ae-analysis/references/agent_review_retry.md +12 -0
- package/skills/ae-analysis/references/agent_review_review.md +16 -0
- package/skills/ae-analysis/references/agent_review_submit_to_page.md +184 -0
- package/skills/ae-analysis/references/ai_models/attribution.md +29 -0
- package/skills/ae-analysis/references/ai_models/distribution.md +40 -0
- package/skills/ae-analysis/references/ai_models/event.md +108 -0
- package/skills/ae-analysis/references/ai_models/funnel.md +46 -0
- package/skills/ae-analysis/references/ai_models/heat_map.md +26 -0
- package/skills/ae-analysis/references/ai_models/interval.md +20 -0
- package/skills/ae-analysis/references/ai_models/path.md +38 -0
- package/skills/ae-analysis/references/ai_models/prop_analysis.md +39 -0
- package/skills/ae-analysis/references/ai_models/rank_list.md +25 -0
- package/skills/ae-analysis/references/ai_models/retention.md +70 -0
- package/skills/ae-analysis/references/ai_models/revenue.md +28 -0
- package/skills/ae-analysis/references/ai_models/sql.md +74 -0
- package/skills/ae-analysis/references/ai_models/tag.md +19 -0
- package/skills/ae-analysis/references/ai_models.md +32 -473
- package/skills/ae-analysis/references/alert_create.md +7 -7
- package/skills/ae-analysis/references/alert_delete.md +4 -6
- package/skills/ae-analysis/references/alert_detail_list.md +7 -9
- package/skills/ae-analysis/references/alert_get.md +5 -7
- package/skills/ae-analysis/references/alert_job_list.md +4 -6
- package/skills/ae-analysis/references/alert_list.md +6 -8
- package/skills/ae-analysis/references/alert_notice_config_list.md +4 -6
- package/skills/ae-analysis/references/alert_start.md +5 -7
- package/skills/ae-analysis/references/alert_stop.md +5 -7
- package/skills/ae-analysis/references/alert_update.md +8 -8
- package/skills/ae-analysis/references/analysis_data_export.md +72 -0
- package/skills/ae-analysis/references/analysis_data_retrieval.md +32 -196
- package/skills/ae-analysis/references/analysis_gateway_assets.md +23 -180
- package/skills/ae-analysis/references/analysis_interpretation.md +37 -17
- package/skills/ae-analysis/references/asset_abnormal_get.md +0 -1
- package/skills/ae-analysis/references/asset_abnormal_list.md +0 -1
- package/skills/ae-analysis/references/asset_authentication_export.md +4 -0
- package/skills/ae-analysis/references/asset_authentication_list.md +7 -1
- package/skills/ae-analysis/references/asset_authentication_update.md +5 -1
- package/skills/ae-analysis/references/asset_batch_dashboard_schedule_freeze.md +8 -6
- package/skills/ae-analysis/references/asset_batch_delete.md +6 -6
- package/skills/ae-analysis/references/asset_batch_disable_auto_backup.md +4 -5
- package/skills/ae-analysis/references/asset_batch_disable_auto_update.md +5 -6
- package/skills/ae-analysis/references/asset_batch_handover.md +4 -5
- package/skills/ae-analysis/references/asset_batch_info_export.md +4 -5
- package/skills/ae-analysis/references/asset_batch_sql_export.md +5 -6
- package/skills/ae-analysis/references/asset_dependency_list.md +4 -5
- package/skills/ae-analysis/references/asset_export.md +4 -5
- package/skills/ae-analysis/references/asset_impact_list.md +5 -9
- package/skills/ae-analysis/references/asset_lineage_get.md +5 -6
- package/skills/ae-analysis/references/asset_list.md +4 -5
- package/skills/ae-analysis/references/asset_query_history_list.md +4 -8
- package/skills/ae-analysis/references/asset_recent_list.md +0 -1
- package/skills/ae-analysis/references/asset_search.md +12 -9
- package/skills/ae-analysis/references/asset_url_get.md +3 -4
- package/skills/ae-analysis/references/bi_panel_copy.md +2 -2
- package/skills/ae-analysis/references/bi_panel_page_data_export.md +4 -12
- package/skills/ae-analysis/references/bi_panel_page_data_run.md +2 -0
- package/skills/ae-analysis/references/catalog_export.md +4 -17
- package/skills/ae-analysis/references/catalog_list.md +4 -4
- package/skills/ae-analysis/references/check_delete.md +5 -7
- package/skills/ae-analysis/references/check_export.md +11 -11
- package/skills/ae-analysis/references/check_get.md +8 -10
- package/skills/ae-analysis/references/check_list.md +4 -6
- package/skills/ae-analysis/references/check_retry.md +8 -10
- package/skills/ae-analysis/references/check_run.md +2 -4
- package/skills/ae-analysis/references/command_index.md +44 -26
- package/skills/ae-analysis/references/dashboard_report_data_export.md +5 -13
- package/skills/ae-analysis/references/dashboard_report_data_run.md +1 -1
- package/skills/ae-analysis/references/dashboard_update.md +14 -3
- package/skills/ae-analysis/references/datatable_columns_get.md +0 -1
- package/skills/ae-analysis/references/datatable_influence_list.md +0 -1
- package/skills/ae-analysis/references/datatable_version_get.md +0 -1
- package/skills/ae-analysis/references/datatable_version_list.md +0 -1
- package/skills/ae-analysis/references/debug_device_add.md +1 -2
- package/skills/ae-analysis/references/drilldown_entities_export.md +3 -3
- package/skills/ae-analysis/references/drilldown_events_export.md +3 -2
- package/skills/ae-analysis/references/drilldown_user_events_export.md +2 -2
- package/skills/ae-analysis/references/entity_detail_export.md +3 -2
- package/skills/ae-analysis/references/entity_detail_run.md +1 -0
- package/skills/ae-analysis/references/event_blacklist_add.md +5 -7
- package/skills/ae-analysis/references/event_blacklist_list.md +4 -6
- package/skills/ae-analysis/references/event_blacklist_update.md +6 -8
- package/skills/ae-analysis/references/event_changelog_list.md +0 -1
- package/skills/ae-analysis/references/event_create.md +0 -1
- package/skills/ae-analysis/references/event_detail_export.md +3 -2
- package/skills/ae-analysis/references/event_detail_run.md +1 -0
- package/skills/ae-analysis/references/event_export.md +0 -1
- package/skills/ae-analysis/references/event_get.md +0 -1
- package/skills/ae-analysis/references/event_hide_update.md +0 -1
- package/skills/ae-analysis/references/event_influence_list.md +0 -1
- package/skills/ae-analysis/references/event_list.md +0 -1
- package/skills/ae-analysis/references/event_property_bundle_export.md +5 -14
- package/skills/ae-analysis/references/event_property_bundle_import.md +2 -6
- package/skills/ae-analysis/references/event_relation_update.md +0 -1
- package/skills/ae-analysis/references/event_update.md +0 -1
- package/skills/ae-analysis/references/exchange_config_update.md +0 -1
- package/skills/ae-analysis/references/exchange_rate_refresh.md +0 -1
- package/skills/ae-analysis/references/exchange_rule_list.md +0 -1
- package/skills/ae-analysis/references/exchange_rule_update.md +0 -1
- package/skills/ae-analysis/references/exchange_rule_validate.md +0 -1
- package/skills/ae-analysis/references/governance_recommendation_decisions.md +23 -0
- package/skills/ae-analysis/references/governance_recommendation_export.md +108 -0
- package/skills/ae-analysis/references/governance_recommendation_submit.md +41 -0
- package/skills/ae-analysis/references/history_tag_data_drilldown_export.md +4 -4
- package/skills/ae-analysis/references/history_tag_data_export.md +3 -3
- package/skills/ae-analysis/references/ingest_error_list.md +7 -9
- package/skills/ae-analysis/references/ingest_summary.md +6 -8
- package/skills/ae-analysis/references/live_data_export.md +10 -10
- package/skills/ae-analysis/references/live_data_list.md +7 -9
- package/skills/ae-analysis/references/metadata_resolution.md +78 -0
- package/skills/ae-analysis/references/metric_export.md +0 -1
- package/skills/ae-analysis/references/metric_get.md +0 -1
- package/skills/ae-analysis/references/metric_list.md +4 -5
- package/skills/ae-analysis/references/metric_update.md +0 -1
- package/skills/ae-analysis/references/operation_record_export.md +4 -5
- package/skills/ae-analysis/references/operation_record_list.md +4 -5
- package/skills/ae-analysis/references/personal_semantic_preference_list.md +18 -1
- package/skills/ae-analysis/references/plan_change_log_export.md +10 -10
- package/skills/ae-analysis/references/plan_change_log_list.md +4 -6
- package/skills/ae-analysis/references/plan_delete_items.md +2 -4
- package/skills/ae-analysis/references/plan_export.md +9 -9
- package/skills/ae-analysis/references/plan_generate.md +2 -4
- package/skills/ae-analysis/references/plan_get.md +4 -6
- package/skills/ae-analysis/references/plan_import_excel.md +6 -8
- package/skills/ae-analysis/references/plan_save_items.md +2 -4
- package/skills/ae-analysis/references/plan_sync_from_meta.md +4 -6
- package/skills/ae-analysis/references/project_access_detail_get.md +0 -1
- package/skills/ae-analysis/references/project_data_power_get.md +0 -1
- package/skills/ae-analysis/references/project_data_power_list.md +0 -1
- package/skills/ae-analysis/references/project_data_power_upsert.md +0 -1
- package/skills/ae-analysis/references/project_entity_create.md +0 -1
- package/skills/ae-analysis/references/project_entity_event_list.md +0 -1
- package/skills/ae-analysis/references/project_entity_get.md +0 -1
- package/skills/ae-analysis/references/project_entity_list.md +0 -1
- package/skills/ae-analysis/references/project_entity_update.md +0 -1
- package/skills/ae-analysis/references/project_function_list.md +0 -1
- package/skills/ae-analysis/references/project_info_get.md +0 -1
- package/skills/ae-analysis/references/project_info_list.md +0 -1
- package/skills/ae-analysis/references/project_info_update.md +0 -1
- package/skills/ae-analysis/references/project_mark_time_create.md +0 -1
- package/skills/ae-analysis/references/project_mark_time_list.md +0 -1
- package/skills/ae-analysis/references/project_mark_time_update.md +0 -1
- package/skills/ae-analysis/references/project_member_add.md +6 -5
- package/skills/ae-analysis/references/project_member_batch_update.md +0 -1
- package/skills/ae-analysis/references/project_member_candidate_list.md +4 -3
- package/skills/ae-analysis/references/project_member_handover_run.md +2 -3
- package/skills/ae-analysis/references/project_member_list.md +0 -1
- package/skills/ae-analysis/references/project_member_receiver_list.md +0 -1
- package/skills/ae-analysis/references/project_member_update.md +0 -1
- package/skills/ae-analysis/references/project_owner_update.md +0 -1
- package/skills/ae-analysis/references/project_permission_binding_list.md +0 -1
- package/skills/ae-analysis/references/project_role_function_list.md +0 -1
- package/skills/ae-analysis/references/project_role_get.md +0 -1
- package/skills/ae-analysis/references/project_role_list.md +0 -1
- package/skills/ae-analysis/references/project_role_upsert.md +32 -2
- package/skills/ae-analysis/references/project_role_user_list.md +0 -1
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +214 -0
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki_plan_schema.md +93 -0
- package/skills/ae-analysis/references/project_timezone_get.md +0 -1
- package/skills/ae-analysis/references/project_timezone_overview.md +0 -1
- package/skills/ae-analysis/references/project_timezone_update.md +0 -1
- package/skills/ae-analysis/references/project_user_id_items_update.md +0 -1
- package/skills/ae-analysis/references/property_changelog_list.md +0 -1
- package/skills/ae-analysis/references/property_create.md +0 -1
- package/skills/ae-analysis/references/property_export.md +0 -1
- package/skills/ae-analysis/references/property_get.md +0 -1
- package/skills/ae-analysis/references/property_hide_update.md +0 -1
- package/skills/ae-analysis/references/property_influence_list.md +0 -1
- package/skills/ae-analysis/references/property_list.md +3 -4
- package/skills/ae-analysis/references/property_related_events.md +0 -1
- package/skills/ae-analysis/references/property_relation_update.md +0 -1
- package/skills/ae-analysis/references/property_update.md +0 -1
- package/skills/ae-analysis/references/report_create.md +4 -2
- package/skills/ae-analysis/references/report_data_export.md +11 -9
- package/skills/ae-analysis/references/report_data_run.md +14 -7
- package/skills/ae-analysis/references/report_get.md +5 -3
- package/skills/ae-analysis/references/report_list.md +2 -0
- package/skills/ae-analysis/references/report_update.md +5 -3
- package/skills/ae-analysis/references/rule_create.md +5 -6
- package/skills/ae-analysis/references/rule_delete.md +5 -5
- package/skills/ae-analysis/references/rule_list.md +3 -4
- package/skills/ae-analysis/references/rule_schema.md +3 -4
- package/skills/ae-analysis/references/rule_update.md +5 -6
- package/skills/ae-analysis/references/sdk_sample_generate.md +2 -4
- package/skills/ae-analysis/references/sql_table_columns.md +1 -1
- package/skills/ae-analysis/references/super_metadata_batch_create.md +1 -1
- package/skills/ae-analysis/references/super_metadata_batch_edit.md +1 -1
- package/skills/ae-analysis/references/system_member_add.md +1 -2
- package/skills/ae-analysis/references/system_member_status_update.md +1 -1
- package/skills/ae-analysis/references/system_ops_alert_contact_list.md +1 -1
- package/skills/ae-analysis/references/system_ops_alert_contact_test.md +0 -1
- package/skills/ae-analysis/references/system_query_monitor_overview.md +3 -3
- package/skills/ae-analysis/references/system_query_task_export.md +4 -14
- package/skills/ae-analysis/references/system_query_task_get.md +1 -1
- package/skills/ae-analysis/references/system_query_task_list.md +5 -6
- package/skills/ae-analysis/references/system_receiver_address_upsert.md +3 -3
- package/skills/ae-analysis/references/system_receiver_detection_get.md +1 -1
- package/skills/ae-analysis/references/system_third_party_login_disable.md +1 -1
- package/skills/ae-analysis/references/system_usage_trend_export.md +3 -12
- package/skills/ae-analysis/references/user_cluster_list.md +1 -1
- package/skills/ae-analysis/references/user_cluster_member_export.md +4 -4
- package/skills/ae-analysis/references/user_tag_list.md +1 -1
- package/skills/ae-analysis/references/user_tag_member_export.md +4 -4
- package/skills/ae-analysis/references/virtual_event_create.md +10 -5
- package/skills/ae-analysis/references/virtual_event_get.md +0 -1
- package/skills/ae-analysis/references/virtual_property_create.md +0 -1
- package/skills/ae-analysis/references/virtual_property_sql_rule_update.md +0 -1
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-project-semantic-wiki.mjs +1054 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/company-kb.mjs +112 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-rules.md +30 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/generate-build-ir.mjs +2735 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/package-wiki-source-zip.mjs +376 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/plan-kb-source-sync.mjs +264 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/precompiled-source.mjs +49 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/upload-kb-sources-concurrently.mjs +200 -0
- package/skills/ae-analysis/scripts/read_results.py +197 -0
- package/skills/ae-analysis-global/SKILL.md +1 -1
- package/skills/ae-capability/SKILL.md +1 -1
- package/skills/ae-community/SKILL.md +1 -1
- package/skills/ae-current-context/SKILL.md +53 -0
- package/skills/ae-data-integration/SKILL.md +5 -4
- package/skills/ae-data-integration/references/lark-bitable-source.md +288 -0
- package/skills/ae-data-integration/references/lark-sheet-source.md +130 -0
- package/skills/ae-data-integration/references/manual-export-source.md +83 -0
- package/skills/ae-data-integration/references/reuse.md +2 -0
- package/skills/ae-data-integration/references/sink-upload.md +32 -0
- package/skills/ae-data-integration/references/tracking-plan.md +4 -1
- package/skills/ae-data-integration/references/ue-mapping.md +2 -2
- package/skills/ae-data-integration-helper/SKILL.md +5 -5
- package/skills/ae-data-integration-helper/references/android_sdk_faq.md +3 -3
- package/skills/ae-data-integration-helper/references/c_sdk_faq.md +3 -3
- package/skills/ae-data-integration-helper/references/cocoscreator_sdk_faq.md +1 -1
- package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +3 -3
- package/skills/ae-data-integration-helper/references/ios_sdk_faq.md +1 -1
- package/skills/ae-data-integration-helper/references/java_sdk_faq.md +3 -3
- package/skills/ae-data-integration-helper/references/javascript_sdk_faq.md +1 -1
- package/skills/ae-data-integration-helper/references/logbus2_guide.md +1 -1
- package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +2 -2
- package/skills/ae-data-integration-helper/references/minigame_sdk_faq.md +2 -2
- package/skills/ae-data-integration-helper/references/miniprogram_sdk_faq.md +1 -1
- package/skills/ae-data-integration-helper/references/python_sdk_faq.md +2 -2
- package/skills/ae-data-integration-helper/references/restful_api_notes.md +2 -2
- package/skills/ae-data-integration-helper/references/sdk_log_guide.md +3 -3
- package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +11 -11
- package/skills/ae-data-integration-helper/references/unity_sdk_faq.md +1 -1
- package/skills/ae-dataops/SKILL.md +1 -1
- package/skills/ae-engage/SKILL.md +4 -3
- package/skills/ae-engage/references/build-task-save-guide.md +3 -0
- package/skills/ae-engage/references/flow-metric-update.md +115 -1
- package/skills/ae-engage/references/save-flow.md +3 -0
- package/skills/ae-engage/references/save-task.md +21 -0
- package/skills/ae-engage/references/task-metric-update.md +151 -0
- package/skills/ae-experiment/SKILL.md +14 -7
- package/skills/ae-experiment/references/save_submit_external_experiment.md +52 -0
- package/skills/ae-experiment-design/SKILL.md +3 -3
- package/skills/ae-experiment-design/references/platform-operations.md +1 -1
- package/skills/ae-experiment-insight/SKILL.md +2 -2
- package/skills/ae-experiment-insight/references/platform-operations.md +1 -1
- package/skills/ae-generate-tracking-code/SKILL.md +2 -1
- package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +1 -1
- package/skills/ae-generate-tracking-code/references/datax-config.md +1 -1
- package/skills/ae-generate-tracking-code/references/logbus-config.md +1 -1
- package/skills/ae-generate-tracking-code/references/modes.md +1 -1
- package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +5 -5
- package/skills/ae-generate-tracking-code/references/snippet-delivery.md +3 -3
- package/skills/ae-generate-tracking-plan/SKILL.md +2 -2
- package/skills/ae-generate-tracking-plan/references/te-api.md +1 -0
- package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +3 -2
- package/skills/ae-kb/SKILL.md +41 -2
- package/skills/ae-kb/references/analysis-workflow.md +292 -0
- package/skills/ae-kb/references/source-mutations.md +95 -0
- package/skills/ae-kb-discovery/SKILL.md +5 -1
- package/skills/ae-metadata/SKILL.md +1 -1
- package/skills/ae-migrate-tracking-code/SKILL.md +195 -0
- package/skills/ae-migrate-tracking-code/references/ae-preset-properties.md +76 -0
- package/skills/ae-migrate-tracking-code/references/ir.md +167 -0
- package/skills/ae-migrate-tracking-code/references/mapping-framework.md +112 -0
- package/skills/ae-migrate-tracking-code/references/providers/README.md +58 -0
- package/skills/ae-migrate-tracking-code/references/providers/amplitude.md +208 -0
- package/skills/ae-migrate-tracking-code/references/providers/firebase.md +160 -0
- package/skills/ae-migrate-tracking-code/references/providers/ga4.md +92 -0
- package/skills/ae-migrate-tracking-code/references/providers/mixpanel.md +150 -0
- package/skills/ae-migrate-tracking-code/references/providers/sensors-data.md +146 -0
- package/skills/ae-project-semantic/SKILL.md +1 -1
- package/skills/ae-system/SKILL.md +4 -4
- package/skills/ae-team/SKILL.md +2 -2
- package/skills/ae-use-agent/references/local-agent.md +1 -1
- package/dist/chunk-TAL6CZH6.js +0 -72
- package/skills/ae-analysis/metadata_resolution.md +0 -184
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# analysis-meta agent-review submit-to-page
|
|
2
|
+
|
|
3
|
+
Use this to submit existing asset certification proposals for a human to review on the asset certification management page. This creates a review batch and notification, not an approval or certification. Do not use it to approve assets. Candidate discovery starts with `analysis-meta governance-recommendation export`; its `review_material_package` is the customer-visible handoff package for generating the page draft.
|
|
4
|
+
|
|
5
|
+
L2 admission: owned by Common ta-cli / AgentReviewService. Typed project and source flags, fixed ASSET_GOVERNANCE schema 1.0 defaults, local proposal validation, explicit stable request keys, and lossless string IDs add safety beyond generic JSON invocation. `submit-to-page` deliberately maps to `metadata.agent_review.create` so users cannot confuse it with the existing executing `governance-recommendation submit`. Other agent-review actions map directly to their capability action. All calls use the analysis Gateway route and CLI-token authentication.
|
|
6
|
+
|
|
7
|
+
All seven review capabilities require the exact project function `assetAuthentication`, matching the shared service. Read actions, including evidence, require `metadata:read`; submission, review and retry require `metadata:write`. Each submission/decision/retry contains 1 to 5000 unique items; the domain service also enforces its packet size limit.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ae-cli analysis-meta agent-review submit-to-page \
|
|
11
|
+
--project-id 1 --title 'Retention asset review' \
|
|
12
|
+
--source-run-id rec_source --source-task-id task_review \
|
|
13
|
+
--client-request-id review_task_proposal_001 \
|
|
14
|
+
--ai-summary '{"summary":"Evidence-backed retention assets"}' \
|
|
15
|
+
--presentation-snapshot '{"project":{"name":"Example"},"evidenceDate":"2026-09-08","topics":[{"id":"retention","name":"Retention","groups":[{"id":"retention_core","name":"核心留存看板","items":[{"id":"dashboard_1"},{"id":"report_1"},{"id":"event_login"}]}]}],"relations":[{"parent":"dashboard_1","child":"report_1","type":"contains"},{"parent":"report_1","child":"event_login","type":"uses"}],"analysisByItem":{}}' \
|
|
16
|
+
--items '[{"client_item_id":"dashboard_1","target_ref":{"type":"dashboard","key":"1"},"action_type":"CERTIFY","proposal_payload":{"authentication_status":1},"ai_summary":{"summary":"<verified dashboard recommendation basis; main risks or explicit evidence gaps>"},"evidence_snapshot":{"source_run_id":"rec_source"}},{"client_item_id":"report_1","target_ref":{"type":"report","key":"1"},"action_type":"CERTIFY","proposal_payload":{"authentication_status":1},"ai_summary":{"summary":"<verified report recommendation basis; main risks or explicit evidence gaps>"},"evidence_snapshot":{"source_run_id":"rec_source"}},{"client_item_id":"event_login","target_ref":{"type":"event","key":"login"},"action_type":"CERTIFY","proposal_payload":{"authentication_status":1},"ai_summary":{"summary":"<verified metadata recommendation basis; main risks or explicit evidence gaps>"},"evidence_snapshot":{"source_run_id":"rec_source"}}]' \
|
|
17
|
+
--dry-run
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Large real drafts should be submitted as a local file instead of shell-escaped JSON:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
ae-cli analysis-meta governance-recommendation export \
|
|
24
|
+
--project-id 1 --limit 20 --format json > recommendation-export.json
|
|
25
|
+
|
|
26
|
+
# The Agent turns review_material_package into submit-to-page-draft.json:
|
|
27
|
+
# ai_summary, presentation_snapshot, item ai_summary/reasons, evidence_snapshot.
|
|
28
|
+
ae-cli analysis-meta agent-review submit-to-page \
|
|
29
|
+
--project-id 1 \
|
|
30
|
+
--client-request-id review_task_proposal_001 \
|
|
31
|
+
--input-file submit-to-page-draft.json \
|
|
32
|
+
--dry-run
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`submit-to-page-draft.json` must follow this customer/Agent contract. `--project-id` and `--client-request-id` are still supplied as CLI flags so a replay keeps the same project and stable operation key:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"review_type": "ASSET_GOVERNANCE",
|
|
40
|
+
"schema_version": "1.0",
|
|
41
|
+
"title": "<review batch title>",
|
|
42
|
+
"source_run_id": "<governance-recommendation export run_id>",
|
|
43
|
+
"source_task_id": "<optional preauthorized task id>",
|
|
44
|
+
"ai_summary": {
|
|
45
|
+
"summary": "<batch overview generated by the Agent from the material package>"
|
|
46
|
+
},
|
|
47
|
+
"presentation_snapshot": {
|
|
48
|
+
"project": {
|
|
49
|
+
"id": 1,
|
|
50
|
+
"name": "<project name>"
|
|
51
|
+
},
|
|
52
|
+
"evidenceDate": "YYYY-MM-DD",
|
|
53
|
+
"topics": [
|
|
54
|
+
{
|
|
55
|
+
"id": "<business-domain-id>",
|
|
56
|
+
"name": "<business-domain-name>",
|
|
57
|
+
"groups": [
|
|
58
|
+
{
|
|
59
|
+
"id": "<second-level-group-id>",
|
|
60
|
+
"name": "<second-level group or source dashboard>",
|
|
61
|
+
"items": [
|
|
62
|
+
{ "id": "<client_item_id>" }
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"relations": [
|
|
69
|
+
{ "parent": "<dashboard item id>", "child": "<report item id>", "type": "contains" },
|
|
70
|
+
{ "parent": "<report item id>", "child": "<metadata item id>", "type": "uses" }
|
|
71
|
+
],
|
|
72
|
+
"analysisByItem": {}
|
|
73
|
+
},
|
|
74
|
+
"items": [
|
|
75
|
+
{
|
|
76
|
+
"client_item_id": "<stable item id used by presentation_snapshot>",
|
|
77
|
+
"target_ref": {
|
|
78
|
+
"type": "dashboard|report|event|event_prop|user_prop|user_tag|user_cluster|metric",
|
|
79
|
+
"key": "<lossless target key>"
|
|
80
|
+
},
|
|
81
|
+
"action_type": "CERTIFY",
|
|
82
|
+
"proposal_payload": {
|
|
83
|
+
"authentication_status": 1
|
|
84
|
+
},
|
|
85
|
+
"source_link": "<copied source URL>",
|
|
86
|
+
"evidence_links": [
|
|
87
|
+
{ "label": "<source label>", "url": "<copied evidence URL>" }
|
|
88
|
+
],
|
|
89
|
+
"evidence_snapshot": {
|
|
90
|
+
"analysis": "<Common packaged evidence when available>",
|
|
91
|
+
"target_revision": "<definition version/hash>"
|
|
92
|
+
},
|
|
93
|
+
"ai_summary": {
|
|
94
|
+
"summary": "<item reason with evidence basis and risks>",
|
|
95
|
+
"analysis_explanation": {
|
|
96
|
+
"business_purpose": "<what the reviewer uses this asset for>",
|
|
97
|
+
"measures": [
|
|
98
|
+
{
|
|
99
|
+
"statement": "<measure explanation>",
|
|
100
|
+
"evidence_refs": ["evidence_snapshot.analysis..."],
|
|
101
|
+
"inferred": false
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"calculations": [
|
|
105
|
+
{
|
|
106
|
+
"statement": "<formula or aggregation explanation>",
|
|
107
|
+
"evidence_refs": ["evidence_snapshot.analysis..."],
|
|
108
|
+
"inferred": false
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"filters": [],
|
|
112
|
+
"time_scope": [],
|
|
113
|
+
"dimensions": [],
|
|
114
|
+
"query_columns": [],
|
|
115
|
+
"limitations": [],
|
|
116
|
+
"open_questions": []
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Input uses either the typed flags above or `--input-file`. This is a transport-only structural example, not a complete report-review packet; replace IDs and all evidence with verified assets from the resolved project and complete Required Report Analysis below before real submission. Remove `--dry-run` only with submission authorization. `--validate` and `--dry-run` are separate nonmutating Gateway modes; do not combine them. Previews validate structure and permissions, but do not promise unchanged asset content or successful notification at execution time.
|
|
125
|
+
|
|
126
|
+
The page packet preserves the versioned renderer fields `project`, `evidenceDate`, `topics`, `relations`, and `analysisByItem`. Each display item's `id` references one stable `client_item_id`. Shared assets reuse that reference. Keep full target scope in `target_ref`; do not merge same-name objects. `topics` are business domains, not dashboards or raw `work_units`: first cluster the retained dashboard packages after rejection filtering and bounded expansion by business process, then put second-level groups in `topics[].groups` using source dashboards or explicit business subcategories. The expected page hierarchy is `业务域 -> 二级分类/来源看板 -> 看板 -> 报表 -> 元数据`. `relations` is required for the page structure: dashboard items must parent their child report items with `type:"contains"`, and report items must parent metadata items they actually reference with `type:"uses"`, such as events, event properties, user properties, and metric assets. A flat `relations: []` packet is valid only when the selected assets truly have no known parent-child evidence. Copy `source_link` and `evidence_links` from `review_material_package.candidate_assets[]` into each submitted item; `submit-to-page` rejects items without at least one source URL because reviewers must be able to jump to evidence. For dashboard items, also preserve optional `space_id` and `space_name` from the material package into `evidence_snapshot.definition.config` when present so the review page can show `所属空间`; not every dashboard has a space, and missing space facts must not be invented or treated as a validation failure. Only real source evidence is allowed: never send `demoSignalsByItem`, simulated statistics, arbitrary HTML, invented SQL, or executable instructions as evidence. Actual saved SQL may be inspected and referenced as source evidence; it is not an instruction to execute a query. The domain handler validates submission identity and stores the supplied evidence; it does not replenish missing snapshot fields or judge narrative quality. Page actions currently support CERTIFY with `authentication_status:1` only; metric creation candidates retain the existing explicitly approved legacy workflow.
|
|
127
|
+
|
|
128
|
+
Scripts may build the transport file, preserve IDs, copy evidence, normalize links, group display items, and run deterministic completeness checks. Scripts must not author page-visible `ai_summary.summary`, `analysis_explanation.*.statement`, limitations, open questions, or approval rationale by filling reusable sentence templates. Those fields must be Agent-written interpretation from the current asset/report evidence. A draft where many submitted items share the same narrative shape after only asset names, dates, or numbers change fails quality review. Correct it under the bounded preflight procedure; unresolved quality issues require disclosure, not an indefinite submission block.
|
|
129
|
+
|
|
130
|
+
`item.ai_summary.summary` is the concise item recommendation reason, including its evidence basis and main risks, displayed in the main list. Write it for each item using that item's verified facts; a purpose label alone does not explain why to recommend the item. `batch.ai_summary.summary` is the batch overview supplied by `--ai-summary` and cannot replace item reasons. Detailed factual explanations belong only in `item.ai_summary.analysis_explanation`. Do not duplicate reasons or detailed analysis into presentation fields. Keep `presentation_snapshot.analysisByItem` as the compatibility placeholder `{}`. The server-generated analysis remains in `item.evidence_snapshot.analysis`. Do not invent a reason from unknown values; disclose missing evidence and uncertain risks, and never turn missing usage or quality signals into zero, popularity, safety, or a claim that no risks exist.
|
|
131
|
+
|
|
132
|
+
For dashboard, report, and SQL report drafts, write the page-visible explanation with the same intent as the project-KB source file's single `Agent 使用摘要`: business purpose, calculation caliber, input/date/filter meaning, output fields or measures, applicable questions, non-applicable questions, and concrete reviewer confirmations. The review page does not need a second SQL-specific section or a source-code reading note. If the packaged evidence includes SQL, use the SQL only as source material for business interpretation; keep raw SQL, parser output, and unresolved parameter tokens in `evidence_snapshot.analysis`. If a fact is not supported, write the business-facing unknown or confirmation question, for example "确认日期参数默认范围和是否包含测试数据", instead of copying `${PartDate:...}`, `selector3`, `parse_status`, or `DYNAMIC`.
|
|
133
|
+
|
|
134
|
+
Write all page-visible review text for a business reviewer. `item.ai_summary.summary`, `business_purpose`, `calculations`, `filters`, `time_scope`, `limitations`, `open_questions`, and presentation labels must use plain Chinese that explains purpose, calculation 口径, date/filter choices, and reviewer action. Saved business event names and field names such as `agent_session_message_send`, `session_id`, and `response_duration` may appear when they help the reviewer verify the 口径. While drafting, avoid template copy such as “保存定义摘要”, “审核时需确认口径”, “本草稿不改写 SQL”, “其下报表和依赖元数据已随同提交审核”, or a sentence that only repeats asset name + heat + 未认证. Such copy is a quality finding handled by the bounded correction/warning procedure, not an unconditional dispatch ban. The item reason must answer why this exact asset is worth reviewing now, which saved definition facts support it, and what concrete risk remains. Keep implementation vocabulary out of visible text: do not show `SAVED_REPORT_ONLY`, `DYNAMIC`, `REPORT`, `T1`, temporary SQL aliases such as `a0`/`a1`, runtime parameter names such as `Variable2`/`selector3`/`PartDate date1`, `source_path`, `evidence_snapshot`, raw JSON, raw SQL, projection/select-column jargon, hash/revision values, dashboard-override limitations, timezone-not-saved notes, or “query not proven/executed/returned rows” caveats. Convert them to reviewer decisions only when material: for example `T1`/`day` means `按天`, and dynamic SQL parameter uncertainty becomes “确认参数含义、默认日期范围和是否包含测试数据”.
|
|
135
|
+
|
|
136
|
+
## Normal Submission Workflow
|
|
137
|
+
|
|
138
|
+
Every item needs an Agent assessment of review urgency and related-definition comparisons, not just a narrative summary. Follow [Priority and Definition Comparisons](agent_review_priorities_comparisons.md): use `ai_summary.recommendation.priority` / `priority_reason` / `evidence_refs`, classified `ai_summary.comparisons[]`, and `ai_summary.comparison_review` coverage. These are stored inside the existing AI summary object; they are not top-level packet fields or new Common admission checks. Unknown priority stays unassessed; LOW is lower review urgency, not a defer decision. Only POSSIBLE_CONFLICT comparisons should create conflict badges, with reciprocal links between both in-packet assets. Empty comparisons without recorded coverage do not mean no conflict. Older page versions may label all comparisons as conflicts: verify renderer support before authorized dispatch and disclose compatibility gaps rather than silently mislabeling non-conflicts.
|
|
139
|
+
|
|
140
|
+
For both normal submission preparation and no-submit material checks, [Independent Agent Preflight](agent_review_preflight.md) is mandatory before step 5. A fresh-context reviewer checks the raw sources and exact draft; author self-checks or CLI dry-run success do not replace that review. In `LOCAL_ONLY` mode, stop after local review and do not execute steps 5-7. Preserve every original snapshot field, especially `signals`, even when absent from the abbreviated JSON example above. Common does not restore omitted evidence.
|
|
141
|
+
|
|
142
|
+
1. Resolve the project and exact asset identities, then obtain the current recommendation export. Keep target keys, `run_id`, `snapshot_hash`, and `review_material_package` intact; do not bind same-name assets by guesswork. Apply [Rejection Filtering and Bounded Expansion](governance_recommendation_export.md#rejection-filtering-and-bounded-expansion) before drafting: start at 20, filter to pending review work, expand to 50 then 100 only if pending assets or visible business domains are insufficient, and use the latest successful packet.
|
|
143
|
+
2. Apply the daily review capacity before drafting. Unless the user requests otherwise, select about 20-50 pending review assets, never more than about 80, and balance roughly 3-6 visible business domains with per-domain quotas. Rank pending candidates by impact, heat, user count, dependency breadth, and under-covered business domains. Keep overflow counts/domains for the batch summary and later batches.
|
|
144
|
+
3. Generate the review draft from `review_material_package`: candidate items, heat evidence, copied `source_link` / `evidence_links`, relations, report/AI-model definition summaries, versions/hash, batch `ai_summary`, item reasons, and Agent-generated `presentation_snapshot.topics[].groups`. Only create visible topics for business domains that contain selected pending review assets. Authenticated/completed assets may be included as direct context under those topics, but zero-pending domains must not be submitted as standalone page sections.
|
|
145
|
+
4. Fetch `analysis-meta agent-review evidence` only for targets whose material package marks a definition or analysis gap, or when validating a generated draft. Read [the stable analysis field reference](agent_review_evidence.md), inspect the returned `evidence_snapshot.analysis`, parse status, limitations, hash and revision. Do not ask customers to manually run `analysis report get` for every report.
|
|
146
|
+
5. Draft AI explanations and per-item priorities from packaged definitions and current Common evidence, then run cross-asset comparisons over merged chunks before independent preflight. Select real, fact-supporting paths before submission; keep original facts separate from AI interpretation and disclose missing, null or dynamic evidence. The same maximum 3 correction attempts covers explanations, priorities and comparisons together.
|
|
147
|
+
6. With current submission authorization, submit after independent preflight PASS or the bounded warning-continuation outcome in [preflight](agent_review_preflight.md#continue-with-disclosed-quality-issues). At most 3 corrections are allowed; remaining quality failures must be disclosed in the batch overview and affected-item notes, without relabeling the quality verdict PASS. Submit the final hash-recorded material with `submit-to-page --input-file <draft.json>` and a stable `client_request_id`. Preserve the original source-run identity on network replay. Evidence fetching, preflight PASS and retry exhaustion never supply submission or approval authorization. Ordinary structural/API failures cannot be bypassed.
|
|
148
|
+
7. Read detail and compare the stored snapshot with the final dispatched material and source facts. Track the last reviewed draft separately from warning-only additions so those disclosed additions are not mistaken for storage changes. After submission, read detail and check that those paths resolve, still support the claims, and that `presentation_snapshot.relations` can render 看板 -> 报表 -> 元数据 for the submitted assets. `evidence_hash` includes collection time and can differ across reads; `target_revision` corresponds to the saved definition, not all sampled signals. Do not treat a changed full snapshot hash as a cross-scan business change or require it to equal the preview hash. If important facts changed or hierarchy is missing, report the mismatch; do not silently rewrite explanations, approve, or resubmit. Inspect records only for actual review/execution outcomes.
|
|
149
|
+
8. Return the `review_page_url` field from `submit-to-page` when it is present. If only `review_url` is returned, treat it as a relative product-page path and prepend the public AE web host, not a local Common/API host. Never tell a reviewer to open `http://127.0.0.1:8992/#/...` or another backend capability host as the review page.
|
|
150
|
+
|
|
151
|
+
## Required Report Analysis
|
|
152
|
+
|
|
153
|
+
Before real page submission, verify the filtering and scope rules in [Rejection Filtering and Bounded Expansion](governance_recommendation_export.md#rejection-filtering-and-bounded-expansion). No same-definition rejected dashboard or its removed display branch may remain in submitted items, groups, topics, or relations; shared assets may remain under other retained dashboards. Active deferrals and items already in unfinished review batches must be excluded from pending work when that state is available. Verify that all displayed references resolve and that counts reflect the retained graph. Include eligible pending assets across the retained branches rather than a few representative themes. The initial top 20 is a candidate pool, not a submission quota; expand to 50 then 100 when pending review assets or visible business domains are insufficient, and stop at 100 or earlier when sufficient or exhausted. The final page batch is still capped for human review capacity: default target about 20-50 pending assets, hard cap about 80, roughly 3-6 visible domains, with per-domain quotas before adding extra assets from one domain. Explain the final scope, overflow and shortfall, and do not submit an empty batch. Business themes organize this retained coverage; merge dashboards describing the same business process instead of copying source order into one topic per dashboard. Do not submit a business topic whose displayed assets are all authenticated/completed context.
|
|
154
|
+
|
|
155
|
+
Generate Agent-written narrative only for material that the reviewer will actually see as work: the batch overview, visible business domains, and pending review assets. Hidden domains and pure authenticated context rows should keep copied evidence, signals, links, snapshots and relations, but should not receive long new `ai_summary.summary` or `analysis_explanation` prose unless needed to explain a visible pending item.
|
|
156
|
+
|
|
157
|
+
Before drafting every report proposal, use the definition and analysis embedded in `review_material_package` first. Current Common export should place report `evidence_snapshot.analysis` and `target_revision` under `review_material_package.candidate_assets`; this is the normal path and should not require an extra report-definition command per report. Call `analysis-meta agent-review evidence` only for report items whose package analysis is missing, stale, or explicitly marked as a gap. Inspect the returned `model_type`, normalized definition, saved SQL, parameters, output columns, filters, grouping, and hashes for SQL reports. A report name, purpose, screenshot, or prior AI summary does not replace the definition. Do not execute report data merely to inspect calculation logic. If a required definition is absent from the package and evidence endpoint, report a material gap instead of submitting a purpose-only explanation.
|
|
158
|
+
|
|
159
|
+
After reading each report from the material package, draft its interpretation from the packaged analysis. Fetch `agent-review evidence` only for the gap cases above or for spot validation of the generated draft. Store AI interpretation in `item.ai_summary.analysis_explanation`, not in the authoritative `evidence_snapshot.analysis`. Common create stores the submitted packet for page review; it does not repair a missing Agent calculation explanation during create. Agent-supplied snapshots, SQL text, columns, hashes, or a `verified` flag cannot manufacture server evidence. The renderer consumes the stored explanation, not a new AI answer on page load.
|
|
160
|
+
|
|
161
|
+
Before a real `submit-to-page` call, run a local completeness check over the exact payload: every report item must contain current `evidence_snapshot.analysis`, and must contain reviewer-readable `item.ai_summary.analysis_explanation.calculations` or `item.ai_summary.analysis_explanation.measures`. A purpose-only report summary is incomplete; missing required analysis or resolvable evidence references still fails structural validation. Do not invent either to force submission. Dashboard items may summarize the child reports, but their own missing calculation analysis is not a blocker because the actual calculation belongs to the reports below the dashboard.
|
|
162
|
+
|
|
163
|
+
The independent Agent review must include narrative-quality checks before dispatch: flag generic summaries, repeated sentence templates, and repeated limitation/open-question text that does not name the specific unresolved evidence. The author must repair concrete findings, with at most 3 correction/re-review attempts. After the limit, continue an already authorized submission with unresolved findings disclosed; LOCAL_ONLY remains local. These are Agent quality findings, not CLI or Common narrative admission checks. Passing structural checks does not prove that explanations were model-generated or business-correct.
|
|
164
|
+
|
|
165
|
+
Use arrays of `{ "statement": "...", "evidence_refs": ["..."], "inferred": false }` for the following explanation sections. The statements are AI interpretations; factual clauses require exact, Common-verifiable paths rooted at `evidence_snapshot.analysis`. Use only paths present in the current evidence response that support the retrieved source facts; do not invent field names, array indexes, aliases, or references. `source_path` identifies provenance and is not automatically an AI evidence reference. After submission, read detail and check that those paths resolve in the server-returned snapshot. An unresolved path is missing evidence, not a verified fact. For `DYNAMIC` SQL, follow the original-text-only rules in [agent_review_evidence.md](agent_review_evidence.md); do not manufacture parsed projections or runtime values.
|
|
166
|
+
|
|
167
|
+
| Section | Required interpretation when source evidence is available |
|
|
168
|
+
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
169
|
+
| `measures` | Explain every statistical measure: what is counted or aggregated, its unit and population, and whether it counts rows, events, or distinct users. Do not infer business meaning from an alias alone. |
|
|
170
|
+
| `dimensions` | Explain actual grouping, breakdown, grain, and dimension expressions, keeping technical keys and display names distinct. |
|
|
171
|
+
| `calculations` | Explain actual formulas and aggregation steps, including numerators, denominators, distinctness, conditional logic, null handling, windows, or join effects where present in the source. Do not invent an unstated calculation rule. |
|
|
172
|
+
| `filters` | Explain saved predicates, their AND/OR relationships and scope, and the difference between row filters and post-aggregation filters where applicable. Missing filters do not prove that the query has no constraints. |
|
|
173
|
+
| `time_scope` | Explain the saved time field, range or relative window, timezone, time grain, and date parameters only where verified. Separate report query time from asset-usage statistics windows. Unbound runtime parameters remain unresolved. |
|
|
174
|
+
| `query_columns` | For SQL reports, explain each SELECT projection in source order: the verified alias or unnamed expression, calculation, and supported source lineage. Projection columns are not all columns of the source tables. Preserve duplicate aliases and positional identity; do not merge columns by name. |
|
|
175
|
+
|
|
176
|
+
Keep `business_purpose`, `reading`, and `limitations` alongside these sections; purpose alone is insufficient. Mark genuine business interpretation as `inferred:true` and retain the evidence behind it. Put unavailable definitions, unsupported model extraction, SQL parse failures, unexpanded `SELECT *`, unresolved parameters, or unknown units/lineage in `limitations` or `open_questions`; leave unsupported factual sections empty instead of filling them with plausible prose. Do not expand wildcard columns from guesses or present a best-effort parse as complete. A constant-only acceptance query is test evidence, not a real business statistic.
|
|
177
|
+
|
|
178
|
+
Never guess or rewrite saved SQL, projected columns, or formulas to make a recommendation look complete. Reading a definition, obtaining deterministic analysis, passing validation/dry-run, or creating a review batch does not prove the query ran successfully, produced real rows, or certified the asset. Actual success claims require their corresponding execution result and review records. Missing analysis evidence must be disclosed rather than replaced with a purpose-only claim of complete review.
|
|
179
|
+
|
|
180
|
+
Before writing, consult the user's current intent. Submission can be offered once; declining produces no write. Prior explicit submission authorization does not require repeated permission. A preauthorized unattended task only submits proposals and never approves, retries certification, invokes legacy submit, or creates metrics.
|
|
181
|
+
|
|
182
|
+
Persist the exact payload, `client_request_id`, proposal fingerprint and returned batch ID in task state. Network replay uses the same key and exact payload, including the original `source_run_id`. Same key with different content is a conflict, not a reason to generate a new key. On subsequent runs, compare material proposal/evidence changes against stored state and `agent-review list|detail|records`; ignore incidental new run IDs and timestamps. Do not repeatedly submit, suggest, or notify on unchanged, pending, completed, rejected, or deferred evidence. Create a new batch only for new material evidence or explicit resubmission intent. Notification deduplication is owned by Common; the Agent does not send another notification separately.
|
|
183
|
+
|
|
184
|
+
Output is the review detail, including string `id`, `review_url`, `review_page_url`, `status`, `notification_state`, versioned `items`, and `reused`. `review_page_url` is the user-facing page URL. `review_url` is kept for server compatibility and may be relative. An exact request replay returns its original batch. A new request can retain a new batch identity while reusing prior proposals: item-level `reused_batch_id` and `reused_item_id` identify the originals without dropping any requested items. Preserve both as decimal strings. `reused:true` alone does not prove the returned batch ID is an older batch. A fully reused batch can report `status:REUSED` and `notification_state:NOT_REQUIRED`; do not send another notification. Creation success is not proof of approval or certification. Return the link once for a newly actionable batch, distinguish notification failure, and read `detail` / `records` after a meaningful change.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# `attribution` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use to attribute target conversions to touchpoint/source events.
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 14},
|
|
10
|
+
"attribution": {
|
|
11
|
+
"target_event": "purchase",
|
|
12
|
+
"target_aggregation": "total_count",
|
|
13
|
+
"attribution_events": [
|
|
14
|
+
{"event": "ad_click"},
|
|
15
|
+
{"event": "campaign_view"}
|
|
16
|
+
],
|
|
17
|
+
"attribution_model": "first",
|
|
18
|
+
"window": {"value": 7, "unit": "day"},
|
|
19
|
+
"direct_conversion": true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`attribution_model` values: `first`, `last`, or `linear`.
|
|
25
|
+
The target aggregation is intentionally narrow: use `total_count` without a property, or `sum` with a numeric `target_property`. Do not use `user_count`.
|
|
26
|
+
|
|
27
|
+
## Aggregation
|
|
28
|
+
|
|
29
|
+
- `attribution`: use `total_count` without `target_property`, or `sum` with a numeric `target_property`.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# `distribution` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use for user distribution buckets for an event or property metric.
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
10
|
+
"distribution_metrics": [
|
|
11
|
+
{
|
|
12
|
+
"event": "purchase",
|
|
13
|
+
"aggregation": "sum",
|
|
14
|
+
"property": "amount",
|
|
15
|
+
"filters": [
|
|
16
|
+
{
|
|
17
|
+
"field": {"name": "vip_users", "type": "cluster"},
|
|
18
|
+
"operator": "in_cluster"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"relation": "and",
|
|
22
|
+
"interval_type": "user_defined",
|
|
23
|
+
"quota_interval_arr": [100, 1000, 10000]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"groups": [
|
|
27
|
+
{"field": {"name": "country", "type": "user_property"}}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Use `interval_type=def` for automatic buckets, `user_defined` for explicit numeric boundaries, and `discrete` to group by raw values.
|
|
33
|
+
|
|
34
|
+
Distribution filters must be attached to the corresponding `distribution_metrics[].filters`.
|
|
35
|
+
Do not use top-level `filters` or `relation` in a distribution definition.
|
|
36
|
+
When multiple metrics need the same filter, attach it to each metric explicitly. If the requested filter scope is ambiguous, clarify which metric it applies to before running the analysis.
|
|
37
|
+
|
|
38
|
+
## Aggregation
|
|
39
|
+
|
|
40
|
+
- `distribution`: without property use `count`, `active_days`, or `active_hours`; numeric properties support `sum`, `avg`, `max`, `min`, `distinct_count`, `median`, `percentile`, `variance`, and `stddev`; string/date/datetime properties support `distinct_count`; boolean properties support `true_count`, `false_count`, `not_empty_count`, `empty_count`, and `distinct_count`.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# `event` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use for event metrics, trends, grouping, filters, and comparisons.
|
|
6
|
+
|
|
7
|
+
## Unknown business metric
|
|
8
|
+
|
|
9
|
+
When the requested metric's event, aggregation or property is unknown, resolve it with [`../metadata_resolution.md`](../metadata_resolution.md), confirm the business mapping once, then submit the complete definition:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
14
|
+
"metrics": [{"event": "<confirmed canonical event>", "aggregation": "<confirmed aggregation>"}]
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
A verified saved metric uses `{"event":"<verified_metric_name>"}` and supplies its own aggregation and property; omit those two fields when referencing it. An event measure requires a compatible aggregation and, when applicable, property. Do not invent an amount property to satisfy `sum`; discover the selected event's properties when needed. Reuse a verified canonical definition directly.
|
|
19
|
+
|
|
20
|
+
## Event measures and periods
|
|
21
|
+
|
|
22
|
+
For two comparable periods, batch compatible metrics in one event definition. If daily trends are also needed, use `day` with `comparison_time_ranges`; the response can contain each period's own totals and both daily series. Do not first query a combined daily window and try to sum daily unique users into period users. If only period totals are needed, use `total` (also the default when omitted).
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"time_range": {"mode":"custom","start_time":"<main_start>","end_time":"<main_end>"},
|
|
27
|
+
"comparison_time_ranges": [
|
|
28
|
+
{"mode":"custom","start_time":"<baseline_start>","end_time":"<baseline_end>"}
|
|
29
|
+
],
|
|
30
|
+
"time_particle_size": "day",
|
|
31
|
+
"metrics": [
|
|
32
|
+
{"event":"<user_event>","aggregation":"user_count"},
|
|
33
|
+
{"event":"<amount_event>","aggregation":"sum","property":"<amount_property>"}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Replace placeholders with the requested windows and specified event-measure definition; retain confirmed metadata bindings through `--resolutions`. Use `[{"mode":"previous_period"}]` only for the immediately preceding equal-length period. Check the first real response, then reuse it. Read [event result totals](#event-totals-and-comparison-columns) for column blocks and `period_values`; saved metrics and non-additive aggregates need their own verified total semantics.
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
43
|
+
"time_particle_size": "day",
|
|
44
|
+
"metrics": [
|
|
45
|
+
{"event": "login", "aggregation": "user_count"}
|
|
46
|
+
],
|
|
47
|
+
"groups": [
|
|
48
|
+
{"field": {"name": "country", "type": "user_property"}}
|
|
49
|
+
],
|
|
50
|
+
"filters": [
|
|
51
|
+
{"field": {"name": "country", "type": "user_property"}, "operator": "eq", "values": ["US"]}
|
|
52
|
+
],
|
|
53
|
+
"relation": "and"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Property aggregation example:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
62
|
+
"metrics": [
|
|
63
|
+
{"event": "purchase", "aggregation": "sum", "property": "amount"}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Omit `display_name` by default; apply business-facing labels in the final answer instead. Saved report create/update supports this optional display label for event, saved, and formula metrics. Add this optional field only when the target host's capability schema or a successful validation explicitly supports `display_name` for that command; a saved report supporting it does not prove ad-hoc support. If rejected, remove only the unsupported label, preserving events, aggregations, properties, filters, and formula dependencies. Use the returned metric titles to label results.
|
|
69
|
+
|
|
70
|
+
Formula metric example:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
75
|
+
"metrics": [
|
|
76
|
+
{
|
|
77
|
+
"formula": "revenue / users",
|
|
78
|
+
"dependencies": [
|
|
79
|
+
{"alias": "revenue", "event": "purchase", "aggregation": "sum", "property": "amount"},
|
|
80
|
+
{"alias": "users", "event": "login", "aggregation": "user_count"}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Formula rules:
|
|
88
|
+
|
|
89
|
+
- Write **bare aliases** only in `formula` (e.g. `"revenue / users"` or `"pay / dau"`).
|
|
90
|
+
- **Do not** write `alias.Axxx` (e.g. `"pay.A103"` / `"revenue.A103"`). Aggregation codes come from each dependency's `aggregation`; the builder expands aliases to real event tokens such as `purchase.amount.A103/login.A101`.
|
|
91
|
+
- Verify the complete formula through one analysis query and inspect its resolved definition and result before saving it. Reuse that result; a formula does not require a removed QP builder.
|
|
92
|
+
|
|
93
|
+
Saved formula report round-trip rules:
|
|
94
|
+
|
|
95
|
+
- `analysis report get` can return saved formula metrics with `custom_filters`, `formulation`, `custom_event_desc`, `format`, `event_type`, `event_split_indexes`, `quota_time_ranges`, `quota_entities`, and `event_uuid`. These are saved-report round-trip fields, not the authoring shape for a new formula.
|
|
96
|
+
- When updating an existing report from its returned `definition`, preserve all of those fields unchanged unless the user explicitly requests that formula behavior to change. `custom_filters[*].index` binds each numerator/denominator occurrence to its own filter set, including repeated event/aggregation tokens.
|
|
97
|
+
- For a display-name-only change, modify only `display_name`. Do not convert the saved formula to `formula + dependencies`, because rebuilding dependencies can change or discard per-component filters and other formula semantics.
|
|
98
|
+
- Continue to use the `formula + dependencies` shape above when authoring a new formula metric.
|
|
99
|
+
|
|
100
|
+
## Aggregation
|
|
101
|
+
|
|
102
|
+
- `event`: without property use `total_count`, `user_count`, or `per_user_count`; numeric properties support `sum`, `avg`, `avg_per_user`, `max`, `min`, `distinct_count`, `median`, `percentile`, `variance`, and `stddev`; string/date/datetime properties support `distinct_count`; boolean properties support `true_count`, `false_count`, `not_empty_count`, `empty_count`, and `distinct_count`.
|
|
103
|
+
|
|
104
|
+
## Event totals and comparison columns
|
|
105
|
+
|
|
106
|
+
Pair `rows[i]` with `row_metadata[i]`. A row with `scope=total` and `total_query=true` is a total-query row; it need not have `period_values`. A day-grain stage row has `scope=total`; its `period_values` contains aggregation labels in metric order, such as `["dist", "sum"]`, not numbers. Read the numeric totals from the corresponding `rows[i]` cells: `dist` marks an independent period distinct count, `sum` marks a sum. `Overview` is localized display text, not a stable row identifier. Date rows have `drilldown_date`.
|
|
107
|
+
|
|
108
|
+
With time comparison, titles and values contain a main-period block followed by each comparison block: time column, then the same metric titles again (group columns, if present, come first). Preserve column indexes and block identity; turning repeated titles into object keys loses a period. The stage row contains a total per metric per block, while date rows contain the paired daily values. Use each block's actual date columns; row metadata alone does not describe every comparison date. Missing metadata, truncated rows, or an unexpected aggregate leaves that total unverified; inspect the saved structure before choosing an additional query.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# `funnel` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use for ordered conversion steps with a conversion window.
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
10
|
+
"time_particle_size": "day",
|
|
11
|
+
"funnel": {
|
|
12
|
+
"steps": [
|
|
13
|
+
{"event": "view_product"},
|
|
14
|
+
{"event": "add_to_cart"},
|
|
15
|
+
{"event": "purchase"}
|
|
16
|
+
],
|
|
17
|
+
"window": {"value": 3, "unit": "day"},
|
|
18
|
+
"groups": [
|
|
19
|
+
{"field": {"name": "channel", "type": "user_property"}}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If the user asks to match users across events by a shared event property, set `relation_event_property_name`.
|
|
26
|
+
|
|
27
|
+
Step-level event-property filters belong inside the matching `funnel.steps[].filters`. Use `event_property_name`, not the common `field` object. `values` is an array of strings, including `"true"` / `"false"` for boolean properties; omit values for existence operators. For example, ordered registration -> login -> first payment:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 14},
|
|
32
|
+
"time_particle_size": "day",
|
|
33
|
+
"funnel": {
|
|
34
|
+
"steps": [
|
|
35
|
+
{"event": "register"},
|
|
36
|
+
{"event": "login"},
|
|
37
|
+
{"event": "payment", "filters": [
|
|
38
|
+
{"event_property_name": "is_first_pay", "operator": "eq", "values": ["true"]}
|
|
39
|
+
]}
|
|
40
|
+
],
|
|
41
|
+
"window": {"value": 7, "unit": "day"}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Preserve step order, conversion window, and all requested filters when correcting input. Only actual funnel results support step counts and conversion rates; independent event UVs are not an ordered funnel.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# `heat_map` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use for two-dimensional heat map analysis based on numeric event coordinate properties.
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
10
|
+
"heat_map": {
|
|
11
|
+
"hot_event": "click",
|
|
12
|
+
"hot_aggregation": "total_count",
|
|
13
|
+
"x_prop": "screen_x",
|
|
14
|
+
"y_prop": "screen_y",
|
|
15
|
+
"filters": [
|
|
16
|
+
{"field": {"name": "page", "type": "event_property"}, "operator": "eq", "values": ["home"]}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
For property metrics, set `hot_property` and use a property aggregation such as `sum` or `avg`.
|
|
23
|
+
|
|
24
|
+
## Aggregation
|
|
25
|
+
|
|
26
|
+
- `heat_map`: without property use `total_count`, `user_count`, or `per_user_count`; numeric properties support `sum`, `avg`, `avg_per_user`, `max`, `min`, `distinct_count`, `median`, `variance`, and `stddev`; string/date/datetime properties support `distinct_count`; boolean properties support `true_count`, `false_count`, `not_empty_count`, `empty_count`, and `distinct_count`. `percentile` is not supported.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# `interval` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use for elapsed-time analysis between an initial event and a return event.
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
10
|
+
"time_particle_size": "day",
|
|
11
|
+
"interval": {
|
|
12
|
+
"initial_event": "register",
|
|
13
|
+
"return_event": "first_purchase",
|
|
14
|
+
"window": {"value": 7, "unit": "day"},
|
|
15
|
+
"groups": [
|
|
16
|
+
{"field": {"name": "channel", "type": "user_property"}}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# `path` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use for behavior paths before or after a source event.
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
10
|
+
"filters": [
|
|
11
|
+
{"field": {"name": "account_id", "type": "user_property"}, "operator": "exists"}
|
|
12
|
+
],
|
|
13
|
+
"relation": "and",
|
|
14
|
+
"path": {
|
|
15
|
+
"source_event": "purchase",
|
|
16
|
+
"included_events": ["view_product", "add_to_cart", "purchase"],
|
|
17
|
+
"session_interval": 30,
|
|
18
|
+
"session_unit": "minute",
|
|
19
|
+
"direction": "forward"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`direction=forward` asks what users do after `source_event`; `direction=backward` asks what users did before it. Do not send original-QP fields such as `source_type` or `event_names`.
|
|
25
|
+
|
|
26
|
+
For path analysis, `preview_rows` is a graph-display boundary aligned with the analysis UI: it keeps up to that many real nodes per path level, then combines overflow nodes into `more`. `result.nodes` retains the synthesized `more` node for graph structure and drilldown coordinates. The top-level `returned_rows` counts real business nodes actually returned across all levels; it excludes synthesized `more` nodes and the real nodes folded into them. The count may still exceed `preview_rows` because the boundary applies independently to each level. `has_more=true` means at least one level contains real nodes folded into `more`; a linear multi-level path can return more real nodes than `preview_rows` with `has_more=false`.
|
|
27
|
+
|
|
28
|
+
Path `filters` are global member filters compiled to the original QP `user_filter`. They support `user_property`, `cluster`, and `tag`, but not `event_property`. Do not move a user filter into the source event's event-property filter.
|
|
29
|
+
|
|
30
|
+
Path session timeout accepts only these unit/value ranges:
|
|
31
|
+
|
|
32
|
+
- `second`: `1..999`
|
|
33
|
+
- `minute`: `1..999`
|
|
34
|
+
- `hour`: `1..24`
|
|
35
|
+
|
|
36
|
+
Do not use `day`. Express one day as `session_interval=24` with `session_unit=hour`.
|
|
37
|
+
|
|
38
|
+
Property types come from project metadata. If resolution says a field is an `event_property`, never relabel it as `user_property` just to satisfy the path schema. Remove the unsupported global filter, choose a model that supports event-property filtering, or ask the user to clarify the intended constraint. A familiar name such as `channel` is not universally an event or user property across projects.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# `prop_analysis` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
`prop_analysis` dimensions and filters support `user_property`, `cluster`, and `tag`; they do not support `event_property`.
|
|
6
|
+
|
|
7
|
+
Use for user-property metrics, grouping, filters, and user-crowd comparison.
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"prop_analysis": {
|
|
12
|
+
"metric": {"aggregation": "user_count"},
|
|
13
|
+
"groups": [
|
|
14
|
+
{"field": {"name": "country", "type": "user_property"}}
|
|
15
|
+
],
|
|
16
|
+
"filters": [
|
|
17
|
+
{"field": {"name": "vip_level", "type": "user_property"}, "operator": "gte", "values": ["3"]}
|
|
18
|
+
],
|
|
19
|
+
"user_crowds": [
|
|
20
|
+
{
|
|
21
|
+
"name": "US users",
|
|
22
|
+
"filters": [
|
|
23
|
+
{"field": {"name": "country", "type": "user_property"}, "operator": "eq", "values": ["US"]}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For property aggregations, pass the user property:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{"prop_analysis":{"metric":{"aggregation":"distinct_count","property":"account_id"}}}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Aggregation
|
|
38
|
+
|
|
39
|
+
- `prop_analysis`: use `user_count` without property; numeric properties support `sum`, `avg`, `avg_per_user`, `max`, `min`, `distinct_count`, `median`, `variance`, and `stddev`; string/date/datetime properties support `distinct_count`; boolean properties support `true_count`, `false_count`, `not_empty_count`, `empty_count`, and `distinct_count`. `percentile` is not supported.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# `rank_list` AI-facing definition
|
|
2
|
+
|
|
3
|
+
Shared input: [common building blocks](../ai_models.md#common-building-blocks).
|
|
4
|
+
|
|
5
|
+
Use for ranking users/entities by an event metric.
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"time_range": {"mode": "previous", "unit": "day", "value": 7},
|
|
10
|
+
"rank_list": {
|
|
11
|
+
"rank_dimension": {"field": {"name": "#account_id", "type": "user_property"}},
|
|
12
|
+
"rank_event": "purchase",
|
|
13
|
+
"rank_aggregation": "sum",
|
|
14
|
+
"rank_property": "amount",
|
|
15
|
+
"rank_type": "dense_rank",
|
|
16
|
+
"order_by": "DESC"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`rank_type` values: `rank`, `dense_rank`, or `row_rank`.
|
|
22
|
+
|
|
23
|
+
## Aggregation
|
|
24
|
+
|
|
25
|
+
- `rank_list`: without property use `total_count`, `user_count`, or `per_user_count`; numeric properties support `sum`, `avg`, `avg_per_user`, `max`, `min`, `distinct_count`, `median`, `variance`, and `stddev`; string/date/datetime properties support `distinct_count`; boolean properties support `true_count`, `false_count`, `not_empty_count`, `empty_count`, and `distinct_count`. `percentile` is not supported.
|