From 3379c54033b868b0db4a25d97533420cfdee0d9d Mon Sep 17 00:00:00 2001 From: ttipo Date: Sun, 21 Jun 2026 12:19:03 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20AI=20=EC=B6=94=EC=B2=9C=20=EB=AA=A8?= =?UTF-8?q?=EB=8B=AC=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EA=B0=9C=ED=8E=B8=20?= =?UTF-8?q?+=204=EA=B0=9C=20=EA=B3=A0=EC=A0=95=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC(=ED=95=84=EC=88=98/=EA=B4=80=EB=A6=AC/?= =?UTF-8?q?=EB=B3=B4=EC=95=88/=EB=B6=80=EA=B0=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 백엔드: - SUGGEST_SYSTEM_PROMPT 를 정확히 4개 카테고리(필수/관리/보안/부가 기능)로 고정 (parseSuggestions 가 빈 카테고리는 자동 제외) 프론트(시안 'AI 추천 모달.html' 반영): - 그라데이션 헤더(배지 아이콘 + '자동 생성' 뱃지 + 분석 요약 서브타이틀) - 카테고리별 색상 아이콘 dot + 개수 pill + 전체 추가/해제 토글 - 항목을 체크 토글로 '선택' 후 푸터의 'N개 업무에 추가'로 일괄 반영(기존 즉시추가 → 선택→커밋 모델) - 이미 체크리스트에 있는 항목은 잠금(added) 표시 - 푸터: 선택 개수 + 취소/추가 버튼(.ai-btn — 페이지 .btn 과 분리) 검증: 백엔드 build/lint 0·8 tests, 프론트 type-check/lint/build 0. Co-Authored-By: Claude Opus 4.8 (1M context) --- backend/src/modules/ai/ai.service.ts | 7 +- frontend/src/pages/relay/TaskCreatePage.vue | 736 +++++++++++++++----- 2 files changed, 581 insertions(+), 162 deletions(-) diff --git a/backend/src/modules/ai/ai.service.ts b/backend/src/modules/ai/ai.service.ts index 1b52cd3..3e75b85 100644 --- a/backend/src/modules/ai/ai.service.ts +++ b/backend/src/modules/ai/ai.service.ts @@ -83,12 +83,13 @@ const SUGGEST_SYSTEM_PROMPT = [ '', '[규칙]', '- 반드시 아래 JSON 형식으로만 응답하세요. 설명·인사·마크다운 코드펜스 없이 순수 JSON 만 출력합니다.', - '- 카테고리는 "필수 기능", "추가 기능", "보안 기능" 을 기본으로 하되 업무 성격에 맞게 가감하세요.', + '- 카테고리는 정확히 "필수 기능", "관리 기능", "보안 기능", "부가 기능" 4개를 이 순서대로 사용하세요. (다른 이름·추가/누락 카테고리 금지)', + '- 각 카테고리에 해당하는 항목을 3~6개씩 제안합니다. 적합한 항목이 없으면 빈 배열([])로 두세요.', '- 각 항목은 한국어로 간결한 한 문장(체크리스트 항목)으로 작성합니다.', - '- 업무·프로젝트 맥락에 구체적으로 맞추고 일반론은 피하세요. 카테고리당 3~6개가 적당합니다.', + '- 업무·프로젝트 맥락에 구체적으로 맞추고 일반론은 피하세요.', '', '[형식]', - '{"groups":[{"category":"필수 기능","items":["...","..."]},{"category":"보안 기능","items":["..."]}]}', + '{"groups":[{"category":"필수 기능","items":["..."]},{"category":"관리 기능","items":["..."]},{"category":"보안 기능","items":["..."]},{"category":"부가 기능","items":["..."]}]}', ].join('\n'); // AI(Claude) 채팅 서비스 — 대화/메시지를 DB 에 보관하고 Anthropic Messages API 를 호출. diff --git a/frontend/src/pages/relay/TaskCreatePage.vue b/frontend/src/pages/relay/TaskCreatePage.vue index 8dd02ce..eb6cd5c 100644 --- a/frontend/src/pages/relay/TaskCreatePage.vue +++ b/frontend/src/pages/relay/TaskCreatePage.vue @@ -1,7 +1,7 @@