fix(harness): CHANGELOG 한 버전 섹션 안 카테고리 헤딩 중복 검출
이슈 브랜치마다 working 버전 섹션 머리에 자기 ### Fixed 블록을 얹고 병합이 양쪽을 이어 붙여 sirsoft-ecommerce 1.2.1 에 Fixed·Changed 가 각 2회 남았다. 기존 판정기는 [Unreleased] 오용만 봐서 어느 훅에서도 검출되지 않았다. - check-changelog-section: 카테고리 헤딩 중복·버전 헤더 중복·허용 밖 카테고리 축 추가. working 섹션(+[Unreleased])만 차단, 공개 배포된 과거 섹션은 notice (--notices). 모집단에 lang-packs 포함 - validate-runner: 공개 CHANGELOG 편집 직후 그 파일만 검사해 즉시 알림 - stop-guard 7.6: 판정기·픽스처 편집 시 픽스처 자동 실행 (저장소 위반 0건이라 전수 실행이 공허 통과) - 픽스처 13건, 규정 4문서, coverage 항목 - ecommerce 1.2.1 두 번째 Fixed·Changed 블록을 첫 블록에 병합 (항목 삭제 0)
This commit is contained in:
@@ -982,6 +982,7 @@ Added/Changed/Fixed 내 항목이 10개를 초과하면 `####` 서브 헤딩으
|
||||
- `## [버전] - YYYY-MM-DD` 헤더 필수
|
||||
- `### Added` / `### Changed` / `### Fixed` / `### Removed` 카테고리 사용
|
||||
- 최신 버전이 파일 상단
|
||||
- 한 버전 섹션 안에 같은 카테고리 헤딩은 한 번만 — 브랜치마다 섹션 머리에 자기 `### Fixed` 블록을 얹고 병합이 양쪽을 이어 붙이면 같은 제목이 두 번 남는다. 항목은 기존 카테고리 블록 끝에 추가하고, 병합 뒤 두 번째 블록이 보이면 그 항목을 첫 블록에 합치고 헤딩만 지운다(항목 삭제 금지). 같은 버전 헤더 중복·허용 밖 카테고리도 같은 결함군이며 정적 검사가 working 버전 섹션에서 차단한다. 공개 배포된 과거 섹션은 소급 수정하지 않는다
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
```text
|
||||
1. 확장/코어 버전 업 시 CHANGELOG.md에 변경사항 기록 필수 (미기록 시 버전 업 불가)
|
||||
2. 형식: Keep a Changelog 표준 (## [버전] - 날짜 / ### 카테고리 / - 항목)
|
||||
2. 형식: Keep a Changelog 표준 (## [버전] - 날짜 / ### 카테고리 / - 항목) — 한 버전 안에 같은 카테고리 헤딩은 한 번만
|
||||
3. 허용 카테고리: Added, Changed, Deprecated, Removed, Fixed, Security
|
||||
4. 확장 위치: 각 확장의 루트 디렉토리 (modules/_bundled/vendor-module/CHANGELOG.md)
|
||||
5. 코어 위치: 프로젝트 루트 /CHANGELOG.md (코어 버전 변경 시 필수)
|
||||
@@ -75,6 +75,18 @@ composer test-smoke-ci
|
||||
- 변경사항 설명
|
||||
```
|
||||
|
||||
### 한 버전 섹션 안의 카테고리는 한 번만
|
||||
|
||||
브랜치마다 버전 섹션 머리에 자기 `### Fixed` 블록을 새로 얹으면, 병합이 양쪽을 그대로 이어 붙여 한 버전 안에 같은 카테고리 헤딩이 두 번 남는다. 오류도 경고도 없고, 렌더된 문서에서 같은 제목이 두 번 보이는 것이 유일한 증상이다.
|
||||
|
||||
- 새 항목은 **이미 있는 카테고리 블록 끝에** 추가한다 (같은 카테고리 헤딩을 새로 만들지 않는다)
|
||||
- 병합 뒤 두 번째 블록이 보이면 그 항목을 첫 블록에 합치고 **헤딩만** 지운다 (항목 삭제 금지)
|
||||
- 같은 버전 헤더(`## [1.2.1]`)도 한 번만 — 뒤 섹션의 내용을 앞 섹션에 합친다
|
||||
- 카테고리 헤딩은 §2 의 6종만 쓴다. 기능 단위 분류는 `####` 서브 헤딩으로 둔다
|
||||
- 이미 공개 배포된 과거 버전 섹션은 소급 수정하지 않는다
|
||||
|
||||
번들 확장은 정적 검사가 working 버전 섹션(+`[Unreleased]`)에서 이 조건을 차단한다. 제3자 확장에는 강제하지 않는다.
|
||||
|
||||
---
|
||||
|
||||
## 2. 카테고리 정의
|
||||
|
||||
@@ -10,11 +10,15 @@
|
||||
|
||||
- 상품 상세에서 옵션을 고른 뒤 「바로 구매」·「장바구니 담기」가 동작하지 않던 문제가 코어 7.0.10 과 함께 해소됩니다. 화면에는 고른 옵션이 목록에 담긴 것으로 보이는데 실제 요청에는 아무 옵션도 실리지 않아, 「바로 구매」는 오류로 끝나고 「장바구니 담기」는 「옵션을 선택해주세요」 안내만 반복됐습니다. 원인은 코어 화면 엔진에 있었으며 이 모듈의 코드는 바뀌지 않았습니다.
|
||||
- `sudo` 로 코어를 업데이트할 때 업그레이드 단계가 저장하는 설정 파일이 root 소유로 남을 수 있던 문제를 수정했습니다. 저장 뒤 폴더 소유자와 같게 맞춥니다.
|
||||
- 장바구니에서 수량을 바꾸면 배송 불가 안내와 주문 차단이 풀리던 문제를 수정했습니다. 선택한 배송 국가로 보낼 수 없는 상품이 담겨 있으면 주문이 막혀야 하는데, 수량을 한 번만 조정해도 그 잠금이 사라져 그대로 주문할 수 있었습니다. 수량 변경 응답이 장바구니 조회 응답보다 적은 정보를 담고 있었던 것이며, 이제 두 응답이 같은 내용을 돌려줍니다.
|
||||
- 비회원 주문의 결제 취소 기록이 주문번호만으로 실행되던 문제를 수정했습니다. 종전에는 로그인하지 않은 누구든 주문번호만 알면 다른 사람의 비회원 주문을 결제 취소 상태로 바꿀 수 있었습니다. 이제 비회원 주문 조회에 쓰는 것과 같은 본인 확인 절차를 거친 경우에만 처리되며, 그 밖의 요청은 주문을 찾을 수 없다는 응답으로 차단됩니다. 회원 주문은 종전과 같이 본인만 가능합니다. 비회원이 결제창에서 결제를 취소한 경우에는 주문 직후 발급된 본인 확인 정보로 종전처럼 취소 이력이 남습니다. (KISA 측에서 제보해주셨습니다 — KVE-2026-2041)
|
||||
- 상세설명을 편집기(HTML)로 작성한 상품을 등록하거나 수정할 때 저장이 실패하던 문제를 수정했습니다. 상품 설명의 보안 정화에 쓰는 구성요소가 모듈 설치 폴더 안에 자기 캐시 파일을 만들려 했기 때문에, 보안상 모듈 폴더에 쓰기를 막아 둔 서버에서는 저장이 항상 오류로 끝났고 다시 시도해도 같은 결과였습니다. 이제 이 캐시는 `storage` 폴더 아래에 만들어지며, 그 위치마저 쓸 수 없는 경우에는 캐시 없이 정화만 수행해 저장이 실패하지 않습니다(설명은 종전과 똑같이 정화됩니다). (#125 @lyg-kaban 님께서 제보해주셨습니다.)
|
||||
|
||||
### Changed
|
||||
|
||||
- 입금 기한 만료 주문 자동취소가 카드 등 결제창 결제까지 대상에 포함합니다. 종전에는 무통장입금·가상계좌만 정리되어, 결제창까지 갔으나 결제가 끝나지 않은 주문은 정리하는 주체가 없어 계속 남았습니다. 이제 주문 후 24시간이 지나면 함께 취소되며 미리 차감된 마일리지도 돌아옵니다. 결제가 이미 완료된 주문과 입금 대기 중인 가상계좌 주문은 대상이 아니며, 주문설정의 「만료 주문 자동취소」를 끄면 종전처럼 동작합니다.
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- 코어 최소 요구 버전을 7.0.10 으로 상향
|
||||
|
||||
### Added
|
||||
|
||||
@@ -23,16 +27,6 @@
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
- 환경설정 > 주문 설정 > 주문 자동취소 에 「결제 미완료 주문 만료 기준(분)」 입력이 추가되었습니다. 결제창까지 갔으나 결제가 끝나지 않은 주문을 몇 분 뒤에 정리할지 정하며, 0 으로 두면 그 부류는 정리하지 않습니다(기본 1440분 = 24시간). 종전에는 값만 있고 화면에서 조작할 수 없었습니다.
|
||||
|
||||
### Fixed
|
||||
|
||||
- 장바구니에서 수량을 바꾸면 배송 불가 안내와 주문 차단이 풀리던 문제를 수정했습니다. 선택한 배송 국가로 보낼 수 없는 상품이 담겨 있으면 주문이 막혀야 하는데, 수량을 한 번만 조정해도 그 잠금이 사라져 그대로 주문할 수 있었습니다. 수량 변경 응답이 장바구니 조회 응답보다 적은 정보를 담고 있었던 것이며, 이제 두 응답이 같은 내용을 돌려줍니다.
|
||||
- 비회원 주문의 결제 취소 기록이 주문번호만으로 실행되던 문제를 수정했습니다. 종전에는 로그인하지 않은 누구든 주문번호만 알면 다른 사람의 비회원 주문을 결제 취소 상태로 바꿀 수 있었습니다. 이제 비회원 주문 조회에 쓰는 것과 같은 본인 확인 절차를 거친 경우에만 처리되며, 그 밖의 요청은 주문을 찾을 수 없다는 응답으로 차단됩니다. 회원 주문은 종전과 같이 본인만 가능합니다. 비회원이 결제창에서 결제를 취소한 경우에는 주문 직후 발급된 본인 확인 정보로 종전처럼 취소 이력이 남습니다. (KISA 측에서 제보해주셨습니다 — KVE-2026-2041)
|
||||
- 상세설명을 편집기(HTML)로 작성한 상품을 등록하거나 수정할 때 저장이 실패하던 문제를 수정했습니다. 상품 설명의 보안 정화에 쓰는 구성요소가 모듈 설치 폴더 안에 자기 캐시 파일을 만들려 했기 때문에, 보안상 모듈 폴더에 쓰기를 막아 둔 서버에서는 저장이 항상 오류로 끝났고 다시 시도해도 같은 결과였습니다. 이제 이 캐시는 `storage` 폴더 아래에 만들어지며, 그 위치마저 쓸 수 없는 경우에는 캐시 없이 정화만 수행해 저장이 실패하지 않습니다(설명은 종전과 똑같이 정화됩니다). (#125 @lyg-kaban 님께서 제보해주셨습니다.)
|
||||
|
||||
### Changed
|
||||
|
||||
- 코어 최소 요구 버전을 7.0.10 으로 상향
|
||||
|
||||
## [1.2.0] - 2026-08-24
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user