"가공 없이 원본 그대로를 명시적으로 요구해야 검증이 성립한다"
지금까지 다뤄온 테이블들은 전부 Node의 1:N 자식을 다루는 동일한 패턴이었는데, 이번 System/Data Reference는 근본적으로 달랐습니다. Reference는 Project 범위의 독립 재사용 엔티티였고, Node와는 N:M 관계였습니다. 이 차이를 데이터 모델에 정직하게 반영하기 위해, 설계를 "Reference 자체 CRUD"와 "Node-Reference N:M Link"로 나누기로 했습니다.
리뷰 과정에서 예상 못한 문제가 하나 발생했습니다. Codex가 diff를 요약해서 보고하다가, 실제로 구현된 테스트 코드가 한글 주석 두 줄로 잘못 표시되어 전달됐습니다. 요약된 보고서만 보면 테스트가 빠진 것처럼 보였습니다. 하지만 요약을 그대로 믿지 않고 wc -l과 cat으로 원본 파일 전체를 다시 확인했더니, 실제로는 테스트가 전부 구현되어 있었습니다.
이 검증 과정에서 별개의 실제 버그도 하나 발견했습니다. 새 저장 Action들이 project 존재 확인보다 권한 확인을 먼저 실행해서, 존재하지 않는 project에 대해서도 FORBIDDEN을 반환하고 있었습니다. 이 프로젝트가 이전부터 지켜온 "존재 확인 먼저, 권한 확인 나중"이라는 컨벤션에 맞춰 순서를 정정하고 새 테스트 케이스까지 추가했습니다.
251개 테스트가 통과하는 것까지 확인한 뒤 커밋했고, 이걸로 관련 Feature 전체가 완료됐습니다. Codex의 자기 보고(요약)는 실제 diff와 다를 수 있다는 걸 이번에 직접 확인했고, "가공 없이 원본 그대로"를 명시적으로 요구해야만 검증이 실제로 성립한다는 걸 다시 배웠습니다.
Reference의 재사용성(같은 시스템이 여러 Step에서 쓰일 수 있음)을 데이터 모델에 정직하게 반영하려면 Node의 자식으로 취급하면 안 된다고 판단했습니다. 에러코드 순서 문제는, 이 프로젝트가 "존재하지 않는 리소스는 NOT_FOUND, 존재하지만 권한 없음은 FORBIDDEN"이라는 컨벤션을 이전부터 일관되게 지켜왔기 때문에, 새 Action도 그 컨벤션을 따라야 한다는 판단이었습니다.
관련 프로젝트
프로젝트 개요 비즈니스 프로세스 트랜스포메이션(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 스키마 구현 완료