统一维护与错误页面并修复移动端顶部文案

新增品牌维护页和404页面并补齐网关路由
将临时维护公告迁到release外运行态覆盖并增加构建门禁
同步Nginx、Pingora、部署脚本与生产运维文档
隐藏移动端顶部SEO介绍并保留桌面端与H1语义
增加维护页、404页和移动端回归测试
This commit is contained in:
2026-07-13 16:26:27 +08:00
parent 36a8719d0f
commit f4153ebfa7
23 changed files with 781 additions and 144 deletions
@@ -4133,6 +4133,9 @@ test('desktop home exposes one product h1 and section h2 headings', () => {
expect(screen.getAllByRole('heading', { level: 1 })).toHaveLength(1);
expect(productHeading.closest('button')).toBeNull();
expect(productHeading.closest('header')?.classList.contains('sr-only')).toBe(
false,
);
expect(
screen.getByRole('heading', { level: 2, name: '今日游戏' }),
).toBeTruthy();
@@ -4142,7 +4145,7 @@ test('desktop home exposes one product h1 and section h2 headings', () => {
).toBeTruthy();
});
test('mobile shell exposes one product h1 outside interactive content', () => {
test('mobile shell keeps the product h1 visually hidden outside interactive content', () => {
renderLoggedOutHomeView(vi.fn(), {}, 'profile');
const productHeading = screen.getByRole('heading', {
@@ -4152,6 +4155,9 @@ test('mobile shell exposes one product h1 outside interactive content', () => {
expect(screen.getAllByRole('heading', { level: 1 })).toHaveLength(1);
expect(productHeading.closest('button')).toBeNull();
expect(productHeading.closest('header')?.classList.contains('sr-only')).toBe(
true,
);
});
test('logged in create tab shows real wallet balance beside the brand', () => {
@@ -1006,9 +1006,15 @@ function SectionHeader({ title, detail }: { title: string; detail: string }) {
);
}
function HomeSeoIntro() {
function HomeSeoIntro({
visuallyHidden = false,
}: {
visuallyHidden?: boolean;
}) {
return (
<header className="mb-2 min-w-0 shrink-0 px-1">
<header
className={visuallyHidden ? 'sr-only' : 'mb-2 min-w-0 shrink-0 px-1'}
>
<h1 className="text-sm font-semibold leading-5 text-[var(--platform-text-strong)]">
AI工作台
</h1>
@@ -5029,7 +5035,7 @@ export function RpgEntryHomeView({
</div>
) : null}
<HomeSeoIntro />
<HomeSeoIntro visuallyHidden />
<div className="platform-tab-panel-stack min-w-0 flex-1">
{tabPanels}