openyida 2026.9.21 → 2026.9.22-beta.2
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 +14 -20
- package/bin/yida.js +6 -11
- package/lib/app/app-list.js +3 -7
- package/lib/app/canvas-compile.js +12 -22
- package/lib/app/check-prd-completeness.js +0 -7
- package/lib/app/create-app.js +1 -4
- package/lib/app/create-form/args.js +12 -37
- package/lib/app/create-form/batch.js +11 -86
- package/lib/app/create-form.js +86 -193
- package/lib/app/create-page.js +17 -84
- package/lib/app/custom-theme.js +0 -11
- package/lib/app/form-field-validator.js +41 -26
- package/lib/app/form-open-guard.js +10 -97
- package/lib/app/get-form-config.js +0 -1
- package/lib/app/inline-css-guard.js +31 -1
- package/lib/app/services/form-compiler.js +4 -2
- package/lib/app/theme-from-design.js +41 -144
- package/lib/app/theme-presets.js +1 -1
- package/lib/app/update-app.js +13 -63
- package/lib/asset/ai-image.js +9 -59
- package/lib/asset/asset-cmd.js +7 -18
- package/lib/asset/asset-plan.js +9 -102
- package/lib/asset/asset-resolve.js +10 -55
- package/lib/asset/asset-status.js +4 -5
- package/lib/asset/host-capabilities.js +2 -11
- package/lib/asset/url-verify.js +4 -19
- package/lib/auth/dws-sync.js +148 -0
- package/lib/auth/token-auth.js +73 -9
- package/lib/auth/token-store.js +50 -0
- package/lib/connector/connector-test.js +5 -19
- package/lib/connector/contract.js +1 -3
- package/lib/core/agent-capabilities.js +16 -19
- package/lib/core/command-manifest.js +40 -329
- package/lib/core/locales/en.js +17 -74
- package/lib/core/locales/zh.js +16 -73
- package/lib/core/redact.js +10 -15
- package/lib/core/sample.js +30 -72
- package/lib/core/utils.js +4 -0
- package/lib/design-plan/design-plan.js +4 -51
- package/lib/design-plan/init.js +26 -121
- package/lib/design-plan/materialize.js +348 -451
- package/lib/design-plan/normalize.js +29 -74
- package/lib/design-plan/parallel.js +16 -71
- package/lib/design-plan/patch.js +16 -63
- package/lib/design-plan/preview.js +8 -6
- package/lib/design-plan/validate.js +11 -71
- package/lib/process/create-process.js +50 -84
- package/lib/samples/openyida-scaffold/canvas-form-drawer.canvas.jsx +90 -20
- package/lib/samples/openyida-scaffold/canvas-nav/content.jsx +13 -93
- package/lib/samples/openyida-scaffold/canvas-nav/data.jsx +18 -100
- package/lib/samples/openyida-scaffold/canvas-nav/mixed.jsx +4 -6
- package/lib/samples/openyida-scaffold/canvas-nav/shared.jsx +5 -5
- package/lib/samples/openyida-scaffold/canvas-nav/side.jsx +2 -1
- package/lib/samples/openyida-scaffold/canvas-nav/sidebar.jsx +1 -1
- package/lib/samples/openyida-scaffold/canvas-nav/top.jsx +9 -15
- package/lib/samples/yida-canvas-table-form/table-form-batch-submit.canvas.jsx +83 -9
- package/lib/samples/yida-rechart/trend-combo.canvas.jsx +87 -14
- package/package.json +1 -3
- package/scripts/postinstall.js +3 -3
- package/yida-skills/SKILL.md +16 -19
- package/yida-skills/references/official-example-schema-patterns.md +1 -1
- package/yida-skills/references/yida-api.md +0 -4
- package/yida-skills/skills/yida-app/SKILL.md +23 -46
- package/yida-skills/skills/yida-app/workflow/parallel-work.md +6 -15
- package/yida-skills/skills/yida-app/workflow/plan/step-1-understand.md +1 -1
- package/yida-skills/skills/yida-app/workflow/plan/step-2-confirm.md +1 -1
- package/yida-skills/skills/yida-app/workflow/plan/step-4-deliver.md +15 -29
- package/yida-skills/skills/yida-app/workflow/plan/workflow.md +11 -29
- package/yida-skills/skills/yida-app/workflow/step-1-resource-context.md +2 -4
- package/yida-skills/skills/yida-app/workflow/step-2-design.md +9 -23
- package/yida-skills/skills/yida-app/workflow/step-3-create-or-reuse-app.md +4 -6
- package/yida-skills/skills/yida-app/workflow/step-4-forms-processes.md +4 -15
- package/yida-skills/skills/yida-app/workflow/step-6-main-page.md +4 -6
- package/yida-skills/skills/yida-app/workflow/step-7-page-code.md +9 -15
- package/yida-skills/skills/yida-app/workflow/step-8-publish-navigation.md +11 -25
- package/yida-skills/skills/yida-app/workflow/step-9-output-finish.md +28 -68
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +43 -42
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-style-implementation-guide.md +44 -60
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-theme-provider.md +50 -72
- package/yida-skills/skills/yida-canvas-custom-page/references/component-library-guide.md +1 -13
- package/yida-skills/skills/yida-canvas-custom-page/references/data-bridge-guide.md +1 -140
- package/yida-skills/skills/yida-canvas-custom-page/references/navigation-and-entry-guide.md +72 -101
- package/yida-skills/skills/yida-canvas-custom-page/references/page-generation-guide.md +32 -35
- package/yida-skills/skills/yida-canvas-custom-page/scripts/build-canvas-theme.js +3 -29
- package/yida-skills/skills/yida-canvas-custom-page/scripts/canvas-theme-provider.template.jsx +6 -69
- package/yida-skills/skills/yida-canvas-data-binding/SKILL.md +0 -26
- package/yida-skills/skills/yida-create-app/SKILL.md +0 -2
- package/yida-skills/skills/yida-create-form-page/SKILL.md +58 -72
- package/yida-skills/skills/yida-create-form-page/references/advanced-form-modes.md +5 -5
- package/yida-skills/skills/yida-create-form-page/references/association-form-field.md +4 -4
- package/yida-skills/skills/yida-create-form-page/references/batch-forms.md +5 -6
- package/yida-skills/skills/yida-create-form-page/references/field-definition-guide.md +19 -7
- package/yida-skills/skills/yida-create-form-page/references/form-field-properties.md +44 -62
- package/yida-skills/skills/yida-create-page/SKILL.md +6 -14
- package/yida-skills/skills/yida-create-process/SKILL.md +2 -13
- package/yida-skills/skills/yida-custom-page/SKILL.md +0 -2
- package/yida-skills/skills/yida-custom-page/references/design-system.md +1 -1
- package/yida-skills/skills/yida-dashboard/SKILL.md +4 -5
- package/yida-skills/skills/yida-data-management/SKILL.md +2 -4
- package/yida-skills/skills/yida-data-management/references/data-format-guide.md +4 -4
- package/yida-skills/skills/yida-design/SKILL.md +14 -29
- package/yida-skills/skills/yida-design/references/app/blueprint.md +70 -0
- package/yida-skills/skills/yida-design/references/app/navigation-patterns.md +43 -0
- package/yida-skills/skills/yida-design/references/app/role-journey.md +30 -0
- package/yida-skills/skills/yida-design/references/ask-human-interaction-contract.md +42 -67
- package/yida-skills/skills/yida-design/references/asset-workflow.md +2 -6
- package/yida-skills/skills/yida-design/references/design-mode.md +4 -4
- package/yida-skills/skills/yida-design/references/page-quality-gates.md +38 -26
- package/yida-skills/skills/yida-design/references/style-design-selection.md +137 -0
- package/yida-skills/skills/yida-design/references/style-designs/_design-md-template.md +185 -0
- package/yida-skills/skills/yida-design/references/style-designs/aqua-service-progress-dashboard.md +242 -0
- package/yida-skills/skills/yida-design/references/style-designs/blue-insight-operations-dashboard.md +243 -0
- package/yida-skills/skills/yida-design/references/style-designs/blue-productivity-insight-workbench.md +242 -0
- package/yida-skills/skills/yida-design/references/style-designs/command-filter-card-console.md +304 -0
- package/yida-skills/skills/yida-design/references/style-designs/contrast-command-analytics-workbench.md +261 -0
- package/yida-skills/skills/yida-design/references/style-designs/dark-stage-analytic-dashboard.md +369 -0
- package/yida-skills/skills/yida-design/references/style-designs/filterable-card-catalog.md +354 -0
- package/yida-skills/skills/yida-design/references/style-designs/green-timeline-progress-workbench.md +250 -0
- package/yida-skills/skills/yida-design/references/style-designs/registry.md +117 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-analytic-workbench.md +348 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-blue-grid-analytic-dashboard.md +658 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-bordered-analytic-workbench.md +385 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-curated-filter-gallery.md +300 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-modular-analytic-workbench.md +404 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-progress-analytics-workbench.md +382 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-timeline-analytics-workbench.md +367 -0
- package/yida-skills/skills/yida-design/references/style-designs/teal-rail-analytics-workbench.md +341 -0
- package/yida-skills/skills/yida-design/references/theme/app-custom-theme-template.css +432 -350
- package/yida-skills/skills/yida-design/references/visual-decision-engine.md +143 -19
- package/yida-skills/skills/yida-design/references/visual-scaffold-recipes.md +27 -15
- package/yida-skills/skills/yida-design/sub_skill/page-design/SKILL.md +0 -4
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/SKILL.md +8 -22
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/assets/README.md +10 -14
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/assets/build-plan-template.html +4 -9
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-compact-schema.md +27 -49
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-schema.md +154 -33
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-design.md +127 -48
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-theme-selection.md +51 -37
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/render_build_plan.py +48 -43
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/validate_design_themes.py +190 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/README.md +98 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-media-grid.md +339 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-modular-clarity.md +348 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-structured-clarity.md +344 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/ambient-halo-layered.md +345 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/dark-focus-layered.md +355 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/dark-luminous-modular.md +377 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/deep-stage-duotone.md +352 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/hairline-runway-clarity.md +389 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/high-contrast-modular.md +364 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/index.json +329 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/interlocked-vivid-modules.md +348 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/matrix-grid-focus.md +345 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/media-rail-inspector.md +379 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/mist-layered-signal.md +347 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/modular-rail-signal.md +352 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/mono-grid-signal.md +386 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/ribbon-ledger-lift.md +384 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/segmented-meter-clarity.md +388 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/split-rail-precision.md +341 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/status-framed-media-grid.md +361 -0
- package/yida-skills/skills/yida-design/workflow/output-design.md +375 -117
- package/yida-skills/skills/yida-design/workflow/output-prd.md +185 -0
- package/yida-skills/skills/yida-design/workflow/step-1-read-brief.md +1 -1
- package/yida-skills/skills/yida-design/workflow/step-2-theme-system.md +29 -33
- package/yida-skills/skills/yida-design/workflow/step-4-wireframe-interaction.md +1 -3
- package/yida-skills/skills/yida-design/workflow/step-5-visual-states.md +106 -22
- package/yida-skills/skills/yida-design/workflow/step-6-handoff.md +22 -15
- package/yida-skills/skills/yida-form-permission/SKILL.md +0 -6
- package/yida-skills/skills/yida-image-assets/SKILL.md +50 -73
- package/yida-skills/skills/yida-image-assets/references/manifest-contract.md +52 -82
- package/yida-skills/skills/yida-image-assets/references/source-policy.md +15 -14
- package/yida-skills/skills/yida-integration/SKILL.md +0 -1
- package/yida-skills/skills/yida-login/SKILL.md +0 -2
- package/yida-skills/skills/yida-nav-group/SKILL.md +2 -4
- package/yida-skills/skills/yida-nav-shell/SKILL.md +12 -36
- package/yida-skills/skills/yida-nav-shell/references/nav-shell-patterns.md +136 -79
- package/yida-skills/skills/yida-page-config/SKILL.md +4 -13
- package/yida-skills/skills/yida-prd/SKILL.md +3 -5
- package/yida-skills/skills/yida-prd/references/app/blueprint.md +4 -4
- package/yida-skills/skills/yida-prd/references/app/navigation-patterns.md +3 -6
- package/yida-skills/skills/yida-prd/references/app/role-journey.md +3 -5
- package/yida-skills/skills/yida-prd/references/plan-content.md +0 -4
- package/yida-skills/skills/yida-prd/workflow/output-prd.md +11 -18
- package/yida-skills/skills/yida-prd/workflow/plan-business.md +4 -4
- package/yida-skills/skills/yida-prd/workflow/step-2-information-architecture.md +8 -11
- package/yida-skills/skills/yida-publish-page/SKILL.md +1 -9
- package/yida-skills/skills/yida-requirement-analysis/SKILL.md +39 -10
- package/yida-skills/skills/yida-requirement-analysis/workflow/prepare-brief.md +71 -40
- package/yida-skills/skills-index.json +16 -36
- package/lib/app/application-entry-urls.js +0 -31
- package/lib/app/application-style.js +0 -69
- package/lib/app/canvas-icon-exports.json +0 -6160
- package/lib/app/canvas-icon-guard.js +0 -87
- package/lib/app/canvas-navigation-guard.js +0 -84
- package/lib/app/canvas-path-guard.js +0 -78
- package/lib/app/canvas-theme-guard.js +0 -184
- package/lib/app/form-data-response-guard.js +0 -57
- package/lib/asset/asset-execution.js +0 -79
- package/lib/core/css-structure.js +0 -37
- package/lib/design/check-design.js +0 -51
- package/lib/design/document.js +0 -458
- package/lib/design/icon-contrast.js +0 -85
- package/lib/design/page-content.js +0 -11
- package/lib/design-plan/artifact-updates.js +0 -117
- package/lib/design-plan/confirmation.js +0 -13
- package/lib/design-plan/entry-navigation.js +0 -97
- package/lib/design-plan/navigation-policy.js +0 -38
- package/lib/design-plan/rebase.js +0 -60
- package/lib/design-plan/themes.js +0 -101
- package/lib/design-plan/visual-policy.js +0 -42
- package/lib/samples/openyida-scaffold/canvas-admin-entry.jsx +0 -62
- package/lib/samples/openyida-scaffold/canvas-navigation.jsx +0 -56
- package/lib/samples/openyida-scaffold/canvas-view-state.jsx +0 -74
- package/yida-skills/skills/yida-app/references/entry-navigation.md +0 -193
- package/yida-skills/skills/yida-canvas-custom-page/references/view-state-recovery.md +0 -52
- package/yida-skills/skills/yida-canvas-data-binding/references/business-action-permissions.md +0 -31
- package/yida-skills/skills/yida-design/references/application-style-library.md +0 -93
- package/yida-skills/skills/yida-design/references/application-theme-consistency.md +0 -150
- package/yida-skills/skills/yida-design/references/native-form-styles.md +0 -208
- package/yida-skills/skills/yida-design/references/navigation-decision.md +0 -53
- package/yida-skills/skills/yida-design/references/page-continuity.md +0 -42
- package/yida-skills/skills/yida-design/references/theme/application-style-recipes.css +0 -58
- package/yida-skills/skills/yida-design/references/theme-selection.md +0 -67
- package/yida-skills/skills/yida-design/scripts/validate_design_themes.py +0 -302
- package/yida-skills/skills/yida-design/templates/application-styles.json +0 -398
- package/yida-skills/skills/yida-design/templates/design-themes/README.md +0 -73
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/form-layout.json +0 -15
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/app_theme.css +0 -754
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/design.md +0 -279
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/app_theme.css +0 -758
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/design.md +0 -281
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/app_theme.css +0 -754
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/design.md +0 -279
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/app_theme.css +0 -752
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/design.md +0 -278
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/basic-tokens.json +0 -118
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/app_theme.css +0 -690
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/design.md +0 -382
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/design.md +0 -380
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/app_theme.css +0 -696
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/design.md +0 -378
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/app_theme.css +0 -689
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/design.md +0 -238
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/app_theme.css +0 -692
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/design.md +0 -375
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/design.md +0 -362
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/design.md +0 -409
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/index.json +0 -464
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/app_theme.css +0 -701
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/design.md +0 -379
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/design.md +0 -404
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/app_theme.css +0 -698
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/design.md +0 -389
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/design.md +0 -372
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/app_theme.css +0 -690
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/design.md +0 -455
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/app_theme.css +0 -698
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/design.md +0 -394
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/app_theme.css +0 -692
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/design.md +0 -391
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/app_theme.css +0 -711
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/design.md +0 -408
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/app_theme.css +0 -692
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/design.md +0 -383
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/navigation-styles.json +0 -769
- package/yida-skills/skills/yida-requirement-analysis/references/experience-groups.md +0 -79
- package/yida-skills/skills/yida-requirement-analysis/references/handoff.md +0 -68
|
@@ -40,8 +40,8 @@ const SAMPLE_ROWS = [
|
|
|
40
40
|
];
|
|
41
41
|
|
|
42
42
|
const BASE_THEME = {
|
|
43
|
-
brand: 'var(--color-brand1-6)',
|
|
44
|
-
brandSoft: 'var(--color-brand1-1)',
|
|
43
|
+
brand: 'var(--color-brand1-6, #1677ff)',
|
|
44
|
+
brandSoft: 'var(--color-brand1-1, #e6f4ff)',
|
|
45
45
|
cyan: '#0891B2',
|
|
46
46
|
amber: '#D97706',
|
|
47
47
|
ink: 'var(--color-text1-4, #172033)',
|
|
@@ -72,13 +72,88 @@ function MetricCard({ label, value, note, tone }) {
|
|
|
72
72
|
);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
// @openyida-canvas-theme:start
|
|
76
|
+
// Standalone samples keep this fragment identical; see canvas-theme.test.js.
|
|
77
|
+
function readCanvasTheme(root, fallback) {
|
|
78
|
+
const roles = {
|
|
79
|
+
colorPrimary: '--color-brand1-6', colorLink: '--color-brand1-6',
|
|
80
|
+
colorPrimaryHover: '--color-brand1-5', colorPrimaryActive: '--color-brand1-9',
|
|
81
|
+
colorBgLayout: ['--pod-page-bg-color', '--color-white'],
|
|
82
|
+
colorBgContainer: ['--pod-card-bg-color', '--color-white'],
|
|
83
|
+
colorBgElevated: ['--pod-card-bg-color', '--color-white'], colorText: '--color-text1-4',
|
|
84
|
+
colorTextHeading: '--color-text1-4', colorTextSecondary: '--color-text1-3',
|
|
85
|
+
colorTextDescription: '--color-text1-3', colorTextPlaceholder: '--color-text1-10',
|
|
86
|
+
colorBorder: '--color-line1-2', colorBorderSecondary: '--color-line1-1',
|
|
87
|
+
colorFillAlter: '--color-fill1-1', colorFillSecondary: '--color-fill1-2',
|
|
88
|
+
};
|
|
89
|
+
const token = { ...fallback };
|
|
90
|
+
if (!root) return token;
|
|
91
|
+
const doc = root.ownerDocument;
|
|
92
|
+
const view = doc.defaultView;
|
|
93
|
+
const scope = view.getComputedStyle(root);
|
|
94
|
+
const probe = doc.createElement('span');
|
|
95
|
+
probe.style.cssText = 'position:absolute;visibility:hidden;pointer-events:none;';
|
|
96
|
+
root.appendChild(probe);
|
|
97
|
+
try {
|
|
98
|
+
Object.keys(roles).forEach((role) => {
|
|
99
|
+
const names = Array.isArray(roles[role]) ? roles[role] : [roles[role]];
|
|
100
|
+
const value = names.map((name) => scope.getPropertyValue(name).trim()).find(Boolean) || '';
|
|
101
|
+
if (!value || !view.CSS.supports('color', value)) return;
|
|
102
|
+
probe.style.color = value;
|
|
103
|
+
const color = view.getComputedStyle(probe).color;
|
|
104
|
+
if (color) token[role] = color;
|
|
105
|
+
});
|
|
106
|
+
} finally {
|
|
107
|
+
probe.remove();
|
|
108
|
+
}
|
|
109
|
+
return token;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function useCanvasTheme(fallback) {
|
|
113
|
+
const rootRef = React.useRef(null);
|
|
114
|
+
const fallbackRef = React.useRef(fallback);
|
|
115
|
+
const [token, setToken] = React.useState(fallback);
|
|
116
|
+
React.useLayoutEffect(() => {
|
|
117
|
+
const root = rootRef.current;
|
|
118
|
+
if (!root) return undefined;
|
|
119
|
+
const doc = root.ownerDocument;
|
|
120
|
+
const view = doc.defaultView;
|
|
121
|
+
let frame;
|
|
122
|
+
const refresh = () => {
|
|
123
|
+
const next = readCanvasTheme(root, fallbackRef.current);
|
|
124
|
+
setToken((previous) => JSON.stringify(previous) === JSON.stringify(next) ? previous : next);
|
|
125
|
+
};
|
|
126
|
+
const schedule = () => {
|
|
127
|
+
view.cancelAnimationFrame(frame);
|
|
128
|
+
frame = view.requestAnimationFrame(refresh);
|
|
129
|
+
};
|
|
130
|
+
refresh();
|
|
131
|
+
// Observe only theme-bearing ancestors and stylesheet changes, not business DOM.
|
|
132
|
+
const observer = new view.MutationObserver(schedule);
|
|
133
|
+
for (let node = root; node; node = node.parentElement) {
|
|
134
|
+
observer.observe(node, { attributes: true });
|
|
135
|
+
}
|
|
136
|
+
if (doc.head) observer.observe(doc.head, { subtree: true, childList: true, characterData: true, attributes: true });
|
|
137
|
+
doc.addEventListener('load', schedule, true);
|
|
138
|
+
view.addEventListener('resize', schedule);
|
|
139
|
+
view.addEventListener('openyida:theme-change', schedule);
|
|
140
|
+
return () => {
|
|
141
|
+
observer.disconnect();
|
|
142
|
+
view.cancelAnimationFrame(frame);
|
|
143
|
+
doc.removeEventListener('load', schedule, true);
|
|
144
|
+
view.removeEventListener('resize', schedule);
|
|
145
|
+
view.removeEventListener('openyida:theme-change', schedule);
|
|
146
|
+
};
|
|
147
|
+
}, []);
|
|
148
|
+
return { rootRef, token };
|
|
149
|
+
}
|
|
150
|
+
// @openyida-canvas-theme:end
|
|
76
151
|
|
|
77
|
-
function
|
|
78
|
-
const { token } =
|
|
152
|
+
function YidaComp(props) {
|
|
153
|
+
const { rootRef, token } = useCanvasTheme({ colorPrimary: "#1677ff", borderRadius: 9 });
|
|
79
154
|
const THEME = {
|
|
80
155
|
...BASE_THEME,
|
|
81
|
-
brand: token.colorPrimary
|
|
156
|
+
brand: token.colorPrimary,
|
|
82
157
|
ink: token.colorText || BASE_THEME.ink,
|
|
83
158
|
muted: token.colorTextSecondary || BASE_THEME.muted,
|
|
84
159
|
line: token.colorBorderSecondary || BASE_THEME.line,
|
|
@@ -96,14 +171,16 @@ function PageContent(props) {
|
|
|
96
171
|
const revenueDelta = latest && previous ? latest.revenue - previous.revenue : 0;
|
|
97
172
|
|
|
98
173
|
return (
|
|
99
|
-
|
|
174
|
+
<ConfigProvider
|
|
175
|
+
theme={{ token }}
|
|
176
|
+
>
|
|
100
177
|
<style>{`
|
|
101
178
|
.rechart-page {
|
|
102
179
|
min-height: 100vh;
|
|
103
180
|
box-sizing: border-box;
|
|
104
181
|
padding: 28px;
|
|
105
182
|
background:
|
|
106
|
-
radial-gradient(circle at 92% 4%, color-mix(in srgb, var(--color-brand1-6) 12%, transparent), transparent 30%),
|
|
183
|
+
radial-gradient(circle at 92% 4%, color-mix(in srgb, var(--color-brand1-6, #1677ff) 12%, transparent), transparent 30%),
|
|
107
184
|
var(--pod-page-bg-color, var(--color-white, #fff));
|
|
108
185
|
color: ${THEME.ink};
|
|
109
186
|
}
|
|
@@ -159,7 +236,7 @@ function PageContent(props) {
|
|
|
159
236
|
}
|
|
160
237
|
`}</style>
|
|
161
238
|
|
|
162
|
-
<div className="rechart-page">
|
|
239
|
+
<div ref={rootRef} className="rechart-page">
|
|
163
240
|
<div className="rechart-shell">
|
|
164
241
|
<div className="rechart-header">
|
|
165
242
|
<div>
|
|
@@ -248,12 +325,8 @@ function PageContent(props) {
|
|
|
248
325
|
</div>
|
|
249
326
|
</div>
|
|
250
327
|
</div>
|
|
251
|
-
|
|
328
|
+
</ConfigProvider>
|
|
252
329
|
);
|
|
253
330
|
}
|
|
254
331
|
|
|
255
|
-
function YidaComp(props) {
|
|
256
|
-
return <CanvasThemeProvider><PageContent {...props} /></CanvasThemeProvider>;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
332
|
export default YidaComp;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openyida",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.22-beta.2",
|
|
4
4
|
"description": "OpenYida CLI - 宜搭低代码 AI 开发工具(安装即用,零配置)",
|
|
5
5
|
"bin": {
|
|
6
6
|
"openyida": "bin/yida.js",
|
|
@@ -57,7 +57,6 @@
|
|
|
57
57
|
"check:i18n:baseline": "node scripts/validate-i18n.js --update-baseline",
|
|
58
58
|
"check:syntax": "node scripts/check-syntax.js",
|
|
59
59
|
"check:release-risks": "node scripts/check-release-risks.js",
|
|
60
|
-
"check:changelog": "node scripts/release-notes.js",
|
|
61
60
|
"check:package-size": "node scripts/validate-package-size.js",
|
|
62
61
|
"check:package": "npm pack --dry-run",
|
|
63
62
|
"check:release": "npm run check:ci",
|
|
@@ -88,7 +87,6 @@
|
|
|
88
87
|
"dependencies": {
|
|
89
88
|
"@babel/standalone": "^7.15.1",
|
|
90
89
|
"globals": "^17.11.0",
|
|
91
|
-
"js-yaml": "^4.3.2",
|
|
92
90
|
"uglify-js": "^3.19.3"
|
|
93
91
|
},
|
|
94
92
|
"devDependencies": {
|
package/scripts/postinstall.js
CHANGED
|
@@ -275,7 +275,7 @@ openyida login
|
|
|
275
275
|
|
|
276
276
|
## 工作目录
|
|
277
277
|
|
|
278
|
-
|
|
278
|
+
执行宜搭开发前检查当前工作区是否已有 \`project/\` 目录。没有时运行:
|
|
279
279
|
|
|
280
280
|
\`\`\`bash
|
|
281
281
|
openyida copy
|
|
@@ -285,7 +285,7 @@ openyida copy
|
|
|
285
285
|
|
|
286
286
|
用户说“按默认方案 / 不要追问 / 直接创建 / 尽快搭建”时,加载 \`yida-app\` 走完整应用统一编排。
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
完整应用先在 yida-app Step 2 按 yida-design/references/design-mode.md 选择一次 Fast / Plan。首次搭建包括没有 appType 和已有 appType 但无页面的空应用;用户尚未为本次搭建明确选择方式时,仅询问“Plan(先确认方案) / Fast(直接搭建)”并等待回答;两种模式都完成业务规划和视觉设计,技能与工具不作为模式选项。模式与导航类型的提问使用固定顺序和中性说明,不标记推荐或默认,不预选或引导选择。以下需求分析与并行设计规则用于 Fast;Plan 确认当前版本后直接交接派生文件,不再运行 Fast。只有 Plan 的 build-plan.html 用于方案展示,其余设计文件保持内部使用。
|
|
289
289
|
|
|
290
290
|
统一编排只做:解析资源上下文并整理用户需求 → 同时调用 \`yida-prd\` 输出 \`prd.md\`、\`yida-design\` 输出 \`design.md\` → 由 \`yida-app\` 校验两份结果 → 创建/复用应用 → 核心表单/流程 → 主页面 → 编写主页面源码 → 发布 + 轻量导航排序 → 返回 2-3 句业务交付总结和一个主入口链接。资源创建顺序按 PRD 执行:应用先落位,表单/流程先于自定义页面。发布主页面成功后,PRD 写明导航顺序时执行 \`openyida nav-group order <appType> <页面/表单...>\`;PRD 只写宽泛分组或缺少导航顺序时,执行 \`openyida publish ... --auto-nav-order\` 或 \`openyida nav-group auto-order <appType>\` 兜底,兜底顺序为门户/首页/工作台入口、业务办理、数据管理、经营分析、系统配置。
|
|
291
291
|
|
|
@@ -293,7 +293,7 @@ openyida copy
|
|
|
293
293
|
|
|
294
294
|
完整应用页面源码默认不得使用 \`this.dataSourceMap.*\`,除非本轮已经明确创建并绑定设计器数据源;默认使用入口型页面或 \`this.utils.yida.*\` 查询已创建表单。
|
|
295
295
|
|
|
296
|
-
最终结果先输出 2-3 句业务交付总结,再给一个主入口链接:新增/修改/发布单个页面时主入口是当前页面 URL
|
|
296
|
+
最终结果先输出 2-3 句业务交付总结,再给一个主入口链接:新增/修改/发布单个页面时主入口是当前页面 URL;其他完整应用、表单、流程、权限、主题、导航或批量资源场景主入口是应用首页 \`{base_url}/{appType}/workbench\`。示例:“已完成订单、商品和客户等核心表单,并发布首页、订单管理和库存看板入口。当前应用已支持订单录入、库存预警、销售统计和表单详情查看,示例记录与轻量导航排序也已就绪。主入口:{base_url}/{appType}/workbench”。不要使用表格、资源 ID 清单或长列表;不要把 \`g.alicdn.com\` 静态资源、CDN 构建产物、locale JSON、\`/admin\` 管理页或中间文件 URL 当成最终结果。
|
|
297
297
|
|
|
298
298
|
完整应用创建/解析多个表单后,页面阶段需要字段映射时,对每个目标表单默认只执行一次 \`openyida get-schema <appType> <formUuid> --field-map-json\`,读取完整 JSON 并写入/复用 \`.cache/<项目名>-schema.json\`;不要用 \`head\` / \`tail\` / \`grep\` 截断 schema stdout 后重复拉取。
|
|
299
299
|
|
package/yida-skills/SKILL.md
CHANGED
|
@@ -18,14 +18,13 @@ description: >
|
|
|
18
18
|
|
|
19
19
|
1. 需求识别与分析
|
|
20
20
|
2. 设计功能和页面
|
|
21
|
-
3.
|
|
21
|
+
3. 生成PRD方案&确认
|
|
22
22
|
4. 创建应用
|
|
23
23
|
5. 搭建表单与审批流
|
|
24
24
|
6. 准备示例数据
|
|
25
|
-
7.
|
|
26
|
-
8.
|
|
27
|
-
9.
|
|
28
|
-
10. 检查功能并交付
|
|
25
|
+
7. 搭建业务页面
|
|
26
|
+
8. 发布页面与配置导航
|
|
27
|
+
9. 检查功能并交付
|
|
29
28
|
|
|
30
29
|
**Fast 模式**
|
|
31
30
|
|
|
@@ -34,20 +33,19 @@ description: >
|
|
|
34
33
|
3. 创建应用
|
|
35
34
|
4. 搭建表单与审批流
|
|
36
35
|
5. 准备示例数据
|
|
37
|
-
6.
|
|
38
|
-
7.
|
|
39
|
-
8.
|
|
40
|
-
9. 检查功能并交付
|
|
36
|
+
6. 搭建业务页面
|
|
37
|
+
7. 发布页面与配置导航
|
|
38
|
+
8. 检查功能并交付
|
|
41
39
|
|
|
42
|
-
|
|
40
|
+
已有应用时,直接省略“创建应用”,不另列“复用现有应用”待办,后续步骤重新编号;无需示例数据时跳过对应步骤。步骤状态按真实进度更新,有独立输入的工作可同时进行。
|
|
43
41
|
|
|
44
|
-
|
|
42
|
+
禁区:待办标题、说明和进度不出现技能名、命令、文件路径、登录账号、内部资源 ID;这些留在工具调用里。用户明确询问技术细节时再解释。
|
|
45
43
|
|
|
46
44
|
## 执行步骤
|
|
47
45
|
|
|
48
46
|
### Step 1:环境与登录态确认
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
先执行 `openyida agent-capabilities --summary-json`,确认 OpenYida、Node/npm、登录态和工作目录可用。`openyida agent-capabilities --json` 是完整能力信息,只在命令契约排障、manifest 差异诊断或深度调试时使用;不要把完整能力信息放进常规完整搭建链路。`workdir` 对应完整能力信息里的 `active.projectRoot`。
|
|
51
49
|
|
|
52
50
|
如果快照显示 `builder_path.interactive_login.mode=caller_open_url`,说明 CLI 已把浏览器归属交给 Agent。执行 `openyida login --no-browser` 后,Agent 必须优先调用当前宿主的沙箱浏览器 / 内置 Browser 打开 CLI 输出的授权 URL 一次;只有没有浏览器工具或工具调用失败时,才让用户手动打开链接。
|
|
53
51
|
|
|
@@ -106,8 +104,8 @@ description: >
|
|
|
106
104
|
| `yida-skills/design` | 完整应用需求分析、PRD、视觉设计、单页 UI 改造、应用主题色、全局换肤、图片素材 | `yida-requirement-analysis`、`yida-prd`、`yida-design`、`yida-image-assets` |
|
|
107
105
|
| `yida-skills/form` | 表单字段、公式、校验、业务关联规则、批量录入、数据记录 | `yida-create-form-page`、`yida-formula`、`yida-formula-evaluate`、`yida-business-rule`、`yida-canvas-table-form`、`yida-table-form`、`yida-data-management` |
|
|
108
106
|
| `yida-skills/process` | 审批、流程表单、流程规则、节点/分支/字段权限、流程代理 | `yida-create-process`、`yida-process-rule`、`yida-agent-center` |
|
|
109
|
-
| `yida-skills/page` |
|
|
110
|
-
| `yida-skills/analytics` | 聚合表、虚拟视图、报表、统计、图表、Recharts、ECharts
|
|
107
|
+
| `yida-skills/page` | 自定义展示页、页面源码开发、平台 JSX 组件页面维护、页面发布、页面内导航、PPT 页面 | `yida-create-page`、`yida-canvas-custom-page`、`yida-custom-page`、`yida-canvas-data-binding`、`yida-canvas-upgrade`、`yida-publish-page`、`yida-openyida-publish-guard`、`yida-density`、`yida-nav-shell`、`yida-ppt-slider` |
|
|
108
|
+
| `yida-skills/analytics` | 聚合表、虚拟视图、报表、统计、图表、Recharts、ECharts、看板、驾驶舱、大屏 | `yida-aggregate-table`、`yida-report`、`yida-rechart`、`yida-chart`、`yida-dashboard` |
|
|
111
109
|
| `yida-skills/integration` | 连接器、钉钉开放平台、外部 API、执行动作、设计器数据源、集成自动化、逻辑流 | `yida-integration`、`yida-dingtalk-openapi`、`yida-connector`、`yida-connector-safe-actions`、`yida-data-source-connectors` |
|
|
112
110
|
| `yida-skills/access` | 平台/应用/表单/页面权限、公开访问、分享 | `yida-corp-manager`、`yida-app-permission`、`yida-form-permission`、`yida-page-config` |
|
|
113
111
|
| `yida-skills/ops` | Sequence、主键冲突、VOC 反馈 | `yida-db-seq-fix`、`yida-voc` |
|
|
@@ -143,14 +141,13 @@ description: >
|
|
|
143
141
|
| 已有 `.oyd.jsx` / `renderJsx` 迁到 `YidaCodeCanvas` 组件实现 | `yida-canvas-upgrade` |
|
|
144
142
|
| 高级图表、可视化、看板图表 | 默认 `yida-rechart` |
|
|
145
143
|
| 明确 ECharts、维护旧 ECharts 页面、复杂 option 超出 Recharts 能力 | `yida-chart` |
|
|
146
|
-
|
|
|
147
|
-
| 待办、操作队列、业务工作台或办事门户页面 | `yida-canvas-custom-page`;接真实数据时加载 `yida-canvas-data-binding`,不因页面名称或辅助统计转为经营看板 |
|
|
144
|
+
| 产品化经营看板/驾驶舱交付 | `yida-dashboard` |
|
|
148
145
|
| 批量录入、表格填写、多行编辑 | 默认 `yida-canvas-table-form`;已检测到平台 JSX 组件页面、native 页面或存量源码使用 `this.utils.yida.saveFormData` 时用 `yida-table-form` |
|
|
149
146
|
| 页面视觉方向、页面美化、去 AI 味 | `yida-design` 只产出或更新 `prd/<项目名>/design.md`;若业务/页面契约也变化,由 `yida-prd` 更新 `prd.md`;实现阶段默认交给 `yida-canvas-custom-page` |
|
|
150
147
|
| 应用级主题、品牌色、全局换肤 | `yida-design` |
|
|
151
148
|
| 图片需求、搜图、生图 | `yida-image-assets`;完整应用按 `design.md.assetStrategy` 加载 |
|
|
152
149
|
| 平台左侧导航树分组/排序 | `yida-nav-group` |
|
|
153
|
-
|
|
|
150
|
+
| 应用导航隐藏后自绘导航壳 | `yida-nav-shell` |
|
|
154
151
|
| 普通报表/统计 | `yida-report` |
|
|
155
152
|
| 聚合表 / 虚拟视图的读取、预览、草稿保存或发布 | `yida-aggregate-table`;save 验证 stash revision,publish 验证 live revision |
|
|
156
153
|
| PPT 页面 | `yida-ppt-slider` |
|
|
@@ -195,9 +192,9 @@ description: >
|
|
|
195
192
|
- 不把 OpenYida 业务中间文件写到仓库根目录或系统临时目录。
|
|
196
193
|
|
|
197
194
|
20. **报表和可视化先分流**:标准统计与原生报表用 `yida-report`;定制图表页面默认用 `yida-rechart`;只有明确 ECharts、维护旧 ECharts 页面或复杂 option 超出 Recharts 能力时用 `yida-chart`。
|
|
198
|
-
21. **应用主题只有一份**:涉及应用蓝图、页面视觉、应用主题色、品牌色、全局换肤或 `--color-brand1-*` 时先读 `yida-design
|
|
195
|
+
21. **应用主题只有一份**:涉及应用蓝图、页面视觉、应用主题色、品牌色、全局换肤或 `--color-brand1-*` 时先读 `yida-design`。`app-theme.css` 只在应用级统一配置,由平台作用于应用壳、原生表单、详情页和自定义页面外层。严禁在页面级重复写入、同步或向上层注入主题样式;`YidaCodeCanvas` 源码只在 `YidaComp` 内消费现有主题 token。
|
|
199
196
|
22. **默认完成即停止**:完整应用默认以资源发布成功、轻量导航排序完成、示例数据就绪并输出一组有明确名称的应用入口与业务交付总结为 doneWhen;截图、精细导航整理和额外深读属于 optionalAfterDone,除非用户明确要求。
|
|
200
|
-
23.
|
|
197
|
+
23. **输出业务化**:对话、任务列表、步骤标题、进度和提问面向非技术用户,用“需求识别与分析”“设计页面”“搭建应用”等简短动作描述;文件名、路径、技能名和调用方式留在内部执行。PRD 业务说明、HTML 和消息使用功能与体验描述;接口参数、配置键值及内部 ID 留在 Agent 实施交接,遵循[用户可见表达契约](skills/yida-design/references/ask-human-interaction-contract.md)。最终回复先写 2-3 句业务交付总结,再给一组“应用访问入口”。不得把需求信息文件、PRD、视觉设计、build manifest、资源清单、Schema 或每个表单/流程/报表分别登记成用户可见交付物;完整应用始终给工作台入口,主页面经 PRD 标记为 `standalone` 且导航配置回读通过时增加独立业务入口,非云端 Agent 再增加开发后台入口。
|
|
201
198
|
24. **任务复盘沉淀**:用户多次纠正、平台接口假成功、页面骨架共性质量问题、线上回读验收方法、一次性脚本可产品化等情况,完成前判断是否需要沉淀到 CLI、测试或 skill。
|
|
202
199
|
|
|
203
200
|
常见问题见 [常见问题解决方案](references/execution-rules.md)。
|
|
@@ -86,7 +86,7 @@ GET https://template.aliwork.com/alibaba/web/{APP_TYPE}/query/formdesign/getSche
|
|
|
86
86
|
| 类型 | 高频组件 | 范式解释 |
|
|
87
87
|
| --- | --- | --- |
|
|
88
88
|
| 表单页 | `FormContainer`、`TextField`、`NumberField`、`DateField`、`EmployeeField`、`TableField`、`RichText` | 字段结构、公式和少量说明文本承载能力 |
|
|
89
|
-
| 自定义页 | `Div`、`Text`、`Image`、`Button`、`Dialog`、`TablePc`、`Pagination` | 列表、看板、工具页、弹窗和分页承载交互 |
|
|
89
|
+
| 自定义页 | `Div`、`Text`、`Image`、`Button`、`PageSection`、`Dialog`、`TablePc`、`Pagination` | 列表、看板、工具页、弹窗和分页承载交互 |
|
|
90
90
|
| 报表页 | `YoushuPageHeader`、`YoushuTopFilterContainer`、`YoushuSelectFilter`、`YoushuTable`、`YoushuPieChart` | 原生报表负责筛选、聚合和图表 |
|
|
91
91
|
| 流程页 | `FormContainer` + 表单字段 | 表单只承载数据,审批节点由流程规则承载 |
|
|
92
92
|
|
|
@@ -192,10 +192,6 @@ this.utils.yida.saveFormData({
|
|
|
192
192
|
});
|
|
193
193
|
```
|
|
194
194
|
|
|
195
|
-
> ⚠️ **匿名态限制**:该 API 与 `window.__OPENYIDA_YIDA_API__.saveFormData` 依赖登录态。页面运行在公开链接 `/o/...`(`FREELOGIN` / `loginUser.userId === 'FREEUSER'`)时,即使桥对象存在,调用 `saveFormData` 仍会返回 `LOGIN FAILED`;必须优先改走 `window.pageConfig.RECEIPT_SAVE_FORM_DATA` 网关,并同时满足显示页 `isOpen === 'y'`、目标表单 `isOpen === 'y'`、目标表单 DEFAULT 权限包含 `FREE_LOGIN` 三项门禁。
|
|
196
|
-
>
|
|
197
|
-
> 匿名网关使用 `POST application/x-www-form-urlencoded` 和 `X-Requested-With: XMLHttpRequest`,CSRF 优先读取 `window.g_config._csrf_token` 并作为 `_csrf_token` 参数传递。`value` 必须是字段数组,每项使用 `{ componentName, fieldId, fieldData: { value } }`;`componentName` 从目标表单 Schema 获取,标准名称见[字段定义 JSON 指南](../skills/yida-create-form-page/references/field-definition-guide.md#支持的字段类型),`fieldData.value` 的值结构见[数据格式指南](../skills/yida-data-management/references/data-format-guide.md#常见字段值格式)。这些通用字段文档不代表对应组件均支持匿名提交;匿名能力边界以公开页面实际限制和实例回读为准。不得把字段 ID 放进 `fieldData`;网关返回 `success: true` 和 `formInstId` 仍可能创建空记录,验收必须按该实例 ID 回读代表性字段值。完整分流和请求契约见 [`yida-canvas-custom-page/references/data-bridge-guide.md`](../skills/yida-canvas-custom-page/references/data-bridge-guide.md) 的"公开访问(匿名态)提交"章节。
|
|
198
|
-
|
|
199
195
|
---
|
|
200
196
|
|
|
201
197
|
### updateFormData
|
|
@@ -1,48 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-app
|
|
3
|
-
description:
|
|
3
|
+
description: 宜搭完整应用开发编排技能。对普通 OpenYida 应用做完整搭建或补齐时使用;先确认已有资源并整理用户需求,再按 Fast / Plan 生成 prd.md 与 design.md,校验通过后按 PRD 创建或复用应用、表单、流程和页面;页面 UI 按已确认设计实现,代码示例按需参考。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# yida-app
|
|
7
7
|
|
|
8
8
|
完整应用编排技能。它负责把一次“创建/搭建/补齐应用”的需求拆成资源解析、产品设计、资源落地、页面发布和结果输出。全局 CLI、ID、存储、发布和输出规则以主入口 `SKILL.md` 为准;按步骤执行该步骤所需 `use_skill(...)`。
|
|
9
9
|
|
|
10
|
-
完整应用交付默认保留开发者管理后台(CLI `adminUrl`),与业务后台区分:有前后台时共三个地址;仅前台、仅业务后台或不分前后台时共两个地址。登录态来源不影响 `/admin` 的交付;单页任务保持单页范围,用户明确排除的入口优先。详见 Step 9。
|
|
11
|
-
|
|
12
10
|
## 模式入口(先按这里路由)
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
已有任务先按 [续做与恢复](#续做与恢复) 定位当前阶段。
|
|
17
|
-
|
|
18
|
-
需求确认不能替代当前 Plan revision 的批准或工具权限确认。`intake.designMode` 沿用用户最后一次明确选择,其他问题的回答只更新对应字段。Plan 收到与当前 revision 匹配的 `confirm_build` 后进入资源实施;选择 `continue_editing` 时修改当前计划,生成新 revision 后再确认。素材进度更新不改变已有的需求确认和模式选择。
|
|
19
|
-
|
|
20
|
-
Plan 规划阶段的工作流入口只读取 `workflow/step-1-resource-context.md`、`workflow/step-2-design.md` 和精确路径 `workflow/plan/workflow.md`;后者已经包含完整 Plan 入口。禁止用 Glob 查找 Plan 文件,也不要额外读取 `workflow/plan/step-1-understand.md` 或 `workflow/plan/step-2-confirm.md`。此读取范围不限制确认后的实施、验收和交付,各阶段按需读取对应 workflow。Plan 确认恢复后,若 `explicitScope.allowInferredResources=false`,直接读取 `workflow/step-4-forms-processes.md` 实施范围内资源,不再重读 Step 1、调用 list-forms 或做应用设置预检。
|
|
21
|
-
|
|
22
|
-
## 续做与恢复
|
|
12
|
+
Plan 模式只读取 `workflow/step-1-resource-context.md`、`workflow/step-2-design.md` 和精确路径 `workflow/plan/workflow.md`;后者已经包含完整 Plan 入口。禁止用 Glob 查找 Plan 文件,也不要额外读取 `workflow/plan/step-1-understand.md` 或 `workflow/plan/step-2-confirm.md`。Plan 确认恢复后,若 `explicitScope.allowInferredResources=false`,直接读取 `workflow/step-4-forms-processes.md` 实施范围内资源,不再重读 Step 1、调用 list-forms 或做应用设置预检。
|
|
23
13
|
|
|
24
|
-
|
|
14
|
+
## 步骤模版(进行时展示给用户看的步骤)
|
|
25
15
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
## 执行步骤(进行时展示给用户)
|
|
29
|
-
|
|
30
|
-
先从已经确认的 `execution.explicitScope` 生成本轮步骤,再开始资源实施。步骤对应范围内资源和交付;资源成功回读后从内部执行队列中移除,用户待办保留并标记完成。`allowInferredResources=true` 表示完整应用交付,可使用下面的完整应用模版;`allowInferredResources=false` 表示边界已闭合,使用“需求识别与分析 / 设计功能和页面 / 确认搭建方案(Plan)+ 范围内资源步骤 + 检查范围并交付”的精简步骤。
|
|
31
|
-
|
|
32
|
-
完整应用搭建时使用对应模式的步骤名称。
|
|
16
|
+
完整应用搭建时,直接使用对应模式的步骤名称。
|
|
33
17
|
|
|
34
18
|
**Plan 模式**
|
|
35
19
|
|
|
36
20
|
1. 需求识别与分析
|
|
37
21
|
2. 设计功能和页面
|
|
38
|
-
3.
|
|
22
|
+
3. 生成PRD方案&确认
|
|
39
23
|
4. 创建应用
|
|
40
24
|
5. 搭建表单与审批流
|
|
41
25
|
6. 准备示例数据
|
|
42
|
-
7.
|
|
43
|
-
8.
|
|
44
|
-
9.
|
|
45
|
-
10. 检查功能并交付
|
|
26
|
+
7. 搭建业务页面
|
|
27
|
+
8. 发布页面与配置导航
|
|
28
|
+
9. 检查功能并交付
|
|
46
29
|
|
|
47
30
|
**Fast 模式**
|
|
48
31
|
|
|
@@ -51,18 +34,17 @@ Plan 规划阶段的工作流入口只读取 `workflow/step-1-resource-context.m
|
|
|
51
34
|
3. 创建应用
|
|
52
35
|
4. 搭建表单与审批流
|
|
53
36
|
5. 准备示例数据
|
|
54
|
-
6.
|
|
55
|
-
7.
|
|
56
|
-
8.
|
|
57
|
-
9. 检查功能并交付
|
|
37
|
+
6. 搭建业务页面
|
|
38
|
+
7. 发布页面与配置导航
|
|
39
|
+
8. 检查功能并交付
|
|
58
40
|
|
|
59
|
-
|
|
41
|
+
已有应用时,直接省略“创建应用”,不另列“复用现有应用”待办,后续步骤重新编号;无需示例数据时跳过对应步骤。步骤状态按真实进度更新,有独立输入的工作可同时进行。
|
|
60
42
|
|
|
61
43
|
用户明确把本轮交付限定为一个或若干具体表单、流程、报表或页面时,按 `explicitScope` 只保留达到该交付所需的步骤;即使需求背景使用“应用/系统”,也不自动补示例数据、自定义工作台、主题设置、导航排序或其他资源。Plan 模式仍生成并确认方案,但确认后只执行该窄范围。
|
|
62
44
|
|
|
63
|
-
若窄范围只要求创建一个普通表单并交付链接,成功的 `create-form create`
|
|
45
|
+
若窄范围只要求创建一个普通表单并交付链接,成功的 `create-form create` 结果就是本轮资源回读证据:立即交付其中的真实链接并停止。不要再调用 `get-schema`、`list-forms`、数据管理技能、示例数据、主题或导航命令,除非创建结果明确缺少 ID/链接或用户另外要求这些内容。
|
|
64
46
|
|
|
65
|
-
|
|
47
|
+
禁区:待办标题、说明和进度不出现技能名、命令、文件路径、登录账号、内部资源 ID;这些留在工具调用里。用户明确询问技术细节时再解释。
|
|
66
48
|
|
|
67
49
|
## 触发条件
|
|
68
50
|
|
|
@@ -72,7 +54,7 @@ Plan 规划阶段的工作流入口只读取 `workflow/step-1-resource-context.m
|
|
|
72
54
|
|
|
73
55
|
完整应用先分析需求;首次搭建按 yida-requirement-analysis/workflow/prepare-brief.md 确认未决事项,再进入已选 Fast / Plan。两种模式共享需求分析与 PRD 契约,以下并行生成规则用于 Fast;Plan 确认当前版本后交接派生文件,直接进入 Step 3。只有 Plan 的 build-plan.html 用于方案展示,其余设计文件保持内部使用。
|
|
74
56
|
|
|
75
|
-
以下 9
|
|
57
|
+
以下 9 步仅用于内部执行,不复制为宿主待办;用户可见的步骤名称直接使用上方“步骤模版”。每一步开始前读取对应 workflow 文件;按真实依赖满足下游输入后继续。Step 3 拿到 appType 即可启动表单创建,主题生成与设置同步作为独立分支继续,不将主题完成作为所有后续步骤的串行前置条件。无直接依赖的页面同时开发,每页只等待自身资源,独立校验并发布;全部页面完成后再统一导航排序。
|
|
76
58
|
|
|
77
59
|
| 步骤 | 名称 | 目标 | 产出 |
|
|
78
60
|
| --- | --- | --- | --- |
|
|
@@ -81,7 +63,7 @@ Plan 规划阶段的工作流入口只读取 `workflow/step-1-resource-context.m
|
|
|
81
63
|
| 3 | [创建或复用应用](workflow/step-3-create-or-reuse-app.md) | 已有 `appType` 直接复用;缺少 app 且允许创建时执行 `use_skill("yida-create-app")` | 真实目标 `appType` |
|
|
82
64
|
| 4 | [创建或更新业务资源](workflow/step-4-forms-processes.md) | 执行 `use_skill("yida-create-form-page")`;按 PRD 执行 `use_skill("yida-create-process")`、`use_skill("yida-get-schema")`、`use_skill("yida-report")` 和 `use_skill("yida-integration")` | 真实 `formUuid`、`processCode`、必要 `fieldId/reportId` |
|
|
83
65
|
| 5 | [写入初始表单数据](workflow/step-5-seed-records.md) | 执行 `use_skill("yida-data-management")`,为核心普通表单写入 1-3 条业务化 seed records 并 query 抽查 | 真实表单记录或明确跳过原因 |
|
|
84
|
-
| 6 | [创建或复用主页面](workflow/step-6-main-page.md) | 已有 display
|
|
66
|
+
| 6 | [创建或复用主页面](workflow/step-6-main-page.md) | 已有 display 页面直接复用;缺少主页面且允许创建时执行 `use_skill("yida-create-page")` | 真实主页面 `formUuid` |
|
|
85
67
|
| 7 | [编写或更新页面](workflow/step-7-page-code.md) | 按 `design.md.assetStrategy` 加载素材、页面、看板和数据绑定技能 | 素材状态明确;页面源码和 dataBinding 通过校验 |
|
|
86
68
|
| 8 | [发布页面并排序导航](workflow/step-8-publish-navigation.md) | 执行 `use_skill("yida-publish-page")`,发布本轮源码到主页面并执行轻量导航排序 | 已发布主页面 URL |
|
|
87
69
|
| 9 | [输出与收尾](workflow/step-9-output-finish.md) | 核对完成条件,按业务语言输出结果 | 2-3 句业务总结 + 一组应用访问入口 |
|
|
@@ -90,25 +72,23 @@ Plan 规划阶段的工作流入口只读取 `workflow/step-1-resource-context.m
|
|
|
90
72
|
|
|
91
73
|
## 核心规则
|
|
92
74
|
|
|
93
|
-
素材准备先核实宿主后台 Agent 与后台 Bash 能力。按 materialize.assetTasks[].executionContract 派发后立即继续主流程;QwenWork 核实 Bash.run_in_background 后可后台执行脚本步骤。只有同步工具时先做已授权资源及独立页面工作,再分批素材,禁止将整包素材前置。仅在对应页面接图/验收时等待该页结果;执行记录按 [并行执行](workflow/parallel-work.md) 汇总校验。
|
|
94
|
-
|
|
95
75
|
1. **资源判断以 Step 1 为准**:已有 app/page/form/process 默认复用;只有用户明确从零创建,或目标缺失且本轮允许创建时,才创建缺失资源。
|
|
96
76
|
2. **显式目标优先**:本轮用户给出的 `appType`、`formUuid`、URL、页面名或流程标识,优先级高于绑定上下文和历史缓存;同级冲突或无法唯一识别时才问用户。
|
|
97
|
-
3. **产品与视觉分工**:`yida-requirement-analysis` 先统一整理用户需求;业务目标、资源蓝图、页面结构、导航顺序和验收标准由 `yida-prd` 写入 `prd.md
|
|
77
|
+
3. **产品与视觉分工**:`yida-requirement-analysis` 先统一整理用户需求;业务目标、资源蓝图、页面结构、导航顺序和验收标准由 `yida-prd` 写入 `prd.md`;主题 token、布局、材质、圆角、密度、组件和状态规则由 `yida-design` 写入 `design.md`。两份文件校验通过前不得创建资源。
|
|
98
78
|
4. **阶段技能按需加载**:进入应用壳、表单、流程、页面、发布、数据写入等阶段时,才执行对应 `use_skill(...)`。
|
|
99
79
|
5. **真实 ID 和真实数据**:不编造 `appType`、`formUuid`、`fieldId`、`processCode`、`reportId`。无显式窄范围的完整应用默认给核心普通表单写入 1-3 条业务化 seed records 并 query 抽查;`explicitScope.allowInferredResources=false` 时不得增加未点名的 seed records 或页面。
|
|
100
|
-
6. **自定义页面开发技能固定**:完整应用页面源码按 Step 7
|
|
80
|
+
6. **自定义页面开发技能固定**:完整应用页面源码按 Step 7 执行。
|
|
101
81
|
7. **删除必须确认**:用户要求删除应用时,先展示应用名称、应用 ID 和影响范围,等待明确“确认删除”后才能执行。
|
|
102
|
-
8.
|
|
82
|
+
8. **列表页选择**:默认使用普通表单的数据管理页;用户明确要求自定义列表页时才创建 display 页面。
|
|
103
83
|
9. **交付物收口**:Step 2 的三个文件和 Step 9 的 build manifest 都是内部文件,不是用户交付物。表单、流程、报表和页面只在业务总结中概述,不逐项生成用户可见附件;宿主支持交付工具时,final 只交付一次“应用访问入口”组。
|
|
104
|
-
10.
|
|
84
|
+
10. **窄范围停止点**:完成 `explicitScope` 中的资源回读与真实链接交付后立即停止;不得为了满足完整应用默认完成条件继续进入被裁剪的 Step 5-8。
|
|
105
85
|
|
|
106
86
|
## 关键决策树
|
|
107
87
|
|
|
108
88
|
- 需要收集或存储数据:先创建或复用核心普通表单,再生成页面;纯展示或静态内容可跳过表单创建。
|
|
109
89
|
- 需要审批、申请、审核、工单流转:先创建或复用流程表单,再生成页面。
|
|
110
90
|
- 需要标准统计:优先创建原生报表;明确高级图表或大屏时,再选择 `yida-rechart` / `yida-chart`。
|
|
111
|
-
-
|
|
91
|
+
- 主页面语义为看板、工作台、驾驶舱或 Dashboard:必须加载 `yida-dashboard`;页面读取任何表单业务数据时必须继续加载 `yida-canvas-data-binding`,不能只加载 `yida-canvas-custom-page`。
|
|
112
92
|
- PRD 明确包含报表或集成自动化时,它们属于 Step 4 主流程资源,不得推迟到 final 后置建议;自动化动作必须按通知、数据新增/更新、审批完成、定时或手动触发分别建模,不得统一退化成新增通知。
|
|
113
93
|
|
|
114
94
|
## 页面数据契约
|
|
@@ -116,14 +96,14 @@ Plan 规划阶段的工作流入口只读取 `workflow/step-1-resource-context.m
|
|
|
116
96
|
- 默认页面源码不得使用 `this.dataSourceMap.*`,除非本轮已经创建并绑定对应设计器数据源。
|
|
117
97
|
- 真实表单数据默认通过页面数据桥或 `window.__OPENYIDA_YIDA_API__.searchFormDatas(params)` 读取;流程发起、流程列表、表单保存/更新等能力也通过发布层注入的同一个 yida API 桥调用;不要用前端 seedRows 冒充真实表单数据。
|
|
118
98
|
- 页面根级运行态工具通过 `window.__OPENYIDA_UTILS__` 读取,`toast/dialog/openPage/router.push/isMobile` 等工具不能在 `YidaComp` 内直接写 `this.utils.*`。
|
|
119
|
-
-
|
|
99
|
+
- 表单新建/提交/详情入口统一使用 `FormOpenContainer`,详情页必须从真实行数据解析 `formInstId`。
|
|
120
100
|
- 用户明确要求的自定义列表、看板和详情页优先读取真实表单数据;`page-spec.json` 写 `dataBinding.mode=form`、真实 `appType/formUuid/fieldId` 和字段映射。表单数据管理页不另生成页面源码。
|
|
121
101
|
- 完整应用默认先写入 1-3 条业务化 seed records 并 query 抽查;没写入成功时,页面展示空态、表单入口、刷新或登记按钮,并在 final 说明原因。
|
|
122
102
|
- 若页面确实依赖 `this.dataSourceMap.*`,必须执行 `use_skill("yida-data-source-connectors")` 创建/绑定数据源,并在发布后确认页面 Schema 中存在对应数据源;发布输出出现 `No custom page data sources to preserve` 时,本次发布不能视为完成。
|
|
123
103
|
|
|
124
104
|
## 完成条件
|
|
125
105
|
|
|
126
|
-
按 [Step 9:输出与收尾](workflow/step-9-output-finish.md)
|
|
106
|
+
按 [Step 9:输出与收尾](workflow/step-9-output-finish.md) 核对完成条件。完整应用默认完成点除资源和发布外,还要求已知非空的数据源在主页面显示至少一个一致的 KPI 数量或业务记录;页面全 0、空列表或数据绑定未验证时不得宣称完成。只有 `verdict=pass` 且运行态数据证据通过时才能说“已按 PRD 完成搭建”。
|
|
127
107
|
|
|
128
108
|
## 参考文件
|
|
129
109
|
|
|
@@ -139,6 +119,3 @@ Plan 规划阶段的工作流入口只读取 `workflow/step-1-resource-context.m
|
|
|
139
119
|
| [Step 8:发布页面并排序导航](workflow/step-8-publish-navigation.md) | publish、导航排序、发布完成证据 | 必读 |
|
|
140
120
|
| [Step 9:输出与收尾](workflow/step-9-output-finish.md) | final 口径、URL 规则、可选后置、错误处理 | 必读 |
|
|
141
121
|
| [常见问题解决思路](references/common-issues.md) | 资源冲突、字段 ID、seed records、页面数据、发布失败、输出口径等高频问题 | 遇到异常或执行结果不符合预期时 |
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
应用整体设计可使用[应用风格模板或自由创意](../yida-design/references/application-style-library.md)。导航、自定义页面、表单与详情继承同一设计语言;自由创意从业务推演,不强制选模板。模板中的表单布局 JSON 提供结构起点,使用时填入真实字段并核对间距和响应式。
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
| 需求分析 | 读取互不依赖的附件、已知资源与品牌资料 | 汇总事实后,统一询问未决事项 |
|
|
8
8
|
| 需求确认后 | 业务对象、字段、流程与页面规划;基础主题、配色、token 与素材策略 | 页面任务和区块确定后,补齐各页设计 |
|
|
9
9
|
| 计划或主题确认后 | 立即生成主题 CSS(Plan 已有 outputs.theme 时直接复用);按已确认业务创建应用、表单并编写页面 | CSS 不依赖 appType 或表单;应用就绪后即可创建表单;appType 与 CSS 都就绪就立即更新主题设置 |
|
|
10
|
-
| 图片要求就绪(Plan 已确认) | 搜图与创建应用、表单、页面同时推进;有图页面先做布局和交互,同页各图片位置并发搜索 | 每页草稿就绪即检查直链;上传时使用真实 appType;图片只在所属页面接图和验收时汇合 |
|
|
11
10
|
| 表单创建 | 无依赖表单通过 `create-form batch` 同时创建、回读 | 关联表单和真实字段就绪后创建依赖表单;全部页面开发并发布完成后由主流程统一导航排序 |
|
|
12
|
-
| 页面创建或复用后 | 取得 formUuid
|
|
11
|
+
| 页面创建或复用后 | 取得 formUuid 即隐藏所需页面导航并回读;同时编写该页面代码 | 代码开发不等待配置请求,发布后核对 isRenderNav 未被改变 |
|
|
13
12
|
| 页面实现 | 无直接依赖的页面同时开发、编译和检查,各自就绪后发布 | 每页只等待自身所需的真实资源;全部页面完成后统一排序与最终验收 |
|
|
14
13
|
| 发布后 | 独立页面的只读配置与数据回读 | 主流程汇总结果,再完成应用级验收 |
|
|
15
14
|
|
|
@@ -19,20 +18,12 @@
|
|
|
19
18
|
|
|
20
19
|
- 用户确认计划或主题,且主色、导航明暗与相关 token 已确定,即可开始生成应用主题 CSS;不等待表单字段、页面源码或页面发布。已有符合当前确认版本的 CSS 直接复用。
|
|
21
20
|
- 取得真实 `appType` 后,表单创建与主题生成/上传并行;页面按已确认的设计和 token 契约开发,不等待主题上传结束。业务资源仍遵守已有的方案确认和资源创建条件。
|
|
22
|
-
- `appType + 当前已确认的 CSS + 已确定的导航配置` 就绪后,立即执行一次 `update-app --theme-file`,同步 `colour=custom`、从 CSS 提取的 `themeColor`、`customThemeStyle`、`navTheme`、`layoutDirection`、Logo 来源及导航显隐。其中已确认的应用导航隐藏通过 `--hide-app-nav`
|
|
21
|
+
- `appType + 当前已确认的 CSS + 已确定的导航配置` 就绪后,立即执行一次 `update-app --theme-file`,同步 `colour=custom`、从 CSS 提取的 `themeColor`、`customThemeStyle`、`navTheme`、`layoutDirection`、Logo 来源及导航显隐。其中已确认的应用导航隐藏通过 `--hide-app-nav` 同步保存,不等待页面创建或开发完成。页面级隐藏独立依赖各页真实 `formUuid`,创建/复用成功就执行 `update-form-config` 并回读,可与源码开发并行。
|
|
23
22
|
- 同一应用的基础设置由主流程单一任务写入;主题上传、导航配置和其他设置更新不能并发覆盖。表单/页面资源的独立写入可继续并行。
|
|
24
23
|
- 生成 CSS 的任务独占主题文件;上传使用已完整写入的版本,不上传仍在修改的文件。主题确认内容变化后,只重做受影响的 CSS 和设置同步,不让旧任务覆盖新版本。
|
|
25
24
|
- 主题同步失败只重试主题分支,其他资源开发继续;视觉验收与最终交付必须汇合 `themeVerification.verified=true` 的结果,不能在主题未生效时报告视觉完成。不要把汇合检查误作“到收尾时才开始更新主题”。
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
## 素材与页面同时推进
|
|
30
|
-
|
|
31
|
-
1. Plan 当前方案确认后,先核实宿主 background_agent/background_shell 和实际工具参数,再按物化结果 `assetTasks[].executionContract` 选择真后台 Agent、后台 Bash 或业务优先同步批次;Fast 从 `design.md.assetStrategy` 建立同样任务。按 [后台启动与接收](../../yida-image-assets/SKILL.md#后台启动与接收) 记录真实任务编号、页面、输出和截止时间,复用已有任务。后台派发成功后主流程立即继续创建应用、表单和页面。只有同步 Agent 时禁止整包素材前置:先做已授权资源创建/复用、范围内种子、无图页面及图页布局,再分批素材。QwenWork 若实际 Bash 支持 run_in_background,则用于可脚本化步骤;看图判断仍使用可看图的工具。
|
|
32
|
-
2. 同页的各图片位置也是独立搜索任务。按宿主允许的并发能力同时发起,整次采集共用最多四个在途搜索,完成一个就补下一个;批量调用需实际同时发出请求。每个位置仍只选一张图,最多两轮。只有串行工具时按位置执行并记录限制。
|
|
33
|
-
3. 任务先读取已有页面清单,复用符合当前用途与尺寸要求的 final 图片,继续剩余位置和轮次。搜索任务返回选图及来源信息,由该页唯一写入者组装草稿。每页使用 `assetTasks` 返回的 draft/manifest 路径;草稿就绪即执行 resolve.argv;需要上传时追加 uploadArgs,并填入真实 appType。页内图片由 CLI 并发检查,允许外链就直接交付,需托管时再上传。
|
|
34
|
-
4. 无图页面照常开发;有图页面先做布局、文字、真实数据绑定和交互,当前页接图前读取素材结果。仍在运行时先做其他独立工作,确需图片时只等待所属页;真实图片到位后核对裁切、清晰度和整体效果,再发布。
|
|
35
|
-
5. 记录工具名、后台参数、真实任务编号、派发返回时间,以及素材与业务任务的开始/结束时间;开始早于素材结束不足以证明并行,还需区间确实相交。收尾把 assetTasks、taskState 和 businessWork 汇总进 build-manifest,check-prd-completeness 会标记证据缺失、伪后台或同步路径素材前置为 needs_review。资源或宿主限制记录具体原因;仅回读记录不等于独立核实宿主执行。
|
|
26
|
+
导航排序是所有页面开发、发布和资源创建后的汇合任务,不与它们并行;每个页面发布时不附带 `--auto-nav-order`,主流程最后按 PRD 执行一次 `order` 或 `auto-order`。应用主题更新和页面导航隐藏仍按前述时机提前执行,不随排序一起推迟。
|
|
36
27
|
|
|
37
28
|
## 页面按实际依赖并行
|
|
38
29
|
|
|
@@ -52,12 +43,12 @@
|
|
|
52
43
|
|
|
53
44
|
标准 Plan 首版采用一次收齐:业务任务完成一个 `business.json`,视觉直接复用 init 根据已确认选择生成的 `visual.json`,随后合并物化。这样首版只等待一次模型规划。品牌稿、参考图、页面级特殊视觉或明确的视觉精修要求命中时,才由视觉任务更新 `visual.json`;超大需求需要展示中间进展时才使用 [按模块更新方案](incremental-preview.md),全部完成后再用 `materialize --from-preview` 汇总校验。
|
|
54
45
|
|
|
55
|
-
|
|
46
|
+
init 返回的 `materialize.command` 是标准首版唯一生成命令。执行成功后直接使用其 `outputs.html` 和 `revision` 展示确认,不通过 `--from-preview`、preview、Glob 或额外 Read 探测产物;确认后不再物化或 patch。`explicitScope.allowInferredResources=false` 时,完整主题仍可作为 Plan 展示的一部分,但不进入应用设置、导航或发布执行。
|
|
56
47
|
|
|
57
48
|
`design-plan init` 返回 `parallelTasks` 和两个片段文件:
|
|
58
49
|
|
|
59
50
|
- `business.json`:init 已预填业务骨架,业务任务必须先读后写,保留 base;facts 只能填写 overview、dataModels、businessFlows、pages 和可选 execution,禁止加入 visualStyle。一次补齐所有普通表单的 sampleDataPlan(不造数写 skipReason)和所有自定义页面的 permissionSummary,完成后设 ready=true。可选 meta 仅填写 businessDomain、experienceTopology。
|
|
60
|
-
- `visual.json`:init
|
|
51
|
+
- `visual.json`:init 根据需求阶段原子保存的 `visualSelection` 写入 facts.visualStyle;主色、方向和导航明暗完整时设 `ready=true`,否则保持未就绪并返回 `visual-selection` 任务,只补充缺失选择。标准页面的完整主题和页面场景规则由 CLI 补齐。只有命中特殊视觉条件时,视觉任务才按业务页面更新项目差异与 `pageApplications`。
|
|
61
52
|
|
|
62
53
|
两个文件的 base 由 CLI 生成,保留原值;任务读取同一份需求、草稿和主题上下文。业务片段完成后保持稳定,变更时通知视觉任务重新核对页面设计。
|
|
63
54
|
|
|
@@ -71,7 +62,7 @@ openyida design-plan materialize prd/<项目名>/build-plan.json \
|
|
|
71
62
|
|
|
72
63
|
CLI 校验片段完成状态、来源版本、字段职责和页面对应关系,统一写入源计划、三份文档和主题 CSS。失败时保留原文件;合并成功后,后续修改使用当前计划的 patch 流程。
|
|
73
64
|
|
|
74
|
-
Fast 的业务与基础视觉同样并行,分别维护 PRD 和设计文件;页面内容确定后补齐各页设计,再由主流程核对交接。Plan
|
|
65
|
+
Fast 的业务与基础视觉同样并行,分别维护 PRD 和设计文件;页面内容确定后补齐各页设计,再由主流程核对交接。Plan 标准首版不沿用这组三段等待关系。
|
|
75
66
|
|
|
76
67
|
## 耗时记录
|
|
77
68
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Plan 输入:已确认需求
|
|
2
2
|
|
|
3
|
-
复用 `.cache/openyida/<项目名>/requirement-brief.json`。首次搭建检查 `intake.confirmed=true`,搭建方式为 Plan
|
|
3
|
+
复用 `.cache/openyida/<项目名>/requirement-brief.json`。首次搭建检查 `intake.confirmed=true`,搭建方式为 Plan;来源中的详细计划、页面范围、导航与风格保持已确认结果。
|
|
4
4
|
|
|
5
5
|
新发现的业务缺口交回 [需求分析](../../../yida-requirement-analysis/workflow/prepare-brief.md) 补齐;一般字段与实现细节在已确认范围内规划。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Plan 规划入口
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
首次搭建的范围、导航和风格已在 [需求分析](../../../yida-requirement-analysis/workflow/prepare-brief.md) 确认,本步骤复用回答。
|
|
4
4
|
|
|
5
5
|
将同一份 brief 和已选视觉交给业务与视觉技能。业务按已确认范围规划资源、页面与导航顺序;视觉先准备主题、token 和素材策略,收到页面任务、区块和 sceneKey 后完成逐页应用。
|
|
6
6
|
|