Commit Graph
23 Commits
Author SHA1 Message Date
lai_hong d27753f732 chore: snapshot handoff documents before home search redesign 2026-09-14 10:08:19 +08:00
lai_hong 679e472570 fix(order): align prisma schema with order service 2026-09-13 22:22:42 +08:00
lhmin0604 c6877c355a merge: integrate catalog into order payment flow 2026-09-13 18:18:14 +08:00
lhmin0604 16e625aefb feat(r3): complete order and payment flow 2026-09-13 13:56:59 +08:00
lai_hong 59e398fcf9 feat(catalog): add product catalog APIs 2026-09-13 11:17:53 +08:00
lhmin0604andClaude 63c0013076 Merge branch 'feat/r2-address-design' into main
R2 地址与设计清单完整 CRUD(事务/归属校验/状态机/2MB 限制)、
PATCH /api/users/me 补齐、api-contract §5 措辞修正与实现注记

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-12 20:41:19 +08:00
lhmin0604andClaude 2445aef666 docs(contract): 实现注记补充 x/y 允许超出画布边界(同步前端钳制撤销决策)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-12 20:10:31 +08:00
lhmin0604andClaude 93f7473ad7 docs(contract): §5 修正贴纸 src 措辞矛盾 + 补 DIY 修正实现注记
- 引用块原写「禁止 wxfile://」与 design-data-contract-v1 约束#1/决策#4
  (R2 允许暂存本地图,R4 派单前持久化回写)矛盾,按冻结决策对齐
- 新增实现补充:stickers[].width/height 语义 = 画布显示像素(DIY 修正,
  非契约变更,不升版本)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-12 18:54:12 +08:00
lhmin0604andClaude 3fc65e50bf feat(users): 补齐 PATCH /api/users/me(契约 §2 遗漏)
service 的 updateProfile 已存在但 controller 未注册路由,
Profile 页保存资料 404。新增 UpdateProfileDto(nickname/avatar 可选,
白名单校验),与契约 §2 对齐。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-12 04:39:35 +08:00
lhmin0604andClaude 0a3c8e834d feat(r2): 地址与设计清单完整 CRUD(事务/归属校验/状态机)
addresses:
- 补 PATCH /:id、DELETE /:id(契约 §4 全路由齐备)
- 默认地址唯一性事务:create/update/setDefault 先清旧默认再写入
- 首个地址自动设为默认;删除默认地址事务内补偿最新一条
- 归属校验统一:不存在 404,非本人 403

design-list:
- 补 PATCH /:id、DELETE /:id、POST /batch-delete(宽松语义返回 deleted 数)
- items 强制恰好 1 个元素(一条设计=一条清单,阶段0 决策#1)
- designData 白名单 7 键放行、单条 ≤1MB 校验(400)
- 单向状态机 DRAFT→SUBMITTED→PROCESSING→DONE,回退/跳级 400
- PATCH 部分更新语义,不传 items 不清 designData(R4 wordcloud 保护)

infra:
- main.ts: JSON body 上限 100KB→2MB,使契约 1MB 设计数据可达(>2MB 返回 413)
- exceptions filter: body-parser entity.too.large 映射 413
- api-contract-v1.md §5 补实现说明(非契约变更)

验证:nest build 通过;本地 3091 实例 + mock 登录实测 35 项全过
(CRUD/默认地址补偿/越权 403/404/状态机/1MB 边界/413/未登录 401)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-12 02:37:53 +08:00
broccoli 01a1891988 Merge R4 order-list contract into main 2026-08-13 12:19:17 +08:00
broccoli c28b2af651 docs: wordcloud 契约补充生产订单列表(GET /api/orders) 2026-08-13 12:16:33 +08:00
broccoli 2c4a2ce5c8 Merge feature R4 (upload + wordcloud + WCD dispatch) into main 2026-08-13 01:50:04 +08:00
broccoli 6552b15d2e feat(wordcloud): GET /api/wordcloud/jobs/:id/result 端点 2026-08-13 01:40:14 +08:00
broccoli 3f7ce2cdcd feat(r4): POST /api/sketch + Upload 归属记录 + 派单状态后台同步与大小校验 2026-08-13 01:34:19 +08:00
broccoli 34f48d0d59 feat(wordcloud): 下单 WCD 派单(buildWcdPackage + dispatch + 幂等 + 订单设计关联) 2026-08-12 20:55:37 +08:00
broccoli 910da1c369 feat(cos): 接入 COS 直传预签名 + 词云结果图转存 2026-08-12 19:30:30 +08:00
broccoli 8925e83b8f feat(wordcloud): WordCloudJob 模型/迁移 + 词云生成与轮询适配器 2026-08-12 19:08:57 +08:00
broccoli d47b62c337 feat(config): 接入词云平台 WORDCLOUD_API_URL/WORDCLOUD_TIMEOUT_MS 配置 2026-08-12 19:08:26 +08:00
broccoli 08bdea2625 docs: 冻结 wordcloud WCD 契约(v1.1)与 designData 生产字段 2026-08-12 19:08:26 +08:00
broccoli d39c619c41 docs: add API and wordcloud contract v1 2026-08-10 02:08:50 +08:00
broccoliandClaude Fable 5 1d946046d2 feat: 微信登录与认证完善 + 一键 docker compose 启动
登录流程(以 openid 为唯一标识):
- auth.service.login 改为 upsert:openid 在库续登,不在库自动建用户签 token
- 个人主体无 getPhoneNumber 权限,故不强制手机号注册;register 接口保留备未来用
- wechat.service 新增 getAccessToken(Redis 缓存)、getPluginOpenPid、getUserPhoneNumber
- 新增 /api/wechat/plugin-openpid、/api/wechat/phone 接口

schema 与迁移:
- User 增加 openpid(可空唯一) 兼容插件场景;openid 保持必填主键
- 新增 add_openpid_optional_openid、openid_required_primary 迁移

部署:
- docker-compose.yml 改为 docker compose up -d 一键启动 postgres+redis+app
- app 容器内用服务名连 db/redis,启动自动跑 prisma migrate deploy
- 端口统一 3090(Dockerfile EXPOSE、compose 映射同步)
- 新增 docs/wechat-api-signature-guide.md API 签名手册

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 21:21:09 +08:00
broccoliandClaude Fable 5 deaa0c9ce4 feat: 初始化微信小程序后端骨架
- NestJS + TypeScript + Prisma + PostgreSQL 工程骨架
- 微信登录安全流程:服务端 code2Session 换 openid 后签发 JWT,
  session_key 缓存于 Redis,不信任前端 openid
- 统一响应/异常处理、JWT 全局鉴权(@Public 豁免)、Swagger 文档
- Prisma 全量核心 schema(用户/分类/商品/设计清单/地址/订单/支付/上传/定制任务)+ seed
- 业务模块空壳(商品/分类/设计清单/地址/订单/支付/上传/BullMQ 队列)
- Docker 多阶段镜像 + 本地/生产 docker-compose
- docs:密钥获取指南、COS SDK 移除记录

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 17:33:50 +08:00