개발을 맡을 사람의 지도

시스템 구성

화면·서버·저장소·외부 서비스가 어떻게 이어지는지 그림과 함께.

12,534자 · 시스템이 만든 그대로입니다

사람이 손댄 곳 3군데
  • · 3단계 ‘추론 확인’에서 두 곳을 고쳤습니다. 인터뷰에 서류 만료 알림을 첫 버전에 넣겠다고 적었는데, 정작 서류 관리 자체는 후속 버전이었습니다. 그대로 두면 없는 데이터를 읽어 알림을 보내는 문서가 되므로, 첫 버전 알림을 시간표 변경 하나로 줄이고 필수 화면 목록에 알림함을 넣었습니다.
  • · 4단계에서 확인할 사용 흐름 세 가지를 다시 묶었습니다. 처음 제안된 묶음은 화면 열한 개를 순서대로 셋으로 나눈 것이라 운영자 화면과 강사 화면이 한 흐름에 섞여 있었습니다. 흐름은 “이 순서로 막힘없이 이어지는가”를 보는 자리이므로 역할별로 다시 나누고 이름도 업체가 실제로 하는 일로 바꿨습니다.
  • · 문서 본문은 손대지 않았습니다. 위 두 가지는 모두 인터뷰 답변과 화면 목록을 고친 것이고, 그 뒤 문서는 고쳐진 답변으로 다시 만들어졌습니다.

방과후 운영 한눈에 시스템 구성 문서

1. 제품 목표와 첫 개발 범위

한 줄 콘셉트

여러 초등학교·중학교에 방과후·늘봄 강사를 보내는 위탁업체 대표가 학교별 수업과 강사 배정을 관리하고, 같은 강사의 시간대 중복 배정을 막아 확정된 시간표를 강사에게 전달하는 서비스입니다.

첫 개발에서 완료할 업무

운영자는 학기 시작 전 다음 업무를 서비스 안에서 끝낼 수 있어야 합니다.

  1. 업체 계정을 만들고 학교와 강사를 등록한다.
  2. 학교별 학기, 교시표, 운영 기간을 설정한다.
  3. 엑셀 업로드 또는 직접 입력으로 수업 계획을 등록한다.
  4. 같은 강사의 시간 중복을 저장 전에 발견하고 수정한다.
  5. 같은 학교 안의 시간 겹침은 사유를 남긴 경우에만 예외 저장한다.
  6. 중복이 없는 수업 계획을 확정 시간표로 공개한다.
  7. 강사는 자신의 개인 시간표와 시간표 변경 알림을 확인한다.

첫 개발 범위

구분포함 기능
업체 시작업체 계정 생성, 운영자 로그인
기본 정보학교·강사 목록 등록 및 수정
시간 기준학교별 학기, 운영 기간, 교시 템플릿, 교시표 설정
수업 등록직접 등록·수정, 지정 엑셀 양식 다운로드·업로드
오류 검증미등록 학교, 모호한 강사 이름, 비어 있는 시간, 종료 시각 오류 표시
중복 방지실제 시작·종료 시각과 운영 기간을 기준으로 동일 강사의 시간 중복 차단
예외 처리같은 학교 안의 시간 겹침을 사유와 함께 저장
시간표 확인전체 시간표, 학교별·강사별 조회, 중복 수업 현장 수정
강사 사용강사 계정 초대·연결, 개인 시간표, 알림함
알림시간표 공개 또는 변경 시 해당 강사에게 서비스 안 알림 생성

첫 개발에서 제외하는 기능

아래 기능은 데이터와 화면을 첫 개발 범위에서 제외하고 후속 버전으로 둡니다.

  • 성범죄 경력·아동학대 전력 조회 회신서의 원본 파일 저장
  • 학교별 서류 상태와 만료일 관리
  • 서류 만료 알림
  • 대체강사 탐색
  • 강사료·재료비 정산과 지급 예정액
  • 민원 기록
  • 카카오톡 연동
  • 서비스 내 결제
  • 정산 확정 알림
  • 휴강, 보강, 결강, 대강의 날짜별 수업 회차 관리
  • 이동시간 부족 자동 경고

이동시간 부족은 실제 운영에 중요하지만, 첫 개발의 저장 차단 기준은 실제 시작·종료 시각이 겹치는 시간 중복으로 한정합니다. 이동시간 부족은 후속 버전에서 경고 기능으로 추가합니다.


2. 사용자와 권한

역할주요 목적가능한 일볼 수 없는 정보
대표·운영 담당자전체 시간표를 만들고 확정한다.업체 시작, 학교·강사 관리, 교시표 설정, 수업 등록, 엑셀 업로드, 중복 수정, 시간표 공개, 강사 초대다른 위탁업체 데이터
강사자신의 확정 시간표와 변경 내용을 확인한다.초대 연결, 개인 시간표 조회, 알림 확인다른 강사의 시간표, 전체 시간표, 업체 설정

권한 원칙

  • 운영자만 수업 계획을 등록·수정·공개할 수 있습니다.
  • 강사는 자신과 연결된 강사 정보의 시간표와 알림만 볼 수 있습니다.
  • 모든 학교, 강사, 수업 계획, 알림은 위탁업체 식별값으로 구분합니다.
  • 다른 위탁업체의 데이터는 조회·수정할 수 없어야 합니다.
  • 시간표 공개와 변경은 처리한 운영자와 처리 시각을 남깁니다.

3. 핵심 업무 규칙

3-1. 시간 중복 판단

시간 중복은 교시명이 아니라 실제 시작·종료 시각으로 판단합니다.

기존 수업새 수업판단
14:00~14:4014:20~15:00시간 중복, 저장 불가
14:00~14:4014:39~15:20시간 중복, 저장 불가
14:00~14:4014:00~14:40시간 중복, 저장 불가
14:00~14:4014:40~15:20시간 중복 아님

시간 비교는 시작 시각 포함, 종료 시각 제외 방식입니다.

기존 수업 시작 < 새 수업 종료
그리고
새 수업 시작 < 기존 수업 종료

또한 다음 조건이 모두 맞을 때 시간 중복으로 판단합니다.

  • 같은 위탁업체에 속한 강사다.
  • 같은 요일의 수업이다.
  • 실제 시작·종료 시각이 겹친다.
  • 두 수업의 운영 기간이 하루 이상 겹친다.
  • 취소되지 않은 수업 계획이다.

3-2. 학교가 다른 경우와 같은 경우

상황처리
같은 강사가 서로 다른 학교에서 실제 시간이 겹침저장 불가
같은 강사가 같은 학교에서 실제 시간이 겹침운영자가 사유를 입력한 경우에만 예외 저장 가능
다른 강사끼리 시간이 겹침저장 가능
같은 교시명이지만 실제 시간이 겹치지 않음저장 가능
실제 시간은 같지만 운영 기간이 겹치지 않음저장 가능

같은 학교 안 예외 저장 시에는 아래 정보를 남깁니다.

  • 예외 사유
  • 처리한 운영자
  • 처리 시각
  • 겹친 두 수업 계획 식별값

서로 다른 학교의 동일 강사 시간 중복에는 예외를 적용할 수 없습니다.

3-3. 교시표와 실제 시간

학교마다 3교시, 늘봄 1교시, 오전 A타임의 실제 시간이 다르므로, 학교별 교시 템플릿이 필요합니다.

  • 교시표: 학교가 사용하는 교시명과 실제 시작·종료 시각을 정리한 표
  • 교시 템플릿: 특정 학교·학기·적용 기간에 사용하는 교시표 설정
  • 운영 기간: 한 수업이 반복되는 시작일과 종료일 범위

교시표 설정 완료 조건

  • 모든 교시의 종료 시각이 시작 시각보다 늦습니다.
  • 같은 학교와 같은 적용 기간에 같은 우선순위의 교시 템플릿이 중복되지 않습니다.
  • 수업 등록에 필요한 교시명과 실제 시작·종료 시각을 찾을 수 있습니다.

교시표 변경 기준

가정: 첫 개발에서는 이미 저장된 수업 계획의 실제 시작·종료 시각을 자동으로 바꾸지 않습니다.

이유는 공개된 시간표가 교시표 수정으로 예상 없이 바뀌는 것을 막기 위해서입니다.

  • 교시 템플릿 수정은 이후 새로 등록하는 수업 계획에 적용합니다.
  • 이미 저장된 수업 계획은 기존 실제 시작·종료 시각을 유지합니다.
  • 운영자가 기존 수업에 새 교시표를 반영하려면 해당 수업을 직접 수정하거나 엑셀로 다시 등록합니다.
  • 공개된 수업을 수정하려 할 때는 영향을 받는 강사와 변경 수업 수를 먼저 보여 줍니다.

4. 화면별 기능과 완료 조건

화면사용자사용 목적주요 행동완료 조건
운영자 로그인 및 업체 시작 화면대표업체 운영을 시작한다.업체명 입력, 계정 생성, 로그인업체 계정과 첫 운영자 계정이 생성된다.
운영자 화면운영자주요 업무로 이동한다.학교·강사 관리, 수업 등록, 전체 시간표, 교시표 설정으로 이동운영자가 현재 학기의 준비 상태를 확인하고 필요한 업무를 시작한다.
학교·강사 목록 관리 화면운영자수업 배정에 필요한 기본 정보를 관리한다.학교 등록·수정, 강사 등록·수정, 강사 초대 상태 확인수업 계획에서 선택할 학교와 강사가 준비된다.
학교별 학기·교시표 설정 화면운영자학교별 실제 수업 시간을 등록한다.학기, 적용 기간, 교시명, 시작·종료 시각 입력유효한 교시 템플릿이 저장된다.
학교별 수업 및 강사 배정 등록 화면운영자수업 계획을 한 건씩 등록·수정한다.학교, 운영 기간, 요일, 교시 또는 실제 시간, 과목, 강사 입력시간 중복 검사를 통과한 수업 계획이 임시 배정으로 저장된다.
엑셀 업로드 확인 및 수정 화면운영자여러 학교의 수업 계획을 한 번에 등록한다.양식 다운로드, 파일 업로드, 행별 오류 수정, 확정저장 차단 오류가 없는 행만 수업 계획으로 저장된다.
전체 시간표와 중복 배정 경고 화면운영자전체 배정 상태를 확인하고 중복을 해결한다.학교·강사·기간 필터, 충돌 수업 비교, 한쪽 수업 수정, 공개저장 불가 시간 중복이 없는 확정 시간표를 공개할 수 있다.
강사 로그인 및 초대 연결 화면강사초대 계정과 강사 정보를 연결한다.초대 링크 접속, 로그인 또는 계정 생성, 본인 강사 정보 연결강사가 개인 시간표와 알림함에 접근한다.
강사 개인 시간표 화면강사자신의 방과후·늘봄 수업 일정을 확인한다.학교, 요일, 교시, 실제 시간, 과목 확인강사가 최신 공개 시간표를 확인한다.
강사 알림함 화면강사시간표 공개·변경을 확인한다.알림 열람, 변경된 시간표 이동변경된 수업의 최신 정보를 확인한다.

5. 엑셀 시간표 일괄 등록 설계

5-1. 양식 열

운영자는 서비스에서 지정 엑셀 양식을 내려받아 작성합니다.

열 이름필수 여부설명
학교명필수등록된 학교와 연결할 이름
수업 시작일필수운영 기간 시작일
수업 종료일필수운영 기간 종료일
요일필수월~일
과목필수방과후 또는 늘봄 수업 과목
강사명필수등록된 강사와 연결할 이름
교시명선택학교가 사용하는 교시
시작 시각선택실제 시작 시각
종료 시각선택실제 종료 시각
대상 학년·반선택수업 구분 정보
장소선택교실 또는 수업 장소
비고선택운영자 메모

교시명 또는 시작 시각·종료 시각 중 하나는 반드시 입력해야 합니다.

5-2. 시간 해석 우선순위

  1. 시작 시각과 종료 시각이 모두 입력되면 입력한 실제 시간을 사용합니다.
  2. 실제 시간이 없고 교시명만 있으면 학교·학기·요일의 교시 템플릿에서 실제 시간을 찾습니다.
  3. 교시명과 실제 시간이 모두 있으나 서로 다르면 입력한 실제 시간을 유지하고 경고를 표시합니다.
  4. 교시명을 찾을 수 없거나 같은 교시명이 여러 시간으로 등록되어 있으면 오류로 표시합니다.

5-3. 행별 검증 결과

엑셀 파일을 바로 시간표에 저장하지 않습니다. 먼저 임시 등록 자료로 읽고 각 행의 결과를 보여 줍니다.

검증 항목처리
등록되지 않은 학교 이름저장 차단 오류
강사 이름이 여러 명과 일치저장 차단 오류, 운영자가 강사를 직접 선택
필수 값 누락저장 차단 오류
시작·종료 시각 누락저장 차단 오류
종료 시각이 시작 시각보다 이르거나 같음저장 차단 오류
교시 템플릿에서 교시명을 찾지 못함저장 차단 오류
동일 강사의 서로 다른 학교 시간 중복저장 차단 오류
같은 학교의 시간 겹침사유 입력 전까지 저장 차단
교시명 시간과 직접 입력 시간이 다름경고, 운영자 확인 후 저장 가능

운영자는 오류 행을 화면에서 수정하거나 수정한 엑셀 파일을 다시 올릴 수 있습니다. 저장 차단 오류가 모두 해결되어야 확정할 수 있습니다.


6. 시스템 구성

기술 구성 원칙

초기 개발에서는 운영 인력과 데이터 규모를 고려해 복잡한 분산 시스템보다 하나의 웹 서비스와 하나의 데이터베이스 중심 구성을 사용합니다.

  • 웹 화면: Next.js 기반 웹 서비스
  • 서버 기능: Next.js 서버 기능에서 로그인, 권한 검사, 수업 등록, 충돌 검사, 알림 생성을 처리
  • 데이터 저장소: PostgreSQL 관계형 데이터베이스
  • 초대 전달: 이메일 발송 서비스 사용을 가정하되, 이메일 사용이 어려운 강사에게는 운영자가 초대 링크를 복사해 별도로 전달할 수 있게 함
  • 엑셀 처리: 업로드 파일을 서버에서 읽고 행별 검증 결과를 만든 뒤, 확정 시에만 수업 계획 저장

그림을 그리는 중…

운영자와 강사는 같은 웹 서비스에 접속하지만 권한에 따라 다른 화면과 데이터만 봅니다.
수업 등록, 엑셀 검증, 시간 중복 검사, 시간표 공개, 알림 생성은 서버에서 처리하고 결과는 PostgreSQL에 저장합니다.
이메일은 강사 초대 링크 전달에만 사용하며, 시간표 변경 알림은 첫 개발에서 서비스 안 알림함으로 제공합니다.


7. 주요 데이터 구조

데이터주요 항목용도
위탁업체업체 식별값, 업체명, 생성일데이터 분리와 권한 기준
사용자 계정계정 식별값, 로그인 정보, 역할, 위탁업체 식별값운영자·강사 접근 권한 관리
학교학교 식별값, 위탁업체 식별값, 학교명, 상태수업이 열리는 학교 관리
강사강사 식별값, 위탁업체 식별값, 강사명, 초대 상태, 연결 계정수업 담당 강사 관리
학기학기 식별값, 학교 식별값, 학기명, 시작일, 종료일학교별 시간표 운영 범위
교시 템플릿템플릿 식별값, 학교 식별값, 학기 식별값, 적용 기간, 이름, 우선순위학교별 교시표 적용 기준
교시표 항목템플릿 식별값, 요일, 교시명, 시작 시각, 종료 시각교시명에서 실제 시간 찾기
수업 계획수업 식별값, 위탁업체·학교·강사 식별값, 운영 기간, 요일, 교시명, 실제 시작·종료 시각, 과목, 공개 상태반복 시간표의 기본 단위
시간 겹침 예외관련 수업 식별값, 사유, 처리 운영자, 처리 시각같은 학교 시간 겹침의 승인 기록
시간표 공개본공개본 식별값, 공개 시각, 공개 운영자공개된 확정 시간표 기록
알림알림 식별값, 강사 식별값, 수업 식별값, 알림 종류, 변경 전후 내용, 읽음 시각강사 알림함 표시
엑셀 업로드 임시 자료업로드 식별값, 행 번호, 입력값, 검증 결과, 오류 내용저장 전 행별 검증과 수정

식별값 사용 원칙

학교와 강사는 이름이 아니라 위탁업체 안에서 발급한 고유 식별값으로 수업 계획에 연결합니다.

  • 학교명과 강사명은 화면 표시와 엑셀 매칭 후보로 사용합니다.
  • 같은 이름의 강사가 여러 명이면 운영자가 정확한 강사를 선택해야 합니다.
  • 이름 변경이 있어도 기존 수업 계획 연결은 유지됩니다.

8. 핵심 기능 흐름: 수업 등록과 시간 중복 저장 차단

가장 중요한 기능은 운영자가 수업 계획을 등록할 때 같은 강사의 시간 중복을 저장 전에 막는 것입니다.

그림을 그리는 중…

수업 등록 화면에서 먼저 시간 중복을 확인하지만, 서버도 저장 직전에 다시 검사합니다.
두 운영자가 동시에 같은 강사에게 수업을 등록하더라도 중복이 저장되지 않도록 데이터베이스 저장 과정 안에서 다시 검사해야 합니다.
시간표를 공개하면 공개 대상 강사의 알림함에 시간표 공개 알림이 생성됩니다.


9. 시간표 공개와 변경 알림 규칙

9-1. 공개 전 상태

수업 계획을 저장한 직후 상태는 기본적으로 임시 배정입니다.

임시 배정 상태에서는 다음이 가능합니다.

  • 운영자만 전체 내용을 확인
  • 수업 추가·수정·삭제
  • 시간 중복 해결
  • 엑셀 업로드 오류 수정
  • 교시표와 실제 시간 확인

9-2. 확정 시간표 공개

운영자는 시간 중복이 해결된 수업 계획을 확정 시간표로 공개합니다.

공개 시 저장할 정보는 다음과 같습니다.

  • 공개본 식별값
  • 공개한 운영자
  • 공개 시각
  • 공개 대상 수업 계획
  • 공개 대상 강사

9-3. 변경 알림

공개 후 수업 계획의 아래 정보가 바뀌면 해당 강사에게 서비스 안 알림을 생성합니다.

  • 학교
  • 요일
  • 교시
  • 실제 시작·종료 시각
  • 과목
  • 운영 기간
  • 담당 강사

알림에는 아래 내용을 포함합니다.

시간표가 변경되었습니다.

학교: 새봄초등학교
요일: 화요일
교시: 늘봄 2교시
실제 시간: 14:00~14:40
과목: 창의미술
변경 시각: 2026-00-00 00:00

강사가 알림을 열면 변경된 개인 시간표 화면으로 이동합니다.

중복 알림 방지

한 번의 수정 저장으로 같은 강사에게 같은 수업 알림이 여러 개 생기지 않게 합니다.

  • 변경 전후 값을 비교합니다.
  • 실제로 바뀐 항목이 있을 때만 알림을 만듭니다.
  • 한 번의 저장 요청당 수업 하나에 알림 하나만 생성합니다.

10. 운영상 중요한 구현 기준

데이터 정확성

  • 모든 시간은 한국 표준시 기준으로 저장하고 표시합니다.
  • 시간은 14:00, 14:40처럼 통일된 형식으로 변환합니다.
  • 엑셀 시간 셀은 문자열과 엑셀 시간 형식이 섞일 수 있으므로 서버에서 같은 형식으로 변환합니다.
  • 수업 계획에는 교시명과 실제 시작·종료 시각을 함께 저장합니다.
  • 운영 기간이 겹치지 않는 수업은 시간 중복으로 막지 않습니다.

동시 저장 방지

화면에서만 중복을 확인하면 두 운영자가 동시에 저장할 때 문제가 생길 수 있습니다.

따라서 서버는 수업 계획 저장 시 다음 순서로 처리합니다.

  1. 같은 위탁업체, 강사, 요일의 관련 수업 계획을 다시 조회합니다.
  2. 운영 기간과 실제 시간을 비교합니다.
  3. 서로 다른 학교의 시간 중복이 있으면 저장을 취소합니다.
  4. 같은 학교 시간 겹침은 예외 사유가 있는 경우에만 저장합니다.
  5. 검사와 저장을 하나의 데이터베이스 처리 단위로 묶습니다.

개인정보와 민감 정보

첫 개발에서는 성범죄 경력·아동학대 전력 조회 회신서 등 민감한 원본 파일을 저장하지 않습니다.

첫 개발의 강사 정보에는 시간표 운영에 필요한 최소 정보만 넣습니다.

  • 강사명
  • 초대 상태
  • 연결된 계정
  • 연락 또는 초대 전달을 위한 정보
    • 이메일 사용 여부는 실제 운영 방식에 맞게 확인 필요
  • 수업 계획 연결 정보

서류 종류, 제출 상태, 만료일, 회신서 정보는 후속 버전에서 강사·학교 조합별로 설계합니다.


11. 첫 검증 기준

첫 검증은 창업자 업체의 약 35명 강사와 약 20개 학교 데이터를 사용합니다.

검증 항목확인 방법완료 기준
학교·강사 등록실제 운영 학교와 강사 등록실제 수업 배정에 필요한 학교·강사 목록을 등록할 수 있다.
교시표 설정학교별 교시명과 실제 시간 입력학교마다 다른 교시명을 실제 시간으로 연결할 수 있다.
엑셀 등록실제 학기 시간표 양식 업로드오류 행을 확인하고 수정한 뒤 수업 계획으로 확정할 수 있다.
시간 중복 차단의도적으로 겹치는 수업 입력서로 다른 학교의 동일 강사 시간 중복은 저장되지 않는다.
운영 기간 검사기간이 다른 같은 시간 수업 입력운영 기간이 겹치지 않으면 정상 저장된다.
같은 학교 예외같은 학교 시간 겹침 입력사유 없이는 저장되지 않고, 사유를 남기면 저장된다.
강사 시간표강사 계정으로 로그인강사가 자기 학교·요일·교시·과목·실제 시간을 확인한다.
공개 알림시간표 공개 및 변경해당 강사의 알림함에 알림이 한 번 생성된다.
권한 분리다른 강사 계정으로 로그인다른 강사의 시간표와 운영자 데이터를 볼 수 없다.

도입 전후 기록 항목

효과 검증을 위해 아래 항목을 운영자가 기록합니다.

  • 시간 중복 배정이 발견된 횟수
  • 시간 중복을 발견한 시점
  • 중복 수업 재배정에 걸린 시간
  • 강사의 시간표 문의 건수
  • 시간표 변경 후 잘못 전달된 일정 수정 건수
  • 엑셀 업로드 오류 유형과 수정 횟수

도입 전 기준값과 목표 개선 수준은 실제 첫 학기 사용 결과를 바탕으로 확정합니다.


12. 4~6개월 MVP 제작 계획

기간주요 작업산출물
1개월차실제 엑셀 자료 분석, 학교·강사·교시표·수업 계획 항목 확정, 화면 설계데이터 항목 정의, 엑셀 양식, 화면 설계안
2개월차업체 시작, 로그인, 권한, 학교·강사 목록, 교시표 설정 개발운영자 기본 화면
3개월차수업 계획 직접 등록, 실제 시간 계산, 시간 중복 검사와 저장 차단 개발수업 등록 및 중복 경고 기능
4개월차엑셀 업로드, 행별 오류 표시, 전체 시간표, 현장 수정 기능 개발학기 시작 전 배정 기능
5개월차강사 초대·계정 연결, 개인 시간표, 알림함, 공개·변경 알림 개발강사 사용 기능
6개월차실제 약 35명 강사·약 20개 학교 데이터 적용, 오류 수정, 사용성 개선실제 운영 가능한 MVP

MVP 완료 기준

다음 조건을 모두 만족하면 첫 MVP를 완료로 봅니다.

  • 운영자가 업체 계정을 만들고 학교와 강사를 등록할 수 있다.
  • 운영자가 학교별 학기와 교시표를 등록할 수 있다.
  • 운영자가 수업 계획을 직접 입력하거나 지정 엑셀 양식으로 일괄 등록할 수 있다.
  • 엑셀 업로드 시 문제 행을 확인하고 화면에서 수정할 수 있다.
  • 같은 강사가 서로 다른 학교의 겹치는 실제 시간에 배정되면 저장되지 않는다.
  • 같은 학교 안의 시간 겹침은 사유를 남긴 경우에만 저장된다.
  • 운영자가 전체 시간표에서 겹친 두 수업을 나란히 보고 한쪽을 수정할 수 있다.
  • 운영자가 확정 시간표를 공개할 수 있다.
  • 강사가 자신의 개인 시간표를 볼 수 있다.
  • 시간표 공개 또는 변경 시 해당 강사 알림함에 알림이 생성된다.
시스템 구성 — 방과후·늘봄 강사 배정 관리 서비스 | Prometheon