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
|
@@ -1,114 +1,91 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-image-assets
|
|
3
3
|
description: >
|
|
4
|
-
|
|
4
|
+
宜搭页面需要图片时使用。根据设计槽位选图、上传宜搭图片附件、补齐失败项,输出可按页面使用的 asset-manifest.json。
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# 准备页面图片
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
输入是 `design.md.assetStrategy`,输出是 `prd/<项目名>/asset-manifest.json`。按已有设计准备图片,不改业务需求和视觉方案。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## 后台启动与接收
|
|
14
|
-
|
|
15
|
-
**先判宿主能力,再决定执行方式,不能把同步 Agent 调用当成后台任务。** 复用 `agent-capabilities --summary-json` 的 `asset_capabilities.background_agent/background_shell/execution`,对照本轮真实工具参数和结果接收能力;宿主名称、任务标题和“并行”话术都不是证据。
|
|
16
|
-
|
|
17
|
-
| 当前实际能力 | 执行方式 |
|
|
18
|
-
| --- | --- |
|
|
19
|
-
| Agent 支持非阻塞后台派发,立即返回可查询任务编号 | 后台采集该页素材,主流程立即继续业务 |
|
|
20
|
-
| Agent 只有同步调用,但 Bash 支持后台执行 | 可脚本化步骤用后台 Bash;宿主专有搜图、生图、看图判断留在前台分批处理,不整包交给同步 Agent |
|
|
21
|
-
| 两种后台能力均不可用或未能验证 | 先做已获授权的应用/表单创建或复用、范围内种子数据、无图页面及有图页面布局交互,再分批素材;批次间继续独立工作,记录限制 |
|
|
22
|
-
|
|
23
|
-
QwenWork 优先检查实际 Bash 工具是否提供 `run_in_background`;支持时这是 **Bash 工具参数**,不是 `openyida` CLI 参数。用它后台执行已具备命令入口的搜索、允许的下载上传、`asset resolve`。从 `assetTasks.resolve.argv` 构造命令,路径按实际 shell 正确引用;上传填真实 appType。保存工具返回的任务编号、日志/清单路径和派发返回时间后立刻继续主流程,不紧接着调用等待工具。到所属页面接图时再读取任务状态、退出码和清单;退出码 2 表示仍有素材缺口,不能当成功。宿主若只有轮询就按需查询,不承诺自动通知。
|
|
24
|
-
|
|
25
|
-
Bash 不能直接执行仅 Agent 可用的搜图/生图/看图工具。后台 shell 只证明可脚本化部分异步,不能据此宣称整条采集链都在后台。普通命令末尾加 `&` 或看到 PID 不足以证明任务能跨工具调用存活、收取结果和取消。只有真实工具核实后才设置 `OPENYIDA_AGENT_BACKGROUND_AGENT` / `OPENYIDA_AGENT_BACKGROUND_SHELL` 为 1/0;未知保持 unknown,CLI 不凭 QwenWork 名称自动放行。
|
|
11
|
+
`asset resolve` 负责下载和上传图片,不负责搜索或生图。搜索、生图、看图由当前宿主工具完成。
|
|
26
12
|
|
|
13
|
+
## 1. 确定哪些页面需要图片
|
|
27
14
|
|
|
28
|
-
|
|
29
|
-
2. **记录**:编排负责维护 `taskState`,记录 `taskKey`、`pageId`、`hostTaskId`、`executionMode`、`toolName`、`backgroundOption`、`dispatchReturnedAt`、`status`、`startedAt`、`endedAt`、`firstSearchAt`、`deadlineAt`、各位置已用轮次及输出路径。状态使用 `pending/running/completed/partial/failed`;真实启动后才记为 `running`。executionMode 使用 background_agent/background_shell/synchronous;同步时记录 fallbackReason,复用 final 图片记录 reused 和 reuseEvidence。主流程另外记录 businessWork 的真实 startedAt/endedAt(含时区),收尾汇总至 build-manifest.assetExecution。采集任务独占该页草稿和清单,每轮开始及结束时向编排报告轮次和进度,编排统一保存任务记录。Fast 使用同样规则,任务记录位于页面清单旁的 `<pageId>.task.json`,`taskKey` 使用清单绝对路径。
|
|
30
|
-
3. **复用**:按 `taskKey` 找已有任务,结合宿主状态核对是否仍在运行;运行中接收原任务,已完成则读取清单。恢复中断任务时沿用已用轮次和原截止时间,并核对图片用途、尺寸和当前设计。设计变化时先终止旧任务,确认退出后再交接文件写入权。
|
|
31
|
-
4. **接收**:主流程在当前页接图前读取一次结果;仍在运行时先完成其他独立工作,确需结果时使用宿主等待工具。按该页清单验收真实图片,再发布页面。`completed` 表示清单检查通过,`partial` 表示仍有必需图片缺口;宿主任务结束后由编排回读清单再更新状态。
|
|
15
|
+
读取 `assetStrategy.pages[]`,按 `pageId` 找页面,按 `slotId` 找图片位置。
|
|
32
16
|
|
|
33
|
-
|
|
17
|
+
| imageNeed | 常见页面 | 怎么做 |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `required` | 品牌、营销、商品目录、菜单、封面、作品展示 | 准备设计要求的图片;缺图时该页面保持草稿 |
|
|
20
|
+
| `beneficial` | 门户、工作台、知识库、引导页、空态 | 有槽位就准备图片;没有槽位则跳过 |
|
|
21
|
+
| `none` | 表单、审批、财务、权限、设置、CRUD 台账、统计 | 跳过素材采集,使用图标、图表和排版 |
|
|
34
22
|
|
|
35
|
-
|
|
23
|
+
完整应用必须有设计槽位。设计缺失时交回 `yida-design` 补齐,不用空清单代替。多个图片位置使用不同的 `slotId`;`count > 1` 的展开规则见 [清单契约](references/manifest-contract.md)。
|
|
36
24
|
|
|
37
|
-
|
|
25
|
+
## 2. 检查当前能用的工具
|
|
38
26
|
|
|
39
|
-
|
|
40
|
-
| --- | --- |
|
|
41
|
-
| `required` | 准备设计要求的图片;缺必需图片时该页保持草稿 |
|
|
42
|
-
| `beneficial` | 有图片位置就准备,没有则跳过 |
|
|
43
|
-
| `none` | 直接使用图标、图表和排版 |
|
|
27
|
+
运行 `openyida agent-capabilities --summary-json`,分别查看 `online_search`、`image_search`、`image_generation`。
|
|
44
28
|
|
|
45
|
-
|
|
29
|
+
- `unavailable`:跳过这项能力。
|
|
30
|
+
- `unknown` 或 `requires_host_tool_inventory_check=true`:检查当前宿主工具清单。
|
|
31
|
+
- `available`:使用实际存在的对应工具;若工具不存在,按不可用处理。CLI 的运行环境默认值不能代替工具调用结果。
|
|
46
32
|
|
|
47
|
-
|
|
33
|
+
没有搜图或生图能力时,使用用户已提供的素材;仍缺图就记录缺口,继续不依赖这些图片的页面。
|
|
48
34
|
|
|
49
|
-
|
|
35
|
+
## 3. 选图并查看
|
|
50
36
|
|
|
51
|
-
|
|
52
|
-
- `unknown` 或 `requires_host_tool_inventory_check=true`:查看宿主实际工具清单。
|
|
53
|
-
- `available`:使用实际存在的工具;工具缺失则按不可用处理。
|
|
37
|
+
按以下顺序准备每个槽位:
|
|
54
38
|
|
|
55
|
-
|
|
39
|
+
1. 用户提供的本地图片或图片链接,记录 `source=user`。
|
|
40
|
+
2. 从 **Unsplash / Pexels** 搜索,记录 `source=search`。图库采集仅支持这两个网站。
|
|
41
|
+
3. 槽位允许生成、且宿主有生图工具时生成图片,记录 `source=generated`、`isIllustrative=true`。
|
|
42
|
+
4. 仍无合适图片时保留缺口。可用中性占位说明缺图,但不能把占位记为已完成素材。
|
|
56
43
|
|
|
57
|
-
|
|
44
|
+
查看实际图片,确认内容、比例、清晰度和主体位置适合槽位。商品、房源、人员、案例图片表达业务事实,不能用生成图冒充真实对象。
|
|
58
45
|
|
|
59
|
-
|
|
46
|
+
采集图库素材前读 [来源规则](references/source-policy.md):图库图片保留来源页、摄影师、许可、署名和真实下载动作记录。只选择允许下载和转存的图片。不编造图片 URL、来源或下载记录。
|
|
60
47
|
|
|
61
|
-
|
|
62
|
-
2. **第二轮**:只补第一轮失败的必需位置,每个位置换一张;允许示意图时可改用生图。
|
|
63
|
-
3. **结束**:可选位置用设计允许的无图布局,必需位置保留缺口。用户后续明确要求补图时再继续。
|
|
48
|
+
## 4. 写草稿并上传
|
|
64
49
|
|
|
65
|
-
|
|
50
|
+
按 [清单契约](references/manifest-contract.md) 写 `manifest-draft.json`。每项填写 `slotId`、`input`、`source`、`alt` 和对应来源信息;尺寸由 CLI 实际读取,不靠手填宽高通过校验。
|
|
66
51
|
|
|
67
|
-
|
|
52
|
+
```bash
|
|
53
|
+
openyida asset resolve --input <草稿> --manifest <asset-manifest.json> --design <design.md> --app-type <真实appType> --json
|
|
54
|
+
```
|
|
68
55
|
|
|
69
|
-
|
|
56
|
+
上传前需要有效宜搭登录态和目标应用 `appType`。已有应用直接使用;尚未创建应用时先选图、保存草稿,等应用创建后再执行上传。不编造 appType。省略 `--app-type` 时 CLI 读取当前项目 `config.json.appType`。
|
|
70
57
|
|
|
71
|
-
|
|
58
|
+
默认按以下规则落地,不需要配置自有 CDN,也不需要加 `--upload-assets`:
|
|
72
59
|
|
|
73
|
-
|
|
60
|
+
1. **不超过 20 MiB(20 × 1024 × 1024 字节)**:外链先下载,本地图直接使用;通过宜搭 `ImageField` 附件上传,取得公开图片链接后直接写入清单,不再额外请求原图或上传地址做可用性校验。
|
|
61
|
+
2. **超过 20 MiB**:外链保留原始 `input` 链接,不上传。CLI 检查响应大小和实际下载大小;下载中超过限制立即停止并清理临时文件。
|
|
62
|
+
3. **大于限制的本地图**:没有原始外链可回退,保持 `draft`;补原始图片 URL 或换成较小图片。
|
|
63
|
+
4. **下载失败**:跳过该素材,不重试、不上传、不回退失败外链;记录缺口,需要时换图。登录或上传失败同样记录缺口,不把临时签名链接当公开链接。
|
|
74
64
|
|
|
75
|
-
|
|
65
|
+
`--design` 核对全部设计槽位、页面归属和最小尺寸。漏项自动成为缺口,重复或未声明的槽位会报错。格式和尺寸从本次下载内容读取,来源从草稿记录读取,不额外联网校验。
|
|
76
66
|
|
|
77
|
-
|
|
67
|
+
## 5. 处理结果和补图
|
|
78
68
|
|
|
79
|
-
|
|
69
|
+
- 退出码 `0`:本次清单为 `final` 或 `none`。
|
|
70
|
+
- 退出码 `2`、`ASSET_MATERIAL_NOT_FINAL`:清单已写入,但仍有缺口。读取 `gaps`,只修失败项;其他错误先修参数或输入文件。
|
|
71
|
+
- 缺原图就补 `input`,尺寸不够就换图,缺来源信息就补真实记录;不要手动改状态为 `final`。
|
|
80
72
|
|
|
81
|
-
|
|
73
|
+
修改上次清单中的失败项后重跑:
|
|
82
74
|
|
|
83
75
|
```bash
|
|
84
|
-
openyida asset resolve --input asset-
|
|
76
|
+
openyida asset resolve --input asset-manifest.json --manifest asset-manifest.json --design design.md --app-type <真实appType> --json
|
|
85
77
|
```
|
|
86
78
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
允许外链的图片经格式和尺寸检查后直接使用。用户或生成的外链经核实后填 `hotlinkAllowed=true`;本地图片和需托管的图片在允许转存时上传,最大 20 MiB。上传失败时保留已验证且允许外链的原地址。访问失败的图片记录缺口,按两轮规则换图。
|
|
90
|
-
|
|
91
|
-
## 5. 处理结果
|
|
92
|
-
|
|
93
|
-
- 退出码 `0`:清单为 `final` 或 `none`。
|
|
94
|
-
- 退出码 `2`、`ASSET_MATERIAL_NOT_FINAL`:清单已保存,按 `gaps` 找缺口。
|
|
95
|
-
- 其他错误:按错误修正参数或文件。
|
|
96
|
-
|
|
97
|
-
第二轮修改失败位置的 `input`,将该页清单同时作为 `--input` 和 `--manifest`。CLI 在原图内容未变时复用附件链接。字段、尺寸及错误处理见清单契约。
|
|
79
|
+
清单保留原始输入和尺寸要求。CLI 在原图内容未变时直接复用已有宜搭附件链接,不额外联网探测。更换素材时修改 `input`,不要只修改输出 `url`。`--offline` 不联网、不上传,离线处理的图片仍保持草稿。
|
|
98
80
|
|
|
99
81
|
## 6. 交给页面使用
|
|
100
82
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
- `final`:该页可继续,只使用 `assets[].materialStatus=final` 的图片 URL。
|
|
104
|
-
- `draft`:该页缺必需图片;剩余轮次内补图,用尽则保留缺口,其他页面继续。
|
|
105
|
-
- `none`:该页直接继续。
|
|
106
|
-
|
|
107
|
-
可选图片失败时采用设计允许的无图布局。根状态只表示当前清单的整体结果。
|
|
83
|
+
读取 `pages[]` 中当前 `pageId` 的 `materialStatus`:
|
|
108
84
|
|
|
109
|
-
|
|
85
|
+
- `final`:当前页面可继续;只使用该页 `assets[]` 中 `materialStatus=final` 的图片 URL。
|
|
86
|
+
- `draft`:当前页面仍缺必需素材,先补图。
|
|
87
|
+
- `none`:当前页面没有图片槽位,直接继续。
|
|
110
88
|
|
|
111
|
-
|
|
112
|
-
- **Fast**:直接更新文档中的素材进度。
|
|
89
|
+
根级 `materialStatus` 表示全部素材是否齐备。它是 `draft` 时,已为 `final` 的页面仍可继续。`required=false` 的槽位失败不阻塞页面,但该图片不能使用;采用设计允许的无图布局。
|
|
113
90
|
|
|
114
|
-
|
|
91
|
+
交付时说明:哪些页面已就绪、哪些页面缺图、每个缺口需要补什么。上传成功后,仍要确认图片内容适合页面。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 设计槽位
|
|
4
4
|
|
|
5
|
-
Fast 和 Plan
|
|
5
|
+
Fast 和 Plan 都在 `design.md` 的 frontmatter 中写一行 JSON 格式的 `assetStrategy`。例如:
|
|
6
6
|
|
|
7
7
|
```yaml
|
|
8
8
|
---
|
|
@@ -10,108 +10,78 @@ assetStrategy: {"pages":[{"pageId":"home","imageNeed":"required","slots":[{"slot
|
|
|
10
10
|
---
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- 每个位置一张图,`count` 省略或填 `1`。旧计划的 count>1 仍展开为独立位置。
|
|
15
|
-
- `required` 默认 true;设计允许无图布局时可设 false。
|
|
16
|
-
- `minSize` 为 `宽x高`,也可填非负整数 `minWidth/minHeight`。CLI 使用设计和草稿中较高的尺寸要求。
|
|
17
|
-
- `generationAllowed=false` 只接受真实素材。
|
|
18
|
-
- `imageNeed=none` 省略 slots 时 CLI 补空数组;required/beneficial 页面显式填写 slots。Plan 生成方案时即校验位置、用途和尺寸;required 页面空 slots 时保持 draft。
|
|
13
|
+
实际文件保留原有主题等 frontmatter 字段。CLI 的 `--design` 读取这行 JSON;不要改成多行 YAML 对象。
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
`input` 使用实际本地文件或 HTTP(S) 图片地址。相对路径基于命令工作目录,跨目录处理使用绝对路径。NOT_FOUND 返回 resolvedPath 与 baseDir,核对实际查找位置后修正 input;这类文件路径修正直接重跑该页素材任务。
|
|
27
|
-
|
|
28
|
-
| source | 来源字段 |
|
|
29
|
-
| --- | --- |
|
|
30
|
-
| user | 保留用户图片的用途 |
|
|
31
|
-
| generated | isIllustrative=true,查看实际图片 |
|
|
32
|
-
| search | provider=unsplash 或 pexels,填写 sourcePage、creator、license、attribution |
|
|
33
|
-
| Unsplash 搜索结果 | 实际完成下载动作记录后填写 downloadLocation、downloadTracked=true |
|
|
34
|
-
|
|
35
|
-
### 来源与授权留证
|
|
15
|
+
- 每页必须有唯一 `pageId`、`imageNeed` 和 `slots` 数组;每个槽位必须有唯一 `slotId` 和 `usage`。
|
|
16
|
+
- 一个槽位对应一张图。`count` 默认 `1`;若为 `3`,CLI 展开为 `slotId[0]`、`slotId[1]`、`slotId[2]`,草稿使用展开后的 ID。`count` 支持 1–100。
|
|
17
|
+
- `required` 默认 `true`。仅在设计允许无图布局时设为 `false`。
|
|
18
|
+
- `minSize` 格式为 `宽x高`,如 `1600x900`;也可写非负整数 `minWidth/minHeight`。草稿不能降低设计的最小尺寸。
|
|
19
|
+
- `generationAllowed=false` 的槽位不接受 `source=generated`。
|
|
20
|
+
- `imageNeed=none` 的页面写空 `slots`;`required` 页面没有槽位时保持 `draft`。
|
|
36
21
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
| 字段 | 填写内容 |
|
|
40
|
-
| --- | --- |
|
|
41
|
-
| assetId | 来源网站的图片 ID;用户素材使用已有内部编号,无编号留空。与页面位置 slotId 区分。 |
|
|
42
|
-
| creator | 作者或权利人,沿用已有字段 |
|
|
43
|
-
| sourcePage | 对应图片的官方详情页或用户提供的来源页,沿用已有字段 |
|
|
44
|
-
| license | 许可名称或已取得的授权说明,沿用已有字段 |
|
|
45
|
-
| licenseUrl | 实际核对的许可条款 HTTP(S) 链接 |
|
|
46
|
-
| licenseCheckedAt | 实际核对许可的日期,格式 YYYY-MM-DD;CLI 不自动填今天 |
|
|
47
|
-
| authorizationEvidence | 必要授权凭证的链接或文件路径数组,如购买凭证、人物或场地产权授权;本地凭证建议使用项目内可持续保留的绝对路径 |
|
|
22
|
+
## 输入草稿
|
|
48
23
|
|
|
49
|
-
|
|
24
|
+
根字段为 `assets` 数组。用户图片和生成图片只需基础字段;图库图片还要填写来源信息。
|
|
50
25
|
|
|
51
26
|
```json
|
|
52
27
|
{
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
28
|
+
"assets": [{
|
|
29
|
+
"slotId": "home.hero",
|
|
30
|
+
"usage": "hero",
|
|
31
|
+
"input": "./assets/home-hero.png",
|
|
32
|
+
"source": "user",
|
|
33
|
+
"alt": "团队在会议室讨论方案"
|
|
34
|
+
}]
|
|
60
35
|
}
|
|
61
36
|
```
|
|
62
37
|
|
|
63
|
-
|
|
38
|
+
`input` 可用本地路径或 HTTP(S) 图片 URL。本地相对路径相对于运行命令的工作目录;跨目录重跑使用绝对路径。不要写搜索结果页、网页地址或未生成的文件路径。
|
|
64
39
|
|
|
65
|
-
|
|
40
|
+
| source | 额外字段 |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `user` | 用户提供的图片;保留实际用途 |
|
|
43
|
+
| `generated` | `isIllustrative=true`;查看实际生成结果 |
|
|
44
|
+
| `search` | `provider` 仅 `unsplash` 或 `pexels`;填写 `sourcePage`、`creator`、`license`、`attribution` |
|
|
45
|
+
| Unsplash 搜索结果 | 另填 `downloadLocation`、`downloadTracked=true`;只有真实完成下载动作记录后才能写 true |
|
|
66
46
|
|
|
67
47
|
```bash
|
|
68
|
-
openyida asset resolve --input
|
|
48
|
+
openyida asset resolve --input manifest-draft.json --manifest asset-manifest.json --design design.md --app-type <真实appType> --json
|
|
69
49
|
```
|
|
70
50
|
|
|
71
|
-
|
|
51
|
+
完整应用始终带 `--design`,以最新设计为准。独立检查单张图片可以省略 `--design`,但它只证明传入素材的状态,不证明应用槽位齐备。`--slot home.hero=<路径或URL> --source user` 适合快速检查,缺少用途、alt 等元数据时仍为 `draft`。
|
|
72
52
|
|
|
73
|
-
|
|
53
|
+
图片默认下载后上传宜搭 `ImageField` 附件,再换取公开链接;下载前后和上传后均不额外发送 URL 探测请求。`input` 始终保留原图,`url` 是页面使用的最终链接;上传不改变 `source` 的来源分类。超过 20 MiB 的外链直接保留 `input`,不用上传;20 MiB 整仍上传。`--upload-assets` 仅兼容旧命令,已无需手动指定。
|
|
74
54
|
|
|
75
|
-
##
|
|
55
|
+
## 输出和重跑
|
|
76
56
|
|
|
77
|
-
|
|
78
|
-
- `hotlinkAllowed`、`rehostAllowed` 为布尔值,分别表示允许外链展示、允许转存。搜索得到的 Unsplash/Pexels 官方图片直链默认允许外链,Unsplash 默认仅用直链。其他来源沿用已核实的转存许可,允许外链时显式填 `hotlinkAllowed=true`;明确禁止转存时填 `rehostAllowed=false`。
|
|
79
|
-
- 本地图片上传宜搭附件;`deliveryMode=upload` 或命令 `--upload-assets` 请求上传允许转存的外链。上传最大 20 MiB,需要登录态和真实 appType,可通过 `--app-type` 指定或读取项目配置。
|
|
80
|
-
- 上传失败或图片超出上传限制时,只有已验证且允许外链的原地址可以继续使用;其他情况记录缺口。返回验证网页、403、超时或尺寸不足的地址按失败处理。
|
|
81
|
-
- input 保留原图,url 保存最终链接,source 保留来源分类;许可和 deliveryMode 随清单保留。原图内容相同时复用已有附件,上传流程直接复用下载内容的检查结果。
|
|
82
|
-
- `--offline` 关闭联网和上传,图片保持 draft。
|
|
83
|
-
|
|
84
|
-
## 输出
|
|
85
|
-
|
|
86
|
-
`schemaVersion=2`:
|
|
57
|
+
输出 `schemaVersion=2`:
|
|
87
58
|
|
|
88
59
|
| 字段 | 含义 |
|
|
89
60
|
| --- | --- |
|
|
90
|
-
| materialStatus |
|
|
91
|
-
| assetStrategy |
|
|
92
|
-
| pages[] | pageId
|
|
93
|
-
| assets[] | input
|
|
94
|
-
| assets[].
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
61
|
+
| `materialStatus` | 全部素材的总状态:`final` / `draft` / `none` |
|
|
62
|
+
| `assetStrategy` | 本次设计要求;重跑时保留。再次传 `--design` 时以设计文件覆盖 |
|
|
63
|
+
| `pages[]` | 每页的 `pageId`、`imageNeed`、`slotIds`、`materialStatus`、`gaps` |
|
|
64
|
+
| `assets[]` | 每张图的原始 `input`、页面/槽位 ID、尺寸要求、来源信息、实际宽高、落地 URL、`materialStatus`、`gaps` |
|
|
65
|
+
| `assets[].delivery` | CLI 生成的交付记录,用于内容比较和宜搭附件复用;`source=yida-attachment` 表示上传,`source=external` 且 `reason=ASSET_TOO_LARGE` 表示超限保留原链接;保留原样,不手工构造 |
|
|
66
|
+
| `gaps` | 全部缺口,按 `pageId/slotId` 定位 |
|
|
67
|
+
| `capabilityEvidence` | 宿主能力声明、`uploadTarget`、`maxUploadBytes` 和本次联网开关;旧 `cdnConfigured` 仅兼容字段,不决定上传能力 |
|
|
68
|
+
|
|
69
|
+
每张图取得公开 URL(或超限时保留原链接)、实际尺寸及所需元数据齐全时才为 `final`。不支持解析的格式或无法读取尺寸的图片保持 `draft`,应换成可验证的 PNG、JPEG、WebP 等格式。
|
|
98
70
|
|
|
99
|
-
|
|
71
|
+
页面必需槽位全部为 `final` 时页面可继续;可选槽位失败仍记录缺口,但不阻塞页面。根状态保留 `draft`,便于继续补图。
|
|
100
72
|
|
|
101
|
-
|
|
73
|
+
缺图后可以直接编辑输出清单,再把它同时作为 `--input` 和 `--manifest`。失败项保留原始 `input` 和尺寸要求;成功项在原图内容未变时直接复用附件链接。旧版清单仍可作为输入,但缺失的原始输入需人工补齐,首次重跑不保证复用旧上传结果。
|
|
102
74
|
|
|
103
|
-
|
|
|
75
|
+
| 缺口/错误 | 处理方式 |
|
|
104
76
|
| --- | --- |
|
|
105
|
-
| EMPTY / NOT_FOUND |
|
|
106
|
-
| INVALID_IMAGE_CONTENT / NOT_IMAGE_FILE / DIMENSIONS_UNAVAILABLE |
|
|
107
|
-
| WIDTH_TOO_SMALL / HEIGHT_TOO_SMALL | 换更大图片 |
|
|
108
|
-
| MISSING_METADATA |
|
|
109
|
-
| ASSET_APP_TYPE_REQUIRED |
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
|
116
|
-
| ASSET_PAGE_REQUIRES_DESIGN / ASSET_PAGE_NOT_FOUND | 提供设计并核对 pageId |
|
|
117
|
-
| 下载、登录、上传错误 | 在剩余轮次内补必需图片,用尽后保留缺口 |
|
|
77
|
+
| `EMPTY` / `NOT_FOUND` | 补正确的图片输入路径或 URL |
|
|
78
|
+
| `INVALID_IMAGE_CONTENT` / `NOT_IMAGE_FILE` / `DIMENSIONS_UNAVAILABLE` | 换成可读取格式与尺寸的真实图片;不要手填宽高绕过 |
|
|
79
|
+
| `WIDTH_TOO_SMALL` / `HEIGHT_TOO_SMALL` | 换更大图片 |
|
|
80
|
+
| `MISSING_METADATA` | 按缺失字段补用途、alt 或真实来源记录 |
|
|
81
|
+
| `ASSET_APP_TYPE_REQUIRED` | 传入真实 `--app-type`,或在当前项目配置 appType |
|
|
82
|
+
| `ASSET_TOO_LARGE_NO_ORIGINAL_URL` | 本地图超过 20 MiB,补原始图片 URL 或换小图 |
|
|
83
|
+
| `ASSET_ATTACHMENT_URL_INVALID` | 上传接口未返回 HTTP(S) 公开链接,排查转换接口;不使用签名下载地址 |
|
|
84
|
+
| `ASSET_DUPLICATE_SLOT` / `ASSET_UNDECLARED_SLOT` | 修正槽位 ID,使其与设计一致 |
|
|
85
|
+
| `MISSING_PAGE_SLOTS` / `ASSET_DESIGN_INVALID` | 回到设计阶段补齐或修正 `assetStrategy` |
|
|
86
|
+
| 下载错误(如 `HTTP_404`、`TIMEOUT`) | 本次跳过,不上传、不使用原链接;需要该图时换 `input` |
|
|
87
|
+
| 登录、上传、离线错误 | 恢复相应能力后,用保留的原始输入重跑 |
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 图片来源与落地规则
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
选图时使用;上线前核对官方条款。
|
|
4
4
|
|
|
5
|
-
| 来源 |
|
|
6
|
-
| --- | --- |
|
|
7
|
-
|
|
|
8
|
-
|
|
|
9
|
-
| [Unsplash API](https://help.unsplash.com/en/articles/2511245-unsplash-api-guidelines) |
|
|
10
|
-
| [Pexels API](https://www.pexels.com/api/documentation/) |
|
|
5
|
+
| 来源 | 搜索/使用规则 | 页面落地 |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| 用户提供 | 确认使用权,保留用途说明 | 本地图直接上传宜搭附件;授权外链下载后上传,不改变真实对象含义 |
|
|
8
|
+
| Agent 生成 | 用于背景、抽象视觉、空态和示意图 | 查看后上传;标记 `isIllustrative=true` |
|
|
9
|
+
| [Unsplash API](https://help.unsplash.com/en/articles/2511245-unsplash-api-guidelines) | 保留署名;API 选用时请求 `download_location`,遵守对应获取方式的使用条款 | 选取允许下载和转存的素材,再上传宜搭附件 |
|
|
10
|
+
| [Pexels API](https://www.pexels.com/api/documentation/) | 保留 Pexels 链接,尽可能署名摄影师 | 下载后上传宜搭附件 |
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## 通用门禁
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
- 记录 `provider/sourcePage/creator/license/attribution`;Unsplash 另记 `downloadLocation/downloadTracked`。
|
|
15
|
+
- 搜索素材使用 `source=search`,只接受 `provider=unsplash|pexels`;用户授权外链使用 `--source user`。
|
|
16
|
+
- 品牌、人物和敏感场景记录授权与真实关系。
|
|
17
|
+
- 背景图检查文字对比度;商品图用 `contain`;场景图用 `cover` 并记录焦点。
|
|
18
|
+
- 默认上传宜搭图片附件;外链超过 20 MiB 才保留原链接。下载失败直接跳过并记录缺口;上传失败保持草稿。
|
|
19
|
+
- API 或具体授权要求热链且不允许转存时,改选允许转存的素材;不要把更换托管地址当作取得授权。
|
|
@@ -421,7 +421,6 @@ openyida integration diagnose --file project/tickets/automation-error.txt --json
|
|
|
421
421
|
- 流水号:新增/编辑触发时,触发 payload 中的流水号可能为空或不是最新值;需要先获取自身,再引用获取节点里的流水号。
|
|
422
422
|
- 定时自动化:定时触发值可能是历史数据;需要最新值时先获取自身或获取目标数据。
|
|
423
423
|
- 直接更新:匹配字段只能消费当前触发表字段,不能随意匹配前置节点字段;文本字段不要匹配单选/多选字段。直接更新不会触发被更新表单上的集成自动化。
|
|
424
|
-
- 跨应用写入不级联触发(阻塞项):A 应用表单的集成自动化通过内置新增/编辑/删除数据节点写 B 应用表单(跨应用)时,B 表单上已配置的新增/编辑/删除自动触发集成业务流不会生效。涉及跨应用链式联动时这是阻塞项,不得假设 B 表自动化会被接力触发。
|
|
425
424
|
- 条件分支:空值判断优先用公式 `ISEMPTY()`,不要只依赖“没有值”选项。
|
|
426
425
|
- 异常重试:重试通常会从头执行,已执行过的新增/更新节点可能再次写入或覆盖数据;重试前先确认幂等性。
|
|
427
426
|
|
|
@@ -56,8 +56,6 @@ openyida auth refresh
|
|
|
56
56
|
openyida auth logout
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
生成新命令统一使用 `openyida auth profiles --json`。CLI 同时兼容旧写法 `openyida auth profile list --json`,两者都只查询,不切换组织或登录态。
|
|
60
|
-
|
|
61
59
|
## Profile 选择原则
|
|
62
60
|
|
|
63
61
|
- 当前已有多个 profile 且 snapshot 返回 `profile_required` 时,不要根据目录、组织名片段或最近操作猜测组织。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-nav-group
|
|
3
|
-
description:
|
|
3
|
+
description: 宜搭应用左侧导航分组管理。查询导航树、新建/重命名/删除分组、移动或排序表单/页面/外链、隐藏或显示导航项。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 应用导航分组
|
|
@@ -13,15 +13,13 @@ description: 整理宜搭已有的导航菜单时使用。支持查看菜单、
|
|
|
13
13
|
- **完整应用排序时机**:等待本轮全部页面开发、发布及资源创建完成,再统一执行一次排序;逐页发布不使用 `--auto-nav-order`。用户单独要求调整已有导航时直接按本次要求执行。
|
|
14
14
|
- **PRD 导航优先**:PRD 写明页面/表单清单顺序时,使用 `openyida nav-group order <appType> <页面/表单...>`;PRD 只写宽泛分组或缺少导航顺序时,使用 `openyida nav-group auto-order <appType>` 或发布命令的 `--auto-nav-order` 兜底。两种排序互斥,同一 Run 只执行一次,不生成逐项 `move` 循环。
|
|
15
15
|
- **兜底自动排序优先级**:门户/首页/工作台入口 > 自定义展示页面 > 流程表单 > 普通表单。这是工具兜底顺序,不替代 PRD 导航顺序。
|
|
16
|
-
- **默认原则:面向决策者的总览/驾驶舱看板作为应用门面靠前,数据录入/明细表单在其后。**
|
|
16
|
+
- **默认原则:面向决策者的总览/驾驶舱看板作为应用门面靠前,数据录入/明细表单在其后。** 判断某个看板是否靠前,看它是不是主要「查看/决策」入口:
|
|
17
17
|
- 有独立总览首页看板时:`总览首页看板 → 专题看板 → 核心业务表单 → 明细/配置表单`。
|
|
18
18
|
- 没有独立首页、专题看板本身就是主要决策视图时(如「双11看板/618看板」面向运营主管只读查看):这些**专题看板靠前**,数据录入/明细表单在后。
|
|
19
19
|
- "不要无脑把看板全置顶"针对的是:当存在明确操作旅程(先录入后查看)、且看板只是次要报表时,按旅程排;不要把与主流程无关的次要看板也塞最前。多数带看板的应用,决策看板应先于录入表单。
|
|
20
20
|
- 删除分组默认只删除空分组;非空分组必须先移动子项,除非用户明确要求 `--force`。
|
|
21
21
|
- 分组节点是 `navType: "NAV"`,普通页面是 `navType: "PAGE"`,外链是 `navType: "LINK"`,系统节点不要移动或删除。
|
|
22
22
|
|
|
23
|
-
前后台双入口的排序以 [访问态入口契约](../yida-app/references/entry-navigation.md) 的管理菜单为准;auto-order 不理解业务身份,不能用于双入口的管理菜单决策。隐藏项同时影响共享平台菜单,不是按角色隐藏,也不是权限拒绝。
|
|
24
|
-
|
|
25
23
|
## 命令
|
|
26
24
|
|
|
27
25
|
### 查询导航树
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-nav-shell
|
|
3
|
-
description:
|
|
3
|
+
description: 自定义页明确要自绘应用级导航时使用;先隐藏应用导航 hideAppNav。页面级 isRenderNav=false 不等于应用导航隐藏。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# yida-nav-shell
|
|
7
7
|
|
|
8
8
|
## 先判断
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
默认不用本技能。宜搭应用的页面切换优先交给平台导航和 `yida-nav-group`。
|
|
11
11
|
|
|
12
12
|
| 用户需求 | 怎么处理 |
|
|
13
13
|
| --- | --- |
|
|
14
14
|
| 导航分组、页面排序、隐藏/显示导航项 | 用 `yida-nav-group` |
|
|
15
15
|
| 页面内 tab、分段、筛选、卡片切换 | 当前页内容结构,不用本技能 |
|
|
16
|
-
|
|
|
17
|
-
| 整个应用采用自绘应用级导航 | 用本技能,按应用级范围隐藏应用导航 |
|
|
16
|
+
| 自定义页要顶部导航、侧边导航、导航壳、自绘应用级导航 | 用本技能,并先隐藏应用导航 |
|
|
18
17
|
| 用户只说隐藏应用导航 | 执行 `update-app --hide-app-nav`;需要自绘导航时再用本技能 |
|
|
19
18
|
| 用户只说全屏、无导航、`isRenderNav=false` | 这是页面级隐藏,优先用 `yida-page-config` |
|
|
20
19
|
|
|
@@ -25,58 +24,36 @@ description: 为应用或独立前台页面制作自己的导航菜单时使用
|
|
|
25
24
|
- 不要用 `isRenderNav=false` 代替 `hideAppNav`。
|
|
26
25
|
- 不要让平台应用导航和自绘应用级导航同时出现。
|
|
27
26
|
|
|
28
|
-
平台导航下的管理页只实现业务内容,不默认使用本技能或导航壳片段;同任务分类使用页内 Tab,跨模块由平台菜单切换。管理入口的任务清单不等于页面菜单,详见[管理页面边界](../yida-canvas-custom-page/references/navigation-and-entry-guide.md#平台导航下的管理页面)。
|
|
29
|
-
|
|
30
27
|
## 必做配置
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
### 仅独立前台菜单
|
|
35
|
-
|
|
36
|
-
需要让应用管理员返回业务管理时,使用 [管理员工作台入口](../yida-canvas-custom-page/references/navigation-and-entry-guide.md#管理员返回业务工作台) 的 `canvas-admin-entry`,放在导航操作区并跟随主题。按当前访问者与当前应用的身份展示,指向真实业务管理页面;这只是访问态入口,不是开发后台按钮,不自动授予或调整管理员权限。
|
|
37
|
-
|
|
38
|
-
应用为 platform-top/platform-side/platform-l-shape、当前页为 standalone 时,只对该页面执行下面的 `update-form-config` 和回读;不调用 `update-app --hide-app-nav`,不批量隐藏后台表单或其他页面。需要应用级主题更新时继续保留平台导航。发布后分别验证前台页面链接与后台 workbench 链接;前台仍出现平台菜单时,先排查实际访问路径与页面配置,不能通过全局隐藏“修复”。
|
|
39
|
-
|
|
40
|
-
### 整个应用自定义导航
|
|
41
|
-
|
|
42
|
-
需求规划采用自定义导航后,就将应用导航隐藏纳入应用基础设置更新:新建应用时,等 `app-theme.css` 生成后,将 `--hide-app-nav` 与主题、Logo、布局等设置合并到同一次 `update-app`,按 [应用设置同步](../yida-app/workflow/step-3-create-or-reuse-app.md) 执行并回读。已有应用只需切换导航时执行:
|
|
29
|
+
用户确认自定义导航后,就将应用导航隐藏纳入应用基础设置更新:新建应用时,等 `app-theme.css` 生成后,将 `--hide-app-nav` 与主题、Logo、布局等设置合并到同一次 `update-app`,按 [应用设置同步](../yida-app/workflow/step-3-create-or-reuse-app.md) 执行并回读。已有应用只需切换导航时执行:
|
|
43
30
|
|
|
44
31
|
```bash
|
|
45
32
|
openyida update-app <appType> --hide-app-nav
|
|
46
33
|
```
|
|
47
34
|
|
|
48
|
-
|
|
35
|
+
自定义导航必须对 PRD 本轮范围内全部普通表单、流程表单、自定义页面及其他支持页面配置的资源逐页执行;使用已解析的真实 `formUuid` 和原页面标题:
|
|
49
36
|
|
|
50
37
|
```bash
|
|
51
38
|
openyida update-form-config <appType> <formUuid> false "<页面标题>"
|
|
52
39
|
openyida get-form-config <appType> <formUuid> --json
|
|
53
40
|
```
|
|
54
41
|
|
|
55
|
-
每页回读 `
|
|
56
|
-
|
|
57
|
-
## 访问态入口与权限
|
|
58
|
-
|
|
59
|
-
前台和管理端可以使用不同的菜单,管理端也可以直接打开业务列表,无需首页。菜单显示什么与用户能操作什么要分别处理:平台隐藏的菜单项,仍可能是前台需要的任务;能看到一个页面,也不代表能提交或修改数据。
|
|
60
|
-
|
|
61
|
-
公开内容的纯页内视图使用本地数组直接切换,或 `mode=local`,不请求平台菜单接口;叶子项需 `key/viewKey/targetType=local`。沿用平台菜单范围时使用 `platform` 模式并绑定真实资源 ID;按资源权限独立组织任务时使用 `independent` 模式,并查询当前用户的真实权限。local 中声明的 access 也必须校验,不得删除声明规避权限;业务查询、提交和管理操作继续校验平台权限。权限查询尚未接通时,不放行相关菜单,明确记录未完成项。字段和步骤见 [前台与管理端的菜单规则](../yida-app/references/entry-navigation.md)。
|
|
42
|
+
每页回读 `isRenderNav=false` 才完成;失败时修复该页配置并重读。表单及自定义页面在创建或复用并取得真实 `formUuid` 后立即配置,可与页面代码开发并行,不等待页面发布。发布后只回读核对;若发布改变了配置才补写修复,最终按 PRD 清单逐项核对。`create-page --hide-nav` 可用于新建页初始配置,仍需回读;URL 参数不能代替持久化设置。
|
|
62
43
|
|
|
63
44
|
## 实现要点
|
|
64
45
|
|
|
65
|
-
本节的 iframe 与原生表单打开规则用于计划选择复用原生页面的工作区。全码前台默认在同一页面切换业务视图、完成填写与结果展示,连接真实数据;不把默认 iframe 当作全码前台。菜单只包含该入口的有效任务,不能把后台菜单自动带入前台。
|
|
66
|
-
|
|
67
|
-
先读取 [页面与导航连续性](../yida-design/references/page-continuity.md),落实 design.md 中的共同画布、滚动归属及往返状态。导航布局与内容切换共同设计;不要只生成菜单外形。
|
|
68
|
-
|
|
69
46
|
- **MUST:应用内切换保留导航壳**:点击自定义导航后,导航必须仍然可见且可继续操作;默认只切换主内容区。原生提交页、数据管理页嵌入主内容 iframe,本地工作台切换 React 内容。只有确认目标页面也承载同一套导航壳时才允许整页跳转;不能直接跳到隐藏导航的原生页面。外链和用户主动新窗口打开单独处理。见 [保留导航壳的最小示例](references/nav-shell-patterns.md#保留导航壳的最小示例)。
|
|
70
47
|
|
|
71
|
-
-
|
|
48
|
+
- **MUST:内容区撑满剩余空间**:先执行 `openyida sample openyida-page-template canvas-nav-content` 并整体合并 `CanvasNavigationContent`,保持 `.openyida-nav-layout` / `.openyida-nav-content` 布局结构;顶部导航通过 `navigation` 接入,侧栏布局在右侧确定高度的内容区域使用。从确定高度的导航壳到 main、iframe 视口建立完整 flex 高度链,每个可收缩内容层设置 `min-height:0`;工作台自身滚动,原生页仅 iframe 内滚动。切换视图保持内容宽度和外侧留白连续,禁止父级 block、子级只写 `flex:1` 的无效布局。实现与验收见 [主内容撑满剩余空间](references/nav-shell-patterns.md#must主内容撑满剩余空间)。
|
|
72
49
|
|
|
73
|
-
-
|
|
50
|
+
- **画布与浮导间距**:平台宿主继续消费 `--pod-page-bg-color`;自绘导航页的内部画布由 `design.md` 定义,可采用浅灰、浅彩、渐变或局部纹理,不强制跟随白色平台底色。浅色非白画布上,顶部浮导默认白色或近白半透明,卡片默认白色无框;品牌色集中于选中态和主操作,深色方案单独设计。只作用于当前页面选择器,不修改应用全局变量。根节点使用 `display:flow-root` 或 flex/grid,让浮导上边距留在根节点内。
|
|
74
51
|
|
|
75
52
|
- **先选形态,再写 UI**:根据已确认的 PRD、`design.md` 和用户参考确定布局。模块多用侧栏,模块少且内容需要宽度用顶部,两级业务用顶部+侧边,沉浸展示可用悬浮 Dock,同模块视图用标签。已确认的选择直接沿用,不重新提问。
|
|
76
|
-
-
|
|
53
|
+
- 自定义顶部导航默认推荐浮导,可按内容宽度设计为紧凑胶囊或悬浮栏;“顶部导航”不等于贴边通栏。位置、比例、留白、材质和选中态根据业务与设计实现,不由现成组件决定。此推荐只针对顶部样式,“平台导航 / 自定义导航”选项保持中性。
|
|
77
54
|
- 需要布局方向和小段代码时读 [导航壳形态目录](references/nav-shell-patterns.md)。按场景设计和手写实现,不强制复制任何导航组件。已有导航符合设计时直接复用,只补缺失功能;不能仅因存在新示例而替换现有外观。
|
|
78
55
|
- 自定义侧边导航(含顶部+侧边)的 PC 端必须支持折叠/展开和拖拽调宽;展开恢复折叠前宽度,宽度变化时内容区同步调整。移动端改为可展开/收起的菜单,详见 [侧栏交互](references/nav-shell-patterns.md#侧栏交互)。
|
|
79
|
-
- 菜单数量、名称、顺序、分组和入口用途来自 PRD
|
|
56
|
+
- 菜单数量、名称、顺序、分组和入口用途来自 PRD,通常工作台在首位;用当前访问者的 `getAccessableNavs.json` 过滤可见范围,详见 [导航数据来源](references/nav-shell-patterns.md#导航数据来源)。数据逻辑可直接复用,不要求采用同一套 UI。
|
|
80
57
|
- 只在当前页切视图时用 React 状态;需要分享、刷新恢复、前进后退时同步 URL hash。跨真实页面时沿用应用路由与数据桥,详见 [菜单契约](references/nav-shell-patterns.md#菜单契约)。`hashchange`、`matchMedia` 等监听必须 cleanup。
|
|
81
58
|
- **满足导航壳保留条件后的跨页跳转,避免重复应用前缀**:完整的 `/APP_xxx/workbench/FORM_xxx` 地址通过数据桥调用 `router.push(href, params, false, true)`,第三参 `false` 表示不新开标签,第四参 `true` 表示 URL 模式。数据桥已修复省略第四参时的自动识别,但不会覆盖显式传入的 `false`;生成代码仍须明确传 `true`,详见 [路由模式与数据桥兜底](references/nav-shell-patterns.md#路由模式与数据桥兜底)。
|
|
82
59
|
- 导航项保存真实资源 ID、入口用途和 `params`;办理任务、数据管理与页面内新增/详情按钮按 [入口用途与嵌入页面](references/nav-shell-patterns.md#入口用途与嵌入页面) 分别处理。用 `URL` / `URLSearchParams` 保留 `corpid`、`locale` 和业务参数。
|
|
@@ -84,10 +61,9 @@ openyida get-form-config <appType> <formUuid> --json
|
|
|
84
61
|
## UI 和验收
|
|
85
62
|
|
|
86
63
|
- 导航表达应用身份、业务层级和当前位置;选中态清晰,图标使用 `lucide-react` 或 `@ant-design/icons`,不用 emoji、字母占位或 CSS 拼图标。
|
|
87
|
-
-
|
|
64
|
+
- 视觉对照 `design.md` 和用户参考检查,尤其是浮导的容器比例、留白、位置与内容关系。导航消费应用主题 token,不另注一套全局主题。
|
|
88
65
|
- 导航选中态已标明当前页时,内容区从业务开始;独立页头只补充对象、任务说明或操作,避免重复菜单标题。
|
|
89
66
|
- 侧栏已验证折叠、恢复宽度、拖拽上下限和内容联动;顶部窄屏可展开菜单,Dock 不遮内容和主要操作。
|
|
90
|
-
-
|
|
67
|
+
- 应用 `hideAppNav` 与各页 `isRenderNav=false` 均已持久化并回读;菜单可见性、选中态、内容与路由一致,深链、刷新及前进后退正常。
|
|
91
68
|
- 逐项点击应用内导航,确认导航壳、当前选中项和主内容同时正确;切换后还能返回工作台。不能只验证目标页面打开成功。
|
|
92
|
-
- 实际滚动到页脚并回顶,确认 main 没有塌缩到导航高度;检查首屏、第二屏与窄屏菜单展开态,无背景断带、遮挡或双滚动;测试往返、快速连点、重复点击、刷新、前进后退、加载失败及未保存输入,按连续性规则核验状态和焦点。
|
|
93
69
|
- 完整检查见 [验证清单](references/nav-shell-patterns.md#验证)。本地编译后按 `yida-publish-page` 发布并检查实际页面,编译通过不等于视觉验收通过。
|