From 2a248ff742b65f01ce8c28af8f62d18e5435be6b Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 8 Aug 2026 10:10:10 +0900 Subject: [PATCH] =?UTF-8?q?refactor(B07,B08):=20=EB=8F=84=EB=A9=B4=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20B08=5FDesignDetail=20=EC=9D=B4=EB=8F=99=20?= =?UTF-8?q?+=20=EC=88=98=EB=9F=89=20=EC=8A=AC=EB=A1=AF=20B07=5FQuantity=20?= =?UTF-8?q?=ED=99=95=EB=B3=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - B07_wf4_DesignDetail(8파일+openwebcad) -> B08_DesignDetail로 git mv (이력 보존) - B08_wf5_Quantity -> B07_Quantity (구 수량 백업 zip 보관 폴더) - 파생 문자열 일괄 전환: /b07-cad -> /b08-cad 정적 서빙, CAD 레이어 b07-* -> b08-*, postMessage aislo:b07:* -> aislo:b08:*, 패키지명 aislo-b08-cad, CSS .b08-*, 라우트 키/슬러그(B08_DESIGN_DETAIL/b08-design-detail, B07_QUANTITY/b07-quantity) - 상세설계 워크플로우 stage 4 -> 5 (확정/무효화 전이 3곳), 확정 완료 시 B09로 이동 - WORKFLOW_STEP_ROUTES 순서 재배열: index4=수량(B07), index5=상세설계(B08) - [임시] B08 이동 테스트 버튼 제거, openwebcad dist 재빌드 - 주석 의미 정렬: 수량 인계 주석 B08->B07, 도면 참조 B07->B08 Co-Authored-By: Claude Fable 5 --- A00_Common/b_workflow_nav.ts | 4 +- A00_Common/main.ts | 4 +- A00_Common/router.ts | 10 +- .../B05_Profile_Engine_Grade_Alignment.py | 4 +- .../B05_Profile_Engine_Grade_Profile.py | 2 +- B06_Section/B06_Section_Engine_Design.py | 2 +- B06_Section/B06_Section_Repository.py | 4 +- B06_Section/B06_Section_Router.py | 2 +- .../0_old_260726_codex.zip | Bin .../B08_DesignDetail_Api_Fetch.ts | 2 +- .../B08_DesignDetail_Engine_Cad.py | 20 +-- .../B08_DesignDetail_Engine_Cad_Long.py | 8 +- .../B08_DesignDetail_Engine_Template.py | 6 +- .../B08_DesignDetail_Router.py | 34 ++--- .../B08_DesignDetail_Schema.py | 6 +- .../B08_DesignDetail_UI_Page.ts | 136 ++++++++---------- .../B08_DesignDetail_UI_Style.css | 74 +++++----- .../openwebcad/.eslintrc.cjs | 0 .../openwebcad/.github/workflows/deploy.yml | 0 .../openwebcad/.gitignore | 0 .../openwebcad/Biomefile | 0 .../openwebcad/LICENSE.md | 0 .../openwebcad/README.md | 6 +- .../openwebcad/biome.json | 0 .../openwebcad/index.html | 0 .../openwebcad/package-lock.json | 4 +- .../openwebcad/package.json | 2 +- .../patches/@flatten-js+core+1.6.2.patch | 0 .../openwebcad/postcss.config.cjs | 0 .../public/THIRD_PARTY_LICENSES.txt | 2 +- .../openwebcad/public/favicon.png | Bin .../openwebcad/public/favicon.svg | 0 .../openwebcad/readme/demo.gif | Bin .../openwebcad/src/App.consts.ts | 0 .../openwebcad/src/App.css | 0 .../openwebcad/src/App.tsx | 0 .../openwebcad/src/App.types.ts | 2 +- .../openwebcad/src/components/Button.tsx | 0 .../src/components/DropdownButton.tsx | 0 .../openwebcad/src/components/Icon/Icon.tsx | 0 .../Icon/custom-icons/measurement.svg | 0 .../components/Icon/custom-icons/scale.svg | 0 .../components/Icon/teenyicons-outline.jpg | Bin .../src/components/Icon/teenyicons-solid.jpg | Bin .../src/components/LayerManager.tsx | 0 .../src/components/QuantityPanel.tsx | 2 +- .../openwebcad/src/components/Toolbar.tsx | 2 +- .../src/drawControllers/DrawController.ts | 0 .../screenCanvas.drawController.ts | 0 .../src/drawControllers/svg.drawController.ts | 0 .../openwebcad/src/entities/ArcEntity.test.ts | 0 .../openwebcad/src/entities/ArcEntity.ts | 0 .../src/entities/ArrowHeadEntity.ts | 0 .../openwebcad/src/entities/CircleEntity.ts | 0 .../openwebcad/src/entities/Entity.ts | 0 .../openwebcad/src/entities/ImageEntity.ts | 0 .../src/entities/LineEntity.test.ts | 0 .../openwebcad/src/entities/LineEntity.ts | 0 .../src/entities/MeasurementEntity.test.ts | 0 .../src/entities/MeasurementEntity.ts | 0 .../openwebcad/src/entities/PointEntity.ts | 0 .../openwebcad/src/entities/PolyLineEntity.ts | 0 .../src/entities/RectangleEntity.ts | 0 .../openwebcad/src/entities/TextEntity.ts | 0 .../openwebcad/src/helpers/box-to-polygon.ts | 0 .../calculate-angle-guides-and-snap-points.ts | 2 +- .../src/helpers/contain-rect.test.ts | 0 .../openwebcad/src/helpers/contain-rect.ts | 0 .../convert-svg-path-to-line-segments.test.ts | 0 .../convert-svg-path-to-line-segments.ts | 0 .../src/helpers/distance-between-points.ts | 0 .../openwebcad/src/helpers/draw-functions.ts | 0 .../openwebcad/src/helpers/draw.ts | 0 .../src/helpers/find-closest-entity.mocks.ts | 0 .../src/helpers/find-closest-entity.test.ts | 0 .../src/helpers/find-closest-entity.ts | 0 .../helpers/find-neighboring-points-on-arc.ts | 0 .../find-neighboring-points-on-circle.ts | 0 .../find-neighboring-points-on-line.ts | 0 .../src/helpers/get-angle-guide-lines.ts | 0 .../src/helpers/get-angle-with-x-axis.test.ts | 0 .../src/helpers/get-angle-with-x-axis.ts | 0 .../get-bounding-box-of-multiple-entities.ts | 0 .../src/helpers/get-closest-snap-point.ts | 0 .../openwebcad/src/helpers/get-draw-guides.ts | 0 .../src/helpers/get-export-color.ts | 0 .../src/helpers/get-intersection-points.ts | 0 .../openwebcad/src/helpers/get-new-layer.ts | 0 .../src/helpers/get-point-from-event.ts | 0 .../openwebcad/src/helpers/helpers.types.ts | 0 .../export-entities-to-json.ts | 0 .../export-entities-to-local-storage.ts | 0 .../export-entities-to-png.ts | 0 .../export-entities-to-svg.ts | 0 .../import-entities-from-json.ts | 0 .../import-entities-from-local-storage.ts | 0 .../import-entities-from-svg.ts | 0 .../import-entities-from-svg.types.ts | 0 .../import-image-from-file.ts | 0 .../src/helpers/is-closed-polygon.test.ts | 0 .../src/helpers/is-closed-polygon.ts | 0 .../openwebcad/src/helpers/is-length-equal.ts | 0 .../openwebcad/src/helpers/is-point-equal.ts | 0 .../src/helpers/keyboard-handler.ts | 0 .../src/helpers/map-number-range.test.ts | 0 .../src/helpers/map-number-range.ts | 0 .../openwebcad/src/helpers/middle.ts | 0 .../src/helpers/mirror-angle-over-axis.ts | 0 .../helpers/mirror-point-over-axis.test.ts | 0 .../src/helpers/mirror-point-over-axis.ts | 0 .../openwebcad/src/helpers/normalise-angle.ts | 0 .../openwebcad/src/helpers/paper-sizes.ts | 0 .../src/helpers/polygon-to-segments.ts | 0 .../src/helpers/rgb-to-hex-color.ts | 0 .../openwebcad/src/helpers/rotate-point.ts | 0 .../openwebcad/src/helpers/scale-point.ts | 0 .../openwebcad/src/helpers/scene-cache.ts | 0 .../openwebcad/src/helpers/scene-version.ts | 0 .../src/helpers/sort-points-on-arc.ts | 0 .../src/helpers/sort-points-on-circle.ts | 0 .../openwebcad/src/helpers/spatial-index.ts | 0 .../openwebcad/src/helpers/times.ts | 0 .../src/helpers/track-hovered-snap-points.ts | 0 .../openwebcad/src/helpers/undo-stack.ts | 0 .../openwebcad/src/helpers/wrap-module.ts | 0 .../src/inputController/input-controller.ts | 0 .../src/integration/aislo-drawing-bridge.ts | 18 +-- .../openwebcad/src/main.tsx | 0 .../openwebcad/src/state.ts | 2 +- .../openwebcad/src/tools.ts | 0 .../openwebcad/src/tools/align-bottom-tool.ts | 0 .../src/tools/align-center-horizontal-tool.ts | 0 .../openwebcad/src/tools/align-left-tool.ts | 0 .../src/tools/align-middle-vertical-tool.ts | 0 .../openwebcad/src/tools/align-right-tool.ts | 0 .../src/tools/align-tool.helpers.ts | 0 .../openwebcad/src/tools/align-top-tool.ts | 0 .../openwebcad/src/tools/array-tool.ts | 0 .../openwebcad/src/tools/circle-tool.ts | 0 .../openwebcad/src/tools/copy-tool.ts | 0 .../src/tools/eraser-tool.helpers.ts | 0 .../openwebcad/src/tools/eraser-tool.test.ts | 0 .../openwebcad/src/tools/eraser-tool.ts | 0 .../src/tools/image-import-tool.helpers.ts | 0 .../openwebcad/src/tools/image-import-tool.ts | 0 .../openwebcad/src/tools/line-tool.ts | 0 .../openwebcad/src/tools/measurement-tool.ts | 0 .../openwebcad/src/tools/move-tool.helpers.ts | 0 .../openwebcad/src/tools/move-tool.ts | 0 .../openwebcad/src/tools/pedit-tool.ts | 0 .../openwebcad/src/tools/rectangle-tool.ts | 0 .../src/tools/rotate-tool.helpers.ts | 0 .../openwebcad/src/tools/rotate-tool.ts | 0 .../src/tools/scale-tool.helpers.ts | 0 .../openwebcad/src/tools/scale-tool.ts | 0 .../src/tools/select-tool.helpers.ts | 0 .../openwebcad/src/tools/select-tool.ts | 0 .../openwebcad/src/tools/tool.consts.ts | 0 .../openwebcad/src/tools/tool.types.ts | 0 .../openwebcad/src/vite-env.d.ts | 0 .../openwebcad/tailwind.config.js | 0 .../entities/circle/circle.recording.json | 0 .../test/entities/circle/circle.test.ts | 0 .../test/entities/line/line.test.ts | 0 .../test/entities/rectangle/rectangle.test.ts | 0 .../openwebcad/test/helpers/click.ts | 0 .../test/helpers/init-application.ts | 0 .../test/helpers/replay-recording.ts | 0 .../test/helpers/replay-recording.types.ts | 0 .../test/helpers/set-active-tool.ts | 0 .../openwebcad/test/helpers/tests.consts.ts | 0 .../screenCanvas.drawController.ts | 0 .../openwebcad/test/mocks/dxf/circle.dxf | 0 .../openwebcad/test/mocks/dxf/empty.dxf | 0 .../test/mocks/dxf/line-and-circle.dxf | 0 .../openwebcad/test/mocks/dxf/line.dxf | 0 .../openwebcad/test/mocks/dxf/unsupported.dxf | 0 .../openwebcad/test/mocks/floorplan.svg | 0 .../openwebcad/test/mocks/test-svg-import.svg | 0 .../test/tools/eraser/eraser.recording.json | 0 .../test/tools/eraser/eraser.test.ts | 0 .../openwebcad/tsconfig.app.json | 0 .../openwebcad/tsconfig.json | 0 .../openwebcad/tsconfig.node.json | 0 .../openwebcad/vite.config.ts | 0 .../openwebcad/vitest.config.ts | 0 common_util/common_util_mass_haul.ts | 10 +- common_util/common_util_mass_haul_settle.ts | 6 +- common_util/common_util_storage.py | 4 +- config/config_frontend.ts | 8 +- config/config_system.py | 6 +- db_management/001_create_schema.sql | 4 +- main.py | 16 +-- package.json | 6 +- ui_template/ui_template_locale_b2.ts | 46 +++--- ui_template/ui_template_overlay.css | 2 +- ui_template/ui_template_theme.css | 2 +- vite.config.ts | 4 +- 198 files changed, 232 insertions(+), 242 deletions(-) rename {B08_wf5_Quantity => B07_Quantity}/0_old_260726_codex.zip (100%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_Api_Fetch.ts => B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts (98%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad.py => B08_DesignDetail/B08_DesignDetail_Engine_Cad.py (98%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad_Long.py => B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py (98%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Template.py => B08_DesignDetail/B08_DesignDetail_Engine_Template.py (95%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_Router.py => B08_DesignDetail/B08_DesignDetail_Router.py (96%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_Schema.py => B08_DesignDetail/B08_DesignDetail_Schema.py (91%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Page.ts => B08_DesignDetail/B08_DesignDetail_UI_Page.ts (83%) rename B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Style.css => B08_DesignDetail/B08_DesignDetail_UI_Style.css (80%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/.eslintrc.cjs (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/.github/workflows/deploy.yml (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/.gitignore (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/Biomefile (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/LICENSE.md (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/README.md (97%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/biome.json (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/index.html (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/package-lock.json (99%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/package.json (98%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/patches/@flatten-js+core+1.6.2.patch (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/postcss.config.cjs (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/public/THIRD_PARTY_LICENSES.txt (96%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/public/favicon.png (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/public/favicon.svg (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/readme/demo.gif (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/App.consts.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/App.css (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/App.tsx (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/App.types.ts (96%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/Button.tsx (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/DropdownButton.tsx (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/Icon/Icon.tsx (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/Icon/custom-icons/measurement.svg (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/Icon/custom-icons/scale.svg (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/Icon/teenyicons-outline.jpg (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/Icon/teenyicons-solid.jpg (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/LayerManager.tsx (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/QuantityPanel.tsx (97%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/components/Toolbar.tsx (99%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/drawControllers/DrawController.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/drawControllers/screenCanvas.drawController.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/drawControllers/svg.drawController.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/ArcEntity.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/ArcEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/ArrowHeadEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/CircleEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/Entity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/ImageEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/LineEntity.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/LineEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/MeasurementEntity.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/MeasurementEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/PointEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/PolyLineEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/RectangleEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/entities/TextEntity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/box-to-polygon.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts (96%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/contain-rect.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/contain-rect.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/distance-between-points.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/draw-functions.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/draw.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/find-closest-entity.mocks.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/find-closest-entity.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/find-closest-entity.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/find-neighboring-points-on-arc.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/find-neighboring-points-on-circle.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/find-neighboring-points-on-line.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-angle-guide-lines.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-angle-with-x-axis.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-angle-with-x-axis.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-closest-snap-point.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-draw-guides.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-export-color.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-intersection-points.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-new-layer.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/get-point-from-event.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/helpers.types.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/is-closed-polygon.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/is-closed-polygon.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/is-length-equal.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/is-point-equal.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/keyboard-handler.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/map-number-range.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/map-number-range.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/middle.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/mirror-angle-over-axis.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/mirror-point-over-axis.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/mirror-point-over-axis.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/normalise-angle.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/paper-sizes.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/polygon-to-segments.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/rgb-to-hex-color.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/rotate-point.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/scale-point.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/scene-cache.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/scene-version.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/sort-points-on-arc.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/sort-points-on-circle.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/spatial-index.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/times.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/track-hovered-snap-points.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/undo-stack.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/helpers/wrap-module.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/inputController/input-controller.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/integration/aislo-drawing-bridge.ts (90%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/main.tsx (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/state.ts (99%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/align-bottom-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/align-center-horizontal-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/align-left-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/align-middle-vertical-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/align-right-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/align-tool.helpers.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/align-top-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/array-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/circle-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/copy-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/eraser-tool.helpers.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/eraser-tool.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/eraser-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/image-import-tool.helpers.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/image-import-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/line-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/measurement-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/move-tool.helpers.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/move-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/pedit-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/rectangle-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/rotate-tool.helpers.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/rotate-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/scale-tool.helpers.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/scale-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/select-tool.helpers.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/select-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/tool.consts.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/tools/tool.types.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/src/vite-env.d.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/tailwind.config.js (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/entities/circle/circle.recording.json (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/entities/circle/circle.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/entities/line/line.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/entities/rectangle/rectangle.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/helpers/click.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/helpers/init-application.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/helpers/replay-recording.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/helpers/replay-recording.types.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/helpers/set-active-tool.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/helpers/tests.consts.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/dxf/circle.dxf (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/dxf/empty.dxf (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/dxf/line-and-circle.dxf (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/dxf/line.dxf (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/dxf/unsupported.dxf (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/floorplan.svg (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/mocks/test-svg-import.svg (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/tools/eraser/eraser.recording.json (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/test/tools/eraser/eraser.test.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/tsconfig.app.json (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/tsconfig.json (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/tsconfig.node.json (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/vite.config.ts (100%) rename {B07_wf4_DesignDetail => B08_DesignDetail}/openwebcad/vitest.config.ts (100%) diff --git a/A00_Common/b_workflow_nav.ts b/A00_Common/b_workflow_nav.ts index e7c3d4d9..d6da15b6 100644 --- a/A00_Common/b_workflow_nav.ts +++ b/A00_Common/b_workflow_nav.ts @@ -20,8 +20,8 @@ export const WORKFLOW_STEP_ROUTES: readonly RoutePath[] = [ ROUTES.B04_PREPROCESS, ROUTES.B05_PROFILE, ROUTES.B06_SECTION, - ROUTES.B07_WF4_DESIGN_DETAIL, - ROUTES.B08_WF5_QUANTITY, + ROUTES.B07_QUANTITY, + ROUTES.B08_DESIGN_DETAIL, ROUTES.B09_WF6_ESTIMATION, ]; diff --git a/A00_Common/main.ts b/A00_Common/main.ts index e1124e1f..f206b9fa 100644 --- a/A00_Common/main.ts +++ b/A00_Common/main.ts @@ -21,8 +21,8 @@ const FOOTERLESS_ROUTES: readonly RoutePath[] = [ ROUTES.B04_PREPROCESS, ROUTES.B05_PROFILE, ROUTES.B06_SECTION, - ROUTES.B07_WF4_DESIGN_DETAIL, - ROUTES.B08_WF5_QUANTITY, + ROUTES.B07_QUANTITY, + ROUTES.B08_DESIGN_DETAIL, ROUTES.B09_WF6_ESTIMATION, ROUTES.B10_PAYMENT, ROUTES.B11_STATUS, diff --git a/A00_Common/router.ts b/A00_Common/router.ts index a4b354e4..f86f70e3 100644 --- a/A00_Common/router.ts +++ b/A00_Common/router.ts @@ -45,10 +45,10 @@ const routeTable: Partial Promise>> = { (await import("../B05_Profile/B05_Profile_UI_Page")).renderB05Route, [ROUTES.B06_SECTION]: async () => (await import("../B06_Section/B06_Section_UI_Page")).renderB06ProfileCross, - [ROUTES.B07_WF4_DESIGN_DETAIL]: async () => - (await import("../B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Page")).renderB07DesignDetail, - // B08_WF5_QUANTITY: 재작성 예정으로 기존 구현을 0_old_260726_codex.zip에 백업 후 제거. + // B07_QUANTITY: 재작성 예정으로 기존 구현을 0_old_260726_codex.zip에 백업 후 제거. // 등록을 빼두면 renderPlaceholder가 "준비 중" 화면을 띄운다. 새 페이지 완성 시 여기에 다시 추가. + [ROUTES.B08_DESIGN_DETAIL]: async () => + (await import("../B08_DesignDetail/B08_DesignDetail_UI_Page")).renderB08DesignDetail, [ROUTES.B09_WF6_ESTIMATION]: async () => (await import("../B09_wf6_Estimation/B09_wf6_Estimation_UI_Page")).renderB09Estimation, [ROUTES.B10_PAYMENT]: async () => @@ -109,8 +109,8 @@ export async function renderCurrentRoute(outlet: HTMLElement): Promise { ROUTES.B04_PREPROCESS, ROUTES.B05_PROFILE, ROUTES.B06_SECTION, - ROUTES.B07_WF4_DESIGN_DETAIL, - ROUTES.B08_WF5_QUANTITY, + ROUTES.B08_DESIGN_DETAIL, + ROUTES.B07_QUANTITY, ROUTES.B09_WF6_ESTIMATION, ROUTES.B10_PAYMENT, ROUTES.B11_STATUS, diff --git a/B05_Profile/B05_Profile_Engine_Grade_Alignment.py b/B05_Profile/B05_Profile_Engine_Grade_Alignment.py index 349b76ec..97118f0a 100644 --- a/B05_Profile/B05_Profile_Engine_Grade_Alignment.py +++ b/B05_Profile/B05_Profile_Engine_Grade_Alignment.py @@ -2,7 +2,7 @@ 계획선을 "폴리라인 샘플"이 아니라 **변화점(PVI) 구조**로 1차 표현하고, 도면 테이블(구배·절토고·성토고·계획고·지반고·누가거리·거리·측점·곡선)에 필요한 값을 -전부 여기서 파생시킨다. 폴리라인 샘플은 이 구조에서 만들어지므로 B06/B07은 +전부 여기서 파생시킨다. 폴리라인 샘플은 이 구조에서 만들어지므로 B06/B08은 기존 `design_profiles[].samples` 계약을 그대로 쓴다. 기하 규칙 (사용자 확정 사항): @@ -366,7 +366,7 @@ def build_alignment( segments = _segments(pvi_s, pvi_z) # 샘플 격자에 변화점(PVI)과 종단곡선 시·종점(BVC/EVC)을 합쳐서 평가한다. 격자만 쓰면 # 격자 사이에 놓인 변화점(배관 구조물 자리처럼 임의 chainage에 승격된 점)의 모서리를 - # 정본 계획선이 잘라먹어, 종단곡선 R이 보이지 않고 B06 계획고·B07 CAD 계획선이 그 + # 정본 계획선이 잘라먹어, 종단곡선 R이 보이지 않고 B06 계획고·B08 CAD 계획선이 그 # 지점에서 어긋난다(2026-08-03 사용자 보고). 프론트(buildAlignment)와 같은 규칙이다. extra_points = [pvi_s] + [ np.array([curve["bvc_m"], curve["chainage_m"], curve["evc_m"]]) for curve in curves diff --git a/B05_Profile/B05_Profile_Engine_Grade_Profile.py b/B05_Profile/B05_Profile_Engine_Grade_Profile.py index 662956d7..3e055b22 100644 --- a/B05_Profile/B05_Profile_Engine_Grade_Profile.py +++ b/B05_Profile/B05_Profile_Engine_Grade_Profile.py @@ -71,7 +71,7 @@ def _profile_entry( ) -> dict[str, Any]: """`design_profiles` 배열 계약(기존 스키마)에 맞춰 계획선 한 벌을 만든다. - B06 횡단 계획고와 B07 CAD 계획선 레이어는 `samples`만 사용하므로, 선형 구조가 + B06 횡단 계획고와 B08 CAD 계획선 레이어는 `samples`만 사용하므로, 선형 구조가 바뀌어도 하류 단계는 그대로 동작한다. """ balance = alignment["balance"] diff --git a/B06_Section/B06_Section_Engine_Design.py b/B06_Section/B06_Section_Engine_Design.py index e6eb086f..09a77a6e 100644 --- a/B06_Section/B06_Section_Engine_Design.py +++ b/B06_Section/B06_Section_Engine_Design.py @@ -2,7 +2,7 @@ 지반유형(토사/리핑암/발파암)과 단면유형(좌절/우절/양절/양성)에 따라 표준횡단 설계선을 구성하고, 지반선과의 차이로 절·성토 단면적을 산출한다. B06에서 사용자가 -버튼을 누를 때 즉시 호출되며, 여기서 나온 값은 잠정치로 저장되고 B07 상세설계에서 +버튼을 누를 때 즉시 호출되며, 여기서 나온 값은 잠정치로 저장되고 B08 상세설계에서 확정치로 대체된다. 표준단면 기하는 config STANDARD_CROSS_SECTION(단일 진실 원천)을 읽고, B06 설정 diff --git a/B06_Section/B06_Section_Repository.py b/B06_Section/B06_Section_Repository.py index 9b4119bb..ae3e0122 100644 --- a/B06_Section/B06_Section_Repository.py +++ b/B06_Section/B06_Section_Repository.py @@ -390,7 +390,7 @@ async def merge_cross_section_design_by_round( ) -> bool: """정수 chainage(m) 측점의 data.design에 patch를 병합 저장한다. - B07 도면 확정(전체 설계 재계산 결과) 및 확정 해제(status 되돌림)에서 사용한다. + B08 도면 확정(전체 설계 재계산 결과) 및 확정 해제(status 되돌림)에서 사용한다. 도면 ID가 정수 m라 ROUND로 매칭한다. 갱신 여부를 반환한다. """ async with connection.cursor() as cursor: @@ -428,7 +428,7 @@ async def get_cross_section_design( ) -> dict[str, Any] | None: """정수 chainage(m)에 해당하는 측점의 잠정 설계(data.design)를 반환한다. - B07이 도면 ID(cross_{정수m}m)로 조회하므로 ROUND로 근사 매칭한다. + B08이 도면 ID(cross_{정수m}m)로 조회하므로 ROUND로 근사 매칭한다. """ async with connection.cursor() as cursor: await cursor.execute( diff --git a/B06_Section/B06_Section_Router.py b/B06_Section/B06_Section_Router.py index 9208aa55..cf09d306 100644 --- a/B06_Section/B06_Section_Router.py +++ b/B06_Section/B06_Section_Router.py @@ -758,7 +758,7 @@ async def compute_cross_section_design( two_stage_slope=request.two_stage_slope, ditch_enabled=request.ditch_enabled, ) - # B06 지정 시점은 잠정치. B07 도면 확정 시 동일 엔진으로 재계산해 confirmed로 승격한다. + # B06 지정 시점은 잠정치. B08 도면 확정 시 동일 엔진으로 재계산해 confirmed로 승격한다. design["status"] = "provisional" # 법정 근거 문구 표기용 — 사용자가 포장을 바꿔도 제안 여부는 그대로 남긴다. design["pavement_suggested"] = pavement_suggested diff --git a/B08_wf5_Quantity/0_old_260726_codex.zip b/B07_Quantity/0_old_260726_codex.zip similarity index 100% rename from B08_wf5_Quantity/0_old_260726_codex.zip rename to B07_Quantity/0_old_260726_codex.zip diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Api_Fetch.ts b/B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts similarity index 98% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_Api_Fetch.ts rename to B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts index 42863231..5ef526d0 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Api_Fetch.ts +++ b/B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts @@ -1,4 +1,4 @@ -/* B07 상세 설계 도면 목록·단건 API 클라이언트. */ +/* B08 상세 설계 도면 목록·단건 API 클라이언트. */ import { API_BASE_URL, API_TIMEOUT_MS } from "@config/config_frontend"; diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad.py b/B08_DesignDetail/B08_DesignDetail_Engine_Cad.py similarity index 98% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad.py rename to B08_DesignDetail/B08_DesignDetail_Engine_Cad.py index e8792071..8fa354b4 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad.py +++ b/B08_DesignDetail/B08_DesignDetail_Engine_Cad.py @@ -1,4 +1,4 @@ -"""B07 CAD 도면 조립 엔진 — B06/B05 산출물을 openwebcad 엔티티로 직렬화한다. +"""B08 CAD 도면 조립 엔진 — B06/B05 산출물을 openwebcad 엔티티로 직렬화한다. 납품 도면 양식 복제: - 종단도: 30측점 N분할 + 하단 측점 테이블(곡선/측점/거리/추가거리/지반고/ @@ -18,17 +18,17 @@ from typing import Any from uuid import UUID, uuid5 # 레이어 정의 — 지표면선은 상세설계 제어 대상에서 제외하므로 잠금한다(N-1-3). -GROUND_LAYER_ID = "b07-ground" +GROUND_LAYER_ID = "b08-ground" GROUND_COLOR = "#f5f7fa" -DESIGN_LAYER_ID = "b07-design" +DESIGN_LAYER_ID = "b08-design" DESIGN_COLOR = "#b794f6" -STRUCTURE_LAYER_ID = "b07-structure" +STRUCTURE_LAYER_ID = "b08-structure" STRUCTURE_COLOR = "#f6d55c" -ROCK_LAYER_ID = "b07-rock-boundary" +ROCK_LAYER_ID = "b08-rock-boundary" ROCK_COLOR = "#f59e0b" -FRAME_LAYER_ID = "b07-frame" -LONG_TABLE_LAYER_ID = "b07-long-table" -CROSS_TABLE_LAYER_ID = "b07-cross-table" +FRAME_LAYER_ID = "b08-frame" +LONG_TABLE_LAYER_ID = "b08-long-table" +CROSS_TABLE_LAYER_ID = "b08-cross-table" TABLE_LINE_COLOR = "#8ea0b5" TABLE_LABEL_COLOR = "#e8edf4" TABLE_VALUE_COLOR = "#ffe066" @@ -45,7 +45,7 @@ _POLY_NS = UUID("9dd28aab-cee5-4df6-b8ae-b9167fbde9a8") # v4: 종단 그래프 축·회색 측점 세로선·기준선(datum) + 테이블 눈금·세로쓰기·구배 원 표기. # v5: 횡단 콘텐츠 bbox 중심 정렬(경사 드리프트 제거) + 외곽 테두리 제거. # v6: 외곽 테두리 복구 (콘텐츠 중심 정렬 유지, 노선 공통 크기 사각형). -# v7: 종단도 A1 도각 템플릿 프레임 병합 (b07-frame 잠금 레이어). +# v7: 종단도 A1 도각 템플릿 프레임 병합 (b08-frame 잠금 레이어). DRAWING_FORMAT = 7 @@ -278,7 +278,7 @@ def _cross_line_entities( design: dict[str, Any] | None, dy: float = 0.0, ) -> list[dict[str, Any]]: - """횡단 설계선을 설계(b07-design)/구조물(b07-structure, 측구 구간)로 분리한다.""" + """횡단 설계선을 설계(b08-design)/구조물(b08-structure, 측구 구간)로 분리한다.""" points: list[tuple[float, float]] = [] for point in design_line if isinstance(design_line, list) else []: if not isinstance(point, dict): diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad_Long.py b/B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py similarity index 98% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad_Long.py rename to B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py index 5554efe5..523d2f4f 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Cad_Long.py +++ b/B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py @@ -1,4 +1,4 @@ -"""B07 종단도 CAD 조립 — 30측점 N분할 + 그래프 축·격자 + 하단 측점 테이블. +"""B08 종단도 CAD 조립 — 30측점 N분할 + 그래프 축·격자 + 하단 측점 테이블. 납품 양식: - 그래프 영역: 좌측 Y축(표고 눈금·라벨), 기준선(X축, 최저 표고에서 5m 이상 @@ -15,7 +15,7 @@ import math from typing import Any from uuid import uuid5 -from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Engine_Cad import ( +from B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( _ENTITY_NS, DESIGN_COLOR, DESIGN_LAYER_ID, @@ -41,14 +41,14 @@ from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Engine_Cad import ( polyline_entity, station_no_label, ) -from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Engine_Template import ( +from B08_DesignDetail.B08_DesignDetail_Engine_Template import ( entities_bbox, frame_entities, ) from common_util.common_util_route_profile import design_elevation_from_longitudinal # 종단 전용 레이어: 그래프 축·격자(잠금 — 참조용, 편집 제외). -LONG_GRID_LAYER_ID = "b07-long-grid" +LONG_GRID_LAYER_ID = "b08-long-grid" GRID_COLOR = "#5b6572" _VERTICAL = (0.0, 1.0) # 세로쓰기(아래→위) diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Template.py b/B08_DesignDetail/B08_DesignDetail_Engine_Template.py similarity index 95% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Template.py rename to B08_DesignDetail/B08_DesignDetail_Engine_Template.py index 1757821b..23b78e66 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Engine_Template.py +++ b/B08_DesignDetail/B08_DesignDetail_Engine_Template.py @@ -1,8 +1,8 @@ -"""B07 도각 템플릿 병합 — openwebcad JSON 템플릿을 도면 콘텐츠 둘레에 배치한다. +"""B08 도각 템플릿 병합 — openwebcad JSON 템플릿을 도면 콘텐츠 둘레에 배치한다. resources/dwg_analysis/templete/의 사전 변환 템플릿(A1 도각 등)을 로드해, 도면 콘텐츠 bbox에 맞춰 균등 스케일·이동시킨 뒤 잠금 프레임 레이어 -(b07-frame) 엔티티로 병합한다. 콘텐츠 좌표(m)는 건드리지 않는다 — +(b08-frame) 엔티티로 병합한다. 콘텐츠 좌표(m)는 건드리지 않는다 — 템플릿 쪽을 확대해 콘텐츠를 감싼다. A1 템플릿 기하(변환 시점 고정값): 전체 840x594, 하단 y17~47 표제란, @@ -15,7 +15,7 @@ from pathlib import Path from typing import Any from uuid import uuid5 -from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Engine_Cad import ( +from B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( _ENTITY_NS, FRAME_LAYER_ID, ) diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Router.py b/B08_DesignDetail/B08_DesignDetail_Router.py similarity index 96% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_Router.py rename to B08_DesignDetail/B08_DesignDetail_Router.py index cb0c7228..3411637f 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Router.py +++ b/B08_DesignDetail/B08_DesignDetail_Router.py @@ -1,4 +1,4 @@ -"""B06 확정 종·횡단 산출물을 B07 CAD 도면으로 변환하는 라우터.""" +"""B06 확정 종·횡단 산출물을 B08 CAD 도면으로 변환하는 라우터.""" import asyncio import json @@ -20,7 +20,7 @@ from B06_Section.B06_Section_Repository import ( get_longitudinal_section, merge_cross_section_design_by_round, ) -from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Engine_Cad import ( +from B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( DRAWING_FORMAT, QUANTITY_VALUE_KEYS, build_cross_drawing, @@ -28,11 +28,11 @@ from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Engine_Cad import ( infer_station_interval, station_no_label, ) -from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Engine_Cad_Long import ( +from B08_DesignDetail.B08_DesignDetail_Engine_Cad_Long import ( build_longitudinal_drawing, longitudinal_chunks, ) -from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Schema import ( +from B08_DesignDetail.B08_DesignDetail_Schema import ( DesignDrawingConfirmRequest, DesignDrawingConfirmResponse, DesignDrawingInvalidateResponse, @@ -46,11 +46,11 @@ from common_util.common_util_workflow_state import complete_stage, start_stage from config.config_db import get_db_pool logger = logging.getLogger(__name__) -router = APIRouter(prefix="/api/projects", tags=["B07 Design Detail"]) +router = APIRouter(prefix="/api/projects", tags=["B08 Design Detail"]) _CROSS_ID = re.compile(r"^cross_(\d+)m$") _LONG_ID = re.compile(r"^longitudinal(?:_(\d+))?$") -_STAGE_DIR = "B07_wf4_DesignDetail" +_STAGE_DIR = "B08_DesignDetail" async def _confirmed_source(project_id: UUID) -> tuple[int, Path, Path]: @@ -363,7 +363,7 @@ def _invalidate_drawing(project_root: Path, drawing_id: str) -> None: async def get_design_drawing_list( project_id: UUID, ) -> DesignDrawingListResponse | JSONResponse: - """B07 좌측 패널용 도면 메타데이터만 캐시한다.""" + """B08 좌측 패널용 도면 메타데이터만 캐시한다.""" try: route_id, project_root, longitudinal_path = await _confirmed_source(project_id) drawings = await asyncio.to_thread(_drawing_list, project_root, longitudinal_path) @@ -375,7 +375,7 @@ async def get_design_drawing_list( except PermissionError as exc: return JSONResponse(status_code=409, content={"status": "error", "message": str(exc)}) except Exception: - logger.exception("B07 도면 목록 조회 실패: project_id=%s", project_id) + logger.exception("B08 도면 목록 조회 실패: project_id=%s", project_id) return JSONResponse( status_code=500, content={"status": "error", "message": "상세 설계 도면 목록을 읽지 못했습니다."}, @@ -420,7 +420,7 @@ async def get_design_drawing( return JSONResponse(status_code=409, content={"status": "error", "message": str(exc)}) except Exception: logger.exception( - "B07 단건 도면 조회 실패: project_id=%s drawing_id=%s", project_id, drawing_id + "B08 단건 도면 조회 실패: project_id=%s drawing_id=%s", project_id, drawing_id ) return JSONResponse( status_code=500, @@ -433,7 +433,7 @@ def _recompute_confirmed_design( ) -> dict[str, Any]: """B06 지정값과 현재 계획고로 절·성토 단면적을 재계산해 확정치(status=confirmed)로 만든다. - B07 CAD에는 아직 편집 가능한 설계선이 없으므로, 저장된 지정값(지반유형·단면유형· + B08 CAD에는 아직 편집 가능한 설계선이 없으므로, 저장된 지정값(지반유형·단면유형· 측구위치)과 계획고로 동일 엔진을 재실행해 확정 시점 값을 고정한다. """ longitudinal = _read_json(longitudinal_path) @@ -505,7 +505,7 @@ async def confirm_design_drawing( ) except (ValueError, KeyError, FileNotFoundError, OSError): logger.warning( - "B07 확정 단면적 재계산 실패 (도면 확정은 유지): drawing_id=%s", + "B08 확정 단면적 재계산 실패 (도면 확정은 유지): drawing_id=%s", drawing_id, exc_info=True, ) @@ -522,9 +522,9 @@ async def confirm_design_drawing( ) async with connection.cursor() as cursor: if all_confirmed: - await complete_stage(cursor, str(project_id), 4) + await complete_stage(cursor, str(project_id), 5) else: - await start_stage(cursor, str(project_id), 4) + await start_stage(cursor, str(project_id), 5) await connection.commit() except Exception: await connection.rollback() @@ -543,7 +543,7 @@ async def confirm_design_drawing( except PermissionError as exc: return JSONResponse(status_code=409, content={"status": "error", "message": str(exc)}) except Exception: - logger.exception("B07 도면 확정 실패: project_id=%s drawing_id=%s", project_id, drawing_id) + logger.exception("B08 도면 확정 실패: project_id=%s drawing_id=%s", project_id, drawing_id) return JSONResponse( status_code=500, content={"status": "error", "message": "상세 설계 도면을 확정하지 못했습니다."}, @@ -557,7 +557,7 @@ async def confirm_design_drawing( async def invalidate_design_drawing( project_id: UUID, drawing_id: str ) -> DesignDrawingInvalidateResponse | JSONResponse: - """확정 도면 편집 시 B07 및 이후 단계를 미확정 상태로 되돌린다.""" + """확정 도면 편집 시 B08 및 이후 단계를 미확정 상태로 되돌린다.""" try: route_id, project_root, longitudinal_path = await _confirmed_source(project_id) items = await asyncio.to_thread(_drawing_list, project_root, longitudinal_path) @@ -579,7 +579,7 @@ async def invalidate_design_drawing( patch={"status": "provisional"}, ) async with connection.cursor() as cursor: - await start_stage(cursor, str(project_id), 4) + await start_stage(cursor, str(project_id), 5) await connection.commit() except Exception: await connection.rollback() @@ -594,7 +594,7 @@ async def invalidate_design_drawing( return JSONResponse(status_code=409, content={"status": "error", "message": str(exc)}) except Exception: logger.exception( - "B07 도면 확정 해제 실패: project_id=%s drawing_id=%s", project_id, drawing_id + "B08 도면 확정 해제 실패: project_id=%s drawing_id=%s", project_id, drawing_id ) return JSONResponse( status_code=500, diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Schema.py b/B08_DesignDetail/B08_DesignDetail_Schema.py similarity index 91% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_Schema.py rename to B08_DesignDetail/B08_DesignDetail_Schema.py index ccd69445..a0996a95 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_Schema.py +++ b/B08_DesignDetail/B08_DesignDetail_Schema.py @@ -1,4 +1,4 @@ -"""B07 상세 설계 도면 목록·단건 응답 모델.""" +"""B08 상세 설계 도면 목록·단건 응답 모델.""" from typing import Any, Literal @@ -16,7 +16,7 @@ class DesignDrawingItem(BaseModel): class DesignDrawingListResponse(BaseModel): - """B07 진입 시 캐시할 경량 도면 목록.""" + """B08 진입 시 캐시할 경량 도면 목록.""" status: str = "success" project_id: str @@ -50,7 +50,7 @@ class DesignDrawingConfirmRequest(BaseModel): class DesignDrawingConfirmResponse(BaseModel): - """도면별 확정 및 B07 전체 완료 상태.""" + """도면별 확정 및 B08 전체 완료 상태.""" status: str = "success" project_id: str diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Page.ts b/B08_DesignDetail/B08_DesignDetail_UI_Page.ts similarity index 83% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Page.ts rename to B08_DesignDetail/B08_DesignDetail_UI_Page.ts index 885a4f56..dc4ae70a 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Page.ts +++ b/B08_DesignDetail/B08_DesignDetail_UI_Page.ts @@ -1,16 +1,16 @@ /* ============================================================================= - * B07_wf4_DesignDetail_UI_Page.ts + * B08_DesignDetail_UI_Page.ts * 로그인 후 07: 4차 워크플로우 (상세 설계) — 독립형 2D CAD 임베드 * - * B07_wf4_DesignDetail/openwebcad를 프로젝트 소유 B07 CAD 앱으로 빌드하여 - * /b07-cad 경로로 서빙한다. 업무 도면은 추후 same-origin postMessage로 + * B08_DesignDetail/openwebcad를 프로젝트 소유 B08 CAD 앱으로 빌드하여 + * /b08-cad 경로로 서빙한다. 업무 도면은 추후 same-origin postMessage로 * JSON만 전달하며 DXF/DWG 파싱은 이 브라우저 앱에서 수행하지 않는다. * * 레이아웃 (사용자 지시): 사이드 패널 빈 상태 유지 + 상세 영역 CAD 화면. * 제약 준수 (frontend.md §2 3단 레이아웃): createWorkflowLayout 재사용. * ========================================================================== */ -import "./B07_wf4_DesignDetail_UI_Style.css"; +import "./B08_DesignDetail_UI_Style.css"; import { attachCollapsible } from "@ui/ui_template_collapsible"; import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale"; import { @@ -38,7 +38,7 @@ import { type DesignDrawingItem, type DesignDrawingResponse, type QuantityTable, -} from "./B07_wf4_DesignDetail_Api_Fetch"; +} from "./B08_DesignDetail_Api_Fetch"; /** CAD 앱 수량 패널로 넘기는 설계 컨텍스트 (openwebcad DesignMeta와 동일 형식). */ interface DesignMeta { @@ -57,22 +57,22 @@ interface SaveResult { quantityTable: QuantityTable | null; } -/** B07 독립형 CAD 정적 경로 (main.py 마운트, dev는 vite proxy 위임) */ -const B07_CAD_APP_URL = "/b07-cad/index.html"; +/** B08 독립형 CAD 정적 경로 (main.py 마운트, dev는 vite proxy 위임) */ +const B08_CAD_APP_URL = "/b08-cad/index.html"; /** locale 헬퍼 */ function L(key: keyof typeof ui_locales): string { return ui_locales[key][currentLanguageIndex]; } -const CAD_LOAD_MESSAGE = "aislo:b07:load-drawing"; -const CAD_READY_MESSAGE = "aislo:b07:drawing-ready"; -const CAD_LOADED_MESSAGE = "aislo:b07:drawing-loaded"; -const CAD_ERROR_MESSAGE = "aislo:b07:drawing-error"; -const CAD_CHANGED_MESSAGE = "aislo:b07:drawing-changed"; -const CAD_SAVE_REQUEST_MESSAGE = "aislo:b07:save-request"; -const CAD_SAVE_RESPONSE_MESSAGE = "aislo:b07:save-response"; -const CAD_NAVIGATE_MESSAGE = "aislo:b07:navigate"; +const CAD_LOAD_MESSAGE = "aislo:b08:load-drawing"; +const CAD_READY_MESSAGE = "aislo:b08:drawing-ready"; +const CAD_LOADED_MESSAGE = "aislo:b08:drawing-loaded"; +const CAD_ERROR_MESSAGE = "aislo:b08:drawing-error"; +const CAD_CHANGED_MESSAGE = "aislo:b08:drawing-changed"; +const CAD_SAVE_REQUEST_MESSAGE = "aislo:b08:save-request"; +const CAD_SAVE_RESPONSE_MESSAGE = "aislo:b08:save-response"; +const CAD_NAVIGATE_MESSAGE = "aislo:b08:navigate"; /** 측점 간격을 연속 chainage 차이의 최빈값으로 추정한다 (B06 그래프와 동일 방식). */ function inferStationInterval(chainages: number[]): number { @@ -112,9 +112,9 @@ function buildDrawingSidePanel( errorMessage?: string, ): HTMLDivElement { const panel = document.createElement("div"); - panel.className = "b07-drawing-list"; + panel.className = "b08-drawing-list"; const heading = document.createElement("div"); - heading.className = "b07-drawing-list__heading"; + heading.className = "b08-drawing-list__heading"; const title = document.createElement("strong"); title.textContent = "설계 도면"; const count = document.createElement("span"); @@ -124,7 +124,7 @@ function buildDrawingSidePanel( if (errorMessage || drawings.length === 0) { const empty = document.createElement("p"); - empty.className = "b07-drawing-list__empty"; + empty.className = "b08-drawing-list__empty"; empty.textContent = errorMessage ?? "확정된 종·횡단 도면이 없습니다."; panel.append(empty); return panel; @@ -138,7 +138,7 @@ function buildDrawingSidePanel( if (!items.length) continue; const section = document.createElement("section"); // ui-sidebar-section: 사이드 컨테이너 공통 외곽선(B04~B06과 통일, 2026-08-06 사용자 지시). - section.className = "b07-drawing-group ui-collapsible ui-sidebar-section"; + section.className = "b08-drawing-group ui-collapsible ui-sidebar-section"; section.dataset.kind = kind; const sectionTitle = document.createElement("h3"); sectionTitle.className = "ui-collapsible__title"; @@ -147,11 +147,11 @@ function buildDrawingSidePanel( for (const drawing of items) { const button = document.createElement("button"); button.type = "button"; - button.className = "b07-drawing-button"; + button.className = "b08-drawing-button"; button.dataset.drawingId = drawing.id; button.dataset.confirmed = String(drawing.confirmed); const name = document.createElement("span"); - name.className = "b07-drawing-button__name"; + name.className = "b08-drawing-button__name"; name.textContent = drawing.kind === "cross" && typeof drawing.chainage_m === "number" ? stationLabel(drawing.chainage_m, stationInterval) @@ -191,67 +191,67 @@ function ditchLabel(design: CrossDesignInfo): string { function infoRow(label: string, value: string): HTMLElement { const row = document.createElement("div"); - row.className = "b07-info__row"; + row.className = "b08-info__row"; const key = document.createElement("span"); - key.className = "b07-info__key"; + key.className = "b08-info__key"; key.textContent = label; const val = document.createElement("span"); - val.className = "b07-info__val"; + val.className = "b08-info__val"; val.textContent = value; row.append(key, val); return row; } -/** 선택 횡단도의 지반정보/계획정보를 2분할로 렌더한다 (잠정치, B07 확정 시 재계산). */ +/** 선택 횡단도의 지반정보/계획정보를 2분할로 렌더한다 (잠정치, B08 확정 시 재계산). */ function buildDesignInfoPanel(title: string, design: CrossDesignInfo | null): HTMLElement { const panel = document.createElement("div"); - panel.className = "b07-info"; + panel.className = "b08-info"; const heading = document.createElement("div"); - heading.className = "b07-info__heading"; + heading.className = "b08-info__heading"; const stationName = document.createElement("strong"); - stationName.textContent = `${L("B07_Info_Station")} ${title}`; + stationName.textContent = `${L("B08_Info_Station")} ${title}`; const confirmed = design?.status === "confirmed"; const badge = document.createElement("span"); - badge.className = `b07-info__badge${confirmed ? " b07-info__badge--confirmed" : ""}`; - badge.textContent = confirmed ? L("B07_Info_Confirmed") : L("B07_Info_Provisional"); + badge.className = `b08-info__badge${confirmed ? " b08-info__badge--confirmed" : ""}`; + badge.textContent = confirmed ? L("B08_Info_Confirmed") : L("B08_Info_Provisional"); heading.append(stationName, badge); panel.append(heading); if (!design) { const empty = document.createElement("p"); - empty.className = "b07-info__empty"; - empty.textContent = L("B07_Info_NoDesign"); + empty.className = "b08-info__empty"; + empty.textContent = L("B08_Info_NoDesign"); panel.append(empty); return panel; } const ground = document.createElement("section"); - ground.className = "b07-info__block"; + ground.className = "b08-info__block"; const groundTitle = document.createElement("h4"); - groundTitle.textContent = L("B07_Info_Ground_Title"); + groundTitle.textContent = L("B08_Info_Ground_Title"); ground.append( groundTitle, - infoRow(L("B07_Info_GroundType"), L(GROUND_TYPE_LABEL[design.ground_type])), - infoRow(L("B07_Info_CutSide"), cutSideLabel(design.section_mode)), + infoRow(L("B08_Info_GroundType"), L(GROUND_TYPE_LABEL[design.ground_type])), + infoRow(L("B08_Info_CutSide"), cutSideLabel(design.section_mode)), infoRow( - L("B07_Info_DitchSide"), + L("B08_Info_DitchSide"), design.ditch_side === "left" ? L("B06_Design_Ditch_Left") : L("B06_Design_Ditch_Right"), ), ); const plan = document.createElement("section"); - plan.className = "b07-info__block"; + plan.className = "b08-info__block"; const planTitle = document.createElement("h4"); - planTitle.textContent = L("B07_Info_Plan_Title"); + planTitle.textContent = L("B08_Info_Plan_Title"); plan.append( planTitle, - infoRow(L("B07_Info_DesignElevation"), `${design.design_elevation_m.toFixed(2)}m`), - infoRow(L("B07_Info_CutSlope"), `1:${design.cut_slope_ratio}`), - infoRow(L("B07_Info_FillSlope"), `1:${design.fill_slope_ratio}`), - infoRow(L("B07_Info_RoadWidth"), `${design.roadbed_width_m.toFixed(2)}m`), - infoRow(L("B07_Info_Ditch"), ditchLabel(design)), - infoRow(L("B07_Info_CutArea"), `${design.cut_area_m2.toFixed(2)}㎡`), - infoRow(L("B07_Info_FillArea"), `${design.fill_area_m2.toFixed(2)}㎡`), + infoRow(L("B08_Info_DesignElevation"), `${design.design_elevation_m.toFixed(2)}m`), + infoRow(L("B08_Info_CutSlope"), `1:${design.cut_slope_ratio}`), + infoRow(L("B08_Info_FillSlope"), `1:${design.fill_slope_ratio}`), + infoRow(L("B08_Info_RoadWidth"), `${design.roadbed_width_m.toFixed(2)}m`), + infoRow(L("B08_Info_Ditch"), ditchLabel(design)), + infoRow(L("B08_Info_CutArea"), `${design.cut_area_m2.toFixed(2)}㎡`), + infoRow(L("B08_Info_FillArea"), `${design.fill_area_m2.toFixed(2)}㎡`), ); panel.append(ground, plan); @@ -261,7 +261,7 @@ function buildDesignInfoPanel(title: string, design: CrossDesignInfo | null): HT /* ----------------------------------------------------------------------------- * 페이지 진입점 * -------------------------------------------------------------------------- */ -export async function renderB07DesignDetail(root: HTMLElement): Promise { +export async function renderB08DesignDetail(root: HTMLElement): Promise { const projectId = localStorage.getItem(CURRENT_PROJECT_ID_KEY); let workflowState: WorkflowState | undefined; let drawings: DesignDrawingItem[] = []; @@ -281,14 +281,14 @@ export async function renderB07DesignDetail(root: HTMLElement): Promise { } const cadHost = document.createElement("div"); - cadHost.className = "b07-cad-host"; + cadHost.className = "b08-cad-host"; const frame = document.createElement("iframe"); - frame.className = "b07-cad-frame"; - frame.src = B07_CAD_APP_URL; - frame.title = L("B07_Design_Title"); + frame.className = "b08-cad-frame"; + frame.src = B08_CAD_APP_URL; + frame.title = L("B08_Design_Title"); const license = document.createElement("a"); - license.className = "b07-cad-license"; - license.href = "/b07-cad/THIRD_PARTY_LICENSES.txt"; + license.className = "b08-cad-license"; + license.href = "/b08-cad/THIRD_PARTY_LICENSES.txt"; license.target = "_blank"; license.rel = "noreferrer"; license.textContent = "Drawing engine based on OpenWebCAD · MIT License"; @@ -311,7 +311,7 @@ export async function renderB07DesignDetail(root: HTMLElement): Promise { let resolveSave: ((payload: SaveResult) => void) | undefined; let drawingListEl: HTMLElement | undefined; const infoPanelHost = document.createElement("div"); - infoPanelHost.className = "b07-info-host"; + infoPanelHost.className = "b08-info-host"; const updateInfoPanel = (drawing: DesignDrawingItem, response: DesignDrawingResponse): void => { if (drawing.kind !== "cross") { @@ -334,11 +334,11 @@ export async function renderB07DesignDetail(root: HTMLElement): Promise { const findButton = (drawingId: string) => drawingListEl?.querySelector( - `.b07-drawing-button[data-drawing-id="${drawingId}"]`, + `.b08-drawing-button[data-drawing-id="${drawingId}"]`, ) ?? undefined; const highlightActive = (drawingId: string) => { - drawingListEl?.querySelectorAll(".b07-drawing-button").forEach((item) => { + drawingListEl?.querySelectorAll(".b08-drawing-button").forEach((item) => { item.dataset.active = String(item.dataset.drawingId === drawingId); }); }; @@ -442,7 +442,7 @@ export async function renderB07DesignDetail(root: HTMLElement): Promise { showToast("현재 도면을 확정하고 저장했습니다.", "success"); if (result.all_confirmed) { allDrawingsConfirmed = true; - goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[5]); + goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[6]); } } catch (error) { showToast( @@ -510,27 +510,17 @@ export async function renderB07DesignDetail(root: HTMLElement): Promise { ); drawingListEl = drawingPanel; const confirmActions = document.createElement("div"); - // b07-drawing-actions는 자체 sticky 하단 고정(B07 Style.css) — 공용 ui-sidebar-actions와 + // b08-drawing-actions는 자체 sticky 하단 고정(B08 Style.css) — 공용 ui-sidebar-actions와 // 같은 동작이라 중복 적용하지 않는다(2026-08-05 확인). - confirmActions.className = "b07-drawing-actions"; + confirmActions.className = "b08-drawing-actions"; confirmActions.append(confirmButton); - // TODO: [임시 테스트용] B08 강제 이동 버튼 (테스트 완료 후 제거 예정) - const tempB08Btn = createButton({ - label: "[임시] B08 이동", - variant: "ghost", - onClick: () => { - if (projectId) goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[5]); - }, - }); - confirmActions.append(tempB08Btn); - drawingPanel.append(infoPanelHost, confirmActions); const layout = createWorkflowLayout({ - title: L("B07_Design_Title"), + title: L("B08_Design_Title"), steps: workflowSteps(), - activeStep: 4, + activeStep: 5, leftPanel: drawingPanel, mainContent: cadHost, stages: workflowState?.stages, @@ -538,14 +528,14 @@ export async function renderB07DesignDetail(root: HTMLElement): Promise { routes: WORKFLOW_STEP_ROUTES, onStepClick: (stepIndex) => { if (!projectId) return; - if (stepIndex > 4 && !allDrawingsConfirmed) { + if (stepIndex > 5 && !allDrawingsConfirmed) { showToast("모든 설계 도면을 확정한 뒤 다음 단계로 이동할 수 있습니다.", "warning"); return; } goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[stepIndex]); }, }); - layout.root.classList.add("b07-design-layout"); + layout.root.classList.add("b08-design-layout"); root.replaceChildren(layout.root); // 페이지 진입 시 첫 도면(종단도)을 자동 선택 — 빈 CAD 화면 방지. diff --git a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Style.css b/B08_DesignDetail/B08_DesignDetail_UI_Style.css similarity index 80% rename from B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Style.css rename to B08_DesignDetail/B08_DesignDetail_UI_Style.css index 3f0b5d4f..d5d8d0fa 100644 --- a/B07_wf4_DesignDetail/B07_wf4_DesignDetail_UI_Style.css +++ b/B08_DesignDetail/B08_DesignDetail_UI_Style.css @@ -1,23 +1,23 @@ /* ============================================================================= - * B07_wf4_DesignDetail_UI_Style.css + * B08_DesignDetail_UI_Style.css * 상세 설계(독립형 2D CAD) 화면 스타일 — theme.css 변수만 사용 * ========================================================================== */ /* 워크플로우 레이아웃 높이 (B06 패턴 준수) */ -.b07-design-layout { +.b08-design-layout { height: calc(100vh - var(--spacing-64)); height: calc(100dvh - var(--spacing-64)); min-height: 0; } -.b07-design-layout .ui-workflow-layout__body, -.b07-design-layout .ui-workflow-layout__main { +.b08-design-layout .ui-workflow-layout__body, +.b08-design-layout .ui-workflow-layout__main { height: 100%; min-height: 0; } /* B06 확정 산출물 도면 목록 */ -.b07-drawing-list { +.b08-drawing-list { display: flex; flex-direction: column; gap: var(--spacing-12); @@ -26,7 +26,7 @@ overflow-y: auto; } -.b07-drawing-list__heading { +.b08-drawing-list__heading { display: flex; align-items: center; justify-content: space-between; @@ -34,13 +34,13 @@ border-bottom: 1px solid var(--color-border); } -.b07-drawing-list__heading span, -.b07-drawing-list__empty { +.b08-drawing-list__heading span, +.b08-drawing-list__empty { color: var(--color-text-muted); font-size: var(--text-body-sm); } -.b07-drawing-group { +.b08-drawing-group { display: flex; flex-direction: column; gap: var(--spacing-4); @@ -50,13 +50,13 @@ } /* 횡단도는 2열 배치 */ -.b07-drawing-group[data-kind="cross"] { +.b08-drawing-group[data-kind="cross"] { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-4); } -.b07-drawing-group h3 { +.b08-drawing-group h3 { margin: var(--spacing-8) 0 var(--spacing-4); color: var(--color-text-muted); font-size: var(--text-caption); @@ -64,11 +64,11 @@ } /* 그리드 제목은 두 열을 가로지른다 */ -.b07-drawing-group[data-kind="cross"] h3 { +.b08-drawing-group[data-kind="cross"] h3 { grid-column: 1 / -1; } -.b07-drawing-button { +.b08-drawing-button { display: flex; align-items: center; justify-content: center; @@ -86,34 +86,34 @@ text-align: center; } -.b07-drawing-button__name { +.b08-drawing-button__name { overflow: hidden; font-size: var(--text-body-sm); white-space: nowrap; text-overflow: ellipsis; } -.b07-drawing-button:hover, -.b07-drawing-button[data-active="true"] { +.b08-drawing-button:hover, +.b08-drawing-button[data-active="true"] { border-color: var(--color-border); background: var(--color-mist-violet); } -.b07-drawing-button[data-active="true"] { +.b08-drawing-button[data-active="true"] { color: var(--color-primary); } /* 확정: 좌측 띠 + 측점 글자색을 함께 성공색으로 반영 */ -.b07-drawing-button[data-confirmed="true"] { +.b08-drawing-button[data-confirmed="true"] { border-color: color-mix(in srgb, var(--color-success) 35%, var(--color-border)); border-left-color: var(--color-success); } -.b07-drawing-button[data-confirmed="true"] .b07-drawing-button__name { +.b08-drawing-button[data-confirmed="true"] .b08-drawing-button__name { color: var(--color-success); } -.b07-drawing-actions { +.b08-drawing-actions { position: sticky; bottom: 0; margin-top: auto; @@ -121,12 +121,12 @@ background: var(--color-surface-raised); } -.b07-drawing-actions > button { +.b08-drawing-actions > button { width: 100%; } /* CAD 뷰어 호스트 (상세 페이지 영역) */ -.b07-cad-host { +.b08-cad-host { position: relative; width: 100%; height: 100%; @@ -136,8 +136,8 @@ background-color: var(--color-surface); } -/* B07 독립형 CAD 앱 임베드 */ -.b07-cad-frame { +/* B08 독립형 CAD 앱 임베드 */ +.b08-cad-frame { position: absolute; inset: 0; width: 100%; @@ -145,7 +145,7 @@ border: 0; } -.b07-cad-license { +.b08-cad-license { position: absolute; z-index: 2; right: 10px; @@ -156,17 +156,17 @@ text-decoration: none; } -.b07-cad-license:hover { +.b08-cad-license:hover { color: var(--color-text-muted); text-decoration: underline; } /* 선택 횡단도의 지반정보/계획정보 (잠정치) */ -.b07-info-host:empty { +.b08-info-host:empty { display: none; } -.b07-info { +.b08-info { margin-top: var(--spacing-16); padding-top: var(--spacing-16); border-top: 1px solid var(--color-border); @@ -175,14 +175,14 @@ gap: var(--spacing-8); } -.b07-info__heading { +.b08-info__heading { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); } -.b07-info__badge { +.b08-info__badge { padding: 1px 6px; font-size: 10px; color: var(--color-primary); @@ -190,40 +190,40 @@ border-radius: var(--radius-buttons); } -.b07-info__badge--confirmed { +.b08-info__badge--confirmed { color: var(--color-surface); background: var(--color-success); } -.b07-info__block { +.b08-info__block { display: flex; flex-direction: column; gap: 2px; } -.b07-info__block h4 { +.b08-info__block h4 { margin: var(--spacing-8) 0 2px; font-size: 0.78rem; color: var(--color-text-muted); } -.b07-info__row { +.b08-info__row { display: flex; justify-content: space-between; gap: var(--spacing-8); font-size: 0.76rem; } -.b07-info__key { +.b08-info__key { color: var(--color-text-muted); } -.b07-info__val { +.b08-info__val { color: var(--color-text); font-variant-numeric: tabular-nums; } -.b07-info__empty { +.b08-info__empty { font-size: 0.76rem; color: var(--color-text-muted); } diff --git a/B07_wf4_DesignDetail/openwebcad/.eslintrc.cjs b/B08_DesignDetail/openwebcad/.eslintrc.cjs similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/.eslintrc.cjs rename to B08_DesignDetail/openwebcad/.eslintrc.cjs diff --git a/B07_wf4_DesignDetail/openwebcad/.github/workflows/deploy.yml b/B08_DesignDetail/openwebcad/.github/workflows/deploy.yml similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/.github/workflows/deploy.yml rename to B08_DesignDetail/openwebcad/.github/workflows/deploy.yml diff --git a/B07_wf4_DesignDetail/openwebcad/.gitignore b/B08_DesignDetail/openwebcad/.gitignore similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/.gitignore rename to B08_DesignDetail/openwebcad/.gitignore diff --git a/B07_wf4_DesignDetail/openwebcad/Biomefile b/B08_DesignDetail/openwebcad/Biomefile similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/Biomefile rename to B08_DesignDetail/openwebcad/Biomefile diff --git a/B07_wf4_DesignDetail/openwebcad/LICENSE.md b/B08_DesignDetail/openwebcad/LICENSE.md similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/LICENSE.md rename to B08_DesignDetail/openwebcad/LICENSE.md diff --git a/B07_wf4_DesignDetail/openwebcad/README.md b/B08_DesignDetail/openwebcad/README.md similarity index 97% rename from B07_wf4_DesignDetail/openwebcad/README.md rename to B08_DesignDetail/openwebcad/README.md index 11130c64..6a511cf1 100644 --- a/B07_wf4_DesignDetail/openwebcad/README.md +++ b/B08_DesignDetail/openwebcad/README.md @@ -1,8 +1,8 @@ -# Aislo B07 2D Drawing +# Aislo B08 2D Drawing This directory is maintained as part of the Aislo project and is not connected to an upstream Git repository. It provides the independent browser-based 2D -drawing workspace used only by the B07 page. +drawing workspace used only by the B08 page. The drawing engine is based on OpenWebCAD by Bert Verhelst and retains its MIT license notice in `LICENSE.md` and `public/THIRD_PARTY_LICENSES.txt`. @@ -10,7 +10,7 @@ license notice in `LICENSE.md` and `public/THIRD_PARTY_LICENSES.txt`. ## Aislo integration boundary - Business drawings enter the iframe only as same-origin JSON messages with - type `aislo:b07:load-drawing`. + type `aislo:b08:load-drawing`. - Browser-side DXF/DWG parsing is intentionally excluded. - DXF, DWG and PDF input/output are separate future modules and require a new dependency-license review before implementation. diff --git a/B07_wf4_DesignDetail/openwebcad/biome.json b/B08_DesignDetail/openwebcad/biome.json similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/biome.json rename to B08_DesignDetail/openwebcad/biome.json diff --git a/B07_wf4_DesignDetail/openwebcad/index.html b/B08_DesignDetail/openwebcad/index.html similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/index.html rename to B08_DesignDetail/openwebcad/index.html diff --git a/B07_wf4_DesignDetail/openwebcad/package-lock.json b/B08_DesignDetail/openwebcad/package-lock.json similarity index 99% rename from B07_wf4_DesignDetail/openwebcad/package-lock.json rename to B08_DesignDetail/openwebcad/package-lock.json index ba62d757..d6c4ec55 100644 --- a/B07_wf4_DesignDetail/openwebcad/package-lock.json +++ b/B08_DesignDetail/openwebcad/package-lock.json @@ -1,11 +1,11 @@ { - "name": "aislo-b07-cad", + "name": "aislo-b08-cad", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "aislo-b07-cad", + "name": "aislo-b08-cad", "version": "0.0.0", "hasInstallScript": true, "dependencies": { diff --git a/B07_wf4_DesignDetail/openwebcad/package.json b/B08_DesignDetail/openwebcad/package.json similarity index 98% rename from B07_wf4_DesignDetail/openwebcad/package.json rename to B08_DesignDetail/openwebcad/package.json index f1392bbe..c69cc264 100644 --- a/B07_wf4_DesignDetail/openwebcad/package.json +++ b/B08_DesignDetail/openwebcad/package.json @@ -1,5 +1,5 @@ { - "name": "aislo-b07-cad", + "name": "aislo-b08-cad", "private": true, "version": "0.0.0", "type": "module", diff --git a/B07_wf4_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch b/B08_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch rename to B08_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch diff --git a/B07_wf4_DesignDetail/openwebcad/postcss.config.cjs b/B08_DesignDetail/openwebcad/postcss.config.cjs similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/postcss.config.cjs rename to B08_DesignDetail/openwebcad/postcss.config.cjs diff --git a/B07_wf4_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt b/B08_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt similarity index 96% rename from B07_wf4_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt rename to B08_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt index 005a3684..c38dc410 100644 --- a/B07_wf4_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt +++ b/B08_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt @@ -1,4 +1,4 @@ -Aislo B07 2D Drawing - Third-Party Notices +Aislo B08 2D Drawing - Third-Party Notices This application is based in part on OpenWebCAD. diff --git a/B07_wf4_DesignDetail/openwebcad/public/favicon.png b/B08_DesignDetail/openwebcad/public/favicon.png similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/public/favicon.png rename to B08_DesignDetail/openwebcad/public/favicon.png diff --git a/B07_wf4_DesignDetail/openwebcad/public/favicon.svg b/B08_DesignDetail/openwebcad/public/favicon.svg similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/public/favicon.svg rename to B08_DesignDetail/openwebcad/public/favicon.svg diff --git a/B07_wf4_DesignDetail/openwebcad/readme/demo.gif b/B08_DesignDetail/openwebcad/readme/demo.gif similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/readme/demo.gif rename to B08_DesignDetail/openwebcad/readme/demo.gif diff --git a/B07_wf4_DesignDetail/openwebcad/src/App.consts.ts b/B08_DesignDetail/openwebcad/src/App.consts.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/App.consts.ts rename to B08_DesignDetail/openwebcad/src/App.consts.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/App.css b/B08_DesignDetail/openwebcad/src/App.css similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/App.css rename to B08_DesignDetail/openwebcad/src/App.css diff --git a/B07_wf4_DesignDetail/openwebcad/src/App.tsx b/B08_DesignDetail/openwebcad/src/App.tsx similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/App.tsx rename to B08_DesignDetail/openwebcad/src/App.tsx diff --git a/B07_wf4_DesignDetail/openwebcad/src/App.types.ts b/B08_DesignDetail/openwebcad/src/App.types.ts similarity index 96% rename from B07_wf4_DesignDetail/openwebcad/src/App.types.ts rename to B08_DesignDetail/openwebcad/src/App.types.ts index 07a5c547..0cbb3e57 100644 --- a/B07_wf4_DesignDetail/openwebcad/src/App.types.ts +++ b/B08_DesignDetail/openwebcad/src/App.types.ts @@ -38,7 +38,7 @@ export enum HtmlEvent { DRAWING_CHANGED = 'DRAWING_CHANGED', } -/** 부모(B07 페이지)가 도면과 함께 넘기는 설계 컨텍스트 (수량 패널 표시용). */ +/** 부모(B08 페이지)가 도면과 함께 넘기는 설계 컨텍스트 (수량 패널 표시용). */ export interface DesignMeta { kind: 'cross' | 'longitudinal'; /** 패널 제목 (측점 라벨, 예: "2+0.0" 또는 "종단도 전체") */ diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/Button.tsx b/B08_DesignDetail/openwebcad/src/components/Button.tsx similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/Button.tsx rename to B08_DesignDetail/openwebcad/src/components/Button.tsx diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/DropdownButton.tsx b/B08_DesignDetail/openwebcad/src/components/DropdownButton.tsx similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/DropdownButton.tsx rename to B08_DesignDetail/openwebcad/src/components/DropdownButton.tsx diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/Icon/Icon.tsx b/B08_DesignDetail/openwebcad/src/components/Icon/Icon.tsx similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/Icon/Icon.tsx rename to B08_DesignDetail/openwebcad/src/components/Icon/Icon.tsx diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg b/B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg rename to B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg b/B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg rename to B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg b/B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg rename to B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg b/B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg rename to B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/LayerManager.tsx b/B08_DesignDetail/openwebcad/src/components/LayerManager.tsx similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/components/LayerManager.tsx rename to B08_DesignDetail/openwebcad/src/components/LayerManager.tsx diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/QuantityPanel.tsx b/B08_DesignDetail/openwebcad/src/components/QuantityPanel.tsx similarity index 97% rename from B07_wf4_DesignDetail/openwebcad/src/components/QuantityPanel.tsx rename to B08_DesignDetail/openwebcad/src/components/QuantityPanel.tsx index 7acd2e67..19f5b263 100644 --- a/B07_wf4_DesignDetail/openwebcad/src/components/QuantityPanel.tsx +++ b/B08_DesignDetail/openwebcad/src/components/QuantityPanel.tsx @@ -5,7 +5,7 @@ import { getDesignMeta } from '../state'; /** * 도면 내비게이션 바 (CAD 화면 하단 중심). - * 수량 산출표는 HTML 테이블 대신 도면 자체의 CAD 테이블 레이어(b07-cross-table)로 + * 수량 산출표는 HTML 테이블 대신 도면 자체의 CAD 테이블 레이어(b08-cross-table)로 * 렌더되므로, 여기서는 제목·측점정보·확정상태·이전/다음 이동만 담당한다. */ export const QuantityPanel: FC = () => { diff --git a/B07_wf4_DesignDetail/openwebcad/src/components/Toolbar.tsx b/B08_DesignDetail/openwebcad/src/components/Toolbar.tsx similarity index 99% rename from B07_wf4_DesignDetail/openwebcad/src/components/Toolbar.tsx rename to B08_DesignDetail/openwebcad/src/components/Toolbar.tsx index e10d1b97..59958023 100644 --- a/B07_wf4_DesignDetail/openwebcad/src/components/Toolbar.tsx +++ b/B08_DesignDetail/openwebcad/src/components/Toolbar.tsx @@ -225,7 +225,7 @@ export const Toolbar: FC = () => {
Aislo CAD - B07 상세 설계 + B08 상세 설계
diff --git a/B07_wf4_DesignDetail/openwebcad/src/drawControllers/DrawController.ts b/B08_DesignDetail/openwebcad/src/drawControllers/DrawController.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/drawControllers/DrawController.ts rename to B08_DesignDetail/openwebcad/src/drawControllers/DrawController.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts b/B08_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts rename to B08_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts b/B08_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts rename to B08_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts b/B08_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts rename to B08_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/ArcEntity.ts b/B08_DesignDetail/openwebcad/src/entities/ArcEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/ArcEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/ArcEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts b/B08_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/CircleEntity.ts b/B08_DesignDetail/openwebcad/src/entities/CircleEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/CircleEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/CircleEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/Entity.ts b/B08_DesignDetail/openwebcad/src/entities/Entity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/Entity.ts rename to B08_DesignDetail/openwebcad/src/entities/Entity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/ImageEntity.ts b/B08_DesignDetail/openwebcad/src/entities/ImageEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/ImageEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/ImageEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/LineEntity.test.ts b/B08_DesignDetail/openwebcad/src/entities/LineEntity.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/LineEntity.test.ts rename to B08_DesignDetail/openwebcad/src/entities/LineEntity.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/LineEntity.ts b/B08_DesignDetail/openwebcad/src/entities/LineEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/LineEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/LineEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts b/B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts rename to B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts b/B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/PointEntity.ts b/B08_DesignDetail/openwebcad/src/entities/PointEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/PointEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/PointEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts b/B08_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/RectangleEntity.ts b/B08_DesignDetail/openwebcad/src/entities/RectangleEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/RectangleEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/RectangleEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/entities/TextEntity.ts b/B08_DesignDetail/openwebcad/src/entities/TextEntity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/entities/TextEntity.ts rename to B08_DesignDetail/openwebcad/src/entities/TextEntity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts b/B08_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts rename to B08_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts b/B08_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts similarity index 96% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts rename to B08_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts index 61118822..60af8821 100644 --- a/B07_wf4_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts +++ b/B08_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts @@ -23,7 +23,7 @@ export function calculateAngleGuidesAndSnapPoints() { const screenScale = screenCanvasDrawController.getScreenScale(); const worldMouseLocation = screenCanvasDrawController.getWorldMouseLocation(); // 스냅 후보: 공간 인덱스로 마우스 주변만 조회 (전 엔티티 O(n²) 교차 계산 제거), - // 잠금 레이어(b07-frame 등 참조용)는 스냅 대상에서 제외한다. + // 잠금 레이어(b08-frame 등 참조용)는 스냅 대상에서 제외한다. const maxSnapDistance = SNAP_POINT_DISTANCE / screenScale; const entities = queryEntitiesNearPoint( worldMouseLocation.x, diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts b/B08_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts rename to B08_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/contain-rect.ts b/B08_DesignDetail/openwebcad/src/helpers/contain-rect.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/contain-rect.ts rename to B08_DesignDetail/openwebcad/src/helpers/contain-rect.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts b/B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts rename to B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts b/B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts rename to B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/distance-between-points.ts b/B08_DesignDetail/openwebcad/src/helpers/distance-between-points.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/distance-between-points.ts rename to B08_DesignDetail/openwebcad/src/helpers/distance-between-points.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/draw-functions.ts b/B08_DesignDetail/openwebcad/src/helpers/draw-functions.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/draw-functions.ts rename to B08_DesignDetail/openwebcad/src/helpers/draw-functions.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/draw.ts b/B08_DesignDetail/openwebcad/src/helpers/draw.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/draw.ts rename to B08_DesignDetail/openwebcad/src/helpers/draw.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts b/B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts rename to B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts b/B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts rename to B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts b/B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts rename to B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts b/B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts rename to B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts b/B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts rename to B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts b/B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts rename to B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts b/B08_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts b/B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts b/B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts b/B08_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts b/B08_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts b/B08_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-export-color.ts b/B08_DesignDetail/openwebcad/src/helpers/get-export-color.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-export-color.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-export-color.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts b/B08_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-new-layer.ts b/B08_DesignDetail/openwebcad/src/helpers/get-new-layer.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-new-layer.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-new-layer.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts b/B08_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts rename to B08_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/helpers.types.ts b/B08_DesignDetail/openwebcad/src/helpers/helpers.types.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/helpers.types.ts rename to B08_DesignDetail/openwebcad/src/helpers/helpers.types.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts b/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts rename to B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts b/B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts rename to B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts b/B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts rename to B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/is-length-equal.ts b/B08_DesignDetail/openwebcad/src/helpers/is-length-equal.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/is-length-equal.ts rename to B08_DesignDetail/openwebcad/src/helpers/is-length-equal.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/is-point-equal.ts b/B08_DesignDetail/openwebcad/src/helpers/is-point-equal.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/is-point-equal.ts rename to B08_DesignDetail/openwebcad/src/helpers/is-point-equal.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts b/B08_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts rename to B08_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts b/B08_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts rename to B08_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/map-number-range.ts b/B08_DesignDetail/openwebcad/src/helpers/map-number-range.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/map-number-range.ts rename to B08_DesignDetail/openwebcad/src/helpers/map-number-range.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/middle.ts b/B08_DesignDetail/openwebcad/src/helpers/middle.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/middle.ts rename to B08_DesignDetail/openwebcad/src/helpers/middle.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts b/B08_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts rename to B08_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts b/B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts rename to B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts b/B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts rename to B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/normalise-angle.ts b/B08_DesignDetail/openwebcad/src/helpers/normalise-angle.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/normalise-angle.ts rename to B08_DesignDetail/openwebcad/src/helpers/normalise-angle.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/paper-sizes.ts b/B08_DesignDetail/openwebcad/src/helpers/paper-sizes.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/paper-sizes.ts rename to B08_DesignDetail/openwebcad/src/helpers/paper-sizes.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts b/B08_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts rename to B08_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts b/B08_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts rename to B08_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/rotate-point.ts b/B08_DesignDetail/openwebcad/src/helpers/rotate-point.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/rotate-point.ts rename to B08_DesignDetail/openwebcad/src/helpers/rotate-point.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/scale-point.ts b/B08_DesignDetail/openwebcad/src/helpers/scale-point.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/scale-point.ts rename to B08_DesignDetail/openwebcad/src/helpers/scale-point.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/scene-cache.ts b/B08_DesignDetail/openwebcad/src/helpers/scene-cache.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/scene-cache.ts rename to B08_DesignDetail/openwebcad/src/helpers/scene-cache.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/scene-version.ts b/B08_DesignDetail/openwebcad/src/helpers/scene-version.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/scene-version.ts rename to B08_DesignDetail/openwebcad/src/helpers/scene-version.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts b/B08_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts rename to B08_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts b/B08_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts rename to B08_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/spatial-index.ts b/B08_DesignDetail/openwebcad/src/helpers/spatial-index.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/spatial-index.ts rename to B08_DesignDetail/openwebcad/src/helpers/spatial-index.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/times.ts b/B08_DesignDetail/openwebcad/src/helpers/times.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/times.ts rename to B08_DesignDetail/openwebcad/src/helpers/times.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts b/B08_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts rename to B08_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/undo-stack.ts b/B08_DesignDetail/openwebcad/src/helpers/undo-stack.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/undo-stack.ts rename to B08_DesignDetail/openwebcad/src/helpers/undo-stack.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/helpers/wrap-module.ts b/B08_DesignDetail/openwebcad/src/helpers/wrap-module.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/helpers/wrap-module.ts rename to B08_DesignDetail/openwebcad/src/helpers/wrap-module.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/inputController/input-controller.ts b/B08_DesignDetail/openwebcad/src/inputController/input-controller.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/inputController/input-controller.ts rename to B08_DesignDetail/openwebcad/src/inputController/input-controller.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts b/B08_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts similarity index 90% rename from B07_wf4_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts rename to B08_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts index 720d9007..32477ae5 100644 --- a/B07_wf4_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts +++ b/B08_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts @@ -16,14 +16,14 @@ import { setLayers, } from '../state.ts'; -export const AISLO_DRAWING_LOAD_MESSAGE = 'aislo:b07:load-drawing'; -export const AISLO_DRAWING_READY_MESSAGE = 'aislo:b07:drawing-ready'; -export const AISLO_DRAWING_LOADED_MESSAGE = 'aislo:b07:drawing-loaded'; -export const AISLO_DRAWING_ERROR_MESSAGE = 'aislo:b07:drawing-error'; -export const AISLO_DRAWING_CHANGED_MESSAGE = 'aislo:b07:drawing-changed'; -export const AISLO_DRAWING_SAVE_REQUEST_MESSAGE = 'aislo:b07:save-request'; -export const AISLO_DRAWING_SAVE_RESPONSE_MESSAGE = 'aislo:b07:save-response'; -export const AISLO_DRAWING_NAVIGATE_MESSAGE = 'aislo:b07:navigate'; +export const AISLO_DRAWING_LOAD_MESSAGE = 'aislo:b08:load-drawing'; +export const AISLO_DRAWING_READY_MESSAGE = 'aislo:b08:drawing-ready'; +export const AISLO_DRAWING_LOADED_MESSAGE = 'aislo:b08:drawing-loaded'; +export const AISLO_DRAWING_ERROR_MESSAGE = 'aislo:b08:drawing-error'; +export const AISLO_DRAWING_CHANGED_MESSAGE = 'aislo:b08:drawing-changed'; +export const AISLO_DRAWING_SAVE_REQUEST_MESSAGE = 'aislo:b08:save-request'; +export const AISLO_DRAWING_SAVE_RESPONSE_MESSAGE = 'aislo:b08:save-response'; +export const AISLO_DRAWING_NAVIGATE_MESSAGE = 'aislo:b08:navigate'; interface DrawingLoadMessage { type: typeof AISLO_DRAWING_LOAD_MESSAGE; @@ -95,7 +95,7 @@ function registerTextDoubleClickEdit() { } /** - * B07 parent page와 CAD 앱 사이의 same-origin JSON 경계다. + * B08 parent page와 CAD 앱 사이의 same-origin JSON 경계다. * DXF/DWG 파일이나 파서 객체는 이 경계를 통과하지 않는다. */ export function registerAisloDrawingBridge() { diff --git a/B07_wf4_DesignDetail/openwebcad/src/main.tsx b/B08_DesignDetail/openwebcad/src/main.tsx similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/main.tsx rename to B08_DesignDetail/openwebcad/src/main.tsx diff --git a/B07_wf4_DesignDetail/openwebcad/src/state.ts b/B08_DesignDetail/openwebcad/src/state.ts similarity index 99% rename from B07_wf4_DesignDetail/openwebcad/src/state.ts rename to B08_DesignDetail/openwebcad/src/state.ts index 3c3049d0..7518e54a 100644 --- a/B07_wf4_DesignDetail/openwebcad/src/state.ts +++ b/B08_DesignDetail/openwebcad/src/state.ts @@ -175,7 +175,7 @@ let snapEnabled = true; let gridEnabled = false; /** - * 부모(B07 페이지)에서 넘어온 설계 컨텍스트. 수량 산출 패널이 이 값을 읽어 + * 부모(B08 페이지)에서 넘어온 설계 컨텍스트. 수량 산출 패널이 이 값을 읽어 * 제목·측점정보·확정상태·수량표를 렌더한다. null이면 패널을 숨긴다. */ let designMeta: DesignMeta | null = null; diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools.ts b/B08_DesignDetail/openwebcad/src/tools.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools.ts rename to B08_DesignDetail/openwebcad/src/tools.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts b/B08_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts b/B08_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/align-left-tool.ts b/B08_DesignDetail/openwebcad/src/tools/align-left-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/align-left-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/align-left-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts b/B08_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/align-right-tool.ts b/B08_DesignDetail/openwebcad/src/tools/align-right-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/align-right-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/align-right-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts b/B08_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts rename to B08_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/align-top-tool.ts b/B08_DesignDetail/openwebcad/src/tools/align-top-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/align-top-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/align-top-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/array-tool.ts b/B08_DesignDetail/openwebcad/src/tools/array-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/array-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/array-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/circle-tool.ts b/B08_DesignDetail/openwebcad/src/tools/circle-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/circle-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/circle-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/copy-tool.ts b/B08_DesignDetail/openwebcad/src/tools/copy-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/copy-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/copy-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts b/B08_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts rename to B08_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts b/B08_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts rename to B08_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/eraser-tool.ts b/B08_DesignDetail/openwebcad/src/tools/eraser-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/eraser-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/eraser-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts b/B08_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts rename to B08_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/image-import-tool.ts b/B08_DesignDetail/openwebcad/src/tools/image-import-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/image-import-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/image-import-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/line-tool.ts b/B08_DesignDetail/openwebcad/src/tools/line-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/line-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/line-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/measurement-tool.ts b/B08_DesignDetail/openwebcad/src/tools/measurement-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/measurement-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/measurement-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts b/B08_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts rename to B08_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/move-tool.ts b/B08_DesignDetail/openwebcad/src/tools/move-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/move-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/move-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/pedit-tool.ts b/B08_DesignDetail/openwebcad/src/tools/pedit-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/pedit-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/pedit-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/rectangle-tool.ts b/B08_DesignDetail/openwebcad/src/tools/rectangle-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/rectangle-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/rectangle-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts b/B08_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts rename to B08_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/rotate-tool.ts b/B08_DesignDetail/openwebcad/src/tools/rotate-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/rotate-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/rotate-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts b/B08_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts rename to B08_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/scale-tool.ts b/B08_DesignDetail/openwebcad/src/tools/scale-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/scale-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/scale-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts b/B08_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts rename to B08_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/select-tool.ts b/B08_DesignDetail/openwebcad/src/tools/select-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/select-tool.ts rename to B08_DesignDetail/openwebcad/src/tools/select-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/tool.consts.ts b/B08_DesignDetail/openwebcad/src/tools/tool.consts.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/tool.consts.ts rename to B08_DesignDetail/openwebcad/src/tools/tool.consts.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/tools/tool.types.ts b/B08_DesignDetail/openwebcad/src/tools/tool.types.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/tools/tool.types.ts rename to B08_DesignDetail/openwebcad/src/tools/tool.types.ts diff --git a/B07_wf4_DesignDetail/openwebcad/src/vite-env.d.ts b/B08_DesignDetail/openwebcad/src/vite-env.d.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/src/vite-env.d.ts rename to B08_DesignDetail/openwebcad/src/vite-env.d.ts diff --git a/B07_wf4_DesignDetail/openwebcad/tailwind.config.js b/B08_DesignDetail/openwebcad/tailwind.config.js similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/tailwind.config.js rename to B08_DesignDetail/openwebcad/tailwind.config.js diff --git a/B07_wf4_DesignDetail/openwebcad/test/entities/circle/circle.recording.json b/B08_DesignDetail/openwebcad/test/entities/circle/circle.recording.json similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/entities/circle/circle.recording.json rename to B08_DesignDetail/openwebcad/test/entities/circle/circle.recording.json diff --git a/B07_wf4_DesignDetail/openwebcad/test/entities/circle/circle.test.ts b/B08_DesignDetail/openwebcad/test/entities/circle/circle.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/entities/circle/circle.test.ts rename to B08_DesignDetail/openwebcad/test/entities/circle/circle.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/entities/line/line.test.ts b/B08_DesignDetail/openwebcad/test/entities/line/line.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/entities/line/line.test.ts rename to B08_DesignDetail/openwebcad/test/entities/line/line.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts b/B08_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts rename to B08_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/helpers/click.ts b/B08_DesignDetail/openwebcad/test/helpers/click.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/helpers/click.ts rename to B08_DesignDetail/openwebcad/test/helpers/click.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/helpers/init-application.ts b/B08_DesignDetail/openwebcad/test/helpers/init-application.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/helpers/init-application.ts rename to B08_DesignDetail/openwebcad/test/helpers/init-application.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/helpers/replay-recording.ts b/B08_DesignDetail/openwebcad/test/helpers/replay-recording.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/helpers/replay-recording.ts rename to B08_DesignDetail/openwebcad/test/helpers/replay-recording.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts b/B08_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts rename to B08_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/helpers/set-active-tool.ts b/B08_DesignDetail/openwebcad/test/helpers/set-active-tool.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/helpers/set-active-tool.ts rename to B08_DesignDetail/openwebcad/test/helpers/set-active-tool.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/helpers/tests.consts.ts b/B08_DesignDetail/openwebcad/test/helpers/tests.consts.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/helpers/tests.consts.ts rename to B08_DesignDetail/openwebcad/test/helpers/tests.consts.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts b/B08_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts rename to B08_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf b/B08_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf rename to B08_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf b/B08_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf rename to B08_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf b/B08_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf rename to B08_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/line.dxf b/B08_DesignDetail/openwebcad/test/mocks/dxf/line.dxf similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/line.dxf rename to B08_DesignDetail/openwebcad/test/mocks/dxf/line.dxf diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf b/B08_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf rename to B08_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/floorplan.svg b/B08_DesignDetail/openwebcad/test/mocks/floorplan.svg similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/floorplan.svg rename to B08_DesignDetail/openwebcad/test/mocks/floorplan.svg diff --git a/B07_wf4_DesignDetail/openwebcad/test/mocks/test-svg-import.svg b/B08_DesignDetail/openwebcad/test/mocks/test-svg-import.svg similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/mocks/test-svg-import.svg rename to B08_DesignDetail/openwebcad/test/mocks/test-svg-import.svg diff --git a/B07_wf4_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json b/B08_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json rename to B08_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json diff --git a/B07_wf4_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts b/B08_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts rename to B08_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts diff --git a/B07_wf4_DesignDetail/openwebcad/tsconfig.app.json b/B08_DesignDetail/openwebcad/tsconfig.app.json similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/tsconfig.app.json rename to B08_DesignDetail/openwebcad/tsconfig.app.json diff --git a/B07_wf4_DesignDetail/openwebcad/tsconfig.json b/B08_DesignDetail/openwebcad/tsconfig.json similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/tsconfig.json rename to B08_DesignDetail/openwebcad/tsconfig.json diff --git a/B07_wf4_DesignDetail/openwebcad/tsconfig.node.json b/B08_DesignDetail/openwebcad/tsconfig.node.json similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/tsconfig.node.json rename to B08_DesignDetail/openwebcad/tsconfig.node.json diff --git a/B07_wf4_DesignDetail/openwebcad/vite.config.ts b/B08_DesignDetail/openwebcad/vite.config.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/vite.config.ts rename to B08_DesignDetail/openwebcad/vite.config.ts diff --git a/B07_wf4_DesignDetail/openwebcad/vitest.config.ts b/B08_DesignDetail/openwebcad/vitest.config.ts similarity index 100% rename from B07_wf4_DesignDetail/openwebcad/vitest.config.ts rename to B08_DesignDetail/openwebcad/vitest.config.ts diff --git a/common_util/common_util_mass_haul.ts b/common_util/common_util_mass_haul.ts index bbfbe85c..fe55a5fa 100644 --- a/common_util/common_util_mass_haul.ts +++ b/common_util/common_util_mass_haul.ts @@ -3,14 +3,14 @@ * 유토곡선(Mass Haul Diagram) 계산 엔진 — 순수 함수, DOM 의존 없음. * * 구간 토량을 평균단면법으로 만들고 토량환산계수로 기준을 통일해 누가토량을 누적한다. - * 결과는 B08 수량산출·B09 견적이 그대로 재사용할 수 있도록 계산과 렌더링을 분리해 + * 결과는 B07 수량산출·B09 견적이 그대로 재사용할 수 있도록 계산과 렌더링을 분리해 * 둔다(렌더러는 `common_util_mass_haul_view`). * * ── 계산 기준: 다짐상태 ────────────────────────────────────────────── * "운반거리의 산정 시에 모든 수량은 다짐상태로 환산하여 계산하고, 내역서에 적용하는 * 수량은 자연상태로 한다." (2021년도 국도건설공사 설계실무 요령 / 표준품셈 계열) * 유토곡선은 운반계획 도면이므로 다짐상태를 기준상태로 삼는다. 내역서용 자연상태 - * 수량은 `cut_natural_m3`로 함께 보존해 B08이 되돌려 쓸 수 있게 한다. + * 수량은 `cut_natural_m3`로 함께 보존해 B07이 되돌려 쓸 수 있게 한다. * * ── 두 기준(종단/횡단)을 함께 내는 이유 ────────────────────────────── * [임도의 설계 및 시설기준] 2.다.(3)(나)는 "시공계획고는 절토량과 성토량이 균형을 @@ -423,7 +423,7 @@ function longitudinalAreaSamples( /** * 측점별 설계 결과에서 유토곡선을 계산한다(횡단 기준·지반유형별 환산). - * 확정 저장과 B08 인계에 쓰는 **정식 곡선**이라 시그니처를 그대로 유지한다. + * 확정 저장과 B07 인계에 쓰는 **정식 곡선**이라 시그니처를 그대로 유지한다. */ export function computeMassHaul( crossSections: MassHaulSection[], @@ -461,7 +461,7 @@ export function computeMassHaulSeries( /** * 확정 시 DB(`longitudinal_sections.data.mass_haul`)에 넣을 직렬화 형태로 정리한다. - * 토량 분배(평형선)까지 냈으면 `haul_plan`으로 함께 실어 B08 수량·B09 견적이 되받게 한다. + * 토량 분배(평형선)까지 냈으면 `haul_plan`으로 함께 실어 B07 수량·B09 견적이 되받게 한다. */ export function massHaulPayload( result: MassHaulResult, @@ -490,7 +490,7 @@ export function massHaulPayload( chainage_m: round(point.chainage_m), net_volume_m3: round(point.net_volume_m3), cumulative_volume_m3: round(point.cumulative_volume_m3), - // 구간 절토 내역(자연상태) — B08 내역서가 EA/RR/BR로 되받는 단위. + // 구간 절토 내역(자연상태) — B07 내역서가 EA/RR/BR로 되받는 단위. cut_soil_m3: round(point.cut_soil_m3), cut_rock_m3: round(point.cut_rock_m3), cut_rr_m3: round(point.cut_rr_m3), diff --git a/common_util/common_util_mass_haul_settle.ts b/common_util/common_util_mass_haul_settle.ts index 59ef0485..f64ff46a 100644 --- a/common_util/common_util_mass_haul_settle.ts +++ b/common_util/common_util_mass_haul_settle.ts @@ -169,7 +169,7 @@ export function settleResiduals( return transfers; } -/** 확정 저장·B08 인계용 직렬화. 값은 소수 둘째 자리에서 끊는다. */ +/** 확정 저장·B07 인계용 직렬화. 값은 소수 둘째 자리에서 끊는다. */ export function haulPlanPayload(plan: HaulPlan): Record { const round = (value: number): number => Math.round(value * 100) / 100; return { @@ -179,7 +179,7 @@ export function haulPlanPayload(plan: HaulPlan): Record { hauled_m3: round(plan.hauled_m3), transferred_m3: round(plan.transferred_m3), fill_total_m3: round(plan.fill_total_m3), - // 떨어진 구간끼리의 장거리 운반 — B08 내역서가 별도 운반 항목으로 세운다. + // 떨어진 구간끼리의 장거리 운반 — B07 내역서가 별도 운반 항목으로 세운다. transfers: plan.transfers.map((transfer) => ({ index: transfer.index, from_m: round(transfer.from_m), @@ -198,7 +198,7 @@ export function haulPlanPayload(plan: HaulPlan): Record { base_m3: round(block.base_m3), volume_m3: round(block.volume_m3), direction: block.direction, - // 장비 띠 — B08 내역서는 이 단위로 운반 항목을 세운다. + // 장비 띠 — B07 내역서는 이 단위로 운반 항목을 세운다. bands: block.bands.map((band) => ({ index: band.index, equipment: band.equipment, diff --git a/common_util/common_util_storage.py b/common_util/common_util_storage.py index a95af11e..853956ba 100644 --- a/common_util/common_util_storage.py +++ b/common_util/common_util_storage.py @@ -12,8 +12,8 @@ PROJECT_STORAGE_LAYOUT_V2 = ( ("B05_Profile", "route"), ("B06_Section", "longitudinal"), ("B06_Section", "cross_sections"), - ("B07_wf4_DesignDetail", "structures"), - ("B08_wf5_Quantity", "quantities"), + ("B08_DesignDetail", "structures"), + ("B07_Quantity", "quantities"), ("B09_wf6_Estimation", "v1"), ) diff --git a/config/config_frontend.ts b/config/config_frontend.ts index c0de4ce4..a6695f00 100644 --- a/config/config_frontend.ts +++ b/config/config_frontend.ts @@ -87,8 +87,8 @@ export const ROUTES = { B04_PREPROCESS: "b04-preprocess", B05_PROFILE: "b05-profile", B06_SECTION: "b06-section", - B07_WF4_DESIGN_DETAIL: "b07-wf4-design-detail", - B08_WF5_QUANTITY: "b08-wf5-quantity", + B07_QUANTITY: "b07-quantity", + B08_DESIGN_DETAIL: "b08-design-detail", B09_WF6_ESTIMATION: "b09-wf6-estimation", B10_PAYMENT: "b10-payment", B11_STATUS: "b11-status", @@ -110,8 +110,8 @@ export const PROTECTED_ROUTES: readonly RoutePath[] = [ ROUTES.B04_PREPROCESS, ROUTES.B05_PROFILE, ROUTES.B06_SECTION, - ROUTES.B07_WF4_DESIGN_DETAIL, - ROUTES.B08_WF5_QUANTITY, + ROUTES.B07_QUANTITY, + ROUTES.B08_DESIGN_DETAIL, ROUTES.B09_WF6_ESTIMATION, ROUTES.B10_PAYMENT, ROUTES.B11_STATUS, diff --git a/config/config_system.py b/config/config_system.py index e9f8f027..f38cdaa7 100644 --- a/config/config_system.py +++ b/config/config_system.py @@ -454,7 +454,7 @@ STANDARD_ROCK_BOUNDARY_STEP_M = 0.1 # # 전부 위 5-4-1 STANDARD_CROSS_SECTION에서 파생한다(중복 정의 금지). # 지반유형 라벨은 3종(토사/리핑암/발파암)이나, 표준단면 기하는 토사/암반 2종 -# 프리셋만 존재한다(리핑암·발파암은 절토경사·측구 동일, 단가만 B08/B09에서 구분). +# 프리셋만 존재한다(리핑암·발파암은 절토경사·측구 동일, 단가만 B07/B09에서 구분). # ───────────────────────────────────────────────────────────────────────── _SCS_SOIL = STANDARD_CROSS_SECTION["soil"] # 노면폭(노견 포함) = 0.5 + 3.0 + 0.5 = 4.0m. env로만 개별 재정의 가능. @@ -690,8 +690,8 @@ PROJECT_STORAGE_STAGE_DIRS = frozenset( "B04_PreProcess", "B05_Profile", "B06_Section", - "B07_wf4_DesignDetail", - "B08_wf5_Quantity", + "B08_DesignDetail", + "B07_Quantity", "B09_wf6_Estimation", } ) diff --git a/db_management/001_create_schema.sql b/db_management/001_create_schema.sql index fccce094..c40b75f5 100644 --- a/db_management/001_create_schema.sql +++ b/db_management/001_create_schema.sql @@ -367,7 +367,7 @@ CREATE TABLE IF NOT EXISTS structures ( quantity INT, unit_price FLOAT, design_notes JSON, - structure_data_path VARCHAR(500), -- storage/.../B07_wf4_DesignDetail/structures/... + structure_data_path VARCHAR(500), -- storage/.../B08_DesignDetail/structures/... last_modified_by INT, -- FK는 later created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP @@ -389,7 +389,7 @@ CREATE TABLE IF NOT EXISTS quantity_items ( total_price FLOAT, -- quantity_actual × unit_price standard_reference VARCHAR(255), computed_at TIMESTAMP NULL DEFAULT NULL, - quantity_data_path VARCHAR(500), -- storage/.../B08_wf5_Quantity/quantities/... + quantity_data_path VARCHAR(500), -- storage/.../B07_Quantity/quantities/... data JSON -- formula, source, ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; diff --git a/main.py b/main.py index 562ff9a7..d48d1beb 100644 --- a/main.py +++ b/main.py @@ -40,7 +40,7 @@ from B06_Section.B06_Section_Router import router as b06_section_router from B06_Section.B06_Section_Router_Confirm import ( router as b06_section_confirm_router, ) -from B07_wf4_DesignDetail.B07_wf4_DesignDetail_Router import router as b07_design_router +from B08_DesignDetail.B08_DesignDetail_Router import router as b08_design_router from common_util.common_util_auth import require_company, verify_session from common_util.common_util_resource_monitor import sample_resources_loop from config.config_db import close_db_pool, get_db_pool, init_db_pool @@ -302,14 +302,14 @@ app.mount( ) logger.info(f"✓ 정적 파일 서빙 경로 등록: {STATIC_URL} → {STATIC_DIR}") -# B07 독립형 2D CAD 앱 — 내부 JSON 연동용 iframe -B07_CAD_DIST_DIR = str(Path(__file__).parent / "B07_wf4_DesignDetail" / "openwebcad" / "dist") +# B08 독립형 2D CAD 앱 — 내부 JSON 연동용 iframe +B08_CAD_DIST_DIR = str(Path(__file__).parent / "B08_DesignDetail" / "openwebcad" / "dist") app.mount( - "/b07-cad", - StaticFiles(directory=B07_CAD_DIST_DIR, html=True, check_dir=False), - name="b07-cad", + "/b08-cad", + StaticFiles(directory=B08_CAD_DIST_DIR, html=True, check_dir=False), + name="b08-cad", ) -logger.info(f"✓ B07 CAD 정적 서빙 경로 등록: /b07-cad → {B07_CAD_DIST_DIR}") +logger.info(f"✓ B08 CAD 정적 서빙 경로 등록: /b08-cad → {B08_CAD_DIST_DIR}") # ───────────────────────────────────────────────────────────────────────── # 기본 엔드포인트 @@ -358,7 +358,7 @@ app.include_router(tiles_router, dependencies=protected_with_company) app.include_router(b05_route_router, dependencies=protected_with_company) app.include_router(b06_section_router, dependencies=protected_with_company) app.include_router(b06_section_confirm_router, dependencies=protected_with_company) -app.include_router(b07_design_router, dependencies=protected_with_company) +app.include_router(b08_design_router, dependencies=protected_with_company) # ───────────────────────────────────────────────────────────────────────── diff --git a/package.json b/package.json index b5e485ef..e16baf58 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "type": "module", "scripts": { "dev": "node ./config/node_modules/vite/bin/vite.js --configLoader runner", - "build": "node ./config/node_modules/typescript/bin/tsc --noEmit && node ./config/node_modules/vite/bin/vite.js build --configLoader runner && npm run build:b07-cad", - "install:b07-cad": "npm --prefix B07_wf4_DesignDetail/openwebcad install", - "build:b07-cad": "npm run install:b07-cad && npm --prefix B07_wf4_DesignDetail/openwebcad run build", + "build": "node ./config/node_modules/typescript/bin/tsc --noEmit && node ./config/node_modules/vite/bin/vite.js build --configLoader runner && npm run build:b08-cad", + "install:b08-cad": "npm --prefix B08_DesignDetail/openwebcad install", + "build:b08-cad": "npm run install:b08-cad && npm --prefix B08_DesignDetail/openwebcad run build", "preview": "node ./config/node_modules/vite/bin/vite.js preview --configLoader runner", "typecheck": "node ./config/node_modules/typescript/bin/tsc --noEmit", "format": "node ./config/node_modules/prettier/bin/prettier.cjs --write \"../**/*.{ts,css,html}\"" diff --git a/ui_template/ui_template_locale_b2.ts b/ui_template/ui_template_locale_b2.ts index 862d3544..b7eeae2c 100644 --- a/ui_template/ui_template_locale_b2.ts +++ b/ui_template/ui_template_locale_b2.ts @@ -414,33 +414,33 @@ export const ui_locales_b2 = { "Standard cut-fill section schematic — shows where each value applies (not to scale).", ], - /* --- B07_wf4_DesignDetail 상세 설계 --- */ - B07_Design_Title: ["상세설계", "Detail Design"], - B07_Cad_Side_Pending: [ + /* --- B08_DesignDetail 상세 설계 --- */ + B08_Design_Title: ["상세설계", "Detail Design"], + B08_Cad_Side_Pending: [ "사이드 패널은 전달 데이터 확정 후 구성됩니다.", "Side panel will be configured after the upstream data spec is finalized.", ], - B07_Cad_Loading: ["도면을 불러오는 중...", "Loading drawing..."], - B07_Cad_Load_Failed: ["도면을 불러오지 못했습니다.", "Failed to load drawing."], - B07_Info_Ground_Title: ["지반정보", "Ground info"], - B07_Info_Plan_Title: ["계획정보", "Plan info"], - B07_Info_GroundType: ["지반유형", "Ground type"], - B07_Info_CutSide: ["절토측", "Cut side"], - B07_Info_DitchSide: ["측구위치", "Ditch side"], - B07_Info_DesignElevation: ["계획고", "Design elevation"], - B07_Info_CutSlope: ["절토경사", "Cut slope"], - B07_Info_FillSlope: ["성토경사", "Fill slope"], - B07_Info_RoadWidth: ["노면폭", "Road width"], - B07_Info_Ditch: ["측구규격", "Ditch spec"], - B07_Info_CutArea: ["절토 단면적", "Cut area"], - B07_Info_FillArea: ["성토 단면적", "Fill area"], - B07_Info_Provisional: ["잠정", "Provisional"], - B07_Info_Confirmed: ["확정", "Confirmed"], - B07_Info_NoDesign: ["지반·계획 지정 데이터가 없습니다.", "No ground/plan designation data."], - B07_Info_Station: ["측점", "Station"], + B08_Cad_Loading: ["도면을 불러오는 중...", "Loading drawing..."], + B08_Cad_Load_Failed: ["도면을 불러오지 못했습니다.", "Failed to load drawing."], + B08_Info_Ground_Title: ["지반정보", "Ground info"], + B08_Info_Plan_Title: ["계획정보", "Plan info"], + B08_Info_GroundType: ["지반유형", "Ground type"], + B08_Info_CutSide: ["절토측", "Cut side"], + B08_Info_DitchSide: ["측구위치", "Ditch side"], + B08_Info_DesignElevation: ["계획고", "Design elevation"], + B08_Info_CutSlope: ["절토경사", "Cut slope"], + B08_Info_FillSlope: ["성토경사", "Fill slope"], + B08_Info_RoadWidth: ["노면폭", "Road width"], + B08_Info_Ditch: ["측구규격", "Ditch spec"], + B08_Info_CutArea: ["절토 단면적", "Cut area"], + B08_Info_FillArea: ["성토 단면적", "Fill area"], + B08_Info_Provisional: ["잠정", "Provisional"], + B08_Info_Confirmed: ["확정", "Confirmed"], + B08_Info_NoDesign: ["지반·계획 지정 데이터가 없습니다.", "No ground/plan designation data."], + B08_Info_Station: ["측점", "Station"], - /* --- B08_wf5_Quantity 수량 산출 --- */ - B08_Quantity_Title: ["수량산출", "Quantity"], + /* --- B07_Quantity 수량 산출 --- */ + B07_Quantity_Title: ["수량산출", "Quantity"], /* --- B09_wf6_Estimation 견적·문서 --- */ B09_Estimation_Title: ["설계도서", "Design Docs"], diff --git a/ui_template/ui_template_overlay.css b/ui_template/ui_template_overlay.css index 661e7e21..ac5a52db 100644 --- a/ui_template/ui_template_overlay.css +++ b/ui_template/ui_template_overlay.css @@ -244,7 +244,7 @@ 안 보인다는 보고(2026-08-05). 본문 보조색을 섞어 어느 테마에서든 뚜렷하게. 45%는 아직 흐리다는 재보고(2026-08-06)로 보조색 비중을 75%로 올렸다 — 테마 변수 기반 혼합이라 라이트/다크 모두 자동으로 맞는다. 테두리 두께·형태도 여기서 통일해 - 자체 테두리가 없는 컨테이너(B07)도 클래스만 붙이면 같은 외곽선을 얻는다. */ + 자체 테두리가 없는 컨테이너(B08)도 클래스만 붙이면 같은 외곽선을 얻는다. */ .ui-sidebar-section { border-width: 1px; border-style: solid; diff --git a/ui_template/ui_template_theme.css b/ui_template/ui_template_theme.css index 03768d09..2a6bfbe7 100644 --- a/ui_template/ui_template_theme.css +++ b/ui_template/ui_template_theme.css @@ -352,7 +352,7 @@ } /* 일반 페이지의 가로·세로 스크롤바를 동일한 얇은 테마로 표시한다. - * B07 CAD iframe은 별도 문서이므로 이 전역 스타일의 영향을 받지 않는다. */ + * B08 CAD iframe은 별도 문서이므로 이 전역 스타일의 영향을 받지 않는다. */ * { scrollbar-color: var(--color-scrollbar-thumb) var(--color-scrollbar-track); scrollbar-width: thin; diff --git a/vite.config.ts b/vite.config.ts index 768e3958..545995b2 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -32,8 +32,8 @@ export default { target: "http://localhost:8000", changeOrigin: true, }, - // B07 독립형 CAD 앱 — FastAPI 정적 마운트로 위임 - "/b07-cad": { + // B08 독립형 CAD 앱 — FastAPI 정적 마운트로 위임 + "/b08-cad": { target: "http://localhost:8000", changeOrigin: true, },