feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
< ? php
namespace Database\Seeders ;
use App\Models\Interview\InterviewCategory ;
use App\Models\Interview\InterviewQuestion ;
use App\Models\Interview\InterviewTemplate ;
use Illuminate\Database\Seeder ;
use Illuminate\Support\Facades\DB ;
/**
2026-03-22 22:48:18 +09:00
* 인터뷰 질문 마스터 데이터 시더 v2
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
*
2026-03-22 22:48:18 +09:00
* 12 개 도메인 × 세부 질문 ( 총 200 개 + )
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
* 이 시더는 프로젝트 생성 시 질문 템플릿으로 활용된다 .
*
* 사용법 :
* docker exec sam - mng - 1 php artisan db : seed -- class = InterviewQuestionMasterSeeder
*
2026-03-22 22:48:18 +09:00
* 주의 : 기존 마스터 데이터 ( interview_project_id = NULL ) 를 삭제 후 재생성한다 .
* 프로젝트에 연결된 데이터는 삭제되지 않는다 .
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
*/
class InterviewQuestionMasterSeeder extends Seeder
{
public function run () : void
{
DB :: transaction ( function () {
$tenantId = 1 ;
$userId = 1 ;
2026-03-22 22:48:18 +09:00
// 기존 마스터 데이터 삭제 (project_id = null인 것만)
InterviewQuestion :: whereHas ( 'template' , function ( $q ) {
$q -> whereHas ( 'category' , function ( $q2 ) {
$q2 -> whereNull ( 'interview_project_id' );
});
}) -> forceDelete ();
InterviewTemplate :: whereHas ( 'category' , function ( $q ) {
$q -> whereNull ( 'interview_project_id' );
}) -> forceDelete ();
InterviewCategory :: whereNull ( 'interview_project_id' ) -> forceDelete ();
// 새 데이터 생성
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
$domains = $this -> getDomainData ();
foreach ( $domains as $domainKey => $domain ) {
$categorySortOrder = InterviewCategory :: max ( 'sort_order' ) ? ? 0 ;
$category = InterviewCategory :: create ([
2026-03-22 22:49:01 +09:00
'tenant_id' => $tenantId ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'interview_project_id' => null ,
2026-03-22 22:49:01 +09:00
'name' => $domain [ 'name' ],
'description' => $domain [ 'description' ],
'domain' => $domainKey ,
'sort_order' => $categorySortOrder + 1 ,
'is_active' => true ,
'created_by' => $userId ,
'updated_by' => $userId ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
]);
foreach ( $domain [ 'templates' ] as $tplIndex => $tpl ) {
$template = InterviewTemplate :: create ([
2026-03-22 22:49:01 +09:00
'tenant_id' => $tenantId ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'interview_category_id' => $category -> id ,
2026-03-22 22:49:01 +09:00
'name' => $tpl [ 'name' ],
'sort_order' => $tplIndex + 1 ,
'is_active' => true ,
'created_by' => $userId ,
'updated_by' => $userId ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
]);
foreach ( $tpl [ 'questions' ] as $qIndex => $q ) {
InterviewQuestion :: create ([
2026-03-22 22:49:01 +09:00
'tenant_id' => $tenantId ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'interview_template_id' => $template -> id ,
2026-03-22 22:49:01 +09:00
'question_text' => $q [ 'text' ],
'question_type' => $q [ 'type' ],
'options' => $q [ 'options' ] ? ? null ,
'ai_hint' => $q [ 'ai_hint' ] ? ? null ,
'expected_format' => $q [ 'expected_format' ] ? ? null ,
'depends_on' => $q [ 'depends_on' ] ? ? null ,
'domain' => $domainKey ,
'is_required' => $q [ 'is_required' ] ? ? false ,
'sort_order' => $qIndex + 1 ,
'is_active' => true ,
'created_by' => $userId ,
'updated_by' => $userId ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
]);
}
}
}
});
}
private function getDomainData () : array
2026-03-22 22:48:18 +09:00
{
return array_merge (
$this -> domainProductClassification (),
$this -> domainBomStructure (),
$this -> domainDimensionFormula (),
$this -> domainComponentConfig (),
$this -> domainPricingStructure (),
$this -> domainQuantityFormula (),
$this -> domainConditionalLogic (),
$this -> domainQuoteFormat (),
$this -> domainProductionProcess (),
$this -> domainQualityControl (),
$this -> domainLogisticsInventory (),
$this -> domainSalesCustomer (),
);
}
// ================================================================
// Domain 1: 제품 분류 체계 (22개)
// ================================================================
private function domainProductClassification () : array
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
{
return [
'product_classification' => [
2026-03-22 22:49:01 +09:00
'name' => '제품 분류 체계' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'description' => '제품 카테고리, 모델 코드, 분류 기준 파악' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '제품 카테고리 구조' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '귀사의 주요 제품군을 모두 나열해주세요' , 'type' => 'text' , 'ai_hint' => '쉼표 구분으로 제품군 나열' , 'is_required' => true ],
[ 'text' => '각 제품군의 하위 모델명과 코드 체계를 알려주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '모델코드' , '모델명' , '비고' ]], 'ai_hint' => '코드-이름 매핑 테이블' ],
[ 'text' => '제품을 분류하는 기준은 무엇인가요? (소재, 용도, 크기 등)' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '소재별' , '용도별' , '크기별' , '설치방식별' , '인증여부별' ]]],
[ 'text' => '인증(인정) 제품과 비인증 제품의 구분이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '인증 제품의 경우 구성이 고정되나요?' , 'type' => 'checkbox' , 'depends_on' => [ 'question_index' => 3 , 'value' => '있음' ]],
[ 'text' => '카테고리별 제품 수는 대략 몇 개인가요?' , 'type' => 'number' , 'expected_format' => '개' ],
[ 'text' => '제품 코드 명명 규칙을 설명해주세요 (예: KSS01의 의미)' , 'type' => 'text' , 'ai_hint' => '코드 체계의 각 자릿수 의미' ],
[ 'text' => '기존 시스템(ERP/엑셀)에서 사용하는 제품 분류 방식을 캡처하여 업로드해주세요' , 'type' => 'file_upload' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '설치 유형별 분류' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '설치 유형(벽면형, 측면형, 혼합형 등)에 따라 견적이 달라지나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 크게 달라짐' , '약간 달라짐' , '달라지지 않음' ]]],
[ 'text' => '각 설치 유형별로 어떤 부품이 달라지나요?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '설치유형' , '추가부품' , '제외부품' , '비고' ]]],
[ 'text' => '설치 유형에 따른 추가 비용 항목이 있나요?' , 'type' => 'text' ],
],
],
2026-03-22 22:48:18 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '인증/규격 관리' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '보유 중인 인증 종류를 모두 선택해주세요' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ 'KC인증' , '방화인증' , '방연시험성적서' , 'KS규격' , 'ISO 인증' , '기타' ]], 'is_required' => true ],
[ 'text' => '인증별 적용 제품 범위 및 인증번호를 입력해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '인증종류' , '인증번호' , '적용제품' , '유효기간' ]]],
[ 'text' => '방화인증의 경우 내화성능 시간 등급은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '30분' , '1시간' , '1.5시간' , '2시간' , '3시간' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '방화인증' ]],
[ 'text' => '인증 취득이 없는 제품도 판매하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '커스텀 옵션 및 파생 모델' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '고객 요청으로 변경 가능한 옵션 항목을 모두 선택해주세요' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '색상/도장' , '마감재' , '특수사양' , '크기 커스텀' , '전압 옵션' , '제어 방식' ]]],
[ 'text' => '색상/마감재 옵션이 있는 경우 선택 목록을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '옵션구분' , '선택항목' , '추가비용' , '납기영향' ]]],
[ 'text' => '파생 모델(변형 모델)이 있나요? (예: 동일 제품 OEM 버전)' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => 'OEM/파생 모델의 구분 기준과 코드 체계는?' , 'type' => 'text' , 'depends_on' => [ 'question_index' => 2 , 'value' => '있음' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '제품 라이프사이클' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '신제품 등록 절차는 어떻게 되나요? (R&D → 테스트 → 양산)' , 'type' => 'text' , 'ai_hint' => '신제품 출시 프로세스 흐름' ],
[ 'text' => '단종/단계 축소 제품 관리 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '즉시 단종' , '재고 소진 후 단종' , '특정 고객 유지' , '기타' ]]],
[ 'text' => '단종 제품에 대한 A/S 부품 공급 기간은?' , 'type' => 'number' , 'expected_format' => '년' ],
],
],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
],
],
2026-03-22 22:48:18 +09:00
];
}
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
2026-03-22 22:48:18 +09:00
// ================================================================
// Domain 2: BOM 구조 (21개)
// ================================================================
private function domainBomStructure () : array
{
return [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'bom_structure' => [
2026-03-22 22:49:01 +09:00
'name' => 'BOM 구조' ,
2026-03-22 22:48:18 +09:00
'description' => '완제품-부품 관계, 다단계 BOM, 변경 관리' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '완제품-부품 관계' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '대표 제품 1개의 완제품→부품 구성을 트리로 그려주세요' , 'type' => 'bom_tree' , 'ai_hint' => '최상위 제품부터 하위 부품까지 트리 구조' , 'is_required' => true ],
[ 'text' => '모든 제품에 공통으로 들어가는 부품은 무엇인가요?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '가이드레일' , '케이스' , '모터' , '제어기' , '브라켓' , '볼트/너트' ]], 'ai_hint' => '직접 입력 가능' ],
[ 'text' => '제품별로 선택적(옵션)인 부품은 무엇인가요?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품명' , '옵션부품' , '적용조건' ]]],
[ 'text' => 'BOM이 현재 엑셀로 관리되고 있나요? 파일을 업로드해주세요' , 'type' => 'file_upload' ],
[ 'text' => '하위 부품의 단계(레벨)는 최대 몇 단계인가요?' , 'type' => 'number' , 'expected_format' => '단계' ],
[ 'text' => '부품 수량이 고정인 것과 계산이 필요한 것을 구분해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '고정/계산' , '고정수량 또는 계산식' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '다단계 BOM 및 반제품' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '반제품(서브어셈블리)이 존재하나요? 예를 들어 "조립체"를 먼저 만들고 완제품에 투입' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '반제품 목록과 구성 부품을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '반제품명' , '구성부품' , '수량' , '비고' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
[ 'text' => '반제품은 별도 재고로 관리되나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 별도 재고 관리' , '아니요, 공정 흐름에서만 관리' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
[ 'text' => 'BOM 레벨별 원가 계산이 필요한가요? (반제품 원가 → 완제품 원가)' , 'type' => 'checkbox' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '대체품 및 호환품' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '특정 부품에 대한 대체품(호환품)이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '대체품 사용 기준은? (공급 부족 시만? 원가 절감?)' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '공급 부족 시' , '원가 절감 목적' , '고객 요청' , '품질 동등 판단' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
[ 'text' => '대체품 목록과 우선순위를 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '원부품' , '대체품' , '공급업체' , '우선순위' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => 'BOM 변경 관리' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => 'BOM 변경(ECN/ECO) 발생 빈도는?' , 'type' => 'select' , 'options' => [ 'choices' => [ '월 1회 미만' , '월 1~3회' , '월 3회 이상' , '비정기적' ]]],
[ 'text' => 'BOM 변경 승인 프로세스가 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음 (공식 절차)' , '비공식 구두 승인' , '없음 (담당자 판단' ]]],
[ 'text' => 'BOM 버전 이력 관리가 필요한가요?' , 'type' => 'checkbox' ],
[ 'text' => '변경 전/후 BOM에 따른 기존 수주 처리 방식은?' , 'type' => 'text' , 'ai_hint' => '변경 적용 기준 시점 (예: 변경 승인일 이후 수주분부터)' ],
[ 'text' => '부품 투입 시점(공정 단계)별 BOM 구분이 필요한가요?' , 'type' => 'checkbox' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '부품 카테고리' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '부품을 카테고리로 분류하면 어떻게 나눠지나요? (본체, 절곡품, 전동부, 부자재 등)' , 'type' => 'text' , 'ai_hint' => '부품 분류 체계' ],
[ 'text' => '각 카테고리에 속하는 부품 목록을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '카테고리' , '부품명' , '규격' ]]],
[ 'text' => '외주 구매 부품과 자체 제작 부품의 구분이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '부자재(볼트, 너트, 패킹 등)는 별도 관리하나요?' , 'type' => 'checkbox' ],
],
],
],
],
2026-03-22 22:48:18 +09:00
];
}
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
2026-03-22 22:48:18 +09:00
// ================================================================
// Domain 3: 치수/변수 계산 (20개)
// ================================================================
private function domainDimensionFormula () : array
{
return [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'dimension_formula' => [
2026-03-22 22:49:01 +09:00
'name' => '치수/변수 계산' ,
2026-03-22 22:48:18 +09:00
'description' => '오픈 사이즈→제작 사이즈 변환, 파생 변수 계산, 복합 공식' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '오픈 사이즈 → 제작 사이즈' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '고객이 입력하는 기본 치수 항목은 무엇인가요? (폭, 높이, 깊이 등)' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '폭(W)' , '높이(H)' , '깊이(D)' , '두께(T)' , '지름(Ø)' ]], 'is_required' => true ],
[ 'text' => '오픈 사이즈에서 제작 사이즈로 변환할 때 더하는 마진값은?' , 'type' => 'formula_input' , 'ai_hint' => '예: W1 = W0 + 120, H1 = H0 + 50' , 'expected_format' => 'mm' ],
[ 'text' => '제품 카테고리별로 마진값이 다른가요?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품카테고리' , 'W 마진(mm)' , 'H 마진(mm)' , '비고' ]]],
2026-03-22 22:48:18 +09:00
[ 'text' => '설치 유형별로 마진값이 달라지나요?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '설치유형' , 'W 마진(mm)' , 'H 마진(mm)' , '비고' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '면적(㎡) 계산 공식을 알려주세요' , 'type' => 'formula_input' , 'ai_hint' => '예: area = W1 * H1 / 1000000' , 'expected_format' => '㎡' ],
[ 'text' => '중량(kg) 계산 공식을 알려주세요' , 'type' => 'formula_input' , 'ai_hint' => '예: weight = area * 단위중량(kg/㎡)' , 'expected_format' => 'kg' ],
[ 'text' => '기타 파생 변수가 있나요? (예: 분할 개수, 절곡 길이 등)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '변수명' , '계산식' , '단위' , '비고' ]]],
[ 'text' => '치수 계산에 사용하는 엑셀 수식을 캡처해주세요' , 'type' => 'file_upload' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '복합 공식 및 조건 분기' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
2026-03-22 22:48:18 +09:00
[ 'text' => 'IF/CASE 조건 분기가 있는 계산식이 있나요? (예: 폭이 X 이상이면 다른 공식 사용)' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '조건 분기 공식을 모두 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '변수명' , '조건' , '조건 참 공식' , '조건 거짓 공식' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
[ 'text' => '최대폭 초과 시 분할 계산이 되는 제품이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '분할 계산 조건과 방식을 설명해주세요' , 'type' => 'formula_input' , 'ai_hint' => '예: W > 3000 이면 2분할, 분할폭 = CEIL(W/2)' , 'depends_on' => [ 'question_index' => 2 , 'value' => '있음' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '허용 오차 및 변수 의존 관계' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '치수별 허용 오차 범위가 있나요?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '치수항목' , '허용오차(+/-)' , '단위' , '비고' ]]],
[ 'text' => '최소/최대 입력 가능 치수 범위는?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '치수항목' , '최솟값' , '최댓값' , '단위' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '변수 간 의존 관계를 설명해주세요 (A는 B와 C로 계산)' , 'type' => 'text' , 'ai_hint' => '계산 순서와 변수 의존성' ],
[ 'text' => '계산 순서가 중요한 변수가 있나요?' , 'type' => 'text' ],
[ 'text' => '단위는 mm, m, kg 중 어떤 것을 기본으로 사용하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ 'mm' , 'm' , 'cm' , '혼용' ]]],
2026-03-22 22:48:18 +09:00
[ 'text' => '치수 입력 시 소수점 허용 여부와 소수점 자릿수는?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '치수항목' , '소수점 허용' , '소수점 자릿수' ]]],
[ 'text' => '특수 치수(예: 사다리꼴, 원형) 제품이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '특수 치수 제품의 면적/중량 계산 방식은?' , 'type' => 'formula_input' , 'depends_on' => [ 'question_index' => 6 , 'value' => '있음' ]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
],
],
],
],
2026-03-22 22:48:18 +09:00
];
}
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
2026-03-22 22:48:18 +09:00
// ================================================================
// Domain 4: 부품 구성 상세 (22개)
// ================================================================
private function domainComponentConfig () : array
{
return [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'component_config' => [
2026-03-22 22:49:01 +09:00
'name' => '부품 구성 상세' ,
2026-03-22 22:48:18 +09:00
'description' => '주요 부품별 규격, 선택 기준, 공급업체, 재고 관리' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '주요 부품별 상세' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '가이드레일의 표준 길이 규격은? (예: 1219, 2438, 3305mm)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '규격코드' , '길이(mm)' , '비고' ]]],
[ 'text' => '가이드레일 길이 조합 규칙은? (어떤 길이를 몇 개 사용?)' , 'type' => 'text' , 'ai_hint' => '높이에 따른 가이드레일 조합 로직' ],
[ 'text' => '케이스(하우징) 크기별 규격과 부속품 차이를 설명해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '케이스규격' , '적용조건' , '부속품' ]]],
[ 'text' => '모터 용량 종류와 선택 기준은? (무게별? 면적별?)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '모터용량' , '적용범위(최소)' , '적용범위(최대)' , '단위' ]], 'ai_hint' => '무게/면적 범위별 모터 매핑' ],
2026-03-22 22:48:18 +09:00
[ 'text' => '모터 전압 옵션은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '380V' , '220V' , '110V' , 'DC 24V' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '제어기 종류와 선택 기준은? (노출형/매립형 등)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제어기유형' , '적용조건' , '비고' ]]],
[ 'text' => '절곡품(판재 가공) 목록과 각각의 치수 결정 방식은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '절곡품명' , '치수결정방식' , '재질' , '두께(mm)' ]]],
[ 'text' => '부자재(볼트, 너트, 패킹 등) 목록과 수량 결정 방식은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부자재명' , '규격' , '수량결정방식' , '기본수량' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '공급업체 및 리드타임' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '주요 부품별 공급업체를 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '주공급업체' , '대체공급업체' , '원산지' ]]],
[ 'text' => '부품별 발주 리드타임(납기일)은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '리드타임(일)' , '비고' ]]],
[ 'text' => '리드타임이 긴 장기발주 부품이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '장기발주 부품 목록과 발주 기준 시점은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '리드타임(주)' , '발주 기준' ]], 'depends_on' => [ 'question_index' => 2 , 'value' => '있음' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '안전재고 및 수입검사' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '부품별 안전재고 기준이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음 (부품별)' , '있음 (카테고리별)' , '없음' ]]],
[ 'text' => '안전재고 기준 수량 및 계산 방식은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '안전재고량' , '단위' , '계산기준' ]]],
[ 'text' => '수입검사 대상 부품과 검사 기준은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '검사항목' , '합격기준' , '샘플링율(%)' ]]],
[ 'text' => '수입검사 불합격 시 처리 절차는?' , 'type' => 'text' , 'ai_hint' => '반품/재검사/특채 여부' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '특수 구성' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '연기차단재 등 특수 부품이 있나요? 적용 조건은?' , 'type' => 'text' ],
[ 'text' => '보강재(샤프트, 파이프, 앵글 등) 사용 조건은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '보강재명' , '규격' , '적용조건' , '수량' ]]],
[ 'text' => '고객 요청에 따라 추가/제외되는 옵션 부품은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '옵션부품' , '추가/제외' , '추가비용' , '비고' ]]],
],
],
],
],
2026-03-22 22:48:18 +09:00
];
}
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
2026-03-22 22:48:18 +09:00
// ================================================================
// Domain 5: 단가 체계 (22개)
// ================================================================
private function domainPricingStructure () : array
{
return [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'pricing_structure' => [
2026-03-22 22:49:01 +09:00
'name' => '단가 체계' ,
2026-03-22 22:48:18 +09:00
'description' => '단가 관리 방식, 원가 구성, 할인 정책, 이력 관리' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '단가 관리 방식' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
2026-03-22 22:48:18 +09:00
[ 'text' => '부품별 단가를 어디서 관리하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '엑셀' , 'ERP 시스템' , '구두/경험' , '기타' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '단가표 파일을 업로드해주세요' , 'type' => 'file_upload' ],
2026-03-22 22:48:18 +09:00
[ 'text' => '단가 변경 주기는?' , 'type' => 'select' , 'options' => [ 'choices' => [ '수시' , '월 단위' , '분기 단위' , '반기 단위' , '연 단위' ]]],
[ 'text' => '단가 변경 승인 프로세스가 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음 (공식 결재)' , '담당자 자율' , '없음' ]]],
[ 'text' => '단가 이력(변경 전/후 기록)을 보관하나요?' , 'type' => 'checkbox' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '원가 구성요소' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '원가를 구성하는 항목을 모두 선택해주세요' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '재료비' , '가공비' , '노무비' , '외주비' , '경비' , '관리비' , '이윤' ]], 'is_required' => true ],
[ 'text' => '각 원가 항목의 비율(%) 또는 금액 기준을 알려주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '원가항목' , '산정방식' , '비율(%) 또는 금액' , '비고' ]]],
[ 'text' => '환율이 적용되는 수입 부품이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '환율 적용 품목과 기준 환율 관리 방식은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '통화' , '환율 갱신 주기' , '비고' ]], 'depends_on' => [ 'question_index' => 2 , 'value' => '있음' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '할인 정책' ,
2026-03-22 22:48:18 +09:00
'questions' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '고객별/거래처별 차등 단가가 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음 (등급별)' , '있음 (거래처별)' , '없음 (일괄 동일)' ]]],
2026-03-22 22:48:18 +09:00
[ 'text' => '수량 할인(볼륨 디스카운트)이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '수량 할인 구간과 할인율을 입력해주세요' , 'type' => 'price_table' , 'options' => [ 'columns' => [ '수량 구간(이상)' , '수량 구간(미만)' , '할인율(%)' , '비고' ]], 'depends_on' => [ 'question_index' => 1 , 'value' => '있음' ]],
[ 'text' => '프로젝트별 특별 할인이 가능한가요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '가능' , '불가' ]]],
[ 'text' => '계약 단가와 시장(공시) 단가를 구분 관리하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '구분 관리' , '단일 단가' , '협의에 따라' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '단가 계산 방식' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '면적 기반 단가 품목은? (원/㎡)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '품목명' , '단가(원/㎡)' , '비고' ]], 'expected_format' => '원/㎡' ],
[ 'text' => '중량 기반 단가 품목은? (원/kg)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '품목명' , '단가(원/kg)' , '비고' ]], 'expected_format' => '원/kg' ],
[ 'text' => '수량 기반 단가 품목은? (원/EA)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '품목명' , '단가(원/EA)' , '비고' ]], 'expected_format' => '원/EA' ],
[ 'text' => '길이 기반 단가 품목은? (원/m)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '품목명' , '단가(원/m)' , '비고' ]], 'expected_format' => '원/m' ],
2026-03-22 22:48:18 +09:00
[ 'text' => 'LOSS율(손실률)을 적용하나요? 적용 방식은?' , 'type' => 'formula_input' , 'ai_hint' => '예: 실제수량 = 계산수량 × (1 + LOSS율)' , 'expected_format' => '%' ],
[ 'text' => '마진율 설정 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '일괄 마진율' , '품목별 마진율' , '카테고리별 마진율' , '고객별 마진율' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
],
],
],
],
2026-03-22 22:48:18 +09:00
];
}
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
2026-03-22 22:48:18 +09:00
// ================================================================
// Domain 6: 수량 수식 (19개)
// ================================================================
private function domainQuantityFormula () : array
{
return [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'quantity_formula' => [
2026-03-22 22:49:01 +09:00
'name' => '수량 수식' ,
2026-03-22 22:48:18 +09:00
'description' => '부품별 수량 결정 규칙, LOSS율, 발주 단위' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '수량 결정 규칙' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '고정 수량 부품 목록 (항상 1개, 2개 등)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '고정수량' , '비고' ]]],
[ 'text' => '치수 기반 수량 계산 부품과 수식' , 'type' => 'formula_input' , 'ai_hint' => '예: 슬랫수량 = CEIL(H1 / 슬랫피치)' ],
[ 'text' => '면적 기반 수량 계산 부품과 수식' , 'type' => 'formula_input' , 'ai_hint' => '예: 스크린수량 = area / 기준면적' ],
[ 'text' => '중량 기반 수량 계산 부품과 수식' , 'type' => 'formula_input' ],
[ 'text' => '올림/내림/반올림 규칙이 있는 계산은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '계산항목' , '올림/내림/반올림' , '소수점자릿수' ]]],
2026-03-22 22:48:18 +09:00
],
],
[
2026-03-22 22:49:01 +09:00
'name' => 'LOSS율 및 여유 수량' ,
2026-03-22 22:48:18 +09:00
'questions' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '여유 수량(LOSS) 적용 품목과 비율은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '품목명' , 'LOSS율(%)' , '비고' ]]],
2026-03-22 22:48:18 +09:00
[ 'text' => 'LOSS 유형을 구분하나요?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '절단LOSS' , '가공LOSS' , '불량LOSS' , '취급LOSS' , '운반LOSS' ]]],
[ 'text' => 'LOSS 유형별 적용 품목과 비율을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ 'LOSS유형' , '적용품목' , 'LOSS율(%)' ]]],
[ 'text' => '안전 여유율(Safety Factor)을 별도로 관리하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '안전 여유율 적용 방식과 기준은?' , 'type' => 'text' , 'depends_on' => [ 'question_index' => 3 , 'value' => '있음' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '발주 단위 및 최소 수량' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '부품별 최소 발주 수량(MOQ)이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '최소 발주 수량이 있는 부품 목록과 단위는?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '최소발주수량' , '단위' , '비고' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
[ 'text' => '포장 단위(Packing Unit)가 수량 계산에 영향을 주나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예' , '아니오' ]]],
[ 'text' => '포장 단위 품목과 수량은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '품목명' , '포장단위' , '단위' ]], 'depends_on' => [ 'question_index' => 2 , 'value' => '예' ]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '수식 검증' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '실제 견적서에서 수량 계산 예시를 보여주세요 (W=3000, H=2500일 때)' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '부품명' , '수식' , '계산결과' , '단위' ]], 'is_required' => true ],
2026-03-22 22:48:18 +09:00
[ 'text' => '수식에 사용하는 함수가 있나요?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ 'CEIL (올림)' , 'FLOOR (내림)' , 'ROUND (반올림)' , 'MAX' , 'MIN' , 'IF 조건문' , 'SUM' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '조건에 따라 수식이 달라지는 경우가 있나요?' , 'type' => 'text' , 'ai_hint' => '예: 폭이 3000 초과이면 분할 계산' ],
],
],
],
],
2026-03-22 22:48:18 +09:00
];
}
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
2026-03-22 22:48:18 +09:00
// ================================================================
// Domain 7: 조건부 로직 (20개)
// ================================================================
private function domainConditionalLogic () : array
{
return [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'conditional_logic' => [
2026-03-22 22:49:01 +09:00
'name' => '조건부 로직' ,
2026-03-22 22:48:18 +09:00
'description' => '범위/매핑 기반 부품 자동 선택, 예외 규칙, 우선순위' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '범위 기반 선택' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '무게 범위별 모터 용량 선택표를 작성해주세요' , 'type' => 'price_table' , 'options' => [ 'columns' => [ '범위 시작(kg)' , '범위 끝(kg)' , '모터용량' , '비고' ]], 'is_required' => true ],
[ 'text' => '크기 범위별 부품 자동 선택 규칙이 있나요?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '조건(변수)' , '범위' , '선택부품' , '비고' ]]],
[ 'text' => '브라켓 크기 결정 기준은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '조건' , '범위' , '브라켓 규격' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '매핑 기반 선택' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '제품 모델 → 기본 부품 세트 매핑표' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품모델' , '기본부품1' , '기본부품2' , '기본부품3' ]]],
[ 'text' => '설치 유형 → 추가 부품 매핑표' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '설치유형' , '추가부품' , '수량' , '비고' ]]],
[ 'text' => '제어기 유형 → 부속품 매핑표' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제어기유형' , '부속품1' , '부속품2' , '부속품3' ]]],
[ 'text' => '기타 조건부 자동 선택 규칙' , 'type' => 'text' , 'ai_hint' => '위 항목에 해당하지 않는 조건-결과 매핑' ],
],
],
2026-03-22 22:48:18 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '다중 조건 및 예외 규칙' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => 'AND 조건이 필요한 규칙이 있나요? (예: 폭 AND 높이 동시 조건)' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => 'AND 조건 규칙을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '조건1' , '조건2' , '결과' , '비고' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
[ 'text' => 'OR 조건이 필요한 규칙이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => 'OR 조건 규칙을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '조건1 (또는)' , '조건2 (또는)' , '결과' , '비고' ]], 'depends_on' => [ 'question_index' => 2 , 'value' => '있음' ]],
[ 'text' => '예외 규칙(일반 규칙에서 벗어나는 특수 케이스)이 있나요?' , 'type' => 'text' , 'ai_hint' => '특수 고객사, 특수 프로젝트 예외 사항' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '우선순위 및 시즌/프로젝트 조건' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '조건 규칙 간 충돌 시 우선순위 처리 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '가장 구체적인 조건 우선' , '가장 최근 등록 우선' , '수동 지정' , '담당자 판단' ]]],
[ 'text' => '시즌별로 단가/구성이 달라지는 경우가 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '시즌별 조건과 적용 기간을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '시즌명' , '적용기간(시작)' , '적용기간(종료)' , '변경사항' ]], 'depends_on' => [ 'question_index' => 1 , 'value' => '있음' ]],
[ 'text' => '프로젝트별 특수 조건(별도 단가, 별도 구성)이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '프로젝트별 조건 관리 방식은?' , 'type' => 'text' , 'depends_on' => [ 'question_index' => 3 , 'value' => '있음' ]],
],
],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
],
],
2026-03-22 22:48:18 +09:00
];
}
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
2026-03-22 22:48:18 +09:00
// ================================================================
// Domain 8: 견적서 양식 (21개)
// ================================================================
private function domainQuoteFormat () : array
{
return [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'quote_format' => [
2026-03-22 22:49:01 +09:00
'name' => '견적서 양식' ,
2026-03-22 22:48:18 +09:00
'description' => '출력 양식, 다중 양식, 특수 요구사항' ,
2026-03-22 22:49:01 +09:00
'templates' => [
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '기본 출력 양식' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '현재 사용 중인 견적서 양식을 업로드해주세요' , 'type' => 'file_upload' , 'is_required' => true ],
2026-03-22 22:48:18 +09:00
[ 'text' => '견적서에 표시되는 항목 그룹은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '재료비' , '노무비' , '경비' , '설치비' , '운반비' , '이윤' , '부가세' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '소계/합계 계산 구조를 설명해주세요' , 'type' => 'text' , 'ai_hint' => '항목 그룹별 소계와 최종 합계의 관계' ],
2026-03-22 22:48:18 +09:00
[ 'text' => '할인 적용 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '일괄 할인' , '항목별 할인' , '할인 없음' , '협의 할인' ]]],
[ 'text' => '부가세 표시 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '별도 표시' , '포함 표시' , '선택 가능' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
[ 'text' => '견적서에 표시하지 않는 내부 관리 항목은?' , 'type' => 'text' ],
[ 'text' => '견적 번호 체계를 알려주세요' , 'type' => 'text' , 'ai_hint' => '예: Q-2026-001 형식' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '다중 양식 및 고객 맞춤' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '용도별로 다른 견적서 양식을 사용하나요?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '관급용 별도 양식' , '민간공사용 별도 양식' , '수출용 별도 양식' , '없음 (단일 양식)' ]]],
[ 'text' => '고객사 요청으로 양식이 달라지는 경우가 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음 (고객사 지정 양식)' , '없음' ]]],
[ 'text' => '고객 맞춤 항목 예시를 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '고객사명' , '맞춤 항목' , '설명' ]], 'depends_on' => [ 'question_index' => 1 , 'value' => '있음 (고객사 지정 양식)' ]],
[ 'text' => '다국어(영문 등) 견적서가 필요한가요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '필요' , '불필요' ]]],
[ 'text' => '영문 견적서의 경우 항목명 번역 기준이 있나요?' , 'type' => 'file_upload' , 'depends_on' => [ 'question_index' => 3 , 'value' => '필요' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '첨부 서류 및 전자 견적' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '견적서에 함께 제출하는 첨부 서류는?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '시방서' , '인증서 사본' , '시험성적서' , '카탈로그' , '도면' , '회사 소개서' ]]],
[ 'text' => '전자 견적(이메일, 전자계약 등) vs 종이 견적 비율은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '전자 견적 100%' , '주로 전자, 일부 종이' , '혼용 50:50' , '주로 종이' , '종이 견적 100%' ]]],
[ 'text' => '전자 서명/전자 도장 사용 여부는?' , 'type' => 'checkbox' ],
[ 'text' => '견적 유효 기간 표시 여부와 기준은?' , 'type' => 'text' , 'ai_hint' => '예: 발행일로부터 30일' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '특수 요구사항' ,
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
'questions' => [
[ 'text' => '산출내역서(세부 내역)를 별도로 제공하나요?' , 'type' => 'checkbox' ],
[ 'text' => '위치별(층/부호) 개별 산출이 필요한가요?' , 'type' => 'checkbox' ],
[ 'text' => '일괄 산출(여러 위치 합산)을 사용하나요?' , 'type' => 'checkbox' ],
2026-03-22 22:48:18 +09:00
[ 'text' => '견적 내 비교 옵션 표시가 필요한가요? (A안/B안 비교)' , 'type' => 'checkbox' ],
[ 'text' => '견적 수정 이력 관리가 필요한가요?' , 'type' => 'checkbox' ],
],
],
],
],
];
}
// ================================================================
// Domain 9: 생산 공정 (20개)
// ================================================================
private function domainProductionProcess () : array
{
return [
'production_process' => [
2026-03-22 22:49:01 +09:00
'name' => '생산 공정' ,
2026-03-22 22:48:18 +09:00
'description' => '공정 흐름, 설비, 납기, 작업지시, 외주 관리' ,
2026-03-22 22:49:01 +09:00
'templates' => [
2026-03-22 22:48:18 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '공정 흐름 및 작업장 구성' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '생산 공정 흐름을 순서대로 나열해주세요' , 'type' => 'text' , 'ai_hint' => '예: 원자재 입고 → 절단 → 가공 → 조립 → 검사 → 포장 → 출하' , 'is_required' => true ],
[ 'text' => '작업장(공장) 구성을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '작업장명' , '담당 공정' , '작업인원' , '비고' ]]],
[ 'text' => '제품별로 공정 순서가 달라지나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 제품별로 다름' , '아니오, 동일 공정' ]]],
[ 'text' => '제품별 공정 차이점을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품명' , '추가 공정' , '생략 공정' , '비고' ]], 'depends_on' => [ 'question_index' => 2 , 'value' => '예, 제품별로 다름' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '설비 목록 및 표준시간' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '주요 생산 설비 목록을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '설비명' , '모델/사양' , '처리 가능 규격' , '일일 생산 용량' ]]],
[ 'text' => '설비별 병목 공정이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '병목 공정과 개선 방안은?' , 'type' => 'text' , 'depends_on' => [ 'question_index' => 1 , 'value' => '있음' ]],
[ 'text' => '제품별 표준 작업 시간(공수)이 관리되고 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 공식 표준시간 있음' , '경험치로 관리' , '관리 안 함' ]]],
[ 'text' => '주요 제품의 공정별 표준시간을 입력해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품명' , '공정명' , '표준시간(분)' , '비고' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '납기 기준 및 생산 계획' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '제품별 평균 생산 납기일은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품군' , '평균 납기(영업일)' , '비고' ]], 'is_required' => true ],
[ 'text' => '납기 계산 기준일은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '수주 확정일' , '선금 수령일' , '도면 승인일' , '기타' ]]],
[ 'text' => '생산 계획 수립 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '주간 단위' , '월간 단위' , '수주별 개별' , '혼용' ]]],
[ 'text' => '긴급 납기 요청(Rush Order) 처리 절차는?' , 'type' => 'text' ],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '외주 및 작업지시' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '외주 가공 공정이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '외주 가공 품목과 외주업체 목록을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '외주품목' , '가공내용' , '외주업체' , '단가기준' ]], 'depends_on' => [ 'question_index' => 0 , 'value' => '있음' ]],
[ 'text' => '작업지시서를 발행하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 공식 작업지시서 발행' , '구두 지시' , '발행 안 함' ]]],
[ 'text' => '현재 사용하는 작업지시서 양식을 업로드해주세요' , 'type' => 'file_upload' , 'depends_on' => [ 'question_index' => 2 , 'value' => '예, 공식 작업지시서 발행' ]],
[ 'text' => '재작업/불량 발생 시 생산 기록 처리 방식은?' , 'type' => 'text' , 'ai_hint' => '재작업 지시서 발행 여부, 원인 분석 기록 방법' ],
[ 'text' => '생산 실적(작업 완료) 보고 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '일일 실적 보고' , '공정별 실시간 보고' , 'ERP 입력' , '구두/엑셀' ]]],
],
],
],
],
];
}
// ================================================================
// Domain 10: 품질 관리 (17개)
// ================================================================
private function domainQualityControl () : array
{
return [
'quality_control' => [
2026-03-22 22:49:01 +09:00
'name' => '품질 관리' ,
2026-03-22 22:48:18 +09:00
'description' => '검사 기준, 불량 분류, 인증 관리, 클레임 처리' ,
2026-03-22 22:49:01 +09:00
'templates' => [
2026-03-22 22:48:18 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '검사 체계' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '수입검사(자재 입고 검사)를 실시하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 전수검사' , '예, 샘플링검사' , '아니오' ]], 'is_required' => true ],
[ 'text' => '수입검사 대상 품목과 검사 항목을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '품목' , '검사항목' , '검사방법' , '합격기준' ]]],
[ 'text' => '공정 검사(자주검사/순회검사)를 실시하나요?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '자주검사 (작업자 본인)' , '순회검사 (품질담당자)' , '없음' ]]],
[ 'text' => '공정 검사 기준과 주기는?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '검사공정' , '검사항목' , '검사주기' , '기준' ]]],
[ 'text' => '완제품 검사 기준을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '검사항목' , '측정방법' , '합격기준' , '비고' ]]],
[ 'text' => '사용하는 검사 장비 목록을 알려주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '장비명' , '측정항목' , '측정범위' , '교정주기' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '불량 관리 및 시정조치' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '불량 유형을 어떻게 분류하나요?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '치수불량' , '외관불량' , '기능불량' , '재료불량' , '조립불량' , '기타' ]]],
[ 'text' => '불량 발생 시 시정/예방 조치 프로세스를 설명해주세요' , 'type' => 'text' , 'ai_hint' => '불량 발생 → 원인분석 → 시정조치 → 효과확인 흐름' ],
[ 'text' => '불량률 목표치와 현재 실적은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '불량유형' , '목표불량률(%)' , '현재불량률(%)' , '비고' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '인증 및 고객 클레임' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '품질 관련 인증 보유 현황은? (ISO, KC 등)' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ 'ISO 9001' , 'ISO 14001' , 'KC 안전인증' , '기타 인증' ]]],
[ 'text' => '인증 유지를 위한 정기 감사 주기는?' , 'type' => 'select' , 'options' => [ 'choices' => [ '반기 1회' , '연 1회' , '2년 1회' , '해당 없음' ]]],
[ 'text' => '품질 목표 및 KPI를 관리하고 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 공식 KPI 관리' , '비공식 관리' , '없음' ]]],
[ 'text' => '품질 KPI 항목과 목표치를 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ 'KPI항목' , '목표치' , '측정주기' , '담당부서' ]], 'depends_on' => [ 'question_index' => 2 , 'value' => '예, 공식 KPI 관리' ]],
[ 'text' => '고객 클레임 처리 절차를 설명해주세요' , 'type' => 'text' , 'ai_hint' => '접수 → 현장확인 → 조치(교체/수리/환불) → 완료 처리' ],
[ 'text' => '클레임 처리 목표 기간(SLA)이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '24시간 이내' , '3영업일 이내' , '7영업일 이내' , '협의' ]]],
],
],
],
],
];
}
// ================================================================
// Domain 11: 물류/재고 (18개)
// ================================================================
private function domainLogisticsInventory () : array
{
return [
'logistics_inventory' => [
2026-03-22 22:49:01 +09:00
'name' => '물류/재고' ,
2026-03-22 22:48:18 +09:00
'description' => '입출고, 창고 관리, 재고 실사, 운송/배송' ,
2026-03-22 22:49:01 +09:00
'templates' => [
2026-03-22 22:48:18 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '입출고 및 창고 관리' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '자재 입고 프로세스를 설명해주세요' , 'type' => 'text' , 'ai_hint' => '발주 → 납품 → 수입검사 → 입고 처리 흐름' , 'is_required' => true ],
[ 'text' => '완제품 출고 프로세스를 설명해주세요' , 'type' => 'text' , 'ai_hint' => '출하 지시 → 피킹 → 포장 → 검수 → 출고 처리' ],
[ 'text' => '창고 구역 구성을 알려주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '구역명' , '보관 품목' , '면적(㎡)' , '비고' ]]],
[ 'text' => '바코드 또는 QR 코드로 재고를 관리하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '바코드 사용' , 'QR 코드 사용' , '둘 다 사용' , '사용 안 함' ]]],
[ 'text' => '재고 위치 관리 방식은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '지정 위치 (고정)' , '자유 위치 (변동)' , '구역 단위 관리' , '관리 안 함' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '재고 정책' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '재고 적재 방식(FIFO/LIFO/지정위치)은?' , 'type' => 'select' , 'options' => [ 'choices' => [ 'FIFO (선입선출)' , 'LIFO (후입선출)' , '지정 위치 고정' , '혼용' ]]],
[ 'text' => '재고 실사 주기는?' , 'type' => 'select' , 'options' => [ 'choices' => [ '월 1회' , '분기 1회' , '반기 1회' , '연 1회' , '비정기' ]]],
[ 'text' => '재고 실사 방식은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '전수조사' , '순환조사' , '랜덤 샘플링' , '바코드 스캔' ]]],
[ 'text' => '안전재고 미달 시 자동 발주 또는 알림 기능이 필요한가요?' , 'type' => 'checkbox' ],
[ 'text' => '유효기간/유통기한 관리가 필요한 품목이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '운송/배송 및 반품' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '주요 운송/배송 방식은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '자사 차량' , '택배' , '화물 운송' , '고객 자체 수령' , '설치팀 직배송' ]]],
[ 'text' => '배송 지역별 운임 기준이 있나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음 (지역별 차등)' , '있음 (중량별)' , '없음 (포함가)' , '별도 협의' ]]],
[ 'text' => '제품별 포장 규격을 정리해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품명' , '포장재질' , '포장크기(mm)' , '최대적재수량' ]]],
[ 'text' => '반품 처리 프로세스는?' , 'type' => 'text' , 'ai_hint' => '반품 접수 → 검수 → 재고 입고 또는 폐기 처리' ],
[ 'text' => '운송 중 파손/불량 발생 시 처리 절차는?' , 'type' => 'text' ],
[ 'text' => '납품 실적 관리 및 납기 준수율을 측정하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 공식 측정' , '비공식' , '측정 안 함' ]]],
],
],
],
],
];
}
// ================================================================
// Domain 12: 영업/고객 (18개)
// ================================================================
private function domainSalesCustomer () : array
{
return [
'sales_customer' => [
2026-03-22 22:49:01 +09:00
'name' => '영업/고객' ,
2026-03-22 22:48:18 +09:00
'description' => '거래처 분류, 계약, 결제, 영업 파이프라인, A/S' ,
2026-03-22 22:49:01 +09:00
'templates' => [
2026-03-22 22:48:18 +09:00
[
2026-03-22 22:49:01 +09:00
'name' => '거래처 및 계약 유형' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '거래처 유형을 선택해주세요' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '건설사' , '시공사(하도급)' , '직거래(건물주)' , '관공서' , '유통업체' , '수출' ]], 'is_required' => true ],
[ 'text' => '거래처별 판매 비중(%)을 대략 입력해주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '거래처유형' , '판매비중(%)' , '비고' ]]],
[ 'text' => '주로 사용하는 계약 유형은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '단가계약 (연간)' , '프로젝트별 수주' , '단발성 거래' , '공개 입찰' ]]],
[ 'text' => '단가계약의 경우 계약 기간과 갱신 주기는?' , 'type' => 'text' , 'depends_on' => [ 'question_index' => 2 , 'value' => '단가계약 (연간)' ]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => '결제 조건 및 영업 파이프라인' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '주로 사용하는 결제 조건은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '선금 100%' , '선금+잔금' , '선금+중도금+잔금' , '후불(납품 후)' , '어음 결제' ]]],
[ 'text' => '선금/중도금/잔금 비율 기준을 알려주세요' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '결제단계' , '비율(%)' , '지급 시점' , '비고' ]]],
[ 'text' => '영업 파이프라인 단계를 정의해주세요' , 'type' => 'text' , 'ai_hint' => '예: 리드 → 견적요청 → 견적발행 → 협상 → 수주확정 → 납품 → 완료' ],
[ 'text' => '현재 CRM 또는 영업 관리 도구를 사용하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '전용 CRM 사용' , '엑셀로 관리' , '구두/기억으로 관리' , '없음' ]]],
[ 'text' => '영업 목표 및 실적을 어떻게 관리하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '월별 목표/실적 관리' , '분기별' , '연간' , '관리 안 함' ]]],
],
],
[
2026-03-22 22:49:01 +09:00
'name' => 'A/S 및 고객 관리' ,
2026-03-22 22:48:18 +09:00
'questions' => [
[ 'text' => '하자보증 기간 및 기준은?' , 'type' => 'table_input' , 'options' => [ 'columns' => [ '제품군' , '하자보증기간' , '보증 범위' , '제외 사항' ]], 'is_required' => true ],
[ 'text' => 'A/S 접수 채널은?' , 'type' => 'multi_select' , 'options' => [ 'choices' => [ '전화' , '이메일' , '온라인 신청' , '담당자 직접 접수' ]]],
[ 'text' => 'A/S 처리 목표 시간(SLA)은?' , 'type' => 'select' , 'options' => [ 'choices' => [ '당일 출동' , '24시간 이내' , '3영업일 이내' , '7영업일 이내' , '협의' ]]],
[ 'text' => '고객 등급(우수, 일반 등) 관리를 하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '있음' , '없음' ]]],
[ 'text' => '고객 등급별 혜택이나 차별화 서비스는?' , 'type' => 'text' , 'depends_on' => [ 'question_index' => 3 , 'value' => '있음' ]],
[ 'text' => '원가 공개 가능 범위는?' , 'type' => 'select' , 'options' => [ 'choices' => [ '원가 전혀 비공개' , '요청 시 재료비만 공개' , '요청 시 전체 원가 공개' , '협의에 따라' ]], 'ai_hint' => '견적서에 원가 항목 노출 여부' ],
[ 'text' => '납품 완료 후 고객 만족도 조사를 실시하나요?' , 'type' => 'select' , 'options' => [ 'choices' => [ '예, 정기 조사' , '비공식 확인' , '없음' ]]],
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
],
],
],
],
];
}
}