일정 Spec
화면 경로 /mainPages/schedule · 작성일 2026-10-12
일정 화면의 기능·데이터·권한을 정리한 원본 문서입니다. 도움말(schedule-help.html)의 상세 링크가 이 문서의 각 항목으로 연결됩니다.
A1. 업무 흐름
사용자가 일정을 등록하면서 친구를 참여자로 넣을 수 있고, 미리 알림 시각이 되면 서버가 만든 사람과 참여자 모두에게 푸시를 보냅니다.
- 사용자① 일정 등록 · 수정이 화면 (일정 입력 창)
- 시스템② 미리 알림 확인1분마다 서버 점검
- 시스템③ 푸시 발송만든 사람 · 참여자
- 사용자 · 참여자④ 일정 확인이 화면
사용 지점 · 사용 주체 · 목적
| 단계 | 사용 지점 | 사용 주체 | 목적 |
| ① 등록 | 약속·기념일·업무 일정이 생겼을 때 | 로그인 사용자 | 잊지 않도록 기록하고 함께할 친구와 공유 |
| ④ 확인 | 알림을 받았거나 일정을 볼 때 | 만든 사람, 참여자 | 날짜별 일정 확인 |
A2. 화면 Meta data
| 항목 | 내용 |
| 화면명 | 일정 |
| 화면 경로 | /mainPages/schedule |
| 메뉴 키 | schedule (서비스 메뉴, 홈 카드 표시) |
| 화면 목적 | 일정을 등록·공유하고 정한 시각에 알림을 받는다 |
| 화면 유형 | 조회+등록 |
| 프로그램 | pages/mainPages/schedule.js, components/core/client/contents/scheduleContent.js, lib/scheduleCron.js |
| API 모듈 | SCHEDULE_CREATE · LIST · UPDATE · DELETE · DELETE_OCCURRENCE · GET_PARTICIPANTS, FRIEND_LIST_BY_USER |
| 주요 테이블 | TB_COR_SCHEDULE, TB_COR_SCHEDULE_PARTICIPANT, TB_COR_SCHEDULE_EXCEPTION |
| 도움말 파일 | public/help/schedule-help.html, schedule-spec.html |
A3. 화면 구성 상세
| 영역 | 영역명 | 사용자가 하는 일 | 화면 동작 | backend 동작 |
| ① | 상단 (연·월, 오늘) | 오늘로 이동 | 스크롤 위치에 따라 연·월 표시가 바뀜 | 없음 |
| ② | 달력 | 위아래 스크롤로 달 이동, 날짜 선택 | 보이는 달의 일정을 색 점·제목으로 표시 | SCHEDULE_LIST |
| ③ | 날짜별 일정 목록 | 일정 열기, 삭제, + 추가 | 선택한 날짜 아래에 펼쳐짐, ✕로 닫힘 | SCHEDULE_GET_PARTICIPANTS |
| ④ | 일정 입력 창 | 항목 입력 후 저장 | 남이 만든 일정은 읽기 전용으로 열림 | SCHEDULE_CREATE, SCHEDULE_UPDATE |
A4. 조회 조건
조회 조건 입력란은 없습니다. 달력에 보이는 연·월 기준으로 내가 만든 일정과 참여자로 들어간 일정을 함께 조회합니다.
A5. 입력 항목 정의
| 항목 | 의미 | 형식 · 값 | DB 컬럼 |
| 제목 | 일정 이름 | 문자, 필수 (암호화해 저장) | TITLE |
| 유형 | 일정 종류 | 선택: 생일, 업무, 검진, 행사, 시험, 가족행사, 장례식, 졸업, 휴일, 병원, 면접, 제사, 회의, 이사, 여행, 결혼, 기타 | SCHEDULE_TYPE |
| 시작 · 종료 | 일정 시간 | 날짜·시각, 종일이면 날짜만 | START_TIME, END_TIME, IS_ALL_DAY |
| 색상 | 달력 표시 색 | 7가지 중 선택 | COLOR |
| 반복 | 반복 주기 | 반복 없음, 매일, 매주, 매월, 매년, 음력 기준 반복 / 반복 시작일·종료일(없으면 무기한) | 반복 규칙 컬럼 |
| 미리 알림 | 알림 시점 | 없음, 5분 전, 10분 전, 30분 전, 1시간 전, 1일 전 | REMINDER_MINUTES |
| 참여자 | 함께할 친구 | 친구 목록에서 이름 검색 | TB_COR_SCHEDULE_PARTICIPANT |
| 메모 | 설명 | 문자, 선택 | DESCRIPTION |
A6. 버튼 동작
| 버튼 (영역) | 누를 수 있을 때 | 확인·검증 | 결과 | backend 처리 |
| 오늘 (①) | 항상 | 없음 | 달력이 오늘로 스크롤 | 없음 |
| + 추가 (③) | 날짜를 선택했을 때 | 없음 | 그 날짜로 입력 창 열기 | 없음 |
| 저장 (④) | 내가 만든 일정 또는 새 일정 | 제목 필수 | 달력 갱신 | SCHEDULE_CREATE / SCHEDULE_UPDATE |
| 삭제 (③) | 내가 만든 일정 | "이 일정을 삭제할까요?" 확인 | 일정 삭제 | SCHEDULE_DELETE |
| 이 일정만 삭제 (③) | 반복 일정 | 반복 일정 삭제 선택 창 | 그 날짜 한 번만 빠짐 | SCHEDULE_DELETE_OCCURRENCE |
| 전체 반복 일정 삭제 (③) | 반복 일정 | 반복 일정 삭제 선택 창 | 반복 일정 전체 삭제 | SCHEDULE_DELETE |
| 소리 미리듣기 (④) | 항상 | 없음 | 알림 소리 재생 (생일은 생일 소리) | 없음 |
A7. 권한
| 역할 | 조회 | 수정 · 삭제 | 알림 받기 |
| 만든 사람 | O | O | O |
| 참여자 | O (읽기 전용) | X | O |
A8. 상태 변화
등록알림 시각 도래
시스템알림 발송됨시간 · 알림 수정
만든 사람다시 알림 대기
A9. 데이터 연계
| 처리 | 바뀌는 데이터 | 함께 일어나는 일 |
| 등록 · 수정 | TB_COR_SCHEDULE, TB_COR_SCHEDULE_PARTICIPANT | 참여자의 달력에도 표시 |
| 미리 알림 | NOTIFIED_AT | 만든 사람과 참여자 기기로 푸시, 누르면 일정 화면으로 이동. 생일 유형은 "생일 축하해요!" 알림과 생일 소리 |
| 반복 일정 한 번만 삭제 | TB_COR_SCHEDULE_EXCEPTION | 나머지 반복은 그대로 유지 |
개정 이력
| 버전 | 수정일 | 수정 내용 |
| 1.0 | 2026-10-12 | 최초 작성 |