本文件是
backend/README.md铁律 11(注释标准) 的落地模板与样例清单。 所有样例代码可编译(go build ./...+go vet ./...全绿,本地 go 1.27.x), 每个导出符号均带 GoDoc 中文注释(功能说明+样例 / 入参逐项 / 出参逐项+异常场景)。 架构决策依据见../unified/01-architecture/backend-technical-architecture.md。
| 包 | 路径 | 落地的架构规格节 | 承载的 ADR / 铁律 | 核心导出 |
|---|---|---|---|---|
| 统一响应 | internal/infra/response |
§3.1 接口规范 | 铁律 6(HTTP 恒 200 + body code) | R / PageData / OK / Page / Fail / ParsePage |
| 三层错误 | internal/infra/errors |
§3.2 异常处理 | 错误码分段 1xxx–5xxx | AppError / New / WithCause / sentinel ErrNotFound 等 |
| 多租户作用域 | internal/infra/scope |
§3.5 作用域注入 | 铁律 2(强制作用域) | Scope / Set / FromFiber / BaseRepo / NewBaseRepo |
| 入参校验 | internal/infra/validator |
§3.1 入参惯例 | 铁律 7(validateReq 语义) | Validate |
| 配置管理 | internal/infra/config |
§3.4 配置 | ADR-015(12-factor) | Config / Load / EnsureRuntimeDirs |
| 身份主键 | internal/identity/id |
§7.1 | ADR-013(ULID) | NewCanonicalUserID / NewCanonicalUserIDAt / Validate / Length |
| 密码凭证 | internal/identity/credential |
§3.8 / §7.4 | ADR-016(argon2 惰性升级) | Check / HashArgon2 / VerifyArgon2 / Result / HashVersion* |
| SSO token | internal/identity/token |
§7.2 | ADR-014(SSO 最小可行) | Issuer / Claims / Issue / Verify / Rotate / RevokeAll |
| 异步任务 | internal/task |
§3.7 | 统一 DB 任务表 | Task / Repo / Enqueue / Claimable / Claim / Done / Fail / ReclaimStale |
规划待建(尚无代码,目录已占位):
cmd/api(装配入口)、internal/org(多租户+7 角色)、internal/academic(教务域)、internal/teaching(教学域)、internal/ai(Agent 消费方)。 新增这些域时,必须先对齐本文件的注释标准再写业务逻辑。
每个导出的结构体 / 函数 / 方法 / 常量 / 错误变量,注释必须覆盖三段;缺一段视为不完整:
// 代码块),让读者不翻实现就能上手。err != nil 判""为什么走 c.Locals 不走 context")。- 参数名 类型:含义;约束/取值范围。- 名称 类型:含义。// 加 1);只写"读代码看不出来"的设计意图、约束、坑。// <导出符号> <一句话功能>(对应架构规格 §X / ADR-XXX / 铁律 N)。
//
// 典型使用(调用方):
//
// <2~6 行可运行的调用片段>
//
// 入参:
// - name1 type1:含义;约束(必填/可空/默认值/上限)。
// - name2 type2:含义;敏感项标注(如"走环境变量,勿入库")。
//
// 出参:
// - ret1 type1:含义。
// - ret2 error:以下场景非 nil——
// - 场景 A:处理建议(降级/重试/fail-closed)。
// - 场景 B:处理建议。
//
// 异常场景:
// - 边界输入 X:行为 Y(为何这样,而非报错)。
# go.mod `go 1.27`(语言级别 + 最低工具链);本机 go 1.27.x 直接构建。
# 依赖保持初版锁定版本(validator v10.27.0 等),升 1.27 后实测无意外升级。
go build ./... # 必须 0 错误
go vet ./... # 必须 0 告警(1.27 起默认含 stdversion 检查)
GOTOOLCHAIN=local go build ./... # 强制本地工具链(防 CI 误拉非预期工具链)
# 一致性自检(注释与实现对齐的最低门槛)
go doc ./internal/infra/response # 查看包文档是否完整渲染
新增业务域 checklist:
- 目录落在正确域(
academic/teaching/org/ai),不进infra(横切)或反向依赖。- 数据访问经 Repository +
scope.BaseRepo.scoping(铁律 2),不裸查。- Service 返回
*errors.AppErrorsentinel(铁律,不裸抛 gorm 原错)。- Handler 用
response.OK/Page/Fail(铁律 6)+validator.Validate(铁律 7)。- 每个导出符号带三段式 GoDoc(铁律 11),改实现同步改注释。
go build/go vet全绿后方可提交。