feat:신용평가 조회 이력 DB 저장 및 리스트 화면 구현

- credit_inquiries 테이블 마이그레이션 추가
- CreditInquiry 모델 생성 (API 응답 저장, 이슈 카운트 등)
- 조회 이력 리스트 화면으로 변경 (페이지네이션, 필터)
- 원본 데이터 모달 조회 기능 추가
- 신용평가 리포트 모달 (TODO: 가공 형식 구현 예정)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
pro
2026-01-22 20:17:23 +09:00
parent 92b73b0543
commit 0fe84fdebe
5 changed files with 944 additions and 613 deletions

View File

@@ -0,0 +1,57 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('credit_inquiries', function (Blueprint $table) {
$table->id();
$table->string('inquiry_key', 32)->unique()->comment('조회 고유 키');
$table->string('company_key', 20)->index()->comment('사업자번호/법인번호');
$table->string('company_name')->nullable()->comment('업체명');
$table->unsignedBigInteger('user_id')->nullable()->comment('조회자 ID');
$table->timestamp('inquired_at')->comment('조회 일시');
// 요약 정보 (빠른 조회용)
$table->unsignedInteger('short_term_overdue_cnt')->default(0)->comment('단기연체정보 건수');
$table->unsignedInteger('negative_info_kci_cnt')->default(0)->comment('신용도판단정보(한국신용정보원) 건수');
$table->unsignedInteger('negative_info_pb_cnt')->default(0)->comment('공공정보 건수');
$table->unsignedInteger('negative_info_cb_cnt')->default(0)->comment('신용도판단정보(신용정보사) 건수');
$table->unsignedInteger('suspension_info_cnt')->default(0)->comment('당좌거래정지정보 건수');
$table->unsignedInteger('workout_cnt')->default(0)->comment('법정관리/워크아웃정보 건수');
// API 응답 원본 데이터 (JSON)
$table->json('raw_summary')->nullable()->comment('OA12 신용요약정보 원본');
$table->json('raw_short_term_overdue')->nullable()->comment('OA13 단기연체정보 원본');
$table->json('raw_negative_info_kci')->nullable()->comment('OA14 신용도판단정보(한국신용정보원) 원본');
$table->json('raw_negative_info_cb')->nullable()->comment('OA15 신용도판단정보(신용정보사) 원본');
$table->json('raw_suspension_info')->nullable()->comment('OA16 당좌거래정지정보 원본');
$table->json('raw_workout_info')->nullable()->comment('OA17 법정관리/워크아웃정보 원본');
// 상태
$table->enum('status', ['success', 'partial', 'failed'])->default('success')->comment('조회 상태');
$table->text('error_message')->nullable()->comment('에러 메시지');
$table->timestamps();
// 인덱스
$table->index(['company_key', 'inquired_at']);
$table->index('inquired_at');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('credit_inquiries');
}
};