refactor: 完成技能数据结构重构 - 分离内部信息与发布信息

- 新增技能内部信息与商店发布信息分离的数据结构
- 重构技能详情页为四段式布局(概览+当前生效版本+版本历史+管理)
- 移除历史版本中的下载按钮
- 版本历史改为卡片布局,新增发布信息预览
- 分类与标签合并显示,分类作为第一个标签
- 更新按钮禁用逻辑:下架审核中/已下架状态禁用上传新版本
- 下架技能按钮添加二次确认弹窗
- 补充10个不同状态的技能示例数据
- 同步 delta specs 到主 specs
- 归档变更:refactor-skill-data-structure
This commit is contained in:
2026-03-21 18:09:43 +08:00
parent 8179ff2f95
commit 017a8af2a3
21 changed files with 1452 additions and 646 deletions

View File

@@ -363,6 +363,18 @@
color: #FFFFFF;
}
.btn-warning {
background: var(--color-warning);
border-color: var(--color-warning);
color: #FFFFFF;
}
.btn-warning:hover {
background: #D97706;
border-color: #D97706;
color: #FFFFFF;
}
.btn-danger {
background: var(--color-danger);
border-color: var(--color-danger);
@@ -2160,6 +2172,193 @@ input:checked + .slider:before {
.dev-info-label { width: 100px; flex-shrink: 0; color: #64748B; font-size: 14px; font-weight: 500; }
.dev-info-value { flex: 1; color: #1E293B; font-size: 14px; }
/* 技能概览卡片样式 */
.skill-overview-card {
background: #FFFFFF;
border: 1px solid #E2E8F0;
border-radius: 16px;
padding: 24px;
display: flex;
gap: 20px;
align-items: flex-start;
}
.skill-overview-card .skill-icon {
width: 64px;
height: 64px;
border-radius: 14px;
background: linear-gradient(135deg, #3B82F6 0%, #8B5CF6 100%);
display: flex;
align-items: center;
justify-content: center;
color: #FFFFFF;
font-size: 28px;
flex-shrink: 0;
}
.skill-overview-card .skill-header {
flex: 1;
min-width: 0;
}
.skill-overview-card .skill-name-row {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
margin-bottom: 8px;
}
.skill-overview-card .skill-name {
font-size: 22px;
font-weight: 800;
color: #1E293B;
margin: 0;
}
.skill-overview-card .skill-actions {
margin-left: auto;
}
.skill-overview-card .skill-desc-row {
margin-top: 8px;
}
.skill-overview-card .skill-desc-text {
margin: 0;
color: #64748B;
font-size: 14px;
line-height: 1.6;
}
/* 技能分类标签 */
.skill-category-tag {
padding: 4px 10px;
background: #EFF6FF;
color: #1E40AF;
border-radius: 6px;
font-size: 12px;
font-weight: 600;
}
/* 版本历史卡片样式 */
.version-history-card {
background: #F8FAFC;
border: 1px solid #E2E8F0;
border-radius: 12px;
padding: 20px;
transition: all 0.2s ease;
}
.version-history-card:hover {
background: #FFFFFF;
border-color: #CBD5E1;
box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
}
.version-card-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
margin-bottom: 16px;
flex-wrap: wrap;
}
.version-card-header > div:first-child {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.version-number {
font-size: 15px;
font-weight: 800;
color: #1E293B;
background: #FFFFFF;
padding: 4px 10px;
border-radius: 6px;
border: 1px solid #E2E8F0;
}
.version-card-body {
display: flex;
flex-direction: column;
gap: 12px;
}
/* 发布信息预览区域 */
.version-public-preview {
display: flex;
gap: 14px;
align-items: flex-start;
padding: 14px;
background: #FFFFFF;
border-radius: 10px;
border: 1px solid #E2E8F0;
}
.version-public-preview-icon {
font-size: 32px;
flex-shrink: 0;
}
.version-public-preview-content {
flex: 1;
min-width: 0;
}
.version-public-preview-title {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 6px;
}
.version-public-preview-name {
font-size: 15px;
font-weight: 700;
color: #1E293B;
margin: 0;
}
.version-public-preview-tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: 8px;
}
.version-public-preview-desc {
font-size: 13px;
color: #64748B;
margin: 0;
line-height: 1.5;
}
/* 拒绝理由样式 */
.dev-rejection-reason {
padding: 12px 14px;
background: #FEF2F2;
border: 1px solid #FECACA;
border-radius: 8px;
color: #991B1B;
font-size: 13px;
line-height: 1.6;
}
/* 管理卡片样式 */
.manage-card {
background: #F8FAFC;
}
.manage-actions {
display: flex;
gap: 12px;
flex-wrap: wrap;
}
/* ===== Home page inline styles ===== */
.home-layout {
min-height: 100vh;