chore(release): 7.0.7 공개 릴리즈 사전점검 정비 — 누출 단서 주석 정리 + 태그 관례 정합

- 공개 릴리즈 누출 검사 error 3건 해소: 소스 주석의 내부 규정 파일명·내부 스크립트
 경로 참조를 공개 문서 참조/도구 비귀속 표현으로 교체
- warn 4건 해소: 테스트·주석의 내부 역할 호칭을 "운영 실측 제보" 로 정리
- 릴리즈 스크립트(코어·확장)의 버전 태그를 공개 저장소 기존 태그 관례(v 접두사 없음)에
 정합 — 접두사 혼재로 태그 시리즈가 갈라지는 것을 차단
This commit is contained in:
HeuJung
2026-08-17 21:36:15 +09:00
parent 3ee37e8399
commit ed985dd175
7 changed files with 10 additions and 7 deletions
+2 -1
View File
@@ -150,7 +150,8 @@ class LanguagePackRepository implements LanguagePackRepositoryInterface
public function allForUpdateCheck(): Collection
{
// audit:allow query-unbounded-get reason: 언어팩은 운영자가 설치한 팩 수만큼만 존재하는
// 설정성 테이블이다 (사용량과 무관) — CLAUDE.md pagination 예외 조항
// 설정성 테이블이다 (사용량과 무관) — 대용량 목록 페이지네이션 규정의 설정성
// 테이블 예외 조항 (docs/backend/pagination.md)
return LanguagePack::query()->orderBy('identifier')->get();
}
@@ -241,7 +241,7 @@ class EcommerceInquiryHookListenerTest extends BoardTestCase
]);
// null(무응답/실패)이 아닌 중복 마커 — 호출 서비스가 "이미 등록된 답변" 사유로
// 변환한다. null 로 되돌리면 사유가 generic 실패로 위장된다 (PO 실측 제보 회귀).
// 변환한다. null 로 되돌리면 사유가 generic 실패로 위장된다 (운영 실측 제보 회귀).
$this->assertSame(
['duplicate' => true],
$result,
@@ -1,5 +1,7 @@
/**
* 환경설정 탭별 개별 저장 패턴 검증 테스트
* e2e:allow 테스트 설명 문구만 변경(공개 릴리즈 사전점검 — 내부 호칭 정리).
* 런타임 코드/레이아웃 무변경이라 브라우저 동작 차이가 없다.
*
* @description
* - 저장 버튼의 apiCall body가 활성 탭 데이터만 전송하는지 검증
@@ -93,7 +95,7 @@ describe('환경설정 탭별 개별 저장 패턴 검증', () => {
expect(body).toContain("'basic_info'");
});
it('저장 실패 토스트가 서버 오류 메시지를 노출해야 한다 (회귀 — PO 실측 제보)', () => {
it('저장 실패 토스트가 서버 오류 메시지를 노출해야 한다 (회귀 — 운영 실측 제보)', () => {
// 고정 문구만 쓰면 검증 실패 사유(예: 필드별 422 메시지)가 사용자에게
// 도달하지 못하고 "설정 저장에 실패했습니다" 로 뭉개진다.
const apiCallAction = findActionByHandler(saveButton.actions, 'apiCall');
@@ -740,7 +740,7 @@ class ProductInquiryService
// 2차 방어(리스너, 게시판 실데이터)가 중복을 감지하면 중복 마커를 돌려준다.
// 경합 경로(피벗 is_answered 가 아직 false)에서도 사유를 보존해 422 로 안내
// — null 과 합치면 "답변 등록에 실패했습니다" 로 위장된다 (PO 실측 제보).
// — null 과 합치면 "답변 등록에 실패했습니다" 로 위장된다 (운영 실측 제보).
if (is_array($postResult) && ! empty($postResult['duplicate'])) {
throw new ProductInquiryOperationException('sirsoft-ecommerce::messages.inquiries.reply_already_exists');
}
@@ -325,7 +325,7 @@ class UserProductInquiryControllerTest extends ModuleTestCase
}
/**
* 경합 경로의 중복도 사유가 보존된다 (회귀 — PO 실측 제보).
* 경합 경로의 중복도 사유가 보존된다 (회귀 — 운영 실측 제보).
*
* 동시 등록 경합에서는 피벗 is_answered 가 아직 false 라 1차 방어를 통과하고,
* 게시판 리스너의 2차 방어(실데이터 기준)가 중복을 감지한다. 종전에는 리스너가
@@ -29,7 +29,7 @@ use Tests\TestCase;
*
* 축 요약(마커 아님 — 평문): actor 는 sub_admin·super_admin, operation 은 modify·status·
* unlock·grant_permission·assign_role·remove_role·update_role·toggle_role, outcome 은 blocked·allowed 다.
* 이 요약을 클래스 레벨 `@scenario` 로 적으면 파서(.claude/scripts/lib/test-scenario.cjs)가
* 이 요약을 클래스 레벨 `@scenario` 로 적으면 시나리오 마커 파서가
* `=` 없는 토큰을 버리고 첫 값만 취해 **실재하지 않는 조합 1건**으로 집계한다 — 커버리지를
* 부풀리는 방향이라 요약은 반드시 평문으로 둔다. 실제 커버는 메서드 레벨 마커가 담당한다.
*/
@@ -29,7 +29,7 @@ use Tests\TestCase;
* 교차하지 않는 별개 관심사라 축으로 올리면 어떤 조합도 관측 지점을 갖지 못합니다 —
* 그래서 축이 아니라 sub_flow 이고, 커버는 아래 메서드들의 효과 마커가 담당합니다.
*
* 주의: 산문에 마커 문법을 그대로 인용하면 파서(.claude/scripts/lib/test-scenario.cjs)가
* 주의: 산문에 마커 문법을 그대로 인용하면 시나리오 마커 파서가
* 그 문장을 마커로 읽어 실재하지 않는 조합을 만듭니다. 마커 이름은 평문으로만 언급합니다.
*
* 효과 요약(마커 아님 — 평문): every_extension_type_declaration_is_collected,