Skip to main content
플랜은 이정표(언제)와 항목(무엇이 얼마나, 언제부터 언제까지) 두 가지로 씁니다. 지금 가진 자산·부채·수입·지출은 플랜이 아니라 가구의 현재 재무(GET /v1/finances)에 있고 모든 플랜이 같이 씁니다. 플랜 항목은 앞으로 생기는 것과, 현재 재무에 대한 계획(팔기·재계약·금액 바꾸기)입니다.

고치는 순서

1

읽기

GET /v1/plans/{id} 로 플랜 전체를 받습니다. revision 은 지금 판의 지문입니다.
2

미리 계산하기(선택)

POST /v1/plans/{id}/projection 에 바꿀 것만(remove·upsert·milestones) 보내면 저장하지 않고 전망을 계산합니다.
3

저장하기

받은 본문을 고쳐 revision 과 함께 PUT /v1/plans/{id} 로 보냅니다. 그사이 다른 곳(화면·다른 사람·다른 토큰)에서 저장했으면 덮어쓰지 않고 412 입니다. 다시 읽고 고칩니다. PUT 은 전체를 바꿉니다. 빠뜨린 milestones·items 는 빈 목록, monteCarlo 는 기본값으로 저장됩니다.
현재 재무도 같습니다. GET /v1/finances 응답의 ETag 를 PUT /v1/finances 의 If-Match 에 넣으면 그사이 바뀌었을 때 412 입니다(넣지 않으면 그냥 덮어씁니다).

시기 Time

항목의 시점(at)·시작(start)·끝(end)은 모두 셋 중 하나로 씁니다.
  • month: 그 달. age: 그 나이가 되는 생일 달(who 가 SPOUSE 면 배우자 나이). milestone: 이정표 달 ± offset 개월.
  • 시작·시점은 그 달부터입니다. 끝은 달이면 그 달까지, 나이·이정표면 그 전 달까지입니다(은퇴하면 그달부터 월급이 끊기는 것과 같습니다). 비우면 플랜 끝까지입니다.
  • 이정표에 묶은 항목은 이정표를 옮기면 따라 움직입니다.

이정표

이정표는 계산이 달라지는 정해진 시점뿐이고, id 가 정해져 있습니다. 다른 id 는 400 입니다. 이정표의 시기는 달 또는 나이입니다({ "id": "retirement", "name": "은퇴", "time": { "age": 60 } }).

항목

모든 항목은 id(플랜 안에서 겹치지 않게 직접 정함)·kind·name 과 종류별 필드를 가집니다. 금액은 원이고 월 금액은 monthlyAmount 입니다. 필드는 레퍼런스의 스키마에 있습니다.
  • change·holding·transfer 는 현재 재무의 수입·지출·자산 id 를 가리킵니다.
  • 항목을 지우지 않고 계산에서만 빼려면 그 id 를 플랜의 off 에 넣습니다. 끈 수입·자산을 가리키는 change·transfer 도 함께 빠집니다.
  • 저장할 때 400: id 가 겹칠 때, 없는 이정표·수입·지출·자산을 가리킬 때, 한 달도 없는 항목(끝이 시작보다 앞)일 때.

결과에서 항목 찾기

전망 응답의 이벤트 이름표는 항목 id 입니다. 한 항목에서 여러 일이 생기면 "항목 id:부분" 으로 가립니다(예: home 을 사면 home, 팔면 home:sale, 재계약하면 home:renew). 그래서 응답의 숫자를 항목으로 거슬러 찾을 수 있습니다.