docs+feat: 重构规格与 Gitea 式 SSR 骨架(首页)

在 rebuild/gitea-ssr 落地产品规格、Cursor 规则,以及 Go 模板 SSR 首页/板块列表;未迁移路径仍回落 SPA,便于对照 main。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-29 03:11:25 +08:00
parent 4dc3bbb13f
commit 1414c71dec
28 changed files with 2891 additions and 24 deletions

View File

@@ -0,0 +1,32 @@
---
description: Gitea 式 SSR 重构总则rebuild/gitea-ssr 分支)
alwaysApply: true
---
# Gitea 式 SSR 重构
## 分支
- 功能开发在 **`rebuild/gitea-ssr`****不要**把破坏性 SSR 替换推到 `main`。
- `main` 保留 React SPA用作对照checkout / worktree
## 渲染
- 公开页(首页、板块、帖详情、用户页等)必须用 **Go `html/template` 服务端渲染完整 HTML**。
- 禁止为已迁移公开页恢复 React SPA 空壳;禁止「用户 SPA + 爬虫专用 HTML」双轨作为长期方案。
- JSON `/api` 仅用于交互增强与管理后台,**不得**作为公开页首屏唯一数据来源。
## 架构参照
对齐 [Gitea](https://github.com/go-gitea/gitea) 职责划分:
- `routers/web` — HTML 页面路由
- `templates/` — 模板
- `web_src/` → `public/assets/` — 渐进增强 CSS/JS
- 现有 `service/`、`model/` 可复用业务逻辑
细节见 [`docs/rebuild-spec/08-gitea-ssr-architecture.md`](docs/rebuild-spec/08-gitea-ssr-architecture.md)。
## 产品规格
实现功能前按 [`docs/rebuild-spec/README.md`](docs/rebuild-spec/README.md) 阅读顺序核对;业务规则以 `05-business-rules.md` 为准。

View File

@@ -0,0 +1,20 @@
---
description: 产品规格为唯一业务事实来源
alwaysApply: true
---
# 规格文档对照
重构实现时以 [`docs/rebuild-spec/`](docs/rebuild-spec/) 为准,不另发明业务语义。
| 需求类型 | 查阅 |
|----------|------|
| 要不要做某功能 | `02-features.md` |
| 表字段 / 枚举 / settings 键 | `03-data-model.md` |
| HTTP 路径与 JSON 形状 | `04-api.md` |
| 审核 / 积分 / 门控 / 悬赏等 | `05-business-rules.md` |
| 路由与交互信息架构 | `06-pages-ux.md` |
| 配置与部署 | `07-config-ops.md` |
| SSR 目录与分支 | `08-gitea-ssr-architecture.md` |
规格与代码冲突时:以**当前分支代码**行为为准,并应回写修正规格。

View File

@@ -0,0 +1,13 @@
---
description: Go HTML 模板约定SSR
globs: templates/**/*
alwaysApply: false
---
# 模板约定
- 布局:`base.tmpl` + 各页定义 `content` 等 block或 `{{template}}` 组合);保持片段小而可复用。
- **默认转义**`{{.Title}}` 等普通插值;用户生成 HTML 必须先经现有消毒(如 `SanitizePostHTML`),再用显式安全函数输出,禁止随意放开。
- 静态资源走 `/ssr-assets/...``public/assets` 嵌入),不要写死外链 CDN除非产品规格要求
- 页面数据通过 handler 组装的 view model 传入;模板内不做复杂业务判断。
- 中文 UI 文案可写在模板;与品牌相关的站点名等从 settings/view 传入。