chore: sync marketing pages, CMS extensions, tests and project docs

同步工作区剩余变更,主要包括:
- 营销页面组件与布局持续优化(about/news/services/solutions/team 等)
- 详情页四层叙事组件、布局组件、UI 组件调整
- CMS 数据模型、API 路由、权限、工作流、站内通知、媒体管理扩展
- 新增/补充单元测试与 E2E 测试(cms-workflow.spec.ts 等)
- ESLint 9 迁移、jest/tsconfig 配置更新、依赖调整
- 新增 ADR、CMS 评估文档、Release Review / Acceptance 报告
- 移除水墨装饰组件与大体积未使用字体文件
This commit is contained in:
张翔
2026-07-25 08:04:01 +08:00
parent e35090b914
commit 10404dbb36
208 changed files with 18107 additions and 8330 deletions
+13 -2
View File
@@ -7,6 +7,9 @@ export const metadata: Metadata = {
description: `${COMPANY_INFO.name}隐私政策`,
};
// ISR:生产环境每 1 小时自动重新验证,CMS 发布/更新时通过 /api/cms/revalidate 主动刷新
export const revalidate = 3600;
function PrivacyContent() {
return (
<div className="prose prose-lg max-w-none">
@@ -224,6 +227,8 @@ function PrivacyContent() {
export default async function PrivacyPolicyPage() {
let cmsContent: string | null = null;
let heroTitle = '隐私政策';
let heroDescription = '我们重视您的隐私,致力于保护您的个人信息安全';
try {
const items = await getPublishedItems('legal-page');
@@ -231,6 +236,12 @@ export default async function PrivacyPolicyPage() {
if (privacyItem && typeof privacyItem.data.content === 'string' && privacyItem.data.content.length > 0) {
cmsContent = privacyItem.data.content as string;
}
if (privacyItem && typeof privacyItem.data.heroTitle === 'string' && privacyItem.data.heroTitle.length > 0) {
heroTitle = privacyItem.data.heroTitle as string;
}
if (privacyItem && typeof privacyItem.data.heroDescription === 'string' && privacyItem.data.heroDescription.length > 0) {
heroDescription = privacyItem.data.heroDescription as string;
}
} catch {
// CMS not available, fall back to inline content
}
@@ -240,10 +251,10 @@ export default async function PrivacyPolicyPage() {
<div className="bg-gradient-to-br from-[var(--color-brand)] via-[var(--color-brand)]/80 to-[var(--color-hero-dark-end)] py-20">
<div className="container-wide">
<h1 className="text-4xl md:text-5xl font-bold text-white mb-4">
隐私政策
{heroTitle}
</h1>
<p className="text-xl text-white/90 max-w-2xl">
我们重视您的隐私,致力于保护您的个人信息安全
{heroDescription}
</p>
</div>
</div>