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 App\Models\Interview;
|
|
|
|
|
|
|
|
|
|
use App\Models\User;
|
|
|
|
|
use App\Traits\BelongsToTenant;
|
|
|
|
|
use App\Traits\ModelTrait;
|
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
|
|
|
|
|
|
|
|
class InterviewKnowledge extends Model
|
|
|
|
|
{
|
|
|
|
|
use BelongsToTenant, ModelTrait, SoftDeletes;
|
|
|
|
|
|
feat: [database] codebridge DB 분리 - 118개 MNG 전용 테이블 connection 설정
- config/database.php에 codebridge connection 추가
- 78개 MNG 전용 모델에 $connection = 'codebridge' 설정
- Admin (15): PM, 로드맵, API Explorer
- Sales (16): 영업파트너, 수수료, 가망고객
- Finance (9): 법인카드, 자금관리, 홈택스
- Barobill (12): 은행/카드 동기화 관리
- Interview (1), ESign (6), Equipment (2)
- AI (3), Audit (3), 기타 (11)
2026-03-07 11:27:18 +09:00
|
|
|
protected $connection = 'codebridge';
|
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
|
|
|
protected $table = 'interview_knowledge';
|
|
|
|
|
|
|
|
|
|
protected $fillable = [
|
|
|
|
|
'tenant_id',
|
|
|
|
|
'interview_project_id',
|
|
|
|
|
'domain',
|
|
|
|
|
'knowledge_type',
|
|
|
|
|
'title',
|
|
|
|
|
'content',
|
|
|
|
|
'source_type',
|
|
|
|
|
'source_id',
|
|
|
|
|
'confidence',
|
|
|
|
|
'is_verified',
|
|
|
|
|
'verified_by',
|
|
|
|
|
'verified_at',
|
|
|
|
|
'created_by',
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
protected $casts = [
|
|
|
|
|
'content' => 'array',
|
|
|
|
|
'confidence' => 'decimal:2',
|
|
|
|
|
'is_verified' => 'boolean',
|
|
|
|
|
'verified_at' => 'datetime',
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
public function project()
|
|
|
|
|
{
|
|
|
|
|
return $this->belongsTo(InterviewProject::class, 'interview_project_id');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function verifier()
|
|
|
|
|
{
|
|
|
|
|
return $this->belongsTo(User::class, 'verified_by');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function creator()
|
|
|
|
|
{
|
|
|
|
|
return $this->belongsTo(User::class, 'created_by');
|
|
|
|
|
}
|
|
|
|
|
}
|