"서버가 이미 아는 값을 클라이언트에게 다시 묻지 않는다"
Industry CRUD가 끝난 뒤 이어서 Organization CRUD를 진행했습니다. 구조는 비슷하지만 industry_id를 선택적으로 참조한다는 차이가 있어, 테이블과 RLS, Server Action 5종을 설계해 구현을 요청했습니다.
코드를 리뷰하는 과정에서 눈에 띄는 문제를 발견했습니다. toggleOrganizationStatusAction이 서버에서 이미 조회한 신뢰 가능한 값이 있음에도, 클라이언트가 제출한 status 값으로 다음 상태를 계산하고 있었습니다. 서버가 이미 아는 값을 왜 다시 클라이언트에게 묻는지 이해가 안 됐고, 이건 보안과 일관성 원칙에 어긋난다고 판단해 즉시 재작업을 요구했습니다.
Navigation 구조도 확인했는데, IA 문서(§36)에는 없는 형태로 Library와 Organizations가 최상위에 병렬로 노출되고 있었습니다. 문서에 없는 임의의 UX 규칙을 추가하지 않는다는 원칙에 따라 /library 진입 페이지로 통합하도록 재작업을 지시했습니다. 마지막으로 화면 전체가 영어로 구현된 것도 발견해, Industry 화면과 동일한 한글 표현으로 전면 수정했습니다.
세 가지 문제 모두 수정을 확인한 뒤 커밋 두 건(기능, 한글화)으로 나눠 Sign-off했습니다. 다만 이 시점의 확인은 코드 레벨 대조까지였고, 실제 브라우저에서 토글이 정확히 동작하는지는 이후 통합 검증 단계에서 별도로 확인해야 할 부분이었습니다.
토글 버그는 이미 서버가 조회한 신뢰 가능한 값이 있는데도 클라이언트 값을 그대로 쓰는 것이 보안·일관성 원칙에 어긋난다고 판단해 즉시 재작업을 요구했습니다. Navigation 문제는 문서에 없는 임의 UX 규칙을 추가하지 않는다는 원칙에 따라 IA 문서를 그대로 따르도록 했습니다. 한글화는 프로젝트 원칙이 실제 구현에서 지켜지지 않은 걸 그대로 둘 수 없어서 별도로 짚었습니다.
관련 프로젝트
프로젝트 개요 비즈니스 프로세스 트랜스포메이션(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 스키마 구현 완료