# 每日变动 2026-09-29 ## 10:18 — 提交门禁:无 Go 不得跳过 make test ### 概要 - `make test` / pre-commit 在缺少 `go` 或 `golangci-lint` 时明确失败,禁止把「本机无 go」当作验证 skipped。 - 新增 `make setup`(装 hook + `check-dev`)。 ### 变更范围 | 类型 | 说明 | |------|------| | 配置 | Makefile `check-go` / `check-golangci-lint` / `setup` | | 配置 | `scripts/git-hooks/pre-commit` 前置工具检查 | | 文档 | AGENTS、verify/git-commit 规则、spark-im-v3 skill、daily-change-list skill、README | ### 主要文件 - `Makefile` — `lint: check-dev`;缺工具 exit 1 - `scripts/git-hooks/pre-commit` — 无 go/lint 直接拒绝 commit - `.cursor/rules/verify-before-done.mdc` / `git-commit-gate.mdc` — 策略说明 ### 验证 - `make test`: pass ## 11:24 — 敏感词发送处罚详细设计 ### 概要 - 对照当前发送链、用户状态、Admin 封禁与 `StatusHidden`,写成可实施的机审设计:`moderation` 模块、AccountGate、分类处罚、表结构、错误码与分期;v1 不做 hide。 ### 变更范围 | 类型 | 说明 | |------|------| | 文档 | `docs/moderation.md` | ### 主要文件 - `docs/moderation.md` — IM 文本敏感词与处罚设计稿 ### 验证 - `make test`: skipped(纯文档,无编译/测试面) ### 关联 - 对话:文本发送敏感词分类处罚 ## 11:35 — 敏感词匹配算法设计 ### 概要 - 补全匹配:逐 rune 折叠+丢分隔、Aho-Corasick、区间映回原文、replace 合并打码;v1 无简繁、无英文词边界。 ### 变更范围 | 类型 | 说明 | |------|------| | 文档 | `docs/moderation.md` §6 | ### 主要文件 - `docs/moderation.md` — 匹配流水线与用例 ### 验证 - `make test`: skipped(纯文档) ### 关联 - 对话:敏感词如何匹配 ## 15:10 — 敏感词机审 v1 实现 ### 概要 - 落地 `pkg/sensitive`(Fold + Aho-Corasick)、`moderation` 模块、发送链 AccountGate/Scan/处罚、`40302`/`40303`、Admin 词库与命中查询;封禁与机审 disable 统一踢线。 ### 变更范围 | 类型 | 说明 | |------|------| | 功能 | 文本发送敏感词;全站禁言;封号踢线 | | 迁移 | `0028_moderation.sql` | | HTTP Admin | `/api/admin/spark|pop/sensitive-words*`、`sensitive-hits` | ### 主要文件 - `migrations/0028_moderation.sql` - `internal/pkg/sensitive/`、`internal/module/moderation/` - `internal/module/message/logic/send_moderation.go` - `internal/module/user/logic/account_send.go` - `internal/bootstrap/app.go`、`internal/transport/http/router_admin.go` ### 验证 - `make test`: pass ### 关联 - `docs/moderation.md` ## 15:32 — 敏感词种子 SQL 与 OpenAPI ### 概要 - 新增 `0029_sensitive_words_seed.sql`(按分类默认处罚 16 条示例词);OpenAPI 增加 `admin-moderation` 路径与 schema;envelope 增加 `40302`/`40303`。 ### 变更范围 | 类型 | 说明 | |------|------| | 迁移 | `0029_sensitive_words_seed.sql` | | 文档 | `internal/transport/http/docs/openapi.yaml` | | API | 词条/命中 JSON 字段 snake_case | ### 主要文件 - `migrations/0029_sensitive_words_seed.sql` - `internal/transport/http/docs/openapi.yaml` - `internal/module/moderation/entity/word.go` ### 验证 - `make test`: pass ## 15:55 — OpenAPI 管理端 tag 统一为 admin ### 概要 - 不改 Gin 路由;去掉 tag `admin-music`,音乐与敏感词等管理接口统一为 `admin`,description 按 `…/spark/im|music|sensitive-words` 等路径分模块。 ### 变更范围 | 类型 | 说明 | |------|------| | 文档 | `openapi.yaml`、`docs/moderation.md`、`docs/popadmin-music-novels-deploy.md` | ### 主要文件 - `internal/transport/http/docs/openapi.yaml` ### 验证 - `make test`: pass ## 15:55 — OpenAPI 管理端 tag 统一为 admin ### 概要 - 不改 Gin 路由;去掉 tag `admin-music`,音乐与敏感词等统一为 `admin`,description 按 `…/spark/im|music|sensitive-words` 等路径分模块。 ### 变更范围 | 类型 | 说明 | |------|------| | 文档 | `openapi.yaml`、`docs/moderation.md`、`docs/popadmin-music-novels-deploy.md` | ### 主要文件 - `internal/transport/http/docs/openapi.yaml` ### 验证 - `make test`: pass