fix: hide unpublished placeholder collections

This commit is contained in:
Codex User
2026-09-09 10:39:23 +08:00
parent 4e87dcb849
commit d8e3f55a41
2 changed files with 17 additions and 17 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ interface Props {
export default function GlobalCTA({ export default function GlobalCTA({
title = '下一步如何行动?', title = '下一步如何行动?',
desc = '任意页面均可直接发起咨询,不强制浏览完整链路。一期提供轻量对照与深度陪跑两条路径。', desc = '帮助企业看清位置、找到方向、持续进化。',
primaryLabel = '咨询获取方案', primaryLabel = '咨询获取方案',
primaryTo = '/contact', primaryTo = '/contact',
secondaryLabel = '看看你的企业', secondaryLabel = '看看你的企业',
+16 -16
View File
@@ -45,7 +45,7 @@ export async function fetchCMSPublic(): Promise<CMSPublicData | null> {
// 归一化:CMS行 -> 前端 Model // 归一化:CMS行 -> 前端 Model
function normalizeFourValues(raw:any[]): FourValue[]{ function normalizeFourValues(raw:any[]): FourValue[]{
if(!raw || raw.length===0) return FALLBACK_FOUR if(!raw) return FALLBACK_FOUR
return raw.map(r=>({ return raw.map(r=>({
id: r.id, id: r.id,
slug: r.key, slug: r.key,
@@ -64,7 +64,7 @@ function normalizeFourValues(raw:any[]): FourValue[]{
})) }))
} }
function normalizeServices(raw:any[]): Service[]{ function normalizeServices(raw:any[]): Service[]{
if(!raw || raw.length===0) return FALLBACK_SERVICES if(!raw) return FALLBACK_SERVICES
return raw.map(r=>({ return raw.map(r=>({
id: r.id, id: r.id,
slug: r.slug, slug: r.slug,
@@ -87,7 +87,7 @@ function normalizeServices(raw:any[]): Service[]{
})) }))
} }
function normalizeCases(raw:any[]): Case[]{ function normalizeCases(raw:any[]): Case[]{
if(!raw || raw.length===0) return FALLBACK_CASES if(!raw) return FALLBACK_CASES
return raw.map(r=>({ return raw.map(r=>({
id: r.id, id: r.id,
slug: r.slug, slug: r.slug,
@@ -102,21 +102,21 @@ function normalizeCases(raw:any[]): Case[]{
updatedAt: r.updated_at||new Date().toISOString(), updatedAt: r.updated_at||new Date().toISOString(),
coverImage: r.cover_url, coverImage: r.cover_url,
narrative: { narrative: {
originalState: r.original_state || '【占位】', originalState: r.original_state || '',
goal: r.goal || '【占位】', goal: r.goal || '',
gap: r.gap || '【占位】', gap: r.gap || '',
rootCause: r.root_cause || '【占位】', rootCause: r.root_cause || '',
amebaIntervention: r.ameba_intervention || '【占位】', amebaIntervention: r.ameba_intervention || '',
evolutionPath: r.evolution_path || '【占位】', evolutionPath: r.evolution_path || '',
actions: r.actions || '【占位】', actions: r.actions || '',
phasedResult: r.phased_result || '【占位】', phasedResult: r.phased_result || '',
continuousIteration: r.continuous_iteration || '【占位】', continuousIteration: r.continuous_iteration || '',
}, },
results: [] results: []
})) }))
} }
function normalizeInsights(raw:any[]): Insight[]{ function normalizeInsights(raw:any[]): Insight[]{
if(!raw || raw.length===0) return FALLBACK_INSIGHTS if(!raw) return FALLBACK_INSIGHTS
return raw.map(r=>({ return raw.map(r=>({
id: r.id, id: r.id,
slug: r.slug, slug: r.slug,
@@ -130,11 +130,11 @@ function normalizeInsights(raw:any[]): Insight[]{
createdAt: r.created_at||new Date().toISOString(), createdAt: r.created_at||new Date().toISOString(),
updatedAt: r.updated_at||new Date().toISOString(), updatedAt: r.updated_at||new Date().toISOString(),
coverImage: r.cover_url, coverImage: r.cover_url,
contentBlocks: r.content_html ? [{id:'b1', type:'paragraph' as const, text: r.content_html}] : [{id:'b1', type:'paragraph' as const, text: '【占位】'}], contentBlocks: r.content_html ? [{id:'b1', type:'paragraph' as const, text: r.content_html}] : [],
})) }))
} }
function normalizeMethods(raw:any[]): MethodCapability[]{ function normalizeMethods(raw:any[]): MethodCapability[]{
if(!raw || raw.length===0) return FALLBACK_METHODS if(!raw) return FALLBACK_METHODS
return raw.map(r=>({ return raw.map(r=>({
id: r.id, id: r.id,
slug: r.id, slug: r.id,
@@ -151,7 +151,7 @@ function normalizeMethods(raw:any[]): MethodCapability[]{
})) }))
} }
function normalizeAmb(raw:any[]): Record<string, AmbStatusMeta>{ function normalizeAmb(raw:any[]): Record<string, AmbStatusMeta>{
if(!raw || raw.length===0) return FALLBACK_AMB if(!raw) return FALLBACK_AMB
return raw.reduce((result, r) => { return raw.reduce((result, r) => {
const status = String(r.key || '').toUpperCase() as AmbStatusMeta['status'] const status = String(r.key || '').toUpperCase() as AmbStatusMeta['status']
if (!['A','M','B'].includes(status)) return result if (!['A','M','B'].includes(status)) return result