fix anwser token and database issus

This commit is contained in:
tamakyi
2026-09-15 11:06:09 +08:00
parent e683e798aa
commit adcc42cc8c
33 changed files with 1011 additions and 802 deletions
+69
View File
@@ -381,3 +381,72 @@ RAM 子账号授予 `AliyunYundunGreenWebFullAccess`;②CHANGELOG 条目仍未
`route/user/moderation.go`、`vote.go`),因为 gofmt 把 CRLF 规范成 LF。
剥离 CR 后比对,本次改动**零格式差异** → 格式是对的。
**切勿跑 `gofmt -w`**,那会把文件转成 LF、造成全量 diff 污染。
---
## 第七轮:精简注释(删复述、留 WHY)
用户反馈「注释太多」,要求仅保留重要部分。原则(AskUserQuestion 已确认):
**保守尺度** —— 删除复述型/装饰型,保留全部安全约束、踩坑、外部服务怪癖,长注释压成 1-3 行。
### 摸底数据(脚本 `comment_survey.py`,排除 outputs/dev/.workbuddy)
- `.go` 139 文件 29,185 行,注释 3,102 行(10.6%);`.html` 41 文件 7,784 行,注释 152 行(2.0%)。
- 最重:`policy.go` 38.9%、`conf/limits.go` 37.8%、`shared/ip.go` 33.0%、`conf/static.go` 27.8%、
`harassment.go` 25.2%、`aliyun.go` 24.7%(152 行,绝对量最大)、`text.go` 22.2%、`censor.go` 21.3%、
`form.go` 19.8%、`gzip.go` 19.3%、`markdown.go` 18.1%、`route.go` 17.8%(80 行)。
### 第一批已完成(-106 行,-31%)
| 文件 | 原 | 现 | 减 |
|---|---|---|---|
| `policy.go` | 84 | 52 | -32(-38%)|
| `conf/limits.go` | 45 | 25 | -20(-44%)|
| `shared/ip.go` | 58 | 32 | -26(-45%)|
| `aliyun.go` | 152 | 124 | -28(-18%,**仅处理到前 180 行,余下待续**)|
保留的关键信息(勿再删):fail-closed 语义、严格档 ⊇ 改造前、底线维度不可关、
阿里云 596/600 字上限与分段重叠、格式标记防历史缓存误判「通过」、SDK 标签表不可信、
IPv6 /64 聚合仅限流不可用于黑名单、源站未锁可被伪造头、双 CDN 必须删对方权威头。
### ⚠️ 复用方法(重要)
1. **删注释会触发 gofmt 重排**:删掉字段/映射项之间的注释后,相邻行合并成一个对齐组,
列宽会变。手算列宽易错 → 用脚本 `gofmt_keep_crlf.py <files>`:
**跑 gofmt 后按原文件行尾还原 CRLF**(直接 `gofmt -w` 会把 CRLF 转成 LF,造成全量 diff 污染)。
2. **仓库行尾本就不统一**(`policy.go`/`aliyun.go`/`text.go`/`dict_*`/`profile.html` 是 CRLF;
`limits.go`/`features.go`/`password.go` 是 LF)。改动前先确认,改后保持一致。
3. `grep -c $'\r' file` 在 Git Bash 下**不可靠**(`$'\r'` 可能被当空模式,导致「全部行命中」)。
查行尾要用 Python 数 `b'\r\n'`。
4. `templates/user/moderation-strictness.html` 仍**只能用 shell/脚本改**(Write/Edit 会注入
`data-page-node-id`)。
### 验证
`go build ./internal/security/... ./internal/shared/... ./internal/conf/...` 通过;
`go test ./internal/security/censor/` ok(严格度与 2.0 用例全过,确认删注释未影响行为)。
---
## 续:注释清理第二批 + 编译卡死根因(晚间)
### 第二批已清理(本轮继续)
`conf/static.go`、`conf/conf.go`、`security/censor/{text,censor,aliyun}.go`、`route/{gzip,route}.go`、
`form/form.go`、`template/markdown.go`、`db/{db,feature_control}.go`、`captcha/math.go`、
`route/user/harassment.go`、`route/user/vote.go`(最大,~149→少,N+1→2SQL、sanitizeCSVCell、BOM 等 WHY 保留)、
`db/follow_ups.go`(部分,待构建释放后收尾)、`security/censor/policy.go`(最高比 28%→压缩,保 WHY)、
`i18n/i18n.go`(删内联复述、修 typo)。
### 编译卡死根因(已定位并绕过)
- 真因:`proxy.golang.org` 在本沙箱 `HTTP=000`(连接超时),`go build` 触网即无限等待 → 表象「卡死」。
`goproxy.cn` → 200。解法:`export GOPROXY=https://goproxy.cn,direct GOSUMDB=off GOFLAGS=-mod=mod` + **定向包构建**(勿 `./...`)。
- `go env -w` 失败(`%AppData% is not defined`),无法持久化,只能每条命令 export。
- 重活儿构建(`./route/user/ ./internal/route/ ./internal/db/`,overlay 换 s3 stub 避 cgo/webp)已用上述代理跑通、进行中(1C1G 首编 20+ 分钟)。
### 行尾结论
`core.autocrlf=true` → 工作区 CRLF、blob LF,Git 归一,**无 diff 污染**,不必手动转行尾。
`gofmt_keep_crlf.py` 重建到 `dev/gofmt_keep_crlf.py`(Temp 版被清),保留工作区 CRLF 以免 gofmt -l 误报。