• 5.14.0

    5.14.0 주요 변경사항

    migration 제거(backend·crawler·운영 스크립트)

    • TypeORM migration 28개와 migrationsRun 설정, upgrade runner·검증기를 제거했습니다. sql/init-db.sql이 유일한 schema 기준이며, 새 설치는 이 파일만으로 현재 운영과 같은 schema를 받습니다(제거 전 fresh catalog가 28개 migration 적용 결과와 동일함을 확인).
    • schema 검증(run-schema.ps1)이 entity 컬럼 타입·NULL·enum·FK·기본값, SQL 소유 index 28개의 정의, shared 생성 SQL의 독립 적용 결과까지 init-db.sql과 대조합니다.
    • ops/deploy-production.sh는 crawler를 미리 멈추거나 migration을 기다리지 않습니다. crawler는 자기 단계에서 교체될 때 checkpoint에 멈춘 뒤 새 이미지로 재개합니다. ops/production-audit.sh·ops/compat-state-audit.sql에서 migration 항목을 제거했습니다.

    중복 관리 작품 용량 수정(backend·web)

    • GET /api/duplicates/review-groups가 작품마다 storedBytes(원장의 ready 원본 크기 합, 없으면 0)를 추가로 내려주고, 운영 화면 중복 관리가 이 값을 표시합니다. 이전에는 Hitomi 작품에 채워지지 않는 galleries.fileSize(bigint 문자열 "0")를 그대로 표시해 모두 0 B로 보였습니다. reclaimableBytes 의미는 그대로입니다.

    기본 블랙리스트·태그 번역(shared)

    • 기본 전역 블랙리스트 태그 seed를 운영 내보내기 기준 152개로 갱신했습니다(추가 artist:borikori·artist:campbell gichou·artist:gfrp·artist:taejaho·artist:tsutsumi akari·forniphilia, 제거 tomgirl). 새 설치에만 적용되며 기존 DB의 규칙은 바뀌지 않습니다.
    • 누락 태그 50개에 공식 한국어 명칭 기준 번역을 추가했고, 작가 태그 taikou는 원문 유지, 공식 출처가 없는 63개는 보류 목록으로 고정했습니다.

    기존 설치의 schema는 이미 같아 필수 수동 전환이 없고 새 API 필드·번역이 추가되므로 minor 5.14.0으로 게시합니다. compose.yml·.env.example·Dockerfile은 5.13.0과 같습니다.

    이미지 게시 범위

    • 새로 빌드(5.14.0·latest): backend·crawler·web. shared(blacklist.ts·translations/·server/duplicate-scan-store.ts·schema-verifier.ts)가 바뀌어 세 앱의 빌드 입력이 달라졌고, backend는 migration 삭제·database.config.ts·중복 검토 서비스, crawler는 schema 검증·entity 기본값, web은 중복 관리 화면·태그 번역이 바뀌었습니다.
    • digest 재사용: nginx(5.10.0 digest), byedpi(5.4.0 digest). 빌드 입력이 같아 기존 digest에 5.14.0·latest 태그만 붙였습니다.
    • 다섯 이미지 모두 5.14.0 태그가 있으므로 IMAGE_TAG=5.14.0으로 고정할 수 있습니다.

    NAS 업데이트와 주의사항

    운영은 운영 반영을 따릅니다.

    • backend 기동 시 migration을 실행하지 않습니다. 기존 DB의 migrations·typeorm_metadata 테이블은 남아 있어도 무해하며, 삭제는 기존 설치 schema 반영의 선택 SQL로 할 수 있습니다. 삭제하면 5.13.0 이하로 되돌릴 때 migration이 다시 실행되므로 되돌리기 전에는 지우지 않습니다.
    • 새 ops/deploy-production.sh는 crawler를 미리 정지하지 않습니다. 실행 중인 수집 job은 crawler 교체 시 checkpoint에서 멈추고 새 crawler가 재개합니다. 운영 화면에서 job 상태를 확인합니다.
    • backend와 web은 함께 배포합니다. 옛 web과 새 backend 조합은 storedBytes를 무시하고 0 B를 유지하며, 새 web과 옛 backend 조합은 용량을 정보 없음으로 표시합니다.
    • compose.yml·.env.example은 5.13.0과 같아 이미지와 ops/·sql/ 파일만 바뀝니다.
    • rollback: 5.13.0 이미지는 다섯 서비스 모두 레지스트리에 있어 IMAGE_TAG=5.13.0으로 되돌릴 수 있습니다(migrations 테이블을 지우지 않았다면 schema 변경 없음).

    5.13.0 대비 전체 변경

    검증

    • 각 브랜치(migration 제거·블랙리스트·번역·중복 용량)에서 run-unit.ps1 -Workspace all, run-integration.ps1, run-schema.ps1이 통과했고, migration 삭제 직전 a3c20428에서 fresh init-db.sql catalog가 28개 migration 적용 결과와 동일함을 run-schema.ps1로 확인했습니다. 블랙리스트 격리 compose 검증, schema 검증 변이 4종 탐지 확인, 배포 스크립트 mock 검증이 통과했습니다. 네 브랜치는 gpt-6.1-sol 읽기 전용 리뷰(승인, P2 지적은 수정 후 재검)를 거쳤습니다.
    • 병합 main 38de95b5: 개발 backend·web 재빌드, run-translation-coverage.ps1(미번역 103개 모두 보류 판정), 저장소 Markdown 23개 링크·anchor 검사 0오류, git diff --check. 릴리스 commit에서 update-base-images.ps1(기반 이미지 digest 최신).
    • NOT RUN: run-compose-compat.ps1(compose.yml·Dockerfile 변경 없음), 이미지 검색·운영 UI 격리 검증(중복 관리 화면 시각 확인), crawler·network runner, 실브라우저 확인, 운영 규모의 storedBytes 집계 실측.

    게시 확인

    • 릴리스 소스: 6ffd65f9 (annotated Git 태그 5.14.0 대상, 앱 코드는 38de95b5와 같음).
    • backend 5.14.0·latest(새 빌드): sha256:4809c97fbda729ff89690f8fbda1fa9149e6126f2e48865b76d9731cd7cc7525
    • crawler 5.14.0·latest(새 빌드): sha256:d69cee16dfd4c6a73449b5835a32cae4d8707375587980f59cf91495d441eaf3
    • web 5.14.0·latest(새 빌드): sha256:1f0fc9a49898b4c977084333feb9a05e77cd64832993899e7658db1847f2d382
    • nginx 5.14.0·latest(5.10.0 digest 재사용): sha256:552b18eddb10c22b7dbfaee60a6e1bacd20f8b004892c8209f3b48f508c3a780
    • byedpi 5.14.0·latest(5.4.0 digest 재사용): sha256:04cf2838499d67a033a3c3101913563bf983e551fee27b891dab0d2f75a4233a
    • ops/publish-images.ps1 -Version 5.14.0 -Publish가 첫 실행에서 완료됐고 다섯 서비스의 5.14.0·latest 일치를 확인했습니다(Registry tags verified for 5.14.0.).
    Downloads 2