feat(core,extensions): 확장 진입 문서 제목에 그누보드7 확장 유형 표기
번들 확장 README 제목이 manifest 확장명 그대로(「게시판」)라 그 문서만 연
사람이 그누보드7의 확장인지, 모듈인지 템플릿인지 알 수 없었다.
README · AGENTS.md · docs/README.md 진입 문서 60개의 제목을
「그누보드7 {확장명} {유형}」 으로 바꾸고, 조립 규칙을 ExtensionInventory::docTitle
한 곳에 두어 골격 생성기와 계약 테스트가 같은 헬퍼를 쓰게 했다.
확장명이 이미 유형으로 끝나면 겹쳐 붙이지 않는다.
공개 규정에는 번들 확장 전용 관례임을 주어로 명시하고 제3자 확장에는
요구하지 않는다는 문장을 두었다. 언어팩은 README 가 없어 대상 밖이다.
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
- 템플릿 컴포넌트 정의·다국어·라우트 응답에 조건부 캐시(ETag)가 적용되어, 변경이 없으면 본문 전송 없이 캐시를 재사용합니다. (#122 @glitter-gim 님께서 건의해주셨습니다.)
|
||||
- 레이아웃 편집기를 여는 중 네트워크가 잠시 끊겨도 자동으로 다시 시도합니다. 끝내 실패하면 내부 파일 경로 대신 다음에 무엇을 하면 되는지를 안내합니다.
|
||||
- 확장 문서에서 제품을 가리키는 이름이 「그누보드7」로 통일되었습니다. 종전에는 같은 문서 안에서도 약칭과 정식 명칭이 섞여, 확장만 내려받은 사람에게 별개 제품처럼 보였습니다.
|
||||
- 동봉 확장의 문서 제목이 「그누보드7 {확장명} {유형}」(예: 「그누보드7 게시판 모듈」) 형식으로 통일되었습니다. 종전에는 확장명만 제목이라 그 문서만 연 사람이 그누보드7의 확장인지, 모듈인지 템플릿인지 알 수 없었습니다. 새 확장의 문서 골격도 같은 형식의 제목으로 생성되며, 직접 만든 확장에는 이 표기를 요구하지 않습니다.
|
||||
- 번들 템플릿의 컴포넌트·핸들러·레이아웃 상세 문서와 확장이 사용하는 활동 로그 항목 목록이 각 확장의 문서로 옮겨졌습니다. 확장이 기능을 늘릴 때 코어 문서를 함께 고쳐야 하던 의존이 사라졌으며, 코어 문서에는 총계와 각 확장 문서로의 링크만 남습니다.
|
||||
|
||||
### Security
|
||||
|
||||
@@ -2143,7 +2143,7 @@ class ExtensionDocScaffolder
|
||||
$label = ExtensionInventory::typeLabel($record['type']);
|
||||
|
||||
$lines = [];
|
||||
$lines[] = "# {$name} — 에이전트 가이드";
|
||||
$lines[] = '# '.ExtensionInventory::docTitle($name, $record['type']).' — 에이전트 가이드';
|
||||
$lines[] = '';
|
||||
$lines[] = "> 이 문서는 이 {$label}을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.";
|
||||
$lines[] = '';
|
||||
@@ -2307,8 +2307,10 @@ class ExtensionDocScaffolder
|
||||
// 대등하게 병렬로 존재하는 구성요소이고, 각자가 코어와 같은 히어로 브랜딩을 받으면
|
||||
// "이 확장이 곧 독립 프로젝트" 라는 착시를 준다. `@generated:badges` 블록의
|
||||
// flat-square 정보 배지는 manifest 에서 오는 것이라 그대로 둔다.
|
||||
// 제목은 확장명만이 아니라 「그누보드7 {확장명} {유형}」 이다 (PO 결정 2026-09-04) —
|
||||
// 이 문서만 연 사람이 그누보드7의 어떤 종류 확장인지 제목에서 알 수 있어야 한다.
|
||||
$lines = [];
|
||||
$lines[] = '# '.$name;
|
||||
$lines[] = '# '.ExtensionInventory::docTitle($name, $record['type']);
|
||||
$lines[] = '';
|
||||
$lines[] = "**그누보드7 {$label} · {$record['id']}**";
|
||||
$lines[] = $this->escape($description);
|
||||
@@ -2423,7 +2425,7 @@ class ExtensionDocScaffolder
|
||||
$record = $ctx['record'];
|
||||
|
||||
$lines = [];
|
||||
$lines[] = "# {$record['name']} 개발자 문서";
|
||||
$lines[] = '# '.ExtensionInventory::docTitle($record['name'], $record['type']).' 개발자 문서';
|
||||
$lines[] = '';
|
||||
$lines[] = "> {$record['relPath']} · ".ExtensionInventory::typeLabel($record['type']);
|
||||
$lines[] = '';
|
||||
|
||||
@@ -277,6 +277,42 @@ class ExtensionInventory
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 진입 문서(README · AGENTS.md · docs/README.md)의 제목을 만듭니다.
|
||||
*
|
||||
* 확장명만 제목으로 두면(`# 게시판`) 제3자가 그 문서만 열었을 때 이것이 그누보드7의
|
||||
* 확장인지, 모듈인지 템플릿인지 알 수 없다(PO 결정 2026-09-04). 그래서 제목은
|
||||
* 「그누보드7 {확장명} {유형}」 으로 조립한다 — 「그누보드7 게시판 모듈」.
|
||||
*
|
||||
* 확장명이 이미 유형으로 끝나면(「Hello 모듈」·「Hello User Template」) 유형을 겹쳐
|
||||
* 붙이지 않는다 — 「그누보드7 Hello 모듈 모듈」 이 되기 때문이다. 영문 유형명도 같은
|
||||
* 판정을 받는다(샘플 템플릿의 이름이 영문이다).
|
||||
*
|
||||
* @param string $name manifest 에서 해석한 확장명
|
||||
* @param string $type 확장 유형
|
||||
* @return string 문서 제목
|
||||
*/
|
||||
public static function docTitle(string $name, string $type): string
|
||||
{
|
||||
$label = self::typeLabel($type);
|
||||
$name = trim($name);
|
||||
|
||||
$english = match ($type) {
|
||||
self::TYPE_MODULE => 'module',
|
||||
self::TYPE_PLUGIN => 'plugin',
|
||||
self::TYPE_TEMPLATE => 'template',
|
||||
default => '',
|
||||
};
|
||||
|
||||
$lower = mb_strtolower($name);
|
||||
$alreadyTyped = str_ends_with($name, $label)
|
||||
|| ($english !== '' && str_ends_with($lower, $english));
|
||||
|
||||
return $alreadyTyped
|
||||
? '그누보드7 '.$name
|
||||
: '그누보드7 '.$name.' '.$label;
|
||||
}
|
||||
|
||||
/**
|
||||
* manifest 의 name 을 한국어 우선으로 해석합니다.
|
||||
*
|
||||
|
||||
@@ -121,13 +121,28 @@ mermaid 문법 오류는 렌더 시점에만 드러나므로, 새 형식을 도
|
||||
것처럼 보인다. `@generated:badges` 블록의 버전·유형·코어 제약·라이선스 배지는 manifest 에서
|
||||
오는 정보 표시이므로 그대로 둔다.
|
||||
|
||||
```markdown
|
||||
# 페이지
|
||||
번들 확장의 제목은 확장명만이 아니라 **「그누보드7 {확장명} {유형}」** 이다 — 「그누보드7 페이지
|
||||
모듈」·「그누보드7 Basic 템플릿」·「그누보드7 GDPR 플러그인」. 확장명만 제목으로 두면(`# 페이지`)
|
||||
그 문서만 연 사람이 이것이 그누보드7의 확장인지, 모듈인지 템플릿인지 알 수 없다. 확장명이 이미
|
||||
유형으로 끝나면(「Hello 모듈」) 유형을 겹쳐 붙이지 않는다. 진입 문서 세 곳이 같은 제목을 쓴다 —
|
||||
`README.md` 는 그 제목 그대로, `AGENTS.md` 는 `— 에이전트 가이드`, `docs/README.md` 는
|
||||
`개발자 문서` 를 뒤에 붙인다. `docs/` 안의 하위 문서(아키텍처·데이터 모델 등)는 이미 상위
|
||||
문서 안에 있으므로 확장명만 쓴다.
|
||||
|
||||
**G7 모듈 · sirsoft-page**
|
||||
제3자 확장에는 이 표기를 요구하지 않는다. 확장의 이름과 브랜딩은 그 저작자의 것이다.
|
||||
`ext:docgen --init` 이 같은 형식을 기본 제목으로 깔아 주지만 바꿔도 된다 — 제목만 보고도
|
||||
그누보드7의 확장이며 어떤 유형인지 알 수 있으면 충분하다.
|
||||
|
||||
```markdown
|
||||
# 그누보드7 페이지 모듈
|
||||
|
||||
**그누보드7 모듈 · sirsoft-page**
|
||||
정적 페이지(정보/정책/안내) 관리 모듈
|
||||
```
|
||||
|
||||
제목 조립 규칙의 단일 출처는 골격 생성기가 쓰는 헬퍼이고, 계약 테스트가 **번들 확장** 전수와
|
||||
생성기 출력을 같은 헬퍼로 대조한다 — 규칙을 문서·생성기·검사에 각각 적으면 한쪽만 고쳐 어긋난다.
|
||||
|
||||
## 4. 자동 생성 블록 규약
|
||||
|
||||
생성기는 **마커 안쪽만** 쓴다.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 모듈 — 에이전트 가이드
|
||||
# 그누보드7 Hello 모듈 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 모듈을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
|
||||
- 설정 파일의 프론트엔드 자산 항목이 문서화된 형식과 다른 목록형으로 적혀 있어 예제로 삼으면 스크립트가 로드되지 않는 형태였습니다. 선언할 자산이 없어 항목을 제거했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [0.1.1] - 2026-08-10
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 모듈
|
||||
# 그누보드7 Hello 모듈
|
||||
|
||||
**그누보드7 모듈 · gnuboard7-hello_module**
|
||||
학습용 최소 샘플 모듈 (Memo CRUD)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 모듈 개발자 문서
|
||||
# 그누보드7 Hello 모듈 개발자 문서
|
||||
|
||||
> modules/_bundled/gnuboard7-hello_module · 모듈
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 게시판 — 에이전트 가이드
|
||||
# 그누보드7 게시판 모듈 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 모듈을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
- 게시판 환경설정 > 게시판 설정 > 일괄 적용에서 [일괄 적용] 확인 창의 「적용할 항목」 목록이 아무것도 표시되지 않던 문제를 고쳤습니다. 이제 선택한 항목이 기본/목록/게시글/댓글/첨부파일/알림/권한 설정별로 묶여 표시되므로, 무엇이 적용되는지 확인한 뒤 실행할 수 있습니다.
|
||||
- 위 목록에서 「금지어」 항목만 이름 대신 내부 식별자가 표시되던 문제를 고쳤습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.1.0] - 2026-08-24
|
||||
|
||||
### Added
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 게시판
|
||||
# 그누보드7 게시판 모듈
|
||||
|
||||
**그누보드7 모듈 · sirsoft-board**
|
||||
게시판 관리를 위한 모듈
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 게시판 개발자 문서
|
||||
# 그누보드7 게시판 모듈 개발자 문서
|
||||
|
||||
> modules/_bundled/sirsoft-board · 모듈
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 이커머스 — 에이전트 가이드
|
||||
# 그누보드7 이커머스 모듈 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 모듈을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
### Changed
|
||||
|
||||
- 입금 기한 만료 주문 자동취소가 카드 등 결제창 결제까지 대상에 포함합니다. 종전에는 무통장입금·가상계좌만 정리되어, 결제창까지 갔으나 결제가 끝나지 않은 주문은 정리하는 주체가 없어 계속 남았습니다. 이제 주문 후 24시간이 지나면 함께 취소되며 미리 차감된 마일리지도 돌아옵니다. 결제가 이미 완료된 주문과 입금 대기 중인 가상계좌 주문은 대상이 아니며, 주문설정의 「만료 주문 자동취소」를 끄면 종전처럼 동작합니다.
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
### Added
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 이커머스
|
||||
# 그누보드7 이커머스 모듈
|
||||
|
||||
**그누보드7 모듈 · sirsoft-ecommerce**
|
||||
그누보드7 이커머스 모듈 - 상품, 주문, 결제 관리
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 이커머스 개발자 문서
|
||||
# 그누보드7 이커머스 모듈 개발자 문서
|
||||
|
||||
> modules/_bundled/sirsoft-ecommerce · 모듈
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 페이지 — 에이전트 가이드
|
||||
# 그누보드7 페이지 모듈 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 모듈을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.1.0] - 2026-08-24
|
||||
|
||||
### Added
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 페이지
|
||||
# 그누보드7 페이지 모듈
|
||||
|
||||
**그누보드7 모듈 · sirsoft-page**
|
||||
정적 페이지(정보/정책/안내) 관리 모듈
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 페이지 개발자 문서
|
||||
# 그누보드7 페이지 모듈 개발자 문서
|
||||
|
||||
> modules/_bundled/sirsoft-page · 모듈
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 플러그인 — 에이전트 가이드
|
||||
# 그누보드7 Hello 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [0.1.1] - 2026-08-17
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 플러그인
|
||||
# 그누보드7 Hello 플러그인
|
||||
|
||||
**그누보드7 플러그인 · gnuboard7-hello_plugin**
|
||||
학습용 최소 샘플 플러그인 (Hello 모듈 훅 소비)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 플러그인 개발자 문서
|
||||
# 그누보드7 Hello 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/gnuboard7-hello_plugin · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# CKEditor 5 WYSIWYG 에디터 — 에이전트 가이드
|
||||
# 그누보드7 CKEditor 5 WYSIWYG 에디터 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
- 에디터 스타일과 본문 스타일을 불러오지 못했을 때 아무 표시 없이 서식만 깨지던 문제를 고쳤습니다. 이제 다시 시도한 뒤에도 실패하면 화면에 알립니다.
|
||||
- 번역 파일을 불러오지 못하면 아무 기록 없이 영어로 표시되던 동작에 경고 기록을 남기고, 일시적인 실패는 다시 시도합니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
### Security
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# CKEditor 5 WYSIWYG 에디터
|
||||
# 그누보드7 CKEditor 5 WYSIWYG 에디터 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-ckeditor5**
|
||||
CKEditor 5를 이용한 WYSIWYG 에디터 플러그인입니다. 플러그인 설치만으로 기존 HtmlEditor가 교체됩니다.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# CKEditor 5 WYSIWYG 에디터 개발자 문서
|
||||
# 그누보드7 CKEditor 5 WYSIWYG 에디터 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-ckeditor5 · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Daum 우편번호 — 에이전트 가이드
|
||||
# 그누보드7 Daum 우편번호 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
- 주소 검색 서비스를 불러오지 못한 상태에서 우편번호·주소 입력란이 읽기 전용으로 고정되어, 검색도 직접 입력도 할 수 없던 문제를 고쳤습니다. 이제 검색을 쓸 수 있을 때만 읽기 전용이 되고, 그렇지 않으면 직접 입력할 수 있습니다.
|
||||
- [주소 검색] 버튼이 아무 반응도 없던 경우에 안내와 [다시 시도] 를 표시합니다. 종전에는 클릭이 먹지 않는 것으로만 보였습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Daum 우편번호
|
||||
# 그누보드7 Daum 우편번호 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-daum_postcode**
|
||||
Daum 우편번호 서비스를 통한 주소 검색 기능을 제공하는 플러그인입니다. API 키 없이 무료로 사용할 수 있습니다.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Daum 우편번호 개발자 문서
|
||||
# 그누보드7 Daum 우편번호 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-daum_postcode · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GDPR (일반 데이터 보호 규정) — 에이전트 가이드
|
||||
# 그누보드7 GDPR (일반 데이터 보호 규정) 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
- 세션 쿠키 이름을 기본값(`laravel_session`)에서 바꾼 사이트에서, 브라우저 쪽 필수 목록의 세션 쿠키 항목이 실제 쿠키와 이름이 달라 동작하지 않던 문제를 수정했습니다. 이제 서버 설정에서 이름을 읽습니다.
|
||||
- 쿠키 목록에서는 `이름_*` 형태의 앞부분 매칭이 동작하지 않던 문제를 수정했습니다. 브라우저 저장소 목록과 동일하게 동작합니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.3] - 2026-08-19
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GDPR
|
||||
# 그누보드7 GDPR (일반 데이터 보호 규정) 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-gdpr**
|
||||
GDPR·개인정보보호법 대응 쿠키 동의 배너와 동의 이력 관리를 제공하는 플러그인
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GDPR (일반 데이터 보호 규정) 개발자 문서
|
||||
# 그누보드7 GDPR (일반 데이터 보호 규정) 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-gdpr · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 마케팅 동의 — 에이전트 가이드
|
||||
# 그누보드7 마케팅 동의 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.3] - 2026-08-22
|
||||
|
||||
### Security
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 마케팅 동의
|
||||
# 그누보드7 마케팅 동의 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-marketing**
|
||||
이메일 구독, 마케팅 동의, 제3자 제공 동의 등을 관리하는 플러그인
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 마케팅 동의 개발자 문서
|
||||
# 그누보드7 마케팅 동의 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-marketing · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 비즈뿌리오 메시지 발송 — 에이전트 가이드
|
||||
# 그누보드7 비즈뿌리오 메시지 발송 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.0] - 2026-08-24
|
||||
|
||||
### Added
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 비즈뿌리오 메시지 발송
|
||||
# 그누보드7 비즈뿌리오 메시지 발송 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-message_bizppurio**
|
||||
비즈뿌리오 연동 SMS/LMS·카카오 알림톡 발송 플러그인입니다. 코어 알림 시스템 채널로 문자·알림톡을 발송하고 발송 결과를 webhook 으로 수신합니다.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 비즈뿌리오 메시지 발송 개발자 문서
|
||||
# 그누보드7 비즈뿌리오 메시지 발송 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-message_bizppurio · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# KG 이니시스 — 에이전트 가이드
|
||||
# 그누보드7 KG 이니시스 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.1.2] - 2026-08-22
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# KG 이니시스
|
||||
# 그누보드7 KG 이니시스 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-pay_kginicis**
|
||||
KG 이니시스 표준결제를 sirsoft-ecommerce 에 연결하는 결제 플러그인
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# KG 이니시스 개발자 문서
|
||||
# 그누보드7 KG 이니시스 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-pay_kginicis · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NHN KCP — 에이전트 가이드
|
||||
# 그누보드7 NHN KCP 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.3] - 2026-08-22
|
||||
|
||||
### Security
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NHN KCP
|
||||
# 그누보드7 NHN KCP 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-pay_nhnkcp**
|
||||
NHN KCP Standard Pay 결제를 sirsoft-ecommerce 에 연결하는 결제 플러그인
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NHN KCP 개발자 문서
|
||||
# 그누보드7 NHN KCP 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-pay_nhnkcp · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 나이스페이먼츠 — 에이전트 가이드
|
||||
# 그누보드7 나이스페이먼츠 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
### Security
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NicePayments
|
||||
# 그누보드7 나이스페이먼츠 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-pay_nicepayments**
|
||||
나이스페이먼츠 결제를 sirsoft-ecommerce 에 연결하는 결제 플러그인
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 나이스페이먼츠 개발자 문서
|
||||
# 그누보드7 나이스페이먼츠 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-pay_nicepayments · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 토스페이먼츠 — 에이전트 가이드
|
||||
# 그누보드7 토스페이먼츠 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 토스페이먼츠
|
||||
# 그누보드7 토스페이먼츠 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-tosspayments**
|
||||
토스페이먼츠 결제 게이트웨이 (통합결제창 연동)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 토스페이먼츠 개발자 문서
|
||||
# 그누보드7 토스페이먼츠 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-tosspayments · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# KG이니시스 본인인증 — 에이전트 가이드
|
||||
# 그누보드7 KG이니시스 본인인증 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -12,6 +12,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.4] - 2026-08-22
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# KG이니시스 본인인증
|
||||
# 그누보드7 KG이니시스 본인인증 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-verification_kginicis**
|
||||
KG이니시스 통합인증의 본인확인(reqSvcCd=03)을 그누보드7 코어 IDV 인프라에 Provider 로 등록하는 플러그인
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# KG이니시스 본인인증 개발자 문서
|
||||
# 그누보드7 KG이니시스 본인인증 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-verification_kginicis · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NHN KCP 휴대폰 본인확인 — 에이전트 가이드
|
||||
# 그누보드7 NHN KCP 휴대폰 본인확인 플러그인 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 플러그인을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -12,6 +12,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
- 확장 문서에 「레이아웃 편집기 스펙」 항목을 추가했습니다. 이 확장이 레이아웃 편집기에 무엇을 선언했는지와, 화면 요소나 데이터를 추가할 때 편집기 쪽에서 함께 해야 할 일을 담습니다.
|
||||
- 문서의 제품 표기를 「그누보드7」로 통일했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.0.1] - 2026-08-19
|
||||
|
||||
### Security
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NHN KCP 휴대폰 본인확인
|
||||
# 그누보드7 NHN KCP 휴대폰 본인확인 플러그인
|
||||
|
||||
**그누보드7 플러그인 · sirsoft-verification_nhnkcp**
|
||||
NHN KCP 휴대폰 본인확인(V2 REST)을 그누보드7 코어 IDV 인프라에 Provider 로 등록하는 플러그인
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NHN KCP 휴대폰 본인확인 개발자 문서
|
||||
# 그누보드7 NHN KCP 휴대폰 본인확인 플러그인 개발자 문서
|
||||
|
||||
> plugins/_bundled/sirsoft-verification_nhnkcp · 플러그인
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello Admin Template — 에이전트 가이드
|
||||
# 그누보드7 Hello Admin Template — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 템플릿을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
|
||||
- 설정 파일의 스크립트 경로가 실제 빌드 산출물과 달랐던 것을 정정했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [0.1.0] - 2026-07-01
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello Admin Template
|
||||
# 그누보드7 Hello Admin Template
|
||||
|
||||
**그누보드7 템플릿 · gnuboard7-hello_admin_template**
|
||||
그누보드7 학습용 최소 Admin 템플릿 스켈레톤
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello Admin Template 개발자 문서
|
||||
# 그누보드7 Hello Admin Template 개발자 문서
|
||||
|
||||
> templates/_bundled/gnuboard7-hello_admin_template · 템플릿
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 사용자 템플릿 — 에이전트 가이드
|
||||
# 그누보드7 Hello 사용자 템플릿 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 템플릿을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
|
||||
- 설정 파일이 존재하지 않는 스타일 파일을 선언해 검색엔진용 화면이 없는 주소를 참조하던 문제를 수정했습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [0.1.0] - 2026-07-01
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 사용자 템플릿
|
||||
# 그누보드7 Hello 사용자 템플릿
|
||||
|
||||
**그누보드7 템플릿 · gnuboard7-hello_user_template**
|
||||
학습용 최소 샘플 사용자 템플릿 (Basic 8개 컴포넌트)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Hello 사용자 템플릿 개발자 문서
|
||||
# 그누보드7 Hello 사용자 템플릿 개발자 문서
|
||||
|
||||
> templates/_bundled/gnuboard7-hello_user_template · 템플릿
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Admin Basic — 에이전트 가이드
|
||||
# 그누보드7 Admin Basic 템플릿 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 템플릿을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
- 관리자 화면에서 게시물·상품 등의 HTML 본문을 표시할 때 쓰는 정화 라이브러리를 최신 버전으로 고정했습니다. 종전에는 이 라이브러리를 직접 지정하지 않아 다른 구성요소가 딸려 들여온 구버전이 쓰였고, 사용자 템플릿보다 낮은 버전으로 동작했습니다.
|
||||
- 레이아웃 코드 편집기(Monaco)를 0.56.0 으로 올렸습니다. 편집기가 자체적으로 담고 있던 HTML 정화 라이브러리가 크게 뒤처져 있어 함께 개선됩니다. (#126 @jiwonpapa 님께서 제보해주셨습니다.)
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
### Fixed
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Admin Basic
|
||||
# 그누보드7 Admin Basic 템플릿
|
||||
|
||||
**그누보드7 템플릿 · sirsoft-admin_basic**
|
||||
그누보드7 기본 관리자 템플릿
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Admin Basic 개발자 문서
|
||||
# 그누보드7 Admin Basic 템플릿 개발자 문서
|
||||
|
||||
> templates/_bundled/sirsoft-admin_basic · 템플릿
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Basic — 에이전트 가이드
|
||||
# 그누보드7 Basic 템플릿 — 에이전트 가이드
|
||||
|
||||
> 이 문서는 이 템플릿을 수정하는 에이전트·확장개발자를 위한 것입니다. 도입 검토·운영 관점은 [README.md](README.md) 를 보세요.
|
||||
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
- 주소 검색을 불러오지 못한 상태에서 주문서의 우편번호·주소를 직접 입력해도 값이 주문에 반영되지 않아 결제 버튼이 계속 눌리지 않던 문제를 고쳤습니다. 이제 직접 입력한 주소로 주문을 끝까지 진행할 수 있습니다.
|
||||
- 레이아웃 편집기의 「액션 추가」로 만든 「테마 바꾸기」·「테마 초기화」·「화면 상태 바꾸기」 동작이 만들자마자 아무 일도 하지 않던 문제를 고쳤습니다. 편집기가 만들어 주는 값의 형태가 실제 동작이 읽는 형태와 달라 오류 표시도 없이 무시되고 있었습니다.
|
||||
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
|
||||
## [1.1.2] - 2026-08-24
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Basic
|
||||
# 그누보드7 Basic 템플릿
|
||||
|
||||
**그누보드7 템플릿 · sirsoft-basic**
|
||||
그누보드7 기본 사용자 템플릿
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Basic 개발자 문서
|
||||
# 그누보드7 Basic 템플릿 개발자 문서
|
||||
|
||||
> templates/_bundled/sirsoft-basic · 템플릿
|
||||
|
||||
|
||||
@@ -1143,6 +1143,76 @@ class ExtensionDocContractTest extends TestCase
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 진입 문서 3종의 제목이 「그누보드7 {확장명} {유형}」 을 담는지 단언합니다.
|
||||
*
|
||||
* PO 결정(2026-09-04): 확장 README 제목이 확장명뿐(`# 게시판`)이면 그 문서만 연 사람이
|
||||
* 이것이 그누보드7의 확장인지, 모듈인지 템플릿인지 알 수 없다. README · AGENTS.md ·
|
||||
* docs/README.md 는 제3자가 처음 여는 진입 문서이므로 셋 다 같은 제목을 쓴다.
|
||||
*
|
||||
* 기대값은 손으로 적지 않고 생성기와 같은 헬퍼(`ExtensionInventory::docTitle`)에서
|
||||
* 만든다 — 규칙을 두 곳에 적으면 한쪽만 고쳐 어긋난다. 골격 생성기 출력도 같은 판정을
|
||||
* 받아, 다음 확장이 확장명만 든 제목으로 태어나는 경로를 막는다.
|
||||
*/
|
||||
public function test_entry_documents_carry_product_and_type_in_their_title(): void
|
||||
{
|
||||
$inventory = new ExtensionInventory;
|
||||
$records = $inventory->collect('all');
|
||||
$this->assertNotEmpty($records, '번들 확장을 하나도 발견하지 못했습니다.');
|
||||
|
||||
$expectedFor = fn (array $record): array => [
|
||||
'README.md' => '# '.ExtensionInventory::docTitle($record['name'], $record['type']),
|
||||
'AGENTS.md' => '# '.ExtensionInventory::docTitle($record['name'], $record['type']).' — 에이전트 가이드',
|
||||
'docs/README.md' => '# '.ExtensionInventory::docTitle($record['name'], $record['type']).' 개발자 문서',
|
||||
];
|
||||
|
||||
$checked = 0;
|
||||
$mismatched = [];
|
||||
|
||||
foreach ($records as $record) {
|
||||
foreach ($expectedFor($record) as $rel => $heading) {
|
||||
$file = $record['path'].'/'.$rel;
|
||||
if (! is_file($file)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$checked++;
|
||||
$firstLine = strtok((string) file_get_contents($file), "\r\n");
|
||||
|
||||
if ($firstLine !== $heading) {
|
||||
$mismatched[] = "{$record['relPath']}/{$rel}: \"{$firstLine}\" (기대: \"{$heading}\")";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->assertGreaterThan(
|
||||
0,
|
||||
$checked,
|
||||
'진입 문서를 가진 번들 확장이 하나도 없습니다 — 모집단이 비면 이 단언은 공허 통과합니다.',
|
||||
);
|
||||
$this->assertSame(
|
||||
[],
|
||||
$mismatched,
|
||||
"진입 문서 제목이 「그누보드7 {확장명} {유형}」 형식이 아닙니다:\n".implode("\n", $mismatched),
|
||||
);
|
||||
|
||||
// 이미 놓인 파일만 보면 다음 확장이 사각이다 — 골격 생성기 출력도 같은 판정을 받는다.
|
||||
$scaffolder = new ExtensionDocScaffolder;
|
||||
|
||||
foreach ($records as $record) {
|
||||
$ctx = $this->contextFor($record, $inventory);
|
||||
|
||||
foreach ($expectedFor($record) as $rel => $heading) {
|
||||
$skeleton = $scaffolder->skeleton($rel, $ctx);
|
||||
$this->assertSame(
|
||||
$heading,
|
||||
strtok($skeleton, "\r\n"),
|
||||
"골격 생성기의 {$rel} 제목이 형식을 따르지 않습니다 ({$record['id']} 기준).",
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 확장 문서의 「활동 로그 훅」 표가 리스너의 실제 구독과 일치하는지 단언합니다.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit\Support\ExtensionDoc;
|
||||
|
||||
use App\Support\ExtensionDoc\ExtensionInventory;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
use PHPUnit\Framework\Attributes\Test;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* 진입 문서 제목 조립 규칙(`ExtensionInventory::docTitle`)을 고정합니다.
|
||||
*
|
||||
* 제목은 「그누보드7 {확장명} {유형}」 이다 (PO 결정 2026-09-04). 확장명이 이미 유형으로
|
||||
* 끝나면 겹쳐 붙이지 않는다 — 이 예외가 깨지면 「그누보드7 Hello 모듈 모듈」 이 되는데,
|
||||
* 계약 테스트는 같은 헬퍼로 기대값을 만들므로 그 형태도 초록으로 통과한다. 그래서 규칙
|
||||
* 자체는 여기서 리터럴로 고정한다.
|
||||
*/
|
||||
class ExtensionInventoryTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @return array<string, array{0: string, 1: string, 2: string}>
|
||||
*/
|
||||
public static function titles(): array
|
||||
{
|
||||
return [
|
||||
'모듈' => ['게시판', ExtensionInventory::TYPE_MODULE, '그누보드7 게시판 모듈'],
|
||||
'플러그인' => ['GDPR (일반 데이터 보호 규정)', ExtensionInventory::TYPE_PLUGIN, '그누보드7 GDPR (일반 데이터 보호 규정) 플러그인'],
|
||||
'템플릿' => ['Basic', ExtensionInventory::TYPE_TEMPLATE, '그누보드7 Basic 템플릿'],
|
||||
'이름이 이미 유형으로 끝남 (한국어)' => ['Hello 모듈', ExtensionInventory::TYPE_MODULE, '그누보드7 Hello 모듈'],
|
||||
'이름이 이미 유형으로 끝남 (영문, 대소문자 무관)' => ['Hello Admin Template', ExtensionInventory::TYPE_TEMPLATE, '그누보드7 Hello Admin Template'],
|
||||
'이름 중간의 유형 낱말은 예외가 아님' => ['모듈 관리', ExtensionInventory::TYPE_MODULE, '그누보드7 모듈 관리 모듈'],
|
||||
'다른 유형 낱말로 끝나면 자기 유형을 붙임' => ['에디터 플러그인', ExtensionInventory::TYPE_MODULE, '그누보드7 에디터 플러그인 모듈'],
|
||||
'앞뒤 공백 정리' => [' 페이지 ', ExtensionInventory::TYPE_MODULE, '그누보드7 페이지 모듈'],
|
||||
];
|
||||
}
|
||||
|
||||
#[Test]
|
||||
#[DataProvider('titles')]
|
||||
public function 진입_문서_제목은_그누보드7_확장명_유형_순이다(string $name, string $type, string $expected): void
|
||||
{
|
||||
$this->assertSame($expected, ExtensionInventory::docTitle($name, $type));
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function 알_수_없는_유형은_유형_문자열을_그대로_붙인다(): void
|
||||
{
|
||||
// typeLabel 이 모르는 유형은 그 문자열을 라벨로 돌려주므로 제목도 같은 규칙을 따른다.
|
||||
$this->assertSame('그누보드7 X widget', ExtensionInventory::docTitle('X', 'widget'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user