@shundoo-ai/dsh-cosmic 1.0.19 → 1.0.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/cordis.patch.yml +5 -5
- package/package.json +1 -1
- package/skills/cosmic-build/CHANGELOG.md +4 -0
- package/skills/cosmic-build/LOCAL-PATCHES.md +91 -40
- package/skills/cosmic-build/SKILL.md +46 -13
- package/skills/cosmic-build/assets/platform-report-filters/TypedReportFilterFields.java +169 -0
- package/skills/cosmic-build/assets/platform-report-filters/platform.patch +98 -0
- package/skills/cosmic-build/assets/report-algo-benchmark/ReportAlgoBenchmark.java +48 -0
- package/skills/cosmic-build/assets/report-algo-benchmark/ReportBenchmarkLogFactory.java +7 -0
- package/skills/cosmic-build/examples/java-rules/CosmicEntryQuery.java +26 -0
- package/skills/cosmic-build/examples/java-rules/CosmicReportAggregation.java +35 -0
- package/skills/cosmic-build/examples/java-rules/CosmicReportFilters.java +77 -0
- package/skills/cosmic-build/examples/java-rules/CosmicTimeAdapter.java +25 -0
- package/skills/cosmic-build/examples/java-rules/CosmicTimeAdapterCheck.java +26 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/api/algo/GroupbyDataSet.md +47 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/api/entity/report/FilterInfo.md +12 -12
- package/skills/cosmic-build/knowledge/cosmic/platform/api/entity/report/FilterItemInfo.md +2 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/form-plugin.md +2 -4
- package/skills/cosmic-build/knowledge/cosmic/platform/java-type-contracts.md +11 -2
- package/skills/cosmic-build/knowledge/cosmic/platform/list-plugin.md +18 -14
- package/skills/cosmic-build/knowledge/cosmic/platform/operation-plugin.md +4 -4
- package/skills/cosmic-build/knowledge/cosmic/platform/reportlistdata-plugin.md +17 -9
- package/skills/cosmic-build/knowledge/cosmic/platform/scenes/operation/cross-entity-aggregate-writeback.md +2 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/scenes/operation/pre-post-operation.md +15 -7
- package/skills/cosmic-build/knowledge/cosmic/platform/sdk/sdk-algo.md +24 -68
- package/skills/cosmic-build/knowledge/cosmic/platform/workflow-plugin.md +2 -7
- package/skills/cosmic-build/references/application-context.md +35 -1
- package/skills/cosmic-build/references/common-reference.md +1 -1
- package/skills/cosmic-build/references/compile-guide.md +55 -68
- package/skills/cosmic-build/references/delivery.md +59 -7
- package/skills/cosmic-build/references/execution-contract.md +38 -0
- package/skills/cosmic-build/references/form-discovery.md +7 -1
- package/skills/cosmic-build/references/java-plugin-delivery.md +32 -162
- package/skills/cosmic-build/references/operation-dispatch.md +17 -0
- package/skills/cosmic-build/references/plugin-handoff-input.md +131 -0
- package/skills/cosmic-build/references/plugin-runtime-routing.md +1 -1
- package/skills/cosmic-build/references/report-filter-contract.md +78 -0
- package/skills/cosmic-build/references/sdk-inspection.md +23 -0
- package/skills/cosmic-build/schemas/data-model-authoring.schema.json +2 -3
- package/skills/cosmic-build/scripts/_http_client.py +55 -55
- package/skills/cosmic-build/scripts/appconfig_load.py +2 -2
- package/skills/cosmic-build/scripts/apply_report_filter_extension.py +39 -0
- package/skills/cosmic-build/scripts/bootstrap_cosmic_context.py +37 -2
- package/skills/cosmic-build/scripts/compile_plugin_source.py +279 -156
- package/skills/cosmic-build/scripts/execution_binding.py +40 -0
- package/skills/cosmic-build/scripts/inspect_platform_sdk.py +169 -0
- package/skills/cosmic-build/scripts/kd_api.py +23 -22
- package/skills/cosmic-build/scripts/kd_auth.py +1 -1
- package/skills/cosmic-build/scripts/kd_env_loader.py +19 -10
- package/skills/cosmic-build/scripts/kd_token_cache.py +2 -2
- package/skills/cosmic-build/scripts/kingscript_sdk_sync.py +350 -0
- package/skills/cosmic-build/scripts/kingscript_source_gate.py +11 -8
- package/skills/cosmic-build/scripts/platform_api_contract.py +246 -11
- package/skills/cosmic-build/scripts/plugin_corpus/build_index.py +403 -0
- package/skills/cosmic-build/scripts/plugin_corpus/jvm_classfile.py +281 -0
- package/skills/cosmic-build/scripts/plugin_corpus/measure_api_usage.py +446 -0
- package/skills/cosmic-build/scripts/plugin_source_gate.py +48 -7
- package/skills/cosmic-build/scripts/plugin_target_sdk.py +45 -0
- package/skills/cosmic-build/scripts/prepare_plugin_handoff.py +493 -47
- package/skills/cosmic-build/scripts/preview_url.py +35 -6
- package/skills/cosmic-build/scripts/query_plugin_handoff.py +250 -0
- package/skills/cosmic-build/scripts/register_plugins.py +28 -2
- package/skills/cosmic-build/scripts/render_output_cards.py +42 -9
- package/skills/cosmic-build/scripts/report_algo_benchmark.py +46 -0
- package/skills/cosmic-build/scripts/run.py +2 -2
- package/skills/cosmic-build/scripts/sync_generated_locale_assets.py +43 -0
- package/skills/cosmic-build/scripts/test/fixtures/ReportSdkCheck.java +64 -0
- package/skills/cosmic-build/scripts/test/fixtures/java_context_booking_native.json +541 -0
- package/skills/cosmic-build/scripts/test/test_add_rule_business_contract.py +85 -14
- package/skills/cosmic-build/scripts/test/test_batch5_drift_governance.py +12 -3
- package/skills/cosmic-build/scripts/test/test_build_meta_order.py +0 -16
- package/skills/cosmic-build/scripts/test/test_cli_continuation.py +87 -0
- package/skills/cosmic-build/scripts/test/test_compile_plugin_source.py +224 -3
- package/skills/cosmic-build/scripts/test/test_control_authoring.py +123 -4
- package/skills/cosmic-build/scripts/test/test_cosmic_sdk_examples.py +141 -0
- package/skills/cosmic-build/scripts/test/test_data_model_contract.py +30 -5
- package/skills/cosmic-build/scripts/test/test_delivery_stage_boundary.py +2 -10
- package/skills/cosmic-build/scripts/test/test_dym_sync_background.py +11 -0
- package/skills/cosmic-build/scripts/test/test_dynamic_form_metadata_only_contract.py +59 -1
- package/skills/cosmic-build/scripts/test/test_guide_skeleton_contract.py +87 -43
- package/skills/cosmic-build/scripts/test/test_inspect_platform_sdk.py +71 -0
- package/skills/cosmic-build/scripts/test/test_kd_api.py +67 -19
- package/skills/cosmic-build/scripts/test/test_kingscript_sdk_sync.py +221 -0
- package/skills/cosmic-build/scripts/test/test_kingscript_source_gate.py +10 -0
- package/skills/cosmic-build/scripts/test/test_list_configuration_closure.py +18 -0
- package/skills/cosmic-build/scripts/test/test_long_session_regressions.py +116 -0
- package/skills/cosmic-build/scripts/test/test_mcp_cli.py +524 -0
- package/skills/cosmic-build/scripts/test/test_modeling_input_recovery.py +141 -0
- package/skills/cosmic-build/scripts/test/test_open_world_cli_catalog.py +36 -2
- package/skills/cosmic-build/scripts/test/test_platform_api_contract.py +161 -1
- package/skills/cosmic-build/scripts/test/test_plugin_business_contract.py +91 -0
- package/skills/cosmic-build/scripts/test/test_plugin_corpus.py +195 -0
- package/skills/cosmic-build/scripts/test/test_plugin_handoff.py +346 -1
- package/skills/cosmic-build/scripts/test/test_plugin_target_sdk.py +70 -0
- package/skills/cosmic-build/scripts/test/test_preview_url.py +44 -1
- package/skills/cosmic-build/scripts/test/test_property_batch.py +22 -0
- package/skills/cosmic-build/scripts/test/test_property_input_discovery.py +13 -11
- package/skills/cosmic-build/scripts/test/test_query_plugin_handoff.py +160 -0
- package/skills/cosmic-build/scripts/test/test_register_plugins.py +31 -1
- package/skills/cosmic-build/scripts/test/test_render_output_cards.py +50 -4
- package/skills/cosmic-build/scripts/test/test_report_business_contract.py +27 -0
- package/skills/cosmic-build/scripts/test/test_report_doc_contract_sync.py +5 -4
- package/skills/cosmic-build/scripts/test/test_report_sdk_optimization.py +36 -0
- package/skills/cosmic-build/scripts/test/test_rule_batch_evidence.py +1 -1
- package/skills/cosmic-build/scripts/test/test_rule_domain_contract.py +20 -0
- package/skills/cosmic-build/scripts/test/test_rule_function_formula.py +16 -6
- package/skills/cosmic-build/scripts/test/test_skill_entry_contract.py +1 -0
- package/skills/cosmic-build/scripts/test/test_test_environment.py +45 -0
- package/skills/cosmic-build/scripts/test/test_verify_plugin_loading.py +79 -0
- package/skills/cosmic-build/scripts/test_environment.py +49 -0
- package/skills/cosmic-build/scripts/verify_plugin_loading.py +71 -0
- package/skills/cosmic-build/skills/cosmic-coding-impl/SKILL.md +86 -162
- package/skills/cosmic-build/skills/cosmic-coding-script/ATTRIBUTION.md +1 -1
- package/skills/cosmic-build/skills/cosmic-coding-script/SKILL.md +45 -14
- package/skills/cosmic-build/skills/cosmic-coding-script/references/kwc-controller-authoring.md +6 -0
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/README.md +29 -19
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/docs//350/204/232/346/234/254SDK.md +3 -4
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/indexes/package-index.md +1 -1
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/strategy.md +27 -18
- package/skills/cosmic-build/skills/cosmic-meta-api/SKILL.md +11 -17
- package/skills/cosmic-build/skills/cosmic-meta-api/apis/ai_meta.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/apis/app_menu.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/apis/meta_log.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/control-authoring.json +45 -4
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/form-control-traits.json +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/layout-ui.json +18 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/menu-publish.json +8 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/property-batch.json +7 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/property-input-index.json +3 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/report-write-contracts.json +1 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/rule-domain.json +37 -5
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/rule-event-contract.json +24 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/run-build-meta.json +61 -12
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/dropdown-menu.schema.json +69 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/report-write.schema.json +2 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/rule-set.schema.json +1 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/rule-write.schema.json +14 -7
- package/skills/cosmic-build/skills/cosmic-meta-api/docs/api-summary.md +2 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/app-action/SKILL.md +6 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/develop/SKILL.md +1 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/export/SKILL.md +5 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/init/SKILL.md +13 -36
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/pdm/SKILL.md +8 -9
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/pdm/scripts/config.json.example +5 -15
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/reset/SKILL.md +6 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/usage/SKILL.md +20 -148
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/verify/SKILL.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/build_receipts.py +171 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_apps.py +25 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_controls.py +55 -21
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_fields.py +10 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_formactions.py +63 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_forms.py +59 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_listui.py +8 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_metaops.py +36 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_plugins.py +115 -90
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_properties.py +666 -4
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_rules.py +1415 -87
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/commands.py +6 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/config.py +28 -15
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/execution_errors.py +40 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/formatters.py +32 -5
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/property_policy_contract.py +6 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/report_ops.py +113 -17
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/reset.py +3 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/rule_contract.py +107 -26
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/build_meta_order.py +50 -49
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/cosmic_api.py +856 -150
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/field_decorator.py +47 -14
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_build_receipt_resume.py +374 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_cli_failure_contract.py +24 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_creation_identity_boundary.py +4 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_dropdown_menu_contract.py +382 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_existing_form_ui.py +0 -25
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_field_decorator.py +50 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_functional_group_resolution.py +83 -16
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_identity_template_resolution.py +103 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_plugin_contract.py +28 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_readback_derivation.py +22 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_typed_filters.py +65 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_rule_write_closure.py +1041 -15
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_run_batch_post_build_recovery.py +65 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_run_batch_verification_evidence.py +17 -0
- package/skills/cosmic-build/skills/cosmic-meta-knowledge/generation/api-param-checklist.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-knowledge/generation/rule-modeling-guide.md +7 -4
- package/skills/cosmic-build/skills/cosmic-meta-modeling/SKILL.md +61 -13
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/app-menu/SKILL.md +8 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/formtemplate/SKILL.md +5 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/formtemplate/dynamic-form-artifact-schema.md +5 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/report/SKILL.md +21 -9
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-entity-graphs.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-storage-constraints.md +5 -3
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-ui-composition.md +6 -3
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/creation-recovery.md +13 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/parse-core.md +3 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/data_model_contract.py +6 -1
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/data_model_emit.py +135 -87
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/field_type_registry.py +11 -1
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/isv_resolver.py +1 -3
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/report_validator.py +29 -0
- package/skills/cosmic-build/skills/cosmic-meta-modifier/SKILL.md +4 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/context/SKILL.md +2 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/execute/SKILL.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/SKILL.md +5 -4
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/operation-write.md +6 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/validation.md +2 -0
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/SKILL.md +20 -5
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/complex-apis.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/policy-grammar.md +4 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/report-op/SKILL.md +9 -0
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/SKILL.md +61 -4
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/raw-rule-authoring.md +3 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/rule-actions.md +2 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/rule-reference.md +6 -6
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/state.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/unit/SKILL.md +6 -3
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/verify/usage-guide.md +4 -4
- package/skills/cosmic-build/skills/cosmic-meta-modifier/references/list-filter-modification.md +4 -1
- package/skills/cosmic-build/skills/cosmic-meta-ui/SKILL.md +9 -1
- package/skills/cosmic-build/skills/cosmic-meta-ui/modules/button/SKILL.md +3 -0
- package/skills/cosmic-build/skills/mcp-server/SKILL.md +210 -0
- package/skills/cosmic-build/skills/mcp-server/scripts/mcp_cli.py +431 -0
- package/skills/cosmic-build/skills/openapi-gen/SKILL.md +3 -3
- package/skills/cosmic-build/skills/openapi-gen/scripts/api/gen_runner.py +2 -2
- package/skills/cosmic-dev-best-practices/references/bill-dev-convention.md +19 -9
- package/skills/cosmic-dev-best-practices/references/cosmic-meta-api.md +14 -11
- package/skills/cosmic-dev-best-practices/references/design-examples/basedata-design-example.md +1 -1
- package/skills/cosmic-dev-best-practices/references/design-examples/bill-design-example.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/AssistantField.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/BasedataField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/BasedataPropField.md +3 -3
- package/skills/cosmic-dev-best-practices/references/elements/CreaterField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/CurrencyField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/CustomerField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/FlexField.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/MaterielField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/OrgField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/SupplierField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/UnitField.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/UserField.md +3 -3
- package/skills/cosmic-dev-best-practices/references/elements/common-field-property-conventions.md +16 -11
- package/skills/cosmic-dev-best-practices/references/layout-control-convention.md +5 -4
- package/skills/erp-analysis/references/delivery-contract.md +4 -2
- package/skills/erp-analysis/templates/AGENTS.template.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/.dsh/cosmic/.kd/config.json +0 -21
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
SCRIPTS = Path(__file__).resolve().parents[1]
|
|
5
|
+
sys.path.insert(0, str(SCRIPTS))
|
|
6
|
+
|
|
7
|
+
import cosmic_api
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def test_post_phase_failure_keeps_successfully_saved_root_and_exact_repair_input(tmp_path):
|
|
11
|
+
artifact = tmp_path / "check_in.json"
|
|
12
|
+
payload = {"status": True, "data": {"entityResults": [{
|
|
13
|
+
"success": True, "formId": "SAVED-FORM", "formNumber": "uhyl_check_in",
|
|
14
|
+
"formName": "入住单",
|
|
15
|
+
}]}}
|
|
16
|
+
summary = {"ok": True, "formNumbers": [{"number": "uhyl_check_in", "name": "入住单"}]}
|
|
17
|
+
pending = {"command": "modifyMeta", "input": {"formId": "SAVED-FORM", "ops": [{"op": "add"}]}}
|
|
18
|
+
cosmic_api._attach_post_build_phase_failure(
|
|
19
|
+
summary, payload, phase="addRefBill", app_root=str(tmp_path),
|
|
20
|
+
artifact_path=str(artifact), pending_write=pending,
|
|
21
|
+
)
|
|
22
|
+
public = cosmic_api._apply_build_failure_contract(payload, summary)
|
|
23
|
+
assert public["status"] is False
|
|
24
|
+
assert public["metadataRetained"] is True
|
|
25
|
+
assert public["doNotRetryBuildMeta"] is True
|
|
26
|
+
assert public["data"]["entityResults"][0]["success"] is True
|
|
27
|
+
assert public["retainedTargets"][0]["formId"] == "SAVED-FORM"
|
|
28
|
+
assert public["reconciliation"][0]["input"]["formNumber"] == "uhyl_check_in"
|
|
29
|
+
assert public["repairPlans"][0]["pendingWrites"] == [pending]
|
|
30
|
+
assert public["retryAdvice"] == "inspect_retained_form"
|
|
31
|
+
assert public["retryable"] is False
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_unknown_root_does_not_fabricate_a_retained_identity(tmp_path):
|
|
35
|
+
summary = {"ok": False}
|
|
36
|
+
actual = cosmic_api._attach_post_build_phase_failure(
|
|
37
|
+
summary, {"status": False}, phase="verify", app_root=str(tmp_path),
|
|
38
|
+
artifact_path=str(tmp_path / "form.json"),
|
|
39
|
+
)
|
|
40
|
+
assert actual == {"ok": False}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_batch_keeps_post_failure_separate_from_verified_and_unwritten_targets(tmp_path):
|
|
44
|
+
saved = {"ok": True, "formNumbers": [{"number": "uhyl_check_in"}]}
|
|
45
|
+
cosmic_api._attach_post_build_phase_failure(
|
|
46
|
+
saved, {"data": {"entityResults": [{
|
|
47
|
+
"success": True, "formId": "SAVED", "formNumber": "uhyl_check_in",
|
|
48
|
+
}]}}, phase="addRefBill", app_root=str(tmp_path),
|
|
49
|
+
artifact_path=str(tmp_path / "check_in.json"),
|
|
50
|
+
)
|
|
51
|
+
report = {"total": 3, "success": 1, "failed": 2, "results": [
|
|
52
|
+
{"ok": True, "summary": {"ok": True, "formNumbers": [{"number": "uhyl_room"}]}},
|
|
53
|
+
{"ok": False, "phase": "addRefBill", "summary": saved, "errors": ["REF_BILL_ADD_FAILED"]},
|
|
54
|
+
{"ok": False, "phase": "dependency", "writeAttempted": False,
|
|
55
|
+
"artifactPath": str(tmp_path / "bill.json"), "errors": ["DEPENDENCY_FAILED"]},
|
|
56
|
+
]}
|
|
57
|
+
summary = cosmic_api._summarize_run_batch(report)
|
|
58
|
+
cosmic_api._apply_build_failure_contract(report, summary)
|
|
59
|
+
assert report["status"] is False
|
|
60
|
+
assert report["metadataRetained"] is True
|
|
61
|
+
assert report["notStartedArtifacts"] == [str(tmp_path / "bill.json")]
|
|
62
|
+
assert report["retainedTargets"][0]["formNumber"] == "uhyl_check_in"
|
|
63
|
+
assert summary["formNumbers"] == [{"name": "", "number": "uhyl_room"}]
|
|
64
|
+
assert "REF_BILL_ADD_FAILED" in summary["errors"]
|
|
65
|
+
assert len(report["repairPlans"]) == 1
|
|
@@ -29,3 +29,20 @@ def test_compact_verified_targets_exposes_only_successful_exact_assertions():
|
|
|
29
29
|
{"type": "entity_exists", "target": "uhyl_bill"},
|
|
30
30
|
{"type": "field_exists", "target": "uhyl_detail.uhyl_amount"},
|
|
31
31
|
]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_batch_receipt_persists_raw_verified_results_and_artifact_paths(tmp_path):
|
|
35
|
+
import json
|
|
36
|
+
from _core.formatters import save_run_batch_result
|
|
37
|
+
artifact = tmp_path / "emit" / "artifact.json"
|
|
38
|
+
raw = {"results": [{"artifact": str(artifact), "ok": True, "verification": {"status": "pass"},
|
|
39
|
+
"result": {"data": {"entityResults": [{"formNumber": "sample", "formName": "样例"}]}}}]}
|
|
40
|
+
result = save_run_batch_result(raw, str(tmp_path / "app"), [str(artifact)])
|
|
41
|
+
saved = json.loads(Path(result["resultPath"]).read_text())
|
|
42
|
+
assert saved == result
|
|
43
|
+
assert saved["results"] == raw["results"]
|
|
44
|
+
assert saved["artifactPaths"] == [str(artifact.resolve())]
|
|
45
|
+
assert saved["appRoot"] == str((tmp_path / "app").resolve())
|
|
46
|
+
second = save_run_batch_result(raw, str(tmp_path / "app"), [str(artifact)])
|
|
47
|
+
assert second["resultPath"] != result["resultPath"]
|
|
48
|
+
assert Path(result["resultPath"]).is_file()
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
| R11 | ActionType 为平台注册子类名 | 不能用基类名,如 `LockFieldAction` 而非 `Action` | ActionType 不存在导致 ADD_RULE_FAIL |
|
|
49
49
|
| R12 | Fields 格式 | `[{"_Type_": "FieldId", "Id": "fieldKey"}]` | 缺少 `_Type_` 字段或 Id 值错误 |
|
|
50
50
|
| R13 | formRule 动作 `RET` 必填 | 每个 formRule 动作必须显式包含 `RET` 字段(常用 251 = 与设计器勾选"加载+值更新"一致) | RET 缺失导致触发时机"加载"和"值更新"未勾选 |
|
|
51
|
-
| R14 | bizRule 动作默认值按类型决定 | 优先传语义化 lower-camel 输入;CLI
|
|
51
|
+
| R14 | bizRule 动作默认值按类型决定 | 优先传语义化 lower-camel 输入;CLI 按动作补 `Seq` 和 `RET`(CallFieldChangeAction 为 773)。设计态回读不证明运行态分发 | 复用通用 RET 或把保存成功当运行成功会产生惰性规则 |
|
|
52
52
|
| R15 | description 已填写 | 规则整体描述,便于 listRules 时快速识别规则用途 | 缺失不影响功能但降低可维护性 |
|
|
53
53
|
|
|
54
54
|
---
|
|
@@ -419,7 +419,7 @@
|
|
|
419
419
|
| `ClearValueAction` | 清空字段值 | `field1:field2` |
|
|
420
420
|
| `TakeBaseProAction` | 携带基础资料属性 | `[{TargetField, SrcField}]` |
|
|
421
421
|
| `SetEqutionAction` | 携带字段值 | `[{TargetField, SrcField}]` |
|
|
422
|
-
| `CallFieldChangeAction` |
|
|
422
|
+
| `CallFieldChangeAction` | 调用单个字段的值更新服务 | 一个目标字段 key;设计态可验证,运行效果需在目标环境检查 |
|
|
423
423
|
|
|
424
424
|
|
|
425
425
|
---
|
|
@@ -459,7 +459,9 @@
|
|
|
459
459
|
}
|
|
460
460
|
```
|
|
461
461
|
|
|
462
|
-
**CallFieldChangeAction**
|
|
462
|
+
**CallFieldChangeAction** 的 `Expression` 指向单个目标字段,`RET` 为 773。
|
|
463
|
+
元数据回读只能验证配置;既有隔离测试未观察到后续规则链分发,因此必须在目标环境
|
|
464
|
+
验证实际效果,不能将保存成功等同于运行成功。
|
|
463
465
|
|
|
464
466
|
**TakeBaseProAction(携带基础资料属性)**:
|
|
465
467
|
|
|
@@ -478,7 +480,8 @@
|
|
|
478
480
|
}
|
|
479
481
|
```
|
|
480
482
|
|
|
481
|
-
|
|
483
|
+
同一服务的多组映射应逐行写入一条动作的 Expression 和 FieldName 列表。
|
|
484
|
+
被引用属性还必须存在于基础资料字段的 `RefProps`,否则规则虽能
|
|
482
485
|
落库,运行态仍会失败。
|
|
483
486
|
|
|
484
487
|
### 8.2 formRule 动作载荷格式
|
|
@@ -513,7 +516,7 @@
|
|
|
513
516
|
| preCondition | `billstatus = 'C'` | `billstatus = 'C'`(**单等号**) | 原样保留 |
|
|
514
517
|
| FormulaAction | `{actionType: "FormulaAction", expression: "a = b * c"}` | `{ActionType: "FormulaAction", Expression: "a = b * c", RET: 253, Seq: 1}` | 大小写 + 补 RET/Seq |
|
|
515
518
|
| ClearValueAction | `{actionType: "ClearValueAction", expression: "f1:f2"}` | `{ActionType: "ClearValueAction", Expression: "f1_key:f2_key", RET: 253, Seq: 1}` | 大小写 + 补 RET/Seq + bizWord→fieldKey |
|
|
516
|
-
| CallFieldChangeAction |
|
|
519
|
+
| CallFieldChangeAction | `{actionType: "CallFieldChangeAction", expression: "field"}` | `{ActionType: "CallFieldChangeAction", Expression: "field_key", RET: 773, Seq: 1}` | 解析单个目标;运行效果另验 |
|
|
517
520
|
| LockFieldAction fields | `{actionType: "LockFieldAction", fields: ["f1", "f2"], RET: 251}` | `{ActionType: "LockFieldAction", Fields: [{_Type_: "FieldId", Id: "f1_key"}, {_Type_: "FieldId", Id: "f2_key"}], RET: 251}` | 大小写 + 字符串数组→对象数组 + bizWord→fieldKey |
|
|
518
521
|
| HideFieldAction fields | 同 LockFieldAction | 同 LockFieldAction | 同上 |
|
|
519
522
|
|
|
@@ -5,7 +5,7 @@ description: app-build 内部目标:创建实体表单、类型明确的页面
|
|
|
5
5
|
|
|
6
6
|
# 苍穹元数据建模
|
|
7
7
|
|
|
8
|
-
`ROOT_DIR` 与 `ROOT_DIR` 都指已加载的 app-build 包目录。
|
|
8
|
+
`ROOT_DIR` 与 `{ROOT_DIR}` 都指已加载的 app-build 包目录。
|
|
9
9
|
使用已发布命令及其返回的已验证身份。
|
|
10
10
|
|
|
11
11
|
## 路由锁定
|
|
@@ -26,9 +26,14 @@ appMapping.tsv、目录内容、archive、最近使用记录或本地仅有一
|
|
|
26
26
|
视觉结构,不决定 model 类型。实体截图按观察到的布局编写受支持的 `uiComposition`;
|
|
27
27
|
当前显示值不能证明完整候选值或默认值。
|
|
28
28
|
|
|
29
|
-
复用所选应用已验证的 `appRoot` 与 `appCode
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
复用所选应用已验证的 `appRoot` 与 `appCode`。应用编码已确认且没有给出绑定时,在本任务工作区直接执行:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
{python} {ROOT_DIR}/scripts/bootstrap_cosmic_context.py --project-root "<当前任务工作区>" --app-code "<已选应用编码>" --resolve-existing-app
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
复用返回的路径,无需先列本地目录判断是否绑定。只有应用名称、目标歧义或归属冲突才读取
|
|
36
|
+
[application-context.md](../../references/application-context.md),再用已验证身份调用创建命令。应用选择由用户决定,绑定由 CLI 执行。报告真实 CLI 错误,不自行生成上下文缺失
|
|
32
37
|
回执。创建调用持续使用已验证身份;身份和 ISV 命名校验归脚本所有。
|
|
33
38
|
只读模板查询使用自身声明的范围,不要求准备创建上下文。
|
|
34
39
|
|
|
@@ -49,13 +54,42 @@ appMapping.tsv、目录内容、archive、最近使用记录或本地仅有一
|
|
|
49
54
|
|
|
50
55
|
## ENTITY_CREATE
|
|
51
56
|
|
|
57
|
+
用户未指定单据/基础资料模板时,省略 `templateKey`,由 emitter 补齐标准模板。
|
|
58
|
+
列表中的 `blankPage` 是虚拟空白选项,不能用它修复模板查询失败。
|
|
59
|
+
|
|
52
60
|
用于一个依赖完整的 Bill/Base 请求。本地引用需要同批创建时,可一次 author 多个根实体与分录。
|
|
53
61
|
|
|
62
|
+
缺失的业务字段或候选值仍是未决需求,编译器的最小要求不授权添加占位字段或替换字段类型。
|
|
63
|
+
保留已确认要求,在该对象创建前解决缺失定义;其他定义完整的独立对象可继续创建。
|
|
64
|
+
|
|
65
|
+
### 业务输入与编译器职责
|
|
66
|
+
|
|
67
|
+
依据当前需求和已委托的字段设计,一次编写业务字段。显示名与类型属于业务选择;持久化前缀、
|
|
68
|
+
存储键与模板合并由编译器处理。bizWord 表达并区分业务角色,不手算实际字段键;用户明确指定
|
|
69
|
+
的标识通过已发布的覆盖参数保留,生成标识的命名约束交编译器处理。
|
|
70
|
+
|
|
71
|
+
编译器动态读取所选模板的表头、分录预置字段,按准确键复用重叠项;仅中文名相同不证明身份相同。
|
|
72
|
+
普通新建无需单独查询模板字段。只有业务行为需要引用准确预置字段时,才对所选模板查询一次并复用结果:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
{python} {ROOT_DIR}/skills/cosmic-meta-api/scripts/cosmic_api.py --stdout getEntityFields --app-root "<appRoot>" --formNumber "<templateKey>"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
返回位置是 `data.headerFields.fields` 和 `data.entryFields.fields`。省略 templateKey 时使用
|
|
79
|
+
`--describe` 发布的默认模板;模板显示名或猜测的别名不是模板编码。
|
|
80
|
+
不为普通输入搜索编译器/装饰器源码,也不猜造系统字段。真实冲突按返回的字段级校验错误定点修正。
|
|
81
|
+
|
|
54
82
|
### 只加载命中的 authoring 知识
|
|
55
83
|
|
|
56
|
-
|
|
84
|
+
输入形状未知时,查询现有编译器一次:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
{python} {ROOT_DIR}/skills/cosmic-meta-modeling/scripts/data_model_emit.py --describe
|
|
88
|
+
```
|
|
57
89
|
|
|
58
|
-
|
|
90
|
+
它离线返回当前 Schema、业务/编译器职责边界、默认模板、准确模板字段查询命令、解析器参数和执行路径。契约已知就直接使用;只有仍有业务语义不明确时,
|
|
91
|
+
再读 parse-core.md 或相应专题,不为同一输入形状重复读取。除非用户要求复制、恢复或续建,
|
|
92
|
+
不拿历史 authoring、compiler state、archive 或 DYM 代替本轮业务输入。
|
|
59
93
|
|
|
60
94
|
再按明确语义只追加命中的专题:
|
|
61
95
|
|
|
@@ -71,6 +105,8 @@ appMapping.tsv、目录内容、archive、最近使用记录或本地仅有一
|
|
|
71
105
|
| 列表列/搜索/过滤/排序 | `references/authoring-list-configuration.md` |
|
|
72
106
|
| 实体分区、页签或截图布局 | `references/authoring-ui-composition.md` |
|
|
73
107
|
|
|
108
|
+
模板预置的 `billstatus` 不触发候选值专题;`IntegerField` 加文本单位不触发 `QtyField` 配套专题;普通表头加分录不触发 UI 分区专题。字段类型和结构已由契约确定时,直接编写输入,不为确认熟悉的形状加载无关参考。
|
|
109
|
+
|
|
74
110
|
`OrgField`、`UserField`、`CustomerField`、`CityField`、`AdminDivisionField` 已编码
|
|
75
111
|
内置目标,无需查询目标或填写 `prdRef`。受支持内置类型的带出映射省略 reference 时,emitter
|
|
76
112
|
按已声明映射补齐平台引用;显式 reference 保持原样并校验。通用 `BasedataField`/`MulBasedataField` 必须声明目标,使用顶层
|
|
@@ -81,14 +117,16 @@ appMapping.tsv、目录内容、archive、最近使用记录或本地仅有一
|
|
|
81
117
|
未请求的可选默认值与提示信息省略。选择字段使用专题中完整的 `comboOptions` 契约,
|
|
82
118
|
该已发布 authoring 形状无需额外读取实时 Schema。
|
|
83
119
|
|
|
84
|
-
已从发布契约确定所需 `FieldDataType`
|
|
85
|
-
`
|
|
120
|
+
已从发布契约确定所需 `FieldDataType` 及伴随参数时,不再执行字段类型目录。
|
|
121
|
+
布尔复选框的 authoring 类型是 `CheckBoxField`;`CheckBox` 只是界面简称,
|
|
122
|
+
不能作为元数据 `dataType`。
|
|
123
|
+
类型或伴随参数未知时查询目录:
|
|
86
124
|
|
|
87
125
|
```text
|
|
88
|
-
{python} {ROOT_DIR}/skills/cosmic-meta-modeling/scripts/field_type_registry.py --catalog
|
|
126
|
+
{python} {ROOT_DIR}/skills/cosmic-meta-modeling/scripts/field_type_registry.py --catalog --compact
|
|
89
127
|
```
|
|
90
128
|
|
|
91
|
-
|
|
129
|
+
已选类型用 `--catalog --types <准确类型> ...` 返回完整约束。模型做语义选择;命令不按关键词替换类型。
|
|
92
130
|
|
|
93
131
|
### 编译与执行
|
|
94
132
|
|
|
@@ -101,14 +139,22 @@ appMapping.tsv、目录内容、archive、最近使用记录或本地仅有一
|
|
|
101
139
|
只有用户明确给出根表单编码且 authoring 仅含一个根实体时才传 `--root-form-number`,模型生成的
|
|
102
140
|
`bizName` 不使用该参数。多个用户给定编码的根实体应一起 author,各自写入 `logicalName` 并
|
|
103
141
|
省略该参数;一个 manifest 和一次 `runBatch` 会处理全部根实体。
|
|
104
|
-
明确功能分组必须在初始 batch 完成,不得之后用 `moveForm`
|
|
142
|
+
明确功能分组必须在初始 batch 完成,不得之后用 `moveForm` 修补。首次 `runBatch` 前,
|
|
143
|
+
按需求中的准确名称通过[功能分组入口](../cosmic-meta-modifier/modules/unit/SKILL.md)解析;
|
|
144
|
+
不存在且已授权创建时,使用准确名称/编码及已绑定 `appRoot` 调用 `addUnit`。省略 `--seq`
|
|
145
|
+
时,CLI 从已验证的现有分组序号选择下一位。分组回读通过后才执行初始批次;重名或查询
|
|
146
|
+
不明时阻塞目标选择,不用失败的批次来发现分组缺失。
|
|
105
147
|
|
|
106
|
-
|
|
148
|
+
直接执行 stdout 返回的 `NEXT_COMMAND` argv;旧版 emitter 才按 `manifest:` 路径组装批次:
|
|
107
149
|
|
|
108
150
|
```text
|
|
109
|
-
{python} {ROOT_DIR}/skills/cosmic-meta-api/scripts/cosmic_api.py
|
|
151
|
+
{python} {ROOT_DIR}/skills/cosmic-meta-api/scripts/cosmic_api.py runBatch --app-root "{appRoot}" --app-code "{appCode}" --emit-manifest "{manifestPath}" --verify
|
|
110
152
|
```
|
|
111
153
|
|
|
154
|
+
保留返回的结果文件供 Java 准备使用,其中包含 `resultPath`、完整 `artifactPaths` 和原始验证回执;
|
|
155
|
+
直接作为 `--run-result` 传入,不重读完整结果或手抄字段。
|
|
156
|
+
|
|
157
|
+
|
|
112
158
|
`runBatch` 自己完成依赖波次、身份漂移保护,以及实体/字段、属性、规则、列表和
|
|
113
159
|
`uiComposition` 的准确回读。`verification.verifiedTargets` 与
|
|
114
160
|
`[runBatch] FORMS=[...]` 提供已验证目标的证据与身份。已完成事项复用该证据;剩余请求属性
|
|
@@ -160,3 +206,5 @@ UI、属性/默认值、规则/操作和列表配置。剩余事项把已验证
|
|
|
160
206
|
创建已经满足整个请求时,在当前回合继续交付,不能用创建总结结束。成功的 `runBatch` 结果包含
|
|
161
207
|
`delivery.command` 时直接使用;否则遵循 `{ROOT_DIR}/references/delivery.md`,
|
|
162
208
|
由该文档统一负责卡片收口和输出。
|
|
209
|
+
|
|
210
|
+
消费 `RESULT_SUMMARY` 中的本次目标、验证结论、结果路径和已有交付命令;只有缺少细节或发生失败时才读取完整回执,不为收尾重复读同一结果。
|
|
@@ -27,6 +27,7 @@ description: app-build 内部执行技能,用于查询和管理已经验证的
|
|
|
27
27
|
| 上移/下移菜单 | `moveMenu` |
|
|
28
28
|
| 删除菜单及其后代 | `deleteMenu` |
|
|
29
29
|
| 解析菜单要求的权限项 | `listPermItems` |
|
|
30
|
+
| 完成明确要求的菜单发布 | 对同一应用先 `getApp`,再 `publishApp --action enable` |
|
|
30
31
|
|
|
31
32
|
直接使用以下形态,不调用 help:
|
|
32
33
|
|
|
@@ -68,6 +69,13 @@ listPermItems
|
|
|
68
69
|
一次交付多个菜单后,只额外调用一次 `queryMenuTree`,验证需求要求的父级、目录和页面完整路径。
|
|
69
70
|
单条菜单的 `verified=true` 只证明记录已保存;整棵树没有出现全部目标路径时不得报告菜单交付完成。
|
|
70
71
|
|
|
72
|
+
明确要求新增、修改或移动菜单时,最终菜单树验证通过后,还要确保所属应用已启用。使用 archive
|
|
73
|
+
中的准确 `appId` 调用 `getApp --bizAppId "<appId>"` 核对身份,再调用一次
|
|
74
|
+
`publishApp --bizAppId "<appId>" --action enable`。平台明确回复“应用已处于启用状态”时,
|
|
75
|
+
在准确 `getApp` 身份已核对的前提下视为已满足,不重试。成功启用后再调用 `getApp`,
|
|
76
|
+
核对同一应用及启用状态;回读不明属于 `unknown_after_write`,不能据此宣称用户已能看到菜单。
|
|
77
|
+
仅查询或删除菜单不隐含启用应用。
|
|
78
|
+
|
|
71
79
|
遵守最多三级、禁止循环父级和帮助中心菜单删除保护。面向用户只返回菜单、动作、已
|
|
72
80
|
验证结果,以及阻塞时唯一的下一步。本模块不输出产物卡片;app-build 在该最终结果后只输出
|
|
73
81
|
一次。
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
- `isDialog` 继承自 `templateNumber`(`bos_dialogtpl` → `true`)。
|
|
81
81
|
- `bos_dialogtpl` 和 `bos_dialogtpl_middle` 已自带确定/取消按钮,保留模板按钮;
|
|
82
82
|
仅在用户明确要求额外行为时声明新增按钮与操作。
|
|
83
|
+
编写对应操作 key 时使用 `confirm/donothing`、`cancel/donothing`。
|
|
83
84
|
- DynamicFormModel 没有原生记录持久化。在线操作目录支持 `close/close`,
|
|
84
85
|
但不支持单据/基础资料的 `save/save`、`saveandnew/saveandnew`。保留保存按钮
|
|
85
86
|
key 时使用 `save/donothing`、`saveandnew/donothing`,真实持久化由已注册插件
|
|
@@ -102,6 +103,10 @@
|
|
|
102
103
|
|
|
103
104
|
`run` 返回 `writeAttempted=false` 且 `retryAdvice=fix_input` 时,修正点名输入后重试。
|
|
104
105
|
已经保留元数据或写后未知时,只按回执执行检查/续写,不重新创建。
|
|
106
|
+
`run` 保存该创建请求的保留写入回执;修改同一 Artifact 后再执行会返回
|
|
107
|
+
`DYNAMIC_FORM_RECOVERY_REQUIRED`,不会重新写入。直接执行 `reconciliation[].arguments`
|
|
108
|
+
给出的 `getFormSchema --formId`,随后使用既有表单修复入口。按编码查询未找到,
|
|
109
|
+
不能推翻已返回的 formId 或证明写入已回滚。
|
|
105
110
|
若返回 `retryAdvice=user_input_required`,禁止进入修复循环或缩短 `logicalName`;
|
|
106
111
|
只向用户询问一次新的表单编码。
|
|
107
112
|
用户回答后,只用一条命令更新同一文件并完成校验:
|
|
@@ -52,6 +52,11 @@
|
|
|
52
52
|
|
|
53
53
|
禁止写平台装饰后的 `entityKey`、`fieldKey`、`tableName`、`columnName`;装饰由 `run` 负责。
|
|
54
54
|
|
|
55
|
+
`BasedataField` / `MulBasedataField` 用
|
|
56
|
+
`reference: {"mode":"platform","formNumber":"<准确目标编码>"}`,或在 `prdRef` 中声明
|
|
57
|
+
明确名称/编码。`run` 复用实体建模的解析器,在创建前验证并补齐 `basedataNumber`。
|
|
58
|
+
目标未解析时在写入前失败;保留引用字段,不通过改字段类型或删字段让创建通过。
|
|
59
|
+
|
|
55
60
|
用户给出准确表单编码时,将其原样写入 `entities[0].logicalName`。`bizName` 仍是生成
|
|
56
61
|
标识时使用的业务语义;`logicalName` 是最终持久化的准确表单身份。格式与长度只由
|
|
57
62
|
`dynamic_form_validator.py` 判定,禁止在 CLI 返回类型化证据前重复校验或缩短。
|
|
@@ -26,6 +26,16 @@
|
|
|
26
26
|
各区段载荷形状以
|
|
27
27
|
`{ROOT_DIR}/skills/cosmic-meta-api/contracts/schema/report-write.schema.json` 为准。
|
|
28
28
|
|
|
29
|
+
编写列、过滤或排序前,一次取得这两份契约:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
{python} {ROOT_DIR}/skills/cosmic-meta-modeling/scripts/report_validator.py --schema
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
返回的 Schema 已包含本地引用定义。按实际必填键编写:列使用 `kind: "column"`、
|
|
36
|
+
`caption`、`dateIndex`;排序使用 `direction: "asc" | "desc"`。只有需要额外展示
|
|
37
|
+
或插件行为时才读下方对应示例。
|
|
38
|
+
|
|
29
39
|
使用真实公共模板编号:
|
|
30
40
|
|
|
31
41
|
- `bos_rpttpl`:默认报表;
|
|
@@ -163,6 +173,10 @@ id 和显示名由平台解析:调用方给的 id 无法证明存在,而存
|
|
|
163
173
|
|
|
164
174
|
## 能力边界
|
|
165
175
|
|
|
176
|
+
报表过滤使用 `{ROOT_DIR}/references/report-filter-contract.md`。保留源字段类型、引用和枚举语义,
|
|
177
|
+
Java 交接消费 filterValueContracts。优先已发布 CLI 和独立回读;候选 key 或 filterFieldConfig
|
|
178
|
+
写入成功均不证明控件类型或实际提交的运行 key。
|
|
179
|
+
|
|
166
180
|
类型化 CLI 未发布数据源编排和报表插件删除能力。不要在 Artifact 中写入 `dataSources` 或
|
|
167
181
|
`reportBehavior`,也不要用 `setComplexProperty` 模拟这些操作。
|
|
168
182
|
|
|
@@ -170,16 +184,14 @@ id 和显示名由平台解析:调用方给的 id 无法证明存在,而存
|
|
|
170
184
|
行背景色、初始字段以及单列的展现,都可以在下文的 `reportProperties` 段里声明;同样这些属性,修改期
|
|
171
185
|
的 `setReportProperties` 也能在创建之后按宿主逐个写入。
|
|
172
186
|
|
|
173
|
-
|
|
187
|
+
剩余边界需明确:
|
|
174
188
|
|
|
175
|
-
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
`
|
|
181
|
-
`mustInput` 与 `visible` 确实会落地,读回可由设计态导出证明;`defaultValue` 没有任何可观测证据,
|
|
182
|
-
读回报为不可判定。不可判定的属性永远不会被报成 mismatch,因此声明它不会让写入失败。
|
|
189
|
+
- 报表列展现仍通过插件契约和已核验的 ReportColumnFactory 完成。
|
|
190
|
+
- `reportFilters[].source = {formNumber, fieldKey}` 使用 `ReportFilters.typed` 从准确来源字段创建原生控件。
|
|
191
|
+
CLI 读取来源类型、引用、枚举及数字/日期配置,保存后独立回读报表配置,并与重新读取的来源比较。
|
|
192
|
+
日期 `between` 使用 DateRangeField。此能力需要 `assets/platform-report-filters/` 中的平台扩展;
|
|
193
|
+
旧平台在类型化写入前拒绝,不静默回退成 TextField。未支持的专用类型、组织和条件引用依赖明确失败。
|
|
194
|
+
未声明 source 时,旧比较符驱动的控件行为仍按部署版本核验。控件类型不证明过滤生效,`compare` 仍是查询要求。
|
|
183
195
|
|
|
184
196
|
这两类需求都不会被丢弃:它们会被编译进一份插件契约
|
|
185
197
|
`{appRoot}/_runtime/<formNumber>.report-plugin-contract.json`,由 `prepare_plugin_handoff` 以
|
package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-storage-constraints.md
CHANGED
|
@@ -4,14 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
- 精确页面/实体编码原样写入实体的 `logicalName`。
|
|
6
6
|
- 精确字段编码原样写入字段的 `logicalName`。
|
|
7
|
+
- 编译器统一为逻辑标识追加一次开发商前缀,显式编码也遵循此规则;已有前缀不重复追加。
|
|
8
|
+
长度限制包含前缀。物理名称、已有外部对象的引用不追加前缀,新模型内引用统一使用最终标识映射。
|
|
7
9
|
- `{isv}_materialgroup1` 这类值是命名模板,不是精确编码。只将
|
|
8
10
|
`materialgroup1` 写入 `bizName`/`bizWord`,省略 `logicalName`;emitter 通过
|
|
9
11
|
`getDevInfo` 解析 `isvNumber` 和 `standard`。禁止用 appCode 或应用目录展开 `{isv}`。
|
|
10
12
|
- 精确表名原样写入实体的 `physicalName`。
|
|
11
13
|
- 精确数据库列名原样写入字段的 `physicalName`。
|
|
12
14
|
- 需求未给出时省略这些键。模型不得自行派生、修复、补前缀、缩短或协调这些值。
|
|
13
|
-
- 语义 `bizName`/`bizWord` 与 `physicalName` 相互独立。emitter
|
|
14
|
-
|
|
15
|
+
- 语义 `bizName`/`bizWord` 与 `physicalName` 相互独立。emitter 在开发商前缀规范化后校验最终标识:
|
|
16
|
+
合法则应用,不合法则返回约束错误。明确文本长度或 `varchar(N)` 不属于
|
|
15
17
|
authoring 键;app-build 在建模成功后通过属性命令设置。
|
|
16
18
|
|
|
17
19
|
```json
|
|
@@ -34,7 +36,7 @@
|
|
|
34
36
|
}
|
|
35
37
|
```
|
|
36
38
|
|
|
37
|
-
实体 `logicalName`
|
|
39
|
+
实体 `logicalName` 在前缀规范化后保留编码大小写,含前缀最长 25。字段逻辑编码和
|
|
38
40
|
物理列名最长 24,表名最长 25。明确编码永不截断;自动生成的语义名在引用、
|
|
39
41
|
规则、属性和分录编译前一次投影为最终持久化 key。无效的明确约束不得
|
|
40
42
|
静默放宽或替换为自动生成值。
|
package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-ui-composition.md
CHANGED
|
@@ -10,10 +10,13 @@
|
|
|
10
10
|
`uiComposition`。字段名称与截图 authoring 使用同一显示名。section 的 rows 进入一个原生
|
|
11
11
|
Fieldset;每个非空 TabPage 下创建一个隐藏标题的原生 Fieldset,字段直接放入。通过
|
|
12
12
|
`sections:[{"key":"fs_basic_info","caption":"...","rows":[{"fields":[...]}]}]` 表达,`tabs` 下也使用同一
|
|
13
|
-
`caption`/`rows` 结构;section 行不得包含 null
|
|
14
|
-
`
|
|
13
|
+
`caption`/`rows` 结构;section 行不得包含 null。每个 row 只能有 `fields` 属性;
|
|
14
|
+
`fullLine` 必须放在 `fields` 数组中的字段对象上,不能放在 row 上。有效整行示例是
|
|
15
|
+
`{"fields":[{"field":"描述","fullLine":true}]}`;
|
|
16
|
+
`{"fields":["描述"],"fullLine":true}` 和 `{"field":"描述","fullLine":true}` 都是无效 row。
|
|
17
|
+
单字段行不隐含整行。所有直接字段的
|
|
15
18
|
`Width` 保持平台原生空值以保留 Fieldset 栏间距,绝不以 `Width=100%` 表达一行。图片中明确整行或横排的选项控件可使用
|
|
16
|
-
`{"field":"职能类型","fullLine":true,"optionLayout":"horizontal","maxColumnWidth":"25%"}`;
|
|
19
|
+
`{"fields":[{"field":"职能类型","fullLine":true,"optionLayout":"horizontal","maxColumnWidth":"25%"}]}`;
|
|
17
20
|
顶层可用 `gap:"10px"` 保持统一面板间距。emitter 在 buildMeta 前校验全部字段,`runBatch`
|
|
18
21
|
负责组合布局的结构、属性写入与验证。这些阶段不是一个可整体回滚的事务;失败可能保留
|
|
19
22
|
前序写入,应保留回执并按继续执行或对账指引处理。不得延后拆成
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# 创建失败与恢复
|
|
2
2
|
|
|
3
|
+
`POST_BUILD_PHASE_FAILED` 表示主体表单已保存,后续阶段或回读失败。先按 `reconciliation`
|
|
4
|
+
读取返回的准确表单 ID、编码和应用绑定。批次单项状态使用 `ok`、`phase`、`errors`;嵌套的
|
|
5
|
+
`entityResults.success=true` 只证明主体保存,不能代表后续写入全部完成。
|
|
6
|
+
|
|
7
|
+
`repairPlans` 保留失败阶段、原 artifact 路径和可用的待修复输入。先对照当前元数据:
|
|
8
|
+
相同字段直接复用,只执行已证实缺失的写入;身份不一致或写入结果未知时停止。
|
|
9
|
+
待修复输入不是盲目重复 add 的许可。保留原错误和成功回执,完成该主体剩余属性、规则及验证后,
|
|
10
|
+
只提交 `notStartedArtifacts` 中明确 `writeAttempted=false` 的文件,不把已保存或已验证对象
|
|
11
|
+
再次加入创建批次,也不重新生成原 artifact。
|
|
12
|
+
|
|
3
13
|
返回 `retryAdvice=continue_with_retained_form` 时保留已建实体,只按返回的
|
|
4
14
|
`continuations[]`,用其中 command、`appRoot`、`formNumber`、`input` 各执行一次。禁止重构
|
|
5
15
|
载荷或重跑 emit、`runBatch`、`buildMeta`。
|
|
@@ -15,3 +25,6 @@
|
|
|
15
25
|
`fix_input` 且确认零写入时,可修正报告的输入后重新提交;
|
|
16
26
|
重复相同失败应诊断原因,不盲目重试。保留或未知写入按返回的对账、继续执行指引处理,
|
|
17
27
|
不得重新开始创建。
|
|
28
|
+
|
|
29
|
+
已确认未写入的工作使用持久化批次回执的 `resume`;来源绑定与只读核对见
|
|
30
|
+
[执行契约](../../../references/execution-contract.md)。
|
|
@@ -5,6 +5,9 @@ authoring,不是路由或匹配阶段。
|
|
|
5
5
|
|
|
6
6
|
## 规则
|
|
7
7
|
|
|
8
|
+
- `templateKey` 可填实时模板编码或唯一显示名;emitter 在实体模型类型内解析名称,
|
|
9
|
+
然后读取模板预置字段。名称歧义时返回候选,不替换成其他模板。
|
|
10
|
+
|
|
8
11
|
- 必须有对象类型/名称,以及用户字段或明确的字段选择授权。
|
|
9
12
|
- `BillEntity` 默认 `templateKey="bos_billtpl"`;`BaseEntity` 默认
|
|
10
13
|
`"bos_basetpl"`。省略时由 emitter 在内存中补齐;显式值保持原样并接受校验。
|
|
@@ -356,7 +356,8 @@ def validate_authoring_contract(
|
|
|
356
356
|
f"root entity type '{entity_type}' must not declare parentEntityRef",
|
|
357
357
|
)
|
|
358
358
|
if entity_type in {"BillEntity", "BaseEntity"}:
|
|
359
|
-
|
|
359
|
+
if "templateKey" in entity:
|
|
360
|
+
_required_string(entity, "templateKey", path, issues)
|
|
360
361
|
if biz_name:
|
|
361
362
|
main_names.add(biz_name)
|
|
362
363
|
elif entity_type == "MainEntity":
|
|
@@ -611,6 +612,10 @@ def validate_authoring_contract(
|
|
|
611
612
|
f"{reference_hint} is a built-in single-select reference; use {expected_wrapper}",
|
|
612
613
|
)
|
|
613
614
|
if data_type in REF_BILL_TYPES:
|
|
615
|
+
if entity_type == "BaseEntity":
|
|
616
|
+
_issue(issues, "REF_BILL_OWNER_UNSUPPORTED", f"{field_path}.dataType",
|
|
617
|
+
"The current RefBillField writer supports bill forms, not BaseEntity. "
|
|
618
|
+
"Resolve the intended model/reference semantics before creation; do not substitute a field type automatically.")
|
|
614
619
|
if "reference" not in field:
|
|
615
620
|
_issue(
|
|
616
621
|
issues,
|