LabHub
배우기 러닝패스 코스

낯선 시스템 앞에서 · 받은 답과 실제가 다르다 · 실습

받은 답과 실제가 다르다 — 칸마다 대조한다

LabHub 에서 이어서 보기

목표

현장에 들어가기 전 받은 인테이크 답변 9칸을 그 고객사의 실제 시스템에서 잰 값과 대조한다. 판정 규칙을 파일로 굳히고, 정확히 일치·범위 안·불일치·답이 없음·확인 불가 다섯 가지로 판정하는 대조기를 만들고, 어긋난 칸마다 다시 물어볼 질문을 기계가 만들어 내게 한다.

왜 중요한가

인테이크 답변은 고객의 기억이고 시스템은 사실이다. 답을 적은 사람은 대개 3년 전에 그 시스템을 설치한 사람이고, 그 뒤로 보존 기간이 줄었고 연동이 하나 더 붙었고 백업 주기가 바뀌었다. 답변을 그대로 전제로 삼은 계획은 착수하자마자 무너진다.
그래서 대조는 눈이 아니라 규칙으로 한다. 칸마다 어떻게 비교할지를 먼저 정해 파일에 적어 두면, 2주 뒤에 같은 명령을 다시 돌려 그 사이 무엇이 바뀌었는지 볼 수 있다. 눈으로 한 대조는 다시 돌릴 수 없다.
가장 중요한 것은 모르는 칸을 모른다고 적는 것이다. 확인하지 못한 칸을 일치로 적으면 아무도 그 칸을 다시 보지 않고, 불일치로 적으면 고객과 쓸데없이 다툰다. 답이 없는 칸과 확인할 수 없는 칸은 따로 세어 목록으로 남긴다.
채점기는 여러분이 적어 낸 문구를 믿지 않는다. 임시 디렉터리에 채점기가 만든 답변과 사실을 차려 놓고, 매번 다른 값으로 여러분의 대조기를 실제로 실행해 판정과 요약을 직접 계산한 값과 대조한다.

단계

1. /root/intake/gen_site.py 를 만들어 실행해 /root/intake/answers.json(9칸)과 /root/intake/site/(버전 파일·설정·로그 14일치·운영 DB)를 만드세요.
2. 시스템을 직접 재어 /root/intake/facts.json 에 app_version·timezone·retention_days·log_days·daily_orders_max·integrations·backup_interval_hours 일곱 칸을 적으세요.
3. 칸마다 비교 방법을 정해 /root/intake/rules.json 에 fields 목록으로 적으세요. 범위로 답한 칸은 range, 목록으로 답한 칸은 set, 어림수로 답한 칸은 tolerance(tolerance_pct 20), 나머지는 exact 입니다. 잴 자리가 없는 칸은 source 를 null 로 둡니다.
4. /root/intake/reconcile.py 를 만들어 exact 와 set 두 규칙으로 match_exact·mismatch 를 판정하고 요약과 함께 JSON 으로 내게 하세요.
5. range 와 tolerance 를 더해 범위 안에 들어온 칸을 match_in_range 로 판정하게 하세요. 경계값은 범위 안입니다.
6. 답이 비어 있는 칸은 unanswered, 답은 있는데 잰 값이 없는 칸은 unverifiable 로 판정하게 하세요. 둘 다인 칸은 unanswered 입니다.
7. --questions <경로> 를 더해, 일치하지 않은 칸마다 다시 물어볼 질문 한 문장을 담은 JSON 배열을 쓰게 하세요.
8. 진짜 답변과 진짜 사실로 /root/intake/report.json/root/intake/questions.json 을 만들고, /root/intake/intake_report.md 에 네 절로 보고하세요.

참고

단계 8개

  1. 답변과 시스템을 손에 쥐기
  2. 시스템에서 직접 재기
  3. 판정 규칙을 파일로 굳히기
  4. 정확히 일치와 불일치 가르기
  5. 범위 안을 따로 세기
  6. 답이 없는 칸과 확인 불가
  7. 지적 대신 질문 만들기
  8. 진짜 답변으로 돌리고 보고하기