ai-todolist.md
# 작업 계획
{당신이 하고자 하는 작업에 대해 이해한대로 최대한 상세히, 제공받은 모든 정보를 이해한대로 다시 적는다고 생각하고 적으세요. 이 작업계획서는 이 자체로 온전해야하며, 이 작업 계획서만 보고도 이 프로젝트에 방금 온보딩한 주니어 개발자가 그저 따라하기만 해도 작업을 완료 할 수 있을 수준으로 아주 상세해야합니다.}
# detailed todo list
- [ ] 큰 단위의 작업
- [ ] 큰 단위에 속하는 작은 작업
- [ ] 큰 단위에 속하는 작은 작업의 구현 코드 작성
- [ ] 큰 단위에 속하는 작은 작업의 pytest cov 실행
- [ ] 큰 단위에 속하는 작은 작업의 테스트 작성
- [ ] 큰 단위에 속하는 작은 작업의 테스트 통과
- [ ] 구현과 테스트를 작성한 후 이것들을 섞어 git add + git commit -m {{적절한 메시지, 한국어로.}}
# 현재 진행 중인 작업
만약 사용자가 당신에게 "계획서를 생성해" 라고 시키면 기존에 ai-todolist.md
파일안에 어떤 내용이 있던지 전부 지우고 새로이 내용을 작성하세요, 그 이후 작업을 시작하면 됩니다.
만약 사용자가 당신에게 "계획서대로 작업해" 라고 시키면, ai-todolist.md
파일을 읽고 detailed todo list 를 채워 작성을 시작하고, 작업을 시작하세요. 만약 사용자가 오로지 작업 계획만 작성된 todo list 를 준다면, detailed todo list 를 깊게 생각하여 작성하는것부터 시작하세요.
ai-todolist.md
를 읽는다.- 남아있는 detailed todolist 를 읽고, 지금 할 일을 정한다. 없다면 여기서 종료한다.
- 지금 할 일을 사용자에게 말하고,
ai-todolist.md
파일의 "현재 진행 중인 작업" 부분을 업데이트 한다. (todo list check 는 여기서 진행하지 않습니다.) - 사용자에게 현재 진행중인 작업 부분을 업데이트 했음을 알린다.
- 코드 구현을 진행한다.
- 구현한 코드의 테스트 커버리지를 확인한다.
- 읽은 커버리지를 바탕으로 방금 구현한 내용의 테스트 케이스들을 고민해서 사용자에게 말하고, 그대로 테스트를 작성한다.
- 테스트를 실행한다. (예시: pytest {특정 테스트})
- 실패하면
ai-todolist.md
5번으로 돌아가 다시 성공 할 때까지 구현 / 테스트를 진행합니다. 성공할 경우 1번으로 돌아갑니다. 당신은 프로 개발자로서, 특정 작업의 마일스톤 마다 커밋을 해야합니다. (각 커밋은 동작하는 커밋이어야 합니다.)
유의할점은, 파일을 벌크로 생성하고 맨 마지막에 테스트를 돌리는 그런방식으로는 안된다는겁니다. one by one 으로 하나씩 작성하고 돌리고 이런식으로 진행하세요.
뭔가 작업 하나를 하나 끝낼때마다 당신이 0번을 했는지, 1번을 했는지 말하면서 진행하세요. 예를들면
1. todo list 읽기
- 지시대로 읽어보겠습니다.
2. 지금 할 일 정하기
- todo list 를 읽었습니다.
3. 지금 할 일 사용자에게 알리고, todo list update
- 지금은 {{할 일 내용}} 을 해야 합니다.
4. 현재 진행중인 작업 업데이트 하기
- 현재 진행중인 작업을 {{할 일 내용}} 으로 바꾸었습니다.
5. 코드 구현을 진행하기
- {{할 일 내용}} 에 대한 코드 구현을 진행해야 합니다.
- 어떻게 구현할지 미리 구상해보겠습니다.
- {{sequential thinking ...}}
- 이제 {{할 일 내용}} 에 대한 코드 구현을 진행하겠습니다.
6. 방금 구현의 테스트 커버리지 확인 하기
- {{할 일 내용}} 을 구현했으니, 이제 해당 구현에 대한 테스트 커버리지가 없을것입니다. 테스트 케이스 작성을 위해 실제로 돌리진 않고 테스트 커버리지만을 확인해보겠습니다.
pytest -v --cov={{module name}} --cov-report=term-missing -q | cat
7. 테스트 커버리지 분석하기
- 테스트 커버리지를 확인해보니, {{할 일 내용}} 의 구현부의 테스트가 필요합니다. 기존에 커버되지 않은 다른 케이스들은 무시하고, 이번 구현에 영향받은 부분만 테스트 케이스를 작성해야합니다.
- 테스트 커버리지를 바탕으로 테스트 케이스를 고민해보겠습니다.
- {{sequential thinking ...}}
8. 테스트 작성하기
- 이제 {{할 일 내용}} 에 대한 테스트 케이스들을 작성하겠습니다.
- {{테스트 작성}}
- 이제 테스트를 실행하겠습니다. 실행 명령어는 아래와 같습니다.
pytest -vv {{테스트 파일}}
- {{실제 테스트 실행}}
9. 성공/실패 여부 확인하기
- 테스트가 {{실패|성공}} 했습니다.
- 실패했을 경우: 테스트가 실패했습니다. 원인을 생각하고 분석해보겠습니다.
- {{sequential thinking ...}}
- 원인은 {{유추 된 원인}} 인것 같습니다. 다시 5번으로 돌아가겠습니다.
- 성공했을 경우: 테스트가 성공했습니다. 커버리지를 분석해보겠습니다.
pytest -v --cov={{module name}} --cov-report=term-missing -q | cat
- 의도한대로 커버리지가 올라가지 않았을 경우: 테스트는 통과했으나 의도한대로 작성되지 않았습니다. 다시 6번으로 돌아가겠습니다.
- 의도한대로 커버리지가 올라갔을 경우: 테스트도 통과했고, 커버리지도 훌륭합니다. 이제 1번으로 돌아가겠습니다.
- 실패했을 경우: 테스트가 실패했습니다. 원인을 생각하고 분석해보겠습니다.
... 이런식으로.
- 절대로 계획 밖의 내용을 사용자의 명시적인 지시 없이 진행하는것은 금지 됩니다. - 예를들면, 기존에 이미 존재하던 린팅 에러를 고치는 작업 - 별도의 사용자 요청이 없었음에도 추가 보완작업을 진행하는 작업