From 6e195afb69e933d0f1be338d43f7e615fb415856 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 29 Aug 2026 16:16:46 +0900 Subject: [PATCH] =?UTF-8?q?feat(B07,B08):=20=EC=9B=8C=ED=81=AC=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=20=EC=88=9C=EC=84=9C=20=EA=B5=90=ED=99=98=20=E2=80=94?= =?UTF-8?q?=20=EC=83=81=EC=84=B8=EC=84=A4=EA=B3=84=EB=A5=BC=20=EC=88=98?= =?UTF-8?q?=EB=9F=89=EC=82=B0=EC=B6=9C=20=EC=95=9E=EC=9C=BC=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 횡단설계(B06) 다음을 상세설계 → 수량산출 → 설계도서 순으로 재배열하고, 폴더 번호가 흐름과 일치하도록 이름을 맞바꾼다. - B08_DesignDetail → B07_DesignDetail, B07_Quantity → B08_Quantity (파일 접두어·식별자·라우트·locale 키 전량 스왑) - STAGE_KEYS 4=DESIGN_DETAIL, 5=QUANTITY 스왑 + 라우터 stage 리터럴 교체 - CAD 마운트 /b08-cad → /b07-cad (main.py·vite proxy·iframe URL), openwebcad Toolbar 라벨 B07로 수정 후 재빌드 - 유지: openwebcad postMessage 프로토콜 aislo:b08:*·패키지명(내부 식별자) - 기존 프로젝트 storage 폴더 rename + project_manifest 갱신, DB project_workflow_stages stage_no 4↔5 행 스왑 완료 Co-Authored-By: Claude Fable 5 --- A00_Common/b_page_scaffold.ts | 4 +- A00_Common/b_workflow_nav.ts | 4 +- A00_Common/main.ts | 4 +- A00_Common/router.ts | 16 +-- B06_Section/B06_Section_Engine_Design.py | 2 +- B06_Section/B06_Section_Repository.py | 2 +- B06_Section/B06_Section_Router.py | 2 +- B06_Section/B06_Section_UI_Page.ts | 2 +- .../B07_DesignDetail_Api_Fetch.ts | 2 +- .../B07_DesignDetail_Engine_Cad.py | 2 +- .../B07_DesignDetail_Engine_Cad_Long.py | 6 +- .../B07_DesignDetail_Engine_Template.py | 4 +- .../B07_DesignDetail_Router.py | 34 +++--- .../B07_DesignDetail_Schema.py | 6 +- .../B07_DesignDetail_UI_Page.ts | 108 +++++++++--------- .../B07_DesignDetail_UI_Style.css | 76 ++++++------ .../openwebcad/.eslintrc.cjs | 0 .../openwebcad/.github/workflows/deploy.yml | 0 .../openwebcad/.gitignore | 0 .../openwebcad/Biomefile | 0 .../openwebcad/LICENSE.md | 0 .../openwebcad/README.md | 0 .../openwebcad/biome.json | 0 .../openwebcad/index.html | 0 .../openwebcad/package-lock.json | 0 .../openwebcad/package.json | 0 .../patches/@flatten-js+core+1.6.2.patch | 0 .../openwebcad/postcss.config.cjs | 0 .../public/THIRD_PARTY_LICENSES.txt | 0 .../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 | 0 .../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 | 0 .../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 | 0 .../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 | 0 .../openwebcad/src/main.tsx | 0 .../openwebcad/src/state.ts | 0 .../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 .../0_old_260726_codex.zip | Bin .../B08_Quantity_Router.py | 14 +-- .../B08_Quantity_UI_Page.ts | 32 +++--- common_util/common_util_mass_haul.ts | 8 +- common_util/common_util_mass_haul_settle.ts | 6 +- common_util/common_util_project_reset.py | 4 +- common_util/common_util_storage.py | 4 +- common_util/common_util_workflow_state.py | 4 +- config/config_frontend.ts | 8 +- config/config_system.py | 6 +- main.py | 20 ++-- package.json | 6 +- ui_template/ui_template_locale_b2.ts | 62 +++++----- vite.config.ts | 4 +- 199 files changed, 227 insertions(+), 227 deletions(-) rename B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts => B07_DesignDetail/B07_DesignDetail_Api_Fetch.ts (98%) rename B08_DesignDetail/B08_DesignDetail_Engine_Cad.py => B07_DesignDetail/B07_DesignDetail_Engine_Cad.py (99%) rename B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py => B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py (99%) rename B08_DesignDetail/B08_DesignDetail_Engine_Template.py => B07_DesignDetail/B07_DesignDetail_Engine_Template.py (97%) rename B08_DesignDetail/B08_DesignDetail_Router.py => B07_DesignDetail/B07_DesignDetail_Router.py (96%) rename B08_DesignDetail/B08_DesignDetail_Schema.py => B07_DesignDetail/B07_DesignDetail_Schema.py (91%) rename B08_DesignDetail/B08_DesignDetail_UI_Page.ts => B07_DesignDetail/B07_DesignDetail_UI_Page.ts (87%) rename B08_DesignDetail/B08_DesignDetail_UI_Style.css => B07_DesignDetail/B07_DesignDetail_UI_Style.css (79%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/.eslintrc.cjs (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/.github/workflows/deploy.yml (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/.gitignore (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/Biomefile (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/LICENSE.md (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/README.md (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/biome.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/index.html (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/package-lock.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/package.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/patches/@flatten-js+core+1.6.2.patch (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/postcss.config.cjs (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/public/THIRD_PARTY_LICENSES.txt (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/public/favicon.png (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/public/favicon.svg (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/readme/demo.gif (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/App.consts.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/App.css (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/App.tsx (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/App.types.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/Button.tsx (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/DropdownButton.tsx (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/Icon/Icon.tsx (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/Icon/custom-icons/measurement.svg (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/Icon/custom-icons/scale.svg (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/Icon/teenyicons-outline.jpg (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/Icon/teenyicons-solid.jpg (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/LayerManager.tsx (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/QuantityPanel.tsx (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/components/Toolbar.tsx (99%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/drawControllers/DrawController.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/drawControllers/screenCanvas.drawController.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/drawControllers/svg.drawController.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/ArcEntity.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/ArcEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/ArrowHeadEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/CircleEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/Entity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/ImageEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/LineEntity.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/LineEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/MeasurementEntity.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/MeasurementEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/PointEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/PolyLineEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/RectangleEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/entities/TextEntity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/box-to-polygon.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/contain-rect.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/contain-rect.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/distance-between-points.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/draw-functions.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/draw.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/find-closest-entity.mocks.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/find-closest-entity.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/find-closest-entity.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/find-neighboring-points-on-arc.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/find-neighboring-points-on-circle.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/find-neighboring-points-on-line.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-angle-guide-lines.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-angle-with-x-axis.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-angle-with-x-axis.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-closest-snap-point.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-draw-guides.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-export-color.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-intersection-points.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-new-layer.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/get-point-from-event.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/helpers.types.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/is-closed-polygon.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/is-closed-polygon.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/is-length-equal.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/is-point-equal.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/keyboard-handler.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/map-number-range.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/map-number-range.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/middle.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/mirror-angle-over-axis.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/mirror-point-over-axis.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/mirror-point-over-axis.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/normalise-angle.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/paper-sizes.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/polygon-to-segments.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/rgb-to-hex-color.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/rotate-point.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/scale-point.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/scene-cache.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/scene-version.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/sort-points-on-arc.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/sort-points-on-circle.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/spatial-index.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/times.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/track-hovered-snap-points.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/undo-stack.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/helpers/wrap-module.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/inputController/input-controller.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/integration/aislo-drawing-bridge.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/main.tsx (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/state.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/align-bottom-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/align-center-horizontal-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/align-left-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/align-middle-vertical-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/align-right-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/align-tool.helpers.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/align-top-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/array-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/circle-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/copy-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/eraser-tool.helpers.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/eraser-tool.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/eraser-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/image-import-tool.helpers.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/image-import-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/line-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/measurement-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/move-tool.helpers.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/move-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/pedit-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/rectangle-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/rotate-tool.helpers.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/rotate-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/scale-tool.helpers.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/scale-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/select-tool.helpers.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/select-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/tool.consts.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/tools/tool.types.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/src/vite-env.d.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/tailwind.config.js (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/entities/circle/circle.recording.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/entities/circle/circle.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/entities/line/line.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/entities/rectangle/rectangle.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/helpers/click.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/helpers/init-application.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/helpers/replay-recording.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/helpers/replay-recording.types.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/helpers/set-active-tool.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/helpers/tests.consts.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/dxf/circle.dxf (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/dxf/empty.dxf (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/dxf/line-and-circle.dxf (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/dxf/line.dxf (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/dxf/unsupported.dxf (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/floorplan.svg (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/mocks/test-svg-import.svg (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/tools/eraser/eraser.recording.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/test/tools/eraser/eraser.test.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/tsconfig.app.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/tsconfig.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/tsconfig.node.json (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/vite.config.ts (100%) rename {B08_DesignDetail => B07_DesignDetail}/openwebcad/vitest.config.ts (100%) rename {B07_Quantity => B08_Quantity}/0_old_260726_codex.zip (100%) rename B07_Quantity/B07_Quantity_Router.py => B08_Quantity/B08_Quantity_Router.py (72%) rename B07_Quantity/B07_Quantity_UI_Page.ts => B08_Quantity/B08_Quantity_UI_Page.ts (73%) diff --git a/A00_Common/b_page_scaffold.ts b/A00_Common/b_page_scaffold.ts index 2aac7ece..15c7d6bc 100644 --- a/A00_Common/b_page_scaffold.ts +++ b/A00_Common/b_page_scaffold.ts @@ -82,7 +82,7 @@ export interface PendingWorkflowOptions { steps: string[]; /** 현재 활성 단계 인덱스 */ activeStep: number; - /** 본문은 준비 중이지만 좌측 패널만 먼저 붙일 때 (B07 수량 확정 버튼 등) */ + /** 본문은 준비 중이지만 좌측 패널만 먼저 붙일 때 (B08 수량 확정 버튼 등) */ leftPanel?: HTMLElement; } @@ -126,8 +126,8 @@ export function workflowSteps(): string[] { L("WF_Step_Surface"), L("WF_Step_Route"), L("WF_Step_ProfileCross"), - L("WF_Step_Quantity"), L("WF_Step_DesignDetail"), + L("WF_Step_Quantity"), L("WF_Step_Estimation"), ]; } diff --git a/A00_Common/b_workflow_nav.ts b/A00_Common/b_workflow_nav.ts index 9f1eebb9..8f58d4bb 100644 --- a/A00_Common/b_workflow_nav.ts +++ b/A00_Common/b_workflow_nav.ts @@ -23,8 +23,8 @@ export const WORKFLOW_STEP_ROUTES: readonly RoutePath[] = [ ROUTES.B04_PREPROCESS, ROUTES.B05_PROFILE, ROUTES.B06_SECTION, - ROUTES.B07_QUANTITY, - ROUTES.B08_DESIGN_DETAIL, + ROUTES.B07_DESIGN_DETAIL, + ROUTES.B08_QUANTITY, ROUTES.B09_ESTIMATION, ]; diff --git a/A00_Common/main.ts b/A00_Common/main.ts index 87d8b4c3..8f218420 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_QUANTITY, - ROUTES.B08_DESIGN_DETAIL, + ROUTES.B07_DESIGN_DETAIL, + ROUTES.B08_QUANTITY, ROUTES.B09_ESTIMATION, ROUTES.B10_PAYMENT, ROUTES.B11_STATUS, diff --git a/A00_Common/router.ts b/A00_Common/router.ts index 9c694154..1adace4a 100644 --- a/A00_Common/router.ts +++ b/A00_Common/router.ts @@ -45,12 +45,12 @@ 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, - // B07_QUANTITY: 수량 본문은 재작성 예정(구 구현은 B07_Quantity/0_old_260726_codex.zip 백업). - // 지금은 셸 페이지 — 좌측 [확정]으로 stage 4를 닫고 B08 상세설계로 넘어간다. - [ROUTES.B07_QUANTITY]: async () => - (await import("../B07_Quantity/B07_Quantity_UI_Page")).renderB07Quantity, - [ROUTES.B08_DESIGN_DETAIL]: async () => - (await import("../B08_DesignDetail/B08_DesignDetail_UI_Page")).renderB08DesignDetail, + [ROUTES.B07_DESIGN_DETAIL]: async () => + (await import("../B07_DesignDetail/B07_DesignDetail_UI_Page")).renderB07DesignDetail, + // B08_QUANTITY: 수량 본문은 재작성 예정(구 구현은 B08_Quantity/0_old_260726_codex.zip 백업). + // 지금은 셸 페이지 — 좌측 [확정]으로 stage 5를 닫고 B09 설계도서로 넘어간다. + [ROUTES.B08_QUANTITY]: async () => + (await import("../B08_Quantity/B08_Quantity_UI_Page")).renderB08Quantity, [ROUTES.B09_ESTIMATION]: async () => (await import("../B09_Estimation/B09_Estimation_UI_Page")).renderB09Estimation, [ROUTES.B10_PAYMENT]: async () => @@ -111,8 +111,8 @@ export async function renderCurrentRoute(outlet: HTMLElement): Promise { ROUTES.B04_PREPROCESS, ROUTES.B05_PROFILE, ROUTES.B06_SECTION, - ROUTES.B07_QUANTITY, - ROUTES.B08_DESIGN_DETAIL, + ROUTES.B07_DESIGN_DETAIL, + ROUTES.B08_QUANTITY, ROUTES.B09_ESTIMATION, ROUTES.B10_PAYMENT, ROUTES.B11_STATUS, diff --git a/B06_Section/B06_Section_Engine_Design.py b/B06_Section/B06_Section_Engine_Design.py index fdfbc58d..1dca68b6 100644 --- a/B06_Section/B06_Section_Engine_Design.py +++ b/B06_Section/B06_Section_Engine_Design.py @@ -2,7 +2,7 @@ 지반유형(토사/리핑암/발파암)과 단면유형(좌절/우절/양절/양성)에 따라 표준횡단 설계선을 구성하고, 지반선과의 차이로 절·성토 단면적을 산출한다. B06에서 사용자가 -버튼을 누를 때 즉시 호출되며, 여기서 나온 값은 잠정치로 저장되고 B08 상세설계에서 +버튼을 누를 때 즉시 호출되며, 여기서 나온 값은 잠정치로 저장되고 B07 상세설계에서 확정치로 대체된다. 표준단면 기하는 config STANDARD_CROSS_SECTION(단일 진실 원천)을 읽고, B06 설정 diff --git a/B06_Section/B06_Section_Repository.py b/B06_Section/B06_Section_Repository.py index b25fc5d0..f5f175d9 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를 병합 저장한다. - B08 도면 확정(전체 설계 재계산 결과) 및 확정 해제(status 되돌림)에서 사용한다. + B07 도면 확정(전체 설계 재계산 결과) 및 확정 해제(status 되돌림)에서 사용한다. 도면 ID가 정수 m라 ROUND로 매칭한다. 갱신 여부를 반환한다. """ async with connection.cursor() as cursor: diff --git a/B06_Section/B06_Section_Router.py b/B06_Section/B06_Section_Router.py index c106628e..5c424a95 100644 --- a/B06_Section/B06_Section_Router.py +++ b/B06_Section/B06_Section_Router.py @@ -604,7 +604,7 @@ async def compute_cross_section_design( two_stage_slope=request.two_stage_slope, ditch_enabled=request.ditch_enabled, ) - # B06 지정 시점은 잠정치. B08 도면 확정 시 동일 엔진으로 재계산해 confirmed로 승격한다. + # B06 지정 시점은 잠정치. B07 도면 확정 시 동일 엔진으로 재계산해 confirmed로 승격한다. design["status"] = "provisional" # 법정 근거 문구 표기용 — 사용자가 포장을 바꿔도 제안 여부는 그대로 남긴다. design["pavement_suggested"] = pavement_suggested diff --git a/B06_Section/B06_Section_UI_Page.ts b/B06_Section/B06_Section_UI_Page.ts index 526fb411..e42942f1 100644 --- a/B06_Section/B06_Section_UI_Page.ts +++ b/B06_Section/B06_Section_UI_Page.ts @@ -94,7 +94,7 @@ export async function renderB06ProfileCross(root: HTMLElement): Promise { const DISPLAY_HALF_WIDTH_DEFAULT_M = 12; // 하단 액션 [종단 이동][임시저장][확정] — 종단 이동은 저장 없이 B05로 페이지 이동만, - // 확정은 임시저장과 같은 내용 저장 후 stage 2·3을 닫고 B07 수량으로 넘어간다 + // 확정은 임시저장과 같은 내용 저장 후 stage 2·3을 닫고 B07 상세설계로 넘어간다 // (2026-08-08 워크플로우 재정의). const goProfileButton = createButton({ label: L("B06_Profile_Btn_GoProfile"), diff --git a/B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts b/B07_DesignDetail/B07_DesignDetail_Api_Fetch.ts similarity index 98% rename from B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts rename to B07_DesignDetail/B07_DesignDetail_Api_Fetch.ts index 5ef526d0..42863231 100644 --- a/B08_DesignDetail/B08_DesignDetail_Api_Fetch.ts +++ b/B07_DesignDetail/B07_DesignDetail_Api_Fetch.ts @@ -1,4 +1,4 @@ -/* B08 상세 설계 도면 목록·단건 API 클라이언트. */ +/* B07 상세 설계 도면 목록·단건 API 클라이언트. */ import { API_BASE_URL, API_TIMEOUT_MS } from "@config/config_frontend"; diff --git a/B08_DesignDetail/B08_DesignDetail_Engine_Cad.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad.py similarity index 99% rename from B08_DesignDetail/B08_DesignDetail_Engine_Cad.py rename to B07_DesignDetail/B07_DesignDetail_Engine_Cad.py index 8fa354b4..708a31de 100644 --- a/B08_DesignDetail/B08_DesignDetail_Engine_Cad.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad.py @@ -1,4 +1,4 @@ -"""B08 CAD 도면 조립 엔진 — B06/B05 산출물을 openwebcad 엔티티로 직렬화한다. +"""B07 CAD 도면 조립 엔진 — B06/B05 산출물을 openwebcad 엔티티로 직렬화한다. 납품 도면 양식 복제: - 종단도: 30측점 N분할 + 하단 측점 테이블(곡선/측점/거리/추가거리/지반고/ diff --git a/B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py similarity index 99% rename from B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py rename to B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py index 523d2f4f..021e3a2b 100644 --- a/B08_DesignDetail/B08_DesignDetail_Engine_Cad_Long.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py @@ -1,4 +1,4 @@ -"""B08 종단도 CAD 조립 — 30측점 N분할 + 그래프 축·격자 + 하단 측점 테이블. +"""B07 종단도 CAD 조립 — 30측점 N분할 + 그래프 축·격자 + 하단 측점 테이블. 납품 양식: - 그래프 영역: 좌측 Y축(표고 눈금·라벨), 기준선(X축, 최저 표고에서 5m 이상 @@ -15,7 +15,7 @@ import math from typing import Any from uuid import uuid5 -from B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( +from B07_DesignDetail.B07_DesignDetail_Engine_Cad import ( _ENTITY_NS, DESIGN_COLOR, DESIGN_LAYER_ID, @@ -41,7 +41,7 @@ from B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( polyline_entity, station_no_label, ) -from B08_DesignDetail.B08_DesignDetail_Engine_Template import ( +from B07_DesignDetail.B07_DesignDetail_Engine_Template import ( entities_bbox, frame_entities, ) diff --git a/B08_DesignDetail/B08_DesignDetail_Engine_Template.py b/B07_DesignDetail/B07_DesignDetail_Engine_Template.py similarity index 97% rename from B08_DesignDetail/B08_DesignDetail_Engine_Template.py rename to B07_DesignDetail/B07_DesignDetail_Engine_Template.py index 152b0636..65a08a25 100644 --- a/B08_DesignDetail/B08_DesignDetail_Engine_Template.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Template.py @@ -1,4 +1,4 @@ -"""B08 도각 템플릿 병합 — openwebcad JSON 템플릿을 도면 콘텐츠 둘레에 배치한다. +"""B07 도각 템플릿 병합 — openwebcad JSON 템플릿을 도면 콘텐츠 둘레에 배치한다. resources/template_2dDrawing/의 사전 변환 템플릿(A1 도각 등)을 로드해, 도면 콘텐츠 bbox에 맞춰 균등 스케일·이동시킨 뒤 잠금 프레임 레이어 @@ -15,7 +15,7 @@ from pathlib import Path from typing import Any from uuid import uuid5 -from B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( +from B07_DesignDetail.B07_DesignDetail_Engine_Cad import ( _ENTITY_NS, FRAME_LAYER_ID, ) diff --git a/B08_DesignDetail/B08_DesignDetail_Router.py b/B07_DesignDetail/B07_DesignDetail_Router.py similarity index 96% rename from B08_DesignDetail/B08_DesignDetail_Router.py rename to B07_DesignDetail/B07_DesignDetail_Router.py index 3411637f..ebd1bde8 100644 --- a/B08_DesignDetail/B08_DesignDetail_Router.py +++ b/B07_DesignDetail/B07_DesignDetail_Router.py @@ -1,4 +1,4 @@ -"""B06 확정 종·횡단 산출물을 B08 CAD 도면으로 변환하는 라우터.""" +"""B06 확정 종·횡단 산출물을 B07 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 B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( +from B07_DesignDetail.B07_DesignDetail_Engine_Cad import ( DRAWING_FORMAT, QUANTITY_VALUE_KEYS, build_cross_drawing, @@ -28,11 +28,11 @@ from B08_DesignDetail.B08_DesignDetail_Engine_Cad import ( infer_station_interval, station_no_label, ) -from B08_DesignDetail.B08_DesignDetail_Engine_Cad_Long import ( +from B07_DesignDetail.B07_DesignDetail_Engine_Cad_Long import ( build_longitudinal_drawing, longitudinal_chunks, ) -from B08_DesignDetail.B08_DesignDetail_Schema import ( +from B07_DesignDetail.B07_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=["B08 Design Detail"]) +router = APIRouter(prefix="/api/projects", tags=["B07 Design Detail"]) _CROSS_ID = re.compile(r"^cross_(\d+)m$") _LONG_ID = re.compile(r"^longitudinal(?:_(\d+))?$") -_STAGE_DIR = "B08_DesignDetail" +_STAGE_DIR = "B07_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: - """B08 좌측 패널용 도면 메타데이터만 캐시한다.""" + """B07 좌측 패널용 도면 메타데이터만 캐시한다.""" 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("B08 도면 목록 조회 실패: project_id=%s", project_id) + logger.exception("B07 도면 목록 조회 실패: 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( - "B08 단건 도면 조회 실패: project_id=%s drawing_id=%s", project_id, drawing_id + "B07 단건 도면 조회 실패: 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)로 만든다. - B08 CAD에는 아직 편집 가능한 설계선이 없으므로, 저장된 지정값(지반유형·단면유형· + B07 CAD에는 아직 편집 가능한 설계선이 없으므로, 저장된 지정값(지반유형·단면유형· 측구위치)과 계획고로 동일 엔진을 재실행해 확정 시점 값을 고정한다. """ longitudinal = _read_json(longitudinal_path) @@ -505,7 +505,7 @@ async def confirm_design_drawing( ) except (ValueError, KeyError, FileNotFoundError, OSError): logger.warning( - "B08 확정 단면적 재계산 실패 (도면 확정은 유지): drawing_id=%s", + "B07 확정 단면적 재계산 실패 (도면 확정은 유지): 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), 5) + await complete_stage(cursor, str(project_id), 4) else: - await start_stage(cursor, str(project_id), 5) + await start_stage(cursor, str(project_id), 4) 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("B08 도면 확정 실패: project_id=%s drawing_id=%s", project_id, drawing_id) + logger.exception("B07 도면 확정 실패: 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: - """확정 도면 편집 시 B08 및 이후 단계를 미확정 상태로 되돌린다.""" + """확정 도면 편집 시 B07 및 이후 단계를 미확정 상태로 되돌린다.""" 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), 5) + await start_stage(cursor, str(project_id), 4) 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( - "B08 도면 확정 해제 실패: project_id=%s drawing_id=%s", project_id, drawing_id + "B07 도면 확정 해제 실패: project_id=%s drawing_id=%s", project_id, drawing_id ) return JSONResponse( status_code=500, diff --git a/B08_DesignDetail/B08_DesignDetail_Schema.py b/B07_DesignDetail/B07_DesignDetail_Schema.py similarity index 91% rename from B08_DesignDetail/B08_DesignDetail_Schema.py rename to B07_DesignDetail/B07_DesignDetail_Schema.py index a0996a95..ccd69445 100644 --- a/B08_DesignDetail/B08_DesignDetail_Schema.py +++ b/B07_DesignDetail/B07_DesignDetail_Schema.py @@ -1,4 +1,4 @@ -"""B08 상세 설계 도면 목록·단건 응답 모델.""" +"""B07 상세 설계 도면 목록·단건 응답 모델.""" from typing import Any, Literal @@ -16,7 +16,7 @@ class DesignDrawingItem(BaseModel): class DesignDrawingListResponse(BaseModel): - """B08 진입 시 캐시할 경량 도면 목록.""" + """B07 진입 시 캐시할 경량 도면 목록.""" status: str = "success" project_id: str @@ -50,7 +50,7 @@ class DesignDrawingConfirmRequest(BaseModel): class DesignDrawingConfirmResponse(BaseModel): - """도면별 확정 및 B08 전체 완료 상태.""" + """도면별 확정 및 B07 전체 완료 상태.""" status: str = "success" project_id: str diff --git a/B08_DesignDetail/B08_DesignDetail_UI_Page.ts b/B07_DesignDetail/B07_DesignDetail_UI_Page.ts similarity index 87% rename from B08_DesignDetail/B08_DesignDetail_UI_Page.ts rename to B07_DesignDetail/B07_DesignDetail_UI_Page.ts index aea0f7e7..fdf0adf8 100644 --- a/B08_DesignDetail/B08_DesignDetail_UI_Page.ts +++ b/B07_DesignDetail/B07_DesignDetail_UI_Page.ts @@ -1,16 +1,16 @@ /* ============================================================================= - * B08_DesignDetail_UI_Page.ts + * B07_DesignDetail_UI_Page.ts * 로그인 후 07: 4차 워크플로우 (상세 설계) — 독립형 2D CAD 임베드 * - * B08_DesignDetail/openwebcad를 프로젝트 소유 B08 CAD 앱으로 빌드하여 - * /b08-cad 경로로 서빙한다. 업무 도면은 추후 same-origin postMessage로 + * B07_DesignDetail/openwebcad를 프로젝트 소유 B07 CAD 앱으로 빌드하여 + * /b07-cad 경로로 서빙한다. 업무 도면은 추후 same-origin postMessage로 * JSON만 전달하며 DXF/DWG 파싱은 이 브라우저 앱에서 수행하지 않는다. * * 레이아웃 (사용자 지시): 사이드 패널 빈 상태 유지 + 상세 영역 CAD 화면. * 제약 준수 (frontend.md §2 3단 레이아웃): createWorkflowLayout 재사용. * ========================================================================== */ -import "./B08_DesignDetail_UI_Style.css"; +import "./B07_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 "./B08_DesignDetail_Api_Fetch"; +} from "./B07_DesignDetail_Api_Fetch"; /** CAD 앱 수량 패널로 넘기는 설계 컨텍스트 (openwebcad DesignMeta와 동일 형식). */ interface DesignMeta { @@ -57,8 +57,8 @@ interface SaveResult { quantityTable: QuantityTable | null; } -/** B08 독립형 CAD 정적 경로 (main.py 마운트, dev는 vite proxy 위임) */ -const B08_CAD_APP_URL = "/b08-cad/index.html"; +/** B07 독립형 CAD 정적 경로 (main.py 마운트, dev는 vite proxy 위임) */ +const B07_CAD_APP_URL = "/b07-cad/index.html"; /** locale 헬퍼 */ function L(key: keyof typeof ui_locales): string { @@ -112,9 +112,9 @@ function buildDrawingSidePanel( errorMessage?: string, ): HTMLDivElement { const panel = document.createElement("div"); - panel.className = "b08-drawing-list"; + panel.className = "b07-drawing-list"; const heading = document.createElement("div"); - heading.className = "b08-drawing-list__heading"; + heading.className = "b07-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 = "b08-drawing-list__empty"; + empty.className = "b07-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 = "b08-drawing-group ui-collapsible ui-sidebar-section"; + section.className = "b07-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 = "b08-drawing-button"; + button.className = "b07-drawing-button"; button.dataset.drawingId = drawing.id; button.dataset.confirmed = String(drawing.confirmed); const name = document.createElement("span"); - name.className = "b08-drawing-button__name"; + name.className = "b07-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 = "b08-info__row"; + row.className = "b07-info__row"; const key = document.createElement("span"); - key.className = "b08-info__key"; + key.className = "b07-info__key"; key.textContent = label; const val = document.createElement("span"); - val.className = "b08-info__val"; + val.className = "b07-info__val"; val.textContent = value; row.append(key, val); return row; } -/** 선택 횡단도의 지반정보/계획정보를 2분할로 렌더한다 (잠정치, B08 확정 시 재계산). */ +/** 선택 횡단도의 지반정보/계획정보를 2분할로 렌더한다 (잠정치, B07 확정 시 재계산). */ function buildDesignInfoPanel(title: string, design: CrossDesignInfo | null): HTMLElement { const panel = document.createElement("div"); - panel.className = "b08-info"; + panel.className = "b07-info"; const heading = document.createElement("div"); - heading.className = "b08-info__heading"; + heading.className = "b07-info__heading"; const stationName = document.createElement("strong"); - stationName.textContent = `${L("B08_Info_Station")} ${title}`; + stationName.textContent = `${L("B07_Info_Station")} ${title}`; const confirmed = design?.status === "confirmed"; const badge = document.createElement("span"); - badge.className = `b08-info__badge${confirmed ? " b08-info__badge--confirmed" : ""}`; - badge.textContent = confirmed ? L("B08_Info_Confirmed") : L("B08_Info_Provisional"); + badge.className = `b07-info__badge${confirmed ? " b07-info__badge--confirmed" : ""}`; + badge.textContent = confirmed ? L("B07_Info_Confirmed") : L("B07_Info_Provisional"); heading.append(stationName, badge); panel.append(heading); if (!design) { const empty = document.createElement("p"); - empty.className = "b08-info__empty"; - empty.textContent = L("B08_Info_NoDesign"); + empty.className = "b07-info__empty"; + empty.textContent = L("B07_Info_NoDesign"); panel.append(empty); return panel; } const ground = document.createElement("section"); - ground.className = "b08-info__block"; + ground.className = "b07-info__block"; const groundTitle = document.createElement("h4"); - groundTitle.textContent = L("B08_Info_Ground_Title"); + groundTitle.textContent = L("B07_Info_Ground_Title"); ground.append( groundTitle, - 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_GroundType"), L(GROUND_TYPE_LABEL[design.ground_type])), + infoRow(L("B07_Info_CutSide"), cutSideLabel(design.section_mode)), infoRow( - L("B08_Info_DitchSide"), + L("B07_Info_DitchSide"), design.ditch_side === "left" ? L("B06_Design_Ditch_Left") : L("B06_Design_Ditch_Right"), ), ); const plan = document.createElement("section"); - plan.className = "b08-info__block"; + plan.className = "b07-info__block"; const planTitle = document.createElement("h4"); - planTitle.textContent = L("B08_Info_Plan_Title"); + planTitle.textContent = L("B07_Info_Plan_Title"); plan.append( planTitle, - 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)}㎡`), + 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)}㎡`), ); panel.append(ground, plan); @@ -261,7 +261,7 @@ function buildDesignInfoPanel(title: string, design: CrossDesignInfo | null): HT /* ----------------------------------------------------------------------------- * 페이지 진입점 * -------------------------------------------------------------------------- */ -export async function renderB08DesignDetail(root: HTMLElement): Promise { +export async function renderB07DesignDetail(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 renderB08DesignDetail(root: HTMLElement): Promise { } const cadHost = document.createElement("div"); - cadHost.className = "b08-cad-host"; + cadHost.className = "b07-cad-host"; const frame = document.createElement("iframe"); - frame.className = "b08-cad-frame"; - frame.src = B08_CAD_APP_URL; - frame.title = L("B08_Design_Title"); + frame.className = "b07-cad-frame"; + frame.src = B07_CAD_APP_URL; + frame.title = L("B07_Design_Title"); const license = document.createElement("a"); - license.className = "b08-cad-license"; - license.href = "/b08-cad/THIRD_PARTY_LICENSES.txt"; + license.className = "b07-cad-license"; + license.href = "/b07-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 renderB08DesignDetail(root: HTMLElement): Promise { let resolveSave: ((payload: SaveResult) => void) | undefined; let drawingListEl: HTMLElement | undefined; const infoPanelHost = document.createElement("div"); - infoPanelHost.className = "b08-info-host"; + infoPanelHost.className = "b07-info-host"; const updateInfoPanel = (drawing: DesignDrawingItem, response: DesignDrawingResponse): void => { if (drawing.kind !== "cross") { @@ -334,11 +334,11 @@ export async function renderB08DesignDetail(root: HTMLElement): Promise { const findButton = (drawingId: string) => drawingListEl?.querySelector( - `.b08-drawing-button[data-drawing-id="${drawingId}"]`, + `.b07-drawing-button[data-drawing-id="${drawingId}"]`, ) ?? undefined; const highlightActive = (drawingId: string) => { - drawingListEl?.querySelectorAll(".b08-drawing-button").forEach((item) => { + drawingListEl?.querySelectorAll(".b07-drawing-button").forEach((item) => { item.dataset.active = String(item.dataset.drawingId === drawingId); }); }; @@ -442,7 +442,7 @@ export async function renderB08DesignDetail(root: HTMLElement): Promise { showToast("현재 도면을 확정하고 저장했습니다.", "success"); if (result.all_confirmed) { allDrawingsConfirmed = true; - goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[6]); + goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[5]); } } catch (error) { showToast( @@ -511,16 +511,16 @@ export async function renderB08DesignDetail(root: HTMLElement): Promise { drawingListEl = drawingPanel; const confirmActions = document.createElement("div"); // 하단 고정은 공용 ui-sidebar-actions로 통일 — 사이드 본문이 [스크롤 영역][액션 줄]로 - // 쪼개지고 액션 줄은 스크롤 밖에 남는다(2026-08-18 사용자 지시, B04~B08 공통). - confirmActions.className = "b08-drawing-actions ui-sidebar-actions"; + // 쪼개지고 액션 줄은 스크롤 밖에 남는다(2026-08-18 사용자 지시, B04~B07 공통). + confirmActions.className = "b07-drawing-actions ui-sidebar-actions"; confirmActions.append(confirmButton); drawingPanel.append(infoPanelHost, confirmActions); const layout = createWorkflowLayout({ - title: L("B08_Design_Title"), + title: L("B07_Design_Title"), steps: workflowSteps(), - activeStep: 5, + activeStep: 4, leftPanel: drawingPanel, mainContent: cadHost, stages: workflowState?.stages, @@ -535,7 +535,7 @@ export async function renderB08DesignDetail(root: HTMLElement): Promise { goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[stepIndex]); }, }); - layout.root.classList.add("b08-design-layout"); + layout.root.classList.add("b07-design-layout"); root.replaceChildren(layout.root); // 페이지 진입 시 첫 도면(종단도)을 자동 선택 — 빈 CAD 화면 방지. diff --git a/B08_DesignDetail/B08_DesignDetail_UI_Style.css b/B07_DesignDetail/B07_DesignDetail_UI_Style.css similarity index 79% rename from B08_DesignDetail/B08_DesignDetail_UI_Style.css rename to B07_DesignDetail/B07_DesignDetail_UI_Style.css index 215a44a9..a5d673a3 100644 --- a/B08_DesignDetail/B08_DesignDetail_UI_Style.css +++ b/B07_DesignDetail/B07_DesignDetail_UI_Style.css @@ -1,23 +1,23 @@ /* ============================================================================= - * B08_DesignDetail_UI_Style.css + * B07_DesignDetail_UI_Style.css * 상세 설계(독립형 2D CAD) 화면 스타일 — theme.css 변수만 사용 * ========================================================================== */ /* 워크플로우 레이아웃 높이 (B06 패턴 준수) */ -.b08-design-layout { +.b07-design-layout { height: calc(100vh - var(--spacing-64)); height: calc(100dvh - var(--spacing-64)); min-height: 0; } -.b08-design-layout .ui-workflow-layout__body, -.b08-design-layout .ui-workflow-layout__main { +.b07-design-layout .ui-workflow-layout__body, +.b07-design-layout .ui-workflow-layout__main { height: 100%; min-height: 0; } /* B06 확정 산출물 도면 목록 */ -.b08-drawing-list { +.b07-drawing-list { display: flex; flex-direction: column; gap: var(--spacing-12); @@ -26,7 +26,7 @@ overflow-y: auto; } -.b08-drawing-list__heading { +.b07-drawing-list__heading { display: flex; align-items: center; justify-content: space-between; @@ -34,13 +34,13 @@ border-bottom: 1px solid var(--color-border); } -.b08-drawing-list__heading span, -.b08-drawing-list__empty { +.b07-drawing-list__heading span, +.b07-drawing-list__empty { color: var(--color-text-muted); font-size: var(--text-body-sm); } -.b08-drawing-group { +.b07-drawing-group { display: flex; flex-direction: column; gap: var(--spacing-4); @@ -50,13 +50,13 @@ } /* 횡단도는 2열 배치 */ -.b08-drawing-group[data-kind="cross"] { +.b07-drawing-group[data-kind="cross"] { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-4); } -.b08-drawing-group h3 { +.b07-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 @@ } /* 그리드 제목은 두 열을 가로지른다 */ -.b08-drawing-group[data-kind="cross"] h3 { +.b07-drawing-group[data-kind="cross"] h3 { grid-column: 1 / -1; } -.b08-drawing-button { +.b07-drawing-button { display: flex; align-items: center; justify-content: center; @@ -86,45 +86,45 @@ text-align: center; } -.b08-drawing-button__name { +.b07-drawing-button__name { overflow: hidden; font-size: var(--text-body-sm); white-space: nowrap; text-overflow: ellipsis; } -.b08-drawing-button:hover, -.b08-drawing-button[data-active="true"] { +.b07-drawing-button:hover, +.b07-drawing-button[data-active="true"] { border-color: var(--color-border); background: var(--color-mist-violet); } -.b08-drawing-button[data-active="true"] { +.b07-drawing-button[data-active="true"] { color: var(--color-primary); } /* 확정: 좌측 띠 + 측점 글자색을 함께 성공색으로 반영 */ -.b08-drawing-button[data-confirmed="true"] { +.b07-drawing-button[data-confirmed="true"] { border-color: color-mix(in srgb, var(--color-success) 35%, var(--color-border)); border-left-color: var(--color-success); } -.b08-drawing-button[data-confirmed="true"] .b08-drawing-button__name { +.b07-drawing-button[data-confirmed="true"] .b07-drawing-button__name { color: var(--color-success); } /* 하단 고정·배경·상단 구분선은 공용 ui-sidebar-actions가 맡는다(2026-08-18 통합). - 여기서는 B08 고유 여백만 남긴다. */ -.b08-drawing-actions { + 여기서는 B07 고유 여백만 남긴다. */ +.b07-drawing-actions { padding-top: var(--spacing-12); } -.b08-drawing-actions > button { +.b07-drawing-actions > button { width: 100%; } /* CAD 뷰어 호스트 (상세 페이지 영역) */ -.b08-cad-host { +.b07-cad-host { position: relative; width: 100%; height: 100%; @@ -134,8 +134,8 @@ background-color: var(--color-surface); } -/* B08 독립형 CAD 앱 임베드 */ -.b08-cad-frame { +/* B07 독립형 CAD 앱 임베드 */ +.b07-cad-frame { position: absolute; inset: 0; width: 100%; @@ -143,7 +143,7 @@ border: 0; } -.b08-cad-license { +.b07-cad-license { position: absolute; z-index: 2; right: 10px; @@ -154,17 +154,17 @@ text-decoration: none; } -.b08-cad-license:hover { +.b07-cad-license:hover { color: var(--color-text-muted); text-decoration: underline; } /* 선택 횡단도의 지반정보/계획정보 (잠정치) */ -.b08-info-host:empty { +.b07-info-host:empty { display: none; } -.b08-info { +.b07-info { margin-top: var(--spacing-16); padding-top: var(--spacing-16); border-top: 1px solid var(--color-border); @@ -173,14 +173,14 @@ gap: var(--spacing-8); } -.b08-info__heading { +.b07-info__heading { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); } -.b08-info__badge { +.b07-info__badge { padding: 1px 6px; font-size: 10px; color: var(--color-primary); @@ -188,40 +188,40 @@ border-radius: var(--radius-buttons); } -.b08-info__badge--confirmed { +.b07-info__badge--confirmed { color: var(--color-surface); background: var(--color-success); } -.b08-info__block { +.b07-info__block { display: flex; flex-direction: column; gap: 2px; } -.b08-info__block h4 { +.b07-info__block h4 { margin: var(--spacing-8) 0 2px; font-size: 0.78rem; color: var(--color-text-muted); } -.b08-info__row { +.b07-info__row { display: flex; justify-content: space-between; gap: var(--spacing-8); font-size: 0.76rem; } -.b08-info__key { +.b07-info__key { color: var(--color-text-muted); } -.b08-info__val { +.b07-info__val { color: var(--color-text); font-variant-numeric: tabular-nums; } -.b08-info__empty { +.b07-info__empty { font-size: 0.76rem; color: var(--color-text-muted); } diff --git a/B08_DesignDetail/openwebcad/.eslintrc.cjs b/B07_DesignDetail/openwebcad/.eslintrc.cjs similarity index 100% rename from B08_DesignDetail/openwebcad/.eslintrc.cjs rename to B07_DesignDetail/openwebcad/.eslintrc.cjs diff --git a/B08_DesignDetail/openwebcad/.github/workflows/deploy.yml b/B07_DesignDetail/openwebcad/.github/workflows/deploy.yml similarity index 100% rename from B08_DesignDetail/openwebcad/.github/workflows/deploy.yml rename to B07_DesignDetail/openwebcad/.github/workflows/deploy.yml diff --git a/B08_DesignDetail/openwebcad/.gitignore b/B07_DesignDetail/openwebcad/.gitignore similarity index 100% rename from B08_DesignDetail/openwebcad/.gitignore rename to B07_DesignDetail/openwebcad/.gitignore diff --git a/B08_DesignDetail/openwebcad/Biomefile b/B07_DesignDetail/openwebcad/Biomefile similarity index 100% rename from B08_DesignDetail/openwebcad/Biomefile rename to B07_DesignDetail/openwebcad/Biomefile diff --git a/B08_DesignDetail/openwebcad/LICENSE.md b/B07_DesignDetail/openwebcad/LICENSE.md similarity index 100% rename from B08_DesignDetail/openwebcad/LICENSE.md rename to B07_DesignDetail/openwebcad/LICENSE.md diff --git a/B08_DesignDetail/openwebcad/README.md b/B07_DesignDetail/openwebcad/README.md similarity index 100% rename from B08_DesignDetail/openwebcad/README.md rename to B07_DesignDetail/openwebcad/README.md diff --git a/B08_DesignDetail/openwebcad/biome.json b/B07_DesignDetail/openwebcad/biome.json similarity index 100% rename from B08_DesignDetail/openwebcad/biome.json rename to B07_DesignDetail/openwebcad/biome.json diff --git a/B08_DesignDetail/openwebcad/index.html b/B07_DesignDetail/openwebcad/index.html similarity index 100% rename from B08_DesignDetail/openwebcad/index.html rename to B07_DesignDetail/openwebcad/index.html diff --git a/B08_DesignDetail/openwebcad/package-lock.json b/B07_DesignDetail/openwebcad/package-lock.json similarity index 100% rename from B08_DesignDetail/openwebcad/package-lock.json rename to B07_DesignDetail/openwebcad/package-lock.json diff --git a/B08_DesignDetail/openwebcad/package.json b/B07_DesignDetail/openwebcad/package.json similarity index 100% rename from B08_DesignDetail/openwebcad/package.json rename to B07_DesignDetail/openwebcad/package.json diff --git a/B08_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch b/B07_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch similarity index 100% rename from B08_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch rename to B07_DesignDetail/openwebcad/patches/@flatten-js+core+1.6.2.patch diff --git a/B08_DesignDetail/openwebcad/postcss.config.cjs b/B07_DesignDetail/openwebcad/postcss.config.cjs similarity index 100% rename from B08_DesignDetail/openwebcad/postcss.config.cjs rename to B07_DesignDetail/openwebcad/postcss.config.cjs diff --git a/B08_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt b/B07_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt similarity index 100% rename from B08_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt rename to B07_DesignDetail/openwebcad/public/THIRD_PARTY_LICENSES.txt diff --git a/B08_DesignDetail/openwebcad/public/favicon.png b/B07_DesignDetail/openwebcad/public/favicon.png similarity index 100% rename from B08_DesignDetail/openwebcad/public/favicon.png rename to B07_DesignDetail/openwebcad/public/favicon.png diff --git a/B08_DesignDetail/openwebcad/public/favicon.svg b/B07_DesignDetail/openwebcad/public/favicon.svg similarity index 100% rename from B08_DesignDetail/openwebcad/public/favicon.svg rename to B07_DesignDetail/openwebcad/public/favicon.svg diff --git a/B08_DesignDetail/openwebcad/readme/demo.gif b/B07_DesignDetail/openwebcad/readme/demo.gif similarity index 100% rename from B08_DesignDetail/openwebcad/readme/demo.gif rename to B07_DesignDetail/openwebcad/readme/demo.gif diff --git a/B08_DesignDetail/openwebcad/src/App.consts.ts b/B07_DesignDetail/openwebcad/src/App.consts.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/App.consts.ts rename to B07_DesignDetail/openwebcad/src/App.consts.ts diff --git a/B08_DesignDetail/openwebcad/src/App.css b/B07_DesignDetail/openwebcad/src/App.css similarity index 100% rename from B08_DesignDetail/openwebcad/src/App.css rename to B07_DesignDetail/openwebcad/src/App.css diff --git a/B08_DesignDetail/openwebcad/src/App.tsx b/B07_DesignDetail/openwebcad/src/App.tsx similarity index 100% rename from B08_DesignDetail/openwebcad/src/App.tsx rename to B07_DesignDetail/openwebcad/src/App.tsx diff --git a/B08_DesignDetail/openwebcad/src/App.types.ts b/B07_DesignDetail/openwebcad/src/App.types.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/App.types.ts rename to B07_DesignDetail/openwebcad/src/App.types.ts diff --git a/B08_DesignDetail/openwebcad/src/components/Button.tsx b/B07_DesignDetail/openwebcad/src/components/Button.tsx similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/Button.tsx rename to B07_DesignDetail/openwebcad/src/components/Button.tsx diff --git a/B08_DesignDetail/openwebcad/src/components/DropdownButton.tsx b/B07_DesignDetail/openwebcad/src/components/DropdownButton.tsx similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/DropdownButton.tsx rename to B07_DesignDetail/openwebcad/src/components/DropdownButton.tsx diff --git a/B08_DesignDetail/openwebcad/src/components/Icon/Icon.tsx b/B07_DesignDetail/openwebcad/src/components/Icon/Icon.tsx similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/Icon/Icon.tsx rename to B07_DesignDetail/openwebcad/src/components/Icon/Icon.tsx diff --git a/B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg b/B07_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg rename to B07_DesignDetail/openwebcad/src/components/Icon/custom-icons/measurement.svg diff --git a/B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg b/B07_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg rename to B07_DesignDetail/openwebcad/src/components/Icon/custom-icons/scale.svg diff --git a/B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg b/B07_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg rename to B07_DesignDetail/openwebcad/src/components/Icon/teenyicons-outline.jpg diff --git a/B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg b/B07_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg rename to B07_DesignDetail/openwebcad/src/components/Icon/teenyicons-solid.jpg diff --git a/B08_DesignDetail/openwebcad/src/components/LayerManager.tsx b/B07_DesignDetail/openwebcad/src/components/LayerManager.tsx similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/LayerManager.tsx rename to B07_DesignDetail/openwebcad/src/components/LayerManager.tsx diff --git a/B08_DesignDetail/openwebcad/src/components/QuantityPanel.tsx b/B07_DesignDetail/openwebcad/src/components/QuantityPanel.tsx similarity index 100% rename from B08_DesignDetail/openwebcad/src/components/QuantityPanel.tsx rename to B07_DesignDetail/openwebcad/src/components/QuantityPanel.tsx diff --git a/B08_DesignDetail/openwebcad/src/components/Toolbar.tsx b/B07_DesignDetail/openwebcad/src/components/Toolbar.tsx similarity index 99% rename from B08_DesignDetail/openwebcad/src/components/Toolbar.tsx rename to B07_DesignDetail/openwebcad/src/components/Toolbar.tsx index 59958023..e10d1b97 100644 --- a/B08_DesignDetail/openwebcad/src/components/Toolbar.tsx +++ b/B07_DesignDetail/openwebcad/src/components/Toolbar.tsx @@ -225,7 +225,7 @@ export const Toolbar: FC = () => {
Aislo CAD - B08 상세 설계 + B07 상세 설계
diff --git a/B08_DesignDetail/openwebcad/src/drawControllers/DrawController.ts b/B07_DesignDetail/openwebcad/src/drawControllers/DrawController.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/drawControllers/DrawController.ts rename to B07_DesignDetail/openwebcad/src/drawControllers/DrawController.ts diff --git a/B08_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts b/B07_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts rename to B07_DesignDetail/openwebcad/src/drawControllers/screenCanvas.drawController.ts diff --git a/B08_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts b/B07_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts rename to B07_DesignDetail/openwebcad/src/drawControllers/svg.drawController.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts b/B07_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts rename to B07_DesignDetail/openwebcad/src/entities/ArcEntity.test.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/ArcEntity.ts b/B07_DesignDetail/openwebcad/src/entities/ArcEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/ArcEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/ArcEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts b/B07_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/ArrowHeadEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/CircleEntity.ts b/B07_DesignDetail/openwebcad/src/entities/CircleEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/CircleEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/CircleEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/Entity.ts b/B07_DesignDetail/openwebcad/src/entities/Entity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/Entity.ts rename to B07_DesignDetail/openwebcad/src/entities/Entity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/ImageEntity.ts b/B07_DesignDetail/openwebcad/src/entities/ImageEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/ImageEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/ImageEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/LineEntity.test.ts b/B07_DesignDetail/openwebcad/src/entities/LineEntity.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/LineEntity.test.ts rename to B07_DesignDetail/openwebcad/src/entities/LineEntity.test.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/LineEntity.ts b/B07_DesignDetail/openwebcad/src/entities/LineEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/LineEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/LineEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts b/B07_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts rename to B07_DesignDetail/openwebcad/src/entities/MeasurementEntity.test.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts b/B07_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/MeasurementEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/PointEntity.ts b/B07_DesignDetail/openwebcad/src/entities/PointEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/PointEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/PointEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts b/B07_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/PolyLineEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/RectangleEntity.ts b/B07_DesignDetail/openwebcad/src/entities/RectangleEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/RectangleEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/RectangleEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/entities/TextEntity.ts b/B07_DesignDetail/openwebcad/src/entities/TextEntity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/entities/TextEntity.ts rename to B07_DesignDetail/openwebcad/src/entities/TextEntity.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts b/B07_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts rename to B07_DesignDetail/openwebcad/src/helpers/box-to-polygon.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts b/B07_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts rename to B07_DesignDetail/openwebcad/src/helpers/calculate-angle-guides-and-snap-points.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts b/B07_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts rename to B07_DesignDetail/openwebcad/src/helpers/contain-rect.test.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/contain-rect.ts b/B07_DesignDetail/openwebcad/src/helpers/contain-rect.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/contain-rect.ts rename to B07_DesignDetail/openwebcad/src/helpers/contain-rect.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts b/B07_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts rename to B07_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.test.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts b/B07_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts rename to B07_DesignDetail/openwebcad/src/helpers/convert-svg-path-to-line-segments.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/distance-between-points.ts b/B07_DesignDetail/openwebcad/src/helpers/distance-between-points.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/distance-between-points.ts rename to B07_DesignDetail/openwebcad/src/helpers/distance-between-points.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/draw-functions.ts b/B07_DesignDetail/openwebcad/src/helpers/draw-functions.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/draw-functions.ts rename to B07_DesignDetail/openwebcad/src/helpers/draw-functions.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/draw.ts b/B07_DesignDetail/openwebcad/src/helpers/draw.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/draw.ts rename to B07_DesignDetail/openwebcad/src/helpers/draw.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts b/B07_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts rename to B07_DesignDetail/openwebcad/src/helpers/find-closest-entity.mocks.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts b/B07_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts rename to B07_DesignDetail/openwebcad/src/helpers/find-closest-entity.test.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts b/B07_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts rename to B07_DesignDetail/openwebcad/src/helpers/find-closest-entity.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts b/B07_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts rename to B07_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-arc.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts b/B07_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts rename to B07_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-circle.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts b/B07_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts rename to B07_DesignDetail/openwebcad/src/helpers/find-neighboring-points-on-line.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts b/B07_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-angle-guide-lines.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts b/B07_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.test.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts b/B07_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-angle-with-x-axis.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts b/B07_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-bounding-box-of-multiple-entities.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts b/B07_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-closest-snap-point.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts b/B07_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-draw-guides.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-export-color.ts b/B07_DesignDetail/openwebcad/src/helpers/get-export-color.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-export-color.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-export-color.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts b/B07_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-intersection-points.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-new-layer.ts b/B07_DesignDetail/openwebcad/src/helpers/get-new-layer.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-new-layer.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-new-layer.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts b/B07_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts rename to B07_DesignDetail/openwebcad/src/helpers/get-point-from-event.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/helpers.types.ts b/B07_DesignDetail/openwebcad/src/helpers/helpers.types.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/helpers.types.ts rename to B07_DesignDetail/openwebcad/src/helpers/helpers.types.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-json.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-local-storage.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-png.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/export-entities-to-svg.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-json.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-local-storage.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-entities-from-svg.types.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts b/B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts rename to B07_DesignDetail/openwebcad/src/helpers/import-export-handlers/import-image-from-file.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts b/B07_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts rename to B07_DesignDetail/openwebcad/src/helpers/is-closed-polygon.test.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts b/B07_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts rename to B07_DesignDetail/openwebcad/src/helpers/is-closed-polygon.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/is-length-equal.ts b/B07_DesignDetail/openwebcad/src/helpers/is-length-equal.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/is-length-equal.ts rename to B07_DesignDetail/openwebcad/src/helpers/is-length-equal.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/is-point-equal.ts b/B07_DesignDetail/openwebcad/src/helpers/is-point-equal.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/is-point-equal.ts rename to B07_DesignDetail/openwebcad/src/helpers/is-point-equal.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts b/B07_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts rename to B07_DesignDetail/openwebcad/src/helpers/keyboard-handler.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts b/B07_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts rename to B07_DesignDetail/openwebcad/src/helpers/map-number-range.test.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/map-number-range.ts b/B07_DesignDetail/openwebcad/src/helpers/map-number-range.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/map-number-range.ts rename to B07_DesignDetail/openwebcad/src/helpers/map-number-range.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/middle.ts b/B07_DesignDetail/openwebcad/src/helpers/middle.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/middle.ts rename to B07_DesignDetail/openwebcad/src/helpers/middle.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts b/B07_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts rename to B07_DesignDetail/openwebcad/src/helpers/mirror-angle-over-axis.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts b/B07_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts rename to B07_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.test.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts b/B07_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts rename to B07_DesignDetail/openwebcad/src/helpers/mirror-point-over-axis.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/normalise-angle.ts b/B07_DesignDetail/openwebcad/src/helpers/normalise-angle.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/normalise-angle.ts rename to B07_DesignDetail/openwebcad/src/helpers/normalise-angle.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/paper-sizes.ts b/B07_DesignDetail/openwebcad/src/helpers/paper-sizes.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/paper-sizes.ts rename to B07_DesignDetail/openwebcad/src/helpers/paper-sizes.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts b/B07_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts rename to B07_DesignDetail/openwebcad/src/helpers/polygon-to-segments.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts b/B07_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts rename to B07_DesignDetail/openwebcad/src/helpers/rgb-to-hex-color.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/rotate-point.ts b/B07_DesignDetail/openwebcad/src/helpers/rotate-point.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/rotate-point.ts rename to B07_DesignDetail/openwebcad/src/helpers/rotate-point.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/scale-point.ts b/B07_DesignDetail/openwebcad/src/helpers/scale-point.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/scale-point.ts rename to B07_DesignDetail/openwebcad/src/helpers/scale-point.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/scene-cache.ts b/B07_DesignDetail/openwebcad/src/helpers/scene-cache.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/scene-cache.ts rename to B07_DesignDetail/openwebcad/src/helpers/scene-cache.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/scene-version.ts b/B07_DesignDetail/openwebcad/src/helpers/scene-version.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/scene-version.ts rename to B07_DesignDetail/openwebcad/src/helpers/scene-version.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts b/B07_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts rename to B07_DesignDetail/openwebcad/src/helpers/sort-points-on-arc.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts b/B07_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts rename to B07_DesignDetail/openwebcad/src/helpers/sort-points-on-circle.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/spatial-index.ts b/B07_DesignDetail/openwebcad/src/helpers/spatial-index.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/spatial-index.ts rename to B07_DesignDetail/openwebcad/src/helpers/spatial-index.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/times.ts b/B07_DesignDetail/openwebcad/src/helpers/times.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/times.ts rename to B07_DesignDetail/openwebcad/src/helpers/times.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts b/B07_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts rename to B07_DesignDetail/openwebcad/src/helpers/track-hovered-snap-points.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/undo-stack.ts b/B07_DesignDetail/openwebcad/src/helpers/undo-stack.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/undo-stack.ts rename to B07_DesignDetail/openwebcad/src/helpers/undo-stack.ts diff --git a/B08_DesignDetail/openwebcad/src/helpers/wrap-module.ts b/B07_DesignDetail/openwebcad/src/helpers/wrap-module.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/helpers/wrap-module.ts rename to B07_DesignDetail/openwebcad/src/helpers/wrap-module.ts diff --git a/B08_DesignDetail/openwebcad/src/inputController/input-controller.ts b/B07_DesignDetail/openwebcad/src/inputController/input-controller.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/inputController/input-controller.ts rename to B07_DesignDetail/openwebcad/src/inputController/input-controller.ts diff --git a/B08_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts b/B07_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts rename to B07_DesignDetail/openwebcad/src/integration/aislo-drawing-bridge.ts diff --git a/B08_DesignDetail/openwebcad/src/main.tsx b/B07_DesignDetail/openwebcad/src/main.tsx similarity index 100% rename from B08_DesignDetail/openwebcad/src/main.tsx rename to B07_DesignDetail/openwebcad/src/main.tsx diff --git a/B08_DesignDetail/openwebcad/src/state.ts b/B07_DesignDetail/openwebcad/src/state.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/state.ts rename to B07_DesignDetail/openwebcad/src/state.ts diff --git a/B08_DesignDetail/openwebcad/src/tools.ts b/B07_DesignDetail/openwebcad/src/tools.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools.ts rename to B07_DesignDetail/openwebcad/src/tools.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts b/B07_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/align-bottom-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts b/B07_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/align-center-horizontal-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/align-left-tool.ts b/B07_DesignDetail/openwebcad/src/tools/align-left-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/align-left-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/align-left-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts b/B07_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/align-middle-vertical-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/align-right-tool.ts b/B07_DesignDetail/openwebcad/src/tools/align-right-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/align-right-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/align-right-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts b/B07_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts rename to B07_DesignDetail/openwebcad/src/tools/align-tool.helpers.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/align-top-tool.ts b/B07_DesignDetail/openwebcad/src/tools/align-top-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/align-top-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/align-top-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/array-tool.ts b/B07_DesignDetail/openwebcad/src/tools/array-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/array-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/array-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/circle-tool.ts b/B07_DesignDetail/openwebcad/src/tools/circle-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/circle-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/circle-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/copy-tool.ts b/B07_DesignDetail/openwebcad/src/tools/copy-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/copy-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/copy-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts b/B07_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts rename to B07_DesignDetail/openwebcad/src/tools/eraser-tool.helpers.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts b/B07_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts rename to B07_DesignDetail/openwebcad/src/tools/eraser-tool.test.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/eraser-tool.ts b/B07_DesignDetail/openwebcad/src/tools/eraser-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/eraser-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/eraser-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts b/B07_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts rename to B07_DesignDetail/openwebcad/src/tools/image-import-tool.helpers.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/image-import-tool.ts b/B07_DesignDetail/openwebcad/src/tools/image-import-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/image-import-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/image-import-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/line-tool.ts b/B07_DesignDetail/openwebcad/src/tools/line-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/line-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/line-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/measurement-tool.ts b/B07_DesignDetail/openwebcad/src/tools/measurement-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/measurement-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/measurement-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts b/B07_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts rename to B07_DesignDetail/openwebcad/src/tools/move-tool.helpers.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/move-tool.ts b/B07_DesignDetail/openwebcad/src/tools/move-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/move-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/move-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/pedit-tool.ts b/B07_DesignDetail/openwebcad/src/tools/pedit-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/pedit-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/pedit-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/rectangle-tool.ts b/B07_DesignDetail/openwebcad/src/tools/rectangle-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/rectangle-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/rectangle-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts b/B07_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts rename to B07_DesignDetail/openwebcad/src/tools/rotate-tool.helpers.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/rotate-tool.ts b/B07_DesignDetail/openwebcad/src/tools/rotate-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/rotate-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/rotate-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts b/B07_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts rename to B07_DesignDetail/openwebcad/src/tools/scale-tool.helpers.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/scale-tool.ts b/B07_DesignDetail/openwebcad/src/tools/scale-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/scale-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/scale-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts b/B07_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts rename to B07_DesignDetail/openwebcad/src/tools/select-tool.helpers.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/select-tool.ts b/B07_DesignDetail/openwebcad/src/tools/select-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/select-tool.ts rename to B07_DesignDetail/openwebcad/src/tools/select-tool.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/tool.consts.ts b/B07_DesignDetail/openwebcad/src/tools/tool.consts.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/tool.consts.ts rename to B07_DesignDetail/openwebcad/src/tools/tool.consts.ts diff --git a/B08_DesignDetail/openwebcad/src/tools/tool.types.ts b/B07_DesignDetail/openwebcad/src/tools/tool.types.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/tools/tool.types.ts rename to B07_DesignDetail/openwebcad/src/tools/tool.types.ts diff --git a/B08_DesignDetail/openwebcad/src/vite-env.d.ts b/B07_DesignDetail/openwebcad/src/vite-env.d.ts similarity index 100% rename from B08_DesignDetail/openwebcad/src/vite-env.d.ts rename to B07_DesignDetail/openwebcad/src/vite-env.d.ts diff --git a/B08_DesignDetail/openwebcad/tailwind.config.js b/B07_DesignDetail/openwebcad/tailwind.config.js similarity index 100% rename from B08_DesignDetail/openwebcad/tailwind.config.js rename to B07_DesignDetail/openwebcad/tailwind.config.js diff --git a/B08_DesignDetail/openwebcad/test/entities/circle/circle.recording.json b/B07_DesignDetail/openwebcad/test/entities/circle/circle.recording.json similarity index 100% rename from B08_DesignDetail/openwebcad/test/entities/circle/circle.recording.json rename to B07_DesignDetail/openwebcad/test/entities/circle/circle.recording.json diff --git a/B08_DesignDetail/openwebcad/test/entities/circle/circle.test.ts b/B07_DesignDetail/openwebcad/test/entities/circle/circle.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/entities/circle/circle.test.ts rename to B07_DesignDetail/openwebcad/test/entities/circle/circle.test.ts diff --git a/B08_DesignDetail/openwebcad/test/entities/line/line.test.ts b/B07_DesignDetail/openwebcad/test/entities/line/line.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/entities/line/line.test.ts rename to B07_DesignDetail/openwebcad/test/entities/line/line.test.ts diff --git a/B08_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts b/B07_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts rename to B07_DesignDetail/openwebcad/test/entities/rectangle/rectangle.test.ts diff --git a/B08_DesignDetail/openwebcad/test/helpers/click.ts b/B07_DesignDetail/openwebcad/test/helpers/click.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/helpers/click.ts rename to B07_DesignDetail/openwebcad/test/helpers/click.ts diff --git a/B08_DesignDetail/openwebcad/test/helpers/init-application.ts b/B07_DesignDetail/openwebcad/test/helpers/init-application.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/helpers/init-application.ts rename to B07_DesignDetail/openwebcad/test/helpers/init-application.ts diff --git a/B08_DesignDetail/openwebcad/test/helpers/replay-recording.ts b/B07_DesignDetail/openwebcad/test/helpers/replay-recording.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/helpers/replay-recording.ts rename to B07_DesignDetail/openwebcad/test/helpers/replay-recording.ts diff --git a/B08_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts b/B07_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts rename to B07_DesignDetail/openwebcad/test/helpers/replay-recording.types.ts diff --git a/B08_DesignDetail/openwebcad/test/helpers/set-active-tool.ts b/B07_DesignDetail/openwebcad/test/helpers/set-active-tool.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/helpers/set-active-tool.ts rename to B07_DesignDetail/openwebcad/test/helpers/set-active-tool.ts diff --git a/B08_DesignDetail/openwebcad/test/helpers/tests.consts.ts b/B07_DesignDetail/openwebcad/test/helpers/tests.consts.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/helpers/tests.consts.ts rename to B07_DesignDetail/openwebcad/test/helpers/tests.consts.ts diff --git a/B08_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts b/B07_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts rename to B07_DesignDetail/openwebcad/test/mocks/drawControllers/screenCanvas.drawController.ts diff --git a/B08_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf b/B07_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf rename to B07_DesignDetail/openwebcad/test/mocks/dxf/circle.dxf diff --git a/B08_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf b/B07_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf rename to B07_DesignDetail/openwebcad/test/mocks/dxf/empty.dxf diff --git a/B08_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf b/B07_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf rename to B07_DesignDetail/openwebcad/test/mocks/dxf/line-and-circle.dxf diff --git a/B08_DesignDetail/openwebcad/test/mocks/dxf/line.dxf b/B07_DesignDetail/openwebcad/test/mocks/dxf/line.dxf similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/dxf/line.dxf rename to B07_DesignDetail/openwebcad/test/mocks/dxf/line.dxf diff --git a/B08_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf b/B07_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf rename to B07_DesignDetail/openwebcad/test/mocks/dxf/unsupported.dxf diff --git a/B08_DesignDetail/openwebcad/test/mocks/floorplan.svg b/B07_DesignDetail/openwebcad/test/mocks/floorplan.svg similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/floorplan.svg rename to B07_DesignDetail/openwebcad/test/mocks/floorplan.svg diff --git a/B08_DesignDetail/openwebcad/test/mocks/test-svg-import.svg b/B07_DesignDetail/openwebcad/test/mocks/test-svg-import.svg similarity index 100% rename from B08_DesignDetail/openwebcad/test/mocks/test-svg-import.svg rename to B07_DesignDetail/openwebcad/test/mocks/test-svg-import.svg diff --git a/B08_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json b/B07_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json similarity index 100% rename from B08_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json rename to B07_DesignDetail/openwebcad/test/tools/eraser/eraser.recording.json diff --git a/B08_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts b/B07_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts similarity index 100% rename from B08_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts rename to B07_DesignDetail/openwebcad/test/tools/eraser/eraser.test.ts diff --git a/B08_DesignDetail/openwebcad/tsconfig.app.json b/B07_DesignDetail/openwebcad/tsconfig.app.json similarity index 100% rename from B08_DesignDetail/openwebcad/tsconfig.app.json rename to B07_DesignDetail/openwebcad/tsconfig.app.json diff --git a/B08_DesignDetail/openwebcad/tsconfig.json b/B07_DesignDetail/openwebcad/tsconfig.json similarity index 100% rename from B08_DesignDetail/openwebcad/tsconfig.json rename to B07_DesignDetail/openwebcad/tsconfig.json diff --git a/B08_DesignDetail/openwebcad/tsconfig.node.json b/B07_DesignDetail/openwebcad/tsconfig.node.json similarity index 100% rename from B08_DesignDetail/openwebcad/tsconfig.node.json rename to B07_DesignDetail/openwebcad/tsconfig.node.json diff --git a/B08_DesignDetail/openwebcad/vite.config.ts b/B07_DesignDetail/openwebcad/vite.config.ts similarity index 100% rename from B08_DesignDetail/openwebcad/vite.config.ts rename to B07_DesignDetail/openwebcad/vite.config.ts diff --git a/B08_DesignDetail/openwebcad/vitest.config.ts b/B07_DesignDetail/openwebcad/vitest.config.ts similarity index 100% rename from B08_DesignDetail/openwebcad/vitest.config.ts rename to B07_DesignDetail/openwebcad/vitest.config.ts diff --git a/B07_Quantity/0_old_260726_codex.zip b/B08_Quantity/0_old_260726_codex.zip similarity index 100% rename from B07_Quantity/0_old_260726_codex.zip rename to B08_Quantity/0_old_260726_codex.zip diff --git a/B07_Quantity/B07_Quantity_Router.py b/B08_Quantity/B08_Quantity_Router.py similarity index 72% rename from B07_Quantity/B07_Quantity_Router.py rename to B08_Quantity/B08_Quantity_Router.py index 44a5d216..65af9f4b 100644 --- a/B07_Quantity/B07_Quantity_Router.py +++ b/B08_Quantity/B08_Quantity_Router.py @@ -1,7 +1,7 @@ -"""B07 수량 산출 라우터 — 셸 단계. +"""B08 수량 산출 라우터 — 셸 단계. -수량 본문은 미구현. 지금은 좌측 패널 [확정] 버튼이 워크플로 stage 4(QUANTITY)를 -완료 처리해 B08 상세설계 진입을 여는 역할만 한다. 본문(B06 종횡단 기반 산출)을 +수량 본문은 미구현. 지금은 좌측 패널 [확정] 버튼이 워크플로 stage 5(QUANTITY)를 +완료 처리해 B09 설계도서 진입을 여는 역할만 한다. 본문(B06 종횡단 기반 산출)을 구현할 때 이 라우터를 확장한다. """ @@ -15,21 +15,21 @@ from common_util.common_util_workflow_state import complete_stage from config.config_db import get_db_pool logger = logging.getLogger(__name__) -router = APIRouter(prefix="/api/projects", tags=["B07 Quantity"]) +router = APIRouter(prefix="/api/projects", tags=["B08 Quantity"]) @router.post("/{project_id}/quantity/confirm") async def confirm_quantity(project_id: UUID) -> JSONResponse: - """수량 단계 확정 — stage 4(QUANTITY)를 COMPLETE로 전이한다 (본문 미구현).""" + """수량 단계 확정 — stage 5(QUANTITY)를 COMPLETE로 전이한다 (본문 미구현).""" pool = get_db_pool() async with pool.acquire() as connection: try: async with connection.cursor() as cursor: - await complete_stage(cursor, str(project_id), 4) + await complete_stage(cursor, str(project_id), 5) await connection.commit() except Exception: await connection.rollback() - 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": "수량 단계 확정에 실패했습니다."}, diff --git a/B07_Quantity/B07_Quantity_UI_Page.ts b/B08_Quantity/B08_Quantity_UI_Page.ts similarity index 73% rename from B07_Quantity/B07_Quantity_UI_Page.ts rename to B08_Quantity/B08_Quantity_UI_Page.ts index 82744f30..c6463b8d 100644 --- a/B07_Quantity/B07_Quantity_UI_Page.ts +++ b/B08_Quantity/B08_Quantity_UI_Page.ts @@ -1,9 +1,9 @@ /* ============================================================================= - * B07_Quantity_UI_Page.ts - * 로그인 후 07: 4차 워크플로우 (수량 산출) + * B08_Quantity_UI_Page.ts + * 로그인 후 08: 5차 워크플로우 (수량 산출) * * ⚠️ 본문 준비 중 — 워크플로우 셸 + 좌측 [확정] 버튼만 구성. - * 확정 = 워크플로 stage 4(QUANTITY) 완료 처리 후 B08 상세설계로 이동. + * 확정 = 워크플로 stage 5(QUANTITY) 완료 처리 후 B09 설계도서로 이동. * 수량 본문(B06 종횡단 기반 산출)은 후속 계획에서 구현한다. * ========================================================================== */ @@ -18,7 +18,7 @@ function L(key: keyof typeof ui_locales): string { return ui_locales[key][currentLanguageIndex]; } -/** stage 4(QUANTITY) 완료 요청 — 본문 미구현 상태의 유일한 백엔드 연동. */ +/** stage 5(QUANTITY) 완료 요청 — 본문 미구현 상태의 유일한 백엔드 연동. */ async function confirmQuantityStage(projectId: string): Promise { const response = await fetch( `${API_BASE_URL}/projects/${encodeURIComponent(projectId)}/quantity/confirm`, @@ -32,36 +32,36 @@ async function confirmQuantityStage(projectId: string): Promise { /** 좌측 패널: 준비 중 안내 + 하단 [확정] 액션 행 (다른 워크플로우 페이지와 동일 배치). */ function buildQuantitySidePanel(projectId: string | null): HTMLElement { const panel = document.createElement("div"); - panel.className = "b07-quantity__panel"; + panel.className = "b08-quantity__panel"; const note = document.createElement("p"); - note.className = "b07-quantity__pending-note"; - note.textContent = L("B07_Quantity_Side_Pending"); + note.className = "b08-quantity__pending-note"; + note.textContent = L("B08_Quantity_Side_Pending"); panel.append(note); const confirmButton = createButton({ - label: L("B07_Quantity_Btn_Confirm"), + label: L("B08_Quantity_Btn_Confirm"), variant: "filled", onClick: () => { if (!projectId) { - showToast(L("B07_Quantity_Confirm_Failed"), "error"); + showToast(L("B08_Quantity_Confirm_Failed"), "error"); return; } confirmButton.disabled = true; confirmQuantityStage(projectId) .then(() => { - showToast(L("B07_Quantity_Confirm_Success"), "success"); - goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[5]); + showToast(L("B08_Quantity_Confirm_Success"), "success"); + goToWorkflowStage(projectId, WORKFLOW_STEP_ROUTES[6]); }) .catch(() => { - showToast(L("B07_Quantity_Confirm_Failed"), "error"); + showToast(L("B08_Quantity_Confirm_Failed"), "error"); confirmButton.disabled = false; }); }, }); const actions = document.createElement("div"); - actions.className = "b07-quantity__actions ui-sidebar-actions"; + actions.className = "b08-quantity__actions ui-sidebar-actions"; actions.append(confirmButton); panel.append(actions); return panel; @@ -70,12 +70,12 @@ function buildQuantitySidePanel(projectId: string | null): HTMLElement { /* ----------------------------------------------------------------------------- * 페이지 진입점 * -------------------------------------------------------------------------- */ -export async function renderB07Quantity(root: HTMLElement): Promise { +export async function renderB08Quantity(root: HTMLElement): Promise { const projectId = localStorage.getItem(CURRENT_PROJECT_ID_KEY); await renderPendingWorkflow(root, { - title: L("B07_Quantity_Title"), + title: L("B08_Quantity_Title"), steps: workflowSteps(), - activeStep: 4, + activeStep: 5, leftPanel: buildQuantitySidePanel(projectId), }); } diff --git a/common_util/common_util_mass_haul.ts b/common_util/common_util_mass_haul.ts index fe55a5fa..10272729 100644 --- a/common_util/common_util_mass_haul.ts +++ b/common_util/common_util_mass_haul.ts @@ -3,7 +3,7 @@ * 유토곡선(Mass Haul Diagram) 계산 엔진 — 순수 함수, DOM 의존 없음. * * 구간 토량을 평균단면법으로 만들고 토량환산계수로 기준을 통일해 누가토량을 누적한다. - * 결과는 B07 수량산출·B09 견적이 그대로 재사용할 수 있도록 계산과 렌더링을 분리해 + * 결과는 B08 수량산출·B09 견적이 그대로 재사용할 수 있도록 계산과 렌더링을 분리해 * 둔다(렌더러는 `common_util_mass_haul_view`). * * ── 계산 기준: 다짐상태 ────────────────────────────────────────────── @@ -423,7 +423,7 @@ function longitudinalAreaSamples( /** * 측점별 설계 결과에서 유토곡선을 계산한다(횡단 기준·지반유형별 환산). - * 확정 저장과 B07 인계에 쓰는 **정식 곡선**이라 시그니처를 그대로 유지한다. + * 확정 저장과 B08 인계에 쓰는 **정식 곡선**이라 시그니처를 그대로 유지한다. */ export function computeMassHaul( crossSections: MassHaulSection[], @@ -461,7 +461,7 @@ export function computeMassHaulSeries( /** * 확정 시 DB(`longitudinal_sections.data.mass_haul`)에 넣을 직렬화 형태로 정리한다. - * 토량 분배(평형선)까지 냈으면 `haul_plan`으로 함께 실어 B07 수량·B09 견적이 되받게 한다. + * 토량 분배(평형선)까지 냈으면 `haul_plan`으로 함께 실어 B08 수량·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), - // 구간 절토 내역(자연상태) — B07 내역서가 EA/RR/BR로 되받는 단위. + // 구간 절토 내역(자연상태) — B08 내역서가 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 f64ff46a..59ef0485 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; } -/** 확정 저장·B07 인계용 직렬화. 값은 소수 둘째 자리에서 끊는다. */ +/** 확정 저장·B08 인계용 직렬화. 값은 소수 둘째 자리에서 끊는다. */ 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), - // 떨어진 구간끼리의 장거리 운반 — B07 내역서가 별도 운반 항목으로 세운다. + // 떨어진 구간끼리의 장거리 운반 — B08 내역서가 별도 운반 항목으로 세운다. 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, - // 장비 띠 — B07 내역서는 이 단위로 운반 항목을 세운다. + // 장비 띠 — B08 내역서는 이 단위로 운반 항목을 세운다. bands: block.bands.map((band) => ({ index: band.index, equipment: band.equipment, diff --git a/common_util/common_util_project_reset.py b/common_util/common_util_project_reset.py index 264b02c9..c8780c71 100644 --- a/common_util/common_util_project_reset.py +++ b/common_util/common_util_project_reset.py @@ -24,8 +24,8 @@ OUTPUT_STAGE_DIRS = ( "B04_PreProcess", "B05_Profile", "B06_Section", - "B07_Quantity", - "B08_DesignDetail", + "B07_DesignDetail", + "B08_Quantity", "B09_Estimation", ) diff --git a/common_util/common_util_storage.py b/common_util/common_util_storage.py index bfeb4ee2..b367b809 100644 --- a/common_util/common_util_storage.py +++ b/common_util/common_util_storage.py @@ -16,8 +16,8 @@ PROJECT_STORAGE_LAYOUT_V2 = ( ("B05_Profile", "route"), ("B06_Section", "longitudinal"), ("B06_Section", "cross_sections"), - ("B08_DesignDetail", "structures"), - ("B07_Quantity", "quantities"), + ("B07_DesignDetail", "structures"), + ("B08_Quantity", "quantities"), ("B09_Estimation", "v1"), ) diff --git a/common_util/common_util_workflow_state.py b/common_util/common_util_workflow_state.py index a06e9280..a1d4cacd 100644 --- a/common_util/common_util_workflow_state.py +++ b/common_util/common_util_workflow_state.py @@ -14,8 +14,8 @@ STAGE_KEYS = [ "PREPROCESS", # 1 (B04) "PROFILE", # 2 (B05) "SECTION", # 3 (B06) - "QUANTITY", # 4 (B07) - "DESIGN_DETAIL", # 5 (B08) + "DESIGN_DETAIL", # 4 (B07) + "QUANTITY", # 5 (B08) "ESTIMATION", # 6 (B09) ] diff --git a/config/config_frontend.ts b/config/config_frontend.ts index ec63566f..be85b77d 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_QUANTITY: "b07-quantity", - B08_DESIGN_DETAIL: "b08-design-detail", + B07_DESIGN_DETAIL: "b07-design-detail", + B08_QUANTITY: "b08-quantity", B09_ESTIMATION: "b09-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_QUANTITY, - ROUTES.B08_DESIGN_DETAIL, + ROUTES.B07_DESIGN_DETAIL, + ROUTES.B08_QUANTITY, ROUTES.B09_ESTIMATION, ROUTES.B10_PAYMENT, ROUTES.B11_STATUS, diff --git a/config/config_system.py b/config/config_system.py index d616e1b5..b1622cc9 100644 --- a/config/config_system.py +++ b/config/config_system.py @@ -512,7 +512,7 @@ STANDARD_ROCK_BOUNDARY_STEP_M = 0.1 # # 전부 위 5-4-1 STANDARD_CROSS_SECTION에서 파생한다(중복 정의 금지). # 지반유형 라벨은 3종(토사/리핑암/발파암)이나, 표준단면 기하는 토사/암반 2종 -# 프리셋만 존재한다(리핑암·발파암은 절토경사·측구 동일, 단가만 B07/B09에서 구분). +# 프리셋만 존재한다(리핑암·발파암은 절토경사·측구 동일, 단가만 B08/B09에서 구분). # ───────────────────────────────────────────────────────────────────────── _SCS_SOIL = STANDARD_CROSS_SECTION["soil"] # 노면폭(노견 포함) = 0.5 + 3.0 + 0.5 = 4.0m. env로만 개별 재정의 가능. @@ -756,8 +756,8 @@ PROJECT_STORAGE_STAGE_DIRS = frozenset( "B04_PreProcess", "B05_Profile", "B06_Section", - "B08_DesignDetail", - "B07_Quantity", + "B07_DesignDetail", + "B08_Quantity", "B09_Estimation", } ) diff --git a/main.py b/main.py index 031f5735..243996d5 100644 --- a/main.py +++ b/main.py @@ -47,8 +47,8 @@ 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_Quantity.B07_Quantity_Router import router as b07_quantity_router -from B08_DesignDetail.B08_DesignDetail_Router import router as b08_design_router +from B07_DesignDetail.B07_DesignDetail_Router import router as b07_design_router +from B08_Quantity.B08_Quantity_Router import router as b08_quantity_router from common_util.common_util_auth import require_company, verify_session from common_util.common_util_resource_monitor import sample_resources_loop from common_util.common_util_temp_cleanup import cleanup_expired_temp_uploads_loop @@ -322,14 +322,14 @@ app.mount( ) logger.info(f"✓ 정적 파일 서빙 경로 등록: {STATIC_URL} → {STATIC_DIR}") -# B08 독립형 2D CAD 앱 — 내부 JSON 연동용 iframe -B08_CAD_DIST_DIR = str(Path(__file__).parent / "B08_DesignDetail" / "openwebcad" / "dist") +# B07 독립형 2D CAD 앱 — 내부 JSON 연동용 iframe +B07_CAD_DIST_DIR = str(Path(__file__).parent / "B07_DesignDetail" / "openwebcad" / "dist") app.mount( - "/b08-cad", - StaticFiles(directory=B08_CAD_DIST_DIR, html=True, check_dir=False), - name="b08-cad", + "/b07-cad", + StaticFiles(directory=B07_CAD_DIST_DIR, html=True, check_dir=False), + name="b07-cad", ) -logger.info(f"✓ B08 CAD 정적 서빙 경로 등록: /b08-cad → {B08_CAD_DIST_DIR}") +logger.info(f"✓ B07 CAD 정적 서빙 경로 등록: /b07-cad → {B07_CAD_DIST_DIR}") # ───────────────────────────────────────────────────────────────────────── # 기본 엔드포인트 @@ -382,8 +382,8 @@ app.include_router(b05_corridor_router, dependencies=protected_with_company) app.include_router(b05_structures_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_quantity_router, dependencies=protected_with_company) -app.include_router(b08_design_router, dependencies=protected_with_company) +app.include_router(b07_design_router, dependencies=protected_with_company) +app.include_router(b08_quantity_router, dependencies=protected_with_company) # ───────────────────────────────────────────────────────────────────────── diff --git a/package.json b/package.json index e16baf58..00290cfa 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: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", + "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_DesignDetail/openwebcad install", + "build:b07-cad": "npm run install:b07-cad && npm --prefix B07_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 ce8f9813..08f2f002 100644 --- a/ui_template/ui_template_locale_b2.ts +++ b/ui_template/ui_template_locale_b2.ts @@ -531,43 +531,43 @@ export const ui_locales_b2 = { "Standard cut-fill section schematic — shows where each value applies (not to scale).", ], - /* --- B08_DesignDetail 상세 설계 --- */ - B08_Design_Title: ["상세설계", "Detail Design"], - B08_Cad_Side_Pending: [ + /* --- B07_DesignDetail 상세 설계 --- */ + B07_Design_Title: ["상세설계", "Detail Design"], + B07_Cad_Side_Pending: [ "사이드 패널은 전달 데이터 확정 후 구성됩니다.", "Side panel will be configured after the upstream data spec is finalized.", ], - 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"], + 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"], - /* --- B07_Quantity 수량 산출 --- */ - B07_Quantity_Title: ["수량산출", "Quantity"], - B07_Quantity_Side_Pending: [ - "수량 산출 기능은 준비 중입니다. [확정]을 누르면 4차 단계를 마치고 상세설계로 이동합니다.", - "Quantity module is in preparation. Press [Confirm] to finish stage 4 and move to Detail Design.", + /* --- B08_Quantity 수량 산출 --- */ + B08_Quantity_Title: ["수량산출", "Quantity"], + B08_Quantity_Side_Pending: [ + "수량 산출 기능은 준비 중입니다. [확정]을 누르면 5차 단계를 마치고 설계도서로 이동합니다.", + "Quantity module is in preparation. Press [Confirm] to finish stage 5 and move to Design Docs.", ], - B07_Quantity_Btn_Confirm: ["확정", "Confirm"], - B07_Quantity_Confirm_Success: [ - "수량 단계를 확정했습니다. 상세설계로 이동합니다.", - "Quantity stage confirmed. Moving to Detail Design.", + B08_Quantity_Btn_Confirm: ["확정", "Confirm"], + B08_Quantity_Confirm_Success: [ + "수량 단계를 확정했습니다. 설계도서로 이동합니다.", + "Quantity stage confirmed. Moving to Design Docs.", ], - B07_Quantity_Confirm_Failed: [ + B08_Quantity_Confirm_Failed: [ "수량 단계 확정에 실패했습니다.", "Failed to confirm the quantity stage.", ], diff --git a/vite.config.ts b/vite.config.ts index 545995b2..768e3958 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -32,8 +32,8 @@ export default { target: "http://localhost:8000", changeOrigin: true, }, - // B08 독립형 CAD 앱 — FastAPI 정적 마운트로 위임 - "/b08-cad": { + // B07 독립형 CAD 앱 — FastAPI 정적 마운트로 위임 + "/b07-cad": { target: "http://localhost:8000", changeOrigin: true, },