+ 모호성과 금전 위험을 가장 신중히 다뤘다.
- 내용이 다소 길고 일부 계획은 범위가 크다.
무엇을 먼저 고정해야 손대도 되는지 순서를 줍니다. 되돌릴 수 없는 변경을 표시합니다.
| 분류 | 개발 › 코딩 |
|---|---|
| 태그 | 분석검토개발자 |
Plan a safe change to untested code. Produce, in order: 1. How to pin current behavior before changing anything — characterization tests, logging the current outputs, capturing real inputs. *Whatever is cheapest that detects a change.* 2. What the code does now, as far as the description allows, and what you are unsure about. 3. The smallest change achieving my goal, and a larger one that would be better if I had tests. 4. Change order — refactor with behavior fixed first, then change behavior. Never both in one step. 5. *Irreversible parts* — data migrations, external calls, anything that cannot be rolled back. These need their own plan. 6. What to check after each step. Rules: - Do not propose a rewrite. Untested rewrites are how outages happen. - Where the description leaves the current behavior ambiguous, say so — *that ambiguity is the actual risk here.* - Prefer a change that can be deployed dark or behind a flag, where possible.
테스트 없는 코드를 바로 고치면 뭐가 깨졌는지도 모른다. 이 프롬프트는 먼저 현재 동작을 고정하는 방법을 찾고, 그다음에 바꿀 순서를 준다.
ChatGPT가 모호성을 임의로 결정하지 않고 보류·승인·점진 활성화를 제시해 가장 안전하다. Gemini도 충실하지만 일부 복구책이 실제 롤백이 아니며, [C]는 제공되지 않았다.
+ 모호성과 금전 위험을 가장 신중히 다뤘다.
- 내용이 다소 길고 일부 계획은 범위가 크다.
+ 요구된 6단계를 순서대로 구체화했다.
- 삭제 SQL과 해외 건너뛰기는 안전성이 부족하다.
| 기준 | ChatGPT | Gemini | 앞선 모델 |
|---|---|---|---|
| 지시 준수 | 10 | 10 | 동점 |
| 정확성 | 9 | 7 | ChatGPT +29% |
| 구체성 | 10 | 9 | ChatGPT +11% |
| 구성·가독성 | 9 | 9 | 동점 |
| 분량 적정성 | 8 | 7 | ChatGPT +14% |
gpt-5.6-sol가 모델 이름을 가린 채 1~10점으로 채점했습니다 (2026-09-24). 측정값이 아니라 AI 심사 결과입니다.
같은 입력을 세 모델에 넣어 받은 답을 그대로 옮겼습니다. 각 CLI(에이전트 하네스)에서 실행했습니다. ChatGPT·Claude 앱이나 웹에서는 답이 다를 수 있습니다.
코드 설명: 5년 된 PHP 정산 배치 스크립트(batch/settlement.php). 테스트 코드 없음. 매일 새벽 2시 크론으로 실행되며 파트너사별 정산 금액을 계산해 엑셀로 출력하고 settlements 테이블에 기록함. 원 코드 작성자는 퇴사한 상태 필요한 변경: 정산 대상에 해외 파트너사를 추가해야 함. 해외 파트너는 달러 기준 매출을 그날 환율로 환산해서 원화로 정산해야 함 제약: 정산 결과가 실제 파트너사 입금액으로 바로 이어짐(금액 오류 시 금전 사고). 배포는 새벽 시간대에만 가능. 별도 롤백 절차가 마련되어 있지 않음
가장 먼저 운영 정산을 건드리지 않는 읽기 전용 재현 모드를 추가하거나, 기존 계산 로직을 호출해 결과만 저장하는 얇은 실행 경로를 만듭니다.
저비용 순서로는 다음과 같습니다.
settlements 기록 예정 값settlements 데이터를 기준으로 재현 결과를 대조합니다.현재 결과와 실제 DB 기록이 이미 일치하는지 먼저 확인해야 합니다. 일치하지 않는다면 신규 기능보다 먼저 원인을 밝혀야 합니다.
운영에서는 처음부터 해외 파트너를 활성화하지 않고 다음과 같이 둡니다.
foreign_settlement_enabled = false설명으로 확실히 알 수 있는 현재 흐름은 다음과 같습니다.
batch/settlement.php를 실행합니다.settlements 테이블에 결과를 기록합니다.다만 다음은 아직 확인되지 않은 핵심 불확실성입니다.
settlements의 중복 방지 키와 재실행 동작특히 환율 기준일, 반올림 위치, 재실행 방식은 금액 오류로 직결됩니다. 이 설명만으로 임의로 정하면 안 됩니다. 이 불확실성 자체가 현재 가장 큰 위험입니다.
기존 국내 파트너 처리 흐름은 그대로 두고, 파트너별 통화만 분기합니다.
settlements에 환율·원천 통화·환산 금액도 함께 기록단, 초기 배포에서는 해외 파트너 계산 결과를 실제 정산에 사용하지 않고 shadow 결과로만 비교합니다. 충분히 검증된 뒤 allowlist로 한 파트너씩 활성화하는 방식이 안전합니다.
정산 계산을 다음처럼 작은 순수 함수 단위로 분리합니다.
그리고 각 계산에 다음 정보를 불변으로 남깁니다.
이렇게 하면 나중에 환율 제공처나 계산 규칙이 바뀌어도 과거 정산을 재현할 수 있습니다. 다만 테스트가 없는 상태에서 이 구조 분리와 기능 변경을 동시에 진행하면 위험하므로 단계적으로 해야 합니다.
기존 코드를 바꾸되 계산 결과는 바꾸지 않습니다.
확인할 것:
행동은 유지한 채 다음만 분리합니다.
확인할 것:
해외 파트너에 대해 계산하되 실제 입금용 엑셀과 settlements에는 반영하지 않습니다.
확인할 것:
명시적 allowlist를 사용해 가장 낮은 위험의 해외 파트너부터 활성화합니다.
확인할 것:
며칠간 결과를 확인한 뒤 allowlist를 확대합니다. 충분한 기간 동안 기존 국내 정산의 결과가 변하지 않았는지도 확인합니다.
이 파일을 생성·전달하면 사실상 되돌릴 수 없습니다.
별도 계획:
settlements 기록이미 입금액의 기준으로 사용될 수 있으므로 단순 덮어쓰기는 위험합니다.
별도 계획:
외부 API는 응답값과 가용성이 통제되지 않습니다.
별도 계획:
자동 롤백이 없으므로 배포 전에 수동 비상 절차를 정해야 합니다.
모든 새벽 배포 후 최소한 다음을 확인합니다.
settlements 합계가 같은가핵심 원칙은 먼저 기존 국내 정산을 재현 가능하게 고정하고, 그 다음 구조만 분리하며, 해외 환산은 shadow 모드에서 검증한 뒤 제한적으로 활성화하는 것입니다. 환율 기준일·반올림·재실행·입금 파일 전달 시점이 확정되기 전에는 실제 해외 정산을 켜면 안 됩니다.
| 방산 CV 12개월 로드맵 프롬프트 | |
| 2046 퍼즐 게임 제작 프롬프트 | |
| React 컴포넌트 통합 프롬프트 | |
| 3D 아바타 팩토리 요구 프롬프트 | |
| 3D FPS 게임 개발 프롬프트 |