@flextudio/scenario 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +260 -0
- package/bin/flex-scenario.mjs +895 -0
- package/commands/flex-spec.md +28 -0
- package/contract-data/README.md +267 -0
- package/contract-data/examples/README.md +147 -0
- package/contract-data/examples/basic/basic-list-detail.json +2521 -0
- package/contract-data/examples/basic/delivery-address-popup.json +2175 -0
- package/contract-data/examples/basic/fixedtop-floating-form.json +1524 -0
- package/contract-data/examples/basic/search-period-popup.json +1524 -0
- package/contract-data/examples/design/booking-wizard-3step.json +1335 -0
- package/contract-data/examples/design/list-detail-form-3step.json +1516 -0
- package/contract-data/examples/design/list-filter-2step.json +1365 -0
- package/contract-data/examples/design/list-filter-detail-3step.json +1570 -0
- package/contract-data/examples/design/result-entry-wizard-4step.json +1861 -0
- package/contract-data/examples/intent/mock-employee-list.json +54 -0
- package/contract-data/examples/intent/script-cart-flow.json +96 -0
- package/contract-data/examples/intent/script-dialog-confirm.json +61 -0
- package/contract-data/runtime/v1/collection/README.md +119 -0
- package/contract-data/runtime/v1/collection/_c.md +205 -0
- package/contract-data/runtime/v1/collection/category.md +165 -0
- package/contract-data/runtime/v1/collection/collection.md +135 -0
- package/contract-data/runtime/v1/collection/lifecycle.md +140 -0
- package/contract-data/runtime/v1/collection/naming.md +174 -0
- package/contract-data/runtime/v1/collection/sector.md +176 -0
- package/contract-data/runtime/v1/collection/status.md +114 -0
- package/contract-data/runtime/v1/intent-system/INTENT.md +552 -0
- package/contract-data/runtime/v1/intent-system/README.md +118 -0
- package/contract-data/runtime/v1/intent-system/intent.schema.json +164 -0
- package/contract-data/runtime/v1/intent-system/kinds/_base.mjs +137 -0
- package/contract-data/runtime/v1/intent-system/kinds/clearCategory.mjs +35 -0
- package/contract-data/runtime/v1/intent-system/kinds/copyStepValues.mjs +100 -0
- package/contract-data/runtime/v1/intent-system/kinds/deleteActive.mjs +45 -0
- package/contract-data/runtime/v1/intent-system/kinds/dialog.mjs +127 -0
- package/contract-data/runtime/v1/intent-system/kinds/reloadGroup.mjs +28 -0
- package/contract-data/runtime/v1/intent-system/kinds/updateActive.mjs +74 -0
- package/contract-data/runtime/v1/intent-system/materialize.mjs +495 -0
- package/contract-data/runtime/v1/script/README.md +37 -0
- package/contract-data/runtime/v1/script/current_step.md +112 -0
- package/contract-data/runtime/v1/script/f_collection.md +142 -0
- package/contract-data/runtime/v1/script/f_content.md +133 -0
- package/contract-data/runtime/v1/script/f_messagebox.md +132 -0
- package/contract-data/runtime/v1/script/scenario-gen-rules.md +264 -0
- package/contract-data/schema/v1/SKELETON-SHELL.md +120 -0
- package/contract-data/schema/v1/bottom-buttons.md +155 -0
- package/contract-data/schema/v1/bottom-buttons.schema.json +134 -0
- package/contract-data/schema/v1/control/_base.schema.json +1296 -0
- package/contract-data/schema/v1/control/button.md +147 -0
- package/contract-data/schema/v1/control/button.schema.json +55 -0
- package/contract-data/schema/v1/control/calendar-navigator.md +143 -0
- package/contract-data/schema/v1/control/calendar-navigator.schema.json +164 -0
- package/contract-data/schema/v1/control/calendar.md +128 -0
- package/contract-data/schema/v1/control/calendar.schema.json +18 -0
- package/contract-data/schema/v1/control/check-box.md +117 -0
- package/contract-data/schema/v1/control/check-box.schema.json +41 -0
- package/contract-data/schema/v1/control/combo.md +293 -0
- package/contract-data/schema/v1/control/combo.schema.json +23 -0
- package/contract-data/schema/v1/control/embed.md +211 -0
- package/contract-data/schema/v1/control/embed.schema.json +30 -0
- package/contract-data/schema/v1/control/image-box.md +237 -0
- package/contract-data/schema/v1/control/image-box.schema.json +49 -0
- package/contract-data/schema/v1/control/input-date.md +175 -0
- package/contract-data/schema/v1/control/input-date.schema.json +27 -0
- package/contract-data/schema/v1/control/input-file.md +192 -0
- package/contract-data/schema/v1/control/input-file.schema.json +139 -0
- package/contract-data/schema/v1/control/input-mask.md +89 -0
- package/contract-data/schema/v1/control/input-mask.schema.json +45 -0
- package/contract-data/schema/v1/control/input-number.md +55 -0
- package/contract-data/schema/v1/control/input-number.schema.json +24 -0
- package/contract-data/schema/v1/control/input-text.md +73 -0
- package/contract-data/schema/v1/control/input-text.schema.json +24 -0
- package/contract-data/schema/v1/control/label.md +127 -0
- package/contract-data/schema/v1/control/label.schema.json +113 -0
- package/contract-data/schema/v1/control/multi-input-box.md +51 -0
- package/contract-data/schema/v1/control/multi-input-box.schema.json +19 -0
- package/contract-data/schema/v1/control/other.schema.json +24 -0
- package/contract-data/schema/v1/control/radio-box.md +150 -0
- package/contract-data/schema/v1/control/radio-box.schema.json +87 -0
- package/contract-data/schema/v1/control/search.md +163 -0
- package/contract-data/schema/v1/control/search.schema.json +23 -0
- package/contract-data/schema/v1/control/tab.md +240 -0
- package/contract-data/schema/v1/control/tab.schema.json +112 -0
- package/contract-data/schema/v1/control/tree.md +278 -0
- package/contract-data/schema/v1/control/tree.schema.json +83 -0
- package/contract-data/schema/v1/control.md +264 -0
- package/contract-data/schema/v1/control.schema.json +30 -0
- package/contract-data/schema/v1/data-objects.md +278 -0
- package/contract-data/schema/v1/data-objects.schema.json +161 -0
- package/contract-data/schema/v1/data-sources.md +215 -0
- package/contract-data/schema/v1/data-sources.schema.json +184 -0
- package/contract-data/schema/v1/design-system/DESIGN.md +282 -0
- package/contract-data/schema/v1/design-system/README.md +235 -0
- package/contract-data/schema/v1/design-system/design.schema.json +496 -0
- package/contract-data/schema/v1/design-system/error-mapping.mjs +132 -0
- package/contract-data/schema/v1/design-system/materialize.mjs +1435 -0
- package/contract-data/schema/v1/design-system/tests/_base.additional-meta.test.mjs +98 -0
- package/contract-data/schema/v1/design-system/tests/_base.materialize.test.mjs +596 -0
- package/contract-data/schema/v1/design-system/tests/checklist.test.mjs +135 -0
- package/contract-data/schema/v1/design-system/tests/design.schema.test.mjs +487 -0
- package/contract-data/schema/v1/design-system/tests/error-mapping.test.mjs +244 -0
- package/contract-data/schema/v1/design-system/tests/materialize.test.mjs +1093 -0
- package/contract-data/schema/v1/design-system/tests/move-step.test.mjs +119 -0
- package/contract-data/schema/v1/design-system/tests/override.integration.test.mjs +116 -0
- package/contract-data/schema/v1/design-system/tokens.json +76 -0
- package/contract-data/schema/v1/events.md +467 -0
- package/contract-data/schema/v1/events.schema.json +272 -0
- package/contract-data/schema/v1/group.md +146 -0
- package/contract-data/schema/v1/group.schema.json +133 -0
- package/contract-data/schema/v1/mockup-data.md +186 -0
- package/contract-data/schema/v1/naming-objects.schema.json +133 -0
- package/contract-data/schema/v1/node.md +32 -0
- package/contract-data/schema/v1/node.schema.json +24 -0
- package/contract-data/schema/v1/patterns/_base.additional-meta.mjs +135 -0
- package/contract-data/schema/v1/patterns/_base.controls.mjs +759 -0
- package/contract-data/schema/v1/patterns/_base.icon.mjs +61 -0
- package/contract-data/schema/v1/patterns/_base.id.mjs +15 -0
- package/contract-data/schema/v1/patterns/_base.materialize.mjs +1181 -0
- package/contract-data/schema/v1/patterns/_base.style.mjs +312 -0
- package/contract-data/schema/v1/patterns/atom/badge.materialize.mjs +68 -0
- package/contract-data/schema/v1/patterns/atom/badge.schema.json +44 -0
- package/contract-data/schema/v1/patterns/atom/button.materialize.mjs +91 -0
- package/contract-data/schema/v1/patterns/atom/button.schema.json +70 -0
- package/contract-data/schema/v1/patterns/atom/checkbox.materialize.mjs +40 -0
- package/contract-data/schema/v1/patterns/atom/checkbox.schema.json +39 -0
- package/contract-data/schema/v1/patterns/atom/segmented-radio.materialize.mjs +67 -0
- package/contract-data/schema/v1/patterns/atom/segmented-radio.schema.json +49 -0
- package/contract-data/schema/v1/patterns/atom/switch.materialize.mjs +58 -0
- package/contract-data/schema/v1/patterns/atom/switch.schema.json +27 -0
- package/contract-data/schema/v1/patterns/molecule/checklist.materialize.mjs +130 -0
- package/contract-data/schema/v1/patterns/molecule/checklist.schema.json +63 -0
- package/contract-data/schema/v1/patterns/molecule/input-action.materialize.mjs +356 -0
- package/contract-data/schema/v1/patterns/molecule/input-action.schema.json +251 -0
- package/contract-data/schema/v1/patterns/molecule/input-button.materialize.mjs +183 -0
- package/contract-data/schema/v1/patterns/molecule/input-button.schema.json +141 -0
- package/contract-data/schema/v1/patterns/molecule/input-pair.materialize.mjs +254 -0
- package/contract-data/schema/v1/patterns/molecule/input-pair.schema.json +210 -0
- package/contract-data/schema/v1/scenario.md +112 -0
- package/contract-data/schema/v1/scenario.schema.json +161 -0
- package/contract-data/schema/v1/service/CustomSystem.md +139 -0
- package/contract-data/schema/v1/service/CustomSystem.schema.json +41 -0
- package/contract-data/schema/v1/service/Firestore.md +125 -0
- package/contract-data/schema/v1/service/Firestore.schema.json +28 -0
- package/contract-data/schema/v1/service/FlexAutoQuery.md +128 -0
- package/contract-data/schema/v1/service/FlexAutoQuery.schema.json +35 -0
- package/contract-data/schema/v1/service/FlexSQL.md +96 -0
- package/contract-data/schema/v1/service/FlexSQL.schema.json +33 -0
- package/contract-data/schema/v1/service/Flextudio API.md +161 -0
- package/contract-data/schema/v1/service/Flextudio API.schema.json +115 -0
- package/contract-data/schema/v1/service/Flextudio.md +87 -0
- package/contract-data/schema/v1/service/Flextudio.schema.json +26 -0
- package/contract-data/schema/v1/service/GoogleSheet.md +71 -0
- package/contract-data/schema/v1/service/GoogleSheet.schema.json +31 -0
- package/contract-data/schema/v1/service/README.md +127 -0
- package/contract-data/schema/v1/service/_base.schema.json +31 -0
- package/contract-data/schema/v1/service/ksystem.md +76 -0
- package/contract-data/schema/v1/service/ksystem.schema.json +36 -0
- package/contract-data/schema/v1/service-binding.md +228 -0
- package/contract-data/schema/v1/service-binding.schema.json +51 -0
- package/contract-data/schema/v1/step.md +546 -0
- package/contract-data/schema/v1/step.schema.json +258 -0
- package/contract-data/schema/v1/style-objects.md +183 -0
- package/contract-data/schema/v1/style-objects.schema.json +155 -0
- package/contract-data/spec/catalog.json +406 -0
- package/contract-data/spec/rules.md +400 -0
- package/node_modules/@flextudio/contract-core/contract.mjs +367 -0
- package/node_modules/@flextudio/contract-core/index.mjs +16 -0
- package/node_modules/@flextudio/contract-core/package.json +21 -0
- package/node_modules/@flextudio/contract-core/paths.mjs +72 -0
- package/node_modules/@flextudio/contract-core/schemas.mjs +474 -0
- package/node_modules/@flextudio/contract-core/validators.mjs +2471 -0
- package/node_modules/ajv/.runkit_example.js +23 -0
- package/node_modules/ajv/LICENSE +22 -0
- package/node_modules/ajv/README.md +207 -0
- package/node_modules/ajv/dist/2019.d.ts +19 -0
- package/node_modules/ajv/dist/2019.js +61 -0
- package/node_modules/ajv/dist/2019.js.map +1 -0
- package/node_modules/ajv/dist/2020.d.ts +19 -0
- package/node_modules/ajv/dist/2020.js +55 -0
- package/node_modules/ajv/dist/2020.js.map +1 -0
- package/node_modules/ajv/dist/ajv.d.ts +18 -0
- package/node_modules/ajv/dist/ajv.js +50 -0
- package/node_modules/ajv/dist/ajv.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
- package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
- package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
- package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
- package/node_modules/ajv/dist/compile/errors.js +123 -0
- package/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/node_modules/ajv/dist/compile/index.d.ts +80 -0
- package/node_modules/ajv/dist/compile/index.js +242 -0
- package/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js +236 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
- package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
- package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
- package/node_modules/ajv/dist/compile/names.d.ts +20 -0
- package/node_modules/ajv/dist/compile/names.js +28 -0
- package/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
- package/node_modules/ajv/dist/compile/ref_error.js +12 -0
- package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
- package/node_modules/ajv/dist/compile/resolve.js +155 -0
- package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
- package/node_modules/ajv/dist/compile/rules.js +26 -0
- package/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/node_modules/ajv/dist/compile/util.d.ts +40 -0
- package/node_modules/ajv/dist/compile/util.js +178 -0
- package/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
- package/node_modules/ajv/dist/compile/validate/index.js +520 -0
- package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/node_modules/ajv/dist/core.d.ts +174 -0
- package/node_modules/ajv/dist/core.js +618 -0
- package/node_modules/ajv/dist/core.js.map +1 -0
- package/node_modules/ajv/dist/jtd.d.ts +47 -0
- package/node_modules/ajv/dist/jtd.js +72 -0
- package/node_modules/ajv/dist/jtd.js.map +1 -0
- package/node_modules/ajv/dist/refs/data.json +13 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/equal.js +7 -0
- package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
- package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
- package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
- package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/quote.js +30 -0
- package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
- package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/re2.js +6 -0
- package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
- package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
- package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
- package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/uri.js +6 -0
- package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
- package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
- package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
- package/node_modules/ajv/dist/standalone/index.js +90 -0
- package/node_modules/ajv/dist/standalone/index.js.map +1 -0
- package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
- package/node_modules/ajv/dist/standalone/instance.js +35 -0
- package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
- package/node_modules/ajv/dist/types/index.d.ts +183 -0
- package/node_modules/ajv/dist/types/index.js +3 -0
- package/node_modules/ajv/dist/types/index.js.map +1 -0
- package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
- package/node_modules/ajv/dist/types/json-schema.js +3 -0
- package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
- package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
- package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
- package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
- package/node_modules/ajv/dist/vocabularies/code.js +131 -0
- package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
- package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/next.js +8 -0
- package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/node_modules/ajv/lib/2019.ts +81 -0
- package/node_modules/ajv/lib/2020.ts +75 -0
- package/node_modules/ajv/lib/ajv.ts +70 -0
- package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
- package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
- package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
- package/node_modules/ajv/lib/compile/errors.ts +184 -0
- package/node_modules/ajv/lib/compile/index.ts +324 -0
- package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
- package/node_modules/ajv/lib/compile/jtd/serialize.ts +277 -0
- package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
- package/node_modules/ajv/lib/compile/names.ts +27 -0
- package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
- package/node_modules/ajv/lib/compile/resolve.ts +149 -0
- package/node_modules/ajv/lib/compile/rules.ts +50 -0
- package/node_modules/ajv/lib/compile/util.ts +213 -0
- package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
- package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
- package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
- package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
- package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
- package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
- package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
- package/node_modules/ajv/lib/core.ts +892 -0
- package/node_modules/ajv/lib/jtd.ts +132 -0
- package/node_modules/ajv/lib/refs/data.json +13 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
- package/node_modules/ajv/lib/runtime/equal.ts +7 -0
- package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
- package/node_modules/ajv/lib/runtime/quote.ts +31 -0
- package/node_modules/ajv/lib/runtime/re2.ts +6 -0
- package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
- package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
- package/node_modules/ajv/lib/runtime/uri.ts +6 -0
- package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
- package/node_modules/ajv/lib/standalone/index.ts +100 -0
- package/node_modules/ajv/lib/standalone/instance.ts +36 -0
- package/node_modules/ajv/lib/types/index.ts +244 -0
- package/node_modules/ajv/lib/types/json-schema.ts +187 -0
- package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
- package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
- package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
- package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
- package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
- package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
- package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
- package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
- package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
- package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
- package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
- package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
- package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
- package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
- package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
- package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
- package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
- package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
- package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
- package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
- package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
- package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
- package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
- package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
- package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
- package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
- package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
- package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
- package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
- package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
- package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +39 -0
- package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
- package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
- package/node_modules/ajv/package.json +126 -0
- package/node_modules/fast-deep-equal/LICENSE +21 -0
- package/node_modules/fast-deep-equal/README.md +96 -0
- package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/index.js +72 -0
- package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/react.js +79 -0
- package/node_modules/fast-deep-equal/index.d.ts +4 -0
- package/node_modules/fast-deep-equal/index.js +46 -0
- package/node_modules/fast-deep-equal/package.json +61 -0
- package/node_modules/fast-deep-equal/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/react.js +53 -0
- package/node_modules/fast-uri/.gitattributes +2 -0
- package/node_modules/fast-uri/.github/dependabot.yml +13 -0
- package/node_modules/fast-uri/.github/workflows/ci.yml +106 -0
- package/node_modules/fast-uri/.github/workflows/lock-threads.yml +19 -0
- package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
- package/node_modules/fast-uri/LICENSE +30 -0
- package/node_modules/fast-uri/README.md +152 -0
- package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
- package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
- package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
- package/node_modules/fast-uri/benchmark/package.json +17 -0
- package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
- package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
- package/node_modules/fast-uri/eslint.config.js +6 -0
- package/node_modules/fast-uri/index.js +406 -0
- package/node_modules/fast-uri/lib/schemes.js +267 -0
- package/node_modules/fast-uri/lib/utils.js +443 -0
- package/node_modules/fast-uri/package.json +68 -0
- package/node_modules/fast-uri/test/ajv.test.js +43 -0
- package/node_modules/fast-uri/test/equal.test.js +117 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
- package/node_modules/fast-uri/test/parse.test.js +323 -0
- package/node_modules/fast-uri/test/resolve.test.js +87 -0
- package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
- package/node_modules/fast-uri/test/security-normalization.test.js +39 -0
- package/node_modules/fast-uri/test/security.test.js +133 -0
- package/node_modules/fast-uri/test/serialize.test.js +151 -0
- package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
- package/node_modules/fast-uri/test/uri-js.test.js +912 -0
- package/node_modules/fast-uri/test/util.test.js +38 -0
- package/node_modules/fast-uri/tsconfig.json +9 -0
- package/node_modules/fast-uri/types/index.d.ts +60 -0
- package/node_modules/fast-uri/types/index.test-d.ts +17 -0
- package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
- package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
- package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
- package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
- package/node_modules/json-schema-traverse/LICENSE +21 -0
- package/node_modules/json-schema-traverse/README.md +95 -0
- package/node_modules/json-schema-traverse/index.d.ts +40 -0
- package/node_modules/json-schema-traverse/index.js +93 -0
- package/node_modules/json-schema-traverse/package.json +43 -0
- package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
- package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
- package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
- package/node_modules/require-from-string/index.js +34 -0
- package/node_modules/require-from-string/license +21 -0
- package/node_modules/require-from-string/package.json +28 -0
- package/node_modules/require-from-string/readme.md +56 -0
- package/package.json +51 -0
- package/scripts/api-call.mjs +59 -0
- package/scripts/auth.mjs +262 -0
- package/scripts/build-skill-payload.mjs +338 -0
- package/scripts/cleanup.mjs +166 -0
- package/scripts/install-paths.mjs +146 -0
- package/scripts/postinstall.mjs +218 -0
- package/scripts/postpack.mjs +43 -0
- package/scripts/prepack.mjs +222 -0
- package/scripts/tty-menu.mjs +100 -0
- package/skill/README.md +55 -0
- package/skill/SKILL.md +138 -0
- package/skill/catalog.json +406 -0
- package/skill/design-rules.md +282 -0
- package/skill/design-system.md +235 -0
- package/skill/docs/SKELETON-SHELL.md +120 -0
- package/skill/docs/bottom-buttons.md +155 -0
- package/skill/docs/control/button.md +147 -0
- package/skill/docs/control/calendar-navigator.md +143 -0
- package/skill/docs/control/calendar.md +128 -0
- package/skill/docs/control/check-box.md +117 -0
- package/skill/docs/control/combo.md +293 -0
- package/skill/docs/control/embed.md +211 -0
- package/skill/docs/control/image-box.md +237 -0
- package/skill/docs/control/input-date.md +175 -0
- package/skill/docs/control/input-file.md +192 -0
- package/skill/docs/control/input-mask.md +89 -0
- package/skill/docs/control/input-number.md +55 -0
- package/skill/docs/control/input-text.md +73 -0
- package/skill/docs/control/label.md +127 -0
- package/skill/docs/control/multi-input-box.md +51 -0
- package/skill/docs/control/radio-box.md +150 -0
- package/skill/docs/control/search.md +163 -0
- package/skill/docs/control/tab.md +240 -0
- package/skill/docs/control/tree.md +278 -0
- package/skill/docs/control.md +264 -0
- package/skill/docs/data-objects.md +278 -0
- package/skill/docs/data-sources.md +215 -0
- package/skill/docs/events.md +467 -0
- package/skill/docs/group.md +146 -0
- package/skill/docs/index.json +125 -0
- package/skill/docs/mockup-data.md +186 -0
- package/skill/docs/node.md +32 -0
- package/skill/docs/scenario.md +112 -0
- package/skill/docs/service/CustomSystem.md +139 -0
- package/skill/docs/service/Firestore.md +125 -0
- package/skill/docs/service/FlexAutoQuery.md +128 -0
- package/skill/docs/service/FlexSQL.md +96 -0
- package/skill/docs/service/Flextudio API.md +161 -0
- package/skill/docs/service/Flextudio.md +87 -0
- package/skill/docs/service/GoogleSheet.md +71 -0
- package/skill/docs/service/README.md +127 -0
- package/skill/docs/service/ksystem.md +76 -0
- package/skill/docs/service-binding.md +228 -0
- package/skill/docs/step.md +546 -0
- package/skill/docs/style-objects.md +183 -0
- package/skill/examples/README.md +147 -0
- package/skill/examples/basic/basic-list-detail.json +2521 -0
- package/skill/examples/basic/delivery-address-popup.json +2175 -0
- package/skill/examples/basic/fixedtop-floating-form.json +1524 -0
- package/skill/examples/basic/search-period-popup.json +1524 -0
- package/skill/examples/design/booking-wizard-3step.json +1335 -0
- package/skill/examples/design/list-detail-form-3step.json +1516 -0
- package/skill/examples/design/list-filter-2step.json +1365 -0
- package/skill/examples/design/list-filter-detail-3step.json +1570 -0
- package/skill/examples/design/result-entry-wizard-4step.json +1861 -0
- package/skill/examples/index.json +150 -0
- package/skill/examples/intent/mock-employee-list.json +54 -0
- package/skill/examples/intent/script-cart-flow.json +96 -0
- package/skill/examples/intent/script-dialog-confirm.json +61 -0
- package/skill/intent-rules.md +552 -0
- package/skill/intent-system.md +118 -0
- package/skill/patterns/atom/badge.json +103 -0
- package/skill/patterns/atom/button.json +111 -0
- package/skill/patterns/atom/checkbox.json +70 -0
- package/skill/patterns/atom/segmented-radio.json +92 -0
- package/skill/patterns/atom/switch.json +57 -0
- package/skill/patterns/index.json +471 -0
- package/skill/patterns/molecule/checklist.json +107 -0
- package/skill/patterns/molecule/input-action.json +355 -0
- package/skill/patterns/molecule/input-button.json +212 -0
- package/skill/patterns/molecule/input-pair.json +284 -0
- package/skill/references/build-sequence.md +55 -0
- package/skill/references/patterns-cheatsheet.md +87 -0
- package/skill/references/spec-evolve/README.md +43 -0
- package/skill/references/spec-evolve/conventions.md +92 -0
- package/skill/references/spec-evolve/data-connection.md +102 -0
- package/skill/references/spec-evolve/intake.md +41 -0
- package/skill/references/spec-evolve/key-roles.md +44 -0
- package/skill/references/spec-evolve/lint.md +27 -0
- package/skill/references/spec-evolve/mockup.md +50 -0
- package/skill/references/spec-evolve/query-screens.md +66 -0
- package/skill/references/spec-evolve/routing.md +43 -0
- package/skill/references/spec-evolve/spec-format.md +76 -0
- package/skill/references/spec-evolve/templates/master-detail.spec.md +97 -0
- package/skill/references/spec-evolve/templates/query-screen.spec.md +96 -0
- package/skill/references/spec-evolve/templates/static-prototype.spec.md +54 -0
- package/skill/references/spec-evolve/templates-index.json +26 -0
- package/skill/rules.md +400 -0
- package/skill/schemas/bottom-buttons.schema.json +134 -0
- package/skill/schemas/control/_base.schema.json +1296 -0
- package/skill/schemas/control/button.schema.json +55 -0
- package/skill/schemas/control/calendar-navigator.schema.json +164 -0
- package/skill/schemas/control/calendar.schema.json +18 -0
- package/skill/schemas/control/check-box.schema.json +41 -0
- package/skill/schemas/control/combo.schema.json +23 -0
- package/skill/schemas/control/embed.schema.json +30 -0
- package/skill/schemas/control/image-box.schema.json +49 -0
- package/skill/schemas/control/input-date.schema.json +27 -0
- package/skill/schemas/control/input-file.schema.json +139 -0
- package/skill/schemas/control/input-mask.schema.json +45 -0
- package/skill/schemas/control/input-number.schema.json +24 -0
- package/skill/schemas/control/input-text.schema.json +24 -0
- package/skill/schemas/control/label.schema.json +113 -0
- package/skill/schemas/control/multi-input-box.schema.json +19 -0
- package/skill/schemas/control/other.schema.json +24 -0
- package/skill/schemas/control/radio-box.schema.json +87 -0
- package/skill/schemas/control/search.schema.json +23 -0
- package/skill/schemas/control/tab.schema.json +112 -0
- package/skill/schemas/control/tree.schema.json +83 -0
- package/skill/schemas/control.schema.json +30 -0
- package/skill/schemas/data-objects.schema.json +161 -0
- package/skill/schemas/data-sources.schema.json +184 -0
- package/skill/schemas/design-system/design.schema.json +496 -0
- package/skill/schemas/events.schema.json +272 -0
- package/skill/schemas/group.schema.json +133 -0
- package/skill/schemas/index.json +362 -0
- package/skill/schemas/naming-objects.schema.json +133 -0
- package/skill/schemas/node.schema.json +24 -0
- package/skill/schemas/patterns/atom/badge.schema.json +44 -0
- package/skill/schemas/patterns/atom/button.schema.json +70 -0
- package/skill/schemas/patterns/atom/checkbox.schema.json +39 -0
- package/skill/schemas/patterns/atom/segmented-radio.schema.json +49 -0
- package/skill/schemas/patterns/atom/switch.schema.json +27 -0
- package/skill/schemas/patterns/molecule/checklist.schema.json +63 -0
- package/skill/schemas/patterns/molecule/input-action.schema.json +251 -0
- package/skill/schemas/patterns/molecule/input-button.schema.json +141 -0
- package/skill/schemas/patterns/molecule/input-pair.schema.json +210 -0
- package/skill/schemas/scenario.schema.json +161 -0
- package/skill/schemas/service/CustomSystem.schema.json +41 -0
- package/skill/schemas/service/Firestore.schema.json +28 -0
- package/skill/schemas/service/FlexAutoQuery.schema.json +35 -0
- package/skill/schemas/service/FlexSQL.schema.json +33 -0
- package/skill/schemas/service/Flextudio API.schema.json +115 -0
- package/skill/schemas/service/Flextudio.schema.json +26 -0
- package/skill/schemas/service/GoogleSheet.schema.json +31 -0
- package/skill/schemas/service/_base.schema.json +31 -0
- package/skill/schemas/service/ksystem.schema.json +36 -0
- package/skill/schemas/service-binding.schema.json +51 -0
- package/skill/schemas/step.schema.json +258 -0
- package/skill/schemas/style-objects.schema.json +155 -0
- package/skill/skill-guides/README.md +50 -0
- package/skill/skill-guides/control-options.md +126 -0
- package/skill/skill-guides/events.md +61 -0
- package/skill/skill-guides/failure-discipline.md +95 -0
- package/skill/skill-guides/index.json +40 -0
- package/skill/skill-guides/prompt-interview.md +92 -0
- package/skill/skill-guides/scripts.md +169 -0
- package/skill/skill-guides/step-navigation.md +98 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# data-connection โ B ๊ฒฝ๋ก: ๋ง์คํฐ-๋ํ
์ผ โ ๋ฐ์ดํฐ์ฐ๊ฒฐ ๋งคํ
|
|
2
|
+
|
|
3
|
+
B ๊ฒฝ๋ก(๊ตฌ์กฐ ์ ๊ณต ๋๋ ๋ชฉ๋ก/์กฐํ์ฑ ์ถ๋ก )์์ ๋ง์คํฐ-๋ํ
์ผ์ ๋ฐ์ดํฐ์ฐ๊ฒฐ๋ก ์ค๊ณํ๋ ๊ท์น. **์ ํํ ํ๋ ๋ฌธ๋ฒ์ ๊ฐ์ ์คํฌ์ `docs/group.md`ยท`docs/data-objects.md`ยท`docs/data-sources.md` ์ `intent-rules.md` ๊ฐ ์ ๋ณธ** โ ์ฌ๊ธฐ์๋ keyRole โ DataUsage ๋งคํ๊ณผ ๋ชฉ์
๊ณํ๋ง ๋ค๋ฃฌ๋ค.
|
|
4
|
+
|
|
5
|
+
## DataUsage 4๋ชจ๋ (์ด๋ค keyRole ์ด ์ด๋๋ก)
|
|
6
|
+
|
|
7
|
+
| ์ํฉ | DataUsage | ์ ์ฉ |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| ๋ชฉ๋ก/์นด๋ ๋ฐ๋ณต ๋ ๋ (๋ํ
์ผยท๋ง์คํฐ๋ชฉ๋ก) | `query` | Group `UseDataConnection:true` + `DataConnection{TargetType:'category', DataUsage:'query', CategoryName}`. ์นํฐ ์๋งํผ ๋ณต์ |
|
|
10
|
+
| **๋จ๊ฑด ๋ง์คํฐ/ํค๋ ๋ฐ์ธ๋ฉ** (๋ฐ๋ณต ์๋, 1๊ฑด ํ์) | `default` | Group `UseDataConnection:true` + `DataConnection{DataUsage:'default', CategoryName}`. ๊ทธ ์นดํ
๊ณ ๋ฆฌ 1์นํฐ๋ฅผ ๋จ๊ฑด ๋ฐ์ธ๋ฉ |
|
|
11
|
+
| ์ ๊ท ์
๋ ฅ (๋น ํผ ์ ์ฅ) | `new` | mock ๋ฉด์ โ ๋น ์นดํ
๊ณ ๋ฆฌ์ ์ต์ง addSector ๊ธ์ง |
|
|
12
|
+
| ๋ฆฌ์คํธ์์ 1๊ฑด ์ ํํด ์์ | `update` | activeSector ๋ฐ์ ํผ ์ฑ์ |
|
|
13
|
+
| ์ ํ ๊ฑด ์ฝ๊ธฐ์ ์ฉ ์์ธ | `detail` | `UseTargetSector:true` + `Status:['active']`, ์
๋ ฅ ๋ถ๊ฐ ํ์ |
|
|
14
|
+
|
|
15
|
+
## ๋ง์คํฐ-๋ํ
์ผ(1:N) = ๋ถ๋ชจ + ์์ query + (์กฐ์ธํค)
|
|
16
|
+
|
|
17
|
+
keyRole ๋งคํ:
|
|
18
|
+
- `master` โ ๋ถ๋ชจ Group ๋ฐ์ธ๋ฉ. **๋ชฉ๋กํ์ด๋ฉด `DataUsage:"query"`(์นํฐ ์๋งํผ ๋ฐ๋ณต), ๋จ๊ฑด ํค๋ํ(์
๋ ฅ ํ๋ฉด ๋ฑ)์ด๋ฉด `DataUsage:"default"`(1์นํฐ ๋จ๊ฑด).**
|
|
19
|
+
- `detail` โ ๋ถ๋ชจ Group **์์ชฝ**์ ์์ Group `DataUsage:"query"` + `TargetSector.Filters:[{FilterType:"Parent"}]`.
|
|
20
|
+
- `link` โ ๊ทธ Parent ํํฐ์ ์กฐ์ธ ํค: ๋ถ๋ชจํค `DCParentKey` / ์์ํค `DCChildKey` ๋ก ์ง์ .
|
|
21
|
+
- `detail`(์์ธ ๋ณด๊ธฐ ํ๋ฉด/์์ญ) โ `DataUsage:"detail"`.
|
|
22
|
+
|
|
23
|
+
์ฆ sample_spec ์ "๋ง์คํฐ Group + ๋ํ
์ผ ํ ๋ฐ๋ณต" ์ B ์์ **๋ถ๋ชจ Group(๋ฐ์ธ๋ฉ) ์์ ์์ query Group(Parent ํํฐ)** ์ผ๋ก ํํ๋๋ค. ๋จ์ 1๋จ ๋ชฉ๋ก(๋ถ๋ชจ-์์ ์๋)์ด๋ฉด ์์ ์์ด query Group ํ๋.
|
|
24
|
+
|
|
25
|
+
### โ
๋ง์คํฐ๋ ๋ฐ๋์ ๋ฐ์ธ๋ฉ + ๋ถ๋ชจ-์์ ์กฐ์ธ (์ ์ ๋ง์คํฐ ๊ธ์ง)
|
|
26
|
+
|
|
27
|
+
์
๋ ฅ/๋จ๊ฑด ํ๋ฉด์ด๋ผ๋ **๋ง์คํฐ(ํค๋)๋ฅผ ๋น์ฐ๊ฒฐ ์ ์ ์ผ๋ก ๋๊ณ ๋ํ
์ผ๋ง query ํ์ง ๋ง ๊ฒ**(S-03 ์คํจ). ๋ง์คํฐ๋ ์๊ธฐ ์นดํ
๊ณ ๋ฆฌ์ ๋ฐ์ธ๋ฉํ๊ณ , ๋ํ
์ผ์ ๊ทธ **์์**์ผ๋ก ์กฐ์ธํ๋ค:
|
|
28
|
+
|
|
29
|
+
- ๋ง์คํฐ Group โ `UseDataConnection:true`, `DataUsage:"default"`(๋จ๊ฑด) ๋๋ `"query"`(๋ชฉ๋ก), `CategoryName:"CtgImport"`. ํค๋ ํ์ ๋ผ๋ฒจ์ `LabelCKey` ๋ก ๋ง์คํฐ ์นํฐ ํ๋ ๋ฐ์ธ๋ฉ.
|
|
30
|
+
- ๋ํ
์ผ(ํ๋ชฉ์ ๋ณด) Group โ ๋ง์คํฐ Group **์์ชฝ**์์ `DataUsage:"query"`, `CategoryName:"CtgImportItem"`, `TargetSector.Filters:[{FilterType:"Parent"}]`, `DCParentKey`/`DCChildKey` ๋ก ๋ง์คํฐ ํค์ ์กฐ์ธ.
|
|
31
|
+
- Init `intent.mock` ์ ๋ง์คํฐ ์นดํ
๊ณ ๋ฆฌ 1์นํฐ + ๊ทธ์ ์ํ ์์ ์นดํ
๊ณ ๋ฆฌ N์นํฐ(์กฐ์ธํค ์ผ์น).
|
|
32
|
+
|
|
33
|
+
### โ
๊ฐ์ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ์ฌ๋ฌ ๊ทธ๋ฃน์ด ์ฐ๋ฉด ์์ ๊ทธ๋ฃน ํ๋๋ก ๋ฌถ์ด ์ฐ๊ฒฐ
|
|
34
|
+
|
|
35
|
+
๋ง์คํฐ ์นด๋์ ์์ฝ(์: `MasterCard` + `MasterSummary`)์ด **๊ฐ์ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก ์ฐ๊ฒฐ**ํ๋ฉด ์ ๋๋ค(S-02 ์คํจ: CtgMaster ๋ฅผ ๋ ๊ทธ๋ฃน์ด ์ค๋ณต ์ฐ๊ฒฐ). **๊ณตํต ์์ Group ํ๋๋ก ๊ฐ์ธ ๊ทธ ์์ Group ์๋ง `DataConnection` ์ ๊ฑด๋ค.** ์์ชฝ ์์ ๊ทธ๋ฃน๋ค์ ๊ฐ์ ์นํฐ ์ปจํ
์คํธ๋ฅผ ์์ํ๋ฏ๋ก ๊ฐ์ ์ฐ๊ฒฐํ์ง ์๊ณ `LabelCKey`/`Ckeys` ๋ฐ์ธ๋ฉ๋ง ํ๋ค.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
๋ถ๋ชจ๋ํผ Group(UseDataConnection:true, DataUsage:"default"/"query", CategoryName:"CtgMaster") โ ์ฐ๊ฒฐ์ ์ฌ๊ธฐ ํ ๋ฒ
|
|
39
|
+
โ MasterCard Group(UseDataConnection:false) โ ๊ฐ์ ์นํฐ ์์, Label LabelCKey ๋ฐ์ธ๋ฉ
|
|
40
|
+
โ MasterSummary Group(UseDataConnection:false) โ ๊ฐ์ ์นํฐ ์์, Label LabelCKey ๋ฐ์ธ๋ฉ
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## ๊ทธ๋ฃน์ ํ๋ ๊ฒน ๋ ๊ฐ์ผ๋ค (์ค์ฒฉ ๋ํ โ ์์ผ๋ฉด ์คํจ)
|
|
44
|
+
|
|
45
|
+
์ ๋ต ์๋๋ฆฌ์ค๋ ๋ฐ๋ณต/๋ฐ์ดํฐ์ฐ๊ฒฐ ์์ญ์ **์ฌ๋ฌ ๊ฒน Group ์ผ๋ก ๊ฐ์ผ๋ค**(๊ด์ฐฐ๋ ์ค์ฒฉ ๊น์ด 6~8). ์์ฑ๋ฌผ์ด ์์ผ๋ฉด(๊น์ด 2~3) ๋ฐ์ดํฐ์ฐ๊ฒฐ ๋ํ์ด ๋ถ์คํด ๋ ์ด์์ยท๋ฐ์ธ๋ฉ์ด ๊นจ์ง๋ค. ํ์ค ๋ํ:
|
|
46
|
+
|
|
47
|
+
- **์กฐํ ๊ฒฐ๊ณผ**: `์คํฌ๋กค Group(ScrollType:"ScrollY", UseDataConnection:false) > ๋ฆฌ์คํธ Group(UseDataConnection:true, DataUsage:"query") > row Group > [๋ง์คํฐ์น์
+ ๋ํ
์ผ์น์
]`. row ์์์ ๋ง์คํฐ ์ ๋ณด์ ์์ ๋ชฉ๋ก์ ๋ค์ Group ์ผ๋ก ๋ถ๋ฆฌ(Border-bottom ์ผ๋ก ๊ตฌ๋ถ).
|
|
48
|
+
- **์
๋ ฅ**: `๋ง์คํฐ Group(ํฐ ๋ฐฐ๊ฒฝ) + graybg Group(ํ์, ScrollY) > contentsWrap Group(ํฐ ๋ฐ์ค, padding/radius) > ๋ฆฌ์คํธ Group > row Group`.
|
|
49
|
+
- ๋ฐ์ดํฐ์ฐ๊ฒฐ(`UseDataConnection:true` + `DataConnection`)์ **๋ฐ๋ณต์ด ์ผ์ด๋๋ ๊ทธ Group** ์ ๋ถ์ธ๋ค(๋ฐ๊นฅ ์คํฌ๋กค ๋ํผ๋ false). ํ ๊ฒน ๋ ๊ฐ์ธ query ๊ทธ๋ฃน์ ๊ฒฉ๋ฆฌํ๋ฉด ํค๋ยท์์ฝ์ ๊ฐ์ ์คํฌ๋กค ์์ ๋๋ฉด์๋ ๋ฐ๋ณต๋ง ๋ฐ์ธ๋ฉ๋๋ค.
|
|
50
|
+
- ์์ญ ๋ถ๋ฆฌ๋ `DisplayStyle.rowGapValue`(์ 20px) + Padding + Border ๋ก.
|
|
51
|
+
|
|
52
|
+
## ๋ง์คํฐ ์์ญ๋ ๋ฐ์ดํฐ์ฐ๊ฒฐ + ์ ํ ๋ฐ์ (์ ์ ์ผ๋ก ๋์ง ๋ง ๊ฒ)
|
|
53
|
+
|
|
54
|
+
๋ง์คํฐ/ํค๋ ์์ญ์ ์ ๋ถ ์ ์ ์ผ๋ก๋ง ๋์ง ์๋๋ค. ์ ํยทํ์๊ฐ ๋ฐ์ดํฐ๋ก ํ๋ฅด๊ฒ ํ๋ค:
|
|
55
|
+
|
|
56
|
+
- **๋จ๊ฑด ๋ง์คํฐ ์นด๋**(๋ฐ๋ณต ์๋)์ ํ์ ๋ผ๋ฒจ์ `LabelCKey` ๋ก ๋ง์คํฐ ์นดํ
๊ณ ๋ฆฌ ์นํฐ์ ๋ฐ์ธ๋ฉ(ํ์ค์ mock 1์นํฐ). ์ ๋ง ๊ณ ์ ๋ฌธ๊ตฌ๋ง ์ ์ .
|
|
57
|
+
- **์ข
์ ์ ํ(ComboโCombo)**: ์ถ๊ณ ์ฐฝ๊ณ ์ ํ โ ์
๊ณ ์ฐฝ๊ณ ์ต์
์ด ๋ฌ๋ผ์ง๋ ์ข
์์, ์์ Combo ์ Dialog `ComboList` ์ `Ckeys` ๋ฅผ ๋ฐ์ธ๋ฉํ๊ณ ๊ทธ ์ต์
์นดํ
๊ณ ๋ฆฌ์ **mock ์ ๋ค์ค(์ต์ 2 ์ต์
์ด์) ์ผ๋ก** ๋ฐ์ ์ ํ ์ข
์์ด ์๊ฐ์ ์ผ๋ก ๋๋ฌ๋๊ฒ ํ๋ค. (ํ๋กํ ํ์
์์ ์ค์ ํํฐ ๋ก์ง ๋์ mock ์ต์
์ผ๋ก ํํ.)
|
|
58
|
+
- ๋ง์คํฐ ์ ํ๊ฐ์ ๋ค์ Step ์ผ๋ก ๋๊ธธ ๋ ์นด๋/๋ฒํผ `UseMove:true` + `MoveSteps.MoveStepOrder` + ๊ฐ Step `MoveTo:"Next"`(๋ค๋น ์ฑ๋). ์คํฌ๋ฆฝํธ ํ๋ฆ์ ์ด ๊ธ์ง.
|
|
59
|
+
|
|
60
|
+
## ์ฝ๋ ์
ํค ๋ฐ์ธ๋ฉ (์ ์ ํ
์คํธ ๊ธ์ง)
|
|
61
|
+
|
|
62
|
+
- ๋ฐ๋ณต Group ์์์ ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๋ ํญ๋ชฉ์ ์นํฐ ํ๋๋ฅผ **`LabelCKey`/`Ckeys` ๋ก ๋ฐ์ธ๋ฉ**ํ๋ค. ์ ์ `labeltext` ๋ก ๋ฐ์ผ๋ฉด ๋ชจ๋ ์นด๋๊ฐ ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ๋๋ค.
|
|
63
|
+
- 1๋ฒ๋ง ๋ณด์ผ ์์(์ ๋ชฉยท์ด๊ฑด์ ์์ฝยท"์ ๊ท" ๋ฒํผ)๋ **query Group ๋ฐ๊นฅ** ๋น์ฐ๊ฒฐ ๋ํผ์ ๋๋ค.
|
|
64
|
+
- `CategoryName` ์ `Ctg` ์ ๋ + PascalCase (์: `CtgOrder`, `CtgOrderItem`).
|
|
65
|
+
- **์ฝ๋ ์
ํค(`Ckeys`/`LabelCKey`/`CtrlDisplayCkey`)์ `f` ์ ๋ ๊ธ์ง.** ์คํ์ ํค/ํ๋๋ช
์ด ๋ช
์๋๋ฉด **๋์๋ฌธ์ยทํ๊ธฐ ๊ทธ๋๋ก**(์ `LotNo`ยท`BLNO`, ์์ camelCase ๋ณํ ๊ธ์ง), ๋ฏธ์ ๊ณต์ด๋ฉด ์๋ฏธ์๋ camelCase. โ `fOrderNo`ยท`fLotNo`.
|
|
66
|
+
- ์์ฝ์ด ๊ธ์ง: `status`/`isActive`/`length` ๋ฑ + JS ์์ฝ์ด (์ ๋ณธ: `schemas/naming-objects.schema.json`).
|
|
67
|
+
|
|
68
|
+
## ๋ชฉ์
๋๋ฐ (ํ์)
|
|
69
|
+
|
|
70
|
+
DataConnection/Ckeys ๋ฅผ ๋ฐ์ผ๋ฉด **๋ฐ๋์ ์์ Step.Init ์ `intent.mock` ์ผ๋ก ํด๋น ์นดํ
๊ณ ๋ฆฌ mock ์นํฐ๋ฅผ ๋๋ฐ**ํ๋ค โ ์์ผ๋ฉด `[proto]` ์ฐจ๋จ(SKILL.md "๋ฐ์ดํฐ ํ์ ๊ฒฐ์ " ์ฐธ์กฐ).
|
|
71
|
+
|
|
72
|
+
- ๋ถ๋ชจยท์์ ๋ ๋ค mock ์ ๋ฐ์ ์กฐ์ธ์ด ์ค์ ๋ก ๊ทธ๋ ค์ง๊ฒ ํ๋ค (๋ถ๋ชจ 2๊ฑด+ / ๊ฐ ๋ถ๋ชจ์ ์์ ์ฌ๋ฌ ๊ฑด).
|
|
73
|
+
- `new` ๋ชจ๋ ์นดํ
๊ณ ๋ฆฌ์ ๋น addSector ๋ฅผ ์ต์ง๋ก ๋ฃ์ง ์๋๋ค(mock ๋ฉด์ ).
|
|
74
|
+
- ๋ฐฐ์น = named handler: `Step.Events.Init:"Step1Init"` + `scenario.Events.Step1Init` ์์ `intent.mock`.
|
|
75
|
+
|
|
76
|
+
## ์คํ(.spec.md)์ ์ ๋ ๋ฒ
|
|
77
|
+
|
|
78
|
+
frontmatter:
|
|
79
|
+
```yaml
|
|
80
|
+
route: B
|
|
81
|
+
dcModes: [query, detail, parent-child]
|
|
82
|
+
categories:
|
|
83
|
+
CtgOrder: { role: master, keys: [์ฃผ๋ฌธ๋ฒํธ], fields: [์ฃผ๋ฌธ์ผ์, ํฉ๊ณ๊ธ์ก] }
|
|
84
|
+
CtgOrderItem: { role: detail, parentKey: ์ฃผ๋ฌธ๋ฒํธ, childKey: ์ฃผ๋ฌธ๋ฒํธ, fields: [์ํ๋ช
, ์๋, ๋จ๊ฐ] }
|
|
85
|
+
```
|
|
86
|
+
๋ณธ๋ฌธ Step ์ค๋ช
์ "๋ถ๋ชจ query โ ์์ query(Parent ํํฐ, ์ฃผ๋ฌธ๋ฒํธ ์กฐ์ธ) โ ์์ธ detail" ์ "Init mock: ์ฃผ๋ฌธ 2๊ฑด + ๊ฐ ์ํ 3๊ฑด" ์ ์ ๋๋ค. ์์ธํ ๋ณธ๋ฌธ ํํ๋ `templates/master-detail.spec.md`.
|
|
87
|
+
|
|
88
|
+
## โ
์์ฑ ํ ๋ฐ์ดํฐ์ฐ๊ฒฐ ๋ณด์ฅ ๊ฒ์ดํธ (์คํ ๊ฒฝ๋ก Phase 2 ์งํ, ๋ธ๋กํน)
|
|
89
|
+
|
|
90
|
+
`/flex-spec` ์คํ ๊ฒฝ๋ก๋ Phase 2(์๋๋ฆฌ์ค ์์ฑ) ๊ฐ ๋๋๋ฉด **๋ฐ๋์** ์ด ๊ฒ์ดํธ๋ฅผ ํต๊ณผํด์ผ ํ๋ค. ์ด๊ฑด `lint.md` ์ ๋น๋ธ๋กํน ๋ณด๊ณ ์ ๋ค๋ฅธ **๋ธ๋กํน ์ ๊ฒ**์ด๋ค โ ๋ฐ์ดํฐ์ฐ๊ฒฐ์ด ๋น ์ก์ผ๋ฉด ํต๊ณผ์ํค์ง ๋ง๊ณ **์ํ ์๋๋ฆฌ์ค๋ฅผ ์ฐธ์กฐํด ์ถ๊ฐ ์์ ์ผ๋ก ์ฃผ์
**ํ๋ค.
|
|
91
|
+
|
|
92
|
+
1. **์ ๊ฒ** โ ์ฐ์ถ ์๋๋ฆฌ์ค๋ฅผ ๋ณธ๋ค. ํ๋ฉด์ด **๋ชฉ๋กยท์นด๋ยท"~๋ณ"ยท"~๋ด์ญ"ยท์กฐํยท๋ฐ๋ณตยท์ ํ์ง(Combo/Search)ยท๋ง์คํฐ-๋ํ
์ผ** ์ฑ๊ฒฉ์ธ๋ฐ ์๋๋ฆฌ์ค ์ ์ฒด์ `UseDataConnection:true` + `DataConnection` + ์์ Step.Init `intent.mock` ์ด **0๊ฑด์ด๋ฉด ๊ฒ์ดํธ ์คํจ** โ ๋ค์ ๋จ๊ณ๋ก.
|
|
93
|
+
2. **์ํ ์ฐธ์กฐ** โ `examples/index.json` ์์ **๊ตฌ์กฐ(`stepCount`/`patterns`/`controlTypes`)๊ฐ ์ ์ฌํ `design/` ์ํ ์๋๋ฆฌ์ค**๋ฅผ ๊ณ ๋ฅธ๋ค. ๋๋ฉ์ธ ๊ธ์ ์ผ์น๊ฐ ์๋๋ผ ๊ตฌ์กฐ๋ก ๊ณ ๋ฅธ๋ค. **๋ฐ๋์ ๋จผ์ `flex-scenario validate --no-write <ํ๋ณด example>` ๋ก `ok:true` ๋ฅผ ํ์ธ**ํด baseline ์๊ฒฉ์ ๊ฒ์ฆํ๋ค(`ok:false` ์์ ๋ฅผ ๊ธฐ์ค ์ผ์ง ๋ง ๊ฒ. โ
example ๊ฒ์ฆ์ `--no-write` ํ์ โ ๊ธฐ๋ณธ validate ๋ `ok:true` ์ ๋ณธ๋ฌธ์ ์
๋ ฅ ํ์ผ์ write-back ํด ์ฐธ์กฐ ์์ ๋ฅผ ๋ณํ์ํจ๋ค).
|
|
94
|
+
3. **key-diff โ ์ฃผ์
** โ ๊ทธ ์ํ์ ๋ฐ์ดํฐ์ฐ๊ฒฐ ๋
ธ๋์ ๋ด ์ฐ์ถ๋ฌผ์ **ํค ๋จ์๋ก diff** ํ๋ค. ๋น ์ง ๊ฒ์ `Edit`(๋ถ๋ถ ์์ , ์ ์ฒด Write ๊ธ์ง)์ผ๋ก ์ฃผ์
ํ๋ค:
|
|
95
|
+
- ๋ฐ๋ณต/๋ชฉ๋ก Group โ `UseDataConnection:true` + `DataConnection{TargetType:'category', DataUsage:'query', CategoryName:'Ctgโฆ'}` + ์์ `Ckeys`/`LabelCKey`.
|
|
96
|
+
- ๋ง์คํฐ-๋ํ
์ผ์ด๋ฉด ๋ถ๋ชจ query(๋๋ ๋จ๊ฑด `default`) + ์์ query(`TargetSector.Filters:[{FilterType:'Parent'}]`, `DCParentKey`/`DCChildKey` ์กฐ์ธ) โ ์ด ์ ์์ชฝ "๋ง์คํฐ-๋ํ
์ผ(1:N)" ๊ท์น๋๋ก.
|
|
97
|
+
- ์์ Step.Init ์ named handler(`Step.Events.Init:"Step1Init"` + `scenario.Events.Step1Init` ์ `intent.mock`)๋ก ํด๋น ์นดํ
๊ณ ๋ฆฌ mock(๋ถ๋ชจ 2~3๊ฑด ร ์์ 2~3๊ฑด, ์กฐ์ธํค ์ผ์น) ๋๋ฐ.
|
|
98
|
+
- **์ ์ Label ๋ณต์ ๋ก ๋๋ง๊ฐ์ง ์๋๋ค.** ๋จ๊ฑด ๋ง์คํฐ/ํค๋๋ ์ ์ ์ผ๋ก ๋์ง ๋ง๊ณ `DataUsage:"default"` + `LabelCKey` ๋ก ๋ฐ์ธ๋ฉํ๋ค.
|
|
99
|
+
4. **์์ธ (๊ฒ์ดํธ ๋ฉด์ )** โ ์ง์ง ๋จ๊ฑด ๊ณ ์ ๋ฌธ๊ตฌ๋ง ์๋ ํ์ ํ๋ฉด์ด๊ฑฐ๋, ์ค์ `scenario.DataSources`(`Fixed`/`Grid`) ๊ฐ ์ฑ์์ ธ ์ ์ ๋ฐ์ธ๋ฉ์ธ ๊ฒฝ์ฐ๋ง ๋ฐ์ดํฐ์ฐ๊ฒฐ ์์ด ํต๊ณผ. ์ ๊ท ์
๋ ฅ(`DataUsage:"new"`) ํผ์ mock ๋ฉด์ (๋น addSector ๊ธ์ง).
|
|
100
|
+
5. **์ฌ๊ฒ์ฆ** โ ์ฃผ์
ํ `flex-scenario validate <scenario>` ๋ฅผ ๋ค์ `ok:true` ๊น์ง ํต๊ณผ์ํจ๋ค. (`[proto]`/`[mock-init]` ์ด ๊ฒ์ดํธ์ ๊ฐ์ ์ ํธ โ validate ๊ฐ ๋๋ฐ ์ฐจ๋จํด ์ค๋ค.)
|
|
101
|
+
|
|
102
|
+
> ์ง์ ์์ฑ(๊ธฐ๋ณธ) ๊ฒฝ๋ก์๋ ๋น/์ ์ ํ๊ท ๊ธ์ง๋ ์ ์ฉ๋์ง๋ง(SKILL.md "๋ฐ์ดํฐ ํ์ ๊ฒฐ์ "), ์ด **"์ํ ์ฐธ์กฐ ํ ์ถ๊ฐ ์์ ์ผ๋ก ์ฃผ์
"ํ๋ ๋ธ๋กํน ๊ฒ์ดํธ๋ ์คํ ๊ฒฝ๋ก ์ ์ฉ**์ด๋ค โ ์คํ ๊ฒฝ๋ก๋ ๋ฐ์ดํฐ์ฐ๊ฒฐ์ ๋๊น์ง ๋ณด์ฅํ๋ค.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# intake โ ์
๋ ฅ ๋ชจ๋ฌ๋ฆฌํฐ ๋ฌด๊ด ์ถ์ถ
|
|
2
|
+
|
|
3
|
+
ํ๋ฉด์ ์์๋ **์์
/ ํ / ์์ ํ
์คํธ / ์บก์ฒ๋ณธ(์ด๋ฏธ์ง) / ํ ์ค ์์ฒญ** ์ด๋ค ํํ๋ก๋ ์จ๋ค. ํ์์ ๋จ์ ์ง์ง ๋ง ๊ฒ. ๋ชฉํ๋ ํ์์ด ์๋๋ผ ๊ฑฐ๊ธฐ์ **๊ณตํต ํ๋ ๋ชฉ๋ก**์ ๋ฝ๋ ๊ฒ์ด๋ค.
|
|
4
|
+
|
|
5
|
+
## ๋ชจ๋ฌ๋ฆฌํฐ๋ณ ์ฝ๋ ๋ฒ
|
|
6
|
+
|
|
7
|
+
| ๋ชจ๋ฌ๋ฆฌํฐ | ๋ฐฉ๋ฒ |
|
|
8
|
+
|---|---|
|
|
9
|
+
| ์บก์ฒ/์ด๋ฏธ์ง | `Read` ๋ก ์ด๋ฏธ์ง๋ฅผ ์ง์ ๋ณธ๋ค โ ๋ ์ด์์ยท๋ผ๋ฒจยท๋ฐ๋ณต ๋ธ๋กยท์
๋ ฅ์นธ์ ๋์ผ๋ก ์ฝ์ด ํ๋/๋ง์คํฐ-๋ํ
์ผ์ ์ถ์ถ |
|
|
10
|
+
| ์์
(.xlsx) | ์ํธ๋ฅผ ํ
์คํธ๋ก ๋คํํด ํ๋ฅผ ์ฝ๋๋ค. ์๋ "๊ด์ฐฐ๋ ์์
ํํ" ์ฐธ๊ณ (๊ฐ์ ์๋) |
|
|
11
|
+
| ํ/๋งํฌ๋ค์ด | ์ปฌ๋ผ ํค๋์์ ํญ๋ชฉ๋ช
ยท์ปจํธ๋กคยท์ค๋ช
์ ๋งคํ |
|
|
12
|
+
| ์์ ํ
์คํธ | ๋ฌธ์ฅ์์ ํญ๋ชฉยท๋์ยท๋ฐ๋ณต("~๋ชฉ๋ก", "~๋ณ๋ก")ยท์ ํ์ง๋ฅผ ์๋ณ |
|
|
13
|
+
| ํ ์ค ์์ฒญ | ์ถ์ถํ ๊ฒ ๊ฑฐ์ ์์ โ `routing.md` ์ "๊ตฌ์กฐ ๋ฏธ์ ๊ณต" ๊ฒฝ๋ก๋ก |
|
|
14
|
+
|
|
15
|
+
## ์ถ์ถ ๊ฒฐ๊ณผ = ๋ชจ๋ฌ๋ฆฌํฐ ๋ฌด๊ด ํ๋ ๋ชฉ๋ก
|
|
16
|
+
|
|
17
|
+
๊ฐ ํญ๋ชฉ์ ๋ค์์ผ๋ก ์ ๊ทํํ๋ค (์์ผ๋ฉด ๋น์ โ ํ์ ๋จ๊ณ๊ฐ ์ถ๋ก ):
|
|
18
|
+
|
|
19
|
+
- `name` โ ํญ๋ชฉ๋ช
(์: ๊ฑฐ๋์ฒ, Lot No, ์๋)
|
|
20
|
+
- `intent` โ ์
๋ ฅ ์๋: ํ์ / ์ ํ / ๋ ์ง / ์ฝ๋๋์ / ์ซ์ / ํ
์คํธ / ๋ฐ๋ณต๋ชฉ๋ก ์ค ํ๋ (์๋โ์ปจํธ๋กค์ `conventions.md`)
|
|
21
|
+
- `section` โ master / detail (๋๋ ๋ฏธ์)
|
|
22
|
+
- `visible` โ ํ์ / ์จ๊น / ๊ฐ์กฐ(์ค์)
|
|
23
|
+
- `usage` โ ์ ์ฅยท์์ / ์กฐํ์กฐ๊ฑด / ํ์์ ์ฉ ๋ฑ (์์ผ๋ฉด)
|
|
24
|
+
- `default` โ ๊ธฐ๋ณธ๊ฐ ๋จ์ (์: "ํ์ฌ์ผ -1month", "ํน์ ๊ณ ์ ๊ฐ ๋ํดํธ")
|
|
25
|
+
- `note` โ ๋์/ํต์ ์ค๋ช
์๋ฌธ
|
|
26
|
+
|
|
27
|
+
## ๊ด์ฐฐ๋ ์์
ํํ (๋ถ๋ก โ ๋ง๋๋ฉด ์ฐ๋ ํํธ, ๊ฐ์ ์๋)
|
|
28
|
+
|
|
29
|
+
๋จ์ผ ์ํธ, ํค๋ + ๋ ์น์
ํ๋ก ์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค:
|
|
30
|
+
|
|
31
|
+
- ํค๋ ํ: `ํ๋ก๊ทธ๋จ๋ช
` ยท `ํ๋ฉด๊ตฌ๋ถ`(์
๋ ฅ / ์กฐํ(์ผ๋ฐ)) ยท `๊ฐ๋ฐ๊ฐ์` ยท `ํ๋ฉด๋ช
` ยท `์ด๋ฒคํธ`(์ ์ฅ/์ญ์ /์ ๊ท/์กฐํ)
|
|
32
|
+
- `Master` ํ: `ํญ๋ชฉ์ฌ์ฉ์ฌ๋ถ | ํญ๋ชฉ๋ช
| ์ปจํธ๋กคํ์
| ํญ๋ชฉ์ค๋ช
| (์ฉ๋)`
|
|
33
|
+
- `Detail(ํ๋ชฉ์ ๋ณด)` ํ: ๋์ผ 5์ปฌ๋ผ
|
|
34
|
+
- `์ถ๊ฐ๊ณต์ ๋ด์ฉ`: ๋ฒํผ ๋์ยทํต์ ๋ก์ง ์์ ์์
|
|
35
|
+
|
|
36
|
+
๊ท์น:
|
|
37
|
+
- `ํญ๋ชฉ์ฌ์ฉ์ฌ๋ถ` = `์จ๊น` โ **๋
ธ๋ ์์ฑ ์ ์ธ**(์ ์ฅ ์ ์์คํ
์ด ์ฑ์ฐ๋ ํค์ผ ๋๊ฐ ๋ง์ โ ์ฑ๋ฒ/ํ์ฌ์ผ/๋ก๊ทธ์ธ๋ถ์ ๋ฑ). `์ค์` โ ๊ฐ์กฐ ์คํ์ผ. `ํ์` โ ์ผ๋ฐ.
|
|
38
|
+
- ๋ง์ง๋ง ์ปฌ๋ผ ์๋ฏธ๋ ํ๋ฉด๊ตฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ: ์
๋ ฅ=`์ ์ฅ/์์ `, ์กฐํ Master=`์กฐํ์กฐ๊ฑด`, ์กฐํ Detail=`์กฐํ์ฌ๋ถ`.
|
|
39
|
+
- `ํญ๋ชฉ์ค๋ช
` ์ ๊ธฐ๋ณธ๊ฐ ๋จ์ยท์ฐ๊ฒฐ ๋ก์ง(์์ฒ ํ๋ฉด ์กฐํ ๋ฑ)์ด ๋ค์ด์๋ค โ `default`/`note` ๋ก ์ฎ๊ธด๋ค.
|
|
40
|
+
|
|
41
|
+
> `์ปจํธ๋กคํ์
` ํ๊ธฐ(label/ComboBox/DateBox/Codehelp/FloatBox/TextBox โฆ)๊ฐ **๋ช
์๋๋ฉด ๊ทธ๋๋ก ์ง์ญ**ํ๋ค โ `conventions.md` ยง1 "์ง์ญ(๊ณ ์ ๋งคํ)" ํ. ํญ๋ชฉ์ค๋ช
์ "์กฐํ/์์ฒ/์ฐธ์กฐ" ๋จ์ด์ ํ๋๋ ค `label`โ`Search` ๊ฐ์ด ๋ฐ๊พธ์ง ๋ง ๊ฒ(๋ํ ์ค๋งคํ). ํ๊ธฐ๊ฐ ์์ ๋๋ง `intent` ๋ก ์ถ๋ก ํ๋ค.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# key-roles โ ํ๋๋ณ keyRole ํ์ (๋น๋ธ๋กํน)
|
|
2
|
+
|
|
3
|
+
์คํ ์งํ ๋จ๊ณ์์ ๊ฐ ํ๋์ `keyRole` ์ ๋ถ์ธ๋ค. ์ด๋ ์ค๊ฐ ์คํ(`.spec.md`)์ ๋ถ์ ์ฐ์ถ๋ฌผ์ด๋ฉฐ, ์ต์ข
์๋๋ฆฌ์ค JSON ์๋ ๋ค์ด๊ฐ์ง ์๋๋ค(์๋๋ฆฌ์ค์ ์๋ฆฌ ์์) โ keyRole ์ ๋ง์คํฐ-๋ํ
์ผ/๋ฐ์ดํฐ์ฐ๊ฒฐ์ **์ด๋ป๊ฒ ์ค๊ณํ ์ง ๊ฒฐ์ ํ๋ ๊ทผ๊ฑฐ**๋ค.
|
|
4
|
+
|
|
5
|
+
## ๋ค์ฏ ๊ฐ์ง keyRole
|
|
6
|
+
|
|
7
|
+
| keyRole | ์๋ฏธ | ํ์ ๊ทผ๊ฑฐ |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `master` | ๋ง์คํฐ(๋ถ๋ชจ) ์๋ณ ํค โ 1์ชฝ | ํ ๊ฑด์ด ์ฌ๋ฌ ๋ํ
์ผ์ ๊ฑฐ๋๋ฆผ. ํค๋/์์ฝ ์์ญ์ ์๋ณ์ (์: ์ฃผ๋ฌธ๋ฒํธ, ๋ฐํ์์ฒญ๋ฒํธ) |
|
|
10
|
+
| `detail` | ๋ํ
์ผ(์์) ์๋ณ ํค โ N์ชฝ | ๋ง์คํฐ 1๊ฑด ์์์ ์ฌ๋ฌ ๊ฑด ๋ฐ๋ณต (์: ํ๋ชฉ Lot No, ๋ผ์ธ๋ฒํธ) |
|
|
11
|
+
| `link` | ๋ถ๋ชจ-์์ ์กฐ์ธ ํค | ๋ง์คํฐํค๊ฐ ๋ํ
์ผ์๋ ๋ํ๋ ๋์ ์๋ ์ธ๋ํค (์: ๋ํ
์ผ์ ์ฃผ๋ฌธ๋ฒํธ) |
|
|
12
|
+
| `none` | ํค ์๋ | ์ผ๋ฐ ํ์/์
๋ ฅ ํ๋ (ํ๋ช
, ์๋, ๊ธ์ก ๋ฑ) |
|
|
13
|
+
| `provisional` | ์์ โ ํ์ ์์ | ์นด๋๋๋ฆฌํฐ๊ฐ ์ ์กํ๊ฑฐ๋ ๋ง์คํฐ/๋ํ
์ผ ์ด๋ ์ชฝ์ธ์ง ๋ชจํธ. **์ถ์ธกํ์ง ๋ง๊ณ ์ฌ๊ธฐ ๋๋ค** |
|
|
14
|
+
|
|
15
|
+
## ํ์ ์ ์นด๋๋๋ฆฌํฐ๋ก
|
|
16
|
+
|
|
17
|
+
- ํ ํ๋ฉด ์์์ **1๊ฑด๋ง ๋ณด์ด๋ฉด master ํ๋ณด**(ํค๋/์์ฝ), **์ฌ๋ฌ ๊ฑด ๋ฐ๋ณต๋๋ฉด detail ํ๋ณด**.
|
|
18
|
+
- ๋ง์คํฐ์๋ ๋ํ
์ผ์๋ ๊ฐ์ ์ด๋ฆ์ ํค๊ฐ ๋ณด์ด๋ฉด ๊ทธ๊ฑด `link`(์กฐ์ธ ํค).
|
|
19
|
+
- ๋ํ
์ผ์ด ๋ ํ์ ๋ํ
์ผ์ ๊ฐ์ง๋ฉด(3๋จ) ์์๋ ๊ทธ ํ์์ ๋ํด master ์ญํ โ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ถ๋ชจ ๊ธฐ์ค์ผ๋ก ํ์ .
|
|
20
|
+
|
|
21
|
+
## ๋น๋ธ๋กํน ๊ท์น (์ค์)
|
|
22
|
+
|
|
23
|
+
- ์นด๋๋๋ฆฌํฐ๊ฐ ์ ์๊ฑฐ๋ ๋ง์คํฐ/๋ํ
์ผ์ด ๋ชจํธํ๋ฉด **์ถ์ธกํ์ง ๋ง๊ณ `provisional` + flag** ํ๋ค.
|
|
24
|
+
- **๋ถํ์คํ ํค ๋๋ฌธ์ ์งํ์ ๋ฉ์ถ์ง ์๋๋ค.** provisional ์ด ์์ด๋ Phase 1 ์คํ ์์ฑยทPhase 2 ์์ฑ์ ๊ณ์ํ๋ค.
|
|
25
|
+
- provisional ํ๋๋ **๊ฐ์ฅ ๊ทธ๋ด๋ฏํ ์ชฝ์ผ๋ก ์ผ๋จ ๋ ๋**ํ๋(๋ณดํต detail ๋๋ none), ๊ทธ ๊ฐ์ ์ `.spec.md` frontmatter `provisional` ์ ๊ธฐ๋กํ๋ค.
|
|
26
|
+
- ์ต์ข
์๋ต์์ lint ๊ฐ provisional ์์กด์ "๋ฏธํด๊ฒฐ"๋ก ๋ณด๊ณ ํ๋ค (`lint.md`). ์ฌ์ฉ์๊ฐ ์ ์ ํ๋ฉด ๊ทธ๋ ํ์ .
|
|
27
|
+
|
|
28
|
+
## .spec.md ์ ๊ธฐ๋กํ๋ ๋ฒ
|
|
29
|
+
|
|
30
|
+
frontmatter:
|
|
31
|
+
```yaml
|
|
32
|
+
keyRoles:
|
|
33
|
+
์ฃผ๋ฌธ๋ฒํธ: master
|
|
34
|
+
์ฃผ๋ฌธ์ผ์: none
|
|
35
|
+
์ํ_์ฃผ๋ฌธ๋ฒํธ: link # ์์์ ์กฐ์ธ ํค
|
|
36
|
+
์ํ๋ช
: none
|
|
37
|
+
Lot No: detail
|
|
38
|
+
provisional:
|
|
39
|
+
- field: ๊ฒ์ฌ๊ตฌ๋ถ
|
|
40
|
+
guess: none
|
|
41
|
+
why: ๋ง์คํฐ ํค๋์ ๋จ๊ฑด์ด์ง๋ง ์กฐํ์กฐ๊ฑด์ผ ์๋ ์์ด ์นด๋๋๋ฆฌํฐ ๋ถ๋ช
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
๋ณธ๋ฌธ์์๋ keyRole ์ ์ง์ ์ฐ์ง ์๊ณ , masterโํค๋/์์ฝ Group, detailโ๋ฐ๋ณต Group(B ๊ฒฝ๋ก๋ฉด DataUsage:"query"), linkโ๋ถ๋ชจ-์์ ์กฐ์ธํค(`data-connection.md`)๋ก **๋ฐ์**ํ๋ค.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# lint โ provisional/๋ฏธํด๊ฒฐ ๋ณด๊ณ (๋น๋ธ๋กํน)
|
|
2
|
+
|
|
3
|
+
์คํ ์งํยท์์ฑ์ ๋ถํ์ค์ฑ ๋๋ฌธ์ ๋ฉ์ถ์ง ์๋๋ค. ๋์ **์ต์ข
์๋ต์์ ๋ฏธํด๊ฒฐ ํญ๋ชฉ์ ๋ชจ์ ๋ณด๊ณ **ํด ์ฌ์ฉ์๊ฐ ์ ์ ํ ์ ์๊ฒ ํ๋ค. ์ฐ์ถ๋ฌผ(์คํยท์๋๋ฆฌ์ค)์ ๊ทธ๋๋ก ๋ธ๋ค.
|
|
4
|
+
|
|
5
|
+
## ๋ฌด์์ ๋ฏธํด๊ฒฐ๋ก ์ก๋
|
|
6
|
+
|
|
7
|
+
| ํญ๋ชฉ | ์ถ์ฒ | ๋ฉ์์ง ์ |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `provisional` keyRole ์์กด | `key-roles.md` | "ํ๋ '๊ฒ์ฌ๊ตฌ๋ถ' keyRole ๋ฏธํ์ (none ์ผ๋ก ๊ฐ์ ) โ ์กฐํ์กฐ๊ฑด์ด๋ฉด ์๋ ค์ฃผ์ธ์" |
|
|
10
|
+
| ๊ตฌ์กฐ ๋ฏธ์ ๊ณต ์ถ๋ก ๊ฐ์ | `routing.md` / frontmatter `assumptions` | "๋ง์คํฐ-๋ํ
์ผ์ ์ฃผ๋ฌธโ์ฃผ๋ฌธ์ํ์ผ๋ก ์ถ๋ก ํจ โ ๋ค๋ฅด๋ฉด ์๋ ค์ฃผ์ธ์" |
|
|
11
|
+
| ๋ชจํธํ ํ๋ฉด ์ข
๋ฅ | `routing.md` | "'์ฌ๊ณ '๋ฅผ ํํฉ์กฐํ๋ก ํด์ํจ" |
|
|
12
|
+
| ๊ธฐ๋ณธ๊ฐ ๋จ์ ์์ | `conventions.md` | "๊ธฐ๊ฐ ๊ธฐ๋ณธ๊ฐ ๋จ์๊ฐ ์์ด ์ต๊ทผ 1๊ฐ์๋ก ๊ฐ์ " |
|
|
13
|
+
|
|
14
|
+
## ์ถ๋ ฅ ํ์ (์ต์ข
์๋ต์ 1๋ธ๋ก)
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
๋ฏธํด๊ฒฐ (๋น๋ธ๋กํน):
|
|
18
|
+
- [provisional] ๊ฒ์ฌ๊ตฌ๋ถ โ none ์ผ๋ก ๊ฐ์ . ์กฐํ์กฐ๊ฑด์ด๋ฉด ์๋ ค์ฃผ์ธ์.
|
|
19
|
+
- [assumption] ๋ง์คํฐ-๋ํ
์ผ = ์ฃผ๋ฌธ โ ์ฃผ๋ฌธ์ํ (์ถ๋ก ). ๋ค๋ฅด๋ฉด ์ ์ ๊ฐ๋ฅ.
|
|
20
|
+
์ฐ์ถ๋ฌผ์ ์ ๊ฐ์ ์์์ ์์ฑํ์ต๋๋ค. ์ ์ ํ๋ฉด ํด๋น ๋ถ๋ถ๋ง ๋ค์ ์งํํฉ๋๋ค.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ๊ท์น
|
|
24
|
+
|
|
25
|
+
- ๋ฏธํด๊ฒฐ์ด **์์ด๋** ์คํ(`.spec.md`)ยท์๋๋ฆฌ์ค(`-scenario.json`)๋ ์ฐ์ถํ๊ณ `flex-scenario validate` ๊น์ง ํต๊ณผ์ํจ๋ค.
|
|
26
|
+
- ๋ฏธํด๊ฒฐ์ด **์์ผ๋ฉด** ์ด ๋ธ๋ก์ ์๋ตํ๋ค.
|
|
27
|
+
- ์ด lint ๋ `flex-scenario validate` ์ cross-check(์คํค๋ง/๊ตฌ์กฐ ๊ฒ์ฆ)์ ๋ณ๊ฐ๋ค โ validate ๋ "ํ์์ด ๋ง๋", lint ๋ "์ถ๋ก ์ด ๋ง๋"๋ฅผ ๋ณธ๋ค. ๋ ๋ค ํต๊ณผ/๋ณด๊ณ ํด์ผ ์๋ฃ.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# mockup โ ๋ชฉ์
๋ฐ์ดํฐ ์ถ์ ยท์ธํ
(๊ตฌ์กฐ ๋ฏธ์ ๊ณต ํฌํจ)
|
|
2
|
+
|
|
3
|
+
ํ๋กํ ํ์
ํ๋ฉด์ **ํญ์ ๋ชฉ์
๋ฐ์ดํฐ๋ก ์ฑ์์ผ** ํ๋ค. ๊ตฌ์กฐ๊ฐ ์ ๊ณต๋์ง ์์๋ ๋ง์ฐฌ๊ฐ์ง โ ๋๋ฉ์ธ์์ ์นดํ
๊ณ ๋ฆฌยทํ๋ยทํ์ค์ ๊ฐ์ **์์์ ์ถ์ **ํด ์ธํ
ํ๋ค. ๋น ๋ฆฌ์คํธยท๋น ํผยทplaceholder ๋ง ์๋ ํ๋ฉด์ผ๋ก ๋๋ด์ง ์๋๋ค.
|
|
4
|
+
|
|
5
|
+
## โ
M-D ๊ตฌ์กฐ๊ฐ ์ ๊ณต๋๋ฉด ๋ชฉ์
์นดํ
๊ณ ๋ฆฌ๋ ํ์ (์๋ฐ = ๋ํ ์คํจ)
|
|
6
|
+
|
|
7
|
+
ํ๋ฉด์ ์์/์์ฒญ์ **Master/Detail(๋๋ ๋ฐ๋ณต ํญ๋ชฉ) ๊ตฌ์กฐ๊ฐ ๋ช
์**๋๋ฉด, ๊ทธ ๊ตฌ์กฐ์ **๋ชฉ์
๋ฐ์ดํฐ(Ctg ์นดํ
๊ณ ๋ฆฌ + ์์ Step.Init `intent.mock`)๋ ๋ฐ๋์ ์์ฑ**ํ๋ค. ์ ์ Label ๋ณต์ ๋ก ๋๋ด๋ฉด ์ ๋๋ค.
|
|
8
|
+
|
|
9
|
+
- Master โ `Ctg<Entity>` (1์นํฐ ์ด์), Detail โ `Ctg<Entity>Item` (๋ถ๋ชจ๋ง๋ค 2~3์นํฐ, ์กฐ์ธํค ์ผ์น).
|
|
10
|
+
- ๋ ์นดํ
๊ณ ๋ฆฌ ๋ชจ๋ `intent.mock` ์ผ๋ก ์ฑ์ฐ๊ณ , ํ์ ํญ๋ชฉ์ `LabelCKey`/`Ckeys` ๋ฐ์ธ๋ฉ(์ ์ ํ
์คํธ ๊ธ์ง).
|
|
11
|
+
- **์คํจ ์ฌ๋ก(S-02)**: Master/Detail ํ๊ฐ ์๋ ์
๋ ฅ ํ๋ฉด์ `DataConnection` 0๊ฑดยท`Events:{}`ยท์ ์ Label 57๊ฐ๋ก ์์ฑ โ "๋ฐ์ดํฐ์ฐ๊ฒฐ์ด ์ ๋" ํ๋ฉด. M-D ๊ฐ ๋ช
์๋์ผ๋ฉด ์ด๊ฑด ์ค๋ต์ด๋ค.
|
|
12
|
+
- ์์ฒด ์ ๊ฒ: M-D ๊ฐ ์ ๊ณต๋๋๋ฐ ์ฐ์ถ๋ฌผ์ `UseDataConnection:true`/`DataConnection`/`intent.mock` ์ด 0๊ฑด์ด๋ฉด ๋ค์ ๋ง๋ ๋ค.
|
|
13
|
+
|
|
14
|
+
## ์ธ์ ๋ฌด์์
|
|
15
|
+
|
|
16
|
+
| ์ํฉ | ๋ชฉ์
ํํ |
|
|
17
|
+
|---|---|
|
|
18
|
+
| ๋ชฉ๋ก/๋ฐ๋ณต/์กฐํ ๊ฒฐ๊ณผ (B) | ์์ Step.Init `intent.mock` ์ผ๋ก ์นดํ
๊ณ ๋ฆฌ ์นํฐ **3๊ฑด ์ด์** |
|
|
19
|
+
| ๋ถ๋ชจ-์์(๋ง์คํฐ-๋ํ
์ผ, B) | ๋ถ๋ชจ 2~3๊ฑด ร ๊ฐ ๋ถ๋ชจ์ ์์ 2~3๊ฑด (์กฐ์ธํค ์ผ์น) |
|
|
20
|
+
| ์ ํ์ง(Combo/Search, B) | ๊ทธ ์นดํ
๊ณ ๋ฆฌ ์ต์
mock (3~6๊ฐ) |
|
|
21
|
+
| ๋จ๊ฑด ์ ์ ํ์ (A) | ๊ฐ Label ์ ํ์ค์ `labeltext` ๋ฆฌํฐ๋ด |
|
|
22
|
+
| ์ ๊ท ์
๋ ฅ ํผ (new) | mock ๋ฉด์ โ ๋น ์นํฐ ์๋ ์์ฑ(`DataUsage:"new"`), Init addSector ๊ธ์ง |
|
|
23
|
+
|
|
24
|
+
## ๊ตฌ์กฐ ๋ฏธ์ ๊ณต ์ ์ถ์ ์ ์ฐจ
|
|
25
|
+
|
|
26
|
+
1. **ํ๋ฉด ์ข
๋ฅยท๋๋ฉ์ธ ์๋ณ** โ "์ฃผ๋ฌธ ๋ชฉ๋ก", "ํ์ ์กฐํ", "์ฌ๊ณ ํํฉ" ๋ฑ์์ ์ฃผ์ฒด ์ํฐํฐ๋ฅผ ์ก๋๋ค.
|
|
27
|
+
2. **์นดํ
๊ณ ๋ฆฌยทํ๋ ์ถ์ ** โ ๊ทธ ์ํฐํฐ์ ์์ฐ์ค๋ฌ์ด ํ๋๋ฅผ ์ฝํผ์ค/์์์ผ๋ก ๊ตฌ์ฑ. ์: ์ฃผ๋ฌธ โ ์ฃผ๋ฌธ๋ฒํธ/์ฃผ๋ฌธ์ผ์/์ฃผ๋ฌธ์ํ/ํฉ๊ณ๊ธ์ก; ํ์ โ ์ด๋ฆ/์ฐ๋ฝ์ฒ/์ด๋ฉ์ผ/๊ฐ์
์ ํ. ๋ง์คํฐ-๋ํ
์ผ์ด๋ฉด ์์ ์ํฐํฐ๋(์ฃผ๋ฌธโ์ฃผ๋ฌธ์ํ: ์ํ๋ช
/์๋/๋จ๊ฐ).
|
|
28
|
+
3. **์นดํ
๊ณ ๋ฆฌ๋ช
** โ `Ctg` ์ ๋ PascalCase (`CtgOrder`, `CtgOrderItem`). ์์ฝ์ด ๊ธ์ง.
|
|
29
|
+
4. **ํ์ค์ ๊ฐ ์์ฑ** โ ์๋ "๊ฐ ํ์ค์ฑ".
|
|
30
|
+
5. **๊ฐ์** โ ๋ฆฌ์คํธ ์ต์ 3๊ฑด(๋ถ๋ชจ-์์์ด๋ฉด ๋ถ๋ชจ 2~3 ร ์์ 2~3). ์ํ/์ ํ์ ์๋ก ๋ค๋ฅด๊ฒ ์์ด ๋ค์์ฑ ํ๋ณด(์ ๋ถ ๊ฐ์ ๊ฐ ๊ธ์ง).
|
|
31
|
+
6. **๊ฐ์ ๊ธฐ๋ก** โ ์ถ์ ํ ์นดํ
๊ณ ๋ฆฌยทํ๋๋ฅผ `spec-format.md` frontmatter `categories` + `assumptions` ์. keyRole ์ ๋งคํ๋ฉด `provisional`.
|
|
32
|
+
|
|
33
|
+
## ๊ฐ ํ์ค์ฑ
|
|
34
|
+
|
|
35
|
+
- ํ๊ตญ์ด ๋๋ฉ์ธ ๊ฐ: ์ด๋ฆ(ํ๊ธธ๋/๊น์ํฌ), ๊ฑฐ๋์ฒ(๊ฑฐ๋์ฒA/๋์ฑ๋ฌผ์ฐ), ์ํ๋ช
(๋ฌด์ ๋ง์ฐ์ค/A4์ฉ์ง).
|
|
36
|
+
- ๋ ์ง: ํ์ฌ์ผ ๊ทผ๋ฐฉ์ ์ค์ ํ์ `YYYY-MM-DD` (์: 2026-06-01). ๊ธฐ๊ฐ ๊ธฐ๋ณธ๊ฐ์ `conventions.md` ํจํด.
|
|
37
|
+
- ๊ธ์ก/์๋: ์ฒ๋จ์ ์ฝค๋ง ๊ฐ๋ฅํ ํ์ค์ ์ซ์. **ํฉ๊ณ = ํญ๋ชฉ ํฉ** ์ผ๋ก ์ฐ์ ์ผ์น(์: ํฉ๊ณ๊ธ์ก = ์์ ๊ธ์ก๋ค์ ํฉ).
|
|
38
|
+
- ์ํ/์ ํ: ๊ทธ ํ๋ฉด์ enum ์ค์์(์ ์/๋ฐฐ์ก์ค/์๋ฃ, ํฉ๊ฒฉ/๋ถํฉ๊ฒฉ ๋ฑ).
|
|
39
|
+
- ์กฐ์ธํค: ๋ถ๋ชจ-์์ `DCParentKey`/`DCChildKey` ๊ฐ์ด ์ค์ ๋ก ๋งค์นญ๋๊ฒ(์์์ ์ฃผ๋ฌธ๋ฒํธ = ๋ถ๋ชจ ์ฃผ๋ฌธ๋ฒํธ).
|
|
40
|
+
|
|
41
|
+
## ๋ฐฐ์น (B ๊ฒฝ๋ก)
|
|
42
|
+
|
|
43
|
+
- named handler: `Step.Events.Init:"Step1Init"` + `scenario.Events.Step1Init` ์์ `intent.mock`.
|
|
44
|
+
- ์ธ๋ผ์ธ ๋ฐฐ์ด(`Step.Events.Init:[...]`) ๊ธ์ง โ schema ์ถฉ๋ (SKILL.md "๋ฐ์ดํฐ ํ์ ๊ฒฐ์ " ์ฐธ์กฐ).
|
|
45
|
+
- ๋ถ๋ชจยท์์ ์นดํ
๊ณ ๋ฆฌ ๋ชจ๋ mock ์ ๋ฐ์ ์กฐ์ธ์ด ์ค์ ๋ก ๊ทธ๋ ค์ง๊ฒ.
|
|
46
|
+
- `intent.mock` ์์ด `DataConnection`/`Ckeys` ๋ง ๋ฐ์ผ๋ฉด `[proto]`ยท`[mock-init]` ์ฐจ๋จ.
|
|
47
|
+
|
|
48
|
+
## .spec.md ์ ์ ๋ ๋ฒ
|
|
49
|
+
|
|
50
|
+
frontmatter `categories` ๋ก ์นดํ
๊ณ ๋ฆฌยทํ๋ยทํค๋ฅผ ๋ช
์ํ๊ณ , ๋ณธ๋ฌธ "๋ฐ์ดํฐ / ๋ชฉ์
" ์ ์ **๊ตฌ์ฒด์ mock ๊ฐ**(ํ์ค์ ๋ฆฌํฐ๋ด N๊ฑด)์ ์ ๋๋ค. ํ
ํ๋ฆฟ์ mock ์์(`templates/master-detail.spec.md` ๋ฑ) ํํ๋ฅผ ๋ฐ๋ฅธ๋ค. Phase 2 ๊ฐ ์ด mock ์ `intent.mock`(B) ๋๋ `labeltext`(A)๋ก ํผ์น๋ค.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# query-screens โ ์กฐํ ํ๋ฉด: ์๋จ ์ง์
+ ์กฐํ์กฐ๊ฑด ๋ณ๋ Step
|
|
2
|
+
|
|
3
|
+
์กฐํ(์กฐํ/๊ฒ์) ํ๋ฉด์ "์กฐํ์กฐ๊ฑด ์
๋ ฅ"๊ณผ "๊ฒฐ๊ณผ ๋ฆฌ์คํธ"๊ฐ ํ ํ๋ฉด์ ๋ค ๋ค์ด๊ฐ๋ฉด ๋ณต์กํด์ง๋ค. ์ฝํผ์ค ์ปจ๋ฒค์
์ **์กฐํ์กฐ๊ฑด์ ํ๋ฉด ์๋จ์์ ์ง์
**ํ๊ณ , **์กฐ๊ฑด์ด ๋ง์ผ๋ฉด ์กฐํ์กฐ๊ฑด์ ๋ณ๋ Step ์ผ๋ก ๋ถ๋ฆฌ**ํ๋ค.
|
|
4
|
+
|
|
5
|
+
## ํต์ฌ ์์น (์ฌ์ฉ์ ๊ท์น)
|
|
6
|
+
|
|
7
|
+
1. **์๋จ ์ง์
๋ง.** ์กฐํ์กฐ๊ฑด/ํํฐ ์ง์
์ **๊ฒฐ๊ณผ ํ๋ฉด์ ์๋จ ๊ณ ์ ์์ญ(`Step.FixedContentsTop`)** ์ ๋๋ค. **ํ๋จ์ '์กฐํ์กฐ๊ฑด' ๋ฒํผ์ ๋ง๋ค์ง ์๋๋ค.**
|
|
8
|
+
2. **๋ถ๊ฐ ๋ค๋น ๋ฒํผ ๊ธ์ง.** `๋ฐ๋ก๊ฐ๊ธฐ` ยท `๋ฉ์ธ๋ฉ๋ด` ยท `์กฐํ์กฐ๊ฑด ํผ์น๊ธฐ/์ ๊ธฐ` ๊ฐ์ **๋ค๋น/ํ ๊ธ ๋ฒํผ์ ๋ง๋ค์ง ์๋๋ค**. ํ๋ฉด ์ด๋์ Step ์ ํ ์ฑ๋๋ก๋ง(`navigation` ๊ท์น, ์๋).
|
|
9
|
+
3. **ํ์ค ๋ณต๊ท.** ์กฐํ์กฐ๊ฑด Step โ ๊ฒฐ๊ณผ ๋ณต๊ท๋ **ํค๋ `UseBackButton:true`(ํ์ค BackButton)** ๋๋ `BottomButtons[*].MoveTo:"Prev"` ๋ก. โ `Current.step.moveToPrev(...)` ๊ฐ์ **์คํฌ๋ฆฝํธ ํธ์ถ์ ๊ธ์ง**(`[script-allow]`/`[back-button]` ์ฐจ๋จ). ํ์ค ๋ฐฑ๋ฒํผ์ด `IsRestored:true` ๋ก ์กฐ๊ฑด๊ฐ์ ์ ์งํ๋ค.
|
|
10
|
+
4. **์กฐ๊ฑด์ ์นดํ
๊ณ ๋ฆฌ๋ก ์์ง.** ๊ณตํต ์กฐํ์กฐ๊ฑด์ `CtgSearchCond` ๊ฐ์ **query-condition ์นดํ
๊ณ ๋ฆฌ 1์นํฐ**์ ๋ชจ์ ๋ฐ์ธ๋ฉํ๊ณ , ๊ฒฐ๊ณผ query ๊ฐ ๊ทธ ์กฐ๊ฑด์ ์ฐธ์กฐํ๋ ํํ๋ก ๋๋ค(ํ๋กํ ํ์
์์ mock 1์นํฐ).
|
|
11
|
+
|
|
12
|
+
## ์๊ณ ๊ท์น
|
|
13
|
+
|
|
14
|
+
- ์กฐํ์กฐ๊ฑด(Combo / InputDate / Search / RadioBox / CheckBox ๋ฑ) **5๊ฐ ์ด์** โ **๋ณ๋ Step** ์ผ๋ก ๋ถ๋ฆฌ.
|
|
15
|
+
- 4๊ฐ ์ดํ โ ๊ฒฐ๊ณผ Step ์ **`FixedContentsTop` ๊ณ ์ ์์ญ**์ ์ธ๋ผ์ธ(์คํฌ๋กค๋์ง ์๋ ์๋จ). ํผ์น๊ธฐ/์ ๊ธฐ ํ ๊ธ ๋ฒํผ์ผ๋ก ๋ง๋ค์ง ๋ง ๊ฒ.
|
|
16
|
+
|
|
17
|
+
## Step ๊ตฌ์ฑ (์ฝํผ์ค ํจํด, AI ์์ฑ ์์ ํ)
|
|
18
|
+
|
|
19
|
+
- **Step1 (๊ฒฐ๊ณผ ๋ฆฌ์คํธ)** โ ๊ฒฐ๊ณผ๊ฐ ๋ฉ์ธ. ์๋จ `FixedContentsTop` ์ ํต์ฌ ์กฐ๊ฑด 1~2๊ฐ(์: ์ฌ์
๋จ์ Combo) + **ํํฐ ์ง์
์ปจํธ๋กค**(๋ผ๋ฒจ/์์ด์ฝ์ `UseMove:true` + `MoveSteps.MoveStepOrder:["Step2"]` + `MoveTo:"Next"`). ํ์ฑ ์กฐ๊ฑด ์๋ badge ๋ก ํ์ ๊ฐ๋ฅ. ๊ฒฐ๊ณผ๋ ๋ณ๋ ์คํฌ๋กค Group(`ScrollType:"ScrollY"`)์ query ๋ฐ๋ณต.
|
|
20
|
+
- **Step2 (์กฐํ์กฐ๊ฑด ํผ)** โ ๋๋จธ์ง ์ ์ฒด ์กฐํ์กฐ๊ฑด ์ปจํธ๋กค์ ๋ชจ์ ๋ฐฐ์น. `UseBackButton:true` ํ์ค ํค๋๋ก ๊ฒฐ๊ณผ ๋ณต๊ท, ๋๋ BottomButton "์กฐํ" `MoveTo:"Prev"`. ์กฐ๊ฑด๊ฐ์ BackButton `IsRestored:true` ๋ก ์ ์ง.
|
|
21
|
+
- **Step3 (์์ธ, ์ ํ ์)** โ ๊ฒฐ๊ณผ ํ ํด๋ฆญ(์นด๋ Group `UseMove:true` + `MoveSteps`) โ `DataUsage:"detail"` ์ฝ๊ธฐ์ ์ฉ ์์ธ.
|
|
22
|
+
|
|
23
|
+
> ๊ด์ฐฐ๋ ์ ๋ต ํํ: `Step1(๊ฒฐ๊ณผ+์๋จ์กฐ๊ฑด 1~2) โ Step2(์ ์ฒด ์กฐํ์กฐ๊ฑด 10์ฌ ๊ฐ) โ Step3(์์ธ)` ์ ํ. ์กฐํ์กฐ๊ฑด์ด Step2 ์ ๋ชฐ๋ฆฌ๊ณ , Step1 ์๋จ์์ ์ง์
ํ๋ค.
|
|
24
|
+
|
|
25
|
+
### Step ํ๋ฆ โ ๋ถ๊ธฐ ํผ๋ ๊ธ์ง (S-07 ์คํจ ๊ต์ )
|
|
26
|
+
|
|
27
|
+
- **`Step1.Next` ์๋ ์กฐํ์กฐ๊ฑด Step(Step2) ๋ง** ๋๋ค. ์์ธ(Step3)๋ `Step1.Next` ์ ๊ฐ์ด ๋ฃ์ง ๋ง๊ณ **๊ฒฐ๊ณผ ์นด๋ Group `UseMove:true` + `MoveSteps.MoveStepOrder:["Step3"]`** ๋ก ๊ฐ๋ค. ํ Step1 ์์ ์กฐ๊ฑดยท์์ธ๋ฅผ ๋์์ `Next` ๋ถ๊ธฐํ๋ฉด ํ๋ฆ์ด ๋ชจํธํด์ง๋ค(S-07).
|
|
28
|
+
- **์กฐํ์กฐ๊ฑด์ ์ผ์ด์ค์ ์๋ ๊ฐ์๋งํผ๋ง** ๋ง๋ ๋ค โ ๊ฐ์ ์กฐ๊ฑด์ ์ค๋ณต ์์ฑํ์ง ๋ง ๊ฒ(S-07: 13๊ฐ๋ฅผ 19๊ฐ๋ก ๋ถํ๋ฆผ). ์กฐ๊ฑด ์ปจํธ๋กค ์ = ์คํ ์กฐ๊ฑด ์.
|
|
29
|
+
- Step2 ๋ ์กฐ๊ฑด ํผ ํ ๋ฒ(์ CtgSearchCond ๊ทธ๋ฃน) + ๋ณต๊ท(UseBackButton). Step3 ๋ detail.
|
|
30
|
+
|
|
31
|
+
## ์กฐํ์กฐ๊ฑด ์ปจํธ๋กค ๋งคํ (์๋ โ v1)
|
|
32
|
+
|
|
33
|
+
- ๊ธฐ๊ฐ/์ผ์ โ `InputDate` (+Dialog `Calendar`, FromTo). ๊ธฐ๋ณธ๊ฐ์ `conventions.md` ๋ ์ง ํจํด.
|
|
34
|
+
- ์ ํ(์ฌ์
๋จ์/๊ตฌ๋ถ/์ํ) โ `Combo` (+Dialog `ComboList`).
|
|
35
|
+
- ์ฝ๋๋์(๊ฑฐ๋์ฒ/ํ๋ฒ/Lot No/๋ฒํธ๋ฅ) โ **`Search` (+Dialog `List`) + `CtrlDisplayCkey`(์ ํ๊ฐ ํ์ํค)**. โ `InputText` ๋ก ๋จ์ด๋จ๋ฆฌ์ง ๋ง ๊ฒ โ ํค ์ฐ๊ฒฐ์ด ๋๊ฒจ "์กฐํ์กฐ๊ฑด ํค ์ฐ๊ฒฐ ์ ๋จ" ์คํจ๊ฐ ๋๋ค(S-05). ์ผ์ด์ค์ `Codehelp` ๋ก ์ ํ์ผ๋ฉด ๋ฌด์กฐ๊ฑด Search.
|
|
36
|
+
- ๋ค์ค ์ ํ/ํ๋๊ทธ โ `CheckBox` / `RadioBox`.
|
|
37
|
+
|
|
38
|
+
Combo/Search/InputDate ๋ Dialog host(`Dialog.Layouts[0].Controls[0]`) ํ์. Combo/Search ๋ณธ์ฒด์ `CtrlDisplayCkey` ๋๋ `DisplayValue` ๊ฐ ์์ด์ผ ์ ํ ํ ๊ฐ์ด ๋ณด์ธ๋ค(`display-key`).
|
|
39
|
+
|
|
40
|
+
## ์กฐํ์กฐ๊ฑด๋ ๋ฐ์ดํฐ์ฐ๊ฒฐํ๋ค (CtgSearchCond) โ ๋น ๋จ๋ฆฌ์ง ๋ง ๊ฒ
|
|
41
|
+
|
|
42
|
+
์กฐํ์กฐ๊ฑด ์ปจํธ๋กค์ ๊ทธ๋ฅ ํ๋ฉด์๋ง ๋์ง ๋ง๊ณ **๋ฐ์ดํฐ์ฐ๊ฒฐ**ํ๋ค(S-09 ์คํจ: ์กฐ๊ฑด Step DC 0๊ฑด).
|
|
43
|
+
|
|
44
|
+
- ์กฐํ์กฐ๊ฑด๋ค์ ๊ฐ์ธ๋ **์กฐ๊ฑด ํผ Group ์ `UseDataConnection:true` + `DataConnection{TargetType:'category', DataUsage:'default', CategoryName:'CtgSearchCond'}`** (๋จ๊ฑด 1์นํฐ).
|
|
45
|
+
- ๊ฐ ์กฐ๊ฑด ์ปจํธ๋กค์ ๊ทธ ์นดํ
๊ณ ๋ฆฌ ํ๋์ ๋ฐ์ธ๋ฉ: ์
๋ ฅ๋ฅ(InputDate/InputText)๋ `Ckeys`, Combo/Search ๋ `CtrlDisplayCkey`(+ ์์ SaveKey ๋งค์นญ, `conventions.md` ยง1 ๊ณ ์ ๋ชจ๋ ๊ท์น).
|
|
46
|
+
- ์์ Step.Init `intent.mock` ์ `CtgSearchCond` **1์นํฐ**(๊ธฐ๋ณธ ์กฐ๊ฑด๊ฐ: ๊ธฐ๊ฐ ๊ธฐ๋ณธ๊ฐ ๋ฑ)๋ฅผ ๋ฐ๋๋ค โ ์์ผ๋ฉด `[proto]`/`[bind]`.
|
|
47
|
+
- ๊ฒฐ๊ณผ ๋ฆฌ์คํธ query ์นดํ
๊ณ ๋ฆฌ(์: `CtgInspection`)๋ ๋ณ๋ โ ์กฐ๊ฑด์ ํ๋กํ ํ์
์์ ํ์ยท์ ๋ฌ ์ฉ๋(์ค์ ํํฐ๋ง ๋ก์ง์ ๋ฒ์ ๋ฐ).
|
|
48
|
+
- **ํค์ `f` ์ ๋ ๊ธ์ง**, ์คํ์ ํค๊ฐ ๋ช
์๋๋ฉด ๋์๋ฌธ์ ๊ทธ๋๋ก(`conventions.md` ยง1).
|
|
49
|
+
|
|
50
|
+
## ๊ฒฐ๊ณผ ๋ฆฌ์คํธ๋ B(query) + ์ค์ฒฉ ๋ํ
|
|
51
|
+
|
|
52
|
+
๊ฒฐ๊ณผ ๋ฆฌ์คํธ๋ ๋ง์คํฐ-๋ํ
์ผ์ด๋ฉด `data-connection.md` ์ **๋ถ๋ชจ query + ์์ query**, ๋จ์ ๋ชฉ๋ก์ด๋ฉด query Group ํ๋. **๋ฐ๋ณต ์์ญ์ ์คํฌ๋กค Group ์ผ๋ก ํ๋ ๊ฒน ๊ฐ์ผ๋ค**: `์คํฌ๋กค(ScrollY) > ๋ฆฌ์คํธ Group(query) > row Group > ๋ด์ฉ`. Init ์ mock ๋๋ฐ(`mockup.md`).
|
|
53
|
+
|
|
54
|
+
## .spec.md ์ ์ ๋ ๋ฒ
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
screenKind: query
|
|
58
|
+
queryConditions: 12 # 5 ์ด์ โ ๋ณ๋ Step
|
|
59
|
+
queryCondCategory: CtgSearchCond
|
|
60
|
+
steps:
|
|
61
|
+
- { id: Step1, role: ๊ฒฐ๊ณผ๋ฆฌ์คํธ, topConditions: [์ฌ์
๋จ์], filterEntry: "FixedContentsTopโStep2(UseMove)", next: Step2 }
|
|
62
|
+
- { id: Step2, role: ์กฐํ์กฐ๊ฑดํผ, back: "UseBackButton(IsRestored)", conditions: [๊ฒ์ฌ์ผ, ์ถํ๊ฒ์ฌ์๋ขฐ์ผ, ๋ฉ๊ธฐ์ผ, ๊ฑฐ๋์ฒ, ํ๋ฒ, ...] }
|
|
63
|
+
- { id: Step3, role: ์์ธ(detail), back: UseBackButton } # ํ์ ์
|
|
64
|
+
forbidButtons: [๋ฐ๋ก๊ฐ๊ธฐ, ๋ฉ์ธ๋ฉ๋ด, ์กฐํ์กฐ๊ฑดํผ์น๊ธฐ] # ์์ฑ ๊ธ์ง โ ๋ช
์ ๊ธฐ๋ก
|
|
65
|
+
```
|
|
66
|
+
๋ณธ๋ฌธ ํํ๋ `templates/query-screen.spec.md`.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# routing โ ๊ตฌ์กฐ ์ ๊ณต ์ฌ๋ถ๋ก A/B ๊ฒฐ์
|
|
2
|
+
|
|
3
|
+
๋ถ๊ธฐ ๊ธฐ์ค์ "ํ๋ฉด์ ์์๋ ์๋๋"๊ฐ **์๋๋ผ** "๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ํธ๊ฐ ์๋๋"๋ค. ํ๋ฉด์ ์์๋ ๊ตฌ์กฐ ์ ํธ๊ฐ ๊ฐํ ์
๋ ฅ์ ํ ์ข
๋ฅ์ผ ๋ฟ์ด๊ณ , ์ผ๋ฐ ์์ฒญ๋ ๊ฐ์ ํ์ดํ๋ผ์ธ์ ํ๋ค.
|
|
4
|
+
|
|
5
|
+
## ๊ตฌ์กฐ ์ ํธ๋
|
|
6
|
+
|
|
7
|
+
์
๋ ฅ์ ๋ค์ ์ค ํ๋๋ผ๋ ๋ช
์๋์ด ์์ผ๋ฉด "๊ตฌ์กฐ ์ ๊ณต"์ด๋ค:
|
|
8
|
+
- ํ๋ ๋ชฉ๋ก (ํญ๋ชฉ๋ช
+ ์ปจํธ๋กค/ํ์
)
|
|
9
|
+
- ๋ง์คํฐ-๋ํ
์ผ ๊ตฌ๋ถ (ํค๋ vs ๋ฐ๋ณต ํ๋ชฉ, "~๋ณ ๋ชฉ๋ก")
|
|
10
|
+
- ํค/์กฐ์ธ (๋ง์คํฐํค, ๋ํ
์ผํค, "์ฃผ๋ฌธ๋ฒํธ๋ก ์ํ ์กฐํ" ๊ฐ์ ๋ถ๋ชจ-์์ ๊ด๊ณ)
|
|
11
|
+
|
|
12
|
+
## ๋ ๊ฒฝ๋ก
|
|
13
|
+
|
|
14
|
+
### ๊ตฌ์กฐ ์ ๊ณต โ ๊ทธ๋๋ก ๋ฐ๋ฅธ๋ค (๋ณด์กฐ์ ๋ณด๋ ๋ณํฉ)
|
|
15
|
+
|
|
16
|
+
- **์ ๊ณต๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ = 1์ฐจ ์ง์ค.** ํ๋/ํค/์นด๋๋๋ฆฌํฐ๋ฅผ **์์๋ก ๋ฐ๊พธ๊ฑฐ๋ ์ถ๊ฐํ์ง ์๋๋ค.**
|
|
17
|
+
- ํ๋ฉด์ ์์์ ๋ถ๊ฐ ์ ๋ณด(์ปจํธ๋กค ์๋ยท๊ธฐ๋ณธ๊ฐยท๋ฒํผ ๋์ยทํต์ ๋ก์ง)๋ **๋ณด์กฐ๋ก ๋ณํฉ**ํ๋ค โ ๊ตฌ์กฐ๋ฅผ ๋ฎ์ด์ฐ์ง ์๊ณ ์ด์ ๋ถ์ด๋ ์ฉ๋.
|
|
18
|
+
- ๋ง์คํฐ-๋ํ
์ผ(1:N)ยท๋ฐ๋ณต ๋ชฉ๋กยท์ ํ์ง ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด **B ๊ฒฝ๋ก(๋ฐ์ดํฐ์ฐ๊ฒฐ)** ๋ก ์งํํ๋ค โ `data-connection.md`. ์๋๋ฆฌ์ค์ `DataConnection`+`Ckeys`+`intent.mock`.
|
|
19
|
+
- ๋จ๊ฑด ์ ์ ํ์๋ฟ์ด๋ฉด ๊ตณ์ด ๋ฐ์ดํฐ์ฐ๊ฒฐํ์ง ์๊ณ `Label` ๋ก (์ ์ , A).
|
|
20
|
+
|
|
21
|
+
> "์์
์ฒ๋ผ ๋ฐ์ดํฐ ํ์์ ์ฃผ๋ ๊ฒฝ์ฐ" = ์ด ๊ฒฝ๋ก. ์ค ๊ตฌ์กฐ์ ๋ง๊ฒ ์ฐ๊ณ , ์ถ๊ฐ์ ์ธ ๊ฑด ๋ณด์กฐ๋ก๋ง.
|
|
22
|
+
|
|
23
|
+
### ๊ตฌ์กฐ ๋ฏธ์ ๊ณต โ ๋ฌป์ง ๋ง๊ณ ์ถ๋ก (์ง๊ธ์ฒ๋ผ ์์ฑ)
|
|
24
|
+
|
|
25
|
+
- "์ฌ๊ณ ์กฐํ ํ๋ฉด ๋ง๋ค์ด์ค" ์ฒ๋ผ ๊ตฌ์กฐ๊ฐ ์์ผ๋ฉด **์ฌ์ฉ์์๊ฒ ๋ง์คํฐ-๋ํ
์ผยทํค๋ฅผ ๋ฌป์ง ์๋๋ค.**
|
|
26
|
+
- `conventions.md` + `templates/` ์ ์ฝํผ์ค ์ปจ๋ฒค์
์ ๊ทผ๊ฑฐ๋ก ๋ง์คํฐ-๋ํ
์ผยทํค๋ฅผ **์์์ ์ถ๋ก ยท๊ตฌ์ฑ**ํ๋ค.
|
|
27
|
+
- ๋ฐ๋ณต/์ ํ์ง ๋ฐ์ดํฐ๊ฐ ์์ฐ์ค๋ฌ์ด ํ๋ฉด(๋ชฉ๋กยท์กฐํยท์ฃผ๋ฌธ ๋ฑ)์ด๋ฉด B, ๋จ์ ๋จ๊ฑด ํ์ ํ๋ฉด์ด๋ฉด ์ ์ A.
|
|
28
|
+
- ์ถ๋ก ํ ๋ง์คํฐ-๋ํ
์ผยทํค ๊ตฌ์ฑ์ **์ถ๋ก ๊ฐ์ ์ผ๋ก ๊ธฐ๋ก**(`spec-format.md` frontmatter `assumptions`)ํ๊ณ keyRole ์ด ์ ๋งคํ๋ฉด `provisional`.
|
|
29
|
+
- **์ง๋ฌธ์ ํ๋ฉด์ ์ข
๋ฅ/๋ชฉ์ ์ด ์ ๋ง ๋ชจํธํ ๋๋ง ์ต์๋ก** ํ๋ค (์: "์ฌ๊ณ "๊ฐ ์
์ถ๊ณ ์ธ์ง ํํฉ์กฐํ์ธ์ง ํ์ชฝ์ผ๋ก๋ ๋ชป ์ขํ ๋). ํคยทํ๋ยท๋ง์คํฐ-๋ํ
์ผ ์์ฒด๋ ์ง๋ฌธ ๋์์ด ์๋๋ผ ์ถ๋ก ๋์์ด๋ค.
|
|
30
|
+
- **๋ชฉ์
๋ฐ์ดํฐ๋ฅผ ๋ฐ๋์ ์ถ์ ํด ์ธํ
ํ๋ค (๋น ํ๋ฉด ๊ธ์ง).** ๊ตฌ์กฐ๊ฐ ์์ด๋ ๋๋ฉ์ธ์ ๋ง๋ ์นดํ
๊ณ ๋ฆฌยทํ๋ยทํ์ค์ ๊ฐ์ **์์์** ๋ง๋ค์ด ์ฑ์ด๋ค โ ๊ธฐ์กด ์์ฑ๊ณผ ๋์ผํ๊ฒ. ๋ชฉ๋ก/๋ฐ๋ณต(B)์ด๋ฉด ์์ Step.Init ์ `intent.mock` ์ผ๋ก 3๊ฑด+(๋ถ๋ชจ-์์์ด๋ฉด ๋ถ๋ชจ 2~3 ร ์์ 2~3), ๋จ๊ฑด ํ์(A)๋ฉด ๊ฐ Label ์ ํ์ค์ `labeltext` ๋ฆฌํฐ๋ด. ๊ตฌ์ฒด ์ถ์ ๊ท์น์ `mockup.md`. ๋น ๋ฆฌ์คํธยท๋น ํผยทplaceholder ๋ง ์๋ ํ๋ฉด์ผ๋ก ๋๋ด์ง ๋ง ๊ฒ.
|
|
31
|
+
|
|
32
|
+
## ๊ฒฐ์ ์์ฝ
|
|
33
|
+
|
|
34
|
+
| ์
๋ ฅ | ๊ฒฝ๋ก | ์๋๋ฆฌ์ค ์ฐ์ถ |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| ๊ตฌ์กฐ ์ ๊ณต + ๋ง์คํฐ-๋ํ
์ผ/๋ฐ๋ณต/์ ํ์ง | **B** | DataConnection + Ckeys + intent.mock |
|
|
37
|
+
| ๊ตฌ์กฐ ์ ๊ณต + ๋จ๊ฑด ์ ์ ํ์ | A | Label.labeltext |
|
|
38
|
+
| ๊ตฌ์กฐ ๋ฏธ์ ๊ณต + ๋ชฉ๋ก/์กฐํ์ฑ | **B**(์ถ๋ก ) | DataConnection + intent.mock (๊ฐ์ ๊ธฐ๋ก) |
|
|
39
|
+
| ๊ตฌ์กฐ ๋ฏธ์ ๊ณต + ๋จ์ ํ์์ฑ | A(์ถ๋ก ) | Label (๊ฐ์ ๊ธฐ๋ก) |
|
|
40
|
+
|
|
41
|
+
A/B ๋ ํ ํ๋ฉด ์์์ **ํผ์ฌ**ํ ์ ์๋ค โ ํค๋ยท์์ฝ์ ์ ์ Label, ๋ฐ๋ณต ๋ชฉ๋กยท์ ํ์ง๋ B. ๋
ธ๋๋ณ๋ก ํ์ ํ๋ค(SKILL.md "๋ฐ์ดํฐ ํ์ ๊ฒฐ์ " ๊ณผ ๋์ผ ๊ธฐ์ค).
|
|
42
|
+
|
|
43
|
+
> **๊ณตํต**: ๊ตฌ์กฐ ์ ๊ณต์ด๋ ๋ฏธ์ ๊ณต์ด๋ , ํ๋ฉด์ ํญ์ ๋ชฉ์
๋ฐ์ดํฐ๋ก ์ฑ์ "์ด์์๋" ํ๋กํ ํ์
์ด์ด์ผ ํ๋ค. ๋ฏธ์ ๊ณต์ด๋ผ๊ณ ๋น์๋์ง ์๋๋ค โ ์ถ์ ํด์ ์ฑ์ฐ๋ ๊ฒ ๊ธฐ๋ณธ๊ฐ์ด๋ค (`mockup.md`).
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# spec-format โ ์ค๊ฐ ์คํ `<name>.spec.md` ํ์
|
|
2
|
+
|
|
3
|
+
Phase 1 ์ฐ์ถ๋ฌผ์ ํ์. `---` frontmatter(๋ถ์ ๋ฉํ) + ๋ณธ๋ฌธ(Step๋ณ ์์ฐ์ด ๋ช
์ธ). ๋ณธ๋ฌธ์ Phase 2 ์์ "์์ฒญ"์ผ๋ก ๊ทธ๋๋ก ์๋น๋๋ค.
|
|
4
|
+
|
|
5
|
+
## frontmatter ํค
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
---
|
|
9
|
+
id: <์งง์ ์๋ณ์> # ์: pda-inspection-request
|
|
10
|
+
domain: <๋๋ฉ์ธ> # ์: ํ์ง/๋ฌผ๋ฅ
|
|
11
|
+
feature: <ํ ์ค ๊ธฐ๋ฅ> # ์: ์ถํ๊ฒ์ฌ์๋ขฐ ์
๋ ฅ โ ์ค์บ์ผ๋ก ํ๋ชฉ ์ ์ฌ
|
|
12
|
+
screenKind: input | query | mixed
|
|
13
|
+
route: A | B | mixed # routing.md ๊ฒฐ์ (์ ์ / ๋ฐ์ดํฐ์ฐ๊ฒฐ / ํผ์ฌ)
|
|
14
|
+
events: [์ ์ฅ, ์ญ์ , ์ ๊ท, ์กฐํ] # ์์ผ๋ฉด
|
|
15
|
+
steps: # Step ๋ถํด โ ๊ถ์ฅ 3~5 ยท ์ต๋ 7 (์๋ "Step ์ ๊ท์น")
|
|
16
|
+
- { id: Step1, role: ..., next: Step2 }
|
|
17
|
+
keyRoles: # key-roles.md โ ํ๋ โ master/detail/link/none
|
|
18
|
+
<ํ๋>: <role>
|
|
19
|
+
categories: # route ์ B ๊ฐ ํฌํจ๋ ๋ โ data-connection.md
|
|
20
|
+
Ctg<Name>: { role: master|detail, keys: [...], parentKey: ..., childKey: ..., fields: [...] }
|
|
21
|
+
assumptions: # ๊ตฌ์กฐ ๋ฏธ์ ๊ณต ์ ์ถ๋ก ํ ๊ฐ์ (์ฌ๋ ๊ฒํ ์ฉ)
|
|
22
|
+
- <๊ฐ์ ๋ฌธ์ฅ>
|
|
23
|
+
provisional: # ๋น๋ธ๋กํน ๋ฏธํด๊ฒฐ (key-roles.md / lint.md)
|
|
24
|
+
- { field: ..., guess: ..., why: ... }
|
|
25
|
+
expect: # Phase 2 ๊ฐ ๋ง์กฑํด์ผ ํ ์ฒดํฌ๋ฆฌ์คํธ (๊ฒ์ฆยท์๊ธฐ์ ๊ฒ์ฉ)
|
|
26
|
+
- <๊ธฐ๋ ์กฐ๊ฑด>
|
|
27
|
+
---
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`expect` ๋ bench ์ผ์ด์ค(T-/D-)์ ๊ทธ๊ฒ๊ณผ ๊ฐ์ ์ญํ โ ์์ฑ ๊ฒฐ๊ณผ๊ฐ ๋ง๋์ง ์ค์ค๋ก ์ ๊ฒํ๋ ๋ชฉ๋ก. ์: "Step1โ2โ3 reachability 1ํ", "๋ํ
์ผ์ DataUsage:query (UseInnerBlock ๊ธ์ง)", "Init mock ๋ถ๋ชจ2+์์", "Collections:{} ์ ์ง", "์กฐํ์กฐ๊ฑด 12๊ฐ โ Step2 ๋ถ๋ฆฌ".
|
|
31
|
+
|
|
32
|
+
## ๋ณธ๋ฌธ (Step๋ณ ๋ช
์ธ)
|
|
33
|
+
|
|
34
|
+
๊ฐ Step ์ ํค๋๋ก ๋๋๊ณ , ๊ทธ ์์ ์์ญ(๋ง์คํฐ/๋ํ
์ผ/์กฐํ์กฐ๊ฑด/์์ฝ)๊ณผ ํญ๋ชฉ์ ์ ๋๋ค. ํญ๋ชฉ์ `์ด๋ฆ โ ์๋(์ปจํธ๋กค) [๊ธฐ๋ณธ๊ฐ/๋ฐ์ธ๋ฉ]` ํํ. ๋ฐ์ดํฐ์ฐ๊ฒฐยท๋ชฉ์
ยท๋ค๋น๊ฒ์ด์
๊ท์น์ ๋ฌธ์ฅ์ผ๋ก ๋ช
์.
|
|
35
|
+
|
|
36
|
+
**"๋ฐ์ดํฐ / ๋ชฉ์
" ์ ์ ํ์**๋ค โ ๊ตฌ์กฐ ์ ๊ณต์ด๋ ๋ฏธ์ ๊ณต์ด๋ ํ๋ฉด์ ์ฑ์ธ **๊ตฌ์ฒด์ mock ๊ฐ**(ํ์ค์ ๋ฆฌํฐ๋ด N๊ฑด, ๋ถ๋ชจ-์์์ด๋ฉด ์กฐ์ธ ์ผ์น)์ ์ ๋๋ค. ๋ฏธ์ ๊ณต์ด๋ฉด `mockup.md` ์ ์ฐจ๋ก ์นดํ
๊ณ ๋ฆฌยทํ๋ยท๊ฐ์ ์ถ์ ํด ์ ๊ณ frontmatter `categories`/`assumptions` ์ ๊ธฐ๋ก. ๋น ํ๋ฉด์ผ๋ก ๋๋ด์ง ์๋๋ค.
|
|
37
|
+
|
|
38
|
+
๋ณธ๋ฌธ ์์ฑ ์ ์ฐธ๊ณ ํ
ํ๋ฆฟ:
|
|
39
|
+
- ๋ง์คํฐ-๋ํ
์ผ(B, ๋ถ๋ชจ-์์) โ `templates/master-detail.spec.md`
|
|
40
|
+
- ์กฐํ ํ๋ฉด(์กฐ๊ฑด ๋ถ๋ฆฌ) โ `templates/query-screen.spec.md`
|
|
41
|
+
- ์ ์ ํ๋กํ ํ์
(A, ๊ตฌ์กฐ ๋ฏธ์ ๊ณต/๋จ๊ฑด) โ `templates/static-prototype.spec.md`
|
|
42
|
+
|
|
43
|
+
## Step ์ ๊ท์น (์คํ๊ธฐ๋ฐ ์์ฑ)
|
|
44
|
+
|
|
45
|
+
์คํ์ผ๋ก ์งํํ ํ๋ฉด์ **3~5 Step ๊ถ์ฅ ยท ์ต๋ 7 Step** ์ผ๋ก ๊ตฌ์ฑํ๋ค. ํ Step ์ ๋ชจ๋ ๊ฑธ ์ฑ์ฌ๋ฃ์ง๋, ๊ณผํ๊ฒ ์๊ฒ ์ชผ๊ฐ์ง๋ ๋ง ๊ฒ โ ํ๋ฆ์ ์์ฐ์ค๋ฌ์ด ๋จ๊ณ๋ก ๋ถํดํ๋ **7๊ฐ๋ฅผ ๋๊ธฐ์ง ์๋๋ค**(๋์ผ๋ฉด ์๋ธ ํ๋ฆ์ ํฉ์น๊ฑฐ๋ Step ์ ์์ญ์ผ๋ก ๋ฌถ๋๋ค). ์ ๋ง ๋จ์ํ ๋จ๊ฑด ํ๋ฉด์ด๋ฉด 2 Step ์ดํ๋ ๊ฐ๋ฅํ๋, ๊ทธ ๊ทผ๊ฑฐ๋ฅผ `assumptions` ์ ์ ๋๋ค.
|
|
46
|
+
|
|
47
|
+
- **๋ชฉ๋ก/์กฐํ**: ๊ฒฐ๊ณผ ๋ฆฌ์คํธ + (์กฐํ์กฐ๊ฑด ํผ ๋ถ๋ฆฌ) + ์์ธ(detail) โ ์์ฐํ 2~3 Step. ์กฐํ์กฐ๊ฑด โฅ5 ๋ฉด ์กฐ๊ฑด ํผ์ ๋ณ๋ Step (`query-screens.md`).
|
|
48
|
+
- **์
๋ ฅ**: ๊ธฐ๋ณธ์ ๋ณด โ ์์ธ/ํญ๋ชฉ โ ํ์ธ/์๋ฃ ์ฒ๋ผ ์
๋ ฅ ํ๋ฆ์ ๋จ๊ณํ โ 3 Step.
|
|
49
|
+
- **๋จ๊ฑด ํ์(A)**: ํ์ + ๊ฒฐ๊ณผ/ํ์ธ ๋ฑ์ผ๋ก 2~3 Step. ์ ๋ง 1ํ๋ฉด์ด๋ฉด ์ ๊ฒ ๋ ์ ์์ผ๋ ๊ทผ๊ฑฐ๋ฅผ `assumptions` ์ ์ ๋๋ค.
|
|
50
|
+
- StartSteps + ๊ฐ Step.Next ํฉ์งํฉ์ผ๋ก reachability ๊ฐ ์ ํํ 1ํ ๋๋๋ก(๋๊ธฐ๊ฑฐ๋ ์ค๋ณต ๊ธ์ง). ํค๋ BackButton ํ์ค ์ ์ฉ.
|
|
51
|
+
|
|
52
|
+
## Step ์ ํ / ๋ค๋น (์คํ ๋ณธ๋ฌธ์ ๋ฐ๋์ ๊ธฐ์ )
|
|
53
|
+
|
|
54
|
+
๊ฐ Step ์ ๋ํด **์ด๋ป๊ฒ ๋ค์ด์ค๊ณ ๋๊ฐ๋์ง**๋ฅผ ์คํ ๋ณธ๋ฌธ์ ๋ช
์ํ๋ค(์ํ ์์ค์ผ๋ก ๊ตฌ์ฒด์ ์ผ๋ก). ๋ชจํธํ๊ฒ ๋๋ฉด ํ๋ฆ์ด ๋๊ธด ์์ฑ๋ฌผ(์: ์กฐํ์กฐ๊ฑด Step ์์ ๊ฒฐ๊ณผ๋ก ๋ชป ๋์์ด)์ด ๋์จ๋ค.
|
|
55
|
+
|
|
56
|
+
- **StartSteps**: ๋ณดํต `["Step1"]`. ๋ค์ค ์ง์
์ด ํ์ํ๋ฉด ๋์ด.
|
|
57
|
+
- **์ ์ง**: `BottomButtons[*].MoveTo:"Next"` + `Next.MoveStepOrder:["StepN"]`, ๋๋ ๋ฆฌ์คํธ ์นด๋ `UseMove:true` + `MoveSteps.MoveStepOrder`.
|
|
58
|
+
- **๋ณต๊ท**: ํค๋ `UseBackButton:true`(ํ์ค BackButton, `IsRestored:true` ๋ก ๊ฐ ์ ์ง) ๋๋ `BottomButtons[*].MoveTo:"Prev"`. โ `Current.step.moveToPrev/moveToNext` ์คํฌ๋ฆฝํธ **๊ธ์ง**.
|
|
59
|
+
- **์กฐํ์กฐ๊ฑด ์ง์
**: ๊ฒฐ๊ณผ Step `FixedContentsTop` ์์ ์ง์
(์๋จ). ํ๋จ '์กฐํ์กฐ๊ฑด' ๋ฒํผยท`๋ฐ๋ก๊ฐ๊ธฐ`ยท`๋ฉ์ธ๋ฉ๋ด`ยท`ํผ์น๊ธฐ/์ ๊ธฐ` ๋ผ๋ฒจ ๋ฒํผ **์์ฑ ๊ธ์ง**.
|
|
60
|
+
- ๊ฐ Step ์ค์ `next:`/`back:`/`filterEntry:` ๋ฅผ ์ ์ด reachability ๊ฐ ์ ํํ 1ํ ๋๊ฒ ํ๋ค.
|
|
61
|
+
|
|
62
|
+
## expect ์ ๋ฃ์ ์์ฒด ์ ๊ฒ ํญ๋ชฉ (ํด๋น ์)
|
|
63
|
+
|
|
64
|
+
- M-D ์ ๊ณต โ `intent.mock`(๋ถ๋ชจ+์์ ์นดํ
๊ณ ๋ฆฌ) ๋๋ฐ, `UseDataConnection:true`/`DataConnection` โฅ1 (0์ด๋ฉด ์คํจ).
|
|
65
|
+
- ๋ฐ๋ณต ์์ญ์ `DataUsage:"query"` + ์คํฌ๋กค ๊ทธ๋ฃน์ผ๋ก ํ๋ ๊ฒน ๋ํ(์ค์ฒฉ ๊น์ด โฅ5 ๋ชฉํ), ์ ์ Label ๋ณต์ ์๋.
|
|
66
|
+
- ์กฐํ์กฐ๊ฑด์ ์๋จ(`FixedContentsTop`)/๋ณ๋ Step, ํ๋จ ์ง์
๋ฒํผ ์์, ๋ถ๊ฐ ๋ค๋น ๋ฒํผ(๋ฐ๋ก๊ฐ๊ธฐ/๋ฉ์ธ๋ฉ๋ด/ํผ์น๊ธฐ) **0๊ฐ**.
|
|
67
|
+
- ๋ง์คํฐ ํ์ ๋ผ๋ฒจ ๋ฐ์ธ๋ฉ(๊ฐ๋ฅ ์) + ์ข
์ ์ ํ mock.
|
|
68
|
+
- Step reachability ์ ํํ 1ํ, ๋ณต๊ท ์ฑ๋์ ํ์ค(์คํฌ๋ฆฝํธ ํ๋ฆ์ ์ด 0).
|
|
69
|
+
- Collections:{} ์ ์ง, validate ํต๊ณผ.
|
|
70
|
+
|
|
71
|
+
## ์์ฑ ์์น
|
|
72
|
+
|
|
73
|
+
- **๊ตฌ์กฐ ์ ๊ณต ์**: ์ค ํ๋/ํค/์นด๋๋๋ฆฌํฐ๋ฅผ ๊ทธ๋๋ก ์ฎ๊ธฐ๊ณ ์์ ์ถ๊ฐ ๊ธ์ง. ๋ถ๊ฐ์ ๋ณด๋ ๋ณด์กฐ ๋ณํฉ.
|
|
74
|
+
- **๊ตฌ์กฐ ๋ฏธ์ ๊ณต ์**: ์ถ๋ก ํ ๋ง์คํฐ-๋ํ
์ผยทํค๋ฅผ ์ฑ์ฐ๋ `assumptions` ์ ๊ทผ๊ฑฐ๋ฅผ ๋จ๊ธด๋ค.
|
|
75
|
+
- provisional ์ ๋ฉ์ถค ์ฌ์ ๊ฐ ์๋๋ค โ ๊ธฐ๋กํ๊ณ ์งํ.
|
|
76
|
+
- ๋ณธ๋ฌธ์ Phase 2 ๊ฐ ์ฝ๊ณ ๋
ธ๋๋ฅผ ๋ง๋ค ์ ์์ ๋งํผ ๊ตฌ์ฒด์ ์ด๋, **์๋๋ฆฌ์ค JSON ์ ์ฌ๊ธฐ ์ฐ์ง ์๋๋ค**(๊ทธ๊ฑด Phase 2). ์คํ์ "๋ฌด์์"์ด๊ณ Phase 2 ๊ฐ "์ด๋ป๊ฒ".
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: order-with-items
|
|
3
|
+
domain: ์ฃผ๋ฌธ๊ด๋ฆฌ
|
|
4
|
+
feature: ์ฃผ๋ฌธ + ์ฃผ๋ฌธ์ํ(๋ถ๋ชจ-์์ DC) + ์์ธ ๋ณด๊ธฐ
|
|
5
|
+
screenKind: mixed
|
|
6
|
+
route: B
|
|
7
|
+
events: [์กฐํ, ์์ธ]
|
|
8
|
+
steps:
|
|
9
|
+
- { id: Step1, role: ์ฃผ๋ฌธ๋ชฉ๋ก(๋ถ๋ชจquery+์์query), next: Step2 }
|
|
10
|
+
- { id: Step2, role: ์ฃผ๋ฌธ์์ธ(detail, ์ฝ๊ธฐ์ ์ฉ), back: Step1 }
|
|
11
|
+
keyRoles:
|
|
12
|
+
์ฃผ๋ฌธ๋ฒํธ: master
|
|
13
|
+
์ฃผ๋ฌธ์ผ์: none
|
|
14
|
+
์ฃผ๋ฌธ์ํ: none
|
|
15
|
+
ํฉ๊ณ๊ธ์ก: none
|
|
16
|
+
์ํ_์ฃผ๋ฌธ๋ฒํธ: link
|
|
17
|
+
์ํ๋ช
: none
|
|
18
|
+
์๋: none
|
|
19
|
+
๋จ๊ฐ: none
|
|
20
|
+
๊ธ์ก: none
|
|
21
|
+
categories:
|
|
22
|
+
CtgOrder:
|
|
23
|
+
role: master
|
|
24
|
+
keys: [์ฃผ๋ฌธ๋ฒํธ]
|
|
25
|
+
fields: [์ฃผ๋ฌธ์ผ์, ์ฃผ๋ฌธ์ํ, ํฉ๊ณ๊ธ์ก]
|
|
26
|
+
CtgOrderItem:
|
|
27
|
+
role: detail
|
|
28
|
+
parentKey: ์ฃผ๋ฌธ๋ฒํธ
|
|
29
|
+
childKey: ์ฃผ๋ฌธ๋ฒํธ
|
|
30
|
+
fields: [์ํ๋ช
, ์๋, ๋จ๊ฐ, ๊ธ์ก]
|
|
31
|
+
assumptions:
|
|
32
|
+
- ์ฃผ๋ฌธ 1๊ฑด์ด ์ฌ๋ฌ ์ฃผ๋ฌธ์ํ์ ๊ฐ์ง๋ค(1:N)๊ณ ์ถ๋ก
|
|
33
|
+
- ํฉ๊ณ๊ธ์ก = ๊ทธ ์ฃผ๋ฌธ ์ํ๋ค์ ๊ธ์ก ํฉ (mock ์์ ์ฐ์ ์ผ์น์ํด)
|
|
34
|
+
provisional: []
|
|
35
|
+
expect:
|
|
36
|
+
- ๋ถ๋ชจ ์ฃผ๋ฌธ Group DataUsage:"query" โ CtgOrder ์นํฐ ์๋งํผ ์นด๋ ๋ฐ๋ณต
|
|
37
|
+
- ์์ ์ฃผ๋ฌธ์ํ Group ์ด ๋ถ๋ชจ ์นด๋ ์์์ DataUsage:"query" + TargetSector.Filters:[{FilterType:"Parent"}]
|
|
38
|
+
- Parent ํํฐ์ DCParentKey(์ฃผ๋ฌธ๋ฒํธ)/DCChildKey(์ฃผ๋ฌธ๋ฒํธ) ์ง์
|
|
39
|
+
- ๋ถ๋ชจ/์์ ๋ชจ๋ ํ์ ํญ๋ชฉ์ด LabelCKey/Ckeys ๋ก ๋ฐ์ธ๋ฉ(์ ์ labeltext ๊ธ์ง)
|
|
40
|
+
- ์ ๋ชฉยท์ด์ฃผ๋ฌธ๊ฑด์ ์์ฝยท"์ ๊ท" ๋ฒํผ์ query ๊ทธ๋ฃน ๋ฐ๊นฅ ๋น์ฐ๊ฒฐ ๋ํผ(UseDataConnection:false)
|
|
41
|
+
- query ๊ทธ๋ฃน Height.MatchText:true + ScrollType:"ScrollY"
|
|
42
|
+
- ์์ธ Step2 ๋ DataUsage:"detail" (UseTargetSector:true + Status:["active"], ์ฝ๊ธฐ์ ์ฉ)
|
|
43
|
+
- Step2 ํค๋ BackButton ํ์ค(Step.UseBackButton:true, BackButton.Next:"None"), {=Field} ํ ํฐ ๊ธ์ง โ ๊ฐ์ script ์ ๋ฌ
|
|
44
|
+
- ์์ Step Init(named handler)๊ฐ intent.mock ์ผ๋ก CtgOrder 3๊ฑด + ๊ฐ ์ฃผ๋ฌธ์ CtgOrderItem 2~3๊ฑด
|
|
45
|
+
- ํฉ๊ณ๊ธ์ก mock ์ด ๊ทธ ์ฃผ๋ฌธ ์ํ ๊ธ์ก ํฉ๊ณผ ์ผ์น
|
|
46
|
+
- CategoryName 'Ctg' ์ ๋ PascalCase, ์์ฝ์ด ๋ฏธ์ฌ์ฉ
|
|
47
|
+
- StartSteps + Step.Next ๋ก Step1โStep2 reachability ์ ํํ 1ํ, Collections:{} ์ ์ง, validate ํต๊ณผ
|
|
48
|
+
---
|
|
49
|
+
์ฃผ๋ฌธ๊ณผ ๊ทธ ์ฃผ๋ฌธ์ ์ํ๋ค์ ํจ๊ป ๋ณด์ฌ์ฃผ๋ ํ๋ฉด. **๋ถ๋ชจ-์์ ๋ฐ์ดํฐ์ฐ๊ฒฐ(1:N)** ๊ตฌ์กฐ๋ค.
|
|
50
|
+
|
|
51
|
+
# Step 1 โ ์ฃผ๋ฌธ ๋ชฉ๋ก (๋ถ๋ชจ query + ์์ query)
|
|
52
|
+
|
|
53
|
+
## ์๋จ (๋น์ฐ๊ฒฐ ๋ํผ โ 1๋ฒ๋ง ํ์, query ๊ทธ๋ฃน ๋ฐ๊นฅ)
|
|
54
|
+
- ์ ๋ชฉ "์ฃผ๋ฌธ ๋ชฉ๋ก" โ Label(labeltext). ๊ตต๊ฒ/ํฐ ๊ธ์จ(design: font ์ฌ๋กฏ).
|
|
55
|
+
- ์ด ์ฃผ๋ฌธ๊ฑด์ ์์ฝ "์ด N๊ฑด" โ Label. ํ์ ๋ณด์กฐ ํ
์คํธ.
|
|
56
|
+
- "์ ๊ท ์ฃผ๋ฌธ" ๋ฒํผ โ Button. ์ฐ์ธก ์ ๋ ฌ. (๋์์ ํ๋กํ ํ์
๋ฒ์ ๋ฐ์ด์ด๋ ๋ฐฐ์น)
|
|
57
|
+
|
|
58
|
+
## ์ฃผ๋ฌธ ์นด๋ (๋ถ๋ชจ query, CtgOrder โ ์คํฌ๋กค ๋ํ)
|
|
59
|
+
- **์ค์ฒฉ ๋ํ**: `์คํฌ๋กค Group(ScrollType:"ScrollY", UseDataConnection:false) > ๋ฆฌ์คํธ Group(UseDataConnection:true, DataConnection{TargetType:"category", DataUsage:"query", CategoryName:"CtgOrder"}) > row Group(์นด๋)`. ๋ฐ์ดํฐ์ฐ๊ฒฐ์ ๋ฐ๋ณตํ๋ ๋ฆฌ์คํธ Group ์๋ง, ๋ฐ๊นฅ ์คํฌ๋กค์ false.
|
|
60
|
+
- ์นด๋ ์คํ์ผ: ๋ผ์ด๋ + ์
์ ํ
๋๋ฆฌ + ์นด๋ ์ฌ์ด ๊ฐ๊ฒฉ(design: radius/border/m ์ฌ๋กฏ).
|
|
61
|
+
- ํ์ ํญ๋ชฉ(๋ชจ๋ ์นํฐ ํ๋ ๋ฐ์ธ๋ฉ):
|
|
62
|
+
- ์ฃผ๋ฌธ๋ฒํธ โ Label(LabelCKey: ์ฃผ๋ฌธ๋ฒํธ). ์นด๋ ํค๋, ๊ตต๊ฒ.
|
|
63
|
+
- ์ฃผ๋ฌธ์ผ์ โ Label(LabelCKey: ์ฃผ๋ฌธ์ผ์). ๋ณด์กฐ ํ
์คํธ.
|
|
64
|
+
- ์ฃผ๋ฌธ์ํ โ Label(LabelCKey: ์ฃผ๋ฌธ์ํ). ์ํ ๋ฐฐ์ง ๋๋(์ ์/๋ฐฐ์ก์ค/์๋ฃ).
|
|
65
|
+
- ํฉ๊ณ๊ธ์ก โ Label(LabelCKey: ํฉ๊ณ๊ธ์ก). ์ฐ์ธก, ๊ฐ์กฐ.
|
|
66
|
+
|
|
67
|
+
### ์ฃผ๋ฌธ์ํ ๋ชฉ๋ก (์์ query โ ์นด๋ ์)
|
|
68
|
+
- ๋ถ๋ชจ ์นด๋ Group **์์ชฝ**์ ์์ Group UseDataConnection:true, DataUsage:"query", CategoryName:"CtgOrderItem".
|
|
69
|
+
- TargetSector.Filters:[{FilterType:"Parent"}], DCParentKey:"์ฃผ๋ฌธ๋ฒํธ" / DCChildKey:"์ฃผ๋ฌธ๋ฒํธ" ๋ก ์กฐ์ธ.
|
|
70
|
+
- ํ ํญ๋ชฉ(๋ฐ๋ณต, ์นํฐ ํ๋ ๋ฐ์ธ๋ฉ):
|
|
71
|
+
- ์ํ๋ช
โ Label(LabelCKey: ์ํ๋ช
).
|
|
72
|
+
- ์๋ โ Label(LabelCKey: ์๋). "x N" ํํ.
|
|
73
|
+
- ๋จ๊ฐ / ๊ธ์ก โ Label(Ckeys). ์ฐ์ธก ์ ๋ ฌ.
|
|
74
|
+
- ์นด๋์ "์์ธ" ๋ฒํผ โ Step 2 (์ ํ ์ฃผ๋ฌธ์ด activeSector ๊ฐ ๋จ).
|
|
75
|
+
|
|
76
|
+
# Step 2 โ ์ฃผ๋ฌธ ์์ธ (detail, ์ฝ๊ธฐ์ ์ฉ)
|
|
77
|
+
- ํค๋ BackButton(Step.UseBackButton:true) โ Step 1 ๋ก ํ๊ท.
|
|
78
|
+
- ์ ํํ ์ฃผ๋ฌธ(activeSector)์ DataUsage:"detail"(UseTargetSector:true + Status:["active"])๋ก ์ฝ๊ธฐ์ ์ฉ ํ์.
|
|
79
|
+
- ์ฃผ๋ฌธ๋ฒํธ / ์ฃผ๋ฌธ์ผ์ / ์ฃผ๋ฌธ์ํ / ํฉ๊ณ๊ธ์ก + ์ํ ๋ชฉ๋ก(์ํ๋ช
ยท์๋ยท๋จ๊ฐยท๊ธ์ก). ์
๋ ฅ ๋ถ๊ฐ, ํ์๋ง.
|
|
80
|
+
- ๊ฐ์ {=Field} ํ ํฐ์ด ์๋๋ผ onShow/Next script ๋ก ์ ๋ฌ(template-script ๊ท์น).
|
|
81
|
+
|
|
82
|
+
# ๋ฐ์ดํฐ / ๋ชฉ์
(์์ Step Init, named handler)
|
|
83
|
+
- `Step.Events.Init:"Step1Init"` + `scenario.Events.Step1Init` ์์ intent.mock.
|
|
84
|
+
- CtgOrder 3๊ฑด (ํ์ค์ ๊ฐ):
|
|
85
|
+
- ORD-2026-001 / 2026-06-01 / ๋ฐฐ์ก์ค / ํฉ๊ณ 128,000
|
|
86
|
+
- ORD-2026-002 / 2026-06-03 / ์ ์ / ํฉ๊ณ 54,000
|
|
87
|
+
- ORD-2026-003 / 2026-06-04 / ์๋ฃ / ํฉ๊ณ 210,000
|
|
88
|
+
- CtgOrderItem (๊ฐ ์ฃผ๋ฌธ ์ฃผ๋ฌธ๋ฒํธ๋ก ์ฐ๊ฒฐ, ๊ธ์ก ํฉ = ๋ถ๋ชจ ํฉ๊ณ๊ธ์ก):
|
|
89
|
+
- ORD-2026-001: ๋ฌด์ ๋ง์ฐ์ค x2 @24,000=48,000 / USBํ๋ธ x1 @80,000=80,000
|
|
90
|
+
- ORD-2026-002: A4์ฉ์ง x3 @18,000=54,000
|
|
91
|
+
- ORD-2026-003: ๊ธฐ๊ณ์ํค๋ณด๋ x1 @150,000=150,000 / ๋ง์ฐ์คํจ๋ x2 @30,000=60,000
|
|
92
|
+
|
|
93
|
+
# ๊ท์น
|
|
94
|
+
- Collections:{} ์ ์ง ยท UseInnerBlock ๊ธ์ง(๋ฐ๋ณต์ ๋ชจ๋ DataUsage:"query")
|
|
95
|
+
- 1๋ฒ๋ง ๋ณด์ผ ์์๋ query ๊ทธ๋ฃน ๋ฐ๊นฅ, ๋น์ฐ๊ฒฐ ๊ทธ๋ฃน๋ UseDataConnection:false ๋ช
์
|
|
96
|
+
- ์ ์ ํ
์คํธ๋ก ์นด๋ ๋ด์ฉ์ ๋ฐ์ง ๋ง ๊ฒ(๋ชจ๋ ์นด๋๊ฐ ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ๋๋ฉด ์ ๋จ)
|
|
97
|
+
- validate ํต๊ณผ ํ์
|