✍️ 프롬프트 설정 & 자동생성 완전 분석

AI가 메시지를 생성할 때 사용하는 프롬프트(지시문) 시스템의 모든 로직을 분석합니다. 자동 생성기부터 직접 입력, 예약/실시간 생성 모드까지.

두 가지 프롬프트 종류

프롬프트길이 제한역할
시스템 프롬프트500자AI의 역할, 말투, 성격 정의 (예: "당신은 친절한 비즈니스 컨설턴트입니다...")
유저 프롬프트2000자구체적인 메시지 내용과 방향 지시 (예: "상대방에게 우리 회사의 장점을 소개하는 문자를 작성해줘...")

🤖 프롬프트 자동 생성기

사용자가 직접 프롬프트를 작성하기 어려울 때, 원하는 메시지 예시만 입력하면 AI가 알아서 프롬프트를 생성해줍니다.

// 사용자 입력:
//   ① 메시지예시: "안녕하세요, ABC컴퍼니 홍길동입니다. 귀사의 성장을 응원합니다."
//   ② 추가 요청사항(선택): "더 친근한 말투로"

// 서버 처리 (AJAX) — generate_prompt()
// POST → [내부API]/[프롬프트생성]
// 보내는 데이터: { message_example, extra_request }
// AI(LLM)이 다음을 자동 생성:
//   - 시스템 프롬프트: AI 역할과 말투 정의
//   - 유저 프롬프트: 메시지 방향과 포함할 내용

// 응답을 받으면:
$('#user_gpt_sysprompt').val(response.sys_prompt);   // 자동 채움
$('#gpt_userprompt').val(response.user_prompt);       // 자동 채움
$('#sysprompt_count').text(response.sys_prompt.length);
$('#userprompt_count').text(response.user_prompt.length);

✏️ 직접 입력 모드

// 입력 필드에 keyup 이벤트로 실시간 글자수 카운트:

$('#user_gpt_sysprompt').on('keyup', function() {
    var len = $(this).val().length;
    $('#sysprompt_count').text(len);
    if (len > 500) {
        $('#sysprompt_count').css('color', 'red');      // 초과 시 빨간색
    } else {
        $('#sysprompt_count').css('color', '');
    }
});

$('#gpt_userprompt').on('keyup', function() {
    var len = $(this).val().length;
    $('#userprompt_count').text(len);
    if (len > 2000) {
        $('#userprompt_count').css('color', 'red');
    } else {
        $('#userprompt_count').css('color', '');
    }
});

📅 메시지 생성 방식

두 가지 생성 모드가 있습니다 (generationMode 전역 변수로 관리):

모드장점단점사용 시기
예약 생성 (기본)AI가 지금 바로 30회치 메시지를 한 번에 생성·저장
빠르게 시작 가능
이후 발신자 정보 변경사항이 반영되지 않음정보가 확정된 경우
실시간 생성발송 시점마다 AI가 새로 생성
항상 최신 정보 반영
매번 API 호출 비용 발생
응답 지연 가능
정보가 자주 바뀌는 경우

toggle_generation_mode()

function toggle_generation_mode() {
    if (generationMode === 'realtime') {
        // 실시간 모드 UI
        $('#reservation_mode_section').hide();
        $('#realtime_mode_section').show();
        $('#gen_mode_reservation').removeClass('active');
        $('#gen_mode_realtime').addClass('active');
    } else {
        // 예약 모드 UI (기본값)
        $('#reservation_mode_section').show();
        $('#realtime_mode_section').hide();
        $('#gen_mode_realtime').removeClass('active');
        $('#gen_mode_reservation').addClass('active');
    }
}

// 사용자가 라디오 버튼 클릭:
// $('input[name=generation_mode]').on('change', function() {
//     generationMode = $(this).val(); // 'reservation' or 'realtime'
//     toggle_generation_mode();
// });

메시지 미리보기

function preview_aiprompt() {
    $.ajax({
        type: "POST",
        url: "[내부API]/[프롬프트미리보기]",
        data: {
            sys_prompt: $('#user_gpt_sysprompt').val(),
            user_prompt: $('#gpt_userprompt').val(),
            generation_mode: generationMode,
            vendor_name: $('#vendor_name').val(),
            sender_name: $('#sender_name').val(),
            sender_position: $('#sender_position').val(),
            sender_introduction: $('#sender_introduction').val()
        },
        success: function(html) {
            $('#preview_aiprompt_content').html(html);
            $('#paper_sender_edit_modal').modal('hide');
            $('#preview_aiprompt_modal').modal('show');
        }
    });
}
// 미리보기 모달에서 "프롬프트 다시 수정" 버튼 클릭 시:
// $('#paper_sender_edit_modal').modal('show');

프롬프트 탭 뱃지 시스템

function update_prompt_badge() {
    var sysp = $('#user_gpt_sysprompt').val() || '';
    var userp = $('#gpt_userprompt').val() || '';
    var badge = $('#prompt_tab_badge');

    if (sysp.trim() || userp.trim()) {
        badge.show();  // 프롬프트가 입력되어 있으면 ● 표시
    } else {
        badge.hide();  // 비어있으면 숨김
    }
}
// 
💡 초등학생을 위한 비유: 프롬프트는 마치 AI 로봇에게 주는 '역할극 대본'이에요. 시스템 프롬프트는 "너는 친절한 우체부야"라고 역할을 정해주는 거고, 유저 프롬프트는 "동네 사람들에게 안부 편지를 써줘"라고 구체적인 임무를 주는 거예요. 자동 생성기는 네가 "이런 편지가 좋아"라고 예시만 보여주면 AI가 알아서 역할과 임무를 만들어주는 똑똑한 도우미예요!