Skip to content

HBGA230_공지

(Hereby) 총무 > 공지

총무 (HBGA)
대상 사용자조건1 [GA_ADMIN] / 조건2 [SUPER_ADMIN]
프로토타입TBU
관련 정책[[POL_공지 게시]] (token TBU)
Statusreview
Owner카나 (PM)

개요

  • 총무 공지 발행/확인 화면. 이 화면은 Admin 공지([[HBAD280_공지]])의 임베드로, 컬럼·작성 폼·확인 내역은 HBAD280과 동일하다.
  • 카테고리 필터(6종) + 상태 필터(4종) + "공지 작성" 버튼(2026-08-18 정정: "+" 접두 없음) + 7컬럼 그리드로 구성.
  • 게시/만료 공지는 "확인 내역"(notice_acknowledgments)으로 대상자별 확인 현황을 연다. Employee App의 "확인했어요" 읽음 처리와 cross-app 연동(검증됨).
  • 게시 공지는 HBEA300_메신저를 통해 직원에게 수신된다(연계 후보).
  • row action = 미게시: "수정"/"삭제", 게시 중·만료: "보기"/"확인 내역".

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영
2026-07-13카나PM버튼 행동 명세 보강
2026-07-21카나PMGC700 깊이 재작성 + 확정 스타일
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡)
2026-07-29카나PM코드 변경 반영(b61038f)
2026-08-18카나라이브 재검증 정정공지 작성 버튼 라벨 = "공지 작성"("+" 접두 없음) 라이브 확인. 카테고리6·상태4·컬럼7·무기한 표기 일치

Data I/O

Server → Client

변수엔티티.컬럼값 없을 때비고
$general_affairs_notices[] (title/category/priority/isPublished/publishedAt/expiresAt)empty7컬럼 목록 소스
$notice_acknowledgments[]empty대상자별 확인 내역. 조회 = generalAffairs.notice.getAcknowledgedEmployees(noticeId) (TC 확정: 05:5.2 / 06:6.8)

Client → Server

액션전달 값tRPC procedure권한 토큰
공지 작성title, content, category, priority, expiresAt, isPublishedgeneralAffairs.notice.create()GA_ADMIN
공지 수정noticeId + 폼 값generalAffairs.notice.update()GA_ADMIN
공지 삭제noticeIdgeneralAffairs.notice.delete()GA_ADMIN
공지 게시idgeneralAffairs.notice.publish(id) (TC 확정: 05:5.2 / 06:6.8)GA_ADMIN
공지 확인 처리noticeIdgeneralAffairs.notice.acknowledge(noticeId) (TC 확정: 05:5.2)직원(self, cross-app)
미읽음 수-generalAffairs.notice.unreadCount() (TC 확정: 05:5.2)직원(self)
게시 목록-generalAffairs.notice.listPublished() (TC 확정: 05:5.2)직원/GA_ADMIN
확인 내역 조회noticeIdgeneralAffairs.notice.getAcknowledgedEmployees(noticeId) (TC 확정: 05:5.2 / 06:6.8) — read-only. 이전 추정 noticeAcknowledgement.list 는 실재하지 않음(정정)GA_ADMIN, read-only

게시 mutation은 사람이 실행한다. procedure는 TC 크로스체크로 확정됨(추정 제거). token 내부 key 미확정 (OQ).

권한 경계 (TC 확정: 06:6.8): 일반 [EMPLOYEE]generalAffairs.notice.create 호출 시 throw(거부)된다. 공지 생성/수정/삭제/게시는 GA_ADMIN 전용.

외부 통합 (cross-app)

외부 시스템데이터방향비고
Employee App (HBEA300_메신저)게시 공지 수신 / "확인했어요" 읽음양방향확인 읽음 cross-app 검증됨
Admin 공지 (HBAD280)컬럼·폼·확인 내역 정의임베드 원본동일 컴포넌트

화면 플로우

공지 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-• "공지" 메뉴 클릭 시 /general-affairs/notices 진입HBGA100_Shell·사이드바
01초기 상태-• 필터 "전체" 기준으로 7컬럼 공지 목록 노출 (census 총 8건)general_affairs_notices
10카테고리 필터Dropdown• 카테고리 기준으로 목록을 거르는 필터
• 선택 시: 해당 카테고리 행만 표시 ("전체" / "교육마감" / "시설" / "안전" / "정책" / "일반")
general_affairs_notices.category6종
20상태 필터Dropdown• 게시 상태 기준으로 목록을 거르는 필터
• 선택 시: 해당 상태 행만 표시 ("전체" / "미게시" / "게시 중" / "만료")
isPublished + expiresAt 파생4종
30공지 작성Button• 새 공지 작성 폼을 여는 버튼 (HBAD280과 동일 폼)
• 클릭 시: 작성 폼 오픈 (제목*/내용*/카테고리/우선순위/만료일시*(date+time picker)/즉시 게시(기본 OFF))
 - STEP1 필수값(제목/내용/만료일시) 입력
 - STEP2 저장: 즉시 게시 ON이면 게시 중, OFF면 미게시로 저장
notice create · mutation사람 게시
ㄴ35무기한 체크박스Checkbox• "만료일시" 라벨 우측 "무기한" 체크박스 — 체크 시 만료일 필수(*) 해제, 만료 date/time picker 숨김, 안내문 "만료일 없이 무기한으로 게시돼요." 표시, expiresAt=null 저장(만료 없이 게시)
 - CASE01 [체크]: 만료일 없어도 저장 가능(제목·내용만 필수)
 - CASE02 [미체크]: 만료일시 필수 유지
notice create/update · expiresAt(nullable) · noticeForm.indefinite신설 (코드 반영: b61038f)
40공지 목록Table• 공지를 7컬럼으로 나열하는 그리드 ("제목 / 카테고리 / 우선순위 / 게시 / 게시일 / 만료일 / 관리")
• 행 상태별 관리 액션이 41~43로 분기
• 만료일 없음(무기한) 행은 만료일 컬럼에 "무기한" 표시
general_affairs_notices무기한 표시 (코드 반영: b61038f)
ㄴ41미게시 rowListItem• 아직 게시되지 않은 공지 행. 예: "test / 일반 / 보통 / 미게시 / — / 2026.07.03."
• "수정" 클릭 시: 공지 수정 폼(기존 값 채움) 오픈
• "삭제" 클릭 시: 컨펌 "공지를 삭제할까요?" → 실행
notice update / delete관리 액션 "수정 | 삭제"
ㄴ42게시 중 rowListItem• 현재 게시 중인 공지 행. 예: "전체 공지 / 일반 / 보통 / 게시 중 / 2026.06.30. / 2026.07.03."
• "보기" 클릭 시: 공지 상세 보기 오픈
• "확인 내역" 클릭 시: 44 확인 내역 오픈
• 상세 보기 만료일도 만료일 없을 시 "무기한" 표시
notice_acknowledgments관리 액션 "보기 | 확인 내역" · 무기한 표시 (코드 반영: b61038f)
ㄴ43만료 rowListItem• 만료된 공지 행. 예: "전사 ESG를 위한 안내 사항 / 정책 / 보통 / 만료 / 2026.04.10. / 2026.04.09."
• "보기" 클릭 시: 공지 상세 보기 오픈
• "확인 내역" 클릭 시: 44 확인 내역 오픈
notice_acknowledgments만료일 < 게시일 validation gap
ㄴ44확인 내역Button• 대상자별 확인자/확인시각을 조회하는 뷰(generalAffairs.notice.getAcknowledgedEmployees(noticeId)). Employee App "확인했어요"(.acknowledge(noticeId)) 읽음 처리와 연동
• 클릭 시: 확인 내역(대상자별 확인 현황) 오픈 (read-only)
notice_acknowledgments / HBEA300_메신저cross-app 확인 검증됨 (TC 확정: 05:5.2 / 06:6.8)
50페이지네이션Pagination• 목록을 페이지 단위로 이동하는 컨트롤 ("총 8건 중 1-8건", "« ‹ 1 › »")
• 클릭 시: 해당 페이지로 이동
general_affairs_notices
60공지 수신 연계-• 게시 공지는 직원 메신저/공지 수신으로 전달됨 (연계 후보)HBEA300_메신저동선 TBU
70AI — 공지 초안 작성AI/Suggest• 교육마감/시설/안전/정책 공지 초안을 작성하는 보조 (greenfield, 사람 게시)
• 클릭 시: TBU (라이브 표면 없음)
noticega.noticeDraft TBU

권한·상태 분기 요약

시나리오트리거결과비고
조건1 [GA_ADMIN]공지 화면 진입필터 + 목록 + 작성 노출token 내부 key TBU
CASE01 [미게시 삭제]미게시 row → 삭제컨펌 "공지를 삭제할까요?" → 삭제 실행컨펌 있음
CASE02 [공지 게시]작성 폼 즉시 게시 ON 저장isPublished=true, 게시 중 전환사람 실행
CASE03 [확인 내역 조회]게시 중·만료 row → 확인 내역대상자별 확인 현황 표시 (getAcknowledgedEmployees)cross-app 검증됨
CASE04 [일반 직원 작성 거부]일반 [EMPLOYEE]notice.create 호출throw(거부) — GA_ADMIN 전용권한 경계 (TC 확정: 06:6.8)

Open Question

  • 확인 내역(notice_acknowledgments) 상세 구조(확인자/확인시각/미확인자) UI = TBU
  • 게시 공지 → HBEA300_메신저 수신 동선(자동 발송/구독) = TBU
  • 만료일 < 게시일 validation gap 처리 방침 = TBU
  • 관련 정책 [[POL_공지 게시]] 토큰명 확정 = TBU
  • 대상 사용자 권한 토큰 내부 key(GA_ADMIN / SUPER_ADMIN) = TBU