xcbyy
|
615f632aad
|
fix(security): 清理测试脚本硬编码数据库密码与后台默认演示凭证预填
|
2026-10-23 16:19:30 +08:00 |
|
xcbyy
|
94cf6cdc69
|
perf: 清理无界缓存、合并收益走势查询、补齐组合索引并优化前端定时器/图片加载
- 移除只写不读的 verifyCodeCache(无界内存增长)
- 大神收益走势由 20 次逐日/逐周/逐月查询改为 3 次 GROUP BY 聚合
- 派单池地理编码改为并行,避免串行等待外部接口
- 补齐 orders/activities/participants/user_notifications/finance/withdrawals/posts 组合索引;修复 withdrawals 使用不存在 created_at 的失效索引
- 数据库连接池支持 MYSQL_CONNECTION_LIMIT/MYSQL_QUEUE_LIMIT
- 首页/弹窗定时器卸载清理,活动列表参与者按活动 id 查询,大厅组局按页取数,图片 lazy-load
- 121 套件/792 用例全绿;已部署并验证新索引与 9ms 走势查询
|
2026-10-23 15:31:37 +08:00 |
|
xcbyy
|
59bae415ad
|
perf: 全栈性能排查与优化落地 (消灭运行时DDL/消除全表扫描/内存泄漏治理/高频静态缓存)
|
2026-10-23 14:28:47 +08:00 |
|
xcbyy
|
4d2e7b6464
|
fix(activity): 参与人昵称/头像回填真实用户,已注销用户明确标注
- getActivities/getActivityById 的 participants 关联 users,返回真实昵称与头像
- 用户已删除时返回「用户已注销」,避免详情页显示搭子_id
- 118 套件/773 用例全绿;线上活动详情已验证真实昵称
|
2026-10-23 09:09:41 +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
|
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
|
e595defaaf
|
fix(admin): 用户360画像订单归属改用 expert_id IN (本人档案 id),与列表口径一致且避免 id 撞号
|
2026-10-22 11:35:46 +08:00 |
|
xcbyy
|
32defce50c
|
fix(order): 关闭按用户 id 撞库档案 id 的订单归属兜底,避免潜在越权读取
- getOrdersForUser/countOrdersForUser 仅按 companions.user_id 关联本人档案,不再使用 companions.id = 用户 id
- 补充回归断言;116 套件/758 用例全绿;线上已验证用户订单仍正常
|
2026-10-22 11:33:47 +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
|
082ec1c385
|
feat(order): 禁止自己接自己发布的订单
- claimOrder 校验 buyer_id 与大神登录用户 id,相同直接 403「不能接自己发布的订单」
- 派单池支持 excludeBuyerId:已登录大神不会看到自己发布的待接单
- 115 套件/753 用例全绿;线上实测自接 403、他人可抢、自己的单不出现在自己的池子
|
2026-10-22 10:35:56 +08:00 |
|
xcbyy
|
81368f870f
|
fix(order): 统一 expert_id 为大神档案 id,统计兼容历史接单;修复提现卡单告警误报
- claimOrder 写入 expert_id=companion.id、claimed_by=user.id;启动时幂等回填历史 expert_id=claimed_by 的数据
- getExpertStats / getExpertRevenueTrends 按 (expert_id=? OR claimed_by=?) 双口径统计,解决工作台与接单大厅口径不一致导致漏单
- withdrawals 新增 updated_at(ON UPDATE),提现卡单巡检改用最后更新时间,避免审核旧工单立即误报
- 115 套件/752 用例全绿;线上实测抢单写入 expert_id=9/claimed_by=2010,改后统计两口径一致
|
2026-10-22 10:31:21 +08:00 |
|
xcbyy
|
65ddc7301a
|
feat(ops): 每日数据库备份 + 资金异常巡检告警 + 后台操作审计
- 新增 system_alerts/admin_audit_logs 表与 (status,created_at) 索引;启动即巡检、每 5 分钟扫描提现卡单/支付与订单不一致/待接单超时
- 后台新增「系统告警与操作审计」页(告警处理 + 审计列表),并接入消息铃铛待办
- 余额调整/封禁/删除/大神审核/提现打款/告警处理等敏感操作写入审计日志(含 IP)
- 新增 server/scripts/backup-db.sh 并已在生产配置每日 03:30 cron(校验+保留 14 天)
- 清理空的 order_messages 表;115 套件/750 用例全绿;线上实测告警接口/审计落库/备份均通过
|
2026-10-22 09:54:10 +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
|
14ce4b25f5
|
feat(admin): 用户列表新增「调余额」人工充值/扣减入口
- 新接口 POST /api/admin/users/:id/balance(requireAdmin):事务锁行、扣减不可为负、单次上限 100 万、写 finance_records 并推送站内通知
- 后台用户列表每行新增「调余额」按钮与弹窗(当前余额/方向/金额/备注)
- 新增 admin-balance-adjust 护栏;113 套件/737 用例全绿
|
2026-10-21 17:41:54 +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
|
77aa4cb50b
|
feat(order): 平台派单闭环(发需求单进入待接单池)
- 下单页新增「指定大神 / 平台派单」模式:平台派单填品类、预算、地点/选点,expertId=0
- 服务端:平台派单单据支付后进入待接单池(余额支付即时入池,微信支付确认后入池),预算由买家出价但受 1~2000 元/小时约束
- 抢单由认领大神写入 expert_id 并转履约中;30 分钟无人接单沿用自动全额退款
- 修复订单 INSERT 占位符少一个导致下单报 Column count doesn't match 的问题,并新增列数/占位符一致性护栏
- 111 套件/737 用例全绿;线上 1 元实测:下单→待接单→池内 640m,测试数据已回滚
|
2026-10-21 15:16:03 +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
|
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
|
f3ea26d161
|
feat(admin): 方案A—消息铃铛接真实待办聚合 + 清理空壳接口与空卡片
【消息铃铛(真实数据)】
- POST /api/message/list 改为待办聚合:待接单订单/待审核大神/待审核提现/待处理举报/待仲裁工单(复用 getDashboardTodos + 新增 pendingOrdersCount)
- POST /api/message/read 持久化已读:新表 admin_message_reads 记录"已读时的数量",待办数量增加会重新变未读
- 两个接口均加 requireAdmin(待办数量属运营数据,不再匿名可见)
【删除空壳/死接口(前端已无调用方)】
- /api/user/save-info、/api/chat/list、/api/user/my-team/list、/api/user/latest-activity、/api/user/my-project/list
【后台页面清理】
- 「用户与个人中心 → 管理员资料」移除 我的项目/最近动态/我的团队/站内通知 四张空卡(保留真实的管理员资料头部)
- 删除对应 4 个组件;api/user-center.ts 移除 queryMyProjectList/queryMyTeamList/queryLatestActivity/saveUserInfo;api/message.ts 移除 queryChatList
【验证】
- 新增 admin-todo-bell.spec.ts;更新 admin-demo-data-cleanup.spec.ts
- 全量 101 套件 / 690 用例全绿;冒烟 8/8(未登录50008、待办数量、已读、新增后重新未读)
- 后台 pnpm build 通过
|
2026-10-20 15:52:04 +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
|
a61051fa96
|
security: 修复公开配置接口泄露密钥(map_location_config/security_words)
- /api/system/configs 无需登录,此前原样下发 map_location_config(腾讯位置服务 SecretKey)与 security_words(风控词库)
- getPlatformConfigs 改为:排除 security_words/map_location_config,并递归剔除 secret/private/apiv3/token/pem/cert/mchid 等敏感字段
- wechat_pay_config 仍仅返回脱敏字段(mode/appId/mchIdConfigured)
- 新增回归护栏 public-config-privacy.spec.ts(89 套件/644 用例全绿);冒烟 5/5
|
2026-10-19 13:39:04 +08:00 |
|
xcbyy
|
b77827522f
|
fix(config): 占位凭证清理改为一次性(标记位保护),避免误清管理员填写的真实 AppID
- 历史占位 appId/appSecret 的清理由"每次启动执行"改为"仅首启执行一次",写入 wechat_pay_placeholder_cleaned 标记
- 此后即使管理员填写的 AppID 恰好等于旧占位值(本账真实 AppID),重启也不会被再次清空
- 「拉取小程序模板列表」缺凭证时错误提示改为可操作指引(指明填写位置)
- 回归 87 套件/636 用例全绿;冒烟 5/5 验证 Phase A 首启清理、Phase B 重启保留
|
2026-10-19 11:00:23 +08:00 |
|
xcbyy
|
01823a1db4
|
security: 移除硬编码微信小程序 appId/appSecret,改为只读配置+缺失即失败
- 后端不再兜底内置 appId/appSecret,缺失时 jscode2session/手机号/支付/内容审核等接口明确拒绝(fail-closed)
- 建表种子改为空值;启动自愈由「写入占位值」改为「清空历史占位值」,杜绝误用非本小程序 appId(40037 根因)
- 后台/引导文案去除具体 AppID;文档补充 WX_APP_ID/WX_APP_SECRET 说明
- 新增回归护栏 wechat-appid-config-hardening.spec.ts(87 套件/636 用例全绿);HTTP 冒烟 4/4 验证缺失即失败
|
2026-10-19 10:33:31 +08:00 |
|
xcbyy
|
cbf77a7252
|
perf(db): 高频查询补索引 + 大列表加合理上限(避免全表下发)
- 启动建表后幂等补索引:orders/finance_records/users/reports/companions/payment_intents/payment_refunds 等高频查询列
- 管理端订单/财务流水/用户列表 LIMIT 500,友圈/评价列表 LIMIT 200,防止无界查询
- expert_services 懒建表后补 expert_id 索引
- 新增回归护栏 list-pagination-index.spec.ts(84 套件/625 用例全绿)
|
2026-10-19 09:28:02 +08:00 |
|
xcbyy
|
d665cd6976
|
feat(order): 订单超时自动流转改为后台定时任务
- 新增 startOrderTimeoutScheduler:默认每 60s 扫描(ORDER_TIMEOUT_SCAN_MS 可配,DISABLE_ORDER_TIMEOUT_SCAN=1 可禁用),带防重入与 unref
- 启动时自动开启;移除订单查询接口里的被动扫描,避免每次请求触发
- 文档补充定时扫描环境变量;新增回归护栏 order-timeout-scheduler.spec.ts(83 套件/622 用例全绿)
|
2026-10-19 09:22:52 +08:00 |
|
xcbyy
|
85e00e296f
|
fix(companion): 去除合成虚拟大神的假评分/价格/服务(改为诚实档案)
- getCompanionById 对非真实大神档案不再虚构 rating/orderCount/price/voice/服务包,状态为休息中、审核未申请,并返回 isCompanion=false
- 小程序大神详情页对非大神档案隐藏服务与预约入口,显示'该用户尚未认证为大神';移除页面假默认值
- 新增回归护栏 companion-profile-honesty.spec.ts(82 套件/619 用例全绿)
|
2026-10-19 09:19:15 +08:00 |
|
xcbyy
|
c90b0bd44e
|
fix(order): 抢单收紧为仅「待接单」可抢,抢单池同步过滤
- claimOrder 状态闸门改为严格只允许 待接单(含 CAS 条件 status='待接单'),杜绝抢已在履约/已服务/已核销的订单
- getOrdersPool 仅返回未认领的 待接单 订单
- 种子数据新增一笔待接单订单用于演示抢单
- 更新/新增回归护栏 claim-status-gate.spec.ts(78 套件/608 用例全绿)
|
2026-10-19 08:54:28 +08:00 |
|
xcbyy
|
8edffbefa2
|
feat(pay): 接入微信支付V3原路退款(按支付渠道分流 + 幂等 + 退款回调)
- 新增微信退款客户端 createRefund/queryRefundByOutRefundNo(/v3/refund/domestic/refunds)
- 新增退款桥接模块与 payment_refunds 幂等退款记录表
- 订单退款按渠道分流:微信支付原路退回微信;余额支付退回钱包余额;微信退款失败(502)不回退余额,防重复退款
- 覆盖拒单/买家取消/仲裁全额与部分/超时自动退款;新增 /api/pay/wechat/refund-notify 回调
- 后台新增退款回调地址配置;文档补充退款验收说明
- 新增回归护栏 wechat-refund.spec.ts(77 套件/605 用例全绿)
|
2026-10-19 08:47:08 +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
|
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
|
010edc130f
|
fix: 完善全系统业务闭环(大神入驻联动用户角色、服务评价人工下架监管、友圈搭子上车审核与抽屉)
|
2026-10-13 18:04:27 +08:00 |
|
xcbyy
|
173835dc4e
|
fix(business-loop): complete arbitration balance refund, withdrawal rejection compensation, admin activity takedown, and companion violation alerts
|
2026-10-13 17:18:11 +08:00 |
|
xcbyy
|
9e2c19088b
|
fix(report): optimize wechat toast length limit and add admin violation reports management center
|
2026-10-13 17:08:25 +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
|
c3e7bd016b
|
fix(user): fix missing FROM clause in getUserById SQL and add fallback for user 2006
|
2026-10-13 14:39:41 +08:00 |
|
xcbyy
|
3b0268ab10
|
feat(bill): convert bill records modal into dedicated independent page
|
2026-10-13 14:10:00 +08:00 |
|
xcbyy
|
736450973e
|
feat(admin): complete post management, finance csv export, and wechat message template config
|
2026-10-13 11:11:40 +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
|
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
|
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
|
3a700c42a1
|
feat(activity): implement P4 member self-service leave and ticket refund channel
|
2026-10-10 15:56:55 +08:00 |
|