기능이 안 되는 문제는 차라리 쉬웠다. 안 되면 안 된다고 티가 나니까. 골치 아팠던 건 잘 돌아가는 것처럼 보이는데 근거가 없는 쪽이었다.

3월에 API 키가 빠진 채로 화면이 통째로 깨진 적이 있다. 급한 대로 안내 배너로 막고, 내친김에 AI 오류 응답도 사용자가 읽기 좋은 문구로 정규화했다.
근데 오류를 예쁘게 감싸놓으니까 답변만 봐서는 아무것도 알 수가 없더라. 뉴스가 한 달 전 거였는지, 검색이 제대로 안 됐는지, 다른 AI 서비스로 넘어갔는지. 답변은 항상 자연스럽게 나왔다.
방향 잡는 데 한 달쯤 더 걸렸다. AI 서비스를 여러 개 두고 하나가 막히면 다음으로 넘기게 바꾸고, 그 뒤로는 계속 상태를 밖으로 빼는 작업이었다. 지금 어느 서비스가 답한 건지, 뉴스가 제대로 쌓이고 있는지, 판단할 근거가 부족하진 않은지를 화면에 띄웠다.
답변보다 데이터 상태를 먼저 보여주는 게 맞더라.
순서가 완전히 거꾸로였다. 3월 말에 AI 판단을 업비트 실주문에 연결하는 실행부부터 만들었다. 주문 나가는 기능이 먼저 있었고 막는 건 뒤로 하나씩 붙었다. 모의 거래와 실전 거래를 아예 갈라놓은 게 4월, 실전 매수 잠금이 5월, 매수 직전 한 번 더 검증하는 게 6월이다.
그러고 6월 중순에 진입 기준을 도로 완화했다. 잠글 만큼 잠갔더니 아무것도 안 사더라. 안전한데 수익이 없음
두 달 반 동안 잠금이 하나씩 늘었다는 건, 뒤집으면 그 전까지 그만큼 열려 있었다는 소리다. 7월에 이 경로를 통째로 다시 본 것도 그래서다.
4월 2일 작업 기록이 좀 웃기다. 시끄럽게 반복되는 경고 로그를 덜 찍히게 낮춰놓고, 바로 이어서 매수 직전 잔고를 로그로 남기는 작업을 했다. 로그가 없는 게 아니라 많은데 정작 볼 게 없었다.
그래서 작업이 어디까지 갔는지 화면에 실시간으로 흘려보내게 했더니, 이번엔 그 실시간 전송이 죽었다. 예외 처리랑 타임아웃 방어까지 넣고 나서야 잠잠해졌다.
사고가 나서 본 게 아니다. 7월 10일에 코드 한 시점을 기준으로 고정해놓고, 실주문이 나갈 수 있는 경로만 처음부터 다시 읽었다. 네 건이 나왔다.