Skip to content

feat: 아이 할 일 타임라인 — 접종·검진·지원금 마감을 한 축에 - #129

Merged
RosieOh merged 1 commit into
mainfrom
feat/child-timeline
Sep 24, 2026
Merged

RosieOh merged 1 commit into
mainfrom
feat/child-timeline

Conversation

@RosieOh

@RosieOh RosieOh commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Closes #128

왜

부모가 "다음에 뭘 해야 하나" 를 알려면 화면 세 곳을 돌아야 했다. 특히 검진은 GET /health/checkups/schedule 이 이름과 달리 이미 기록된 검진만 나열해, 아직 받지 않은 검진은 화면에 나타나지 않았다 — 놓쳐도 알 수 없는 상태였다.

새로 수집하는 데이터는 없다. 흩어져 있던 것을 날짜 하나로 정렬해 준다.

무엇

GET /children/{childId}/timeline?months=12 (기본 12, 최대 36)

항목 출처 상태
VACCINATION 자동 생성된 표준 접종 일정 완료·건너뜀 제외, 기한 지나면 OVERDUE
CHECKUP 표준 시기(CheckupStandard) + 검진 기록 그 시기 기록 있으면 DONE, 없이 지나면 OVERDUE
POLICY_DEADLINE 아이 나이에 맞는 정책의 신청 마감 UPCOMING
NEW_TERM 달력(3월) INFO

판단 세 가지

놓친 항목을 감추지 않는다 — 조회 구간이 오늘부터여도 기한 지난 접종·검진은 담고 overdueCount 로 준다. 지난 일이라고 빼면 사용자는 놓친 사실 자체를 모른다.

없는 날짜를 만들지 않는다 — 3월 신학기는 시설마다 신청 일정이 다르다. 그럴듯한 날짜를 적으면 그걸 믿고 놓치는 사람이 생기므로 참고 항목으로만 두고 "시설에 직접 확인" 이라고 밝힌다. 검증 안 된 지원금 금액도 추정치임을 붙인다.

표준 검진 시기를 코드에 담는다 — 국민건강보험 영유아 건강검진 8차(생후 14일~71개월). 예방접종 일정(VaccineType)과 같은 방식이다. 검진 기록에 회차가 없어 날짜 구간으로 맞추며, 회차를 받게 되면 ChildTimelineService 한 곳만 고치면 된다.

접근제어

아이 개인정보라 소유권을 확인하고, 남의 아이는 403 이 아니라 404 다 (403 은 "그 아이가 존재한다" 를 알려 준다). 검증은 ChildService.requireOwned 하나만 쓴다 — 복사하면 한쪽만 고쳐져 구멍이 남는다.

테스트

  • ChildTimelineServiceTest(10) — 놓친 접종 유지, 완료 제외, 구간 밖 제외, 검진 DONE/OVERDUE 판정, 정책 추정치 문구, 신학기 INFO, 정렬, 기간 상한, 생년월일 없는 경우
  • ChildTimelineContractTest(4) — 비로그인 401, 남의 아이 404, 세 출처 병합·정렬, 기간 기본·상한
  • 전체 584 tests, 실패 0, skip 0. API 스펙(docs/api/openapi.json) 갱신 포함

다음

화면은 CareCode_FE 에서 이어서 만든다 (이 PR 은 서버만).

부모가 "다음에 뭘 해야 하나" 를 알려면 화면 세 곳을 돌아야 했다. 특히 검진은
/health/checkups/schedule 이 이름과 달리 이미 기록된 검진만 나열해서, 아직 받지 않은 검진은
화면에 나타나지 않았다 — 놓쳐도 아무도 알려주지 않는다.

새로 수집하는 데이터는 없다. 흩어져 있던 것을 날짜 하나로 정렬해 준다.

- GET /children/{childId}/timeline?months=12 (기본 12, 최대 36)
- 접종: 자동 생성된 표준 일정에서 완료·건너뜀 제외, 기한 지난 것은 OVERDUE
- 검진: 국가 영유아 건강검진 8차 시기(CheckupStandard)를 코드에 담고,
  그 구간에 남은 검진 기록이 있으면 DONE. 검진 기록에 회차가 없어 날짜로 맞춘다
- 지원금: 아이 나이에 해당하고 마감이 구간 안인 정책. 미검증 금액은 추정치임을 밝힌다
- 3월 신학기: 시설마다 신청 일정이 달라 날짜를 만들지 않고 참고(INFO) 항목으로만 둔다

놓친 항목은 구간 앞이라도 담고 overdueCount 로 함께 준다. 지난 일이라고 감추면
사용자는 놓친 사실 자체를 모른다.

소유권은 ChildService.requireOwned 하나만 쓴다(검증을 복사하면 한쪽만 고쳐져 구멍이 남는다).
남의 아이는 403 이 아니라 404 다 — 403 은 "그 아이가 존재한다" 를 알려 준다.
@RosieOh
RosieOh merged commit b940762 into main Sep 24, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ 아이 ] 다음에 뭘 해야 하는지 한 화면에서 알 수 없다

1 participant