HBIV100_Shell·탭
(Hereby) 재고관리 > 글로벌 헤더 / 탭 (공통 Shell)
| 앱 | 재고관리 (HBIV) |
| 대상 사용자 | 조건1 [재고관리 권한] |
| 프로토타입 | TBU |
| 관련 정책 | TBU |
| Status | review |
| Owner | 카나 (PM) |
개요
- 재고관리 앱의 공통 Shell이다. 좌측 앱 타이틀 "재고관리", 우측 계정/조직명 "hereby Medical" + "로그아웃", 상단 탭 4개(대시보드 / 재고관리 / 구분 / 관리)로 구성된다. ⚠ 2026-08-18 라이브 정정: 부제 "Hereby Inventory" 미노출, 계정 메뉴 "내 정보" 미노출("hereby Medical"·로그아웃만).
- 상단 탭은 route 전환의 진입점이며, 하위 화면(HBIV200-230)은 이 Shell 안에서 노출된다.
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-13 | 카나 | PM | 버튼 행동 명세 보강 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 + 확정 스타일 |
| 2026-08-18 | 카나 | 라이브 재검증 정정 | Shell 우측 = "hereby Medical" + "로그아웃"만(부제 "Hereby Inventory"·"내 정보" 미노출). 탭4·하위화면은 일치 |
| 2026-10-02 | 카나 | PM | 권한 없는 사용자에게 접근 불가 화면(「권한 요청」)이 실제로 뜨도록 수정·첫 로드 자동 팝업 억제(b37e9839·3454d65f, #1011) + /signup → 로그인 이동(d2192b69, #1011) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM |
| 2026-10-21 | 카나 | PM | (10/20 머지분, #1267 07d9390) 필터↔브라우저 내비게이션 동기화 수정 — 느린 이전 응답이 최신 필터 결과·페이지를 덮는 stale 응답 무시 + 브라우저 뒤로/앞으로·초기 탭 왕복 시 활성 탭을 라우트와 동기화(권한 거절·화면 해제 포함 Alpine 바인딩 회귀 테스트 동반). 화면 구성 변화 없음(동작 결함 수정) — 커밋 근거, 실사는 회귀 성격상 생략 |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | 인증 세션 (재고관리 권한) | signin 리다이렉트 (경로 TBU) | 미인증 시 진입 차단 |
| $ | 로그인 계정 | hide (추정) | "내 정보" 표시용 |
| $ | 현재 활성 탭 | 대시보드 (기본) | 대시보드 / 재고관리 / 구분 / 관리 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 탭 전환 | route (/inventory/ · /inventory/items · /inventory/categories · /inventory/refunds) | route navigation | inventory:read (추정) |
| 로그아웃 | - | session 종료 (추정) | TBU |
화면 플로우
공통 Shell 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | 조건1 [재고관리 권한] 인증 시 노출 | 인증 세션 | |
| 02 | 접근 불가 화면 | Screen | • 재고 권한이 없을 때 대시보드 대신 노출: 제목 "접근 권한이 없어요" / 본문 "이 화면에 접근할 권한이 없어요." / 「권한 요청」 버튼 • 클릭 시: 공용 권한 요청 팝업( permission-denied 이벤트, detail inventory)• 첫 데이터 로드의 권한 거절에는 SDK 자동 「권한 요청」 팝업을 띄우지 않음 — 데이터가 뜬 뒤 동작의 거절은 기존대로 팝업 | isAccessDeniedError()(tRPC 코드 판정) | 수정 (코드 반영: b37e9839·3454d65f, #1011) · 이전엔 권한 없는 사용자에게 0으로 채운 대시보드가 보이고 이 화면이 뜨지 않았음 · TBU: 라이브 실사 이월 |
| 03 | /signup 주소 | - | • 이 앱엔 가입 화면이 없어 /signup 진입 시 로그인(/signin)으로 주소 교체- CASE01 [로그인 안 됨]: 로그인 화면 - CASE02 [이미 로그인]: 로그인 → 첫 화면으로 다시 이동 | router.ts | 갱신 (코드 반영: d2192b69, #1011) · 이전 빈 화면 → 404 → 로그인 · TBU: 라이브 실사 이월 |
| 10 | 앱 타이틀 | Text | "재고관리" | 라이브 원문 | |
| ㄴ11 | 부제 | Text | ⚠ 2026-08-18 라이브 미노출("Hereby Inventory" 없음). 우측에 조직명 "hereby Medical" 표기 | 2026-08-18 정정 | |
| 20 | 내 정보 | Button | ⚠ 2026-08-18 라이브 미노출 — 우측은 "hereby Medical" + "로그아웃"만 | 2026-08-18 정정 | |
| 30 | 로그아웃 | Button | • 현재 세션을 종료하는 기능 • 클릭 시: session 종료 (추정) | session 종료 | |
| 40 | 상단 탭 | Tab | • 4개 탭으로 route를 전환하는 앱 내비게이션. "대시보드" / "재고관리" / "구분" / "관리" • 클릭 시: 해당 서브뷰(HBIV200-230) route 전환 | HBIV200-230 | |
| ㄴ41 | 대시보드 탭 | Tab | • 재고 위험 현황판으로 이동 • 클릭 시: /inventory/ 전환 → [[HBIV200_대시보드]] | [[HBIV200_대시보드]] | |
| ㄴ42 | 재고관리 탭 | Tab | • 품목 목록으로 이동 • 클릭 시: /inventory/items 전환 → [[HBIV210_재고관리 (품목 목록)]] | [[HBIV210_재고관리 (품목 목록)]] | |
| ㄴ43 | 구분 탭 | Tab | • 카테고리 관리로 이동 • 클릭 시: /inventory/categories 전환 → [[HBIV220_구분 (카테고리 관리)]] | [[HBIV220_구분 (카테고리 관리)]] | |
| ㄴ44 | 관리 탭 | Tab | • 반품 대상 목록으로 이동. "관리" = 반품 관리 • 클릭 시: /inventory/refunds 전환 → [[HBIV230_관리 (반품 대상 목록)]] | [[HBIV230_관리 (반품 대상 목록)]] |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [미인증 진입] | /inventory 직접 | signin 리다이렉트 | 경로 TBU |
CASE02 [권한 진입] | 인증 세션 + inventory scope | Shell + 대시보드 노출 |
Open Question
- 미인증 signin 리다이렉트 경로 = TBU
- "내 정보" 클릭 시 상세 화면/드롭다운 여부 = TBU
- 탭별 세부 권한 분리(read/write) = TBU