@simplysm/sd-claude 14.0.53 → 14.0.55
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/claude/references/sd-simplysm-v14/angular/README.md +164 -291
- package/claude/references/sd-simplysm-v14/angular/_api-index.md +250 -0
- package/claude/references/sd-simplysm-v14/angular/bootstrap/provide-sd-angular.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/bootstrap/sd-angular-config-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-command-directive.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-events.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-intersection-directive.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-invalid.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-resize-directive.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-ripple.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-router-link.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-show-effect.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-typed-template.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-address-search-modal.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-permission-table.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-shared-data-components.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-tiptap-editor.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/pipes/format-pipe.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/plugins/sd-global-error-handler.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/plugins/sd-option-event-plugin.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/provider-types/sd-menu.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/provider-types/sd-modal-content-def.md +9 -9
- package/claude/references/sd-simplysm-v14/angular/provider-types/sd-toast-content-def.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/provider-types/shared-data-base.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-activated-modal-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-app-structure-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-busy-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-file-dialog-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-local-storage-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-modal-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-navigate-window-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-print-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-service-client-factory-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-shared-data-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-system-config-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-system-log-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-theme-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-toast-provider.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/styling/classes.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/styling/mixins.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/styling/themes.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/styling/variables.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/type-utilities/directive-input-signals.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-data/sd-base-container.md +141 -0
- package/claude/references/sd-simplysm-v14/angular/ui-data/sd-crud-detail.md +273 -0
- package/claude/references/sd-simplysm-v14/angular/ui-data/sd-crud-list.md +623 -0
- package/claude/references/sd-simplysm-v14/angular/ui-data/sd-list.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-data/sd-sheet.md +34 -39
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-additional-button.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-anchor.md +2 -7
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-button.md +2 -11
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox-group.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox.md +2 -4
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-date-range-picker.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-form.md +2 -7
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-modal-select-button.md +7 -7
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-numpad.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-range.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-select.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-shared-data-select.md +2 -4
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-state-preset.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-switch.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textarea.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textfield.md +2 -8
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock-container.md +2 -7
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock.md +2 -6
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-gap.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-board.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-lane.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-collapse.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-pagination.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-container.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-menu.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-user.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-tab.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-container.md +2 -9
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-menu.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-user.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar.md +2 -7
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-busy-container.md +2 -5
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-confirm-modal.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-dropdown.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-modal.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-prompt-modal.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-toast.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-barcode.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-calendar.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-echarts.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-label.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-note.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-progress.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/utils/inject-routing-signals.md +3 -16
- package/claude/references/sd-simplysm-v14/angular/utils/inject-sd-system-config-resource.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/utils/mark.md +2 -5
- package/claude/references/sd-simplysm-v14/angular/utils/selection-managers.md +3 -1
- package/claude/references/sd-simplysm-v14/angular/utils/set-safe-style.md +2 -0
- package/claude/references/sd-simplysm-v14/angular/utils/setup-functions.md +2 -4
- package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/README.md +16 -18
- package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/_api-index.md +18 -0
- package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/apk-installer/apk-installer.md +1 -1
- package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/auto-update/auto-update.md +1 -1
- package/claude/references/sd-simplysm-v14/capacitor-plugin-file-system/README.md +24 -45
- package/claude/references/sd-simplysm-v14/core-browser/README.md +22 -29
- package/claude/references/sd-simplysm-v14/core-browser/_api-index.md +37 -0
- package/claude/references/sd-simplysm-v14/core-browser/extensions/copy-paste.md +1 -1
- package/claude/references/sd-simplysm-v14/core-browser/extensions/element-prototype-extensions.md +2 -0
- package/claude/references/sd-simplysm-v14/core-browser/extensions/get-bounds.md +1 -1
- package/claude/references/sd-simplysm-v14/core-browser/utils/download-blob.md +1 -1
- package/claude/references/sd-simplysm-v14/core-browser/utils/fetch-url-bytes.md +1 -1
- package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-store.md +1 -1
- package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-virtual-fs.md +1 -1
- package/claude/references/sd-simplysm-v14/core-browser/utils/open-file-dialog.md +1 -1
- package/claude/references/sd-simplysm-v14/core-common/README.md +71 -153
- package/claude/references/sd-simplysm-v14/core-common/_api-index.md +70 -0
- package/claude/references/sd-simplysm-v14/core-common/errors/argument-error.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/errors/not-implemented-error.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/errors/sd-error.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/errors/timeout-error.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/extensions/array.md +2 -0
- package/claude/references/sd-simplysm-v14/core-common/extensions/map.md +2 -0
- package/claude/references/sd-simplysm-v14/core-common/extensions/set.md +2 -0
- package/claude/references/sd-simplysm-v14/core-common/features/debounce-queue.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/features/event-emitter.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/features/serial-queue.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/type-utils/common-types.md +2 -0
- package/claude/references/sd-simplysm-v14/core-common/type-utils/env.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/types/date-only.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/types/date-time.md +9 -1
- package/claude/references/sd-simplysm-v14/core-common/types/lazy-gc-map.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/types/time.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/types/uuid.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/bytes.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/dt.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/err.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/json.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/num.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/obj.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/path.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/primitive.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/str.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/template-strings.md +2 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/transfer.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/wait.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/xml.md +3 -1
- package/claude/references/sd-simplysm-v14/core-common/utils/zip-archive.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/README.md +25 -35
- package/claude/references/sd-simplysm-v14/core-node/_api-index.md +34 -0
- package/claude/references/sd-simplysm-v14/core-node/features/fs-watcher.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/logging/create-file-reporter.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/logging/pretty-reporter.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/logging/setup-consola.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/utils/cpx.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/utils/fsx.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/utils/pathx.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/worker/create-worker.md +3 -1
- package/claude/references/sd-simplysm-v14/core-node/worker/worker.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/README.md +35 -49
- package/claude/references/sd-simplysm-v14/excel/_api-index.md +40 -0
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-cell.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-col.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-row.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-workbook.md +6 -3
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-worksheet.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/types/excel-address-point.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/types/excel-style-options.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/types/excel-value-type.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/utilities/excel-utils.md +3 -1
- package/claude/references/sd-simplysm-v14/excel/wrapper/excel-wrapper.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/README.md +66 -71
- package/claude/references/sd-simplysm-v14/orm-common/_api-index.md +59 -0
- package/claude/references/sd-simplysm-v14/orm-common/core/db-context.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/core/db-transaction-error.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/expression/expr-unit.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/expression/expr.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/models/migration.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/query-builder/create-query-builder.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/executable.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/parse-search-query.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/queryable.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/column-builder.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/foreign-key-builder.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/index-builder.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/procedure.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/table.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/view.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/types/data-type.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/types/dialect.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/types/expr.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/types/parse-query-result.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-common/types/query-def.md +3 -1
- package/claude/references/sd-simplysm-v14/orm-node/README.md +27 -28
- package/claude/references/sd-simplysm-v14/orm-node/_api-index.md +29 -0
- package/claude/references/sd-simplysm-v14/orm-node/connections/mssql-db-conn.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/connections/mysql-db-conn.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/connections/postgresql-db-conn.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/core/create-db-conn.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/core/create-orm.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/core/node-db-context-executor.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-config.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-constants.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/db-conn.md +2 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/get-dialect-from-config.md +2 -0
- package/claude/references/sd-simplysm-v14/sd-claude/README.md +26 -65
- package/claude/references/sd-simplysm-v14/sd-claude/_api-index.md +39 -0
- package/claude/references/sd-simplysm-v14/sd-claude/assets.md +2 -0
- package/claude/references/sd-simplysm-v14/sd-claude/cli.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-claude/hooks.md +11 -7
- package/claude/references/sd-simplysm-v14/sd-claude/scripts.md +2 -0
- package/claude/references/sd-simplysm-v14/sd-cli/README.md +48 -119
- package/claude/references/sd-simplysm-v14/sd-cli/_api-index.md +49 -0
- package/claude/references/sd-simplysm-v14/sd-cli/angular-vite-plugin/sd-angular-plugin.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/build-target.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/npm-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-browser-support-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-build-package-config.md +4 -2
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-capacitor-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-client-package-config.md +4 -2
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-config.md +4 -2
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-electron-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-package-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-post-publish-script-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-publish-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-pwa-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-scripts-package-config.md +4 -2
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-server-package-config.md +4 -2
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-watch-hook-config.md +3 -1
- package/claude/references/sd-simplysm-v14/sd-cli/ts-compiler/sd-ts-compiler.md +3 -1
- package/claude/references/sd-simplysm-v14/service-client/README.md +33 -42
- package/claude/references/sd-simplysm-v14/service-client/_api-index.md +58 -0
- package/claude/references/sd-simplysm-v14/service-client/features/event-client.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/features/file-client.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/features/orm-client-connector.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/features/orm-client-db-context-executor.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/main/service-client.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/protocol/client-protocol-wrapper.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/transport/service-transport.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/transport/socket-provider.md +1 -1
- package/claude/references/sd-simplysm-v14/service-client/types/blob-input.md +2 -2
- package/claude/references/sd-simplysm-v14/service-client/types/browser-worker.md +2 -2
- package/claude/references/sd-simplysm-v14/service-client/types/file-collection.md +2 -2
- package/claude/references/sd-simplysm-v14/service-client/types/service-connection-options.md +2 -2
- package/claude/references/sd-simplysm-v14/service-client/types/service-progress.md +2 -2
- package/claude/references/sd-simplysm-v14/service-common/README.md +34 -127
- package/claude/references/sd-simplysm-v14/service-common/_api-index.md +51 -0
- package/claude/references/sd-simplysm-v14/service-common/app-structure/app-structure-item.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/app-structure/get-flat-permissions.md +7 -1
- package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules-chain.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/events/define-event.md +7 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/create-service-protocol.md +8 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/protocol-config.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-add-event-listener-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-auth-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-emit-event-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-error-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-event-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-get-event-listener-infos-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-progress-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-remove-event-listener-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-request-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-response-message.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/service-types/app-structure-service.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/service-types/auto-update-service.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/service-types/orm-service.md +3 -1
- package/claude/references/sd-simplysm-v14/service-common/types/service-upload-result.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/README.md +50 -135
- package/claude/references/sd-simplysm-v14/service-server/_api-index.md +87 -0
- package/claude/references/sd-simplysm-v14/service-server/auth/auth-token-payload.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/auth/sign-jwt.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/auth/verify-jwt.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/core/auth.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/core/define-service.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/core/execute-service-method.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/core/service-context.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/legacy/handle-v1-connection.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/main/create-service-server.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/main/service-server.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/protocol/server-protocol-wrapper.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/services/app-structure-service.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/services/auto-update-service.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/services/orm-service.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-http-request.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-static-file.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-upload.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/transport-socket/service-socket.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/transport-socket/websocket-handler.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/types/service-server-options.md +3 -1
- package/claude/references/sd-simplysm-v14/service-server/utils/get-config.md +3 -1
- package/claude/references/sd-simplysm-v14/storage/README.md +17 -80
- package/claude/references/sd-simplysm-v14/storage/_api-index.md +26 -0
- package/claude/references/sd-simplysm-v14/storage/clients/ftp-storage-client.md +3 -1
- package/claude/references/sd-simplysm-v14/storage/clients/sftp-storage-client.md +3 -1
- package/claude/references/sd-simplysm-v14/storage/factory/storage-factory.md +1 -1
- package/claude/references/sd-simplysm-v14/storage/types/file-info.md +3 -1
- package/claude/references/sd-simplysm-v14/storage/types/storage-client.md +2 -0
- package/claude/references/sd-simplysm-v14/storage/types/storage-conn-config.md +3 -1
- package/claude/rules/sd-claude-rules.md +1 -1
- package/claude/skills/sd-dev/SKILL.md +62 -8
- package/claude/skills/sd-dev/subagent-preamble.md +22 -0
- package/package.json +1 -1
- package/claude/references/sd-simplysm-v14/angular/recipes/_common-rules.md +0 -336
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-a-edit-save.md +0 -191
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-b-delete-restore.md +0 -103
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-c-modal-view.md +0 -198
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-d-control-view.md +0 -109
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-e-auxiliary.md +0 -87
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-f-complex-detail.md +0 -202
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail.md +0 -280
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-a-inline-edit.md +0 -386
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-b-selection.md +0 -215
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-c-inline-delete.md +0 -64
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-d-select-modal.md +0 -193
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-e-readonly-modal.md +0 -140
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-f-modal-edit.md +0 -123
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-g-excel.md +0 -145
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list.md +0 -377
- package/claude/references/sd-simplysm-v14/angular/recipes/data-select-button.md +0 -368
- package/claude/references/sd-simplysm-v14/angular/recipes/page-modal-container.md +0 -238
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-content-type-data.md +0 -23
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-drawing-data.md +0 -29
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-relationship-data.md +0 -39
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-shared-string-data.md +0 -42
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-style-data.md +0 -97
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-workbook-data.md +0 -22
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-worksheet-data.md +0 -68
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml.md +0 -15
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# `SftpStorageClient`
|
|
2
2
|
|
|
3
|
-
SFTP
|
|
3
|
+
> **읽어야 하는 상황**: SFTP 연결을 직접 생명주기 관리하거나 SSH 키 인증 방식을 확인할 때. 단일 작업 단위로 자동 관리하려면 [`StorageFactory`](../factory/storage-factory.md) 사용.
|
|
4
|
+
|
|
5
|
+
`ssh2-sftp-client` 라이브러리 기반. [`StorageClient`](../types/storage-client.md) 인터페이스를 구현한다.
|
|
4
6
|
|
|
5
7
|
## When to use
|
|
6
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `StorageFactory`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **읽어야 하는 상황**: FTP/FTPS/SFTP 서버에 파일을 업로드·다운로드·목록 조회할 때 (기본 진입점). 하나의 연결을 장시간 유지해야 하면 [`FtpStorageClient`](../clients/ftp-storage-client.md) 또는 [`SftpStorageClient`](../clients/sftp-storage-client.md)를 직접 관리.
|
|
4
4
|
|
|
5
5
|
## When to use
|
|
6
6
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# `StorageClient`
|
|
2
2
|
|
|
3
|
+
> **읽어야 하는 상황**: 프로토콜에 무관한 스토리지 작업 함수를 작성할 때 (파라미터/반환 타입으로 사용). 직접 인스턴스화할 수 없다 — [`StorageFactory.connect()`](../factory/storage-factory.md) 콜백에서 제공받는다.
|
|
4
|
+
|
|
3
5
|
스토리지 클라이언트 공통 인터페이스. [`FtpStorageClient`](../clients/ftp-storage-client.md)와 [`SftpStorageClient`](../clients/sftp-storage-client.md)가 구현한다.
|
|
4
6
|
|
|
5
7
|
## When to use
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
- DB 스키마 설계 → 테이블·컬럼명
|
|
17
17
|
- 코드 구현 → 함수·클래스명
|
|
18
18
|
- 한국 개발 현장 통용 용어 사용
|
|
19
|
-
- 사용자가 명시하지 않은 사항 추측으로 행동 금지. 추측한것이 맞는지 `AskUserQuestion` tool로 물어볼 것.
|
|
19
|
+
- **CRITICAL**: 사용자가 명시하지 않은 사항 추측으로 행동 금지. 추측한것이 맞는지 `AskUserQuestion` tool로 물어볼 것.
|
|
20
20
|
- 명시적 요청없이 다음 단계를 추측하여 바로 작업 하지 말것
|
|
21
21
|
- 명시적 요청없이 코드/문서등을 바로 수정하지 말것
|
|
22
22
|
- 사용자가 직접 확인해야할 사항이 있으면, 계속 진행하지 말고 멈추고 사용자에게 직접 확인 결과를 요청할 것.
|
|
@@ -10,6 +10,26 @@ sd-wbs → sd-plan → sd-tdd → sd-check → sd-review를 순차 진행하는
|
|
|
10
10
|
|
|
11
11
|
## 공통 규칙
|
|
12
12
|
|
|
13
|
+
### subagent 실행 프로토콜
|
|
14
|
+
|
|
15
|
+
Step 4~6은 Agent 도구로 subagent를 생성하여 수행한다. 각 단계가 fresh context를 확보하여 컨텍스트 소진을 방지한다.
|
|
16
|
+
|
|
17
|
+
#### prompt 구성
|
|
18
|
+
|
|
19
|
+
1. `.claude/skills/sd-dev/subagent-preamble.md`를 Read한다
|
|
20
|
+
2. 그 내용 + Step별 작업 지시를 합쳐 Agent prompt를 구성한다
|
|
21
|
+
|
|
22
|
+
#### NEED_INPUT 처리 루프
|
|
23
|
+
|
|
24
|
+
subagent 반환값에 `---NEED_INPUT---`이 포함되면:
|
|
25
|
+
|
|
26
|
+
1. 상황과 선택지를 파악한다
|
|
27
|
+
2. AskUserQuestion으로 사용자에게 질문한다 (sd-options 규칙 준수)
|
|
28
|
+
3. SendMessage로 사용자 결정을 subagent에 전달한다
|
|
29
|
+
4. subagent 반환값을 다시 확인한다 (NEED_INPUT 반복 가능)
|
|
30
|
+
|
|
31
|
+
포함되지 않으면 해당 Step 완료.
|
|
32
|
+
|
|
13
33
|
## Step 1: 입력 분기
|
|
14
34
|
|
|
15
35
|
인자에 따라 시작 Step을 결정한다. (인자가 없는경우 대화에서 유추)
|
|
@@ -33,22 +53,56 @@ sd-wbs → sd-plan → sd-tdd → sd-check → sd-review를 순차 진행하는
|
|
|
33
53
|
|
|
34
54
|
`/sd-plan` 스킬을 즉시 수행한다. 완료 후 사용자 확인 없이 즉시 Step 4로 진행한다.
|
|
35
55
|
|
|
36
|
-
## Step 4: sd-tdd
|
|
56
|
+
## Step 4: sd-tdd (subagent)
|
|
57
|
+
|
|
58
|
+
Agent 도구로 subagent를 생성하여 sd-tdd를 수행한다. (subagent 실행 프로토콜 참조)
|
|
59
|
+
|
|
60
|
+
### prompt 구성
|
|
61
|
+
|
|
62
|
+
preamble + 아래 작업 지시:
|
|
37
63
|
|
|
38
|
-
|
|
64
|
+
## 작업
|
|
65
|
+
`.claude/skills/sd-tdd/SKILL.md`를 Read하고 지침에 따라 TDD 개발을 수행하세요.
|
|
66
|
+
- Feature 문서: {feature_doc_path}
|
|
67
|
+
- WBS 문서: {wbs_path}
|
|
39
68
|
|
|
40
|
-
|
|
69
|
+
NEED_INPUT 처리 루프에 따라 사용자 입력을 중계한다.
|
|
70
|
+
|
|
71
|
+
## Step 5: sd-check (subagent)
|
|
41
72
|
|
|
42
73
|
수정된 소스코드(`src/`, `tests/`)가 하나도 없으면(예: 문서만 수정) 이 단계를 스킵한다.
|
|
43
74
|
|
|
44
|
-
변경 패키지에 대한
|
|
75
|
+
Agent 도구로 subagent를 생성하여 변경 패키지에 대한 sd-check를 수행한다. (subagent 실행 프로토콜 참조)
|
|
76
|
+
|
|
77
|
+
### prompt 구성
|
|
78
|
+
|
|
79
|
+
preamble + 아래 작업 지시:
|
|
80
|
+
|
|
81
|
+
## 작업
|
|
82
|
+
`.claude/skills/sd-check/SKILL.md`를 Read하고 지침에 따라 체크를 수행하세요.
|
|
83
|
+
- 대상 패키지: {변경된 패키지 목록}
|
|
84
|
+
|
|
85
|
+
NEED_INPUT 처리 루프에 따라 사용자 입력을 중계한다.
|
|
86
|
+
|
|
87
|
+
## Step 6: sd-review (subagent)
|
|
88
|
+
|
|
89
|
+
Agent 도구로 subagent를 생성하여 코드 리뷰 + 수정을 수행한다. (subagent 실행 프로토콜 참조)
|
|
90
|
+
|
|
91
|
+
### prompt 구성
|
|
92
|
+
|
|
93
|
+
preamble + 아래 작업 지시:
|
|
94
|
+
|
|
95
|
+
## 작업
|
|
96
|
+
1. `.claude/skills/sd-inner-review/SKILL.md`를 Read하고 지침에 따라 코드 리뷰를 수행하세요.
|
|
97
|
+
- 요구사항 원천: {wbs_path}, {feature_doc_path}
|
|
98
|
+
2. 발견된 **모든** 이슈를 직접 수정하세요.
|
|
99
|
+
3. 수정 내역을 요약하여 보고하세요 (파일경로, 수정 내용).
|
|
45
100
|
|
|
46
|
-
|
|
101
|
+
NEED_INPUT 처리 루프에 따라 사용자 입력을 중계한다.
|
|
47
102
|
|
|
48
|
-
|
|
103
|
+
### 수정 후 재검증
|
|
49
104
|
|
|
50
|
-
|
|
51
|
-
- 수정사항이 있는 경우, `/sd-check` 스킬을 재 수행한다.
|
|
105
|
+
subagent가 코드 수정을 보고하면, Step 5(sd-check)를 subagent로 재수행한다.
|
|
52
106
|
|
|
53
107
|
## Step 7: 완료 보고
|
|
54
108
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# subagent 실행 환경
|
|
2
|
+
|
|
3
|
+
## 도구 제약
|
|
4
|
+
|
|
5
|
+
- **Skill 도구 사용 불가.** 스킬 호출(`/sd-xxx`)이 필요하면 해당 `.claude/skills/{스킬명}/SKILL.md`를 Read하여 직접 수행하세요.
|
|
6
|
+
- 예: `/sd-inner-clarify` → `.claude/skills/sd-inner-clarify/SKILL.md`를 Read하여 수행
|
|
7
|
+
- 예: `/sd-inner-debug` → `.claude/skills/sd-inner-debug/SKILL.md`를 Read하여 수행
|
|
8
|
+
- **AskUserQuestion 도구 사용 불가.** sd-options 규칙(`.claude/rules/sd-options.md`)의 AskUserQuestion 호출 의무는 아래 NEED_INPUT 프로토콜로 대체합니다.
|
|
9
|
+
- 그 외 프로젝트 규칙(`.claude/rules/`)은 모두 준수하세요.
|
|
10
|
+
|
|
11
|
+
## NEED_INPUT 프로토콜
|
|
12
|
+
|
|
13
|
+
사용자에게 질문/확인/선택지 제시가 필요할 때, 작업을 중단하고 아래 형식으로 응답을 종료합니다.
|
|
14
|
+
상위 에이전트(sd-dev)가 사용자와 상호작용한 뒤 SendMessage로 결정을 전달합니다.
|
|
15
|
+
|
|
16
|
+
---NEED_INPUT---
|
|
17
|
+
상황: {상황 설명 - 충분한 맥락 포함}
|
|
18
|
+
선택지:
|
|
19
|
+
- A) {label}: {description}
|
|
20
|
+
- B) {label}: {description}
|
|
21
|
+
추천: {추천 선택지와 사유}
|
|
22
|
+
---END_NEED_INPUT---
|
package/package.json
CHANGED
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
# 레시피 공통 규칙
|
|
2
|
-
|
|
3
|
-
CRUD 리스트·상세폼, 데이터 선택 버튼, 페이지·모달 컨테이너 레시피 전반에 적용되는 횡단 규칙 모음. 각 레시피 고유 규칙은 해당 recipe 문서 내부에 둔다.
|
|
4
|
-
|
|
5
|
-
## 적용 범위
|
|
6
|
-
|
|
7
|
-
아래 레시피와 그 확장에 모두 적용된다.
|
|
8
|
-
|
|
9
|
-
- [`crud-list.md`](./crud-list.md) 및 `crud-list/extension-*`
|
|
10
|
-
- [`crud-detail.md`](./crud-detail.md) 및 `crud-detail/extension-*`
|
|
11
|
-
- [`data-select-button.md`](./data-select-button.md)
|
|
12
|
-
- [`page-modal-container.md`](./page-modal-container.md)
|
|
13
|
-
|
|
14
|
-
## ✅ Always (반드시)
|
|
15
|
-
|
|
16
|
-
### Full-screen Dock 레이아웃과 Flex 정렬을 구분한다
|
|
17
|
-
|
|
18
|
-
페이지는 **뷰포트 전체를 full-screen으로 채운 뒤, dock으로 고정 영역을 배치하고, 나머지 fill 영역에 스크롤이 생기는** 구조다. 페이지 전체가 스크롤되는 것이 아니라, 필터·액션 바 등 dock 영역은 항상 화면에 고정되고 **fill 영역(시트·폼 등)만 독립적으로 스크롤**된다.
|
|
19
|
-
|
|
20
|
-
Dock과 Flex는 역할이 다르며 혼용하지 않는다.
|
|
21
|
-
|
|
22
|
-
| 수단 | 역할 | 스크롤 | 예시 |
|
|
23
|
-
|------|------|--------|------|
|
|
24
|
-
| `<sd-dock>` | **고정 구획** — 필터, 액션 바, 하단 버튼 등 항상 보여야 하는 영역 | 스크롤 없음 (absolute 고정) | `<sd-dock class="p-default pb-0">` (필터) |
|
|
25
|
-
| `fill` 영역 | **나머지 공간** — dock이 차지하지 않은 나머지를 채움 | **스크롤 발생** (`overflow: auto`) | `<div class="fill p-default">` (시트) |
|
|
26
|
-
| `flex-row` / `flex-column` | **컨트롤 정렬** — dock 내부에서 버튼·인풋 등 작은 요소 배치 | 부모를 따름 | `<sd-dock class="flex-row gap-sm">` (버튼 나열) |
|
|
27
|
-
|
|
28
|
-
#### Full-screen 높이 체인과 스크롤
|
|
29
|
-
|
|
30
|
-
전체 화면을 빈틈 없이 채우려면 `height: 100%` 체인이 끊기지 않아야 한다. 이 체인이 유지되어야 fill 영역이 정확한 높이를 가지고, 그 안에서만 스크롤이 동작한다.
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
viewport (100vh)
|
|
34
|
-
└─ <sd-topbar-container> ← height: 100%, flex-column
|
|
35
|
-
├─ <sd-topbar> ← 고정 (페이지 타이틀 + 메인 액션)
|
|
36
|
-
└─ <sd-dock-container> ← height: 100% (나머지 채움)
|
|
37
|
-
├─ <sd-dock> ← 고정 (필터)
|
|
38
|
-
├─ <sd-dock> ← 고정 (인라인 액션: 등록/삭제/엑셀)
|
|
39
|
-
├─ <div class="fill"> ← 나머지 = 스크롤 영역 (시트/폼)
|
|
40
|
-
└─ <sd-dock position="bottom"> ← 고정 (모달 하단 확인/취소)
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
#### Dock vs Flex 판단 기준
|
|
44
|
-
|
|
45
|
-
- **화면 구획 배치**(필터, 시트, 하단 액션 바 등 독립 영역 분할) → `<sd-dock-container>` + `<sd-dock>` + `fill`
|
|
46
|
-
- **컨트롤 정렬**(버튼 나란히, 라벨+인풋, 우측 정렬 등 구획 내부 배치) → `flex-row` / `flex-column` / `flex-fill` / `main-align-*`
|
|
47
|
-
|
|
48
|
-
```html
|
|
49
|
-
<!-- ✅ 구획은 dock으로 고정, fill 영역에서만 스크롤 -->
|
|
50
|
-
<sd-dock-container>
|
|
51
|
-
<sd-dock class="p-default pb-0">필터 영역</sd-dock>
|
|
52
|
-
<div class="fill p-default">시트 영역 (여기만 스크롤)</div>
|
|
53
|
-
</sd-dock-container>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**예외**: modal 뷰 본문처럼 dock이 불필요한(단순 상하 2분할) 경우에는 `<div class="flex-column fill">` + `<div class="flex-fill">`을 사용한다 — [`page-modal-container.md` modal 전용 변형](./page-modal-container.md#modal-전용-pagecontrol-분기-생략) 참조.
|
|
57
|
-
|
|
58
|
-
### topbar / dock 내 버튼 배치 순서를 지킨다
|
|
59
|
-
|
|
60
|
-
`<sd-topbar>`, `<sd-dock>` 등 메인 액션 영역에 여러 버튼을 배치할 때, **중요도순(왼쪽 → 오른쪽)**으로 나열한다.
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
저장(primary) > 삭제/복구(danger/warning) > 기타 액션
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
```html
|
|
67
|
-
<!-- ✅ 저장 > 삭제/복구 > 기타 순서 -->
|
|
68
|
-
<sd-topbar>
|
|
69
|
-
<h4>{{ viewTitle() }}</h4>
|
|
70
|
-
@if (canEdit()) {
|
|
71
|
-
<sd-button [theme]="'link-primary'" (click)="onSaveButtonClick()">저장</sd-button>
|
|
72
|
-
}
|
|
73
|
-
@if (!isNew() && canEdit()) {
|
|
74
|
-
<sd-button [theme]="'link-danger'" (click)="onDeleteButtonClick()">삭제</sd-button>
|
|
75
|
-
}
|
|
76
|
-
</sd-topbar>
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**근거**: 데이터 변경 액션(저장·삭제·복구)이 먼저, 나머지 기타 액션이 마지막이다. page topbar뿐 아니라 control 뷰의 상단 dock, modal 뷰의 하단 dock에도 동일 순서를 적용한다.
|
|
80
|
-
|
|
81
|
-
### 화면 레이아웃 구간과 버튼 스타일을 구분한다
|
|
82
|
-
|
|
83
|
-
CRUD 리스트·상세폼 화면은 아래 구간으로 나뉘며, 각 구간의 버튼 스타일이 다르다. **다른 구간의 스타일을 섞지 않는다.**
|
|
84
|
-
|
|
85
|
-
#### 레이아웃 구간 (crud-list 기준)
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
┌─ ① 메인 액션 영역 ──────────────────────────────────────┐
|
|
89
|
-
│ page: <sd-topbar> 내부 │
|
|
90
|
-
│ control: 상단 <sd-dock> (p-default bdb ...) │
|
|
91
|
-
│ modal: 하단 <sd-dock [position]="'bottom'"> │
|
|
92
|
-
├─ ② 조회 필터 ───────────────────────────────────────────┤
|
|
93
|
-
│ <sd-dock class="p-default pb-0"> │
|
|
94
|
-
│ <sd-form> 조회 버튼, 검색어 등 │
|
|
95
|
-
├─ ③ 인라인 액션 dock ────────────────────────────────────┤
|
|
96
|
-
│ <sd-dock class="flex-row gap-sm p-xs-default"> │
|
|
97
|
-
│ 등록, 선택삭제/복구, 엑셀 업/다운 등 │
|
|
98
|
-
├─ ④ 시트 ────────────────────────────────────────────────┤
|
|
99
|
-
│ <div class="fill p-default pt-0"> <sd-sheet ...> │
|
|
100
|
-
└──────────────────────────────────────────────────────────┘
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
③ 인라인 액션 dock이 있을 때 ④ 시트 영역에 `pt-0`을 붙여 상단 패딩 중복을 제거한다. ③이 없는 조회 전용 리스트에서는 `pt-0` 없이 `fill p-default`를 사용한다.
|
|
104
|
-
|
|
105
|
-
crud-detail 기준에서는 ②③④ 대신 폼 본문(`<sd-form>` + `form-table`)이 들어간다. ① 메인 액션 영역의 구간 규칙은 동일하다 (단, crud-list의 control 뷰에서는 ① 상단 dock 불필요).
|
|
106
|
-
|
|
107
|
-
#### 구간별 버튼 스타일
|
|
108
|
-
|
|
109
|
-
| 구간 | dock 클래스 | 버튼 테마 | 크기 | 예시 |
|
|
110
|
-
|------|------------|----------|------|------|
|
|
111
|
-
| ① topbar (page) | — | link-style (`'link-primary'`, `'link-danger'`, `'link-warning'`) | 기본값 | 저장, 삭제, 복구 |
|
|
112
|
-
| ① 상단 dock (control) — 주요 액션 | `p-default flex-row gap-default bdb bdb-theme-gray-lightest` | solid (`'primary'`, `'danger'`, `'warning'`, `'success'`) | 기본값 | 저장, 삭제, 상태 변경 |
|
|
113
|
-
| ① 상단 dock (control) — 보조 액션 | 위와 같은 dock 내부 | link-style (`'link-warning'`, `'link-success'`, `'link-info'`) | 기본값 | 출력, 다운로드 |
|
|
114
|
-
| ① 하단 dock (modal) | `p-sm-default flex-row gap-sm bdt bdt-theme-gray-lightest` | solid (`'primary'`, `'danger'`, `'warning'`, `'gray'`) | `'sm'` | 확인, 취소, 삭제, 복구 |
|
|
115
|
-
| ③ 인라인 액션 dock | `flex-row gap-sm p-xs-default` | link-style (`'link-primary'`, `'link-success'`, `'link-danger'`) | `'sm'` | 등록, 선택삭제, 엑셀 |
|
|
116
|
-
|
|
117
|
-
```html
|
|
118
|
-
<!-- ✅ topbar = link-style 기본 크기 / 인라인 dock = link-style sm -->
|
|
119
|
-
<sd-topbar>
|
|
120
|
-
<sd-button [theme]="'link-primary'"> 저장 </sd-button>
|
|
121
|
-
<sd-button [theme]="'link-danger'"> 삭제 </sd-button>
|
|
122
|
-
</sd-topbar>
|
|
123
|
-
<sd-dock class="flex-row gap-sm p-xs-default">
|
|
124
|
-
<sd-button [size]="'sm'" [theme]="'link-primary'" (click)="onAddItemButtonClick()"> 등록 </sd-button>
|
|
125
|
-
</sd-dock>
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**근거**: topbar는 페이지 전체 액션, 인라인 dock은 시트 직전의 데이터 조작 액션이다. 시각적 위계가 다르므로 크기와 테마로 구분한다. ① 상단/하단 dock은 topbar가 없는 뷰에서 메인 액션을 배치하며, solid 테마와 border(`bdb`/`bdt`)로 영역을 구분한다. 상단 dock 내에서도 주요 액션(저장·삭제·상태 변경)은 solid 테마로, 보조 액션(출력·다운로드)은 link-style 테마로 시각적 위계를 나눈다. ③ 인라인 액션 dock은 가볍게 배치하므로 border 없이 `p-xs-default`로 최소 패딩만 둔다.
|
|
129
|
-
|
|
130
|
-
### `injectViewTypeSignal()`은 생성자 또는 필드 이니셜라이저에서만 호출한다
|
|
131
|
-
|
|
132
|
-
```typescript
|
|
133
|
-
// ✅ 생성자·필드 이니셜라이저에서 한 번만 호출, 이후엔 signal을 읽는다
|
|
134
|
-
private _viewType = injectViewTypeSignal();
|
|
135
|
-
canEdit = computed(() => this._viewType() === "page");
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**근거**: Angular `inject()`는 injection context에서만 호출 가능하다. 생성자 시점에 signal로 캡처해 두면, 이후 computed 안에서 **읽기**는 문제없다 (`packages/angular/src/core/routing/injectViewTypeSignal.ts:7`).
|
|
139
|
-
|
|
140
|
-
### page 컴포넌트가 `<sd-topbar-container>`와 `<sd-topbar>`를 소유한다
|
|
141
|
-
|
|
142
|
-
마스터-디테일 구조(시트 + 상세를 나란히 배치하는 페이지)에서 페이지 타이틀·주요 액션을 담는 `<sd-topbar-container>` + `<sd-topbar>`는 **page 컴포넌트에만** 둔다. 임베딩되는 sheet·detail control 컴포넌트에서는 `<sd-dock-container>`만 사용한다.
|
|
143
|
-
|
|
144
|
-
```html
|
|
145
|
-
<!-- ✅ page가 topbar를 소유, control은 sd-dock-container만 -->
|
|
146
|
-
<!-- Page -->
|
|
147
|
-
<sd-topbar-container>
|
|
148
|
-
<sd-topbar><h4>{{ viewTitle() }}</h4> ...</sd-topbar>
|
|
149
|
-
<div class="flex-row fill">
|
|
150
|
-
<app-sheet /> <!-- 내부: <sd-dock-container> -->
|
|
151
|
-
<app-detail /> <!-- 내부: <sd-dock-container> -->
|
|
152
|
-
</div>
|
|
153
|
-
</sd-topbar-container>
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
**근거**: control 뷰는 page의 일부로 포함되므로 topbar 중첩이 발생하면 레이아웃이 깨진다. control 내부 도구바(필터·등록·저장 등)는 `<sd-dock-container>` + `<sd-dock>`으로 구성한다.
|
|
157
|
-
|
|
158
|
-
### 마스터-디테일 좌측 시트에 `[autoSelect]="'focus'"`를 적용한다
|
|
159
|
-
|
|
160
|
-
마스터-디테일 구조(좌측 리스트 + 우측 상세)에서, 좌측 시트에 `[autoSelect]="'focus'"`를 추가한다. 사용자가 행에 포커스를 이동하면(키보드 탐색 포함) 즉시 선택되어 우측 디테일 패널이 반응한다.
|
|
161
|
-
|
|
162
|
-
```html
|
|
163
|
-
<sd-sheet
|
|
164
|
-
[selectMode]="'single'"
|
|
165
|
-
[autoSelect]="'focus'"
|
|
166
|
-
[(selectedItems)]="selectedItems"
|
|
167
|
-
...
|
|
168
|
-
>
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**근거**: 마스터-디테일에서 클릭 없이 키보드 방향키로 행을 탐색할 때 우측 디테일이 따라오지 않으면 UX가 어색하다. `'focus'`는 포커스 이동 시 자동 선택을, `'click'`은 클릭 시 자동 선택을 트리거한다(선택 모달의 single 모드에서 사용 — [확장 D](./crud-list/extension-d-select-modal.md) 참조).
|
|
172
|
-
|
|
173
|
-
### 시트 셀 내부 컨트롤에 `[inset]="true" [size]="'sm'"`을 명시한다
|
|
174
|
-
|
|
175
|
-
상세: [셀 내용 작성 지침](../ui-data/sd-sheet.md#sdsheetcolumncelltemplate)
|
|
176
|
-
|
|
177
|
-
`<sd-sheet-column>`의 `[cell]` 템플릿 안에 들어가는 `sd-textfield` / `sd-select` / `sd-checkbox` / `sd-numpad` / `sd-date-range-picker` / `sd-textarea`는 **항상** `[inset]="true" [size]="'sm'"`을 함께 명시한다.
|
|
178
|
-
|
|
179
|
-
```html
|
|
180
|
-
<!-- ✅ -->
|
|
181
|
-
<ng-template [cell]="column" let-item="item">
|
|
182
|
-
<sd-textfield [(value)]="item.name" [inset]="true" [size]="'sm'" />
|
|
183
|
-
</ng-template>
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
**근거**: 누락해도 컴파일 에러가 발생하지 않으므로 LLM이 빠뜨리기 쉽다. 예외는 "예외 케이스" 섹션 참조.
|
|
187
|
-
|
|
188
|
-
### input 변경을 effect 내부에서 filter·lastFilter·page에 반영한다
|
|
189
|
-
|
|
190
|
-
input signal 값이 바뀌었을 때 조회 결과에 반영하려면, **effect에서 감지 → `untracked`로 상태 갱신 → 재조회 트리거** 순서로 구성한다.
|
|
191
|
-
|
|
192
|
-
```typescript
|
|
193
|
-
constructor() {
|
|
194
|
-
effect(() => {
|
|
195
|
-
if (!this.perms().includes("use")) { /* ... */ }
|
|
196
|
-
|
|
197
|
-
// input 변경 감지 → lastFilter 재반영
|
|
198
|
-
const ids = this.includeIds() ?? [];
|
|
199
|
-
const lf = this.lastFilter();
|
|
200
|
-
if (!obj.equal(ids, lf.includeIds)) {
|
|
201
|
-
untracked(() => {
|
|
202
|
-
this.filter.update((f) => ({ ...f, includeIds: ids }));
|
|
203
|
-
this.lastFilter.set({ ...this.filter() });
|
|
204
|
-
this.page.set(0);
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// 재조회 트리거 의존성
|
|
209
|
-
this.lastFilter();
|
|
210
|
-
this.page();
|
|
211
|
-
this.sortingDefs();
|
|
212
|
-
|
|
213
|
-
void untracked(async () => { /* refresh */ });
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
**근거**: filter·lastFilter·page를 갱신하면 effect 의존성이 즉시 재트리거될 수 있으므로, 중간 상태 갱신은 `untracked`로 감싸야 무한 루프를 피한다. 짝 규칙: "signal 필드 초기값에서 다른 signal 읽기" 금지([🚫 Never](#signal-필드-초기값에서-다른-signal을-읽지-않는다) 참조).
|
|
219
|
-
|
|
220
|
-
## ⚠️ Ask first (조건부)
|
|
221
|
-
|
|
222
|
-
### 공유 데이터 사용 화면은 `_refresh()` 선두에서 `_sdSharedData.wait()`를 호출한다
|
|
223
|
-
|
|
224
|
-
화면에서 `useSharedSignal` / `getHandle` 등 `SdSharedDataProvider`를 사용한다면, `_refresh()`의 **첫 줄**에 `await this._sdSharedData.wait();`를 둔다. 공유 데이터가 사용되지 않는 화면이라면 호출하지 않는다.
|
|
225
|
-
|
|
226
|
-
```typescript
|
|
227
|
-
// ✅ 공유 데이터 사용 화면
|
|
228
|
-
async _refresh(): Promise<void> {
|
|
229
|
-
await this._sdSharedData.wait();
|
|
230
|
-
/* ... */
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
**근거**: 공유 데이터 로딩이 완료되기 전에 렌더하면 셀렉트 드롭다운 등이 빈 상태로 노출된다 (`packages/angular/src/core/shared-data/sd-shared-data.provider.ts:120`).
|
|
235
|
-
|
|
236
|
-
**판단 기준**: 현재 화면이 `useSharedSignal`(각 앱이 `SdSharedDataProvider` 위에 정의하는 공용 훅 — `@simplysm/angular` 미제공) / `getHandle` / `emitAsync` 중 하나라도 사용하면 호출한다. 하나도 사용하지 않으면 호출하지 않는다.
|
|
237
|
-
|
|
238
|
-
### `SdCommandDirective` 부착 위치를 한 곳에 둔다
|
|
239
|
-
|
|
240
|
-
`SdCommandDirective`(`[sdSaveCommand]` / `[sdInsertCommand]`)는 **document 레벨** keydown 리스너를 등록한다(`packages/angular/src/core/commands/sd-command.ts:40`). 같은 화면에서 여러 컴포넌트에 부착하면 모두 발동된다.
|
|
241
|
-
|
|
242
|
-
**판단 기준**:
|
|
243
|
-
|
|
244
|
-
- `onSubmit()`을 **직접 소유하는** 컴포넌트에만 부착한다.
|
|
245
|
-
- 자식 컴포넌트를 조합만 하는 page 래퍼, 권한 체크·레이아웃만 담당하는 컨테이너에는 부착하지 않는다.
|
|
246
|
-
- 마스터-디테일에서는 의도된 쪽 한 곳에만 부착한다 (보통 sheet 쪽).
|
|
247
|
-
|
|
248
|
-
**근거**: 최상위 모달 판정(`shouldProcessCommandEvent`)은 모달 내부만 구분하고, 형제 컴포넌트 간 구분은 하지 않는다.
|
|
249
|
-
|
|
250
|
-
### 삭제 방식은 DB 스키마에 따라 결정한다
|
|
251
|
-
|
|
252
|
-
DB 테이블 스키마에 따라 soft-delete와 물리 삭제 중 하나를 선택한다.
|
|
253
|
-
|
|
254
|
-
- **`isDeleted` 컬럼이 있는 테이블**: `isDeleted: true` 업데이트로 **soft-delete**. 삭제·복구 토글을 제공한다. `crud-list` 확장 B/C, `crud-detail` 확장 B가 이 경로에 해당한다.
|
|
255
|
-
- **`isDeleted` 컬럼이 없는 테이블**: row DELETE로 **물리 삭제**. 복구 기능 없이 바로 삭제한다. 위 확장들은 사용하지 않는다.
|
|
256
|
-
|
|
257
|
-
**근거**: 동일 화면에서 두 방식을 혼용하면 삭제 의미가 불명확해진다. 컬럼 유무 하나로 결정되므로 선택 기준이 명확하다.
|
|
258
|
-
|
|
259
|
-
## 🚫 Never (금지)
|
|
260
|
-
|
|
261
|
-
### input 의존 데이터 로딩에 `void this._initAsync()`를 사용하지 않는다
|
|
262
|
-
|
|
263
|
-
`input()` / `input.required()` signal 값에 따라 데이터를 로드하는 컴포넌트에서, 생성자에서 `void this._initAsync()`를 호출하고 별도 메서드에서 비동기 로직을 수행하는 패턴은 사용하지 않는다.
|
|
264
|
-
|
|
265
|
-
```typescript
|
|
266
|
-
// ✅ input 변경 시 자동 재실행
|
|
267
|
-
constructor() {
|
|
268
|
-
effect(() => {
|
|
269
|
-
this.someInput(); // 의존성 등록 (untracked 바깥)
|
|
270
|
-
void untracked(async () => { /* ... */ });
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
**근거**: 생성자 호출은 최초 1회뿐이므로 input signal 변경에 반응하지 못한다.
|
|
276
|
-
|
|
277
|
-
**대안**: `effect`로 input 의존성을 등록하고, 비동기 작업은 `void untracked(async () => { /* ... */ })`로 감싼다. 최소 뼈대의 초기 effect, [확장 E(조회 전용 modal)](./crud-list/extension-e-readonly-modal.md)의 부모 식별자 input 등 모든 input 의존 로딩에 동일하게 적용된다.
|
|
278
|
-
|
|
279
|
-
### signal 필드 초기값에서 다른 signal을 읽지 않는다
|
|
280
|
-
|
|
281
|
-
`signal()` 필드 이니셜라이저에서 `this.someInput()` 같은 다른 signal을 읽지 않는다. 필드 이니셜라이저는 클래스 생성 시점에 실행되며, input signal은 부모로부터 값을 전달받기 전이므로 항상 기본값만 반환한다.
|
|
282
|
-
|
|
283
|
-
```typescript
|
|
284
|
-
// ✅ 기본값만 사용, input 반영은 effect에서 수행
|
|
285
|
-
filter = signal<IFilter>({
|
|
286
|
-
includeIds: [],
|
|
287
|
-
isIncludeDeleted: false,
|
|
288
|
-
});
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
**근거**: 초기값에서 빼는 것만으로는 부족하다. input 값을 반영하는 로직이 effect 안에 있어야 input 변경 시 filter·lastFilter·page가 갱신된다.
|
|
292
|
-
|
|
293
|
-
**대안**: [✅ Always의 "input 변경을 effect 내부에서 filter·lastFilter·page에 반영한다"](#input-변경을-effect-내부에서-filterlastfilterpage에-반영한다) 참조.
|
|
294
|
-
|
|
295
|
-
### `mark(sig)`를 "저장 감지" 수단으로 사용하지 않는다
|
|
296
|
-
|
|
297
|
-
상세: [`mark` — 역할·주의사항](../utils/mark.md)
|
|
298
|
-
|
|
299
|
-
`mark(sig)`는 `WritableSignal`의 값을 shallow copy(배열: `[...v]`, 객체: `{...v}`)하여 참조를 갱신한다(`packages/angular/src/core/mark.ts:7`). 역할은 두 가지다.
|
|
300
|
-
|
|
301
|
-
- **OnPush 템플릿 재렌더링** 유발
|
|
302
|
-
- **다른 computed / effect의 의존성 갱신**
|
|
303
|
-
|
|
304
|
-
```typescript
|
|
305
|
-
// ✅ snapshot과 현재값을 obj.equal로 비교하여 변경 판단
|
|
306
|
-
onSubmit() {
|
|
307
|
-
if (!obj.equal(this._snapshot(), this.item())) {
|
|
308
|
-
void this._saveAsync();
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// mark의 용도는 별개 — OnPush 재렌더링과 의존 computed/effect 통지
|
|
313
|
-
applyBulkEdit() {
|
|
314
|
-
for (const row of this.items()) row.selected = true;
|
|
315
|
-
mark(this.items); // 배열 참조 갱신 → 템플릿 재렌더링
|
|
316
|
-
}
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
**근거**: 값 차이 감지는 `obj.equal`(`packages/core-common/src/utils/obj.ts:172`)의 deep equal이 담당하므로, 필드 mutation은 `mark` 없이도 snapshot 비교(`_checkIgnoreChanges` / `onSubmit` / `diffs()`)에서 감지된다. Chrome 61 호환(`Proxy` 폴리필 불가)으로 signal 자동 notify가 불가해 명시적 호출이 필요할 뿐, "감지"와 "통지"는 별개다.
|
|
320
|
-
|
|
321
|
-
**대안**: UI 재렌더링과 effect 의존성 갱신이 목적일 때만 `mark`를 사용한다. 저장 여부 판정은 snapshot 비교 로직이 담당한다.
|
|
322
|
-
|
|
323
|
-
## 예외 케이스
|
|
324
|
-
|
|
325
|
-
### 시트 셀 `[inset]="true" [size]="'sm'"` 예외
|
|
326
|
-
|
|
327
|
-
- **복합 구조(텍스트+컨트롤)**: `[inset]="false"`로 셀 외곽을 유지한다.
|
|
328
|
-
- **큰 시트 행**: `[size]` 속성을 생략한다.
|
|
329
|
-
|
|
330
|
-
### 공유 데이터 미사용 화면
|
|
331
|
-
|
|
332
|
-
`useSharedSignal` / `getHandle` / `emitAsync`를 전혀 사용하지 않는 화면이라면 `_refresh()` 선두의 `await this._sdSharedData.wait();` 호출은 불필요하다.
|
|
333
|
-
|
|
334
|
-
### `isDeleted` 컬럼이 없는 테이블
|
|
335
|
-
|
|
336
|
-
soft-delete 관련 확장(`crud-list` 확장 B/C, `crud-detail` 확장 B)을 사용하지 않는다. 삭제 UI는 물리 삭제 단일 경로로만 제공한다.
|