Skip to content

HBGA220_반복 업무 관리

(Hereby) 총무 > 반복 업무 관리

총무 (HBGA)
대상 사용자조건1 [GA_ADMIN] / 조건2 [SUPER_ADMIN]
프로토타입TBU
관련 정책[[POL_반복업무관리]]
Statusreview
Owner카나 (PM)

개요

  • 사이드바 "관리" 메뉴 = 반복 점검업무 정의 관리(recurring_tasks).
  • 시설/안전/소방 등 정기 점검업무를 정의하고 체크리스트(task_checklist_items)와 실행내역(recurring_task_executions)을 연결한다.
  • 카테고리 탭 9종 + "업무명 검색..." + "+ 업무 추가" + 7컬럼 그리드로 구성한다.
  • row action = "실행내역" / "수정" / "삭제"(컨펌 "이 업무를 삭제하시겠습니까?"). "실행내역"은 인라인 서브뷰.

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영
2026-07-13카나PM버튼 행동 명세 보강
2026-07-21카나PMGC700 깊이 재작성 + 확정 스타일
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡)

Data I/O

Server → Client

변수엔티티.컬럼값 없을 때비고
$recurring_tasks[] (title/category/frequency/assignedTo/isActive)목록 0건 (Empty 처리)7컬럼 그리드 소스
$task_checklist_items count0개업무별 "체크항목" 수 (예 "2개")
$recurring_task_executions[] (예정일/상태/완료일/완료자/비고)실행내역 서브뷰 목록서브뷰 소스

Client → Server

액션전달 값tRPC procedure권한 토큰
업무 추가title, category, frequency, assignedTo, dueDay, description, isActive, checklistItems[] {title, isRequired, sortOrder}generalAffairs.task.create() (TC 확정: 05:5.4)GA_ADMIN
업무 수정상동 + taskIdgeneralAffairs.task.update()GA_ADMIN
업무 삭제taskIdgeneralAffairs.task.delete()GA_ADMIN
실행 생성recurringTaskIdgeneralAffairs.task.createExecution() (TC 확정: 05:5.4) — 생성 시 업무의 checklistItems가 completion 행으로 fan-outGA_ADMIN
실행 수정executionId, {status:"in_progress", checklistCompletions:[{taskChecklistItemId, isCompleted, notes}]}generalAffairs.task.updateExecution() (TC 확정: 05:5.4)GA_ADMIN

화면 플로우

반복 업무 관리 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-사이드바 "관리" 메뉴 클릭 시 /general-affairs/tasks 진입. 조건1 [GA_ADMIN] 이상[[HBGA100_Shell·사이드바]]메뉴 라벨 "관리"=반복 업무 관리
01초기 상태-카테고리 탭 "전체" 활성 + 검색 비어있음 + 7컬럼 목록 노출
10카테고리 탭Tab• 카테고리별로 업무 목록을 거르는 탭 9종 "전체" / "시설관리" / "안전점검" / "소방" / "위생" / "장비" / "문서" / "규정준수" / "기타"
• 클릭 시: 해당 카테고리로 목록 필터 전환
 - CASE01 ["전체"]: 전 카테고리 노출
 - CASE02 [특정 카테고리]: 일치 업무만 노출
recurring_tasks.category9종
20검색Search• 업무명으로 목록을 거르는 입력
• 입력 시: 일치 업무만 표시(client/server filter)
 - CASE01 [결과 없음]: "데이터가 없어요."
client/server filterplaceholder "업무명 검색..."
30업무 추가Button• 신규 반복 업무를 생성하는 진입 버튼
• 클릭 시: "업무 추가" 모달 오픈 (필드는 하단 모달 사양표)
recurring_tasks create · 업무 추가 모달 사양표mutation
40업무 목록Table• 반복 업무를 7컬럼으로 나열하는 그리드 "업무명 / 카테고리 / 주기 / 담당자 / 체크항목 / 상태 / 관리"recurring_tasks
ㄴ41row 예시ListItem• 목록 행 표기 예시 "소방시설 점검 / 시설관리 / 매월 / 김소방 / 2개 / 활성"
ㄴ42row action — 실행내역Button• 해당 업무의 실행내역으로 이동하는 버튼
• 클릭 시: 실행내역 인라인 서브뷰 전환 (하단 실행내역 서브뷰 사양표)
recurring_task_executions
ㄴ43row action — 수정Button• 업무 정의를 수정하는 버튼
• 클릭 시: "업무 수정" 모달 오픈 (기존 값 채움)
task updatemutation
ㄴ44row action — 삭제Button• 업무 정의를 삭제하는 버튼
• 클릭 시: 컨펌 "이 업무를 삭제하시겠습니까?" → 삭제 실행
task deletemutation, 컨펌
50페이지네이션Pagination• 목록 페이지 이동 컨트롤 "« ‹ 1 › »"
• 클릭 시: 해당 페이지 목록 로드
"총 2건 중 1-2건"

업무 추가 모달 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-"+ 업무 추가" 클릭 시 모달 오픈반복 업무 관리 사양표 30
10제목Text• 모달 헤더 "업무 추가"
ㄴ11업무명Input• 업무명 입력 "업무명 *" (placeholder "업무명을 입력하세요...") — 저장 활성화 필수 필드
• 입력 시: 저장 버튼 disabled 해제 조건 충족
title필수
ㄴ12카테고리Dropdown• 카테고리 선택 "카테고리"category
ㄴ13실행주기Dropdown• 실행주기 선택 "실행주기" (매월 등)frequency
ㄴ14담당자Input/Dropdown• 담당자 입력·선택 "담당자"assignedTo
ㄴ15실행일 (일)Input• 실행 예정일(일자) 입력 "실행일 (일)"dueDay
ㄴ16설명Input Box• 업무 설명 입력 "설명"description
ㄴ17활성Checkbox• 활성 여부 토글 "활성" 체크
• 클릭 시: isActive on/off
isActive
ㄴ18체크리스트 항목Repeater• 점검 체크리스트 항목을 배열로 정의하는 필드 checklistItems[]
• 각 항목 = {title, isRequired, sortOrder}
• 저장 시: generalAffairs.task.create 인자로 전달되어 task_checklist_items로 저장
task_checklist_items / checklistItems[]신규 명시 (TC 확정: 05:5.4)
20취소Button• 모달을 닫는 버튼
• 클릭 시: 모달 닫기 (변경 없음)
30저장Button• 입력값(checklistItems[] 포함)으로 업무를 생성하는 버튼
• 클릭 시: generalAffairs.task.create 실행 (필수 입력 전 disabled)
 - STEP1 업무명 입력 전 disabled
 - STEP2 저장 성공 시 목록 갱신
recurring_tasks create · task_checklist_itemsmutation, 사람 저장 (TC 확정: 05:5.4)

실행내역 서브뷰 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-업무 row "실행내역" 선택 시 인라인 서브뷰로 전환recurring_task_executions
01초기 상태-백링크 + 제목 + "+ 실행 생성" + 실행 목록 노출
10목록 복귀Button• 업무 목록으로 돌아가는 백링크
• 클릭 시: "← 목록" → 업무 목록 복귀
반복 업무 관리 사양표
20제목Text• 대상 업무명을 표기하는 헤더 "{업무명} - 실행내역"recurring_tasks.title
30실행 생성Button• 신규 실행내역을 생성하는 버튼
• 클릭 시: generalAffairs.task.createExecution({recurringTaskId}) 실행 → 업무의 checklistItems가 completion 행으로 fan-out됨
taskExecution create · checklist_completionsmutation (TC 확정: 05:5.4)
40실행 목록Table• 실행내역을 6컬럼으로 나열하는 그리드 "예정일 / 상태 / 완료일 / 완료자 / 비고 / 관리"recurring_task_executions
ㄴ41상태Text• 실행 상태 표기. status enum에 in_progress 확정 ("대기"/in_progress/완료 등)status enum (in_progress 확정)TC 확정: 05:5.4
ㄴ42관리 — 수정Button• 실행내역과 체크리스트 완료를 갱신하는 버튼
• 클릭 시: generalAffairs.task.updateExecution({status:"in_progress", checklistCompletions:[{taskChecklistItemId, isCompleted, notes}]}) — 체크리스트 완료가 completion 행 단위로 처리됨
execution update · checklist_completionsmutation (TC 확정: 05:5.4)

권한·상태 분기 요약

시나리오트리거결과비고
조건1 [GA_ADMIN]"관리" 메뉴 진입반복 업무 목록 노출
CASE01 [업무 추가]"+ 업무 추가" → 저장업무 정의 생성 → 목록 갱신업무명 전 저장 disabled
CASE02 [삭제]row "삭제" 클릭컨펌 "이 업무를 삭제하시겠습니까?" → 삭제 실행kana-test 생성→삭제 검증 완료
CASE03 [검색 무결과]"업무명 검색..." 무결과"데이터가 없어요."

Open Question

  • 체크리스트 완료 UI(task_checklist_items 완료 처리) 라이브 미확인 = TBU해소: 실행 생성(createExecution) 시 업무의 checklistItems가 completion 행으로 fan-out되고, updateExecution({status:"in_progress", checklistCompletions:[{taskChecklistItemId, isCompleted, notes}]})로 항목별 완료 처리됨 (TC 확정: 05:5.4)
  • 실행내역 사진/첨부/서명 라이브 미확인 = TBU
  • 실행 생성 폼 필드 구성 라이브 미확인 = TBU
  • 대상 사용자 token 내부 key([GA_ADMIN]/[SUPER_ADMIN]) 미확정 = TBU
  • tRPC procedure/권한 토큰 추정 — 사람 확정 필요 = TBU