"테스트가 통과했다고 mock이 현실을 반영하는 건 아니다"
Project 상세 화면을 구현하기 전까지는, 목록이나 생성 화면에서 만든 링크를 클릭하면 전부 404로 이어지는 상태였습니다. 화면 명세에는 다양한 항목이 정의되어 있었지만, 실제로 구현 가능한 건 Project 기본 정보뿐이라 범위를 Project Summary와 하드코딩된 Phase Checklist, 고정 Empty State의 Review Summary로 좁혀 구현을 요청했습니다.
구현 후 공유받은 브라우저 스크린샷을 보다가 "조직: -", "산업: -"로 표시되는 걸 발견했습니다. 코드만 보고 짐작하는 대신 원인을 끝까지 추적해보니, PostgREST가 many-to-one 관계의 embedded relation을 배열이 아닌 단일 객체로 반환하는데, 코드는 organization[0]?.name처럼 배열로 접근하고 있었습니다.
더 눈에 띈 건, 이 문제를 잡아내야 할 테스트의 mock 데이터마저 실제 응답과 다르게 배열 형태로 작성되어 있었다는 점입니다. 잘못된 코드와 그 잘못을 그대로 베낀 mock이 서로를 정당화하면서, 이 버그는 unit test를 전부 통과한 채로 숨어 있었습니다. 같은 문제가 이전 작업의 목록 화면 코드에도 동일하게 있어 함께 수정했고, 실제 DB에 직접 쿼리를 실행해 응답 shape를 실측한 뒤에야 코드와 mock을 둘 다 객체 접근 방식으로 고쳤습니다.
수정 후 실제 DB 재쿼리와 브라우저 스크린샷으로 조직명과 산업명이 정상 표시되는 것을 확인했습니다. 이미 push된 이전 작업의 커밋은 건드리지 않고, 아직 커밋 전이던 이번 작업 커밋에 수정 내용을 포함시키면서 커밋 메시지에 이전 작업의 버그도 함께 고쳤다는 사실을 명시적으로 기록해두었습니다.
Phase Checklist를 Placeholder로 고정한 이유는 대응 테이블이 없는 상태에서 억지로 계산 로직을 만들면 항상 틀린 값을 낼 것이기 때문이었습니다. 버그 수정 시 추측하지 말고 반드시 실측하도록 요구한 이유는, 이전에도 코드만 보고 구조를 판단하려다 실제와 다른 경우가 있었기 때문입니다. 이미 push된 이전 작업의 커밋을 amend하지 않고 별도 fix로 처리한 것은, 원격에 공개된 이력을 건드리면 협업상 위험이 크다는 원칙 때문이었습니다.
관련 프로젝트
프로젝트 개요 비즈니스 프로세스 트랜스포메이션(BPR)을 지원하는 한국어 기반 웹 애플리케이션. 컨설팅 프로젝트의 AS-IS 프로세스 분석부터 TO-BE 설계, Blueprint 승인까지의 전체 워크플로우를 디지털화하는 플랫폼으로, EPIC 단위로 구조화된 백로그를 기반으로 개발 중. 역할 및 워크플로우 PM / Architect / Reviewer 역할 수행 Codex(구현 담당)에게 Task 단위 구현 프롬프트 설계 Codex 구현 결과를 git log, git grep, git status로 직접 검증 후 승인 승인 전에는 Codex가 commit하지 않는 엄격한 게이팅 프로세스 운영 한 번에 하나의 Backlog Task만 진행, Task 완료 전 다음 Task 착수 금지 기술적 의사결정 및 성과 워크스페이스/프로젝트 접근 권한을 DB 레벨(복합 FK, SECURITY DEFINER 트리거)과 애플리케이션 레벨(Server Action 권한 검증)의 이중 방어 구조로 설계 Hard Delete 미구현 원칙 하에 배열 필드 전체교체(replace)를 단일 트랜잭션 RPC로 처리하는 패턴 확립 및 재사용 AS-IS 프로세스 그래프의 순환 참조 탐지에 Tarjan SCC 알고리즘 적용, 차단 오류(Error)와 경고(Warning)를 분리한 이중 Validator 아키텍처 설계 도메인 규칙 위반을 커스텀 Postgres 에러 코드 체계(SIA0104)로 문서화하여 거버넌스 문서와 코드베이스 간 정합성 유지 AI 생성 데이터와 사람이 검증한 데이터를 구분하는 generatedbyai / verified 메타데이터 패턴을 여러 도메인 테이블에 일관되게 적용 진행 상태 ✅ EPIC-01 (인증 / 워크스페이스 / 프로젝트 접근) ✅ EPIC-02 (조직 / 산업 / 프로젝트) 🚧 EPIC-03 (AS-IS 프로세스 그래프) — 그래프 검증, Input/Output 스키마, Business Rule 스키마 구현 완료