Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions scripts/check-sdl-description-coverage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,16 @@ function safeIsDir(path: string): boolean {

function main(): void {
const files = loadSdlFiles();
if (files.length === 0) {
// 검사 대상이 없으면 모든 카테고리가 0/0이 되고 percentOf가 100을 돌려줘
// 위반 없이 "통과"가 찍힌다. 이 게이트가 막으려는 것과 같은 종류의 거짓 안전이다.
console.error(
`[docs:check] SDL 파일을 찾지 못했습니다: ${SDL_ROOT}. ` +
'경로가 옳은지 확인하라 — 대상이 없으면 커버리지는 의미가 없다.',
);
process.exitCode = 1;
return;
}
const coverage = collectCoverage(files);

console.log(`[docs:check] SDL 파일 ${files.length}개`);
Expand Down
3 changes: 2 additions & 1 deletion src/features/conversation/conversation-center.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ extend type Query {
myConversations(input: MyConversationsInput): MyConversationConnection!
"""
채팅 상세 메시지 목록(최신순 키셋 커서). 구매자 본인 대화만 조회 가능하며,
조회 시 last_read_at을 현재 시각으로 갱신한다(안읽음 배지 해소 부수효과).
조회 시 last_read_at을 이번에 반환한 최신 메시지의 작성 시각까지 끌어올린다
(안읽음 배지 해소 부수효과). 반환할 메시지가 없으면 갱신하지 않는다.
로그인 필수.
"""
conversationMessages(conversationId: ID!, input: ConversationMessagesInput): ConversationMessageConnection!
Expand Down
5 changes: 4 additions & 1 deletion src/features/order/order-checkout.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ type CreateOrderOutput {
orderId: ID!
"""주문번호. 화면·문의에 쓰는 식별자."""
orderNumber: String!
"""생성 직후 상태. 항상 SUBMITTED다."""
"""
주문 상태. 새로 생성된 경우 SUBMITTED다. 같은 idempotencyKey로 재시도하면 기존
주문을 그대로 돌려주므로 그 사이 진행된 상태(CONFIRMED·MADE·PICKED_UP 등)일 수 있다.
"""
status: OrderStatusType!
"""확정된 픽업 일시. 서버가 매장 정책으로 재검증한 값이다."""
pickupAt: DateTime!
Expand Down
4 changes: 2 additions & 2 deletions src/features/pickup/pickup.types.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ type PickupDay {
type PickupTimeSlots {
"""요청한 날짜. "YYYY-MM-DD" (KST)."""
date: String!
"""12:00 이전 슬롯."""
"""오전 슬롯. 12:00 이전(12:00은 afternoon에 들어간다)."""
morning: [PickupSlot!]!
"""12:00 이후 슬롯."""
"""오후 슬롯. 12:00 포함, 이후."""
afternoon: [PickupSlot!]!
}

Expand Down
2 changes: 1 addition & 1 deletion src/features/product/product-detail.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type ProductDetail {
images: [String!]!
"""정가(원)."""
regularPrice: Int!
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가다."""
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가로 쓰인다."""
salePrice: Int
"""할인율(0~100). salePrice 없으면 0."""
discountRate: Int!
Expand Down
2 changes: 1 addition & 1 deletion src/features/product/product-home.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ type PopularCake {
regionLabel: String
"""정가(원)."""
regularPrice: Int!
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가다."""
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가로 쓰인다."""
salePrice: Int
"""할인율(0~100). salePrice 없으면 0."""
discountRate: Int!
Expand Down
2 changes: 1 addition & 1 deletion src/features/product/product-search.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ type SearchProduct {
regionLabel: String
"""정가(원)."""
regularPrice: Int!
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가다."""
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가로 쓰인다."""
salePrice: Int
"""할인율(0~100). salePrice 없으면 0."""
discountRate: Int!
Expand Down
2 changes: 1 addition & 1 deletion src/features/product/product-storefront.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ type StoreProduct {
thumbnailUrl: String
"""정가(원)."""
regularPrice: Int!
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가다."""
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가로 쓰인다."""
salePrice: Int
"""할인율(0~100). salePrice 없으면 0."""
discountRate: Int!
Expand Down
2 changes: 1 addition & 1 deletion src/features/seller/seller-common.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ ID 키셋 커서 기반 목록 조회 공통 입력. 판매자 목록 API가 공
정렬 기준이 바뀌면 이전에 받은 커서는 무효가 된다.
"""
input SellerCursorInput {
"""한 번에 가져올 개수. 기본 20, 1~100으로 보정된다."""
"""한 번에 가져올 개수. 기본 20, 1~100만 허용하며 벗어나면 BAD_REQUEST."""
limit: Int = 20
"""이전 응답의 nextCursor. 첫 페이지는 생략한다."""
cursor: ID
Expand Down
2 changes: 1 addition & 1 deletion src/features/seller/seller-content.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ type SellerAuditLogConnection {

"""감사 로그 조회 조건."""
input SellerAuditLogListInput {
"""한 번에 가져올 개수. 기본 20, 1~100으로 보정된다."""
"""한 번에 가져올 개수. 기본 20, 1~100만 허용하며 벗어나면 BAD_REQUEST."""
limit: Int = 20
"""이전 응답의 nextCursor. 첫 페이지는 생략한다."""
cursor: ID
Expand Down
2 changes: 1 addition & 1 deletion src/features/seller/seller-conversation.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type SellerConversation {
불투명 토큰이므로 값의 형식에 의존하지 말고 이전 응답의 nextCursor를 그대로 넘긴다.
"""
input SellerConversationListInput {
"""한 번에 가져올 개수. 기본 20, 1~100으로 보정된다."""
"""한 번에 가져올 개수. 기본 20, 1~100만 허용하며 벗어나면 BAD_REQUEST."""
limit: Int = 20
"""이전 응답의 nextCursor. 첫 페이지는 생략한다."""
cursor: String
Expand Down
2 changes: 1 addition & 1 deletion src/features/seller/seller-order.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ type SellerOrderConnection {
주문 목록 조회 조건. 모든 필터는 AND로 결합되고, 미지정 필터는 적용되지 않는다.
"""
input SellerOrderListInput {
"""한 번에 가져올 개수. 기본 20, 1~100으로 보정된다."""
"""한 번에 가져올 개수. 기본 20, 1~100만 허용하며 벗어나면 BAD_REQUEST."""
limit: Int = 20
"""이전 응답의 nextCursor. 첫 페이지는 생략한다."""
cursor: ID
Expand Down
4 changes: 2 additions & 2 deletions src/features/seller/seller-product.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,11 @@ type SellerProductConnection {

"""상품 목록 조회 조건. 필터는 AND로 결합되고 미지정 필터는 적용되지 않는다."""
input SellerProductListInput {
"""한 번에 가져올 개수. 기본 20, 1~100으로 보정된다."""
"""한 번에 가져올 개수. 기본 20, 1~100만 허용하며 벗어나면 BAD_REQUEST."""
limit: Int = 20
"""이전 응답의 nextCursor. 첫 페이지는 생략한다."""
cursor: ID
"""노출 여부 필터. 미지정 시 노출·미노출을 모두 포함한다."""
"""노출 여부 필터. 미지정 시 활성 상품만 반환한다(기본 true)."""
isActive: Boolean
"""카테고리 필터. 해당 카테고리가 연결된 상품만."""
categoryId: ID
Expand Down
2 changes: 1 addition & 1 deletion src/features/seller/seller-store.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ extend type Mutation {

"""날짜 범위 필터가 붙은 커서 목록 입력. 일별 생산 수량 조회에 쓴다."""
input SellerDateCursorInput {
"""한 번에 가져올 개수. 기본 20, 1~100으로 보정된다."""
"""한 번에 가져올 개수. 기본 20, 1~100만 허용하며 벗어나면 BAD_REQUEST."""
limit: Int = 20
"""이전 응답의 nextCursor. 첫 페이지는 생략한다."""
cursor: ID
Expand Down
4 changes: 2 additions & 2 deletions src/features/store/store-pickup-schedule.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ type StorePickupDay {
type StorePickupTimeSlots {
"""요청한 날짜. "YYYY-MM-DD" (KST)."""
date: String!
"""12:00 이전 슬롯."""
"""오전 슬롯. 12:00 이전(12:00은 afternoon에 들어간다)."""
morning: [StorePickupSlot!]!
"""12:00 이후 슬롯."""
"""오후 슬롯. 12:00 포함, 이후."""
afternoon: [StorePickupSlot!]!
}

Expand Down
2 changes: 1 addition & 1 deletion src/features/user/user-wishlist.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type WishlistItemSummary {
productName: String!
"""대표 상품 이미지. 없으면 null."""
representativeImageUrl: String
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가다."""
"""할인가(원). 할인이 없으면 null이고 regularPrice가 표시가로 쓰인다."""
salePrice: Int
"""정가(원)."""
regularPrice: Int!
Expand Down
Loading