manual save(2026-01-22 18:52)
This commit is contained in:
@@ -1,48 +1,122 @@
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { Header } from '../components/Header'
|
||||
import { Footer } from '../components/Footer'
|
||||
import { PostCard } from '../components/PostCard'
|
||||
import { PostCardSkeleton } from '../components/PostCardSkeleton'
|
||||
import { Posts } from '../clientsdk/sdk.gen'
|
||||
import { createClient } from '../clientsdk/client'
|
||||
import { customQuerySerializer } from '../clientsdk/querySerializer'
|
||||
import { TENANT_SLUG, TENANT_API_KEY, API_URL } from '../config'
|
||||
import React from 'react'
|
||||
import { SectionShell } from '../components/SectionShell'
|
||||
|
||||
const client = createClient({
|
||||
baseUrl: API_URL,
|
||||
querySerializer: customQuerySerializer,
|
||||
headers: {
|
||||
'X-Tenant-Slug': TENANT_SLUG,
|
||||
'X-API-Key': TENANT_API_KEY,
|
||||
},
|
||||
})
|
||||
const HeroWorldView: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="HeroWorldView"
|
||||
title="HeroWorldView|世界观判断"
|
||||
headingAs="h1"
|
||||
lead="一个思想驱动型官网的开场:先定义全球化决策的世界观与判断框架。"
|
||||
notes={['边界:世界观与主张,不展示产品 UI', '连接:引出决策不可控的问题']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const DecisionProblem: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="DecisionProblem"
|
||||
title="DecisionProblem|决策不可控"
|
||||
lead="说明决策在信息噪音、约束冲突与时间压力下为何不可控。"
|
||||
notes={['边界:问题机制与代价', '输出:决策痛点的共同语言']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const CoreThesis: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="CoreThesis"
|
||||
title="CoreThesis|反常识观点"
|
||||
lead="用一句核心论断把读者拉到同一认知:合规与增长是同一件事的两面。"
|
||||
notes={['边界:只讲主张与论证线索', '可扩展:对比式表达与关键证据']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const Methodology: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="Methodology"
|
||||
title="Methodology|方法论来源"
|
||||
lead="交代方法论来自哪些实践与验证路径,为 How 页面做铺垫。"
|
||||
notes={['边界:来源与原则', '连接:跳转到 How']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const SystemOverview: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="SystemOverview"
|
||||
title="SystemOverview|系统级解法"
|
||||
lead="用系统视角解释:不是功能堆叠,而是可复用的决策-执行系统。"
|
||||
notes={['边界:系统全景,不拆到模块细节', '连接:跳转到 System']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const DiscoveryIntro: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="DiscoveryIntro"
|
||||
title="DiscoveryIntro|决策雷达"
|
||||
lead="Discovery 作为持续的决策输入:思想、框架与证据的入口。"
|
||||
notes={['边界:内容入口,不做博客化归档', '连接:跳转到 Discovery']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const MeasurableOutcome: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="MeasurableOutcome"
|
||||
title="MeasurableOutcome|可度量结果"
|
||||
lead="强调可验证:输出物、指标、复盘机制,而非宏大叙事。"
|
||||
notes={['边界:指标与结果类型,不披露敏感数据', '可扩展:指标卡片/结果对照']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const TrustProof: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="TrustProof"
|
||||
title="TrustProof|权威背书"
|
||||
lead="放置信任材料:客户类型、合作方式、第三方背书(占位)。"
|
||||
notes={['边界:信任材料分类与呈现方式', '连接:跳转到 Proof']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const SoftCTA: React.FC = () => {
|
||||
return (
|
||||
<SectionShell
|
||||
sectionKey="SoftCTA"
|
||||
title="SoftCTA|行动入口"
|
||||
lead="提供低压力行动入口:先对齐问题,再进入下一步。"
|
||||
notes={['边界:弱 CTA,避免硬销售', '连接:跳转到 Contact']}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export const Home: React.FC = () => {
|
||||
const [posts, setPosts] = useState<any[]>([])
|
||||
const [loading, setLoading] = useState(true)
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
return (
|
||||
<div>
|
||||
<HeroWorldView />
|
||||
<DecisionProblem />
|
||||
<CoreThesis />
|
||||
<Methodology />
|
||||
<SystemOverview />
|
||||
<DiscoveryIntro />
|
||||
<MeasurableOutcome />
|
||||
<TrustProof />
|
||||
<SoftCTA />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
const fetchPosts = async () => {
|
||||
try {
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
const response = await Posts.listPosts({
|
||||
client,
|
||||
query: {
|
||||
limit: 10,
|
||||
sort: '-createdAt',
|
||||
},
|
||||
})
|
||||
|
||||
setPosts((response as any)?.data?.docs || [])
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : '加载失败')
|
||||
console.error('获取文章失败:', err)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}
|
||||
|
||||
fetchPosts()
|
||||
|
||||
Reference in New Issue
Block a user