임동욱 임동욱 09-01
feat: 공통코드 등록 팝업에서 분류코드를 뺀다
기획에서 빠진 항목이다. 저장되는 값이 아니라 코드ID 앞 3자를 채워 주는 입력
보조였고(백엔드에 해당 컬럼이 없다), 셀렉트와 함께 접두사 상수·헬퍼도 지운다 —
쓰는 곳이 이 팝업뿐이었다.

Co-Authored-By: Claude Opus 5 
@6e89140c3bd5cd6538a971bc0280c99106b0de4a
app/(protected)/(basic)/system/codes/_components/code-group-modal.tsx
--- app/(protected)/(basic)/system/codes/_components/code-group-modal.tsx
+++ app/(protected)/(basic)/system/codes/_components/code-group-modal.tsx
@@ -5,15 +5,8 @@
 import { FoxHelperText } from '@fox/core/components/fox-helper-text';
 import { FoxInput } from '@fox/core/components/fox-input';
 import { FoxModal } from '@fox/core/components/fox-modal';
-import { FoxSelect } from '@fox/core/components/fox-select';
 import { useFeedback } from '@/app/_hooks/use-feedback';
-import {
-  CODE_ID_PREFIXES,
-  DEFAULT_CODE_ID_PREFIX,
-  applyCodeIdPrefix,
-  readCodeIdPrefix,
-  type CommonCodeGroup,
-} from '@/lib/domain/common-code';
+import { type CommonCodeGroup } from '@/lib/domain/common-code';
 import { INITIAL_COMMON_CODE_FORM_STATE } from '@/lib/domain/common-code-form';
 import { createCodeGroupAction, updateCodeGroupAction } from '../_actions';
 import styles from './code-form.module.scss';
@@ -29,10 +22,7 @@
  * 공통코드 등록/수정 팝업 — 기획 1842:16056 / 1842:16122.
  *
  * 두 팝업은 제목·버튼 글자와 **코드ID의 읽기 전용 여부**만 다르고 입력 항목이 같아 한 조각으로 둔다.
- *
- * **분류코드는 저장되지 않는다.** `TB_SYS_COM_CD`에 해당 컬럼이 없어(확인함) 이 셀렉트는 코드ID
- * 접두사를 채워 주는 입력 보조로만 동작한다 — 시안 목록이 전부 `CMS004`처럼 접두사 3자 + 일련번호라
- * 그 작명 규칙을 화면이 거드는 것이다(사용자 확정 사항). 저장되는 값은 코드ID 하나다.
+
  *
  * 저장 버튼은 foot 슬롯에 그려져 폼의 자손이 아니다 — ref로 직접 제출한다(다른 팝업과 같은 방식).
  */
@@ -46,9 +36,6 @@
   );
 
   const [comCd, setComCd] = useState(group?.comCd ?? '');
-  const [prefix, setPrefix] = useState(
-    group ? readCodeIdPrefix(group.comCd) : DEFAULT_CODE_ID_PREFIX
-  );
 
   useEffect(() => {
     if (state.status === 'success') {
@@ -102,25 +89,6 @@
             maxLength={50}
           />
         </div>
-
-        {!isEdit && (
-          <div className={styles.field}>
-            <FoxSelect
-              size="md"
-              label="분류코드"
-              options={CODE_ID_PREFIXES.map((value) => ({
-                value,
-                label: value,
-              }))}
-              value={prefix}
-              onValueChange={(next) => {
-                setPrefix(next);
-                setComCd((current) => applyCodeIdPrefix(current, next));
-              }}
-              hint="코드ID 앞에 붙는 분류입니다. 별도로 저장되지 않습니다."
-            />
-          </div>
-        )}
 
         <div className={styles.field}>
           <FoxInput
lib/domain/common-code.ts
--- lib/domain/common-code.ts
+++ lib/domain/common-code.ts
@@ -39,9 +39,7 @@
 /**
  * 공통코드(그룹) — 시안의 "공통코드 목록" 한 줄.
  *
- * `TB_SYS_COM_CD`의 컬럼은 이 셋이 전부다(+감사 컬럼). 시안 등록 팝업의 "분류코드"에
- * 해당하는 컬럼은 **없다** — 그 셀렉트는 코드ID 접두사를 채워 주는 입력 보조일 뿐이고
- * 저장되는 값은 `comCd` 하나다(사용자 확정 사항).
+ * `TB_SYS_COM_CD`의 컬럼은 이 셋이 전부다(+감사 컬럼).
  */
 export type CommonCodeGroup = {
   /** 백엔드 `comCd` — PK이자 화면의 "코드ID". 상세코드를 묶는 키다. */
@@ -74,36 +72,6 @@
   /** 백엔드 `frstRegDtStr` — `YYYY-MM-DD`. */
   createdAt: string | null;
 };
-
-/**
- * 코드ID 접두사(시안의 "분류코드") — 저장되는 값이 아니라 코드ID를 지을 때의 작명 규칙이다.
- * 시안 목록이 전부 `CMS004`처럼 접두사 3자 + 일련번호라 그 규칙을 화면이 거들게 한다.
- *
- * 백엔드에 분류 컬럼이 생기면 이 상수 대신 그 코드 목록을 쓰면 된다.
- */
-export const CODE_ID_PREFIXES: readonly string[] = ['CMS', 'SYS', 'FSC', 'CST'];
-
-export const DEFAULT_CODE_ID_PREFIX = CODE_ID_PREFIXES[0];
-
-/**
- * 코드ID에서 접두사를 읽는다 — 앞 3자가 아는 접두사면 그것을, 아니면 기본값을 돌려준다.
- * 수정 팝업이 기존 코드ID로 셀렉트의 초기값을 정할 때 쓴다.
- */
-export function readCodeIdPrefix(comCd: string): string {
-  const head = comCd.slice(0, 3).toUpperCase();
-  return CODE_ID_PREFIXES.includes(head) ? head : DEFAULT_CODE_ID_PREFIX;
-}
-
-/**
- * 접두사를 바꿔 끼운 코드ID를 만든다. 기존 값이 아는 접두사로 시작하면 그 자리를 갈아 끼우고,
- * 아니면 앞에 덧붙인다 — 사용자가 이미 적어 둔 일련번호를 지우지 않기 위해서다.
- */
-export function applyCodeIdPrefix(comCd: string, prefix: string): string {
-  const rest = CODE_ID_PREFIXES.includes(comCd.slice(0, 3).toUpperCase())
-    ? comCd.slice(3)
-    : comCd;
-  return `${prefix}${rest}`;
-}
 
 export function formatOptionalText(value: string | null | undefined): string {
   return value === null || value === undefined || value === ''
Add a comment
List