mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-10-21 04:04:25 +08:00
feat: 为两个市场团队及全部成员发布透明头像 (#203)
## Summary Publish transparent portraits for both marketplace teams and all 11 roster members. Team cards use the supervisor portrait; a separate `member-avatars.v1.json` sidecar supplies member images without changing the strict `entry.json` member contract accepted by older clients. The two catalog pointers now reference the merged team releases and their updated member locks. 为市场中的两个团队和全部 11 位成员发布透明人像。团队卡片复用组长形象,成员图片由独立 sidecar 提供,旧客户端仍可读取原有团队条目。团队指针更新至已合并的团队版本与成员锁文件。 ## Validation - Catalog metadata validation: 0 errors (123 existing warnings) - i18n validation: 0 errors (123 existing warnings) - Translation freshness: passed - Image assets: all 11 member portraits and 2 team portraits are transparent WebP files
This commit is contained in:
45
schemas/team-member-avatars.v1.schema.json
Normal file
45
schemas/team-member-avatars.v1.schema.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Market Team Member Portraits",
|
||||
"description": "Optional market-only portraits for published team members. Keep this separate from entry.json so older clients can continue to read the team.",
|
||||
"type": "object",
|
||||
"required": ["schemaVersion", "members"],
|
||||
"properties": {
|
||||
"$schema": {
|
||||
"type": "string",
|
||||
"description": "Relative path to this validation schema."
|
||||
},
|
||||
"schemaVersion": {
|
||||
"type": "integer",
|
||||
"const": 1,
|
||||
"description": "Sidecar format version."
|
||||
},
|
||||
"members": {
|
||||
"type": "object",
|
||||
"description": "Portraits keyed by published team roster member ID.",
|
||||
"propertyNames": {
|
||||
"pattern": "^[A-Za-z0-9_-]+$"
|
||||
},
|
||||
"additionalProperties": {
|
||||
"type": "object",
|
||||
"required": ["image"],
|
||||
"properties": {
|
||||
"image": {
|
||||
"type": "object",
|
||||
"required": ["path"],
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"pattern": "^(?!/|[A-Za-z]:|.*\\.\\.)(?:[A-Za-z0-9_.-]+/)*[A-Za-z0-9_.-]+\\.(?:png|jpe?g|webp)$",
|
||||
"description": "Relative portrait image path inside the market team directory."
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
Reference in New Issue
Block a user