From b07ade25b2c64e2fedc405f33bb7b8e665611070 Mon Sep 17 00:00:00 2001 From: Mina Choi Date: Wed, 2 Sep 2026 22:43:38 +0900 Subject: [PATCH] =?UTF-8?q?[fix]=20solution/frontend,docs:=20=EC=98=A8?= =?UTF-8?q?=EB=B3=B4=EB=94=A9=20=EC=9C=84=EC=A0=80=EB=93=9C=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=82=AC=EC=9D=B4=EB=93=9C=EB=B0=94=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20=E2=80=94=20=EC=82=AC=EC=9D=B4=ED=8A=B8=EA=B0=80=20?= =?UTF-8?q?=EB=90=98=EA=B8=B0=20=EC=A0=84=EC=97=94=20=EC=82=AC=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EB=A9=94=EB=89=B4=EA=B0=80=20=EC=97=86=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 사이드바는 계정 메뉴(내 사이트·새 사이트)다. 아직 사이트가 아닌 것 위에 그걸 얹으면, 만들던 중에 [새 사이트]를 눌러 방금 입력한 것을 지우는 길만 열어 준다. 아임웹도 사이트 개설 흐름에는 계정 사이드바를 붙이지 않는다. - BuilderPage: 위저드를 AppShell 대신 얇은 상단 바(로고 + 나가는 길)로. 진행은 WizardSteps 가 이미 보여준다. 비로그인은 돌아갈 목록이 없어 그 자리에 [로그인] 을 둔다 - BuilderPage: 에디터 헤더에 [← 내 사이트] — "내 사이트 관리가 생기면 그때 잇는다"고 비워 뒀던 자리다 - DEVLOG: 계정 레벨/사이트 레벨을 가른 근거 검증 — tsc·eslint·vite build 통과. 위저드에 사이드바가 사라진 것은 브라우저에서 확인 --- docs/DEVLOG.md | 31 +++++++++++++ solution/frontend/src/pages/BuilderPage.tsx | 49 ++++++++++++++++----- 2 files changed, 70 insertions(+), 10 deletions(-) diff --git a/docs/DEVLOG.md b/docs/DEVLOG.md index a550884..7672405 100644 --- a/docs/DEVLOG.md +++ b/docs/DEVLOG.md @@ -5,6 +5,37 @@ --- +## 2026-09-02 — 로그인한 사장님의 홈(내 사이트 · 내 정보) · 위저드에서 사이드바 제거 + +**왜** +로그인해도 갈 곳이 없었다. `/` 는 무조건 위저드였고, 사업장 목록은 내부 운영 앱(admin)으로 +나가서 사장님 앱에는 그 경로가 아예 없다. 만든 사이트를 다시 여는 유일한 길이 +`/builder?placeId=` 를 기억하는 것이었다. + +아임웹을 보면 계층이 둘로 갈려 있다 — **계정 레벨**(내사이트 목록 · 마이페이지)과 +**사이트 레벨**(그 사이트의 관리자 페이지 · 디자인모드). 우리 에디터가 그 사이트 레벨이므로 +비어 있던 것은 계정 레벨이다. 그리고 아임웹도 **사이트 개설 흐름에는 계정 사이드바를 붙이지 +않는다** — 아직 사이트가 아닌 것에 사이트 메뉴를 얹을 수 없어서다. + +**한 일** +- `GET /v1/site/list` — places LEFT JOIN sites LEFT JOIN site_versions 한 번. 사업장 목록으로 + 그리면 줄마다 사이트를 다시 물어 N+1 이다. 사이트가 아직 없는 사업장도 내려간다 — + 빠지면 위저드를 걸어오다 만 가게를 다시 찾을 길이 없다. + `render`(정적 파일이 실제로 있는지)는 넣지 않았다 — 보고서 **파일**을 읽는 값이라 줄 수만큼 + 파일 IO 가 된다. 단건(`Res_Site`)이 계속 소유한다. +- `/sites` 내 사이트 · `/account` 내 정보. `/` 는 로그인 여부로 갈린다(비로그인은 그대로 위저드). +- ⋯ 메뉴는 **[발행 내리기] 하나**다. 삭제는 두지 않았다 — 색인된 페이지를 404 로 만들면 그 자리를 + 다시 OTA 가 가져가고, 되돌릴 방법이 사장님에게 없다. +- 위저드에서 `AppShell`(사이드바)을 걷어내고 얇은 상단 바로 바꿨다. 사이드바는 계정 메뉴라, + 만들던 중에 [새 사이트]를 눌러 방금 입력한 것을 지우는 길만 열어 준다. 진행은 `WizardSteps` 가 + 이미 보여주므로 거기 필요한 건 로고와 나가는 길 하나다. +- 에디터 헤더에 [← 내 사이트]. `BuilderPage` 가 "내 사이트 관리가 생기면 그때 잇는다"고 + 비워 뒀던 자리다. + +**검증** — 백엔드 테스트 5건 추가(사이트 없는 사업장 · 조인 · 회사 격리 · 재빌드 판정이 단건과 +일치 · 비로그인 401), 539 passed. `tsc·eslint·vite build` 통과(frontend·admin). +위저드에 사이드바가 사라진 것은 브라우저에서 확인. + ## 2026-09-02 — 계절별 추천 하루는 지금 계절만 · 간절기엔 두 계절 **왜** diff --git a/solution/frontend/src/pages/BuilderPage.tsx b/solution/frontend/src/pages/BuilderPage.tsx index 94c8551..621b04b 100644 --- a/solution/frontend/src/pages/BuilderPage.tsx +++ b/solution/frontend/src/pages/BuilderPage.tsx @@ -3,7 +3,6 @@ import {ArrowLeft, ExternalLink, Loader2, LogOut, TriangleAlert} from 'lucide-re import {Link, useSearchParams} from 'react-router'; import {SiteStatus} from '@o2o/shared'; import {getAccessToken} from '@/api'; -import {AppShell} from '@/components/layout/AppShell'; import {EditorSignInGate} from '@/features/auth/EditorSignInGate'; import { Step1Industry, @@ -146,10 +145,14 @@ export function BuilderPage() { 실사업장 · {storeName} - {/* ★ 예전엔 여기 [사업장 목록] 링크가 있었다. 그 화면은 내부 운영 앱(admin)으로 - 나갔고, 사장님 앱에는 그 경로가 없다 — 남겨두면 404 다. admin 은 빌더를 - 새 탭으로 열므로(admin/src/lib/solutionUrl.ts) 돌아가는 길은 탭 닫기다. - 사장님용 "내 사이트 관리"가 생기면 그때 이 자리에 잇는다. */} + {/* 돌아가는 길. 로그인한 사람에게만 목록이 있다(비로그인은 에디터에 못 들어온다). */} + + + 내 사이트 + ) : ( @@ -212,18 +215,44 @@ export function BuilderPage() { ); } - // 위저드는 관리자 화면의 일부다 — 사이드바(로고·사업장·로그아웃)를 그대로 쓴다. - // 에디터(EDITOR_STEP)만 전체 화면이라 위에서 먼저 빠져나간다. + /** + * 위저드는 **사이드바를 쓰지 않는다.** + * + * ★ 사이드바는 계정 메뉴(내 사이트·새 사이트)다. 아직 사이트가 아닌 것 위에 사이트 메뉴를 + * 얹으면, 만들던 중에 [새 사이트]를 눌러 방금 입력한 것을 지우는 길만 열어 준다. + * 진행은 단계가 이미 보여주므로(WizardSteps) 여기 필요한 건 로고와 **나가는 길** 하나다. + */ return ( - -
+
+
+ Web4Ai + {/* 비로그인은 돌아갈 목록이 없다 — 그 자리에는 로그인을 둔다(빈 버튼을 두지 않는다). */} + {isSignedIn ? ( + + + 내 사이트 + + ) : ( + + 로그인 + + )} +
+ +
{step === 1 && } {step === 2 && } {step === 3 && } {step === 4 && } {step === 5 && }
- +
); }