文档与源码一致性审计(2026-10-13)
依据 ~/workspaces/standards/文档与源码一致性审计规范.md 执行:枚举文档面 → 逐条取证 (file:line)→ 三类分桶 → 落表 → 修复(以源码为真相,不改码凑文档)→ 门禁复核。
- 审计面:根 README.md / README.zh.md、apps/、services/ README、docs/** 站点页、 gh 仓库门面(description / topics)。否定性主张("未创建/未实现")均先验证搜索路径。
- 三桶计数:A 文档超前于码 19 · B 码超前于文档 32 · C 描述不符 31(共 82 项,全部修复)。
- P0:1 项(门面 mini-program)。P1:18 项。其余 P2。
- 修复原则:一律以码为准;文档删除超前主张或标注「规划」,补齐缺失面,纠正不符措辞。 本轮零代码改动。
P0 / P1 清单
| ID | 严重度 | 摘要 |
|---|---|---|
| D-01 | P0 | gh 门面 description/topics 宣称 mini-program,实际拍板不开工 |
| D-02 | P1 | 根 README(英/中)称 realtime-hub「尚未创建」,服务已全量落地 |
| D-06 | P1 | 根 README 无 community/realtime-hub/user-service-rpc 现状小节 |
| D-12 | P1 | 根 README 称「七服务数据面双驱动」「各服务独立 Dockerfile」;双驱动仅 5 服务,rpc 无镜像 |
| D-13 | P1 | apps/README 称「设计体系/路由规范/国际化统一经 packages/ 支持」,packages/ 仅 config |
| D-14 | P1 | services/README 给 user-service 安了「好友/成就/积分/通知偏好」 |
| D-18 | P1 | services/README 称 realtime-hub「M1 骨架」,语音信令/推送/隧道均已落地 |
| D-20 | P1 | gateway README 称「BaseURL 未配置则路由不注册(可选部署)」,实际除 RealtimeHub 外启动即 panic |
| D-32 | P1 | content-service README 指标前缀 content_service_gamecatalog_client_* 全错 |
| D-40 | P1 | docs/index.md 称「api-gateway 管登录签发」;登录为反代,签发在 user-service |
| D-44 | P1 | docs/clients.md 称 realtime-hub「尚未创建」,与自身 2026-10-11 记录矛盾 |
| D-48 | P1 | 开发指南服务树「七个均已落地」且无 realtime-hub |
| D-49 | P1 | 开发指南 Dockerfile 摘录 golang:1.22,实为 1.26 |
| D-51 | P1 | 开发指南跨服务指标名与实现不一致 |
| D-57 | P1 | 开发指南 demo 账号登录示例——服务无种子用户,必 401 |
| D-64 | P1 | mobile_plan 称 realtime-hub「未落地」 |
| D-65 | P1 | mobile_plan 称图片上传「另立后端任务」,gateway /upload 已落地并双端接线 |
| D-67 | P1 | backlog 顺延表仍列 realtime-hub「拍板不开工」,与同文档第 10 行矛盾 |
| D-83 | P1 | apps/mobile-app 无 README(唯一文档是通用 AGENTS.md) |
审计表
图例:类别 A=文档超前于码 / B=码超前于文档 / C=描述不符。全部条目本轮已修复。
| ID | 页 | 主张 | 源码证据(file:line) | 类别 | 严重度 | 修法 |
|---|---|---|---|---|---|---|
| D-01 | gh 门面 | description/topics 宣称 mini-program 客户端 | apps/mini-program 不存在;docs/backlog.md 顺延表「拍板不开工」 | A | P0 | description 去掉 mini-program、删 topic |
| D-02 | README.md:53-55 / README.zh.md:53-54 | 七服务有码,realtime-hub「尚未创建」 | services/realtime-hub/realtime-hub.go:1、etc/realtime-hub.yaml:2、Dockerfile | B | P1 | 改八服务,realtime-hub 移出未建清单 |
| D-03 | README.md:14 / README.zh.md:14 | nightly 产物 ×6(六个后端服务) | .github/workflows/nightly.yml:47-53 七个 build_service | C | P2 | ×7(七个服务) |
| D-04 | README.md:77 / README.zh.md:74 | mobile-app 聚合开黑/战绩/活动 | apps/mobile-app/src/app/(tabs)/_layout.tsx 五 Tab 无开黑/活动 | A | P2 | 改战绩/攻略/社区/通知 |
| D-05 | README.md:87 / README.zh.md:84 | 「M0–M3 已落地」绝对化;「CI lint+typecheck + expo export 走查」暗示 CI 跑 export | docs/mobile_plan.md(真机回归未完成);.github/workflows/ci.yml:87-91 仅 lint+typecheck | C | P2 | 改「代码切片已落地 + 真机回归待验」「CI 只跑 lint+typecheck,export 走查为记录」 |
| D-06 | README.md 服务现状节 / README.zh.md | 无 community/realtime-hub/rpc 小节 | services/community/internal/handler/routes.go:28-258;services/realtime-hub/internal/handler/routes.go:63-66 | B | P1 | 补 6/7/8 三节,web 顺延为 9 |
| D-07 | README.md 端口表 / README.zh.md | 无 realtime-hub 行 | services/realtime-hub/etc/realtime-hub.yaml:2(:8893) | B | P2 | 补行 |
| D-08 | README.md 快速体验 / README.zh.md | 启动清单无 realtime-hub | services/realtime-hub/realtime-hub.go:21 | B | P2 | 补 go run 行 |
| D-10 | README.md:153 / README.zh.md:150 | web 社区仅「关注模式」 | apps/web-client/src/pages/CommunityPage.tsx:31(latest/hot/mine/followed/search) | B | P2 | 补四模式 + 关键词搜索 |
| D-11 | README.md:141 / README.zh.md:138 | 反代清单缺私信/审核(中版另缺通知) | services/api-gateway/internal/community/routes.go:58-67 | B | P2 | 清单补 messages/moderation/notifications |
| D-12 | README.md 技术特性 / README.zh.md | 「七服务数据面双驱动」「各服务目录有独立 Dockerfile」 | 双驱动仅 5 服务;services/user-service-rpc/ 无 Dockerfile | C | P1 | 限定五个 SQLite 服务;注明 rpc 无镜像、hub 无状态 |
| D-13 | apps/README.md:9 | 设计体系/路由规范/国际化统一经 packages/ 支持 | packages/ 仅 config(env/lint/make) | A | P1 | 改为 config 现状 + 其余属规划 |
| D-14 | services/README.md:6 | user-service 含好友/成就/积分/通知偏好 | services/user-service/model/usermodel.go:246(仅 users 表) | A | P1 | 裁为账号/授权/资料/推荐,其余标规划 |
| D-15 | services/README.md:7 | game-catalog 含版本元数据 | services/game-catalog/model/gamemodel.go:81 无 version 字段 | A | P2 | 删除 |
| D-16 | services/README.md:8 | content-service 含审核 | services/content-service/internal/handler/routes.go:15-89 无审核端点 | A | P2 | 改「发布状态管理」 |
| D-17 | services/README.md:10 | data-panel 含榜单 API | services/data-panel/internal/handler/routes.go 仅 4 路由 | A | P2 | 删除 |
| D-18 | services/README.md:13 | realtime-hub「M1 骨架」,语音信令/推送 fanout 为 M3 规划 | services/realtime-hub/internal/hub/signal.go:16-34、push.go:39-53、README.md:41-46 M3 全勾 | B | P1 | 状态改「已落地」,职责列全量 |
| D-19 | services/README.md:9 | community 职责缺私信/审核 | services/community/internal/handler/routes.go:163-207 | B | P2 | 职责补私信、举报审核 |
| D-20 | services/api-gateway/README.md:17,28 | upstream 未配置则该组不注册(可选部署) | internal/proxy/upstream.go:20-22 panic;仅 internal/realtime/routes.go:17-19 跳过 | C | P1 | 改「除 RealtimeHub 外启动失败」 |
| D-21 | services/api-gateway/README.md:14 | 社区反代清单缺 messages/moderation/comments | internal/community/routes.go:58-67 | B | P2 | 清单补全 |
| D-22 | services/api-gateway/README.md:7-15 | 路由表无用户反代行 | internal/users/routes.go:25-27 | B | P2 | 补行 |
| D-23 | services/api-gateway/README.md:45 | 测试文件路径 internal/*/routes_integration_test.go | 实为 internal/handler/routes_integration_test.go + 各组 internal/*/routes_test.go | C | P2 | 改正路径 |
| D-24 | services/community/README.md:69 | 私信「双方各存一行视图」 | internal/model/directmessagemodel.go:66-79 单行 | C | P2 | 改「单行共享,is_read 仅翻转收件方」 |
| D-25 | services/community/README.md:154 | 「无出向调用」 | internal/realtime/publisher.go:27-36 POST hub /internal/publish | C | P2 | 限定「无 user-service 出向」,补 hub 发布 |
| D-26 | services/community/README.md:237 | Dockerfile golang:1.22 | services/community/Dockerfile:3 golang:1.26 | C | P2 | 改 1.26 |
| D-27 | services/community/README.md:53-55 | 通知端点缺 :id/read | internal/handler/routes.go:158 | B | P2 | 补端点 |
| D-28 | services/community/README.md:27-36 | 帖子端点缺评论三路由 | internal/handler/routes.go:87-104 | B | P2 | 补端点 |
| D-29 | services/community/README.md:172-191 | 配置块缺 Realtime/Prometheus | etc/community-api.yaml Realtime 段 + Prometheus 9094 | B | P2 | 补配置段 |
| D-30 | services/community/README.md:305 | 「当前版本 v1.2」 | 代码无版本标记 | A | P2 | 删除版本行 |
| D-31 | services/community/README.md:164-167 | 网关入口清单缺 messages | services/api-gateway/internal/community/routes.go:58-62 | B | P2 | 补 /api/v1/messages** |
| D-32 | services/content-service/README.md:29 | 指标前缀 content_service_gamecatalog_client_* | internal/metrics/metrics.go:14,24,35,45 实名 content_game_catalog_client_* | C | P1 | 改正指标名 |
| D-33 | services/content-service/README.md:29 | 「重试」为独立指标 | 无 retries 计数器,仅 retry_exhausted 状态标签 | A | P2 | 改口径 |
| D-34 | services/content-service/README.md:71-72 | guiderepository.go/commentrepository.go | model/guidemodel.go、commentmodel.go | C | P2 | 改正文件名 |
| D-35 | services/content-service/README.md:33-73 | 目录树缺 middleware/utils/client/cache/metrics/httperr/收藏文件 | 目录均在盘 | B | P2 | 补全目录树 |
| D-36 | services/content-service/README.md:7-14 | 功能清单缺收藏 | routes.go:53-65 收藏四端点 | B | P2 | 补「收藏攻略(幂等)」 |
| D-37 | services/content-service/README.md:217-224 | 配置块缺 Auth/Services.GameCatalog/Prometheus | etc/content-api.yaml 三段均在 | B | P2 | 补配置段 |
| D-38 | services/realtime-hub/README.md:3 | 「直连模式…隧道化列入 M3」 | 网关 internal/realtime/routes.go:26 隧道已落地(M3-2 [x]);Redis 中继已落地 | B | P2 | 引言更新为已落地 |
| D-39 | docs/index.md:7 | 首页 hero 无实时通道,仅「七个 go-zero 微服务」 | go.work 八模块(7 go-zero + realtime-hub) | B | P2 | hero 补实时中枢 + 新增「实时通道」feature |
| D-40 | docs/index.md:27 | 「api-gateway 管登录签发」 | internal/users/routes.go:26 登录为反代;签发在 user-service | C | P1 | 改「登录/注册反代」 |
| D-41 | docs/index.md:31 | 「六个服务各开 /metrics」 | etc/*.yaml 七个 Prometheus 端口 9091–9097 | C | P2 | 七个(9091–9097) |
| D-42 | docs/index.md:25 | community 特性缺私信/审核 | services/community/internal/handler/routes.go:163-207 | B | P2 | 特性补全 |
| D-43 | docs/README.md:5 | 「六服务开发指南」 | 指南服务树现八模块 | C | P2 | 改八服务 |
| D-44 | docs/clients.md:52 | realtime-hub「尚未创建」 | services/realtime-hub/ 存在;同文档上文 2026-10-11 已落地 | A | P1 | 移出未建清单 |
| D-45 | docs/clients.md:38-48 | 服务端表无 realtime-hub 行 | etc/realtime-hub.yaml:2 | B | P2 | 补行(8893,无 /metrics) |
| D-46 | docs/clients.md:46 | community 职责缺私信/审核 | routes.go:163-207 | B | P2 | 补全 |
| D-47 | docs/development-guide.md:13 | Go 建议 1.25+ | go.work:1 go 1.26.0 | C | P2 | 改 1.26+ |
| D-48 | docs/development-guide.md:48-55 | 服务树「七个均已落地」无 realtime-hub | go.work use 八模块 | B | P1 | 补 realtime-hub 行 |
| D-49 | docs/development-guide.md:1070 | 摘录 golang:1.22 | services/community/Dockerfile:3 golang:1.26 | C | P1 | 改 1.26 |
| D-50 | docs/development-guide.md:1213-1220 | /metrics 表缺 data-panel | services/data-panel/etc/data-panel-api.yaml 9097 | B | P2 | 补行 |
| D-51 | docs/development-guide.md:1242-1246 | 跨服务指标名/标签与实现不符 | internal/metrics/metrics.go:14,24,35,45 | C | P1 | 按实名改写(calls_total/duration/breaker_state/transitions) |
| D-52 | docs/development-guide.md:1275-1277 | 「六 target 9091–9096」「六服务 Log 块」 | deploy/prometheus/prometheus.yml 七 target;realtime-hub 无 Log 块 | C | P2 | 七 target 9091–9097;Log 块注明 hub 例外 |
| D-53 | docs/development-guide.md:1299-1300 | 「五服务补发布 /metrics(9091–9095)」 | docker-compose.yaml 发布 9091–9095+9097 | C | P2 | 六服务(9091–9095、9097) |
| D-54 | docs/development-guide.md:1312 | 「六 target up」 | 同 D-52 七 target | C | P2 | 改七 |
| D-55 | docs/development-guide.md:1399 | curl /health 探活 user-service | services/user-service/internal/handler/routes.go 未注册 /health | C | P2 | 换已注册的 /from/:name 路由 |
| D-56 | docs/development-guide.md:1415 | setup-go@v5 | .github/workflows/ci.yml:14 @v7 | C | P2 | 改 @v7 |
| D-57 | docs/development-guide.md:1352 | demo 账号直接登录 | model/usermodel.go 无种子用户 | A | P1 | 补注册步骤再登录 |
| D-58 | docs/development-guide.md:1331-1338 | 认证总览「6 个服务」无 realtime-hub | services/realtime-hub/internal/auth/auth.go HS256 | B | P2 | 改 7 服务 + 补 hub 行 |
| D-59 | docs/development-guide.md:1449 | 「content-service 攻略没有图片字段」 | model/guidemodel.go CoverImage | A | P2 | 改「攻略有 CoverImage,用户无头像」 |
| D-60 | docs/development-guide.md:1584 | 网关自有 handler 表缺 /upload、/uploads/:file | services/api-gateway/internal/handler/routes.go:37-43 | B | P2 | 补两项 |
| D-61 | docs/development-guide.md:1588 | 「community 无出向调用」 | services/community/internal/svc/service_context.go Realtime Publisher | C | P2 | 改「无 user-service 出向;向 hub 发布」 |
| D-62 | docs/development-guide.md:1572 | 「6 个服务均有 JWT 体系」 | 认证总览现 7 服务 | C | P2 | 改 7 |
| D-63 | docs/development-guide.md:1065 | 「各服务均有 Dockerfile 模式一致」 | user-service-rpc 无;api-gateway/realtime-hub distroless | C | P2 | 加限定 |
| D-64 | docs/mobile_plan.md:49 | 「realtime-hub 未落地」 | services/realtime-hub/ 全量落地(含语音信令 hub/signal.go) | A | P1 | 改已落地 |
| D-65 | docs/mobile_plan.md:90 | 「上传能力另立后端任务」 | gateway upload.go 已落地(6642132),双端接线 | A | P1 | 改已解除 |
| D-66 | docs/realtime-hub.md:32 | 「握手校验 JWT,失败即断开」 | internal/handler/routes.go:76-81 Upgrade 前回 401 | C | P2 | 改「失败回 401 拒绝(升级前)」 |
| D-67 | docs/backlog.md:52 | 顺延表含 realtime-hub「拍板不开工」 | 同文档第 10 行 2026-10-11 已落地 | C | P1 | 顺延表删 realtime-hub |
| D-68 | docs/backlog.md:19-28 | CI 快照缺 realtime-hub 行;包数过期 | realtime-hub 5 测试包;api-gateway 12/community 19 包(2026-10-13 实测) | B | P2 | 补行 + 快照口径注 |
| D-69 | docs/backlog.md:50-51 | community README:271/272 行号漂移 | 实际 :285/:286 | C | P2 | 改行号 |
| D-70 | docs/architecture/overview.zh.md:28 | 「按数据模型落库(例如 Postgres/ElasticSearch)」+ 消息总线 Kafka/PubSub | 全仓无 Postgres/ES/Kafka;存储 SQLite/MySQL | A | P2 | 改双驱动现状,候选技术标「候选」 |
| D-71 | docs/architecture/overview.zh.md:30 | 「经 shared-utils SDK 上报到数据管道」 | packages/ 仅 config;无数据管道 | A | P2 | 改战绩直写 data-panel,SDK 标规划 |
| D-72 | docs/architecture/overview.zh.md:49 | 「每个服务提供 docs/ 子目录」 | services/*/docs 均不存在 | A | P2 | 改「各服务 README.md」 |
| D-73 | docs/architecture/overview.zh.md:50 | 「tests/ 下的契约测试」 | tests/ 仅 README 且自述规划 | A | P2 | 改「各服务内测试覆盖,跨服务 tests/ 为规划」 |
| D-74 | docs/architecture/overview.zh.md:51 | 「平台层提供的 CI/CD pipeline」 | CI 在 .github/workflows;platform/ 为规划 | C | P2 | 改 workflows 口径 |
| D-75 | docs/architecture/topology.zh.md:10 | user-service 职责含「成长体系」 | 无成长/等级代码(grep 无命中) | A | P2 | 删除 |
| D-76 | docs/architecture/topology.zh.md:13 | community 职责缺私信/审核/搜索 | routes.go:130,163-207 | B | P2 | 职责补全 |
| D-77 | docs/architecture/topology.zh.md:59 | community 反代清单缺 search/comments/messages/moderation | services/api-gateway/internal/community/routes.go:32,42-44,58-67 | B | P2 | 清单补全 |
| D-78 | docs/architecture/topology.zh.md:79 | 「各服务目录有独立 Dockerfile」 | user-service-rpc 无 Dockerfile | C | P2 | 加限定(rpc 无镜像、两服务 distroless) |
| D-79 | apps/web-client/README.md:25-26 | 路由清单缺 8 条已实现路由 | apps/web-client/src/App.tsx:156-264 | B | P2 | 补全 15 条 |
| D-80 | apps/web-client/GUIDE.md:9-19 | 路由表缺 6 条已实现路由 | 同上(/discover /games /games/:id /stats /profile /users/:id) | B | P2 | 补 6 行(含权限列) |
| D-81 | apps/web-client/GUIDE.md:35 | 「首页或攻略列表页的创建攻略按钮」 | 仅 GuidesPage.tsx:155 有该按钮 | C | P2 | 改「攻略列表页」 |
| D-82 | apps/web-client/GUIDE.md:118 | 网关变量「登录/推荐/精选优先走网关」 | 配置后全量调用走网关(client.ts 各 fetcher) | C | P2 | 改「所有服务调用优先走网关」 |
| D-83 | apps/mobile-app | 无 README.md(根 README:26、apps/README.md:4 均引用该端) | find 全目录仅 AGENTS.md | B | P1 | 新建 README(路由/配置/脚本/状态) |
否定性主张核验(先验证搜索路径再下结论)
以下「未落地」类主张经全仓 grep(services/ apps/ packages/ platform/ deploy/ tools/ docker-compose.yaml go.work,排除 .md/.out)确认属实,保留原判:
- matchmaking、crawler-jobs、mini-program、admin-console:目录不存在。
- Elasticsearch / ML 推荐 / 视频内容 / GraphQL:无实现。
- Postgres / Kafka:无实现(overview.md 原文已改为「候选」)。
修复状态与门禁
- 全部 82 项已于本轮修复(门面 1 项经
gh repo edit生效;其余落仓库提交)。 - 本轮零代码改动;Go 全模块
-race测试 2026-10-13 实测全绿 (community 353 / gateway 124 / realtime-hub 45 / user-service 116 / game-catalog 100 / content-service 301 / data-panel 96 / user-service-rpc 5)。 - 文档站构建门禁:
docs/VitePressnpm run build通过(本页随站点发布)。