yml2213 and Cursor
b4d6718c8e
fix(chat): 分销付款改为进入账号群,不再另建订单群
...
主站、分站和分站之间都只用发布时的账号群,二维码仍跟这个群走。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-05 20:58:26 +08:00
yml2213 and Cursor
1d21b3f548
feat(distribution): 分站发布群只使用自己的二维码池
...
主站单独维护分站码池,池空时不再借用主站或其他分站,并去掉已停用的固定二维码入口。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-04 18:35:34 +08:00
yml2213 and Cursor
7833e90eee
feat(distribution): 分站品牌装修可配置首页入口并上传图片
...
分站可单独配置回收、合作反馈和客服二维码,未配置时继承主站;Logo、图标和轮播支持直接上传。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-25 17:44:56 +08:00
yml2213
8dc21d2757
refactor(sitecode): 统一各模块分销站点编码解析为公共包
...
- 新增 internal/sitecode 包:FromRequest 头优先解析、FromQueryThenHeader
探测接口专用、ExtractHost/IsLocalHost 提取 Host 域名
- 替换 auth/order/listing/chat/notification/withdrawal/wallet/distribution
八模块 17 处各自内联的解析逻辑,统一优先级与 TrimSpace 行为
- 修复 notification 漏 TrimSpace、探测接口会话头压过显式 query、
GetPublicSiteInfo 把 localhost Host 当站点域名查库等不一致
- 顺手清理 auth 中无引用的 extractHost 死代码
- gofmt 修复 withdrawal/presenter、chat/file/payment 测试四个历史遗留格式问题
2026-09-17 14:54:38 +08:00
yml2213 and Cursor
1c86bef765
feat(distribution): 支持分站发布群固定二维码
...
主站分销配置可为每个站点绑定可复用企微码,号主在该站上传账号后发到对应发布群,不再消耗主站码池。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 19:02:10 +08:00
yml2213
6acdead0f0
Merge branch 'main' into feature/distribution-system
2026-09-11 09:35:53 +08:00
yml2213
7734f315ce
feat(ocr): 支持 PP-OCRv6 异步识别模型并设为默认,解决排队与高延迟问题
2026-09-10 20:12:05 +08:00
yml2213
784ffb5f72
fix(observability): 治理SSE慢请求虚报、客户端取消日志污染、退款重试刷屏与会话计数慢查询
2026-09-10 20:02:54 +08:00
yml2213
cbd5412315
test: 后端测试从 SQLite 全面切换到 MySQL,与生产环境对齐
...
测试库不再使用 SQLite 内存库,改为每个测试包独立的 MySQL 库,
表结构由 backend/migrations 的真实迁移建立。
基础设施
- 新增 internal/database/testdb.go:NewTestDB() 保持原签名(28 处调用零改动),
内部连接 MySQL 测试库,首次调用重建库并执行全部真实迁移,之后每次调用清空全表
- 库名 = 测试库基础名 + 包目录名,同包共享、跨包隔离,使 go test ./... 可并发执行
(共用一库时各包会互相 DROP/CREATE 导致 database exists)
- 新增 NewDryRunDB():MySQL 方言 + DryRun,供断言 SQL 形态的 5 处测试使用
- 新增 AutoMigrateIfMissing():只对不存在的表 AutoMigrate,
避免改动迁移定义的索引与约束
- 新增 scripts/prepare-test-db.sh:建库与通配授权,可重复执行
- 33 处 sqlite.Open 全部替换,26 个测试文件改用 MySQL
- 删除 46 处手写 SQLite 方言 DDL(AUTOINCREMENT / INTEGER PRIMARY KEY / TEXT),
表统一由真实迁移建立
- go.mod 移除 gorm.io/driver/sqlite 与 mattn/go-sqlite3
- 删除生产代码里 distribution/repository.go 的 sqlite 方言分支(strftime)
对齐环境后暴露并修复的真实问题
- DATE(col) 在 MySQL 返回 DATE 类型,使 Date string 字段变成 RFC3339 时间串,
大盘日期会带出时间部分;28 处改为 DATE_FORMAT(col, '%Y-%m-%d')
- 系统自动创建分销结算批次时 created_by 写入 0,违反指向 admin_users 的外键,
生产会直接插入失败;改为写 NULL(新增 adminRef helper)
- MySQL DATETIME 仅到秒,静默截断 Go 侧写入的时间,
导致租用时长计算与结算时点回读比对偏差;
rental_orders 的 9 个业务时间列提到 DATETIME(6)
- 测试数据补齐严格模式要求的 NOT NULL 列、修正超出列长的取值、补齐外键父记录
迁移
- 000065 的 ALTER TABLE rental_orders 一并完成业务时间列精度调整,
feature 侧不再单开迁移文件
脚本与文档
- check.sh / check-backend-coverage.sh 去掉 -p 1 串行与 SQLite 相关注释
- 更新 docs/Repository层测试补充总结.md 的测试运行说明
2026-09-10 14:34:01 +08:00
yml2213
02d091434e
fix(order): 修复分销收号商品在主站租用后报订单不存在的问题
2026-09-09 15:24:56 +08:00
yml2213
e024319860
feat(distribution): 分销站点消息中心与钱包提现多租户独立分支隔离
...
- 新增 000070 数据库迁移:支持 chat_conversations、wallet_accounts、wallet_ledger、withdrawal_requests 按 distribution_site_id 隔离
- 消息中心:会话列表、未读数统计、站点专属客服及订单群聊与主站实现双向完全隔离
- 资金账户与提现:独立按 (user_id, distribution_site_id) 建账,分销订单自动结算至对应分站钱包,提现与流水相互独立
- 前台界面:Axios 自动透传 X-Distribution-Site-Code,钱包、提现与消息页面呈现分站专属标牌与独立说明
2026-09-07 18:11:27 +08:00
yml2213
369b0647bb
合并 main 分支并融合订单列表最小化与 SQL 治理
...
- Auth/权限中间件取 main 演进版(错误细分、token 来源),保留 dev 的用户 cookie 与登出撤销语义
- 后台订单列表:融合 main 的首页免 COUNT 优化与关键词索引路由,保留 dev 的最小化 AdminOrderListItemDTO(结账明细仍由详情接口返回,同步调整对应集成测试)
- 保留 dev 的 token_version 冻结/解冻递增与 main 的状态变化判断及通知
- 前端:保留 dev 登出接口与 main 的 fetchMe silent 参数、SSE 登录跳转;后台订单表按 dev 最小化 DTO 移除号主到手列
2026-09-05 11:43:13 +08:00
yml2213
cd719fc355
fix(query): 支持12位纯数字时间编号(如202609040184)商品编号的精准索引路由
2026-09-05 11:25:14 +08:00
yml2213
ac777f5b16
补全分销分账结算闭环并修复站点越权
...
- 权限落库:新增 000066 迁移,注册 11 个 distribution:* 权限并授权 super_admin/ops/finance
- 越权修复:siteAccessAllowed 校验贯穿站点/规则/订单/展示/支付通道/结算全部按 ID 操作
- 分账闭环:SplitSettlement 按比例拆分分成基数,销售加价归卖出方,尾差记入 rounding_adjustment_cent 归平台;支付快照与退款重算均按拆分写入参与方金额
- 结算批次:创建时聚合周期内待结算订单生成明细并汇总金额,结算时校验明细与总额一致后联动置位财务快照
- 手工补数接口禁止覆盖已有快照并写入审计日志
- 杂项:二维码池校验站点启用状态且不吞真实 DB 错误;绑定支付通道校验商户配置存在;表探测改为 sync.Once 缓存
2026-09-05 11:12:44 +08:00
yml2213
ac67a91438
接入分销订单支付退款与站点隔离
2026-09-05 10:52:36 +08:00
yml2213
a9125b1939
perf(query): 全面治理后台跨表模糊查询慢SQL并升级SQL门禁守护
...
- 解决 MySQL 8.4 无法跨表 Index Merge 导致的索引失效与全表扫描问题
- 订单/提号/纠纷/用户/商品/会话列表实现智能意图路由分流直达单表唯一索引
- 剥离 COUNT(*) 阶段无关多表关联及标量子查询,实现首页条数快速短路
- check-sql-guard.sh 增加 forbid_pattern 拦截器与核心路由强校验防线
2026-09-05 10:37:04 +08:00
yml2213
c156c478d8
优化后台高频查询性能
2026-08-29 00:16:16 +08:00
yml2213
cdab2d8157
fix(chat): 区分咨询与正常会话待处理规则
2026-08-25 21:11:52 +08:00
yml2213
cc91979b34
fix(chat): 回复后再移出待处理
2026-08-25 20:27:26 +08:00
yml2213
16237dcefc
fix(chat): 修复一键清理未读失败
2026-08-25 19:32:04 +08:00
yml2213
52dcb18c96
perf(chat): 分页客服会话并拆分统计查询
2026-08-25 19:21:38 +08:00
yml2213
d95b95211c
fix(chat): 提升二维码 OCR 稳定性
2026-08-25 16:59:05 +08:00
yml2213
417f7398e4
perf(chat): 优化后台客服会话查询与状态
2026-08-25 15:53:10 +08:00
yml2213
88d74aca7d
重构日志与可观测性体系
...
新增单行文本编码器与结构化 GORM 日志,统一错误记录与请求日志策略,收紧日志文件权限并修复按天切分与压缩,支付回调参数脱敏,生产强制阿里云短信,RequestID 校验防注入,日志文案中文化。
2026-07-29 16:19:35 +08:00
yml2213
a4189db4ca
业务更名为撞车并切换crash路由
...
用户可见文案与页面/API路径改为撞车与crash,保留mohong表与权限码兼容;移动端入口去掉租/撞图标。
2026-07-16 21:19:35 +08:00
yml2213
66ca2693b3
支持客服入口按业务场景分流到客服分组
...
联系客服支持 scene(general/mohong),按用户与场景复用会话;摸大红入口走摸大红分组选人。
2026-07-16 20:05:10 +08:00
yml2213
6d61027318
新增摸大红业务并修复后台链接按钮白字
...
支持分类筛选、搜索、下单支付建群与固定二维码;合并迁移种子数据;后台表格编辑/详情链接恢复主题色可见。
2026-07-16 18:08:18 +08:00
yml2213 and Claude Opus 4.8
4f4f71f251
feat: 封存解散群聊后用户端隐藏 archived 会话
...
- 用户会话列表(ListConversations)过滤 status=active,死群不再堆在列表
- 未读统计(CountUnreadMessages)排除 archived 会话,消除消不掉的红点
- 数据完整保留,客服后台与历史记录查看不受影响,保留纠纷证据链
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 22:59:40 +08:00
yml2213 and Claude Opus 4.8
be5d322c10
feat: 客服封存订单功能(号主失联场景)
...
新增客服「封存订单」动作,用于号主失联、无法联系的场景:单事务内
完成关闭订单、全量原路退款、永久封存关联商品、解散发布群、双方通知
与审计日志。
- 新增 listing 终态 sealed(封存),区别于可恢复的 offline
- listingLockedForOwnerMutation 锁定 sealed,号主无法再编辑/提审/上架
- 解散群聊按 listing_id 查发布群(listing_group)置 archived,
阻断所有成员发言并留系统消息
- 新增 order.AdminSeal 及 /admin/orders/:id/seal 路由
- 前端:卖家页 PC/移动端 sealed 视为终态禁用操作,客服后台新增
「封存订单」按钮与二次确认
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 22:52:20 +08:00
yml2213
b124c74a46
修复 ocr 错误
2026-06-28 15:00:54 +08:00
yml2213
fcf0230e04
优化二维码池筛选和日期中文化
2026-06-19 19:16:52 +08:00
yml2213
2df935f74c
优化删除
2026-06-19 17:26:37 +08:00
yml2213
076ac6098e
二维码自动补发
2026-06-19 17:08:57 +08:00
yml2213
5ff1ea40b0
feat: 增加推送通知配置
2026-06-19 16:28:49 +08:00
yml
35f2d93fdf
完善二维码池 OCR 配置与识别
2026-06-18 15:22:46 +08:00
yml
7934141ba2
禁止已发放二维码回退待用
2026-06-18 09:59:06 +08:00
yml
58e071d157
修正订单群聊与发布跳转
2026-06-18 09:45:36 +08:00
yml
f4361c9804
优化发布群租客清退与历史消息
2026-06-18 09:39:23 +08:00
yml
233920025e
增加客服分组管理
2026-06-18 02:09:02 +08:00
yml
7dc7368367
优化客服会话筛选
2026-06-18 01:08:54 +08:00
yml
272b2cb71e
优化客服群聊订单信息展示
2026-06-18 00:44:45 +08:00
yml
bd6e15179e
支持后台转移发布所有权
2026-06-17 22:31:46 +08:00
yml
342edad78b
修复比例默认选择和二维码预警崩溃
2026-06-17 21:58:29 +08:00
yml
0a42392d5e
优化发布群配置与二维码池界面
2026-06-17 20:59:24 +08:00
yml
ac98841992
修复二维码库存与过期时间编辑
2026-06-17 20:02:41 +08:00
yml
12f589f0df
二维码池批量上传与认证图片预览修复
...
- 后端新增批量创建二维码接口 POST /admin/chats/qrcodes/batch
- 前端二维码管理页支持多图拖拽批量上传
- 注册 qrcode 图片压缩场景(maxSide=2560, quality=0.95)
- 后端 normalizeScene 注册 qrcode scene
- 增强 AuthImage 组件支持 el-image 大图预览(previewSrcList)
- 修复 WithdrawalDetailDialog 提现凭证图片 401 问题
- 删除重复的 components/AuthImage.vue,统一使用共享组件
- 提交3剩余: 会话列表群类型图标、发布成功跳群、管理端路由等
2026-06-17 17:57:05 +08:00
yml and Claude Opus 4.8
54f550b8be
提交3: 体验完善 - 二维码库存预警
...
- 实现二维码库存预警逻辑: 库存低于阈值时给所有客服发站内信
- 查询 cs 角色客服并批量发送预警通知
- 预警消息包含剩余数量提示
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 15:57:10 +08:00
yml and Claude Opus 4.8
ad70b24fb6
提交2: 发布群核心功能实现
...
- 实现 EnsureListingConversation: 发布时建发布群,发欢迎语+二维码
- 实现 AddRenterToListingConversation: 付款后拉租客进群
- 实现 RemoveRenterFromListingConversation: 订单终态移出租客
- 实现消息可见性过滤: 租客只能看到 joined_at 之后的消息
- listing 模块注入 ListingChatCreator 接口,发布时建群
- ListingDTO 新增 listing_group_conversation_id 字段
- 付款流程改为拉租客进发布群(替代建订单群)
- 订单完成和取消时自动移出租客
- 创建 chat 适配器实现接口解耦
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 15:57:10 +08:00
yml and Claude Opus 4.8
423c142967
提交1: 数据层改造 - 发布群与企业微信群二维码
...
- 新增数据库迁移 000008: chat_conversations 增加 listing_id, 新建 chat_qrcode_pool 表
- 更新 GORM 模型: ChatConversation 新增 ListingID 字段, 新增 ChatQrCode 模型
- 实现二维码池管理后端 API: 创建/列表/统计/更新/删除
- 新增管理后台路由: /api/admin/chats/qrcodes
- 新增系统配置: chat.listing_group_welcome, chat.qrcode_low_stock_threshold
- 更新优化方案文档: 废弃双群方案, 采用单群方案
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 15:57:10 +08:00
yml2213 and Claude Opus 4.8
e75a39b03a
新增消息已读状态
...
复用 chat_participants.last_read_at 推导已读,无需新表/迁移。
- 后端:MessageDTO 增加 is_read,toMessageDTOs 按「全部已读」语义计算
(所有其他参与者均已读才算已读,1对1 即对方已读);MarkRead 成功后
推送 conversation_read 事件(含 reader 与 read_at),NotifyConversation
与 NotifyAllAdmins 双通道通知,使发送方/客服实时刷新已读
- 前端:ChatMessage 增加 is_read,ChatView/AdminChatsView/MobileChatView
在自己的消息下渲染「已读/未读」;收到 conversation_read 且本端仍有
未获回执的自己消息时才重载,避免无谓请求
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 22:22:05 +08:00