xcbyy
|
87cb6a6374
|
fix(miniapp): 提现/财务接口不再用 1001 演示身份,修复 403
- getUserProfile/getUserWithdrawals/getUserFinanceRecords 去掉 userId=1001 默认值,改由 normalizeUserId 解析登录身份
- withdraw.vue / withdraw-records.vue / workspace.vue 调用改为 normalizeUserId(),不再硬编码 1001
- normalizeUserId 将 1001 视为演示占位符:登录态下传 0 由 token 识别,未登录才兜底 1001
- request.js 遇 403 身份校验失败时清理错配登录态并提示重新登录(其它 403 权限拒绝不受影响)
- 登录态闸门补齐用例(108 套件/714 用例全绿)
|
2026-10-21 11:38:26 +08:00 |
|
xcbyy
|
9217dfcf11
|
fix(miniapp): 导出 normalizeUserId 修复入驻页编译失败
- api.js 的 normalizeUserId 之前是内部函数,apply.vue 具名导入导致 HBuilderX 编译报错,现改为 export
- 新增 miniapp-imports.spec.ts:静态校验小程序所有具名导入都存在对应导出,避免再出现只能靠人工编译才发现的问题(108 套件/711 用例全绿)
|
2026-10-21 11:32:03 +08:00 |
|
xcbyy
|
7a1e32688c
|
fix(miniapp): 修复登录态错配导致的 403(userId 与 userToken 原子写入/清除)
- completeLogin 统一接收 sessionToken:有 token 写入、无 token(体验账号回退)清除旧 token,杜绝旧 token 属主与新 userId 不一致
- 微信手机号登录把 token 交给 completeLogin 统一落库
- normalizeUserId 移除历史 101→2006 映射;有 token 但本地 userId 缺失时传 0,由服务端按 token 识别
- 新增 login-identity-consistency.spec.ts(106 套件/706 用例全绿)
|
2026-10-21 10:59:22 +08:00 |
|
xcbyy
|
720cb97877
|
feat(voice): 大神语音介绍真实落地(录制/上传/试听)
- DB: companions.voice_intro_url;仓储 updateCompanionVoice;详情与 /api/expert/me 返回 voiceIntroUrl/voiceDuration
- 后端: POST /api/companions/:id/voice(音频白名单 mp3/m4a/aac/wav/ogg、5MB、≤60s、限流、仅本人或管理员)
- 小程序: api.uploadVoiceIntro(uni.uploadFile + 用户令牌);工作台新增「语音介绍」卡片(录制/重录/试听,60s mp3);详情页改为 uni.createInnerAudioContext 真实播放,卸载销毁
- 修复 uploadImage 未携带用户令牌(生产 fail-closed 后会导致上传失败)
- 新增 voice-intro.spec.ts(104 套件/701 用例全绿);冒烟 7/7
|
2026-10-20 18:25:11 +08:00 |
|
xcbyy
|
d0d31d0380
|
feat(search): 大神关键词搜索走服务端(昵称/品类/段位/标签)
- 仓储 getCompanions(keyword?):参数化 LIKE 搜索 name/track/rank_name/tags 及 id 精确匹配
- 接口 /api/companions 支持 ?keyword=(长度截断 40)
- 小程序 api.js getCompanions(keyword) 带 encodeURIComponent;首页监听 searchKeyword 防抖 350ms 走服务端搜索,搜索态以服务端结果为准(含空结果不展示陈旧数据)
- 回归 95 套件/668 用例全绿;冒烟 4/4(昵称/品类命中、无匹配空数组、无关键词向后兼容)
|
2026-10-19 15:10:11 +08:00 |
|
xcbyy
|
6576c9e4be
|
feat(coupon): 优惠券中心(领取)+ 我的券 + 下单核销/回退
- 新表 user_coupons(快照面额/门槛/类目/有效期)+ orders.user_coupon_id
- 仓储:getCouponsWithClaimed/claimCoupon/getUserCoupons/resolveUserCoupon/consumeUserCoupon/releaseUserCouponByOrder
- 接口:POST /api/marketing/coupons/:id/claim(同券仅一次、受总量限制)、GET /api/marketing/my-coupons(自动标记过期)、券中心带 claimed 标识
- 下单:createOrder 支持 userCouponId(校验归属/门槛/类目/有效期,服务端算抵扣,与订单同事务占用)
- 回退:买家取消/大神拒单/超时退款/仲裁退款 均把券退回为 UNUSED
- 小程序:新增 pages/user/coupons(券中心+我的券)、个人中心入口(可用张数)、下单改为选择"我的券"并传 userCouponId
- 回归 94 套件/666 用例全绿;冒烟 9/9(领取/重复领取409/不存在404/下单抵扣100-10=90/取消回退)
|
2026-10-19 15:05:56 +08:00 |
|
xcbyy
|
500aac306e
|
feat(expert): 大神服务包自助维护(新增/编辑/删除/上下架)+ 去掉演示服务包
- 后端:新增 POST/PUT/DELETE /api/companions/:id/services[...](仅本人大神或管理员),含名称/单价区间(平台定价规范)/长度/内容安全/每人20个上限校验
- 仓储:createExpertService/updateExpertService/deleteExpertService/countExpertServices/getCompanionByUserId;移除"首次读取自动生成 3 个演示服务包",并在建表后一次性清理历史演示数据
- 新增 GET /api/expert/me:工作台按登录用户解析真实大神档案(不再固定演示 id 101)
- 小程序:api.js 增加 getMyExpertProfile/createExpertService/updateExpertService/deleteExpertService;工作台新增「新增服务」入口、每项「编辑/删除」按钮与服务包表单弹窗,收益/服务统计改用真实大神 id
- 新增回归护栏 expert-service-crud.spec.ts(93 套件/662 用例全绿);冒烟 9/9(含跨大神越权 403、低价 400)
|
2026-10-19 14:46:05 +08:00 |
|
xcbyy
|
ca7f849b14
|
feat(notify): 新增站内消息通知中心(订阅消息兜底)+ 清理后台伪造数据
- 新表 user_notifications + 仓储方法(创建/列表/未读数/标记已读)
- 用户接口 GET /api/notifications、POST /api/notifications/read(生产需登录)
- 关键节点落库:订单开始服务/接单/拒单/申请完成/完成结算/提现到账/报名成功/退款受理
- 小程序新增「消息通知」页(pages/user/notifications) + 个人中心入口与未读角标;api.js 增加 getNotifications/markNotificationsRead
- 清理后台伪造数据:/api/user/certification 改空态、/api/user/my-project/list 改空数组、/api/user/info 去掉编造邮箱/电话/网址
- 更新 pages 数量断言(26→27);新增回归护栏 notification-center.spec.ts(92 套件/658 用例全绿);冒烟 9/9
|
2026-10-19 14:31:11 +08:00 |
|
xcbyy
|
2599dce315
|
feat(security): 三端闭环加固 + 微信提现打款/订阅消息落地
后端: 身份与归属鉴权收口; 资金安全(结算闸门/支付防篡改/报名费真实扣款/赠金/结算唯一入账/提现打款); 数据泄露与隐私; 登录与密钥安全(默认密钥闸门/登录限流); 可观测性; 启动自检.
微信: 商家转账到零钱提现打款闭环(含回调/查单/失败退回佣金); 订阅消息真实下发闭环与后台模板字段对齐.
后台: 财务/微信支付配置读取失败锁定; 看板/待办/走势去假数据; 打款与测试推送文案修正.
小程序: 请求层错误透传与登录过期提示; 多页失败反馈与乐观回滚; 帮助中心FAQ页面化.
测试: 新增 40+ 回归护栏与真实 MySQL 冒烟(75 套件/599 用例全绿).
|
2026-10-17 18:00:09 +08:00 |
|
xcbyy
|
78117bb4e1
|
feat: security hardening, wechat pay v3 platform cert integration, companion certification revocation, and audit closed-loop
|
2026-10-16 17:38:17 +08:00 |
|
xcbyy
|
3bf38db8b6
|
feat(order): complete 7.1 order full lifecycle state transitions, 15m/30m/48h auto-timeouts, expert reject/apply-complete, and partial refund arbitration
|
2026-10-14 15:52:56 +08:00 |
|
xcbyy
|
8fc4d601c3
|
fix(api): export updateCompanionProfile for expert workspace and hall
|
2026-10-14 11:07:56 +08:00 |
|
xcbyy
|
51c19d6063
|
feat(closed-loop): complete end-to-end closed loops across miniapp, backend, and admin
|
2026-10-14 10:13:50 +08:00 |
|
xcbyy
|
1853e653fb
|
fix(core): comprehensive fix for state loss across activity, ticket, workspace, favorites and community
|
2026-10-13 16:01:19 +08:00 |
|
xcbyy
|
497fb65359
|
fix(community): persist post liked status in MySQL and local storage to prevent state loss on page switch
|
2026-10-13 15:46:04 +08:00 |
|
xcbyy
|
3bb6f5a6be
|
fix(auth): resolve user 101 404 error by normalizing test user ID to 2006 and adding server fallback
|
2026-10-13 10:41:49 +08:00 |
|
xcbyy
|
26735530b4
|
fix(user): remove obsolete withdrawal modal and recompile mp-weixin to dedicated withdraw page
|
2026-10-13 09:44:13 +08:00 |
|
xcbyy
|
35a5a6670c
|
fix(withdraw): resolve remote 404 route, db reason column patch and avatar tmp path fallback
|
2026-10-13 09:33:29 +08:00 |
|
xcbyy
|
e867488d0d
|
feat(expert): full closure of expert revenue trends, multichannel withdrawals, service manage, review reply and post manage
|
2026-10-13 09:13:06 +08:00 |
|
xcbyy
|
7ac81035b4
|
feat(order): support balance payment, dynamic marketing coupon recommendation, and quick activity picker
|
2026-10-10 15:37:41 +08:00 |
|
xcbyy
|
872af22c20
|
feat(config): add finance rules, activity rules, and real expert application flow
|
2026-10-10 14:06:29 +08:00 |
|
xcbyy
|
e36e80c399
|
feat(safety): support full CRUD for approved commercial places and dynamic sync to uniapp
|
2026-10-10 09:52:42 +08:00 |
|
xcbyy
|
dc19189bc6
|
feat(system): implement dynamic platform configs for customer service, safety notice, and service agreement
|
2026-10-10 09:47:53 +08:00 |
|
xcbyy
|
d9c8388711
|
feat(marketing): implement recharge tiers and coupon management across admin, server, and uniapp
|
2026-10-10 09:22:46 +08:00 |
|
xcbyy
|
51682fffea
|
feat(nav-category): support dynamic home grid categories in admin and uniapp
|
2026-10-10 09:08:18 +08:00 |
|
xcbyy
|
c6049f64d9
|
feat(compliance): 完善微信内容安全检测、用户隐私保护指引弹窗与主包分包加载架构
|
2026-10-09 19:09:40 +08:00 |
|
xcbyy
|
d0f4050cdc
|
feat: 完善对象存储上传与真实条码二维码引擎,彻底剥离保底Mock数据
|
2026-10-09 17:18:14 +08:00 |
|