主人 2026-10-03 拍板「注释一律中文」;gateway 至此整包注释中文化完成(本会话共 3 批: 已推库 16 个文件 + 本批剩余文件)。 校验:机械校验(非注释改动行)= 空;剥注释后代码文本逐行比对全等(不一致文件数 0); 全树 go test ./... 58 包 ok / 0 FAIL;交叉编译绿。
43 lines
1.6 KiB
Go
43 lines
1.6 KiB
Go
package gateway
|
||
|
||
import (
|
||
"net/http"
|
||
|
||
"git.yeij.top/AskaEth/Cyrene_v2/internal/contract/enums"
|
||
)
|
||
|
||
// 本文件拥有只读的客户端元数据表面:GET /api/v1/meta/enums,
|
||
// 它发布权威的 platform/mood/mode 表(Android
|
||
// 协作 B4,design/07 §6)。客户端(Web、Android、IM bridge)读这些
|
||
// 表,而不是各自硬编码 id → 标签映射,因此来源徽标或
|
||
// 情绪标签不会逐客户端漂移。这些表本身位于
|
||
// internal/contract/enums;本 handler 只负责提供它们,因此只有
|
||
// 一个事实来源,而不是每个消费方一份副本。
|
||
|
||
// metaEnums 是 GET /api/v1/meta/enums 的载荷。`unknown` 携带
|
||
// 机器可读的回退策略(enums.UnknownFallback),使客户端从同一
|
||
// 响应中读到表以及对未列出取值的规则。
|
||
type metaEnums struct {
|
||
Platforms []enums.Item `json:"platforms"`
|
||
Moods []enums.Item `json:"moods"`
|
||
Modes []enums.Item `json:"modes"`
|
||
Unknown string `json:"unknown"`
|
||
}
|
||
|
||
// handleListEnums 提供共享的客户端枚举表。它是 Go 侧权威的
|
||
// 纯投影(无存储、无错误路径),不含任何
|
||
// 敏感内容,因此像 GET /api/v1/sessions 一样门控:任何已认证角色都可以
|
||
// 读取它。
|
||
//
|
||
// 向表中新增取值对既有客户端是非破坏性变更,客户端
|
||
// 必须原样展示未列出的取值(见 enums.UnknownFallback),而不是
|
||
// 丢弃它或报错。
|
||
func (s *Server) handleListEnums(w http.ResponseWriter, _ *http.Request) {
|
||
writeJSON(w, http.StatusOK, metaEnums{
|
||
Platforms: enums.Platforms(),
|
||
Moods: enums.Moods(),
|
||
Modes: enums.Modes(),
|
||
Unknown: enums.UnknownFallback,
|
||
})
|
||
}
|