Commit Graph

44 Commits

Author SHA1 Message Date
zerosaturation
7ff2d5cdc4 fix(gateway): restore /api/v1/starbook/* via assetService (recovery from Task 2 over-deletion)
- 恢复 /api/v1/starbook/home + /api/v1/starbook/items 网关路由
  (owner 从被删的 starbookService 切到 assetService);
- assetService 加 GetAssetsByType RPC (type/category/grade 过滤), 仅改 asset.pb.go (不动 triple.go);
- gateway 新建 starbook_controller.go 薄壳 (auth + 参数解析 + RPC);
  使用 Task 1 扩展接口 AssetServiceGetAssetsTypeClient (零装配增量, 复用现有 assetClient);
- 响应结构与原端点完全一致 (前端 4 处调用零修改, 实测 home 2514 bytes JSON shape 一致);
- items 支持 type/category/grade/page/page_size 完整参数;
- 路由注入到 AuthMiddleware 保护的 v1 group;
- 5/5 starbook 测试 + 完整 workspace build/vet 通过。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-24 14:04:01 +08:00
zerosaturation
e1326acaf9 fix(backend): service stability — bcrypt off-txn / login anti-enum / MQ stub / aiChat / event reliability / gateway aggregate (batch 3)
- 3.1 bcrypt 移出事务 (Register): repository.HashPassword 前移到 db.Transaction 之前,消除连接池占用。
- 3.2 Login 消除用户枚举 + 限流 + timing 抹平: pkg/errors 加 ErrInvalidCredential
  /ErrTooManyLoginAttempts; 用户不存在/密码错/密码空 三路径统一返回同一错误;
  mobile 5次/ip 20次 per 15min 限流 (Redis, fail-open 降级); user-not-found 走
  dummy bcrypt 抹平 ~100ms 时序差,完全消除枚举侧信道;空密码分支已核实无时序 leak。
- 3.3 MQ streams adapter 停用 → stub: 0 业务调用方, 新 stub EventProducer.Publish no-op;
  pkg/mq/mq.go Init 不再装配 streams; 全仓 grep 验证 11 处硬编码
  'gallery'/'default' 集中到 pkg/queue/consts (值不变, 仅消漂移)。
- 3.5 JWT 密钥治理: pkg/jwt MustInit fail-fast + atomic.Value (见上一个 commit 293c7b1)。
- 3.6 aiChat 健壮性: SaveContext 用 persona.ID(非 req.PersonaId); Redis/memory 错误
  记 WARN 不静默; Dify err 映射稳定用户文案,原始 err 仅服务端日志。
- 3.7 statistic.Client 重构: TrackEvent 改 buffered channel (cap 1024) + dispatchLoop
  worker; 失败 ERROR 日志带字段; drop 记 WARN; Close 可重复调用。
- 3.8 网关聚合: StarCache (60s TTL, singleflight) 替换 5+ 处 GetFanIdentities 链式调用;
  DeleteAccount 改网关直调 userService.DeleteAccount(避免改 hand-written triple.go
  风险,见报告 §5 proto 风险复盘); 铸造双写改异步 channel+consumer (3 retry)。
- 大量单测: 各子项 TDD (RED→GREEN), 关键并发 race_test (50 goroutine)。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-23 18:50:40 +08:00
zerosaturation
b7022d2dc1 fix(backend): auth boundary — trusted identity from ctx (batch 2)
- 新增 pkg/authctx: 从 Dubbo attachment/gRPC metadata 提取可信 user_id/star_id,
  统一覆盖 req 同名字段, 缺身份返 Unauthenticated。
- 各 provider 接入(堵身份伪造/越权):
  * moderation SubmitReport 等 6 RPC(举报人伪造)
  * asset CheckAssetLike/GetAssetQrcode/TrackShare(点赞/分享归因伪造)
  * social CheckFriendship(修 starID=0 隐私预言机)
  * activity PurchaseItem/BatchPurchaseItem(水晶扣费伪造)等 5 RPC
  * gallery/aiChat/task/notification 迁移 authctx, 删散落 extractUserInfo*
- social 正确性: GetUserLikedAssets OR 显式分组(防御); GetRandomUsersByStar 真随机(去 rand.Seed)。
- gateway: /auth/validate 移入 AuthMiddleware 保护组(/refresh 保留,依赖注入身份)。
- 删 userService 已迁移死函数; notification 缺身份错误码统一为 Unauthenticated。
- 各 provider 单测(伪造身份被覆盖 + 缺身份拒绝)。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-23 01:12:35 +08:00
zerosaturation
d554d7be83 feat:修改周边验证 2026-07-17 16:53:57 +08:00
zerosaturation
c0b577dd40 feat:增加邮箱管理功能 2026-07-14 21:59:15 +08:00
zerosaturation
74853800b6 feat:增加二维码验证真伪的功能 2026-07-13 11:22:56 +08:00
zerosaturation
e5bd0c854c feat:增加忘记密码的功能 2026-07-09 19:00:03 +08:00
fbf3e6c63c feat:增加分享页下载 2026-07-09 15:49:06 +08:00
zerosaturation
a1e92448f1 feat:修改陀螺仪控制为手动控制 2026-07-06 21:20:24 +08:00
zerosaturation
4c3388ed36 feat:新增注销账号功能,然后修改前端注册页面 2026-07-03 16:40:53 +08:00
zerosaturation
3cd68acf6d feat:完善计算点赞押注收益 2026-06-29 14:47:32 +08:00
zerosaturation
2032246fd0 feat:增加分享界面,完善的保存图片功能 2026-06-26 16:45:29 +08:00
zerosaturation
b7e2aee399 feat:修改活动 TOP3 + 我的排名 2026-06-24 18:10:12 +08:00
Lenticular Studio Agent
fd5e317e05 merge: 解决 docker-compose 和 SocketManager 冲突
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-23 23:06:24 +08:00
Lenticular Studio Agent
af7908e72e feat: 接入微达API中转站,重构镭射卡生图流程
- 替换中转站从 xbcl.link 到 weda.cc
- prompt 模板改为镭射卡全图生成(去掉 6 层合成/抠图依赖)
- 4 路并发调用 + 原图展示 = 5 张 variant
- 前端提示词中译英支持
- 全局 Vue errorHandler
- WebSocket 鉴权失败跳登录
- 删除已弃用的 laserCompositor 微服务

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-23 22:43:49 +08:00
zerosaturation
75ab617c6c feat:增加实时留言功能和修改轮询道具购买记录显示改为websocket显示 2026-06-23 18:13:55 +08:00
zerosaturation
7eb6dad434 feat:新增举报和反馈功能 2026-06-22 17:19:48 +08:00
zerosaturation
ef0a4f6afd feat:修改通知系统的消息 2026-06-17 11:59:51 +08:00
ddc5b89a6c frat:增加uniPush的配置 2026-06-16 23:49:40 +08:00
zerosaturation
7074546959 feat:新增通知系统 2026-06-16 21:30:58 +08:00
zerosaturation
271e0350c7 feat:重构code状态码 2026-06-15 16:28:35 +08:00
zerosaturation
dfb79af4b1 feat: 铸造菜单改为动态配置 2026-06-09 12:38:12 +08:00
zerosaturation
3d3f2260f3 feat(statistic): T13-T16 Gateway routes + 5-service business integration (7/7 event types)
Gateway:
- 7 routes /api/v1/dashboard/* with JWT auth (middleware.AuthMiddleware)
- statistic_controller.go: 7 methods, response format {code:200, data:resp}
- gateway/main.go: StatisticServiceClient wired
- gateway/config: StatisticServiceURL (DUBBO_STATISTIC_SERVICE_URL, default tri://127.0.0.1:20009)

pkg/statistic SDK:
- fire-and-forget TrackEvent + BatchTrackEvent
- Init(client) + Get() global singleton pattern

Business-side integration (7/7 event types):
- socialService.LikeAsset → asset.like
- galleryService.PlaceAsset → exhibition.start
- galleryService.RemoveFromSlot → exhibition.end (with duration_ms)
- taskService.OnExhibitionCompleted → exhibition.revenue
- assetService.CreateMintOrder → asset.mint
- assetService.logLevelChange → asset.level_up
- userService.UpdateCrystalBalance → crystal.change (wrapper fn added)

Cache warmup:
- main.go: 7 RPCs x 5 sample starIDs at startup (15s delay)
- prevents cold-start DB thundering herd

Existing service modifications:
- galleryService/exhibition_service.go
- taskService/revenue_service.go
- assetService/{mint_service,asset_level_service}.go
- userService/user_service.go
- socialService/asset_like_service.go

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:20:53 +08:00
f0b650de26 feat: 解决合并冲突 2026-06-04 00:03:40 +08:00
liulong
b9527bee70 feat:合并新 2026-06-03 22:41:19 +08:00
liulong
10168f8e6b feat:实现AI生成镭射卡功能 2026-06-03 22:19:22 +08:00
zerosaturation
e1829b2296 feat: 修改短信认证bug 2026-06-02 15:43:57 +08:00
zerosaturation
17c68c9233 feat:增加的ai搭子对话功能 2026-05-28 12:00:19 +08:00
zerosaturation
a39bb7b60f feat:新增sms短信注册 2026-05-26 13:23:04 +08:00
zerosaturation
4d42d9a6d0 feat: 新增历史点赞查询和修改点赞规则 2026-05-22 18:06:33 +08:00
zerosaturation
ee0433464f feat: 修改铸造消耗确认框和新增批量购买道具的功能,修改回退按钮的颜色 2026-05-22 00:14:28 +08:00
zerosaturation
0d591fdd94 feat: 修改展览页 2026-05-20 17:05:02 +08:00
zerosaturation
7b8fba5701 feat: 添加实时查询余额的接口 2026-05-19 18:50:57 +08:00
zerosaturation
45d3adc373 feat:添加光栅卡的选择 2026-05-17 19:03:34 +08:00
zerosaturation
afb235afd3 feat: 合并代码,解决冲突 2026-05-16 02:42:32 +08:00
zerosaturation
9505244db0 feat:新增铸造活动运营图 2026-05-12 10:42:00 +08:00
zerosaturation
852b02f014 feat :新增查看他人的在展作品 2026-05-09 16:05:02 +08:00
zerosaturation
4b2f43ecc5 feat: 新增个人页 2026-05-06 10:51:08 +08:00
zerosaturation
ca3eeb8b5a feat: 实现我的作品统计接口(点赞/展出)
- 新增 GET /api/v1/me/liked-assets 接口
- 新增 GET /api/v1/me/exhibited-assets 接口
- 新增 GetMyLikedAssets 和 GetMyExhibitedAssets RPC 方法
- 新增 ExhibitedAssetItemDTO 和 GetMyExhibitedAssetsResponseDTO
- 前端新增 getUserLikedAssetsApi 和 getUserExhibitedAssetsApi(暂不实现)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-06 10:51:06 +08:00
zerosaturation
bcaa743446 feat: 新增星册类型选择 2026-04-20 16:00:10 +08:00
zerosaturation
4e13c86aa4 fix: 修改任务系统奖励修复 2026-04-15 14:11:07 +08:00
zerosaturation
baf56d5ecf feat: 完善minimax调用图生图功能 2026-04-08 01:30:58 +08:00
zerosaturation
e834029f6a feat: 注册图生图 API 路由 2026-04-08 01:30:57 +08:00
zerosaturation
06f4038a75 提交后端代码 2026-04-07 22:29:48 +08:00