提交图

58 次代码提交

作者 SHA1 备注 提交日期
xcbyy
d0693c6d9e feat(share): 微信小程序全页面支持分享到好友和朋友圈,并自动携带分销邀请裂变参数 2026-10-23 11:05:48 +08:00
xcbyy
f082ae8276 fix(theme): 修复门票页导航栏主题脱节与个人中心双身份卡片流光动画,加固活动参与人画像与大神隐私 2026-10-23 09:05:32 +08:00
xcbyy
001f81eaca feat(lbs): 大神真实 5km 即时匹配与接单心跳
- companions 新增 latitude/longitude/last_active_at 与 idx_comp_active;切换接单中立即刷新活跃时间

- 新增 /api/companions/heartbeat(鉴权)与 /api/companions/match(真实注册+审核通过+接单中+10分钟心跳,Haversine 5km 过滤与距离排序,不返回精确坐标)

- 工作台/接单大厅/雷达前台每 60s 心跳,离开停止;首页即时匹配改为服务端 LBS 匹配并展示真实距离

- 线上实测:2010 匹配排除自己,仅命中 280m 的 8 号;匿名命中 9 号 10m、8 号 280m;北京 5km 为 0;118 套件/771 用例全绿
2026-10-22 18:44:02 +08:00
xcbyy
b573c1ed05 fix(home): 即时匹配改为真实在线大神实时匹配,优化弹窗按钮与暖色主题对比度
- 每次匹配重新拉取 /api/companions,只匹配 user_id>0(真实注册)、接单中、排除当前用户的大神

- 换一位优先避开上一位,解决长期固定命中种子大神(林深见鹿 userId=0)的问题

- 弹窗更名为「在线大神即时匹配」,按钮改为「换一位 / 查看资料并预约」,补充图标、尺寸与暖色主题对比

- 关闭弹窗取消未完成匹配;117 套件/765 用例全绿
2026-10-22 18:14:51 +08:00
xcbyy
fba6c5ac22 feat(auth): 移除多角色体验账号直登,仅保留微信手机号授权登录
- 登录页删除体验账号卡片、切换按钮与全部 demo 登录/失败回退逻辑,微信授权失败只提示重试

- completeLogin 只接受服务端签发的 token,禁止无 token 的假登录

- 删除 /api/auth/demo-accounts、/api/auth/demo-login、loadDemoAccounts 与客户端 API

- 停止种子 demo_accounts 配置并清理历史配置行;117 套件/763 用例全绿;线上接口已 404
2026-10-22 15:45:48 +08:00
xcbyy
d876288394 feat(list): 订单/通知/组局列表分页,生产 NODE_ENV 切换 production
- 仓储层 getOrders/getOrdersForUser/getActivities/getUserNotifications 支持 LIMIT/OFFSET,新增 countOrders/countOrdersForUser/countActivities/getUserNotificationTotal

- 接口支持 page/pageSize/status/keyword/payType/creatorId/category,返回 list/total/hasMore;未传 page 保持旧数组格式,兼容后台与工作台

- 小程序订单/通知/组局三页触底加载,筛选与搜索下推服务端,避免只过滤当前页

- 新增 116 套件/758 用例,全绿;线上实测分页与筛选接口正常
2026-10-22 10:52:40 +08:00
xcbyy
d941a16d28 fix(miniapp): 清理剩余身份兜底并修正待接单状态/客服入口
- 修复 user/index 使用 normalizeUserId 未导入(分享按钮会报错)

- 待接单独立为 PENDING_ACCEPT:新增待接单 tab/状态色/取消订单与联系客服操作,不再显示为进行中

- 移除 hall/bill-records/reports/settings/favorites/order-create/activity-create/activity-detail/apply 的 1001/2006 身份兜底

- 线下订单(含指定大神)必须填写碰面地点;再次预约不再兜底到 101 号大神;评价不预选标签

- 接单大厅去掉「已实名认证/信誉积分100」等伪造信任文案;客服按钮统一为「联系客服」

- 114 套件/745 用例全绿
2026-10-22 09:25:27 +08:00
xcbyy
be1c7be5d3 revert(order): 移除订单站内聊天,沟通统一走官方客服
- 删除 pages/order/chat、聊天接口/仓储方法/order_messages 建表与客户端 API

- 买家「联系大神」、大神「联系老板」、大神详情「在线客服」、组局「私聊」统一改为 openSupportSheet(读取后台 customer_service 配置的客服微信/热线)

- 保留派单实时通知与雷达/大厅轮询

- 114 套件/742 用例全绿;聊天接口线上已 404
2026-10-22 09:10:16 +08:00
xcbyy
aca35db200 feat(order): 派单实时通知 + 订单站内聊天
- 新派单(余额支付立即入池 / 微信支付确认后入池)向在线认证大神推送 ORDER_POOL 站内通知;雷达 20s、接单大厅 30s 自动轮询

- 新增 order_messages 表与订单会话接口:仅买家与已认领大神可访问,服务端拦截手机号与违规内容,消息落库并推送 CHAT 通知

- 新增 pages/order/chat 聊天页(3s 轮询、已读、发送),买家订单「联系大神」与大神工作台「联系老板」接入

- 114 套件/744 用例全绿;线上实测聊天/越权/手机号拦截/新单通知均通过,测试数据已清理
2026-10-22 08:52:12 +08:00
xcbyy
16f6419cba refactor(data): 全面移除小程序写死的演示/兜底数据,测试数据统一落库
- 删除无引用的 common/mock.js;登录页与个人中心的演示账号改为 DB 配置 demo_accounts + /api/auth/demo-accounts、/api/auth/demo-login(签发真实 token)

- 移除订单/活动/大神/动态/推广/工作台/门票/充值/举报等页面的演示列表与假兜底;新增真实空态

- 修复伪造成功:活动调价、评价回复、核销、海报保存、图片上传失败、提现/核销固定 1001、随机开黑房号、随机即时匹配、假语音播放等

- 服务端移除 101/2006 合成用户与合成大神兜底、移除默认服务包虚构价格;演示账号清单可在后台关闭

- 111 套件/733 用例全绿;已部署 20261021_162041,demo-accounts/demo-login 实测通过
2026-10-21 16:21:10 +08:00
xcbyy
68e41ca962 feat(lbs): 真实距离与按距离派单落地
- 数据库:orders/activities 新增 latitude/longitude(含存量表 ALTER 迁移)

- 服务端:Haversine 计算 distanceKm/distanceText,派单池支持 lat/lng/radius 过滤并按距离升序;历史无坐标订单用腾讯地理编码兜底并回写缓存

- 新增 /api/lbs/reverse 逆地址解析(Key 仅服务端持有,登录 + 限流)

- 小程序:雷达/接单大厅改用真实定位与真实距离,删除全部写死演示距离;下单页新增地图选点,组局页保存选点经纬度

- 修复接单大厅点接单会新建订单的问题,改为真正 claimOrder 认领

- 新增 lbs-distance 护栏(110 套件/729 用例全绿)
2026-10-21 14:29:33 +08:00
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
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
ee4fe9d7c4 chore(clean): 清理残留连麦与私信文案(设计文档/动态规则/大厅需求/mock) 2026-10-20 15:55:20 +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
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
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
3d895a1a0a fix(community): add missing heart and heartFilled icons to restore like button rendering 2026-10-13 15:37:07 +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
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
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
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
wikiboss
63e81995ad fix(ui): 修复首页试听条文字折行问题,完善单行文本省略截断规范与文案精简 2026-09-16 20:22:18 +08:00