HBAD270_설정 (조직 설정·내 정보)
(Hereby) 관리자 패널 > 기타 > 설정
| 메타 | 앱: 관리자 패널 (HBAD)대상 사용자: 조건1 [설정 수정] 권한 보유 역할프로토타입: TBU관련 정책: [[POL_근태원천]] · [[POL_권한(RBAC)]]Status: reviewOwner: 카나 |
개요
설정은 관리자 패널 "기타" 그룹의 진입점으로, "조직 설정" / "내 정보" 2개 탭으로 구성된다.조직 설정 탭은 ①기본 정보 ②급여 설정 ③메시지 발신 ④출근 기록 방식 ⑤보안·셀프서비스 ⑥알림 설정 섹션의 사용자 친화 화면이며, 저장 원천은 organization_parameters(백엔드 key-value 저장소)다.메시지 발신 섹션은 연차 통보·촉진 등 업무용 내부 메시지에 표시할 발신자 이름·이메일을 조직 단위로 관리하며(연차 사용촉진 워크플로우 [[HBAD251_연차 현황·결재]]가 이 설정을 가져다 씀), 발송 화면에는 발신자 피커를 두지 않는다.내 정보 탭은 로그인 관리자 본인 프로필을 관리한다. 근태 유형·기준 관리 5종은 근태 현황의 "유형·기준 관리" 모달로 이동했다 ([[HBAD260_근무 설정 (근무 그룹·유형)]] / [[HBAD261_유형 설정 (연장근무·외근·휴가)]] / [[HBAD262_연차 부여 기준]]). [2026-10-21 설정 화면 재편(#1257, eb296b9 — 10/22 라이브 실측)] 상단 가로 2탭이 좌측 내비 「조직 설정」/「내 정보」 + 조직 설정 앵커 탭 7개(기본 정보 · 급여 · 시트 · 근태 · 근무시간 · 직원 앱 · 보안 · 발신 · 연동 · 알림 설정) 구조로 재편됐다. 섹션들은 묶음(앵커) 단위 카드로 배치되고 탭 클릭은 해당 묶음으로 스크롤한다(콘텐츠 교체 아님). 상단에 「설정 항목 검색」 입력이 신설됐고, 각 카드는 종전처럼 「수정」(편집 모드)과 「접기」를 갖는다. 내 정보는 모달이 아니라 카드 내 인라인 수정(수정 클릭 → 제자리 입력 + 취소/저장)으로 바뀌었다. 아래 사양표의 섹션 번호 체계(20~60)는 유지하되 묶음 배치가 바뀐 행은 비고에 표기한다. [2026-09-15 기본 출퇴근 기준시간 신설(5a24b28)] ④출근 기록 방식 섹션에 조직 전체의 「기본 출퇴근 기준시간」(defaultCheckIn/Out, 라이브 "09:00 ~ 18:00")을 신설했다. 간호사 외 여러 직군이 들어오며 근무 그룹만 있거나 근무 배정이 없는 직원의 출퇴근 기준 시각이 비던 문제를 막기 위해, 기준 시각을 근무표 칸 → 직원 근무 형태 → 근무 그룹 → 조직 기본 근무 형태 → 이 「기본 출퇴근 기준시간」 순으로 정하는 규칙의 최종 폴백값으로 쓴다. 이 값은 기준 시각만 정하고 실제 근무시간은 실제 출퇴근으로 계산해 급여 시간이 조용히 바뀌지 않으며, 앱 출근·일괄 입력·지문(Secom)에 공통 적용된다.
문서 히스토리
- 2026-07-06 최초 작성 - 카나/콸
- 2026-07-10 라이브 기능 검토 반영 (설정 2탭 개편) - 카나/콸
- 2026-07-13 버튼 행동 명세 보강 - 카나/콸
- 2026-07-21 GC700 깊이 재작성 - 카나/콸
- 2026-07-21 가독성 패스 (GUIDE §7) - 카나/PM
- 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
- 2026-07-22 코드 변경 반영(c1d72a3·d7bd3f4) - 카나/콸
- 2026-07-30 코드 변경 반영(b375f14) - 카나/PM
- 2026-08-05 병원 로고 업로드 필드 반영(609eb73) - 카나/PM
- 2026-08-11 인센티브 자가 등록 토글 반영(e9d745c) - 카나/PM
- 2026-08-14 연차촉진 워크플로우 반영(36989ac) - 카나/PM
- 2026-08-17 라이브 실사 검증 반영(dev v0.1.0+, 유형·기준 모달 최초 실증) - 카나/PM
- 2026-08-26 로고·직인 삭제의 저장 영속 반영(b09c616) - 카나/PM
- 2026-09-10 임시 비밀번호 "고정값" 옵션 반영(#635, 84f0548, CS-LOC-260909-0003) - 카나/PM
- 2026-09-15 출근 기록 방식 섹션에 「기본 출퇴근 기준시간」(defaultCheckIn/Out, 라이브 "09:00 ~ 18:00") 신설·기준 시각 결정 규칙 5단계 반영(5a24b28) - 카나/콸
- 2026-09-21 조직 설정 「용어 표시」 카드 신설 — 조직별로 「역할」 낱말 변경(settings.terminology.role), 한국어 조사 자동 부착(josa), 로그인/me/워크스페이스 응답 7곳으로 전 앱 전파, LNB 라벨은 새로고침 후 반영 반영(47b53a9, #807) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM
- 2026-09-23 조직 설정 「근로계약 기준」 카드 신설 — 시트 식별 열의 근로계약 값을 시트 년월 기준으로 고를 때 한 달에 계약이 둘이면 소정근로일 비율 합산(기본)/월말 최종 계약서 중 선택(settings.sheetContractBasis, MED-703) — 개발 커밋이 docs/spec 에 직접 기재(b2a0dc0, #873) → 미러 역수용, 라이브 실사 이월(TBU) - 카나/PM
- 2026-09-25 낮 스윕 라이브 실사 — 조직 설정(#settings/org)에서 「용어 표시」(37)·「근로계약 기준」(38) 카드 실측, 카드 설명·read 표시 원문 채록(TBU 해소) - 카나/PM
- 2026-10-01 급여 설정 카드 「신규 입사자 시트 자동 추가」 토글(ㄴ33, 기본 꺼짐) 반영(d453e2d0, #903) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM
- 2026-10-02 보안·셀프서비스 「일반 비밀번호 규칙」(userPasswordPolicy) 행 신설(ㄴ54 — ⓘ 툴팁 원문·적용 화면) + 내 정보 탭 「비밀번호 재설정」 새 비밀번호 안내·검사 병원 규칙화(30)(c6347029, #995) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM
- 2026-10-07 PR #1053(90b7cf44, MED-901) 반영: 근태 섹션 「신청 시간 단위」 15/30/60분 select(ㄴ42 신설) · PR #1054(6d416f3f, MED-922) 반영: 「임시 비밀번호 유효기간」 1~90일 + passwordPolicy 변경 감사 로그 + 고정값 라벨에 앱 안내 문자 용도 명시(ㄴ53-1 신설) — 커밋 근거, 라이브 실사 이월(TBU). ⚠️ 앱 설치 안내 발송 모달 가드(#1056/#1054 — {임시비밀번호} 누락 시 발송 거부·치환 불가 변수 차단)는 「직원 앱 도입(#onboarding)」 화면 사양서 미채록 — 신규 채번 제안(HBAD285 가칭) - 카나/PM
- 2026-10-08 (10/7 머지분) PR #1090(ef18fa36) 반영: 「직원 앱 첫화면」 카드에 「화면 캡처 제한」 신설 — 요약 끝줄(라이브 실측 10/8 「AI 어시스턴트: 켬 / 화면 캡처 제한: 켬」) + 편집 체크박스(도움말 원문, settings.screenCaptureProtection, 키 없음=켬) (45·ㄴ45-1 신설, 카드 자체 상세는 TBU) - 카나/PM
- 2026-10-08 낮 스윕 라이브 실사 — 「직원 앱 첫화면」 편집 모드 열람·원문 채록(45 재작성): 카드 토글 3종·도움말 원문, 「직원 앱 AI 어시스턴트」·「화면 캡처 제한」 체크박스 라벨·도움말 실측(ㄴ45-1 TBU 해소), 카드 순서 UI(1 오늘의 축하 → 2 공지 → 3 이번 주 근태, 「현재 상태」 고정 안내) - 카나/PM
- 2026-10-13 (10/10~12 머지분) 「연장 신청 유형」 스위치(ㄴ43 신설, #1141 — 10/13 요약 행·편집 스위치 원문 실측) · 세콤 「버튼 태그만 반영」 스위치(40 보강, #1145 — 편집 원문 실측) · 「화면 캡처 제한」 줄 「캡처 기록」 버튼+모달(ㄴ45-2 신설, #1147 — 10/13 모달 전문 채록) - 카나/PM
- 2026-10-10 (10/9 머지분) PR #1125(MED-975) 반영: 「공지 카드」에 「확인한 공지도 게시 후 {n}일 동안 보이기」(0~30) 입력 신설 + 도움말 전문 교체(안 본 글은 늘 보임·확인한 글은 N일 후 제외·0일=즉시 제외) — 요약 모드 「확인한 공지: 게시 후 7일 동안 표시」 줄 포함 라이브 실증 완료(10/10 새벽, 편집 모드 원문 채록) - 카나/PM
- 2026-10-14 (10/13 머지분, #1227) 보안·셀프서비스에 「2단계 인증 필수」 행 신설(ㄴ55 — 10/14 라이브 실측: 「비밀번호 찾기 허용」 아래) · admin 프로필 메뉴에 「인증/보안 설정」 진입 실측(내 정보·인증/보안 설정·사용 분석 설정·조직 설정·로그아웃) · 내 정보 탭 「기기 로그인」 섹션(0dc82d7)은 10/14 미노출 — TBU · 내 정보 안 보안 카드(인증/보안 진입 줄)는 카드째 제거(6675103) - 카나/PM
- 2026-10-22 (10/21 머지분, PR #1257 eb296b9) 설정 화면 재편 라이브 실측 — 좌측 내비 「조직 설정」/「내 정보」 + 조직 설정 앵커 탭 7개(기본 정보/급여 · 시트/근태 · 근무시간/직원 앱/보안/발신 · 연동/알림 설정, 클릭=스크롤) + 「설정 항목 검색」 신설(ㄴ13) + 내 정보 인라인 수정 실측(연락처 수정 → 제자리 textbox + 취소/저장, 취소로 종료). 10 행 재작성·ㄴ12/ㄴ13 신설. 스샷 live-1022-ad-settings-anchor.png - 카나/PM
- 2026-10-17 주간 정합 스윕 라이브 실측 — ① 「기기 로그인」 섹션 TBU 해소: 내 정보 탭이 아니라 프로필 메뉴 「인증/보안 설정」 다이얼로그 안에 실측. 다이얼로그 전면 채록: 로그인 계정(사번·이메일·전화번호·최근 로그인) / 「휴대폰 인증 로그인 허용」 토글("직원이 SMS 인증번호로 로그인할 수 있도록 허용해요") / 비밀번호 변경 / 2단계 인증 「등록」("비밀번호 로그인 때 인증 앱(Google Authenticator 등)의 6자리 코드를 한 번 더 확인해요. 패스키·기기 키 로그인은 묻지 않아요.") / 기기 로그인("비밀번호 없이 패스키·지문·기기 잠금으로 로그인하는 기기예요. 회수하면 그 기기는 비밀번호로 돌아가요." — Empty "등록된 기기가 없어요.") / 「패스키·기기 키로만 로그인」 토글("패스키나 기기 키를 먼저 등록해야 켤 수 있어요.") / 로그인한 기기 목록(OS·브라우저·현재 기기 표시·마지막 사용·IP·행별 로그아웃)+「현재 기기 외 모두 로그아웃」 / 말미 「대화 잠금」 진입 행 — 스샷 live-1017-admin-auth-security.png ② 발견: 「대화 잠금」 진입 행 부제가 「메신저 암호화 키 · 복구 코드 · 기기 승인」 — 10/15 폐지(556cf9e)된 복구 코드 문구 잔존(개발팀 전달감) ③ 내 정보 탭 실측 구성(10): 기본 정보(사번·소속 팀·생년월일)/연락처(전화번호·주소 「입력」·비상연락처 「입력」)/계좌정보/근무시간(예 "3교대 주간 (07:00–15:00)")/서명·도장("결재문서(휴가·시간외·외근 신청서 등) 서명란에 사용돼요." 「등록」) — 진입 URL #settings/myinfo ④ 프로필 메뉴 구성 변화: 내 정보·인증/보안 설정·조직 설정·워크스페이스 전환·로그아웃 — 10/14 실측에 있던 「사용 분석 설정」 미노출, 「워크스페이스 전환」 신규 관찰 - 카나/PM
Data I/O
Server → Client
변수
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 조직 설정 값 변경 | 섹션 값 | sdk.settings.update() (추정) | settings:write (라벨 "설정 수정", 매핑 추정) |
| 출근 기록 방식 변경 | source | sdk.settings.update() (추정) | settings:write (추정) |
| 알림/셀프서비스 토글 | boolean | sdk.settings.update() (추정) | settings:write (추정) |
| 내 정보 수정 | 본인 프로필 | sdk.employee.updateSelf() (추정) | 본인(self scope, 추정) |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 동기/비동기 | 비고 |
|---|---|---|---|
| Secom 지문 단말기 | 출근 기록 방식=지문 단말기 시 secom_events punch 수집 활성 | 비동기(polling 주기 TBU) | secom_sync_state.enabled |
| 직원 앱 (HBEA) | 셀프서비스 허용 항목 → 직원 "내 정보" 수정 가능 항목 결정 | 동기 참조 | [[HBEA]] 내 정보 |
| 급여 산정 (HBHR) | 급여 지급일·마감일 → 산정 주기 | 동기 참조 | 마감일→지급일 |
조직 설정 탭 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 진입 조건 | - | • 조건1 [설정 수정] 인증 시 사이드바 "기타" 그룹 > "설정"으로 진입- CASE01 [미인증/미보유]: /admin/signin 리다이렉트 | 인증 세션 · RBAC | |
| 01 | 초기 상태 | Output | • 진입 시 "조직 설정" 탭 기본 랜딩, 각 섹션 read 모드 표시 | - | |
| 10 | 좌측 내비 (조직 설정·내 정보) | Nav | • (10/21 재편, #1257 eb296b9 — 10/22 실측) 좌측 내비 「조직 설정」 / 「내 정보」 2항목 전환 • 클릭 시: CASE01 [조직 설정] → 앵커 탭 7개 + 섹션 카드 묶음 · CASE02 [내 정보] → 본인 프로필(70, 인라인 수정) | - | 종전 상단 가로 2탭에서 재편 |
| ㄴ12 | 앵커 탭 (조직 설정) | Tab | • (10/21 신설, #1257 — 10/22 실측) 조직 설정 상단 앵커 탭 7개: 기본 정보 / 급여 · 시트 / 근태 · 근무시간 / 직원 앱 / 보안 / 발신 · 연동 / 알림 설정 • 클릭 시: 해당 묶음 섹션으로 스크롤(콘텐츠 교체 아님 — 전 섹션이 한 페이지에 상주) | - | 기존 섹션(20~60)이 7묶음으로 재배치 |
| ㄴ13 | 설정 항목 검색 | Input | • (10/21 신설, #1257 — 10/22 실측) 상단 「설정 항목 검색」 입력 — 설정 항목을 검색해 해당 카드 탐색 - 검색 동작 상세(필터 vs 하이라이트) TBU (실사 시 미입력) | - | TBU: 검색 동작 상세 |
| 20 | 기본 정보 | Section | • 조직 기본 정보를 표시 — 상호 / 법인명 / 기관코드 / 사업자번호 / 대표자명 / 대표전화 / 이메일 / 팩스 / 웹사이트 / 직인 - CASE01 [빈 항목]: "—" 표기(라이브 이메일·웹사이트="—") · 직인 미등록 시 "미등록" | organizations · organization_parameters | |
| ㄴ21 | 병원 로고 | Upload | • 병원 로고 이미지 업로드·표시 필드 (기본 정보 섹션) - read 모드: dt 라벨 "병원 로고", 값(로고 이미지) 표시 · CASE01 [미등록]: "등록된 로고가 없어요" - edit 모드: 라벨 "병원 로고", "병원 로고 업로드" 버튼(ds-btn--line, label을 파일 인풋으로 사용), 도움말 "업로드하면 좌측 상단에 hereby 로고와 함께 병원 로고가 표시돼요. (500KB 이하 이미지)" • 업로드 시: 로고 등록 → LNB 심볼 슬롯에 병원 로고 표시(416d863로 코브랜딩→슬롯 대체 전환) - 제약: 500KB 이하 이미지 - CASE02 [삭제 후 저장]: 로고·직인 삭제가 조직 저장 시 영속 — 저장 후 재진입 시에도 삭제 유지 (코드 반영: b09c616, 구버전은 삭제가 저장에서 유실되던 버그) | organization_parameters | 신설 (코드 반영: 609eb73) · LNB 표시 [[HBAD100_App Shell·사이드바]] · 삭제 영속(b09c616) |
| ㄴ22 | 수정 | Button | • 기본 정보를 편집 모드로 전환 • 클릭 시: read → 편집 모드 전환 | organization_parameters | 편집 모드 · TBU: 저장 동선 |
| 30 | 급여 설정 | Section | • "지급일·마감일·근무시간" 값 표시 — 급여 지급일(30일) / 마감일(21일) / 회계연도 시작월(1월) / 주당 근무시간 한도(52시간) / 1일 기본 근무시간(8시간) / 통화(KRW) - CASE01 [미설정]: 기본값 표기(추정) | organization_parameters · 급여 산정(HBHR) | 마감일→지급일 산정 주기 |
| ㄴ31 | 주간 한도 알림 (weeklyLimitAlert) | Toggle | • 직원이 주간 근로시간 한도를 초과하면 관리자·인사관리자에게 알림 발송 여부 (급여 설정 섹션, 기본 켜짐) - read 모드 라벨 "주당 초과 알림", 값 "사용" / "사용 안 함" - 편집 모드 라벨 "주당 근무시간 초과 알림", 안내 "주당 근무시간 한도를 초과하면 관리자·인사관리자에게 알림을 보내요." • 토글 시: orgSettingsForm.weeklyLimitAlert 반영 (기본값 on) | organization_parameters(workHours.weeklyLimitAlert) · 주당 근무시간 한도(52시간) | 신설 (코드 반영: b375f14) · 기본 켜짐 |
| ㄴ32 | 인센티브 자기 등록 허용 | Toggle | • 직원이 직원 앱 결재 화면에서 본인 인센티브(프리셋 실적)를 직접 등록할 수 있는지 조직 단위 on/off (급여 설정 부근, 기본 꺼짐 opt-in) - 카드 제목 "인센티브", 안내 "직원 자기 등록", 항목 값 "직원앱 인센티브 자기 등록" - 도움말(원문): "켜면 직원이 직원앱 결재 화면에서 오늘 실적(프리셋 항목·건수)을 직접 등록할 수 있어요. 끄면 등록 메뉴가 숨겨지고 서버에서도 차단돼요. 관리자·시트 경로는 영향받지 않아요." • 토글 시: incentive.self_registration 파라미터 생성/수정 (없으면 create, 있으면 update)- CASE01 [OFF]: 직원 앱 인센티브 등록 진입점 미노출 + 서버 등록 차단 · CASE02 [ON]: 직원 앱 결재 신규 등록 시트에 "인센티브 등록" 노출 | organization_parameters(incentive.self_registration) · [[HBEA400_결재 허브]] | 신설 (코드 반영: e9d745c) · 기본 꺼짐(opt-in) · 관리자·시트 경로 미영향 |
| ㄴ33 | 신규 입사자 시트 자동 추가 | Toggle | • 직원 등록(단건·엑셀 대량 추가) 시 직원 기준 수동 시트에 그 직원 행을 자동으로 넣을지 조직 단위 on/off (급여 설정 카드, 기본 꺼짐 opt-in) - read 모드: 라벨 "신규 입사자 시트 자동 추가", 값 "켬" / "꺼짐"(muted) - 편집 모드 체크박스 도움말(원문): "직원을 등록하면 직원 기준 수동 시트(이번 달 이후 · 상시, 잠기지 않은 시트)에 그 직원 행이 자동으로 들어가요. 자동 채움 규칙이 있는 시트는 원래대로 새로고침 때 채워져요." • 토글 시: orgSettingsForm.sheetsAutoAddNewEmployees 반영 → 저장 시 settings.sheets.autoAddNewEmployees - 대상 제외: 자동 채움 규칙 시트 · 잠김/작업 완료 시트 · 지난 달 시트 · 입사일이 시트 기간 이후 · 이미 행 있음 | Organization.settings.sheets.autoAddNewEmployees · [[HBAD201_직원 추가·수정 모달]] ㄴ90-1·ㄴ90-2 · [[HBHR202_직원 추가]] | 신설 (코드 반영: d453e2d0, #903, MED-109) · 기본 꺼짐 · 직원 마스터 시트 커밋 생성 직원은 대상 아님 · TBU: 라이브 실사 이월 |
| 35 | 메시지 발신 | Section | • 카드 제목 "메시지 발신" (원문), 설명 "내부 메시지 발송 시 발신자 이름·이메일" (원문). 업무용 내부 메시지(연차 통보·촉진 등)에 표시할 발신 이름·이메일을 조직 단위로 관리 — 발송 화면에는 발신자 피커를 두지 않고 항상 이 설정을 사용 - read 모드: "발신 이름" / "발신 이메일" 값 표시. 값 없으면 "미설정 (플랫폼 메시지 기본)" (원문, muted) - edit 모드 아래 ㄴ36 참조 | organization_parameters(messageSender.name/email) · [[HBAD251_연차 현황·결재]] 촉진 통지 | 신규 · TC20 메시지 발신 설정(코드 반영: 36989ac) · 전자서명 발신 설정과 동일 UX·별도 카드 |
| 37 | 용어 표시 (terminology) | Section | • 병원마다 「역할」을 「직책」 등으로 다르게 부르는 요구를 화면 낱말만 바꾸는 조직 설정으로 처리하는 카드. 제목 「용어 표시」 • read/편집 모드: 다른 카드와 동일(수정 → 편집 → 저장) - 현재 지원 항목 = role 1종. 값 없음: 기본 낱말 「역할」• 적용 범위: LNB · 직원 표 머리글 · 필터 · 역할 탭 · 대량 업로드 안내/템플릿 머리글. 역할 데이터·권한 코드는 불변 • 조사 처리: ko 문장의 「역할」을 {@role} / {@role|이/가} 토큰으로 두고 받침에 맞는 조사를 자동 부착(josa)• 전파: 로그인·me·워크스페이스 입장 응답 7곳에 organizationTerminology를 실어 모든 앱 스토어(term())에 반영 - ⚠ LNB 메뉴 라벨은 새로고침 후 반영(lnbSidebar 스냅샷) - 대량 업로드 파서는 치환 낱말·「역할」 둘 다 허용 | Organization.settings.terminology.role · [[HBAD200_직원 관리]] · [[HBAD220_역할 관리·권한 트리]] · [[HBAD100_App Shell·사이드바]] | 신설 (코드 반영: 47b53a9, #807) · 라이브 실사 확인(2026-09-25): 조직 설정에 카드 「용어 표시」 실측 — 설명 원문 "이 병원에서 다르게 부르는 화면 명칭", read 표시 "역할 · 역할 (기본)" |
| 38 | 근로계약 기준 (sheetContractBasis) | Section | • 시트(급여대장·퇴사 정산·연말정산 등)의 식별 열이 보여주는 근로계약 값(기본급·호봉 금액·근속 수당·계약 형태 등)을 시트 년월에 유효했던 계약으로 고를 때, 한 달에 계약이 둘 이상이면 어떻게 합칠지 조직 단위로 선택. 제목 「근로계약 기준」 - 「소정근로일 비율 합산」(기본, prorate): 금액은 각 계약이 유효한 기간의 소정근로일(월~금 − 휴일) 비율로 합산(12일/8일 → 12/20 + 8/20), 나머지는 월말 최종 계약 값 - 「월말 최종 계약서」(last_contract): 전부 월말 기준 유효한 최종 계약 값(없으면 그 달 마지막으로 끝난 계약) • 계약이 없는 달(입사 전·퇴사 후)은 빈 값. 상시 시트는 설정과 무관하게 지금 활성 계약 • read/편집 모드: 다른 카드와 동일(수정 → 편집 → 저장). 편집은 라디오(ds-sub-tab 룩) | Organization.settings.sheetContractBasis · api sheet-contract-period.service · [[HBHR100_시트 워크스페이스 (공통 Shell)]] 시트 식별 열 | 신설 (코드 반영: b2a0dc0, #873, MED-703) · 기본 prorate · 미러 역수용(개발 커밋이 docs/spec 직접 기재) · 라이브 실사 확인(2026-09-25): 조직 설정에 카드 「근로계약 기준」 실측 — 설명 원문 "시트에서 한 달에 계약이 둘일 때 기본급 등을 고르는 방식", read 표시 "합산 기준 · 소정근로일 비율 합산 (기본)" |
| ㄴ36 | 발신 이름·이메일 입력 | Input | • (edit 모드) 발신 이름·이메일 자유 입력(직원 드롭다운 아님) - "발신 이름" 입력(data-testid=settings-message-sender-name, placeholder "예: 인사팀" 원문) - "발신 이메일" 입력(type=email, data-testid=settings-message-sender-email, placeholder "예: hr@company.com" 원문) - 도움말(원문): "비워두면 플랫폼 기본으로 발송됩니다. 워크스페이스 생성 시 owner 정보로 초기화돼요." • 저장 시: 조직 설정 저장과 동일(orgSettingsForm.messageSenderName/Email) | organization_parameters(messageSender) | 조직 생성 시 owner 정보로 초기화, 이후 SoT는 설정값(owner 계정 변경과 자동 동기화 안 함) · 발송 시점 값은 이력에 스냅샷 보존 |
| 40 | 출근 기록 방식 | Section | • 조직 근태 원천을 선택 — 현재 "지문 단말기 (Secom)" • 선택 시: CASE01 [Secom] → secom_events punch 수집 활성 - 직원별 개별 설정은 직원 모달의 "출근 기록 방식"(조직 기본값 사용 / 앱 (Web/Mobile) / 지문 단말기 (Secom) / 관리자 수동 입력) - (10/10 머지, #1145, MED-970) 「지문 단말기」 선택 시 스위치 「단말기의 모든 태그를 출퇴근으로 봐요」(10/13 편집 모드 실측) + 도움말 "켜면 문을 열려고 그냥 태그한 출입 기록은 근태에 넣지 않고 System Admin 지문 기록에 「무시」로만 남아요. 하루 첫 출근 · 마지막 퇴근 규칙은 그대로예요. 직원 앱 근무 기록에는 기록마다 지문 · 앱 · 관리자 입력 출처가 보여요."(원문) — settings.attendance.secomPunchTypesOnly(기본 끔). 켠 조직만 지문 처리기가 rawEventType 1(출근)·2(퇴근)만 근태 반영, 출입 태그는 ignored. 기록 출처 표시는 [[HBEA200_근무 탭 (홈)]] 29 | secom_sync_state · [[POL_근태원천]] · [[HBAD201_직원 추가·수정 모달]] · [[HBSA230_Secom Sync (지문 동기화 소스)]] | 근태 원천 결정 · #1145 스위치 10/13 실측 |
| 45 | 직원 앱 첫화면 | Section | • (채록 10/8 — 카드 자체는 기존) 「직원 앱 첫화면」 카드: 요약(read) 모드에 홈 카드 구성과 끝줄 「AI 어시스턴트: {켬/꺼짐}」·「화면 캡처 제한: {켬/꺼짐}」(#1090 신설 줄) 표시, 편집 모드(라이브 채록 10/8 낮): 「오늘의 축하 카드」(생일 축하·입사 기념일 축하, "둘 다 끄면 오늘의 축하 카드가 첫화면에서 사라져요.") · 「공지 카드」(게시 중인 공지 보이기 + 최대 {n}건 + 「확인한 공지도 게시 후 {n}일 동안 보이기」(0~30, #1125 신설) — 도움말 "아직 확인하지 않은 공지(정보 게시글은 열어 보지 않은 글)는 게시 중이면 늘 보여요. 확인한 공지는 위 일수가 지나면 빠지고, 0일이면 확인하자마자 빠져요. 공지 조회 권한이 없는 직원에게는 설정과 무관하게 보이지 않아요." — 라이브 채록 10/10) · 「이번 주 근태 카드」("월~일 근무·휴가·외근·출퇴근·근무시간 표 보이기", "직원 본인의 「전체 근무기록」과 같은 기준으로 합산해요. 이전 주로 넘겨 볼 수 있어요.") · 「직원 앱 AI 어시스턴트」 체크박스(도움말 "직원 앱 「더보기」에 AI 어시스턴트가 생겨요. 직원 본인의 근태·휴가·급여명세서와 앱 사용법만 답하고, 신청은 대신하지 않아요. 직원에게는 역할 권한 「직원 앱 AI 어시스턴트 사용」(기본 역할에 포함)도 필요해요.") · 「화면 캡처 제한」 체크박스(ㄴ45-1) · 「카드 순서」(1 오늘의 축하 → 2 공지 → 3 이번 주 근태, "「현재 상태」(출퇴근) 카드는 항상 맨 위에 고정이에요.") - AI 줄 보조 문구: 플랫폼에서 AI 미개방 조직이면 「플랫폼에서 AI 가 열리지 않은 조직 — 운영팀에 요청 후 켤 수 있어요」 | settings.employeeHomeLayout · settings.ai.modules.employeeApp · [[HBEA100_홈]] | 라이브 실사 2026-10-08: 요약 카드 끝줄 「AI 어시스턴트: 켬 / 화면 캡처 제한: 켬」 실측 · 10/10 재실사: 요약 모드에 「확인한 공지: 게시 후 7일 동안 표시」 줄 추가 실측(0일이면 「확인하면 바로 빠짐」, #1125) |
| ㄴ45-1 | 화면 캡처 제한 | Checkbox | • (10/8, #1090 ef18fa36) 편집 모드 체크박스 「화면 캡처 제한」 — 도움말 원문 "직원 앱의 급여명세서, 내 정보, 메신저에서 화면 캡처를 제한해요. 끄면 캡처 안내도 하지 않아요." • 저장: settings.screenCaptureProtection(boolean) — 키 없음 = 켬(resolveScreenCaptureProtection, 저장 시 !== false), 명시적 false만 꺼짐- CASE01 [켬(기본)]: 직원 앱 급여명세서·내 정보·메신저에서 캡처 가림 + 스크린샷 토스트 · CASE02 [끔]: 보호·안내 모두 없음 • 요약(read) 모드 값 = 저장값 해석(키 없으면 켬) | settings.screenCaptureProtection · [[HBEA110_Shell·탭바·알림]] 50 · [[HBEA300_메신저]] ㄴ43 · [[HBEA530_급여명세서 모달]] | 신설 (#1090) · 요약 줄·편집 폼 체크박스 모두 라이브 실측(10/8 낮): 체크박스 라벨 "화면 캡처 제한"·도움말 원문 일치·okbest 현재값 켬(체크됨) |
| ㄴ41 | 기본 출퇴근 기준시간 | TimeRange | • (출근 기록 방식 섹션 신설) 조직 전체의 기본 출퇴근 기준 시각을 지정 — 라이브 값 "09:00 ~ 18:00"(defaultCheckIn / defaultCheckOut). 상세 카드에 급여 지급일·마감일·근무시간(주당 근무시간 한도·1일 기본 근무시간)과 함께 노출 • 근무 그룹만 있거나 근무 배정이 없는 직원(간호사 외 여러 직군 유입으로 발생)의 출퇴근 기준 시각이 비지 않도록, 기준 시각을 ①근무표 칸 → ②직원 근무 형태 → ③근무 그룹(요일·출근 시각으로 선택) → ④조직 기본 근무 형태 → ⑤이 「기본 출퇴근 기준시간」 순으로 정하는 규칙의 최종 폴백값이다 - CASE01 [비움]: 값이 비면 09:00–18:00으로 폴백 • 이 값은 기준 시각(출근/퇴근 판정용)만 정하고 실제 근무시간은 실제 출퇴근 기록으로 계산 — 급여 시간이 기준시간 때문에 조용히 바뀌지 않는다. 앱 출근·일괄 입력·지문(Secom) 처리에 공통 적용 | organization_parameters · organizations(defaultCheckIn/Out) · [[HBAD260_근무 설정 (근무 그룹·유형)]] · [[HBAD250_근태 현황 (근무)]] · [[POL_출퇴근]] | 신설 (코드 반영: 5a24b28, 9/15) · 라이브 실증 "09:00 ~ 18:00"(2026-09-15 실사) |
| ㄴ42 | 신청 시간 단위 | Dropdown | • (신설 10/7, #1053, MED-901) 근태 섹션 「신청 시간 단위」 — 보기 라벨 + 편집 select(15분/30분/60분, 기본 30분), 저장 시 settings.requests.timeStepMinutes • 적용 범위: 직원 앱 연장근무·외근 신청/보고와 시간 단위 휴가의 시각 선택기가 이 격자만 표시([[HBEA420_근무 신청 (연장·휴일/외근)]]·[[HBEA410_휴가신청]]). 관리자 근태 보정(출퇴근 기록 수정)은 1분 단위 유지, 기존 신청 값은 격자 밖이어도 선택지에 끼워 보임 • 조회 = organization.getRequestTimeStep(권한 관문 없음 — getEmployeeHomeLayout과 같은 이유) | settings.requests.timeStepMinutes · core request-time-step | 신설 (90b7cf44, #1053) · 라벨 원문 TBU(실사 대기) — 배경: 1분 단위 입력이 수당 계산(30분 단위)과 어긋나 정산 반올림 분쟁 여지(10/6 병원 요구) |
| ㄴ43 | 연장 신청 유형 | Toggle | • (10/10 머지, #1141, MED-965) 「신청 시간 단위」 아래 — 요약 행 「연장 신청 유형: 직원이 유형을 고름」(10/13 실측, 기본값) / 편집 모드 스위치 라벨 "직원이 연장 유형(평일·야간·휴일 등)을 골라요" + 도움말 "켜면 직원 앱 연장 신청서에서 유형 선택이 사라지고 시작·종료 시간만 적어요. 평일·야간(22시~06시)·휴일 분류는 근무일과 시간으로 서버가 정하고 급여 산정도 그 분류를 써요. 유형 마스터의 배율은 쓰지 않아요."(원문) • 저장: settings.requests.simplifiedOvertimeType(기본 끔, resolveSimplifiedOvertimeType). 켠 병원의 새 신청은 유형 마스터 배율을 타지 않으므로 유형별 배율을 쓰던 병원은 급여 담당 확인 필요(#1141 변경 영향) | settings.requests.simplifiedOvertimeType · [[HBEA420_근무 신청 (연장·휴일/외근)]] 40 | 신설 (#1141) · 10/13 라이브 실측(요약·편집 원문) |
| ㄴ45-2 | 캡처 기록 (감사 로그 열람) | Button/Modal | • (10/10 머지, #1147, MED-973) 요약 모드 「화면 캡처 제한: 켬」 줄 옆 「캡처 기록」 버튼(employee:read 조직 전체 권한 보유 시만) → 모달 「화면 캡처 기록」(10/13 전문 채록): 부제 "급여명세서 · 내 정보 · 메신저 화면에서 스크린샷이나 화면 녹화가 감지되면 앱이 기록을 남겨요. 화면 내용은 저장하지 않아요. Android 는 캡처 자체가 막혀 기록이 남지 않아요." + 필터(기간 ~ · 화면: 모든 화면/급여명세서/내 정보/메신저 · 종류: 모든 종류/스크린샷/녹화 시작/녹화 종료 · 이름/사번 검색) + 표(시각·직원·화면·종류·기기·앱 버전 · OS, 50건 페이징) + Empty "기록이 없어요." + 「닫기」 • 원천: screen_capture_events(추가 전용, 수정·삭제 경로 없음) — 직원 앱이 iOS 스크린샷·녹화 감지 시 보고(clientEventId 유니크로 오프라인 재전송 흡수, 화면 내용 미저장). 이름 칸은 직원 카드 트리거. 캡처 제한 꺼진 병원은 기록이 쌓이지 않음, iOS 녹화 시작·종료 이벤트는 네이티브 빌드 필요 | screenCapture.report/list · 마이그레이션 1970 | 신설 (#1147) · 모달 10/13 라이브 전문 채록(기록 0건) |
| 50 | 보안 · 셀프서비스 | Section | • 로그인 보안·셀프서비스 항목 관리 — "비밀번호 찾기 허용" 토글(+ 비밀번호 규칙 표기) + "직원 본인 수정 허용 항목"(안내 "직원이 내정보에서 직접 수정할 수 있는 항목": 프로필 사진 / 전화번호 / 주소 / 비상연락처 / 계좌정보) | organization_parameters · 직원 앱 내 정보(HBEA) | 라이브: 본인 수정 5항목 일치 + 비밀번호 규칙 표기 추가 관찰(2026-08-17 실사) |
| ㄴ51 | 비밀번호 찾기 허용 | Toggle | • 직원의 비밀번호 찾기 허용 여부 • 세부 비밀번호 규칙 표기(라이브 관찰): 임시 비밀번호 = 숫자만·6자리 / 일반 비밀번호 = 8자 이상·소문자·숫자 • 토글 시: 설정 인라인 반영(추정) | organization_parameters | 라이브 비밀번호 규칙 표기 추가(2026-08-17 실사, 사양 미기재분 반영) |
| ㄴ55 | 2단계 인증 필수 | Toggle | • (10/13, #1227 605a4d3) 「비밀번호 찾기 허용」 아래 행(10/14 실측) — 켜면 조직 전 직원에게 2단계 인증(TOTP) 필수: 미등록 직원은 로그인 직후 등록 안내, 등록한 직원은 본인이 끌 수 없음 • 2단계 인증 자체: 비밀번호 로그인(auth.login·loginWithCode·account.login)에 5분 챌린지 → auth.verifyTwoFactor 로 세션 — 패스키·기기 키 로그인은 묻지 않음 | organization_parameters · [[HBEA100_로그인]] · HBEA520(가칭) | 신설 (#1227) · 행 존재 10/14 실측, 토글 상태·도움말 원문은 편집 모드 미진입 TBU |
| ㄴ52 | 본인 수정 허용 항목 | Toggle | • 프로필 사진 / 전화번호 / 주소 / 비상연락처 / 계좌정보 항목별 셀프 수정 허용 • 토글 시: ON 항목이 직원 앱 "내 정보"에서 수정 가능해짐(추정) | 직원 앱 내 정보(HBEA) | |
| ㄴ53 | 임시 비밀번호 형식 | Dropdown/Input | • 임시 비밀번호 발급 형식을 조직 단위로 지정 — 기본 무작위, 신설 "고정값" 옵션(CS-LOC-260909-0003) - CASE01 [고정값 ON]: 조직이 정한 값(예: 0000)을 직원 등록·일괄 등록·관리자 초기화·셀프 초기화 **모든 발급 경로(5곳)**에서 그대로 발급 - CASE02 [값 없는 fixed]: 스키마에서 거부, 런타임에서 값이 비면 무작위 발급으로 폴백 • 발급 경로 5곳을 issueTemporaryPassword() 하나로 통합. 모든 경로가 첫 로그인 시 비밀번호 변경을 강제하므로 고정값 노출 창 = 첫 로그인까지 | organization_parameters · 직원 발급 경로(등록/일괄/관리자·셀프 초기화) | 신설 (코드 반영: 84f0548, #635) · 노출 창 = 첫 로그인까지 |
| ㄴ53-1 | 임시 비밀번호 유효기간 | Input | • (신설 10/7, #1054, MED-922) 「임시 비밀번호 유효기간」 입력(settings.passwordPolicy.temporaryValidityDays, 1~90일, 없으면 기한 없음) — 아직 안 바꾼 임시 비밀번호가 기간을 넘기면 로그인 때 UNAUTHORIZED("유효기간이 지났어요 … 재발급 요청"). 판정은 core isTemporaryPasswordExpired(mustChangePassword + passwordChangedAt) 한 곳. 요약 pill에 유효기간 표시, 앱 배포 온보딩 행에 tempPasswordExpired → 「재발급 필요」 라벨 • 고정값 옵션 라벨·도움말에 앱 안내 문자 용도 명시(ㄴ53) • 감사 로그: organization.updateSettings가 passwordPolicy를 받으면 audit_logs에 before/after 요약(형식·길이·고정값 설정 여부·변경 여부 — 값 자체 제외) 기록. AuditActorKind.MEMBER + 마이그레이션 1950 | settings.passwordPolicy.temporaryValidityDays · audit_logs | 신설 (6d416f3f, #1054) · 입력 라벨·안내 원문 TBU(실사 대기) |
| ㄴ54 | 일반 비밀번호 규칙 (userPasswordPolicy) | Input/Checkbox | • 직원이 직접 정하는 비밀번호 규칙 — "일반 비밀번호 최소 길이"(4~20, 기본 8) + "일반 비밀번호 필수 포함 문자"("대문자 (A-Z)" / "소문자 (a-z)" / "숫자 (0-9)" / "특수문자", 기본 전부). 임시 비밀번호 형식(ㄴ53)과 별개 • ⓘ 툴팁(원문): "직원이 직접 정하는 비밀번호(첫 로그인 변경·내 정보 비밀번호 변경·초대 수락)에 적용되고, 화면 안내 문구도 이 값을 따라가요. 관리자의 「직접 설정」은 최소 길이만 따라요. 회원가입처럼 아직 병원이 없는 계정 생성에는 기본 규칙(8자 이상, 대문자·소문자·숫자·특수문자)이 적용돼요." • 저장 시: 적용 화면의 입력칸 안내·화면 검사·서버 검사가 모두 이 값을 따름(예: 4자·필수 문자 해제 → 안내 "4자 이상", 1234 통과)- CASE01 [미설정 병원]: 기본값(8자·네 종류)으로 같은 경로 — 안내 "8자 이상, 대문자·소문자·숫자·특수문자 포함" | Organization.settings.userPasswordPolicy · [[HBEA100_로그인]] ㄴ23-1 · [[HBEA510_내 정보·근무 설정]] ㄴ51 · [[HBAD201_직원 추가·수정 모달]](직접 설정 = 최소 길이만) · 초대 수락 화면 | 변경 (코드 반영: c6347029, #995) · 구버전은 서버 내 정보 변경 1곳만 적용, 나머지 8자 고정 · TBU: 라이브 실사 이월 |
| 60 | 알림 설정 | Section | • 앱 푸시 알림 정책 관리 — "앱 푸시 알림"("휴가·연장근무·증명서 등 결재·승인 알림을 휴대폰 푸시로 받아요. 꺼도 앱 알림함에는 계속 쌓입니다.") + "전체 알림 받기"("끄면 모든 유형의 알림이 일시중지돼요.") | notifications · 앱 푸시 | |
| ㄴ61 | 앱 푸시 알림 | Toggle | • 결재·승인 알림의 휴대폰 푸시 수신 여부 • 토글 시: OFF여도 앱 알림함에는 계속 적재(원문) | notifications · 앱 푸시 | |
| ㄴ62 | 전체 알림 받기 | Toggle | • 전체 알림 일시중지 스위치 • 토글 시: OFF → 모든 유형 알림 일시중지(원문) | notifications | |
| 70 | 내 정보 탭 | Tab | • 로그인 관리자 본인 프로필 조회·수정 진입 • 클릭 시: 내 정보 탭 전환 (하단 "내 정보 탭 사양표" 참조) | employees(본인) | |
| 80 | 에러·실패 | - | • 저장 실패 시 피드백(토스트/무반응) = TBU (라이브 미검증) | - | TBU |
| 90 | 권한별 차이 | - | • 조건1 [설정 수정] 없으면 진입 자체 차단(/admin/signin)- 섹션별 read-only 분기 여부 = TBU | RBAC | 권한 분기 TBU |
내 정보 탭 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | • "내 정보" 탭 클릭 시 노출 — 대상 = 로그인 관리자 본인 | employees(본인) | |
| 10 | 본인 프로필 | Section | • 로그인 관리자 본인 프로필 조회·수정 • 섹션 구성(2026-10-17 실측, #settings/myinfo): 아바타+이름+이메일(「사진 변경」) / 기본 정보(사번 · 소속 팀 · 생년월일 — 값 없음 "—") / 연락처(전화번호 · 주소 「입력」 · 비상연락처 「입력」) / 계좌정보(값 없음 "—") / 근무시간(예 "3교대 주간 (07:00–15:00)") / 서명/도장("결재문서(휴가·시간외·외근 신청서 등) 서명란에 사용돼요." + 「등록」) - CASE01 [프로필 값 부재]: "—" 또는 「입력」 버튼 표기(실측) • (10/21 재편, #1257 — 10/22 실측) 수정 = 카드 내 인라인 편집: 섹션 「수정」 클릭 → 값이 제자리 입력칸으로 전환(연락처 실측: 전화번호 · 주소(검색) · 상세 주소 · 비상연락처 이름 · 비상연락처 전화번호) + 「취소」/「저장」 — 별도 모달 없음 | employees(본인) | 필드 구성·Empty 표기 2026-10-17 라이브 실측 · 인라인 수정 2026-10-22 실측(연락처 편집 진입 후 취소) |
| 20 | 서명(signature) | Upload | • 본인 서명 이미지 업로드·표시 기능. 서명 이미지를 업로드하면 등록된 서명이 표시됨 • 업로드 시: 서명 이미지 등록 → 문서 결재 양식(승인 폼)에 서명 자동 삽입 연동 - CASE01 [미등록]: 서명 미표시 (등록 안내) | employees(본인) · Employee.signatureImage · [[HBEA510_내 정보·근무 설정]] | 신설 · 문서 결재 양식 서명 삽입 연동(코드 반영: c1d72a3·d7bd3f4) |
| 30 | 비밀번호 재설정 | Modal | • 본인 비밀번호 변경 모달(제목 "비밀번호 재설정") — STEP1 "현재 비밀번호 확인" → STEP2 "새 비밀번호" / "비밀번호 확인" • 새 비밀번호 칸 placeholder = 병원 일반 비밀번호 규칙(ㄴ54) — 예: "8자 이상, 대문자·소문자·숫자·특수문자 포함" - CASE01 [규칙 위반]: "비밀번호는 {min}자 이상이어야 해요." / "비밀번호에 {누락 종류}를 포함해야 해요." - CASE02 [STEP1에서 맞는 현재 비밀번호가 규칙에 안 맞음]: 오류 코드로 구분해 "비밀번호를 다시 확인해 주세요."가 잘못 뜨지 않음 | auth.changePassword · MyInfoForm · 조직 설정 ㄴ54 | 변경 (코드 반영: c6347029, #995) · 진입 = [[HBAD100_App Shell·사이드바]] ㄴ13 계정 메뉴(추정) · TBU: 라이브 실사 이월 |
출근 기록 방식 (근태 원천) 매핑
| 방식 | 설명 | 비고 |
|---|---|---|
| 지문 단말기 (Secom) | Secom 지문 단말기 punch → secom_events → attendances 정규화 | 현재 활성 원천 |
| 앱 (Web/Mobile) | 직원 앱 출퇴근 기록 | 4월 원천 |
| 관리자 수동 입력 | 관리자 수동 입력 | 수정 사유 필수 연동(추정) |
| 조직 기본값 사용 | 직원별 설정에서 조직 설정값 상속 | 직원 모달 전용 옵션 |
권한 / 상태 요약
| 시나리오 | 트리거 | 결과 화면 | 비고 |
|---|---|---|---|
CASE01 [권한 보유 진입] | /admin 설정 진입 | 조직 설정 탭 랜딩 | 기본 |
CASE02 [권한 미보유] | 진입 시도 | /admin/signin 리다이렉트 | RBAC gate |
CASE03 [출근 기록 방식 변경] | Secom 선택 | secom_events punch 수집 활성 | [[POL_근태원천]] |
CASE04 [내 정보 탭] | 탭 클릭 | 본인 프로필 조회·수정 | self scope |
Open Question
- organization_parameters namespace/key 전체 카탈로그(백엔드). TBU.
- 출근 기록 방식 변경 시 기존 근태 데이터 처리. TBU.
- 내 정보 탭 필드 구성 상세. TBU.
- 각 섹션 저장 성공/실패 피드백(80 에러 동작). 라이브 미검증. TBU.
- 파라미터 변경 이력 노출 여부(organization_parameters_history 추정). TBU.
- 메시지 발신: 빈 값일 때 실제 플랫폼 기본 발신자 이름·이메일(요구사항 OQ-1). TBU.
- 메시지 발신: 발신 이메일의 Messenger 화면 실노출 여부·이력 저장 범위(요구사항 OQ-2). TBU.
- 보안: 비밀번호 규칙(임시 숫자만·6자리 / 일반 8자 이상·소문자·숫자) 정책 문서화·강제 로직 여부(2026-08-17 실사 표기 관찰). TBU. → 일반 비밀번호 강제 로직은 #995로 병원 설정 단일 규칙화(ㄴ54) — 라이브 표기 재확인만 남음.