From eceb927d54dac239d9d98d01da9baafd48b3f944 Mon Sep 17 00:00:00 2001 From: hailin Date: Tue, 9 Dec 2025 07:09:03 -0800 Subject: [PATCH] fix(admin-service): relax changelog and minOsVersion validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Changelog: allow empty value, return default "No changelog provided" - MinOsVersion: allow empty value and single number format (e.g., "24" -> "24.0") 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/domain/value-objects/changelog.vo.ts | 7 ++----- .../src/domain/value-objects/min-os-version.vo.ts | 8 +++++++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/backend/services/admin-service/src/domain/value-objects/changelog.vo.ts b/backend/services/admin-service/src/domain/value-objects/changelog.vo.ts index b37fc860..040b8fa9 100644 --- a/backend/services/admin-service/src/domain/value-objects/changelog.vo.ts +++ b/backend/services/admin-service/src/domain/value-objects/changelog.vo.ts @@ -15,16 +15,13 @@ export class Changelog { } static create(value: string): Changelog { + // 允许空值,返回默认 changelog if (!value || value.trim() === '') { - throw new DomainException('Changelog cannot be empty'); + return Changelog.empty(); } const trimmed = value.trim(); - if (trimmed.length < 10) { - throw new DomainException('Changelog must be at least 10 characters'); - } - if (trimmed.length > 5000) { throw new DomainException('Changelog cannot exceed 5000 characters'); } diff --git a/backend/services/admin-service/src/domain/value-objects/min-os-version.vo.ts b/backend/services/admin-service/src/domain/value-objects/min-os-version.vo.ts index 42ed6e4b..dd25c458 100644 --- a/backend/services/admin-service/src/domain/value-objects/min-os-version.vo.ts +++ b/backend/services/admin-service/src/domain/value-objects/min-os-version.vo.ts @@ -15,12 +15,18 @@ export class MinOsVersion { } static create(value: string): MinOsVersion { + // 允许空值,返回默认版本 if (!value || value.trim() === '') { - throw new DomainException('MinOsVersion cannot be empty'); + return MinOsVersion.none(); } const trimmed = value.trim(); + // 支持纯数字格式 (e.g., "24") 自动转换为 "24.0" + if (/^\d+$/.test(trimmed)) { + return new MinOsVersion(`${trimmed}.0`); + } + // 验证格式: 数字.数字 或 数字.数字.数字 (e.g., "11.0", "14.0", "5.1.1") if (!/^\d+(\.\d+){1,2}$/.test(trimmed)) { throw new DomainException('MinOsVersion must be in format like "11.0" or "5.1.1"');