1부 7명 + 2부 7명 주일 매주 배치
사역 불가 일자 및 자격 요건 연산
위원회 캘린더 ➔ 봉사자 개인 캘린더
매월 첫 일요일 기준 동적 역산 알고리즘
📅 교회 공식 일정 캘린더
구글 캘린더 API로 실시간 연동된 다가오는 예배 및 행사 일정입니다.
🌐 sbc-Priscilla (브리스 자매) 전체 기능 구조
브리스 자매(sbc-Priscilla)는 church-os 기반의 미디어사역 지능형 비서 시스템입니다. 기존 주보·유튜브·교회일정 관리 기능에 이어, 이번에 '주일 사역 스케줄 자동화' 기능을 새롭게 확장합니다.
📰 주보 분석 기능
매주 주보 웹진 자동 파싱 및 예배 정보 데이터베이스화
📺 유튜브 아카이빙 기능
예배 라이브 스트리밍 영상 메타데이터 및 링크 데이터베이스화
📅 교회 일정 연동 기능
주보 & 유튜브 기반 교회 일정 Google Calendar 연동 관리
🎬 주일 스케줄 자동화
사역 불가 일자 수집, 경험/스킬 기반 자동 배정, 구글 캘린더 이중 동기화
🔄 전체 시스템 워크플로우 (End-to-End)
봉사자의 모바일 웹폼 제출부터 시트 정규화, 알고리즘 배정, 위원회 캘린더 등록 및 개인 캘린더 자동 연동까지 4단계로 완결됩니다.
모바일 웹폼 수집
봉사자가 스마트폰에서 달력을 보며 사역 불가한 날짜/예배(1부/2부) 선택 후 제출.
알고리즘 배정 연산
1행 1건 정규화 데이터와 Member_DB 스킬/최근 봉사 이력을 계산하여 Schedule_DB 자동 작성.
관리자 검토 & [확정]
D-8 관리자 안내 메일 수신 후 시트 확인. 결원이 없으면 커스텀 메뉴 [확정] 클릭.
캘린더 이중 자동 반영
미사위 공용 캘린더에 이벤트 생성 및 배정자 이메일 초대로 개인 캘린더에 동시 표시.
👤 UI 샘플 1: 사역자 마이페이지 (메인 허브 화면)
로그인 즉시 진입하는 유일한 메인 화면입니다. 구글 워크스페이스 계정으로 접속하기 때문에 본인을 직접 선택할 필요 없이 로그인 정보로 자동 식별됩니다. 이전 버전의 '신청 화면(2탭) + 별도 마이페이지' 2화면 구조를 마이페이지 하나로 통합하고, 일정 등록만 하위 화면으로 분리했습니다. 마이페이지 안에서는 위에서 아래로 ① 다가오는 내 사역 일정 → ② 내 사역 통계 → ③ 내 사역 스킬 → ④ 최근 사역 이력 순으로 배치하고, 맨 아래 버튼 하나로만 일정 등록 화면(UI 샘플 2)에 진입합니다.
마이페이지
김신일 집사님 · Google 계정으로 자동 인식됨
최근 3개월 4회 참여 🔥
💡 마이페이지 = 유일한 진입점, 구역 배치 이유
- 1 당장 필요한 정보 → 관리 항목 → 재미 요소 순서: 열자마자 "이번 주/다음 주 내 사역"부터 보이도록 다가오는 일정을 최상단에 배치하고, 핵심 기능이 아닌 최근 이력은 맨 아래로 내렸습니다.
- 2 탭 구조 폐지: 기존 "신청 화면(탭1/탭2) + 별도 마이페이지" 2개 화면을 마이페이지 1개로 합쳤습니다. 사역자가 "일정 확인하러 들어왔는데 왜 신청 화면이 따로 뜨지" 하고 헷갈릴 이유가 없어집니다.
- 3 스킬 자기평가는 마이페이지 안에서 즉시 반영: 이전에 신청 화면 탭2에 있던 스킬 조정 UI를 마이페이지 3번 구역으로 옮겼습니다. 별도 승인 절차 없이 본인이 스스로 갱신하며 Member_DB에 즉시 반영되고, 관리자는 관리자 대시보드에서 언제든 확인·조정할 수 있습니다.
- 4 일정·통계·이력 모두 Schedule_DB 즉석 조회: 새 집계 테이블 없이 본인 이메일이 포함된 행만 필터링하고 QUERY로 계산해 보여줍니다 (History_DB 같은 별도 테이블 불필요).
- 5 유일한 탈출구는 하단 버튼 하나: 마이페이지 안에 다른 CTA는 없고, "다음달 사역불가 일정 등록하기" 버튼을 눌러야만 일정 등록 화면(UI 샘플 2)으로 넘어갑니다.
스킬 자기평가(3번 구역)를 승인 절차 없이 즉시 반영되게 뒀습니다. "사역자를 신뢰하고 관리자가 나중에 검토"하는 쪽을 택한 것으로, 신뢰가 걱정되면 "본인 신고 → 관리자 승인 후 반영" 흐름으로 바꿀 수도 있지만 그러면 화면과 백엔드 로직이 한 단계 더 늘어납니다. 지금은 간단한 쪽으로 두었습니다.
RSVP(참석 회신) 처리, 본인 간 교대 신청 기능은 이번 마이페이지에는 넣지 않습니다. 교대가 필요하면 관리자에게 요청하고, 관리자가 대시보드 사역배정 탭에서 처리하는 흐름으로 시작합니다 — 필요성이 실제로 확인되면 다음 단계에서 추가합니다. '1부만/2부만/PD만' 같은 선호 사역 설정 UI도 이번 범위에서 뺐습니다.
📅 UI 샘플 2: 사역불가 일정 등록 화면 (마이페이지 하위 화면)
마이페이지 하단의 "다음달 사역불가 일정 등록하기" 버튼을 눌러야만 진입하는 별도 화면입니다. 이 화면의 역할은 오직 달력에서 사역 불가한 날짜/예배를 체크하고 제출하는 것 하나뿐이며, 제출을 완료하면 자동으로 마이페이지로 돌아갑니다. 이전 버전에서 이 화면에 함께 있던 스킬 조정 UI는 마이페이지(UI 샘플 1)로 이동했습니다.
사역불가 일정 등록
이가영 자매 · gayoung.lee@seongbok.org
Google 계정으로 자동 인식됨제출하면 자동으로 마이페이지로 돌아갑니다
💡 하위 화면으로 분리한 이유
- 1 역할을 하나로 좁힘: 이 화면은 "일정 등록"만 합니다. 스킬 조정, 통계, 이력 조회는 모두 마이페이지에 남겨서, 여기서는 달력 체크와 제출에만 집중하도록 했습니다.
- 2 제출 = 마이페이지로 자동 복귀: 별도 "완료" 화면 없이, 제출 즉시 마이페이지로 이동합니다. Google 계정 자동 식별 상태는 그대로 이어받으므로 재로그인이 필요 없습니다.
- 3 확정 전까지 계속 수정 가능: 제출은 매번 Exclusion_DB에 최신 상태로 덮어쓰기 되며, Schedule_DB 확정(관리자 [확정] 클릭) 이후에는 이 화면 대신 안내 메시지로 전환됩니다.
본인 선택 없이 로그인만으로 식별하려면 배포 설정의 '다음 계정으로 실행'을 나(Me)에서 '액세스하는 사용자'로 바꾸고, '액세스 권한'을 도메인 내 사용자로 제한해야 합니다. 그래야 사역자가 실제로 자기 Google 계정으로 로그인한 상태에서만 화면이 열립니다. 마이페이지와 이 화면은 같은 웹앱 안의 두 화면이므로 이 설정은 공통 적용됩니다.
📅 UI 샘플 3: 위원회 공용 캘린더 & 봉사자 개인 캘린더 이중 자동 반영
스케쥴이 취합되면(취합일정이 종료되면) 구글 스페이스로 카드 알림이 전송되고, 관리자가 [확정 및 캘린더 반영] 버튼을 누르면, 위원회 공용 캘린더에 이벤트가 등록됨과 동시에 봉사자 개인 구글 캘린더로 자동 전파됩니다.
[미디어사역] 2부 예배
[미디어사역] 2부 예배
별도로 등록하지 않아도 개인 스마트폰 구글 캘린더 앱에 자동으로 사역 일정이 나타나고 푸시 알림이 울립니다.
🖥️ UI 샘플 4: 관리자 대시보드 상세 기획 (탭 구조)
관리자(간사)는 스프레드시트를 직접 열지 않고도 이 대시보드 하나로 사역현황 확인 → 배정/재배정 → 통계 확인을 처리합니다. 3개 탭으로 구성되며, 데스크톱·태블릿에서 사용을 기준으로 설계합니다.
탭 1 — 사역현황 (캘린더 뷰)
Schedule_DB 실시간 반영주차 카드를 클릭하면 오른쪽 패널에 7개 역할별 배정 현황이 상세 표시됩니다.
탭 2 — 사역배정 · 재배정
역할별 드롭다운 교체 → 저장 시 캘린더 자동 재동기화| 역할 | 현재 배정자 | 변경 | 상태 |
|---|---|---|---|
| PD | 김설화 집사 | ▾ 후보 중 선택 | 확정 |
| 조명 | 공석 | ▾ Lv1 이상 후보 3명 | 결원 |
| 카메라 6 | 김신일 집사 | ▾ 후보 중 선택 | 확정 |
드롭다운은 해당 역할의 Hard 조건(숙련도·불가일정)을 만족하는 후보만 자동으로 걸러서 보여줍니다. 저장 시 events.update()로 기존 캘린더 이벤트가 수정되며, 배정 변경자에게는 안내 메일이 자동 발송됩니다.
탭 3 — 사역통계
Schedule_DB 누적 집계⚡ 기존 수동 방식 vs 브리스 자매 스케줄 자동화
기존 수동 관리 환경의 번거로움을 해결하고, 브리스 자매(sbc-Priscilla)의 데이터 기반 자동 배정 알고리즘을 도입하여 사역을 자동화/체계화합니다.
- 1 카카오톡 취합 과정의 번거로움: 메시지 대화방을 통한 일자별 사역 가능 여부 취합 및 개별 확인의 번거로움
- 2 변경 시 업데이트의 어려움: 사역자 간 교대나 일정 변경 발생 시 전체 편성표 반영 및 변경 일정 공유이 어려움
- 3 사역 기록 미누적: 누적 봉사 이력이 체계적인 데이터로 관리되지 않아 장기적 현황 파악의 한계
- ✓ 달력 웹폼 표준 수집: 모바일 웹폼 제출 ➔ Exclusion_DB 단일 1행 정규화 자동 저장
- ✓ 자동 스케줄 연산: 필수 조건 검증 및 스킬 가중치 기반 시트 자동 작성
- ✓ 1클릭 구글 캘린더 동기화: 관리자 [확정] 및 [캘린더 재동기화] 클릭 시 실시간 반영
- ✓ 데이터베이스 자산화: 사역 이력이 자동으로 누적되어 균등 배정 및 통계 파악 가능
🗄️ 데이터 모델 및 사역 숙련도 매트릭스
단 3개의 시트 탭으로 운영되며, 7개 사역별 0~3점 숙련도 점수를 바탕으로 적재적소에 봉사자를 배치합니다.
구글 워크스페이스 계정과 연동하여 봉사자 자격 및 선호사항을 관리합니다.
웹폼 제출 시 단일 날짜 단위로 1행 1건 자동 분해되어 저장됩니다.
알고리즘 배정 결과가 기재되며 캘린더 이벤트 ID를 추적 관리합니다.
7개 사역 역할별 숙련도 분포
봉사자의 역할별 숙련도 점수(0점=불가, 1점=초보, 2점=중급, 3점=상급) 현황입니다. 인원 풀 분석을 통해 안정적인 교대 배정을 수행합니다.
⚙️ 자동 배정 알고리즘 규칙 (Constraints)
위반할 수 없는 '필수 조건'과 균등 배정을 위한 '가중치 조건'을 단계별로 연산하여 신뢰도 높은 스케줄표를 자동 완성합니다.
- 1. Exclusion_DB 등록 날짜·예배 배정 완전 제외
- 2. 해당 역할 숙련도 점수가 0점인 사람 제외
- 3. 동일인 같은 날 1부/2부 중복 배정 금지 (후보 0명 시 노란 셀 예외 허용)
- ★ 오디오·조명은 후보 0명이어도 중복 절대 금지 (즉시 결원 처리)
- 1. Schedule_DB 최근 3개월 배정 이력이 가장 적은 봉사자 우선
- 2. Member_DB의 "1부 위주", "2부 위주" 선호 가중치 반영
- 3. 가능 스킬 균등(감떨어지지 않도록)분배 알고리즘 작동
- 3. 특정 인원 봉사 편중 현상 방지 알고리즘 작동
- 1. 조건을 만족하는 후보가 0명인 경우 셀을 공석(빈칸)으로 처리
- 2. 해당 셀 배경색을 직관적인 빨간색으로 자동 하이라이트
- 3. 관리자에게 "O월 O일 O부 OO역할 배정 실패" 경고 알림 자동 발송
봉사 횟수 공정성 시뮬레이션
과거 데이터 누적이 어려웠던 방식에서 자동 알고리즘 도입 후 봉사자 전체에 걸쳐 균등 수준(월 3~4회)으로 표준화되는 효과를 나타냅니다.
🗓️ 월간 동적 자동화 타임라인 & 트리거
월말 일수(30/31일) 변동에 따른 오차를 예방하기 위해 "다음 달 첫 번째 일요일(D)"을 기준점으로 역산하여 4개 Phase 트리거를 생성합니다.
사역 제외 일정 수집 알림 발송 (모바일 웹폼 오픈)
미제출자 리마인드 발송 (18:00) =
자동 스케줄링 알고리즘 연산 및 Schedule_DB 작성
관리자 검토 요청 메일 발송 ➔ [확정] 버튼 클릭 시 연동
봉사자들의 수면 및 휴식권을 보장하기 위해 모든 자동 메시지 발송 시간은 야간을 철저히 배제하고 낮 시간대에만 실행되도록 트리거 시각을 고정합니다.
🚀 단계별 개발 및 운영 도입 로드맵
6단계 구축 로드맵을 통해 안전하게 개발 및 검증을 완료하고 실무에 즉시 적용합니다.
시트 구조 수립
Member_DB, Exclusion_DB, Schedule_DB 설계 및 워크스페이스 연동
수집 웹폼 개발
HTML Form 달력 클릭 UX 적용 및 doGet/doPost 분해 저장 로직 작성
알고리즘 구현
Hard/Soft 조건 계산 및 공석 빨간 셀/경고 메일 발송 로직 개발
트리거 시스템 등록
마스터 트리거 기반 D-12 ~ D-8 동적 1회성 트리거 자동 생성 구축
캘린더 연동 모듈
기존 church-os 모듈 재사용 및 참석자 초대로 개인 캘린더 동기화
1개월 시범 테스트
실제 샘플 데이터 기준 검증 후 전면 주일 사역 스케줄링 적용