157 lines
8.1 KiB
PHP
157 lines
8.1 KiB
PHP
<!DOCTYPE html>
|
||
<html lang="ja">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>本人確認処理 - 失敗</title>
|
||
<style>
|
||
body { font-family: Arial, sans-serif; margin: 20px; background-color: #f8f9fa; }
|
||
.container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
|
||
.header { text-align: center; color: #dc3545; margin-bottom: 30px; }
|
||
.section { margin-bottom: 30px; border: 1px solid #dee2e6; border-radius: 5px; padding: 15px; }
|
||
.section-title { font-size: 18px; font-weight: bold; color: #333; margin-bottom: 15px; background-color: #e9ecef; padding: 10px; margin: -15px -15px 15px -15px; }
|
||
.failure { background-color: #f8d7da; border-color: #f5c6cb; }
|
||
.failure .section-title { background-color: #dc3545; color: white; }
|
||
.warning { background-color: #fff3cd; border-color: #ffeaa7; }
|
||
.warning .section-title { background-color: #ffc107; color: #212529; }
|
||
pre { background-color: #f8f9fa; padding: 10px; border-radius: 4px; overflow-x: auto; font-size: 12px; line-height: 1.4; }
|
||
.btn { display: inline-block; padding: 10px 20px; background-color: #007bff; color: white; text-decoration: none; border-radius: 4px; margin-top: 20px; }
|
||
.btn:hover { background-color: #0056b3; }
|
||
.btn-retry { background-color: #ffc107; color: #212529; }
|
||
.btn-retry:hover { background-color: #e0a800; }
|
||
.status-error { color: #dc3545; font-weight: bold; }
|
||
.timestamp { text-align: right; color: #6c757d; font-size: 12px; }
|
||
.error-highlight { background-color: #ffebee; padding: 5px; border-radius: 3px; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<div class="header">
|
||
<h1>❌ SHJ-1 本人確認自動処理 - 失敗</h1>
|
||
<p>本人確認処理でエラーが発生しました。手動確認が必要です。</p>
|
||
</div>
|
||
|
||
<div class="timestamp">
|
||
処理日時: {{ $debugInfo['timestamp'] }}
|
||
</div>
|
||
|
||
@if(isset($debugInfo['error']))
|
||
<div class="section failure">
|
||
<div class="section-title">❌ システムエラー</div>
|
||
<pre>{{ $debugInfo['error'] }}</pre>
|
||
</div>
|
||
@else
|
||
<!-- ユーザー情報 -->
|
||
<div class="section warning">
|
||
<div class="section-title">👤 ユーザー情報</div>
|
||
<pre>
|
||
ユーザーID: {{ $debugInfo['user']->user_id ?? 'N/A' }}
|
||
ユーザー連番: {{ $debugInfo['user']->user_seq ?? 'N/A' }}
|
||
氏名: {{ $debugInfo['user']->user_name ?? 'N/A' }}
|
||
フリガナ: {{ $debugInfo['user']->user_phonetic ?? 'N/A' }}
|
||
居住住所: {{ ($debugInfo['user']->user_regident_pre ?? '') . ($debugInfo['user']->user_regident_city ?? '') . ($debugInfo['user']->user_regident_add ?? '') }}
|
||
関連住所: {{ ($debugInfo['user']->user_relate_pre ?? '') . ($debugInfo['user']->user_relate_city ?? '') . ($debugInfo['user']->user_relate_add ?? '') }}
|
||
本人確認書類: {{ $debugInfo['user']->user_idcard ?? 'N/A' }}
|
||
本人確認フラグ: <span class="status-error">{{ $debugInfo['user']->user_idcard_chk_flag ?? 'N/A' }}</span>
|
||
確認日時: {{ $debugInfo['user']->user_chk_day ?? 'N/A' }}
|
||
確認オペレータID: {{ $debugInfo['user']->user_chk_opeid ?? 'N/A' }}
|
||
写真ファイル1: {{ $debugInfo['user']->photo_filename1 ?? 'N/A' }}
|
||
写真ファイル2: {{ $debugInfo['user']->photo_filename2 ?? 'N/A' }}
|
||
</pre>
|
||
</div>
|
||
|
||
<!-- 駐輪場情報 -->
|
||
@if($debugInfo['park'])
|
||
<div class="section warning">
|
||
<div class="section-title">🚲 駐輪場情報</div>
|
||
<pre>
|
||
駐輪場ID: {{ $debugInfo['park']->park_id }}
|
||
駐輪場名: {{ $debugInfo['park']->park_name }}
|
||
住所: {{ $debugInfo['park']->park_adrs }}
|
||
二点間距離設定: {{ $debugInfo['park']->distance_between_two_points ?? 'N/A' }}m
|
||
緯度: {{ $debugInfo['park']->park_latitude ?? 'N/A' }}
|
||
経度: {{ $debugInfo['park']->park_longitude ?? 'N/A' }}
|
||
</pre>
|
||
</div>
|
||
@endif
|
||
|
||
<!-- 契約情報 -->
|
||
@if($debugInfo['contract'])
|
||
<div class="section warning">
|
||
<div class="section-title">📝 契約情報</div>
|
||
<pre>
|
||
契約ID: {{ $contractId }}
|
||
ユーザー連番: {{ $debugInfo['contract']->user_id }}
|
||
駐輪場ID: {{ $debugInfo['contract']->park_id }}
|
||
800mフラグ: <span class="{{ isset($debugInfo['contract']->{'800m_flag'}) && $debugInfo['contract']->{'800m_flag'} ? 'status-error' : '' }}">{{ $debugInfo['contract']->{'800m_flag'} ?? 'N/A' }}</span>
|
||
作成日時: {{ $debugInfo['contract']->created_at ?? 'N/A' }}
|
||
更新日時: {{ $debugInfo['contract']->updated_at ?? 'N/A' }}
|
||
</pre>
|
||
</div>
|
||
@endif
|
||
|
||
<!-- バッチログ情報 -->
|
||
@if($debugInfo['batch_log'])
|
||
<div class="section failure">
|
||
<div class="section-title">⚙️ バッチ処理情報</div>
|
||
<pre>
|
||
バッチ名: {{ $debugInfo['batch_log']->process_name }}
|
||
ステータス: <span class="status-error">{{ $debugInfo['batch_log']->status }}</span>
|
||
開始時刻: {{ $debugInfo['batch_log']->start_time }}
|
||
終了時刻: {{ $debugInfo['batch_log']->end_time }}
|
||
処理件数: {{ $debugInfo['batch_log']->execution_count ?? 0 }}
|
||
成功件数: {{ $debugInfo['batch_log']->success_count ?? 0 }}
|
||
エラー件数: <span class="status-error">{{ $debugInfo['batch_log']->error_count ?? 0 }}</span>
|
||
メッセージ: <span class="error-highlight">{{ $debugInfo['batch_log']->message }}</span>
|
||
エラー詳細: {{ $debugInfo['batch_log']->error_details ?? 'N/A' }}
|
||
</pre>
|
||
</div>
|
||
@endif
|
||
|
||
@if(isset($debugInfo['user']->user_idcard) && $debugInfo['user']->user_idcard === '免許証')
|
||
<!-- 詳細ログ (免許証のみ表示) -->
|
||
<div class="section failure">
|
||
<div class="section-title">📋 SHJ-1処理詳細ログ (OCR・距離計算・エラー詳細)</div>
|
||
<pre>{{ $debugInfo['detailed_logs'] }}</pre>
|
||
</div>
|
||
|
||
<!-- Google Maps API結果 (免許証のみ表示) -->
|
||
<div class="section failure">
|
||
<div class="section-title">🗺️ Google Maps API (距離計算) 処理結果</div>
|
||
<pre>
|
||
【距離計算結果】
|
||
起点住所: {{ $debugInfo['distance_start_address'] ?? (($debugInfo['user']->user_regident_pre ?? '') . ($debugInfo['user']->user_regident_city ?? '') . ($debugInfo['user']->user_regident_add ?? '')) }}
|
||
終点住所: {{ $debugInfo['park']->park_adrs ?? ($debugInfo['distance_end_address'] ?? 'N/A') }}
|
||
計算距離: {{ $debugInfo['calculated_distance'] ?? 'N/A' }}m @if(isset($debugInfo['distance_text']))({{ $debugInfo['distance_text'] }})@endif
|
||
距離制限: {{ $debugInfo['distance_limit'] ?? config('shj1.distance.default_limit_meters') }}m
|
||
判定結果: {{ isset($debugInfo['distance_passed']) ? ($debugInfo['distance_passed'] ? '✅ 制限内' : '❌ 制限超過') : 'N/A' }}
|
||
|
||
【API呼び出し状況】
|
||
API応答: {{ $debugInfo['maps_api_status'] ?? 'ログから確認してください' }}
|
||
エラー詳細: {{ $debugInfo['maps_api_error'] ?? 'なし' }}
|
||
</pre>
|
||
</div>
|
||
@else
|
||
<!-- 非免許証の場合の表示 -->
|
||
<div class="section warning">
|
||
<div class="section-title">ℹ️ 処理状況</div>
|
||
<pre>
|
||
本人確認書類種別: {{ $debugInfo['user']->user_idcard ?? 'N/A' }}
|
||
|
||
{{ $debugInfo['user']->user_idcard ?? '不明' }}の場合、SHJ-1による自動OCR処理・距離計算は実行されません。
|
||
|
||
|
||
処理ステータス: 手動確認待ち
|
||
</pre>
|
||
</div>
|
||
@endif
|
||
@endif
|
||
|
||
<div style="text-align: center; margin-top: 30px;">
|
||
<a href="/regular-contract/upload_identity_create" class="btn btn-retry">写真を再アップロード</a>
|
||
<a href="/" class="btn">トップページに戻る</a>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|