- 발행일
승인될 때까지 아무것도 만들지 않기 — 신청서 작성분을 초안으로 두고 승인 때 재생하기
신청서에서 엘리먼트·프레임·메시지를 직접 쓸 수 있게 했는데, 신청 시점에 만들어 버리면 반려된 신청의 찌꺼기가 목록에 남습니다. 작성분을 JSON 초안 한 칸에 두고 승인 시점에 자식부터 순서대로 재생하게 했어요. 그러다 초안 JSON이 PostgreSQL btree 색인 상한 2704바이트에 걸려 INSERT가 통째로 실패했습니다.
신청서에서 엘리먼트·프레임·메시지를 직접 쓸 수 있게 했는데, 신청 시점에 만들어 버리면 반려된 신청의 찌꺼기가 목록에 남습니다. 작성분을 JSON 초안 한 칸에 두고 승인 시점에 자식부터 순서대로 재생하게 했어요. 그러다 초안 JSON이 PostgreSQL btree 색인 상한 2704바이트에 걸려 INSERT가 통째로 실패했습니다.
토큰에 없는 색 이름은 빌드 오류가 아니라 그냥 안 칠해집니다. 그렇게 죽어 있던 클래스 142곳을 토큰으로 바꾸고, 다시 들어오면 빌드를 세우는 가드를 붙였어요. 이어서 팔레트 안에 있는 색들의 명도 대비를 재봤더니 회색 스케일이 통째로 한 칸 밝아 입력 경계와 회색 글자가 기준 미달이었습니다. 못 고치기로 한 35곳도 이유와 함께 적었습니다.
심사 목록 위의 절차 안내가 7단계로 고정돼 있었는데, 이 시스템은 사전인증·인증을 뺀 5단계로도 돕니다. 단계 수는 DB의 프로세스 정의에 있고 화면은 코드에 있어서, 5단계 환경에서는 없는 단계를 그리고 있었어요. 상태와 전이를 걸어 단계 사슬을 만들게 바꿨고, 단계별 역할도 같은 걸음에서 뽑았습니다.
검색 화면이 둘이었는데 하나로 수렴해서 통합검색을 걷어냈습니다. 2102줄을 지우는 건 쉬웠고, 어려운 건 무엇을 남길지였어요. 호출자가 테스트만 남은 매니저 메서드는 지웠고, 3줄짜리 껍데기 안의 알맹이는 남겼고, 폐지된 화면이 남긴 검색 기록은 집계에서 안 떨어뜨렸습니다.
v4 전환은 버전을 올리는 일이 아니라 토큰의 원천을 JS 설정에서 CSS로 옮기는 일이었습니다. tailwind.config.js를 지우면서 safelist가 조용히 사라졌고, @layer components에 둔 클래스는 @apply 대상이 아니게 됐고, 마크업에 둔 기본 상태가 컴포넌트 규칙을 이기기 시작했어요. 없던 브레이크포인트를 살리자 8개 화면이 그제야 다열이 됐습니다.