feat: 아이 할 일 타임라인 — 접종·검진·지원금 마감을 한 축에 - #129
Merged
Merged
Conversation
부모가 "다음에 뭘 해야 하나" 를 알려면 화면 세 곳을 돌아야 했다. 특히 검진은
/health/checkups/schedule 이 이름과 달리 이미 기록된 검진만 나열해서, 아직 받지 않은 검진은
화면에 나타나지 않았다 — 놓쳐도 아무도 알려주지 않는다.
새로 수집하는 데이터는 없다. 흩어져 있던 것을 날짜 하나로 정렬해 준다.
- GET /children/{childId}/timeline?months=12 (기본 12, 최대 36)
- 접종: 자동 생성된 표준 일정에서 완료·건너뜀 제외, 기한 지난 것은 OVERDUE
- 검진: 국가 영유아 건강검진 8차 시기(CheckupStandard)를 코드에 담고,
그 구간에 남은 검진 기록이 있으면 DONE. 검진 기록에 회차가 없어 날짜로 맞춘다
- 지원금: 아이 나이에 해당하고 마감이 구간 안인 정책. 미검증 금액은 추정치임을 밝힌다
- 3월 신학기: 시설마다 신청 일정이 달라 날짜를 만들지 않고 참고(INFO) 항목으로만 둔다
놓친 항목은 구간 앞이라도 담고 overdueCount 로 함께 준다. 지난 일이라고 감추면
사용자는 놓친 사실 자체를 모른다.
소유권은 ChildService.requireOwned 하나만 쓴다(검증을 복사하면 한쪽만 고쳐져 구멍이 남는다).
남의 아이는 403 이 아니라 404 다 — 403 은 "그 아이가 존재한다" 를 알려 준다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #128
왜
부모가 "다음에 뭘 해야 하나" 를 알려면 화면 세 곳을 돌아야 했다. 특히 검진은
GET /health/checkups/schedule이 이름과 달리 이미 기록된 검진만 나열해, 아직 받지 않은 검진은 화면에 나타나지 않았다 — 놓쳐도 알 수 없는 상태였다.새로 수집하는 데이터는 없다. 흩어져 있던 것을 날짜 하나로 정렬해 준다.
무엇
GET /children/{childId}/timeline?months=12(기본 12, 최대 36)VACCINATIONOVERDUECHECKUPCheckupStandard) + 검진 기록DONE, 없이 지나면OVERDUEPOLICY_DEADLINEUPCOMINGNEW_TERMINFO판단 세 가지
놓친 항목을 감추지 않는다 — 조회 구간이 오늘부터여도 기한 지난 접종·검진은 담고
overdueCount로 준다. 지난 일이라고 빼면 사용자는 놓친 사실 자체를 모른다.없는 날짜를 만들지 않는다 — 3월 신학기는 시설마다 신청 일정이 다르다. 그럴듯한 날짜를 적으면 그걸 믿고 놓치는 사람이 생기므로 참고 항목으로만 두고 "시설에 직접 확인" 이라고 밝힌다. 검증 안 된 지원금 금액도 추정치임을 붙인다.
표준 검진 시기를 코드에 담는다 — 국민건강보험 영유아 건강검진 8차(생후 14일~71개월). 예방접종 일정(
VaccineType)과 같은 방식이다. 검진 기록에 회차가 없어 날짜 구간으로 맞추며, 회차를 받게 되면ChildTimelineService한 곳만 고치면 된다.접근제어
아이 개인정보라 소유권을 확인하고, 남의 아이는 403 이 아니라 404 다 (403 은 "그 아이가 존재한다" 를 알려 준다). 검증은
ChildService.requireOwned하나만 쓴다 — 복사하면 한쪽만 고쳐져 구멍이 남는다.테스트
ChildTimelineServiceTest(10) — 놓친 접종 유지, 완료 제외, 구간 밖 제외, 검진 DONE/OVERDUE 판정, 정책 추정치 문구, 신학기 INFO, 정렬, 기간 상한, 생년월일 없는 경우ChildTimelineContractTest(4) — 비로그인 401, 남의 아이 404, 세 출처 병합·정렬, 기간 기본·상한docs/api/openapi.json) 갱신 포함다음
화면은 CareCode_FE 에서 이어서 만든다 (이 PR 은 서버만).