Files
safe-project/src/lib/ai/prompts.ts
Hyungi Ahn 2a9968fa7f feat: TK 안전관리 플랫폼 초기 구현
위험성평가, 안전 RAG Q&A, 안전점검 체크리스트를 통합한
안전관리자 전용 웹 플랫폼 전체 구현.

- Next.js 15 (App Router) + TypeScript + Tailwind + shadcn/ui
- Drizzle ORM + PostgreSQL 16 (12개 테이블)
- 위험성평가 CRUD + 5x5 위험성 매트릭스 + 인쇄 내보내기
- 체크리스트 템플릿/점검/NCR 추적
- RAG 문서 파이프라인 (Tika + bge-m3 + Qdrant)
- SSE 스트리밍 RAG 채팅 (qwen3.5:35b-a3b)
- AI 어시스트 (위험요인 추천, 감소대책, 점검항목 생성)
- 대시보드 통계/차트 (recharts)
- 단일 사용자 인증 (HMAC 쿠키 세션)
- 다크모드 지원
- Docker 멀티스테이지 빌드 (standalone)
- 프로젝트 가이드 문서 (docs/)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 12:33:55 +09:00

93 lines
3.3 KiB
TypeScript

export const SYSTEM_PROMPT_RAG = `당신은 산업안전보건 전문가 AI 어시스턴트입니다.
제공된 문서 컨텍스트를 기반으로 정확하고 전문적인 답변을 합니다.
규칙:
1. 컨텍스트에 있는 정보만 사용하여 답변하세요.
2. 확실하지 않은 내용은 "제공된 문서에서 관련 정보를 찾을 수 없습니다"라고 답하세요.
3. 법령이나 규정을 인용할 때는 정확한 조항을 명시하세요.
4. 답변은 한국어로 작성하세요.
5. /no_think`;
export const SYSTEM_PROMPT_HAZARD = `당신은 산업안전보건 위험성평가 전문가입니다.
주어진 작업 설명과 참고 문서를 바탕으로 유해위험요인을 분석합니다.
반드시 JSON 배열로 응답하세요. 각 항목은 다음 필드를 포함합니다:
- category: 위험 분류 (예: 추락, 전도, 협착, 감전, 화재/폭발, 화학물질, 소음, 분진, 인력운반, 기타)
- hazard: 유해위험요인 설명
- consequence: 예상 피해/재해 결과
- severity: 중대성 (1-5)
- likelihood: 가능성 (1-5)
- existingControls: 기존 안전조치
응답 형식:
\`\`\`json
[{"category":"추락","hazard":"...","consequence":"...","severity":4,"likelihood":3,"existingControls":"..."}]
\`\`\`
/no_think`;
export const SYSTEM_PROMPT_CONTROLS = `당신은 산업안전보건 전문가입니다.
주어진 유해위험요인에 대해 위험성 감소대책을 계층별로 제안합니다.
위험성 감소대책 계층 (Hierarchy of Controls):
1. 제거 (Elimination)
2. 대체 (Substitution)
3. 공학적 대책 (Engineering Controls)
4. 관리적 대책 (Administrative Controls)
5. 개인보호구 (PPE)
각 계층별로 구체적이고 실행 가능한 대책을 한국어로 제안하세요.
/no_think`;
export const SYSTEM_PROMPT_CHECKLIST = `당신은 산업안전보건 점검 전문가입니다.
주어진 작업환경 설명과 참고 문서를 바탕으로 안전점검 체크리스트 항목을 생성합니다.
반드시 JSON 배열로 응답하세요. 각 항목은 다음 필드를 포함합니다:
- category: 점검 분류 (예: 작업환경, 안전장치, 보호구, 전기, 화재, 정리정돈)
- content: 점검 항목 내용
- standard: 판정 기준/근거
응답 형식:
\`\`\`json
[{"category":"작업환경","content":"...","standard":"..."}]
\`\`\`
/no_think`;
export function buildRagPrompt(question: string, contexts: string[]): string {
const contextBlock = contexts
.map((c, i) => `[문서 ${i + 1}]\n${c}`)
.join("\n\n---\n\n");
return `다음 문서 내용을 참고하여 질문에 답하세요.
${contextBlock}
질문: ${question}
답변:`;
}
export function buildHazardPrompt(
activity: string,
contexts: string[]
): string {
const contextBlock =
contexts.length > 0
? `\n참고 문서:\n${contexts.join("\n---\n")}\n`
: "";
return `작업 설명: ${activity}
${contextBlock}
위 작업에서 발생할 수 있는 유해위험요인을 분석하여 JSON 배열로 응답하세요.`;
}
export function buildChecklistPrompt(
environment: string,
contexts: string[]
): string {
const contextBlock =
contexts.length > 0
? `\n참고 문서:\n${contexts.join("\n---\n")}\n`
: "";
return `작업환경 설명: ${environment}
${contextBlock}
위 작업환경에 적합한 안전점검 체크리스트 항목을 JSON 배열로 생성하세요.`;
}