HBTM100_Shell·팀 필터
(Hereby) 내부 결재 > Shell·팀 필터
| 앱 | 내부 결재 (HBTM) |
| 대상 사용자 | 조건1 [TEAM_LEADER] / 조건2 [SUPER_ADMIN] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_결재워크플로우]] · [[POL_권한(RBAC)]] |
| Status | review |
| Owner | 카나 (PM) |
개요
- 내부 결재의 공통 Shell이다. (10/13, #1213 — 프로덕션 배포) admin식 좌측 LNB + 공용 페이지 헤더로 전면 개편(65) — LNB: 「대시보드 / 연차/휴가 / 근무 관리 / 인센티브 / 문서 관리 / 결재선 설정」(2026-10-20 #1268로 「스케쥴러(펼침형)」 제거 — 10/21 라이브 실측 6메뉴), 헤더: h1 제목·새로고침·팀 선택 콤보(전체 팀+팀별 인원수)·알림·아바타. (구 구조: 앱 타이틀 "내부 결재" + 팀 선택 + 알림 + 계정 + 로그아웃 + 상단 7탭)
- 진입 시 "출퇴근현황"으로 랜딩한다. 출퇴근현황은 Admin 근태 현황 근무 탭 임베드(/team-manager/?att=1)의 원본 화면으로, 사번/이름/소속/근무일/출근 시간/퇴근 시간 목록 + 소속·기간 필터 + "더 보기 (8/n)"로 구성된다 ([[HBAD250_근태 현황 (근무)]]).
- 팀 선택은 team scope 필터다. admin 계정은 "전체 팀"을 포함해 모든 팀을 선택할 수 있고, 팀 선택 변경 시 하위 승인 큐가 해당 팀 scope로 재로드된다.
- 7탭 라우팅과 각 탭 상세는 개별 화면([[HBTM200_대시보드]] 등)을 참조한다 (중복 정의 금지).
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-13 | 카나 | PM | 버튼 행동 명세 보강 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 + 확정 스타일 |
| 2026-10-02 | 카나 | PM | /signup → 로그인 이동(d2192b69, #1011) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM |
| 2026-10-14 | 카나 | PM | (10/13 머지, #1213 a8db928 — 프로덕션 배포) Shell 전면 개편: 상단 가로 7탭 → admin식 좌측 LNB + 공용 페이지 헤더(65 신설, 60~ㄴ67 구 구조 표기) — 10/14 라이브 실측: LNB 메뉴 「대시보드 / 연차/휴가 / 근무 관리 / 인센티브 / 문서 관리 / 결재선 설정 / 스케쥴러(펼침형)」 + Toggle sidebar, 헤더 = h1 제목·새로고침·전체 팀 콤보(팀별 인원수)·불편·기능 신고·알림·아바타. 반응형 3단(모바일<768 드로어 · 태블릿 레일 · PC 펼침) = admin 규격. 메뉴는 권한(승인·스케줄러·관리 팀)으로 필터, 권한 밖 URL 직접 진입은 403 전에 대시보드로(문서 관리는 관리 팀 없으면 숨김). 제목 73곳 div 전환(태그 기본 32px 결함) - 카나/PM |
| 2026-10-21 | 카나 | PM | (10/20 머지, #1268 d9e90f9) LNB 「스케쥴러(펼침형)」 제거 — TM의 간호 스케줄러 사본(근무표·인력·희망근무·근무형태 탭, 모달 22개, 약 4,900행)을 제거하고 admin을 단일 정본으로 유지(2026-05 admin 복사 이후 이중 수정 비용·기능 어긋남 해소). TM은 결재·문서 관리·결재선 설정 앱으로 존속. 10/21 라이브 실측: LNB = 「대시보드 / 연차/휴가 / 근무 관리 / 인센티브 / 문서 관리 / 결재선 설정」 6메뉴, /team-manager/scheduler 직접 진입 → 404.html(권한 필터의 「대시보드 우회」가 아니라 라우트 자체 제거). [[HBTM250_스케줄러 Embed]] 화면 소멸, [[HBNS000_간호 스케줄러 (앱 개요)]] 문서군 재배치는 콸 결정 대기 |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | 관리 가능 팀 목록 (Team[], 추정) | 없으면 "전체 팀"만 | 팀명 + 인원수 |
| $ | User.email | signin 리다이렉트 | 예 "djcola814@gmail.com" |
| $ | notifications[] (추정) | badge 미표시 | 미읽음 badge (예 "1") |
| $ | 현재 선택 팀 scope | 기본 "전체 팀" (admin) | 팀 필터 선택 값 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 팀 선택 | teamId | 큐 재로드 (team scope reload) (추정) | team:scope (추정) |
| 탭 전환 | route | 7탭 라우팅 (client route) | - |
| 로그아웃 | - | 세션 종료 (추정) | - |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 방향 | 비고 |
|---|---|---|---|
| Admin ([[HBAD250_근태 현황 (근무)]]) | 출퇴근현황 임베드 원본 | HBAD ↔ TM | /team-manager/?att=1 |
| Secom 근태 원천 | 출퇴근현황 census 실데이터 (14,358건) | Secom → TM | [[POL_근태원천]] |
화면 플로우
Shell 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | 조건1 [TEAM_LEADER] 인증. 전 화면 공통 Shell로 상시 노출 | 인증 세션 (team scope) | token 내부 key TBU |
| 01 | 초기 상태 | - | 진입 시 "출퇴근현황"으로 랜딩. Shell 상단 고정(타이틀·팀 필터·알림·계정·로그아웃·7탭) | 아래 출퇴근현황 화면 표 | 랜딩=출퇴근현황 |
| 03 | /signup 주소 | - | • 이 앱엔 가입 화면이 없어 /signup 진입 시 로그인(/signin)으로 주소 교체- CASE01 [로그인 안 됨]: 로그인 화면 - CASE02 [이미 로그인]: 로그인 → 첫 화면으로 다시 이동 | router.ts | 갱신 (코드 반영: d2192b69, #1011) · 이전 빈 화면 → 404 → 로그인 · TBU: 라이브 실사 이월 |
| 10 | 앱 타이틀 | Text | • 앱 식별 타이틀 표시 "내부 결재" | 라이브 원문 | |
| 20 | 팀 선택 | Dropdown | • 하위 승인 큐를 팀 scope로 거르는 필터 • 선택 시: 목록 필터 적용 → 하위 승인 큐 team scope 재로드 - 원문 예: "전체 팀" / "치료팀 (1명)" / "간호부 (19명)" / "총무팀 (4명)" / "진료부 (3명)" / "스포츠재활 (3명)" / "병동1 (4명)" / "원무팀 (4명)" 등 (팀명 + 인원수) | 선택 시 하위 큐 team scope 재로드 | 테스트/0명 팀 다수 노출 |
| ㄴ21 | 전체 팀 | Option | • 전 팀 scope로 큐를 여는 기본 옵션 • 선택 시: 전 팀 큐 노출. admin/SUPER_ADMIN scope 기본값 | teamScope | |
| 30 | 알림 | Button | • 알림 패널을 여는 진입점. icon + 미읽음 badge(예 "1") • 클릭 시: TBU (패널 상세 미확인) | notifications | TBU: 알림 패널 상세(카테고리·mute·채널) |
| 40 | 계정 | Button | • 로그인 계정 표시 (예 "djcola814@gmail.com") • 클릭 시: TBU (계정 메뉴 상세 미확인) | User.email | TBU: 계정 메뉴 |
| 50 | 로그아웃 | Button | • 세션을 종료하고 로그아웃하는 기능. 라벨 "로그아웃" • 클릭 시: 세션 종료 → signin 리다이렉트(추정) | 세션 종료 | |
| 65 | 좌측 LNB (10/13 개편) | Nav | • (10/13, #1213 — 프로덕션 배포) 상단 가로 탭·헤더를 admin과 같은 좌측 LNB + 공용 페이지 헤더로 교체 — 10/14 실측 메뉴: 「대시보드 / 연차/휴가 / 근무 관리 / 인센티브 / 문서 관리 / 결재선 설정 / 스케쥴러(펼침형)」 + Toggle sidebar • 공용 헤더: h1 페이지 제목 · 새로고침 · 전체 팀 콤보(팀별 인원수, 구 20 팀 선택 승계) · 불편·기능 신고 · 알림 · 아바타 • 반응형 3단: 모바일(<768) 드로어 · 태블릿 레일 · PC 펼침 — admin 규격 그대로 • 메뉴 필터: 승인 권한·스케줄러 권한·관리하는 팀으로 걸러 그림 — 권한 밖 탭 URL 직접 진입 시 서버 403 전에 대시보드로 리다이렉트, 문서 관리는 관리하는 팀 없으면 숨김 | admin LNB 규격 · [[HBTM200_대시보드]] | 신설 (#1213) · 라이브 실측 2026-10-14 · 아래 60~ㄴ67은 구 구조 기록 |
| 60 | 상단 탭 (구 구조 — 10/13 폐기) | Tab | • 7탭 라우팅 네비게이션 • 클릭 시: 각 화면 전환(출퇴근현황 포함) - 순서: "대시보드" / "스케쥴러" / "연차/휴가" / "근무 관리" / "인센티브" / "문서 관리" / "출퇴근현황"(신설, 현재 랜딩) | route 전환 | |
| ㄴ61 | 대시보드 | Tab | • 클릭 시: /team-manager/ 전환 | [[HBTM200_대시보드]] | |
| ㄴ62 | 스케쥴러 | Tab | • 클릭 시: /team-manager/scheduler 전환 | [[HBTM250_스케줄러 Embed]] | |
| ㄴ63 | 연차/휴가 | Tab | • 클릭 시: /team-manager/leave 전환 | [[HBTM210_연차·휴가 승인 큐]] | |
| ㄴ64 | 근무 관리 | Tab | • 클릭 시: /team-manager/work 전환 | [[HBTM220_근무 관리 (연장·휴일/외근)]] | |
| ㄴ65 | 인센티브 | Tab | • 클릭 시: /team-manager/treatment 전환 | [[HBTM230_인센티브 (치료 인센티브 등록)]] | |
| ㄴ66 | 문서 관리 | Tab | • 클릭 시: /team-manager/document-management 전환 | [[HBTM240_문서 관리]] | |
| ㄴ67 | 출퇴근현황 | Tab | • 클릭 시: /team-manager/?att=1 전환. 신설 · 현재 랜딩 화면. 아래 "출퇴근현황 화면" 표 참조 | [[HBAD250_근태 현황 (근무)]] | Admin 임베드 원본 |
출퇴근현황 화면 사양표
"출퇴근현황"은 신설 탭이자 진입 시 현재 랜딩 화면이다. Admin 근태 근무 탭 임베드(/team-manager/?att=1)의 원본 화면이며, 페이지 제목은 "HBAD250_근태 현황 (근무)"이다 ([[HBAD250_근태 현황 (근무)]]). Secom 근태 원천 실데이터(14,358건)를 소비한다.
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 진입/랜딩 | - | "출퇴근현황" 탭 · /team-manager/?att=1. 앱 진입 시 기본 랜딩 화면 | 인증 세션 | 랜딩 |
| 10 | 소속 필터 | Dropdown | • 목록을 소속 scope로 거르는 필터. "소속 전체" + 소속별 선택 • 선택 시: 소속 scope 목록 재조회 | org scope | |
| 20 | 기간 필터 | DatePicker | • 조회 기간 범위를 지정하는 필터. 기간 시작 - 종료 범위 조회 • 지정 시: 해당 기간 목록 재조회 | date range | |
| 30 | 목록 | Table | • Secom census 근태 목록. 6컬럼: 사번 / 이름 / 소속 / 근무일 / 출근 시간 / 퇴근 시간 | attendances (Secom 원천) | 읽기 전용 |
| 40 | 더 보기 | Button | • 상위 8건 preview에서 추가 행을 로드하는 기능. 라벨 "더 보기 (8/n)" • 클릭 시: 즉시 실행(컨펌 없음), 성공: 목록 추가 로드 | census 실데이터 | |
| 50 | 원천 화면 | - | Admin 근태 현황 근무 탭 임베드의 원본 화면 (읽기 전용, mutation 없음) | [[HBAD250_근태 현황 (근무)]] | [[POL_근태원천]] |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [팀 필터 변경] | 팀 선택 드롭다운 | 하위 승인 큐 team scope 재로드 | |
CASE02 [admin 전체 팀] | "전체 팀" 선택 | 전 팀 큐 노출 | token TBU |
조건1 [TEAM_LEADER] | Shell 진입 | 소속 팀 scope 고정 | token 내부 key TBU |
조건2 [SUPER_ADMIN] | Shell 진입 | 전체 팀 선택 가능 | token 내부 key TBU |
Open Question
- 알림 패널 상세(카테고리·mute·채널) = TBU
- 계정 버튼 클릭 시 메뉴 상세 = TBU
- 팀 선택 드롭다운의 0명/테스트 팀 필터링·정렬 규칙 = TBU
- team scope 권한 token 내부 key = TBU (HBAD 공통)