임동욱 임동욱 08-20
fix: 1:1문의에서 질문제목을 걷어낸다
문의는 제목 없이 내용만 온다. 목록의 대표 칸은 내용 발췌(60자 말줄임)로, 답변
팝업의 질문제목 필드는 제거(질문내용 칸이 이미 있다), 삭제 확인 문구는 빈 제목
대신 내용 발췌 30자, 검색 대상에서 제목을 뺀다.

Co-Authored-By: Claude Opus 5 
@614002d3ead7c9cdf0711cdabc079d9a5cf516fb
app/(protected)/(basic)/boards/_components/board-post-columns.tsx
--- app/(protected)/(basic)/boards/_components/board-post-columns.tsx
+++ app/(protected)/(basic)/boards/_components/board-post-columns.tsx
@@ -11,6 +11,7 @@
   formatAnswerStatusLabel,
   formatBoardCategoryLabel,
   formatFaqTypeLabel,
+  formatContentExcerpt,
   formatInquiryTypeLabel,
   formatOptionalValue,
   formatVisibilityLabel,
@@ -192,7 +193,14 @@
       // 서버 조인 이름 우선 — 코드표(잠정값)는 이름이 안 온 행의 보루다.
       render: (row) => row.typeName ?? formatInquiryTypeLabel(row.typeCode),
     },
-    { key: 'title', header: '질문제목', width: 280, emphasis: true },
+    // 1:1문의는 제목이 없다(내용만 온다) — 내용 발췌가 이 줄의 대표 칸이다.
+    {
+      key: 'content',
+      header: '질문내용',
+      width: 280,
+      emphasis: true,
+      render: (row) => formatContentExcerpt(row.content),
+    },
     {
       key: 'authorName',
       header: '질문자명',
app/(protected)/(basic)/boards/inquiries/_components/inquiry-answer-modal.tsx
--- app/(protected)/(basic)/boards/inquiries/_components/inquiry-answer-modal.tsx
+++ app/(protected)/(basic)/boards/inquiries/_components/inquiry-answer-modal.tsx
@@ -99,15 +99,6 @@
         <p className={styles.sectionTitle}>게시물의 항목 (조회 전용)</p>
 
         <div className={styles.field}>
-          <FoxInput
-            size="md"
-            label="질문제목"
-            value={formatOptionalValue(post.title)}
-            readOnly
-          />
-        </div>
-
-        <div className={styles.field}>
           <div className={styles.pair}>
             <FoxInput
               size="md"
app/(protected)/(basic)/boards/inquiries/_components/inquiry-row-actions.tsx
--- app/(protected)/(basic)/boards/inquiries/_components/inquiry-row-actions.tsx
+++ app/(protected)/(basic)/boards/inquiries/_components/inquiry-row-actions.tsx
@@ -5,7 +5,7 @@
 import { FoxButtonGroup } from '@fox/core/components/fox-button-group';
 import { FoxIconButton } from '@fox/core/components/fox-icon-button';
 import { useFeedback } from '@/app/_hooks/use-feedback';
-import type { BoardPost } from '@/lib/domain/board-post';
+import { formatContentExcerpt, type BoardPost } from '@/lib/domain/board-post';
 import type { CommonCode } from '@/lib/domain/common-code';
 import { deleteBoardPostAction, loadBoardPostAction } from '../../_actions';
 import { InquiryAnswerModal } from './inquiry-answer-modal';
@@ -61,7 +61,7 @@
     showAlert({
       variant: 'danger',
       title: '문의를 삭제하시겠습니까?',
-      message: `"${post.title}" 문의를 삭제합니다. 삭제 후에는 되돌릴 수 없습니다.`,
+      message: `"${formatContentExcerpt(post.content, 30)}" 문의를 삭제합니다. 삭제 후에는 되돌릴 수 없습니다.`,
       actions: (
         <FoxButtonGroup size="md">
           <FoxButton type="default" size="md" label="취소" onAction={hideAlert} />
lib/domain/board-post-query.ts
--- lib/domain/board-post-query.ts
+++ lib/domain/board-post-query.ts
@@ -39,8 +39,8 @@
     { value: 'category', label: '구분' },
     { value: 'title', label: '제목' },
   ],
+  // 1:1문의는 제목 없이 내용만 쓴다 — 제목 검색은 대상이 없다.
   inquiry: [
-    { value: 'title', label: '제목' },
     { value: 'authorName', label: '질문자명' },
     { value: 'authorPhoneNumber', label: '전화번호' },
     { value: 'content', label: '내용' },
lib/domain/board-post.ts
--- lib/domain/board-post.ts
+++ lib/domain/board-post.ts
@@ -108,6 +108,15 @@
 // TODO: 답변완료를 가리키는 코드값. BBS_ANS_CD의 실제 값이 확인되면 교체한다.
 export const ANSWER_STATUS_DONE = 'DONE';
 
+/** 목록 한 칸·확인 문구에 넣을 본문 발췌 — 줄바꿈을 접고 길면 말줄임한다. */
+export function formatContentExcerpt(content: string, maxLength = 60): string {
+  const flat = content.replace(/\s+/g, ' ').trim();
+  if (flat === '') {
+    return EMPTY_FIELD_PLACEHOLDER;
+  }
+  return flat.length > maxLength ? `${flat.slice(0, maxLength)}…` : flat;
+}
+
 /** 코드 → 라벨. 표에 없는 코드는 지어내지 않고 코드 그대로 노출한다(잘못된 라벨보다 낫다). */
 function formatCode(options: readonly CodeOption[], code: string | null): string {
   if (code === null || code === '') {
Add a comment
List