Files
sam-api/CURRENT_WORKS.md
hskwon 80ca551026 feat: 소프트삭제 및 타임스탬프 감사 컬럼 추가
- deleted_at이 있는 30개 테이블에 deleted_by 추가
- created_at이 있는 38개 비즈니스 테이블에 created_by, updated_by 추가
- 시스템 테이블 제외
- nullable, COMMENT 포함
- 롤백(down) 메서드 구현
2025-11-24 19:30:23 +09:00

3.8 KiB

SAM API 작업 현황

2025-11-24 (일) - 소프트삭제 및 타임스탬프 감사 컬럼 추가

작업 목표

  • deleted_at이 있는 테이블에 deleted_by 컬럼 추가
  • created_at, updated_at이 있는 테이블에 created_by, updated_by 컬럼 추가

작업 내용

1. DB 스키마 분석 (INFORMATION_SCHEMA 쿼리)

  • deleted_at은 있지만 deleted_by가 없는 테이블: 30개
  • created_at은 있지만 created_by, updated_by가 없는 테이블: 45개

2. 마이그레이션 생성

  • 2025_11_24_192518_add_deleted_by_to_soft_delete_tables.php

    • 30개 테이블에 deleted_by 추가
    • nullable, COMMENT('삭제자 사용자 ID')
    • after('deleted_at') 배치
  • 2025_11_24_192518_add_audit_columns_to_tables.php

    • 38개 비즈니스 테이블에 created_by, updated_by 추가
    • 시스템 테이블 제외 (jobs, job_batches, password_reset_tokens, personal_access_tokens, taggables, tags)
    • nullable, COMMENT
    • after('updated_at'), after('created_by') 배치

3. 마이그레이션 실행 및 검증

  • 실행 시간: deleted_by (429.53ms), audit_columns (1초)
  • 샘플 테이블 검증: users, products, models, bom_templates, department_user 모두 정상

추가된 파일

  • database/migrations/2025_11_24_192518_add_deleted_by_to_soft_delete_tables.php
  • database/migrations/2025_11_24_192518_add_audit_columns_to_tables.php

마이그레이션 상태

  • Batch 25로 실행 완료
  • 롤백 가능 (down 메서드 구현)

2025-11-24 (일) - CORS Preflight 문제 해결

문제 상황

  • React 프론트엔드(http://192.0.0.2:3001)에서 API 호출 시 CORS 에러
  • 에러: Request header field x-api-key is not allowed by Access-Control-Allow-Headers in preflight response
  • 서버 로그: OPTIONS 요청만 있고 Response 로그 없음 (401 차단)

근본 원인 (root-cause-analyst 스킬 활용)

  1. CorsMiddleware에서 Access-Control-Allow-HeadersX-API-KEY 누락
  2. OPTIONS 요청(Preflight)이 ApiKeyMiddleware에서 401로 차단
  3. 브라우저는 커스텀 헤더 사용 시 Preflight 요청을 자동 전송

해결 방안

CorsMiddleware 수정:

  • OPTIONS 요청을 미들웨어 체인 진입 전에 즉시 200 OK 처리
  • Access-Control-Allow-HeadersX-API-KEY 추가
  • PATCH 메서드 추가, Max-Age 86400초 설정

ApiKeyMiddleware 정리:

  • 불필요한 OPTIONS 체크 제거

CORS 설정 업데이트:

  • config/cors.php: exposed_headers, max_age 설정

수정된 파일

  • app/Http/Middleware/CorsMiddleware.php
  • app/Http/Middleware/ApiKeyMiddleware.php
  • config/cors.php

Git 커밋

  • 2e96660 - CORS preflight 요청 처리 개선 및 X-API-KEY 헤더 허용
  • 8e8ab65 - CORS preflight 응답에 x-api-key 헤더 허용 추가

다음 작업

  • React에서 API 호출 테스트
  • 개발 서버 로그 확인 (Request/Response 쌍 기록 여부)

2025-11-20 (수) - ItemMaster API 테스트 및 버그 수정

주요 작업

  • ItemMaster API 통합 테스트 작성 (12개 테스트, 82개 assertion)
  • 누락된 마이그레이션 실행 (section_templates, tab_columns)
  • API Key 미들웨어 수정 (로그인 엔드포인트 API Key 필수화)
  • ReorderRequest validation 수정 (범용성 확보)
  • 네임스페이스 오류 수정 (5개 Controller)
  • Route 순서 수정 (specific route 우선)

테스트 결과

12/12 테스트 통과 (100%)


2025-11-19 (화) - ItemMaster API Swagger 문서 작성

주요 작업

  • ItemMaster 전체 API (32개 엔드포인트) Swagger 문서화 완료
  • OpenAPI 3.0 표준 준수
  • Model Schemas 8개, Request Schemas 12개 작성

2025-11-18 (월) - Category API 테스트 및 개선

주요 작업

  • Category CRUD 테스트 작성 (9개 테스트, 98개 assertion)
  • 계층 구조 및 필드 관리 테스트
  • Validation 로직 개선