docs(plans): 记录 K16 注册限流后台配置回执

This commit is contained in:
Zhou Weidong committed 2026-10-17 23:33:28 +08:00
1 parent 1493fce319
commit c1c3c1ce9a
2 files changed
+163 -1

No files matched your search

+21 -1
View File
@@ -20,7 +20,7 @@
---
## [待处理] 2026-10-17 | K16 注册限流改为可配置(支持不限制)
## [已处理·待用户验收] 2026-10-17 | K16 注册限流改为可配置(支持不限制)
**用户指令(2026-10-17)**:「注册 429 限流做成可配置的,不限制或限制数量」。
@@ -55,6 +55,26 @@
- 提交作者与提交者统一 `Zhou Weidong <502333560@qq.com>`;从干净 develop 拉 `feature/backend-register-rate-config`,完成后 `git merge --no-ff` 回 develop 并 push。
- 留痕写入 `FruitServer/docs/plans/PROGRESS.md`。
### 四、K16 完成回执(2026-10-17)
**结论**:注册 IP/设备限流已改为读取后台 `sys_config`,开发两键为 0/0,
支持 0=不限制;后台系统设置页可修改。注册接口与返回结构未变。
- 最终后端实现 `f1aaaee`,缺省回退测试 `f4003ed`,最终合并
`5b7be2e`,已推送 `78fb995..5b7be2e develop`。
- `AppAuthService` 注入 `ConfigService`,读取
`app.register.max-per-ip-per-day` 和
`app.register.max-per-device-per-day`;非法/缺失回退 5/3。
- `sql/data-phase1.sql` 已增加幂等种子(0/0);当前开发库已写入并确认 ID 3/4。
- 新增 Web 提交 `54db082`,合并 `5c087f4`;系统设置页可编辑两项,
`pnpm build:pro` 通过。
- `AppAuthServiceTest` 18 项通过,全量 `mvn test` BUILD SUCCESS。
- 新 jar 已启动,`/healthz` 返回 200;当前 8081 PID `80642`。
- 同一新设备号连续注册 4 次均 HTTP 200、`code=0`,不再出现 429。
命令、日志和服务自检原始输出见
`docs/plans/PROGRESS.md`「32. K16 注册限流后台配置化」。
---
## [待处理] 2026-10-17 | K14 客户端文档:README + 任务清单 + 文件说明
+142
View File
@@ -2986,6 +2986,148 @@ c4694c6 fix(flutter): 增加首页服务器设置并更新真机默认地址
---
## 2026-10-17 K16 注册限流后台配置化
### 32.1 最终口径
叙述:K16 开工后 Trae 于 `461fb8e` 更新任务书,要求从 `sys_config` 读取配置,
不使用 `application.yml` 固化。初版 `@Value` 实现已按最新口径修正。
最终配置键:
```text
app.register.max-per-ip-per-day
app.register.max-per-device-per-day
```
- 值 <= 0:对应维度不限制;
- 键缺失或非整数:回退 IP 5 / 设备 3;
- 错误码和错误文案不变。
### 32.2 后端实现与测试
`AppAuthService` 注入 `ConfigService`,module-user 增加 module-system 依赖。
首次红灯:
```text
Could not find field 'maxRegisterPerIpPerDay'
Tests run: 16, Failures: 0, Errors: 4
```
最终定向测试:
```text
$ mvn -pl fruitshorts-app-api -am -Dtest=AppAuthServiceTest -Dsurefire.failIfNoSpecifiedTests=false test
Tests run: 18, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
```
覆盖:IP 超限、设备超限、自定义阈值、IP=0、设备=0、缺省回退、非数字回退。
全量测试:
```text
$ mvn test
[INFO] BUILD SUCCESS
```
### 32.3 种子配置与后台页面
`sql/data-phase1.sql` 增加幂等种子:
```sql
INSERT INTO sys_config (id, config_key, config_value, remark) VALUES
(3, 'app.register.max-per-ip-per-day', '0', '0=不限制;生产建议 5'),
(4, 'app.register.max-per-device-per-day', '0', '0=不限制;生产建议 3')
ON CONFLICT (config_key) DO NOTHING;
```
当前开发库执行结果:
```text
INSERT 0 2
id | config_key | config_value | remark
----+-------------------------------------+--------------+--------------------
3 | app.register.max-per-ip-per-day | 0 | 0=不限制;生产建议 5
4 | app.register.max-per-device-per-day | 0 | 0=不限制;生产建议 3
```
后台 `SettingsView.vue` 原有页面只显示两个旧配置字段,因此补充了两个数值项,
沿用现有 `/admin/configs` 接口,不新建页面。
```text
$ pnpm build:pro
Build successful. Please see dist-pro directory
```
Web 提交 `54db082`,合并 `5c087f4`,已推送。
### 32.4 打包、重启与接口自检
```text
$ mvn -pl fruitshorts-app-api -am package -DskipTests
[INFO] BUILD SUCCESS
```
旧 8081 服务停止后,通过 `launchctl` 启动新 jar。当前服务:
```text
80642 0 com.fruitshorts.app-api
java 80642 ... TCP *:8081 (LISTEN)
```
健康检查:
```text
HTTP/1.1 200
{"code":0,"message":"ok","data":{"status":"UP","app":"fruitshorts-app-api",...}}
```
同一新设备号连续注册 4 次(令牌字段已省略):
```text
attempt 1 HTTP 200 {"code":0,"message":"ok","newUser":true,"uid":"U-4JA-DDD"}
attempt 2 HTTP 200 {"code":0,"message":"ok","newUser":true,"uid":"UTIOUCLLV"}
attempt 3 HTTP 200 {"code":0,"message":"ok","newUser":true,"uid":"UR6ZJRO74"}
attempt 4 HTTP 200 {"code":0,"message":"ok","newUser":true,"uid":"UXJF6MECJ"}
```
解读:开发库两键均为 0,IP 与设备 guard 均跳过,连续注册不再 429。
### 32.5 Git
```text
FruitServer:
3403a52 docs(plans): 增加 K16 注册限流配置化计划
758eb69 feat(backend): 注册限流阈值改为可配置
f1aaaee fix(backend): 改为后台配置注册限流阈值
f4003ed test(backend): 覆盖注册限流缺省回退
5b7be2e merge: 合并注册限流缺省回退测试
78fb995..5b7be2e develop -> develop
ReelShortWeb:
54db082 feat(admin): 增加注册限流配置项
5c087f4 chore(admin): 合并注册限流配置项
3ec9ea6..5c087f4 develop -> develop
```
最终后端修正与 Web 提交的 author/committer 均为
`Zhou Weidong <502333560@qq.com>`。
### 32.6 用户验收步骤
1. 登录后台「系统设置」。
预期:看到注册频控两个数值项,当前均为 0。
2. 将单设备上限改为 3,保存后使用同一设备注册第 4 次。
预期:返回 429;恢复 0 后第 4 次可成功。
3. 将单 IP 上限改为 1,保存后从同一 IP 注册第 2 次。
预期:返回 429;恢复 0 后恢复不限。
4. 验证完成后开发库恢复 0/0;生产配置建议恢复 IP 5 / 设备 3。
设备侧接口结果与后台截图由用户最终验收。
---
## 2026-10-17 iOS 构建阻塞:固定 shared_preferences_foundation 2.5.6
### 25.1 现象与根因