검증 Catalog 의 백업·이전·보존 정책을 생명주기 영역 정책 읽기와 연결, VERSION_HISTORY 초안

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
zzabisagent-lab
2026-10-26 12:06:32 +00:00
co-authored by Claude Fable 5.1
parent 68027b7bde
commit deae7e31e0
3 changed files with 463 additions and 51 deletions
+364 -43
View File
@@ -11,76 +11,397 @@
},
"products": [
{
"product_id": "basic", "version": 1, "name": "베이직", "audience": "개인·소규모 사업자", "kind": "base",
"product_id": "basic",
"version": 1,
"name": "베이직",
"audience": "개인·소규모 사업자",
"kind": "base",
"description": "사이트 1개와 대표 메일을 운영하는 기본 상품",
"billing_cycle": "monthly", "price": 19000, "currency": "KRW", "tax_rate": 0.1,
"limits": { "sites": 1, "web_disk": 5368709120, "web_out": 53687091200, "mail_storage": 5368709120, "mail_msgs": 3000, "mailboxes": 5 },
"billing_cycle": "monthly",
"price": 19000,
"currency": "KRW",
"tax_rate": 0.1,
"limits": {
"sites": 1,
"web_disk": 5368709120,
"web_out": 53687091200,
"mail_storage": 5368709120,
"mail_msgs": 3000,
"mailboxes": 5
},
"options": [
{ "id": "standalone_mail", "name": "독립 메일 서비스", "price": 9000, "grants": { "mail_services": 1, "mail_storage": 5368709120, "mail_msgs": 3000, "mailboxes": 5 }, "per": "group", "max_qty": 3 },
{ "id": "source", "name": "Source(Gitea) 옵션", "price": 5000, "grants": { "source": 1 }, "per": "site", "max_qty": 1 },
{ "id": "backup", "name": "관리형 사이트 백업 옵션", "price": 7000, "grants": { "backup": 1 }, "per": "site", "max_qty": 1,
"policy": { "schedule": "daily", "schedule_time_kst": "03:30", "retention": { "daily": 7, "weekly": 4, "monthly": 3 }, "storage_bytes": 21474836480, "first_backup_within_hours": 24, "remote_copy_verification": "sha256 + 격리 환경 읽기 확인", "restore_cost": 0, "restore_approval": "manual", "expired_backup_retention_days": 7, "failure_alert_after": 3, "extra_storage_option": "extra_backup_storage" } },
{ "id": "extra_disk", "name": "웹 디스크 추가 5GB", "price": 3000, "grants": { "web_disk": 5368709120 }, "per": "group", "max_qty": 10 },
{ "id": "extra_out", "name": "월간 웹 아웃바운드 추가 50GB", "price": 3000, "grants": { "web_out": 53687091200 }, "per": "group", "max_qty": 10 },
{ "id": "extra_mailboxes", "name": "메일함 5개 추가", "price": 2000, "grants": { "mailboxes": 5 }, "per": "group", "max_qty": 10 },
{ "id": "extra_backup_storage", "name": "백업 저장 공간 추가 20GB", "price": 2000, "grants": {}, "per": "site", "max_qty": 5 }
{
"id": "standalone_mail",
"name": "독립 메일 서비스",
"price": 9000,
"grants": {
"mail_services": 1,
"mail_storage": 5368709120,
"mail_msgs": 3000,
"mailboxes": 5
},
"per": "group",
"max_qty": 3
},
{
"id": "source",
"name": "Source(Gitea) 옵션",
"price": 5000,
"grants": {
"source": 1
},
"per": "site",
"max_qty": 1
},
{
"id": "backup",
"name": "관리형 사이트 백업 옵션",
"price": 7000,
"grants": {
"backup": 1
},
"per": "site",
"max_qty": 1,
"policy": {
"schedule": "daily",
"schedule_time_kst": "03:30",
"retention": {
"daily": 7,
"weekly": 4,
"monthly": 3
},
"storage_bytes": 21474836480,
"first_backup_within_hours": 24,
"remote_copy_verification": "sha256 + 격리 환경 읽기 확인",
"restore_cost": 0,
"restore_approval": "manual",
"expired_backup_retention_days": 7,
"failure_alert_after": 3,
"extra_storage_option": "extra_backup_storage",
"restore_completion": "user_confirm",
"protect_point_days": 7,
"revert_hours": 72,
"resume_after_pause": "confirm",
"restore_downtime_minutes": 10
}
},
{
"id": "extra_disk",
"name": "웹 디스크 추가 5GB",
"price": 3000,
"grants": {
"web_disk": 5368709120
},
"per": "group",
"max_qty": 10
},
{
"id": "extra_out",
"name": "월간 웹 아웃바운드 추가 50GB",
"price": 3000,
"grants": {
"web_out": 53687091200
},
"per": "group",
"max_qty": 10
},
{
"id": "extra_mailboxes",
"name": "메일함 5개 추가",
"price": 2000,
"grants": {
"mailboxes": 5
},
"per": "group",
"max_qty": 10
},
{
"id": "extra_backup_storage",
"name": "백업 저장 공간 추가 20GB",
"price": 2000,
"grants": {},
"per": "site",
"max_qty": 5
}
],
"includes": [
"관리형 배포(정적·승인된 동적)",
"사이트 대표 메일 도메인 1개",
"도메인 연결·HTTPS 인증서",
"접속·사용량 통계",
"알림 센터"
],
"excludes": [
"외부 배포 서버 운영·백업·SLA",
"메일 원문 백업",
"도메인 등록(외부 등록기관 이용)",
"자동 결제"
],
"includes": ["관리형 배포(정적·승인된 동적)", "사이트 대표 메일 도메인 1개", "도메인 연결·HTTPS 인증서", "접속·사용량 통계", "알림 센터"],
"excludes": ["외부 배포 서버 운영·백업·SLA", "메일 원문 백업", "도메인 등록(외부 등록기관 이용)", "자동 결제"],
"policy": {
"approval": "manual",
"payment_deadline_days": 7,
"renewal_notice_days": 7,
"restriction_after_unpaid_days": 14,
"restriction_effect": "신규 배포·설정 변경·새 메일함 생성 제한(기존 서비스·조회·삭제·내보내기 유지)",
"retention_days": { "site": 30, "mail": 30, "source": 30, "backup_after_expiry": 7 },
"retention_days": {
"site": 30,
"mail": 30,
"source": 30,
"backup_after_expiry": 7
},
"external_deploy_fee": 3000,
"relocation": { "customer_requested_fee": 10000, "platform_reason_fee": 0, "target_downtime_minutes": 15, "revert_window_hours": 72, "old_location_retention_hours": 72 },
"overage": { "default": false, "unit_prices": { "web_out": { "per_bytes": 10737418240, "price": 1000 }, "mail_msgs": { "per_units": 1000, "price": 1000 } } },
"lifecycle": { "pause_keeps_site_count": true, "cancel_effective": "next_billing_date", "readonly_retention_days": 30, "delete_after_days": 30 },
"alias_counting": { "value": null, "status": "deferred", "note": "별칭·전달 전용 주소의 계산 방식은 후속 상품정책에서 정한다. 확정 전에는 무제한으로 제공하지 않으며 메일함 수에 포함해 계산한다." },
"large_attachment": { "value": null, "status": "deferred", "note": "대용량 첨부의 허용 크기·다운로드 횟수·보관 기한은 후속 상품정책에서 정한다. 시스템 안전 상한이 우선한다." },
"ai_wallet_pricing": { "value": null, "status": "deferred", "note": "AI 제작 기능의 크레딧 단가는 Webmaker 관리자 설정(등급별)을 따르며 상품정책에 고정하지 않는다." }
"relocation": {
"customer_requested_fee": 10000,
"platform_reason_fee": 0,
"target_downtime_minutes": 15,
"revert_window_hours": 72,
"old_location_retention_hours": 72,
"dns_wait_handling": "전환 뒤 DNS·인증서 반영 대기 중에는 이전 위치가 새 위치로 요청을 넘겨 접속이 끊기지 않게 한다",
"write_freeze": "동적 사이트·메일은 최종 변경분 반영 직전부터 전환 완료까지 쓰기 제한"
},
"overage": {
"default": false,
"unit_prices": {
"web_out": {
"per_bytes": 10737418240,
"price": 1000
},
"mail_msgs": {
"per_units": 1000,
"price": 1000
}
}
},
"lifecycle": {
"pause_keeps_site_count": true,
"cancel_effective": "next_billing_date",
"readonly_retention_days": 30,
"delete_after_days": 30
},
"alias_counting": {
"value": null,
"status": "deferred",
"note": "별칭·전달 전용 주소의 계산 방식은 후속 상품정책에서 정한다. 확정 전에는 무제한으로 제공하지 않으며 메일함 수에 포함해 계산한다."
},
"large_attachment": {
"value": null,
"status": "deferred",
"note": "대용량 첨부의 허용 크기·다운로드 횟수·보관 기한은 후속 상품정책에서 정한다. 시스템 안전 상한이 우선한다."
},
"ai_wallet_pricing": {
"value": null,
"status": "deferred",
"note": "AI 제작 기능의 크레딧 단가는 Webmaker 관리자 설정(등급별)을 따르며 상품정책에 고정하지 않는다."
}
},
"warn_levels": [70, 80, 90, 95], "effective_from": "2026-10-01T00:00:00.000Z", "published": true
"warn_levels": [
70,
80,
90,
95
],
"effective_from": "2026-10-01T00:00:00.000Z",
"published": true
},
{
"product_id": "team", "version": 1, "name": "팀", "audience": "여러 사이트를 함께 운영하는 팀·회사", "kind": "base",
"product_id": "team",
"version": 1,
"name": "팀",
"audience": "여러 사이트를 함께 운영하는 팀·회사",
"kind": "base",
"description": "사이트 3개와 넉넉한 메일·트래픽",
"billing_cycle": "monthly", "price": 49000, "currency": "KRW", "tax_rate": 0.1,
"limits": { "sites": 3, "web_disk": 21474836480, "web_out": 214748364800, "mail_storage": 21474836480, "mail_msgs": 10000, "mailboxes": 20 },
"billing_cycle": "monthly",
"price": 49000,
"currency": "KRW",
"tax_rate": 0.1,
"limits": {
"sites": 3,
"web_disk": 21474836480,
"web_out": 214748364800,
"mail_storage": 21474836480,
"mail_msgs": 10000,
"mailboxes": 20
},
"options": [
{ "id": "standalone_mail", "name": "독립 메일 서비스", "price": 9000, "grants": { "mail_services": 1, "mail_storage": 5368709120, "mail_msgs": 3000, "mailboxes": 5 }, "per": "group", "max_qty": 5 },
{ "id": "source", "name": "Source(Gitea) 옵션", "price": 5000, "grants": { "source": 1 }, "per": "site", "max_qty": 1 },
{ "id": "backup", "name": "관리형 사이트 백업 옵션", "price": 7000, "grants": { "backup": 1 }, "per": "site", "max_qty": 1,
"policy": { "schedule": "daily", "schedule_time_kst": "03:30", "retention": { "daily": 7, "weekly": 4, "monthly": 3 }, "storage_bytes": 53687091200, "first_backup_within_hours": 24, "remote_copy_verification": "sha256 + 격리 환경 읽기 확인", "restore_cost": 0, "restore_approval": "manual", "expired_backup_retention_days": 7, "failure_alert_after": 3, "extra_storage_option": "extra_backup_storage" } },
{ "id": "extra_disk", "name": "웹 디스크 추가 5GB", "price": 3000, "grants": { "web_disk": 5368709120 }, "per": "group", "max_qty": 20 },
{ "id": "extra_out", "name": "월간 웹 아웃바운드 추가 50GB", "price": 3000, "grants": { "web_out": 53687091200 }, "per": "group", "max_qty": 20 },
{ "id": "extra_mailboxes", "name": "메일함 5개 추가", "price": 2000, "grants": { "mailboxes": 5 }, "per": "group", "max_qty": 20 },
{ "id": "extra_backup_storage", "name": "백업 저장 공간 추가 20GB", "price": 2000, "grants": {}, "per": "site", "max_qty": 5 }
{
"id": "standalone_mail",
"name": "독립 메일 서비스",
"price": 9000,
"grants": {
"mail_services": 1,
"mail_storage": 5368709120,
"mail_msgs": 3000,
"mailboxes": 5
},
"per": "group",
"max_qty": 5
},
{
"id": "source",
"name": "Source(Gitea) 옵션",
"price": 5000,
"grants": {
"source": 1
},
"per": "site",
"max_qty": 1
},
{
"id": "backup",
"name": "관리형 사이트 백업 옵션",
"price": 7000,
"grants": {
"backup": 1
},
"per": "site",
"max_qty": 1,
"policy": {
"schedule": "daily",
"schedule_time_kst": "03:30",
"retention": {
"daily": 7,
"weekly": 4,
"monthly": 3
},
"storage_bytes": 53687091200,
"first_backup_within_hours": 24,
"remote_copy_verification": "sha256 + 격리 환경 읽기 확인",
"restore_cost": 0,
"restore_approval": "manual",
"expired_backup_retention_days": 7,
"failure_alert_after": 3,
"extra_storage_option": "extra_backup_storage",
"restore_completion": "user_confirm",
"protect_point_days": 7,
"revert_hours": 72,
"resume_after_pause": "confirm",
"restore_downtime_minutes": 10
}
},
{
"id": "extra_disk",
"name": "웹 디스크 추가 5GB",
"price": 3000,
"grants": {
"web_disk": 5368709120
},
"per": "group",
"max_qty": 20
},
{
"id": "extra_out",
"name": "월간 웹 아웃바운드 추가 50GB",
"price": 3000,
"grants": {
"web_out": 53687091200
},
"per": "group",
"max_qty": 20
},
{
"id": "extra_mailboxes",
"name": "메일함 5개 추가",
"price": 2000,
"grants": {
"mailboxes": 5
},
"per": "group",
"max_qty": 20
},
{
"id": "extra_backup_storage",
"name": "백업 저장 공간 추가 20GB",
"price": 2000,
"grants": {},
"per": "site",
"max_qty": 5
}
],
"includes": [
"관리형 배포(정적·승인된 동적)",
"사이트마다 대표 메일 도메인 1개",
"도메인 연결·HTTPS 인증서",
"접속·사용량 통계",
"사이트별 구성원 권한"
],
"excludes": [
"외부 배포 서버 운영·백업·SLA",
"메일 원문 백업",
"도메인 등록(외부 등록기관 이용)",
"자동 결제"
],
"includes": ["관리형 배포(정적·승인된 동적)", "사이트마다 대표 메일 도메인 1개", "도메인 연결·HTTPS 인증서", "접속·사용량 통계", "사이트별 구성원 권한"],
"excludes": ["외부 배포 서버 운영·백업·SLA", "메일 원문 백업", "도메인 등록(외부 등록기관 이용)", "자동 결제"],
"policy": {
"approval": "manual",
"payment_deadline_days": 7,
"renewal_notice_days": 7,
"restriction_after_unpaid_days": 14,
"restriction_effect": "신규 배포·설정 변경·새 메일함 생성 제한(기존 서비스·조회·삭제·내보내기 유지)",
"retention_days": { "site": 30, "mail": 30, "source": 30, "backup_after_expiry": 7 },
"retention_days": {
"site": 30,
"mail": 30,
"source": 30,
"backup_after_expiry": 7
},
"external_deploy_fee": 3000,
"relocation": { "customer_requested_fee": 10000, "platform_reason_fee": 0, "target_downtime_minutes": 15, "revert_window_hours": 72, "old_location_retention_hours": 72 },
"overage": { "default": false, "unit_prices": { "web_out": { "per_bytes": 10737418240, "price": 1000 }, "mail_msgs": { "per_units": 1000, "price": 1000 } } },
"lifecycle": { "pause_keeps_site_count": true, "cancel_effective": "next_billing_date", "readonly_retention_days": 30, "delete_after_days": 30 },
"alias_counting": { "value": null, "status": "deferred", "note": "별칭·전달 전용 주소의 계산 방식은 후속 상품정책에서 정한다. 확정 전에는 무제한으로 제공하지 않으며 메일함 수에 포함해 계산한다." },
"large_attachment": { "value": null, "status": "deferred", "note": "대용량 첨부의 허용 크기·다운로드 횟수·보관 기한은 후속 상품정책에서 정한다. 시스템 안전 상한이 우선한다." },
"ai_wallet_pricing": { "value": null, "status": "deferred", "note": "AI 제작 기능의 크레딧 단가는 Webmaker 관리자 설정(등급별)을 따르며 상품정책에 고정하지 않는다." }
"relocation": {
"customer_requested_fee": 10000,
"platform_reason_fee": 0,
"target_downtime_minutes": 15,
"revert_window_hours": 72,
"old_location_retention_hours": 72,
"dns_wait_handling": "전환 뒤 DNS·인증서 반영 대기 중에는 이전 위치가 새 위치로 요청을 넘겨 접속이 끊기지 않게 한다",
"write_freeze": "동적 사이트·메일은 최종 변경분 반영 직전부터 전환 완료까지 쓰기 제한"
},
"overage": {
"default": false,
"unit_prices": {
"web_out": {
"per_bytes": 10737418240,
"price": 1000
},
"mail_msgs": {
"per_units": 1000,
"price": 1000
}
}
},
"lifecycle": {
"pause_keeps_site_count": true,
"cancel_effective": "next_billing_date",
"readonly_retention_days": 30,
"delete_after_days": 30
},
"alias_counting": {
"value": null,
"status": "deferred",
"note": "별칭·전달 전용 주소의 계산 방식은 후속 상품정책에서 정한다. 확정 전에는 무제한으로 제공하지 않으며 메일함 수에 포함해 계산한다."
},
"large_attachment": {
"value": null,
"status": "deferred",
"note": "대용량 첨부의 허용 크기·다운로드 횟수·보관 기한은 후속 상품정책에서 정한다. 시스템 안전 상한이 우선한다."
},
"ai_wallet_pricing": {
"value": null,
"status": "deferred",
"note": "AI 제작 기능의 크레딧 단가는 Webmaker 관리자 설정(등급별)을 따르며 상품정책에 고정하지 않는다."
}
},
"warn_levels": [70, 80, 90, 95], "effective_from": "2026-10-01T00:00:00.000Z", "published": true
"warn_levels": [
70,
80,
90,
95
],
"effective_from": "2026-10-01T00:00:00.000Z",
"published": true
}
],
"settings": {
"domain_registration": { "enabled": false, "note": "버전 0.1.1 검증 환경에는 등록기관이 연결되어 있지 않습니다. 도메인은 외부 등록기관에서 등록한 뒤 연결하세요." },
"domain_registration": {
"enabled": false,
"note": "버전 0.1.1 검증 환경에는 등록기관이 연결되어 있지 않습니다. 도메인은 외부 등록기관에서 등록한 뒤 연결하세요."
},
"usage.stale_minutes": 30
}
}