HBAD280_공지
(Hereby) 관리자 패널 > 총무 > 공지
| 메타 | 앱: 관리자 패널 (HBAD)대상 사용자: 조건1 [공지/알림 관리] 권한 보유 역할프로토타입: TBU관련 정책: TBUStatus: reviewOwner: 카나 |
개요
공지는 관리자가 조직 구성원 대상 공지사항을 작성·게시하는 화면이다. 사이드바 "총무" 그룹의 "공지" 메뉴 진입점이다.본문은 General Affairs 앱 임베드(/general-affairs/notices?embedded=1)로 로드된다 — 관리자 패널이 GA 도메인 화면을 감싼다.목록 컬럼은 제목 / 카테고리 / 우선순위 / 게시 / 게시일 / 만료일 / 관리이며, "+ 공지 작성" 폼으로 신규 공지를 등록한다.
문서 히스토리
- 2026-07-06 최초 작성 - 카나/콸
- 2026-07-10 라이브 기능 검토 반영 (GA 임베드 · 컬럼/필터/작성폼) - 카나/콸
- 2026-07-21 GC700 깊이 재작성 - 카나/콸
- 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
- 2026-07-24 코드 변경 반영(f1d0cdb·17f0436) - 카나/콸
Data I/O
Server → Client
변수
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
| 메타 | $ |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 공지 작성/게시 | 제목·내용·카테고리·우선순위·만료일시·즉시 게시·게시 대상 팀 | 공지 upsert (GA 도메인, 매핑 TBU) — 선택 팀에만 알림 발송, 활성 멤버십 검증 (코드 반영: f1d0cdb) | 알림/총무 (라벨 기반, 매핑 TBU) |
| 확인 내역 팀 필터 | noticeId, teamId | 확인(acknowledgment) 내역 조회 (매핑 TBU) — 활성 팀 멤버십 기준 필터 (코드 반영: 17f0436) | 알림/총무 (추정) |
| 행 삭제 | noticeId | 공지 delete (매핑 TBU) | 알림/총무 (추정) |
외부 통합
| 외부 시스템 | 데이터 | 동기/비동기 | 비고 |
|---|---|---|---|
| General Affairs (임베드) | /general-affairs/notices?embedded=1 프레임 로드 | 동기(iframe) | 본문 전체가 GA 임베드 |
| 알림/발송 (HBNS 추정) | 게시 공지 → 구성원 알림 전파 | 비동기(동선 TBU) | 전파 채널 미확인 |
공지 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 진입 조건 | - | • 조건1 [공지/알림 관리] 보유 시 사이드바 "총무" 그룹 > "공지" 메뉴로 진입 | 권한 트리(알림/총무) | |
| 01 | 초기 상태 | Output | • 진입 시 GA 임베드 로드 후 공지 목록 그리드 표시 | General Affairs | |
| 05 | 본문 임베드 | Embed | • 본문 전체를 GA 앱 임베드(/general-affairs/notices?embedded=1)로 로드- CASE01 [로드 실패]: 처리 = TBU | General Affairs | 타 앱 embed |
| 10 | 공지 목록 | Grid | • 공지를 그리드로 표시 — 컬럼: 제목 / 카테고리 / 우선순위 / 게시 / 게시일 / 만료일 / 관리 - CASE01 [목록 0건]: 빈 상태 (원문 TBU) | 공지 엔티티 | TBU: Empty 원문 |
| 15 | 필터 | Filter | • 목록을 카테고리·게시상태·검색으로 필터링 — 카테고리(전체 / 교육마감 / 시설 / 안전 / 정책 / 일반) / 게시상태(전체 / 미게시 / 게시 중 / 만료) / 검색 "제목 / 내용" • 선택 시: 목록 재조회 - CASE01 [결과 0건]: 빈 상태 | 목록 재조회 | |
| 18 | 행 관리 | Button | • 행별 관리 액션 제공 — "보기" / "수정" / "삭제" • 클릭 시: 각 액션 실행 - CASE01 [게시·만료 건]: "확인 내역" 추가 제공 — 확인(acknowledgment) 내역에 팀 필터(활성 팀 멤버십 기준) 제공 (코드 반영: 17f0436) | 공지 엔티티 · 확인 내역 | 확인 내역 팀 필터(17f0436) |
| 20 | 공지 작성 | Form | • 신규 공지를 등록하는 작성 폼 (아래 필드) • 클릭 시: "+ 공지 작성" 폼 열림 - CASE01 [필수(*) 미입력]: 제출 차단(추정) | 공지 upsert | |
| ㄴ21 | 제목 / 내용 | Input | • 공지 제목·내용 입력 • 입력 시: "제목 *" / "내용 *" 필수 | 공지 엔티티 | 필수 |
| ㄴ22 | 카테고리 | Dropdown | • 공지 카테고리 선택 (교육마감 / 시설 / 안전 / 정책 / 일반) | notice.category | |
| ㄴ23 | 우선순위 | Dropdown | • 우선순위 선택 (낮음 / 보통 / 높음 / 긴급) | notice.priority | |
| ㄴ24 | 만료일시 | DatePicker | • 공지 만료 일시 지정 (날짜+시간 picker, readonly 입력) • 선택 시: "만료일시 *" 필수 | 공지 엔티티 | 필수 |
| ㄴ25 | 즉시 게시 토글 | Toggle | • 작성 즉시 게시 여부 (기본 OFF) • 토글 시: CASE01 [OFF] → 미게시 상태 생성 · CASE02 [ON] → 게시 중 상태 생성 | notice.status | 기본 OFF |
| ㄴ26 | 게시 대상 팀 선택 | Select | • 공지를 게시할 대상 팀을 선택하는 필드. 팀 옵션 lazy load, 활성 멤버십 검증. 선택 팀에만 알림 발송 • 선택 시: 게시 대상 팀 지정 - CASE01 [팀 선택]: 게시 시 선택 팀에만 알림 전파 | 공지 엔티티 · 알림 발송 | 신규 (코드 반영: f1d0cdb) · 배경: 7/21 베스트 요구(팀별 공지) · 팀 옵션 lazy load |
| 30 | 삭제 | Button | • 행 공지 삭제 • 클릭 시: 컨펌 "공지를 삭제할까요?" → 확인 시 삭제 실행(7/10 mutation 검증) | 공지 delete | 삭제 컨펌 |
| 40 | 에러·실패 | - | • 작성/삭제 실패 피드백(토스트/무반응) = TBU (라이브 미검증) | - | TBU |
| 90 | 권한별 차이 | - | • 조건1 [공지/알림 관리] 미보유 시 "총무 > 공지" 메뉴 자체 미노출 | RBAC |
카테고리 / 우선순위 / 게시상태 enum (원문)
| 구분 | 값 | 비고 |
|---|---|---|
| 카테고리 | 교육마감 / 시설 / 안전 / 정책 / 일반 | 필터 "전체" 포함 |
| 우선순위 | 낮음 / 보통 / 높음 / 긴급 | 작성 폼 선택 |
| 게시상태 | 미게시 / 게시 중 / 만료 | 필터 "전체" 포함 |
권한 / 상태 요약
| 시나리오 | 트리거 | 결과 화면 | 비고 |
|---|---|---|---|
CASE01 [미게시 생성] | 즉시 게시 OFF로 작성 | 미게시 상태 행 | 기본 |
CASE02 [즉시 게시] | 즉시 게시 ON으로 작성 | 게시 중 상태 행 → 구성원 전파(TBU) | |
CASE03 [삭제] | 행 삭제 → 컨펌 확인 | 목록에서 제거 | "공지를 삭제할까요?" |
CASE04 [권한 미보유] | 메뉴 접근 | 미노출 | RBAC gate |
Open Question
- 공지 엔티티/컬럼 — 01 org ERD 미포함, GA 도메인 ERD 필요. TBU.
- 게시 대상 범위 — 팀 선택 확정(ㄴ26, 코드 반영: f1d0cdb): 게시 대상 팀 지정 → 선택 팀에만 알림 발송. 역할 단위 지정 여부는 잔여 TBU.
- 구성원 전파 채널 — 직원앱 배너·알림·이메일 중 어느 것인지. TBU.
- 목록 Empty·필터 0건·작성/삭제 실패 원문 문구. 라이브 미검증. TBU.