支持 square/squarenovel/squaresteps/squarehealth 实例与 category 筛选;音乐增加免登录 grouped/track;订阅套餐按 package_name 区分;补 migration 0030/0031 与 OpenAPI。 Co-authored-by: Cursor <cursoragent@cursor.com>
299 lines
9.6 KiB
Markdown
299 lines
9.6 KiB
Markdown
# 每日变动 2026-09-24
|
||
|
||
## 11:12 — 新增 daily-change-list Agent Skill
|
||
|
||
### 概要
|
||
|
||
- 新增项目 skill:每次完成代码/配置/文档等实质性修改后,在 `docs/daily/` 写入或追加当日变动 Markdown。
|
||
- 文件名格式:`{yyyy}-{mm}-{dd}-change-list.md`(示例:`2026-09-24-change-list.md`)。
|
||
- `AGENTS.md` 与 `verify-before-done.mdc` 已挂接该流程。
|
||
|
||
### 变更范围
|
||
|
||
| 类型 | 说明 |
|
||
|------|------|
|
||
| 文档 / 配置 | Agent skill、daily 目录说明、Agent 与 verify 规则 |
|
||
|
||
### 主要文件
|
||
|
||
- `.cursor/skills/daily-change-list/SKILL.md` — skill 定义与模板
|
||
- `docs/daily/README.md` — 目录说明
|
||
- `AGENTS.md` — 第 7 条引用 skill
|
||
- `.cursor/rules/verify-before-done.mdc` — 完成前写入 daily
|
||
|
||
### 验证
|
||
|
||
- `make test`: skipped(仅 Agent/文档,无 Go 变更)
|
||
|
||
### 关联
|
||
|
||
- 用户请求:新增每日修改变动 markdown 流程
|
||
|
||
## 11:16 — daily 文件名改为 yyyy-mm-dd
|
||
|
||
### 概要
|
||
|
||
- 每日变动文件命名由 `{yyyy}-{dd}-{mm}` 调整为 `{yyyy}-{mm}-{dd}`(年月日 ISO 顺序)。
|
||
|
||
### 主要文件
|
||
|
||
- `.cursor/skills/daily-change-list/SKILL.md`
|
||
- `docs/daily/README.md`、`AGENTS.md`、`.cursor/rules/verify-before-done.mdc`
|
||
- `docs/daily/2026-09-24-change-list.md`(自 `2026-24-09-change-list.md` 重命名并更新文内日期)
|
||
|
||
### 验证
|
||
|
||
- `make test`: skipped(文档)
|
||
|
||
## 14:10 — Spark Messenger 主路径接入:好友拒绝 API + OpenAPI
|
||
|
||
### 概要
|
||
|
||
- 新增 `POST /v1/friends/requests/reject`,补齐 App 忽略/拒绝好友申请
|
||
- OpenAPI 补全 password-login / set-password / legal / feedback / subscriptions / reject
|
||
- 与 iOS `SparkIMClient` 主路径路由扩展配套
|
||
|
||
### 变更范围
|
||
|
||
| 类型 | 说明 |
|
||
|------|------|
|
||
| 功能 | 好友申请拒绝 |
|
||
| 文档 | OpenAPI 路径补全 |
|
||
| 配置 | client 模块与 popadmin 三页(同日 WIP) |
|
||
|
||
### 主要文件
|
||
|
||
- `internal/module/friend/logic/reject.go` — Reject 用例
|
||
- `internal/transport/http/handler/friend/handler.go` / `router.go` — HTTP
|
||
- `internal/transport/http/docs/openapi.yaml` — 规范
|
||
- `internal/module/client/**`、`migrations/0023_*.sql`、`deploy/popadmin/popadmin.js` — 法律/反馈/订阅/密码
|
||
|
||
### 验证
|
||
|
||
- `make test`: skipped(本机 PATH 无 go)
|
||
- 需部署后刷新 https://sparkapi.wyrs365.com/docs
|
||
|
||
### 关联
|
||
|
||
- Spark Messenger 全页面接入检查
|
||
|
||
## 14:48 — 修复 make lint / make test
|
||
|
||
### 概要
|
||
|
||
- 修复 `friend_test` 中 `Accept` 双返回值与测试邮箱 OTP
|
||
- 修复 `client` 模块 goconst/gocritic/goimports;`UpsertLegal`/`UpsertPlan` 改为指针入参
|
||
- 补充 `client`/`auth` logic 单测以满足 65% 覆盖率门禁
|
||
|
||
### 主要文件
|
||
|
||
- `internal/module/friend/logic/friend_test.go`
|
||
- `internal/module/client/logic/service.go`、`model/repo.go`
|
||
- `internal/module/client/logic/service_test.go`
|
||
- `internal/module/auth/logic/refresh_test.go`、`static_test.go`
|
||
- `internal/bootstrap/app.go`、`handler/friend/handler.go`、`handler/admin/client.go`
|
||
|
||
### 验证
|
||
|
||
- `make lint`: pass
|
||
- `make test`: pass
|
||
|
||
## 15:22 — Git commit 前必须 make test
|
||
|
||
### 概要
|
||
|
||
- 新增 always-on 规则 `git-commit-gate.mdc`:Agent 与用户 commit 前须 `make test` 通过,禁止擅自 `--no-verify`
|
||
- 新增 `scripts/git-hooks/pre-commit` 与 `make install-git-hooks` 安装到 `.git/hooks`
|
||
|
||
### 主要文件
|
||
|
||
- `.cursor/rules/git-commit-gate.mdc`
|
||
- `scripts/git-hooks/pre-commit`
|
||
- `Makefile`、`AGENTS.md`
|
||
|
||
### 验证
|
||
|
||
- `make test`: pass
|
||
|
||
### 使用
|
||
|
||
```bash
|
||
make install-git-hooks # 本机只需一次
|
||
```
|
||
|
||
## 14:55 — 意见反馈区分登录 / 游客
|
||
|
||
### 概要
|
||
|
||
- `POST /v1/feedback` 改为可选鉴权:有效 Bearer → `auth_type=login` + `uid`;无 token → `auth_type=guest`,必填 `contact`(邮箱或手机)
|
||
- 表增加 `auth_type` / `contact`;Admin list 支持 `?auth_type=login|guest`;popadmin App反馈页加筛选下拉
|
||
- OpenAPI 同步说明
|
||
|
||
## 14:53 — Android 白噪音对照后补音乐公开 API
|
||
|
||
### 概要
|
||
|
||
- 对照 `WhiteNoiseJSPPOldAndroid`:音乐主路径仍走欢休 `app.huanxiu.vip`;IM/登录/支付多为旧 JSPP TCP protobuf。
|
||
- 在 Spark V3 风格下补齐迁端缺口:单曲详情、分区嵌套列表、`requireMember` 筛选;公开路由免登录。
|
||
- 顺手修复先前好友拒绝用例测试(Accept 双返回值、测试邮箱)。
|
||
|
||
### 变更范围
|
||
|
||
| 类型 | 说明 |
|
||
|------|------|
|
||
| 功能 | 反馈登录/游客分流 |
|
||
| 数据库 | migration 0024 |
|
||
| 管理端 | popadmin 筛选 |
|
||
| 文档 | OpenAPI |
|
||
|
||
### 主要文件
|
||
|
||
- `migrations/0024_feedback_auth_type_contact.sql`
|
||
- `internal/module/client/**` — entity / logic / repo
|
||
- `internal/transport/http/auth.go` — `/v1/feedback` 可选鉴权
|
||
- `internal/transport/http/handler/admin/client.go` — auth_type 筛选
|
||
- `internal/transport/http/docs/openapi.yaml`
|
||
- `deploy/popadmin/popadmin.js`
|
||
|
||
### 验证
|
||
|
||
- `make test`: skipped(本机无 go)
|
||
- 需部署并执行 migration 后生效
|
||
|
||
### 关联
|
||
|
||
- 用户需求:意见反馈分登录与未登录
|
||
|
||
## 16:25 — 反馈用例补登录路径断言
|
||
|
||
### 概要
|
||
|
||
- 补充游客缺 contact 失败、登录态写入 auth_type/uid、AppVersion Header 回填的单测断言
|
||
- auth.go import 顺序整理
|
||
|
||
### 验证
|
||
|
||
- `make test`: skipped(本机无 go)
|
||
|
||
|
||
## 23:30 — 广场机器人 RSS + 媒体压缩检测
|
||
|
||
### 概要
|
||
|
||
- 广场每 5 分钟由随机 seed 机器人发海外主流媒体公开 RSS 帖(标题+短摘要+原文链接,URL 去重)。
|
||
- 机器人帖 `expires_at` 默认 15 天,到期软删且 Feed/详情不可见。
|
||
- 用户上传路径:凭证 size + 发帖声明宽高/体积软检测(默认可日志,可拒收)。
|
||
- 机器人配图:入库对象存储前压到最长边 ≤1080;视频路径 ≤720(ffmpeg)。
|
||
|
||
| 功能 | 音乐公开读 API 增强 |
|
||
| 文档 | OpenAPI music 路径与 schema |
|
||
| 修复 | friend Reject 单测 |
|
||
|
||
### 主要文件
|
||
|
||
- `internal/module/music/entity/track.go` — GroupedPlaylist / PlaylistGroup
|
||
- `internal/module/music/logic/service.go` — GetPublic、PlaylistGrouped、PlaylistQuery
|
||
- `internal/transport/http/handler/music/handler.go`、`router.go`、`auth.go`
|
||
- `internal/transport/http/docs/openapi.yaml`
|
||
- `internal/module/music/logic/service_test.go`、`friend/logic/friend_test.go`
|
||
|
||
### 验证
|
||
|
||
- `go test ./...`:通过(本机无 `make`;`golangci-lint` 与 Go 1.27 export data 不兼容,未跑 lint)
|
||
- `music/logic` coverage:74.7%
|
||
|
||
### 关联
|
||
|
||
- 用户:对照 Android 补全 spark-server 缺失 API(不 commit/push)
|
||
|
||
## 15:20 — 多广场实例 + 分类筛选
|
||
|
||
### 概要
|
||
|
||
- 同一套广场能力按 `channel` 隔离数据:`square` / `squarenovel` / `squaresteps` / `squarehealth`。
|
||
- 各广场支持分类 Tab:推荐/最新/热门/附近(排序)+ 搞笑/美女(帖标签);附近为 lat/lng 曼哈顿距离 stub。
|
||
- 发帖/点赞/评论/通知水位均带 channel;保留原 `/v1/square/...` 路径。
|
||
|
||
### 变更范围
|
||
|
||
| 类型 | 说明 |
|
||
|------|------|
|
||
| 功能 | squarebot 调度、TTL、RSS、配图压缩 |
|
||
| 配置 | `media` / `square_bot` |
|
||
| 数据库 | migration 0026 |
|
||
| 文档 | `docs/media.md`、`docs/square.md` |
|
||
|
||
### 主要文件
|
||
|
||
- `internal/module/squarebot/logic/*` — RSS / Tick / Worker / 压缩上传
|
||
- `internal/module/square/logic/bot_publish.go` — 发帖 + Expire
|
||
- `internal/infrastructure/media/*` — 图/视频压缩
|
||
- `internal/pkg/media/*` — 检测策略
|
||
- `internal/bootstrap/app.go` — 接线 Start/Stop
|
||
- `migrations/0026_square_bot_rss.sql`
|
||
- `configs/config.yaml`
|
||
|
||
### 验证
|
||
|
||
- `make test`: skipped(本机无 go)
|
||
- 部署后:`go run ./cmd/migrate`、`go run ./cmd/seed`,观察日志 `squarebot posted` / `squarebot expired`
|
||
|
||
### 关联
|
||
|
||
- 用户需求:广场机器人 RSS + 15 天过期 + 后台机器人媒体压缩检测
|
||
|
||
## 14:30 — 同开发者应用墙(Discover)
|
||
|
||
### 概要
|
||
|
||
- 新增免登录客户端接口 `GET /v1/developer-apps`(别名 `/api/client/pop|spark/developer-apps`)
|
||
- popadmin「同开发者应用」对接 `/api/admin/developer-apps` CRUD + 同步官网图标目录
|
||
- 回落默认官网应用目录;migration 编号为 0027(避开已占用的 0024 feedback)
|
||
|
||
### 变更范围
|
||
|
||
| 类型 | 说明 |
|
||
|------|------|
|
||
| 功能 | 同开发者应用列表 API |
|
||
| 管理端 | popadmin developer-apps 路径可落库 |
|
||
| 迁移 | `t_developer_apps` 种子数据(0027) |
|
||
|
||
### 主要文件
|
||
|
||
- `migrations/0027_developer_apps.sql` — 表与种子
|
||
- `internal/module/client/logic/developer_apps.go` — 业务
|
||
- `internal/module/client/model/repo.go` — 仓储
|
||
- `internal/transport/http/router*.go` / `auth.go` / handlers — 路由与免登录
|
||
- `deploy/popadmin/popadmin.js` — 客户端路径说明
|
||
|
||
### 验证
|
||
|
||
- `make test`: skipped(本机 PATH 无 go)
|
||
- 需部署 spark-server 并跑 migrate 后线上接口才可用;无 DB 时 logic 回落官网默认目录
|
||
|
||
### 关联
|
||
|
||
- 任务:发现页顶部接入同开发者应用列表(stash 合并进 main)
|
||
|
||
| 功能 | 多广场 + Feed `category` 筛选 |
|
||
| 迁移 | `0031_square_channel_category.sql` |
|
||
| 文档 | OpenAPI `{square_channel}` 路径;meta 枚举 |
|
||
|
||
### 主要文件
|
||
|
||
- `migrations/0031_square_channel_category.sql` — posts/notices/notice_state 加 channel/category
|
||
- `internal/module/square/entity/channel.go` — Channel / Category 枚举
|
||
- `internal/module/square/logic/*`、`model/*` — channel 隔离与 Feed 排序
|
||
- `internal/transport/http/handler/square`、`router.go` — 四前缀同路由 + `/categories`
|
||
- `internal/transport/http/docs/openapi.yaml`、`meta`、`i18n`
|
||
|
||
### 验证
|
||
|
||
- `go run ./cmd/migrate -config configs/config.yaml`:通过
|
||
- `go test ./...`:通过(本机无 `make`;golangci-lint 与 Go 1.27 不兼容)
|
||
- `square/logic` coverage:77.5%
|
||
|
||
### 关联
|
||
|
||
- 用户:spark-server 多广场 + 分类筛选(不 commit/push)
|