"테스트 통과 보고와 실제 DB 반영은 다른 이야기다"
이전 작업(권한 모델 정정)을 실제 DB에 반영하려고 supabase db push --dry-run을 실행했는데, 예상과 다른 결과가 나왔습니다. 이미 완료됐다고 기록되어 있던 EPIC-01 관련 Migration 9개 전부가 "아직 적용 안 됨"으로 표시된 것입니다.
추가로 supabase migration list와 information_schema.tables를 조회해보니, 원격 DB의 Migration 이력이 0건이었고 public 스키마에는 테이블이 하나도 없었습니다. 반면 로그인 계정(auth.users)은 2개 존재했는데, 이건 Supabase 기본 인증 기능만으로 만들어진 것이라 로그인은 됐지만 그 뒤의 워크스페이스, 프로필 같은 데이터 구조는 전혀 없는 상태였습니다. 즉 "EPIC-01 Sign-off 완료"라는 기존 기록이 이 DB 기준으로는 사실이 아니었습니다.
먼저 데이터 손실 위험이 없다는 것(애초에 테이블이 없었으므로)을 확인한 뒤, Migration 9개 전체를 순서대로 적용했습니다. 적용 후에도 Workspace, Profile, Member 데이터가 0건인 걸 확인해, 기존 로그인 계정 2개를 모두 ADMIN 권한으로 등록하고 Workspace 1개와 연결 데이터를 직접 SQL로 생성했습니다. 이 과정에서 DB 연동용 타입 파일(database.types.ts)이 저장소에 아예 없었다는 것도 함께 발견해 새로 만들었습니다.
전체 자동 테스트를 재실행한 결과 85건 중 7건이 계속 skip되는 걸 발견했는데, 원인을 코드에서 확인해보니 실제 DB 연결용 비밀키가 환경변수로 없으면 의도적으로 건너뛰는 설계였습니다. 필요한 키 값을 설정한 뒤 재실행해 85건 전부 통과, skip 0건을 확인했습니다. 여기서 멈추지 않고 브라우저에서 두 계정으로 직접 로그인, 로그아웃, 접근제한, 한글 표시까지 수동으로 확인했습니다. 이 시점에 이르러서야 EPIC-01 전체가 이 DB 기준으로 처음 실증 검증됐다고 말할 수 있었고, 코드 테스트 통과와 실제 운영 반영은 전혀 다른 확인 대상이라는 걸 다시 확인했습니다.
보고된 테스트 결과("test: passed")를 문면 그대로 신뢰하지 않고, 그게 무엇을 대상으로 통과한 것인지(로컬/샌드박스 환경인지, 실제 운영 DB인지) 구분해서 확인해야 한다는 판단이 있었습니다. 데이터 마이그레이션 전에는 항상 기존 데이터 존재 여부를 먼저 확인해 손실 위험을 배제한 뒤에만 실행했습니다. 매 단계 추측 대신 SQL로 직접 상태를 조회해 확정 지은 뒤 다음 단계로 넘어가는 방식을 택했습니다.
관련 프로젝트
프로젝트 개요 비즈니스 프로세스 트랜스포메이션(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 스키마 구현 완료