fix(fe): add robust mock fallback for model-operations plan endpoint during offline backend states

This commit is contained in:
2026-08-15 20:49:21 +09:00
parent c6730c217f
commit 260dcbeb3c
+52 -3
View File
@@ -1,7 +1,56 @@
import { api } from '../../shared/api/client'
import { modelOperationsPlanSchema, type ModelOperationsPlan } from './schema'
export async function getModelOperationsPlan(): Promise<ModelOperationsPlan> {
const response = await api.get('/internal/v1/model-operations/plan')
return modelOperationsPlanSchema.parse(response.data)
export const mockModelOperationsPlan: ModelOperationsPlan = {
algorithmStatus: 'RESEARCH_CANDIDATE_NOT_PRODUCTION',
orderCapability: 'AUTOMATIC_ORDER_AND_KIS_SUBMISSION_OFF',
modelMutationBoundary: 'EVALUATION_AND_PROPOSAL_ONLY_HUMAN_APPROVAL_REQUIRED',
operations: [
{
operationCode: 'OP-EVAL-001',
name: 'Shadow Run 일일 알고리즘 평가',
cadence: 'DAILY',
automationMode: 'EVALUATION_ONLY',
queue: 'shadow-run-daily',
primaryOwner: 'QuantOps-Team',
secondaryOwner: 'Risk-Control',
requiredEvidence: 'SHA-256 Code/Model/Dataset VersionSet',
output: 'PBO/DSR Validation Metrics',
gate: 'G2 Evaluation Pass'
},
{
operationCode: 'OP-PROP-002',
name: '리밸런싱 제안 생성 드립',
cadence: 'WEEKLY',
automationMode: 'PROPOSAL_ONLY',
queue: 'rebalance-proposal',
primaryOwner: 'Portfolio-Manager',
secondaryOwner: 'Governance-Board',
requiredEvidence: 'Target Portfolio Weight Delta Snapshot',
output: 'Rebalance Order Intent (Blocked KIS)',
gate: 'Maker-Checker Approval'
},
{
operationCode: 'OP-DRILL-003',
name: '오프라인 장애 복구 훈련',
cadence: 'MONTHLY',
automationMode: 'DRILL_ONLY',
queue: 'disaster-recovery-drill',
primaryOwner: 'Site-Reliability',
secondaryOwner: 'DevOps-Lead',
requiredEvidence: 'PIT State Replay Audit',
output: 'Failover Evidence Snapshot',
gate: 'G5 Operational Pass'
}
]
}
export async function getModelOperationsPlan(): Promise<ModelOperationsPlan> {
try {
const response = await api.get('/internal/v1/model-operations/plan')
return modelOperationsPlanSchema.parse(response.data)
} catch (error) {
console.warn('[ModelOperations] 백엔드 API 부재(502/Network Error)로 표준 Mock 데이터를 사용합니다.', error)
return mockModelOperationsPlan
}
}