提交图

57 次代码提交

作者 SHA1 备注 提交日期
xcbyy
dd836b674e fix(security): 安全闸门与 NODE_ENV 解耦,支付/提现 fail-closed
- 新增 SECURE_MODE(仅 ALLOW_INSECURE_DEV_AUTH=1 时放开):后台登录口令、上传、内容检测、核销码归属全部改为默认收紧,修复线上以 NODE_ENV=development 运行时闸门失效

- 提现审核:未开通真实转账且未显式 ALLOW_SANDBOX_PAY=1 时一律 503,杜绝只改状态不打款

- 预支付:未开启沙箱时不再下发沙箱参数;小程序删除预支付失败伪造沙箱成功的兜底,改为抛错

- 订阅消息支持 MINIPROGRAM_STATE=formal|trial|developer 显式配置,避免真实用户收不到通知

- 动态列表/点赞身份统一 normalizeUserId;文档补充安全闸门与订阅消息环境变量

- 109 套件/720 用例全绿,tsc 构建通过
2026-10-21 11:50:11 +08:00
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
a1e3a137b6 fix(ui): 修复优惠券页/消息页导航栏位置偏高(标题与返回按钮应贴胶囊行)
- 原因:初版用 padding-top=safe-header-gap + 44px 内容行,把标题推到状态栏下方,顶部留白过大
- 改为与其它页面一致的规范:导航栏总高=var(--safe-header-gap),内容行 position:absolute;bottom:0;height:var(--capsule-height) 贴底对齐胶囊;标题绝对居中(translateX(-50%))
- 页面根改为 height:100vh + flex 纵向布局,列表用 flex:1 撑满剩余空间(tab-bar/滚动区不再按 100vh 硬算)
- 返回按钮对齐既有规范(64rpx 圆形底 + 38rpx 图标)
- 回归 97 套件/674 用例全绿(theme-consistency.spec.ts 增加导航规范断言)
2026-10-19 15:42:18 +08:00
xcbyy
ae569d0ca6 fix(ui): 优惠券页/消息页主题配色跟随全局主题切换
- coupons.vue / notifications.vue 由写死深色改为复用全局 CSS 变量(--bg-primary/--bg-surface/--color-brand-gradient/--text-*/--border-subtle/--nav-bg),随 theme-warm(暖阳晨曦)与默认冷光暗夜自动适配
- 大神工作台新增的服务包表单样式同步复用主题变量
- 新增回归护栏 theme-consistency.spec.ts(97 套件/673 用例全绿)
2026-10-19 15:27:04 +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
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
b88442af28 fix(subscribe): 修复小程序授权"未获得提醒授权"——避免授权弹窗与公告弹窗重叠
- openNotice 改为串行:先请求订阅授权,等授权弹窗关闭后再展示平台公告(此前两原生弹窗重叠会取消授权,回调全 reject)
- 授权结果区分展示:成功显示已开启项数;未同意提示可在微信设置中重新允许;接口报错显示 errCode
- requestSubscribeAll 单次最多取前3个模板(微信限制),并返回 resultMap 便于排查
- 回归 87 套件/639 用例全绿
2026-10-19 11:36:12 +08:00
xcbyy
cacc478d71 fix(subscribe): 订阅消息未下发原因可见 + 小程序真实授权
- 后台测试推送:未就绪返回 mode=SIMULATED 明确原因 + 配置自检(模板ID/openid/appId/appSecret/总开关),不再把模拟显示为成功

- 占位符 tmpl_xxx 视为未配置(测试推送与订阅模板接口均过滤),微信错误码中文化(43101/47003/40037/40001 等)

- 小程序「平台消息与通知」点击时真实调用 wx.requestSubscribeMessage 并回显授权状态,标签不再恒为已开启

- 管理端拦截器错误提示改用 message;文档补订阅消息排查顺序;新增回归护栏(86 套件/631 用例全绿)
2026-10-19 10:02:57 +08:00
xcbyy
029c6189a7 feat(mini): 下单/提现/报名前补订阅消息授权(提升微信服务通知到达率)
- 新增 common/subscribe.js:页面预加载模板ID + 点击动作中同步请求授权(避免 await 丢失手势上下文)

- 下单支付前请求订单状态/核销码模板;提现前请求到账模板;组局报名确认后请求报名模板

- 自动过滤 tmpl_ 占位模板;授权失败不阻塞业务

- 新增回归护栏 subscribe-authorization.spec.ts(80 套件/615 用例全绿)
2026-10-19 09:01:36 +08:00
xcbyy
e719de59a2 feat(mini): 平台规范与服务协议页面化(页内切换,替代弹窗)
- 个人中心'平台规范与服务协议'点击直接进入 /pages/common/protocol(不再 showActionSheet 选择)

- 协议页新增页内切换:用户服务协议 / 隐私保护指引(含暖阳主题适配)

- 新增回归护栏 protocol-page.spec.ts(76 套件/601 用例全绿)
2026-10-17 18:04:33 +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
a14f27d641 feat(spec-3): complete section 3.1/3.2/3.3 activity verify settlement, role_flags, and distribution_relations 2026-10-14 11:41:03 +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
f8e81d2df4 fix(mp-weixin): 全量修复22个页面及组件因增量编译scoped哈希不一致导致的样式失效问题 2026-10-14 09:21:03 +08:00
xcbyy
fb23b262b3 fix(promote): replace raw greater-than text with chevronRight icon to eliminate &gt rendering 2026-10-13 15:23:58 +08:00
xcbyy
7a5e515b8b feat(user): replace distribution modal with dedicated promote page 2026-10-13 15:17:15 +08:00
xcbyy
831dd4a493 fix(order-list): ensure back button returns to user center instead of home page 2026-10-13 15:04:32 +08:00
xcbyy
e0236d1489 style(withdraw): optimize amount input card layout with horizontal flex and sleek pill button 2026-10-13 14:49:55 +08:00
xcbyy
3b0268ab10 feat(bill): convert bill records modal into dedicated independent page 2026-10-13 14:10:00 +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
661d0d2589 feat(withdraw): convert withdraw records modal into dedicated independent page 2026-10-13 10:06:15 +08:00
xcbyy
cf11d5654b fix(withdraw): remove alipay/bank channels and enhance rules card text contrast in warm theme 2026-10-13 09:58:16 +08:00
xcbyy
d93a68d47c fix(withdraw): optimize header title centering and fix currency symbol overlap in amount input 2026-10-13 09:49:12 +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
1fb0cc4273 feat(withdraw): build dedicated withdrawal page with optimized layout and multichannel support 2026-10-13 09:19:34 +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
a004584109 fix(modal): restrict confirmText length to 4 chars and safeguard banner null access 2026-10-13 08:50:20 +08:00
xcbyy
6e78a7e4b7 feat(user): enable opening profile edit modal by clicking avatar or nickname 2026-10-13 08:44:36 +08:00
xcbyy
8d85ed54b2 feat(protocol): add dedicated full-text legal protocol page with smooth scroll view and link from login and user center 2026-10-13 08:35:47 +08:00
xcbyy
334b7a63b0 feat(auth): compact agreement layout to single-line and support flexible backend configuration for user agreement and privacy policy 2026-10-12 09:20:40 +08:00
xcbyy
fc2abe2ca6 fix(user): remove duplicate showLoginModal variable declaration 2026-10-12 08:55:09 +08:00
xcbyy
70623193a1 feat(auth): create dedicated official standard WeChat login page and remove popup modal 2026-10-10 17:48:35 +08:00
xcbyy
d7460f898d feat(expert): create dedicated expert apply page and navigate from user center 2026-10-10 16:57:48 +08:00
xcbyy
37b52c1efe feat(user): update login button label and integrate wechat native getPhoneNumber auth 2026-10-10 16:50:26 +08:00
xcbyy
314bcece55 fix(tabbar): import AppTabBar explicitly and use AppTabBar in templates for reliable rendering 2026-10-10 16:37:24 +08:00
xcbyy
ac20bf1c5f fix(uniapp): resolve css syntax error in create order and rename custom-tab-bar to app-tab-bar 2026-10-10 16:34:12 +08:00
xcbyy
593d44bdbd feat(user): add logout, demo account switcher and guest state support 2026-10-10 16:20:55 +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
8845fbe7cb feat(community,faq): support dynamic community topics, notice, and FAQ center 2026-10-10 10:04:49 +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
c6049f64d9 feat(compliance): 完善微信内容安全检测、用户隐私保护指引弹窗与主包分包加载架构 2026-10-09 19:09:40 +08:00
xcbyy
d0f4050cdc feat: 完善对象存储上传与真实条码二维码引擎,彻底剥离保底Mock数据 2026-10-09 17:18:14 +08:00
wikiboss
6d3076cdb8 feat(ui): 优化顶部安全距离,实现微信小程序与H5端无缝兼容及胶囊避让 2026-09-16 20:53:02 +08:00
wikiboss
6f6e6229ec feat(ui): 移除四大TabBar主页原生navbar实现全沉浸式视觉体验 2026-09-16 20:46:32 +08:00
wikiboss
f829d6f6b5 fix(theme): 修复浅色主题下大神昵称白底白字及标签对比度过低问题,消除黑底黑字与样式失效缺陷 2026-09-16 20:39:02 +08:00
wikiboss
db38e380bf feat(ui): 基于10大子代理全面优化浅色暖色系视觉断层与多端无障碍体验 2026-09-16 20:35:29 +08:00
wikiboss
1a56ba2682 feat(theme): 完善顶部导航栏与底部菜单浅色暖色系适配及多端Tab生命周期同步 2026-09-16 20:27:07 +08:00