확장 API 문서가 인덱스·목차 어디에도 노출되지 않아 처음 온 개발자/AI 가
발견할 수 없던 간극을 해소했다. 코어에 확장명을 하드코딩하지 않고(동적 로딩 원칙),
파일 시스템 패턴 스캔 + 확장 소유 목차 규약으로 발견성을 확보한다.
- ApiDocScaffolder::readmeIndex — 각 대상의 docs/api/README.md 목차(도메인 파일·
엔드포인트 수)를 @generated 블록으로 생성(멱등, 사람 개요 보존). 커맨드가 대상별
README 를 방출(readmeFile 경로 헬퍼). 코어 + 9 확장 = 10개 목차 생성.
- generate-docs-index.cjs scanExtensionApiReadmes — {modules,plugins}/_bundled/*/
docs/api/README.md 를 패턴 스캔(확장명 하드코딩 0)해 ·AGENTS.md 에
"확장 API 레퍼런스" 표로 자동 편입. 확장 추가/삭제 시 재생성만으로 반영.
- api-documentation.md 에 README 목차 규약 + 발견 경로 명문화. coverage.json 에
api-doc-readme-index(manual-only) 등록. 루트 README API 레퍼런스 링크 갱신.
테스트: readmeIndex 목차 생성·멱등 2건 + 스캐너 편입·하드코딩부재 2건(node --test).
47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
# API 레퍼런스 문서 목차
|
|
|
|
> **소유**: 모듈 `sirsoft-ecommerce` · **생성**: `php artisan api:docgen` (실측 기반).
|
|
> 아래 표는 자동 생성됩니다. 각 문서를 열면 엔드포인트별 파라미터·응답·예시를 볼 수 있습니다.
|
|
|
|
<!-- @generated:start:api-readme-index -->
|
|
- **문서 수**: 33 · **엔드포인트 수**: 231
|
|
|
|
| 문서 | 도메인 | 엔드포인트 |
|
|
| --- | --- | --- |
|
|
| [addresses.md](addresses.md) | `addresses` | 6 |
|
|
| [brands.md](brands.md) | `brands` | 6 |
|
|
| [cart.md](cart.md) | `cart` | 11 |
|
|
| [categories.md](categories.md) | `categories` | 14 |
|
|
| [category-image.md](category-image.md) | `category-image` | 1 |
|
|
| [checkout.md](checkout.md) | `checkout` | 5 |
|
|
| [claim-reasons.md](claim-reasons.md) | `claim-reasons` | 8 |
|
|
| [coupons.md](coupons.md) | `coupons` | 4 |
|
|
| [currency.md](currency.md) | `currency` | 2 |
|
|
| [dashboard.md](dashboard.md) | `dashboard` | 4 |
|
|
| [extra-fee-templates.md](extra-fee-templates.md) | `extra-fee-templates` | 10 |
|
|
| [guest.md](guest.md) | `guest` | 5 |
|
|
| [inquiries.md](inquiries.md) | `inquiries` | 10 |
|
|
| [mileage.md](mileage.md) | `mileage` | 3 |
|
|
| [mileage-transactions.md](mileage-transactions.md) | `mileage-transactions` | 5 |
|
|
| [options.md](options.md) | `options` | 3 |
|
|
| [orders.md](orders.md) | `orders` | 22 |
|
|
| [payments.md](payments.md) | `payments` | 1 |
|
|
| [presets.md](presets.md) | `presets` | 4 |
|
|
| [product-common-infos.md](product-common-infos.md) | `product-common-infos` | 6 |
|
|
| [product-image.md](product-image.md) | `product-image` | 1 |
|
|
| [product-labels.md](product-labels.md) | `product-labels` | 6 |
|
|
| [product-notice-templates.md](product-notice-templates.md) | `product-notice-templates` | 7 |
|
|
| [products.md](products.md) | `products` | 30 |
|
|
| [promotion-coupons.md](promotion-coupons.md) | `promotion-coupons` | 9 |
|
|
| [review-image.md](review-image.md) | `review-image` | 1 |
|
|
| [reviews.md](reviews.md) | `reviews` | 12 |
|
|
| [settings.md](settings.md) | `settings` | 10 |
|
|
| [shipping-carriers.md](shipping-carriers.md) | `shipping-carriers` | 7 |
|
|
| [shipping-country.md](shipping-country.md) | `shipping-country` | 2 |
|
|
| [shipping-policies.md](shipping-policies.md) | `shipping-policies` | 11 |
|
|
| [users.md](users.md) | `users` | 2 |
|
|
| [wishlist.md](wishlist.md) | `wishlist` | 3 |
|
|
|
|
<!-- @generated:end -->
|
|
|