deploy: 2026-03-12 배포

- feat: [QMS] 점검표 템플릿 Mock→API 연동 + 로트심사 UI 개선
- feat: [견적] 제어기 타입 변경 + 가이드레일 제품연동 + 수식보기 개선
- feat: [생산/출하] 작업자 화면 step 서버 토글 + 출하 수주 조인 연동
- feat: [배포] Jenkinsfile 롤백 기능 추가
- feat: [입고] 성적서 파일 백엔드 연동 + CSP 도메인 허용
- feat: ESLint 정리 및 전체 코드 품질 개선
- fix: [QMS] 제품검사 성적서 렌더링 개선 + 빌드 타입 에러 수정
- fix: [품질검사] LegacyPhotoUpload images undefined 에러 수정
- fix: middleware publicRoutes 타입 에러 수정
This commit is contained in:
2026-03-12 15:21:20 +09:00
parent fdb1230c69
commit c3266e5d3f
341 changed files with 3738 additions and 1999 deletions

View File

@@ -0,0 +1,49 @@
/**
* .next 빌드 캐시 무결성 검증
*
* macOS 26 파일시스템 이슈로 .next/ 내 JSON 파일이 손상될 수 있음.
* (atomic write 실패 → 데이터 중복 기록)
* dev 서버 시작 전 자동 검증하여 손상 시 .next 삭제.
*/
import { readFileSync, rmSync, existsSync, readdirSync } from 'fs';
import { join } from 'path';
const NEXT_DIR = '.next';
if (!existsSync(NEXT_DIR)) {
process.exit(0);
}
const jsonFiles = [];
try {
// .next/ 루트의 JSON 파일들
for (const f of readdirSync(NEXT_DIR)) {
if (f.endsWith('.json')) jsonFiles.push(join(NEXT_DIR, f));
}
// .next/server/ 의 JSON 파일들
const serverDir = join(NEXT_DIR, 'server');
if (existsSync(serverDir)) {
for (const f of readdirSync(serverDir)) {
if (f.endsWith('.json')) jsonFiles.push(join(serverDir, f));
}
}
} catch {
// 디렉토리 읽기 실패 시 무시
}
let corrupted = false;
for (const file of jsonFiles) {
try {
const content = readFileSync(file, 'utf8');
JSON.parse(content);
} catch (e) {
console.warn(`⚠️ 손상된 캐시 발견: ${file}`);
console.warn(` ${e.message}`);
corrupted = true;
}
}
if (corrupted) {
console.warn('🗑️ .next 캐시를 삭제하고 재빌드합니다...');
rmSync(NEXT_DIR, { recursive: true, force: true });
}