萝卜
|
62d7a81df3
|
feat(admin): 客服中心工单骨架(模型/迁移/路由/菜单/页面)
|
2026-03-15 08:44:02 +00:00 |
|
萝卜
|
f6bb29f046
|
fix(admin): 各平台订单工具动作支持 renewal_missing_subscription 筛选透传
|
2026-03-15 07:10:05 +00:00 |
|
萝卜
|
9afe8c135d
|
platform orders: batch mark activated guard renewal missing subscription
|
2026-03-15 06:39:22 +00:00 |
|
萝卜
|
efc2a8a423
|
platform orders: mark activated guard for renewal missing subscription
|
2026-03-15 06:34:18 +00:00 |
|
萝卜
|
2d67c167ed
|
platform orders: add renewal missing subscription governance card
|
2026-03-15 06:14:52 +00:00 |
|
萝卜
|
b940c0172d
|
platform orders: syncable summary excludes renewal missing subscription
|
2026-03-15 05:52:21 +00:00 |
|
萝卜
|
4b1f661561
|
platform orders: syncable_only filter excludes renewal missing subscription
|
2026-03-15 05:47:00 +00:00 |
|
萝卜
|
a4c36ab868
|
platform orders: batch activate guard renewal missing subscription
|
2026-03-15 05:44:09 +00:00 |
|
萝卜
|
5ca76b7620
|
platform orders: activate subscription guard for renewal missing subscription
|
2026-03-15 05:18:46 +00:00 |
|
萝卜
|
a50cd0675e
|
批量BMPA 安全阀:续费单未绑订阅不允许推进并新增测试
|
2026-03-15 04:56:18 +00:00 |
|
萝卜
|
d34578452c
|
BackUrl::sanitizeForLinks 增加长度安全阀(>2000 拒绝)并补单测
|
2026-03-15 04:45:04 +00:00 |
|
萝卜
|
c4c91ebf14
|
标记支付并生效:续费单必须绑定订阅(安全阀)并新增测试
|
2026-03-15 04:42:37 +00:00 |
|
萝卜
|
0126a5aed7
|
BackUrl::sanitizeForLinks 增强:拒绝协议相对 URL(//evil.com)并补单测
|
2026-03-15 04:18:54 +00:00 |
|
萝卜
|
cbc05e59b7
|
BackUrl::sanitizeForLinks 增强:拒绝控制字符与 CRLF 注入 并补单测
|
2026-03-15 04:17:10 +00:00 |
|
萝卜
|
e86257e866
|
BackUrl::sanitizeForLinks 加强:拒绝二次编码 back%3D 绕过 并补单测
|
2026-03-15 04:11:42 +00:00 |
|
萝卜
|
54f356f52d
|
平台订单创建页:require_subscription 支持回填并透传 hidden input(校验失败后仍保持治理口径)
|
2026-03-15 04:03:56 +00:00 |
|
萝卜
|
2400398dcb
|
PlatformOrder create: force renewal type when subscription context present
|
2026-03-15 03:14:19 +00:00 |
|
萝卜
|
1c5827fd85
|
PlatformOrder store: guard renewal must match subscription merchant/plan
|
2026-03-15 02:59:58 +00:00 |
|
萝卜
|
09c8aeca2a
|
SubscriptionActivationService: guard against merchant mismatch
|
2026-03-15 02:56:31 +00:00 |
|
萝卜
|
3182dd72a0
|
PlatformOrder create: require_subscription flag narrows order types
|
2026-03-15 02:36:27 +00:00 |
|
萝卜
|
41463407aa
|
Expiry governance: nudge renewal requires subscription context
|
2026-03-15 02:23:19 +00:00 |
|
萝卜
|
e66ac765e0
|
PlatformOrder create: default order_type to renewal when from subscription
|
2026-03-15 02:15:48 +00:00 |
|
萝卜
|
bdea18c976
|
PlatformOrder store: require subscription for renewal orders
|
2026-03-15 02:03:04 +00:00 |
|
萝卜
|
6bb3c843dd
|
PlatformOrder views: use model orderTypeLabel mapping
|
2026-03-15 01:43:50 +00:00 |
|
萝卜
|
c81c5a1f39
|
PlatformOrder: add orderTypeLabel helper
|
2026-03-15 01:40:09 +00:00 |
|
萝卜
|
4773c2a8c7
|
PlatformOrder show: render order_type label with code
|
2026-03-15 01:29:09 +00:00 |
|
萝卜
|
9a38fa84f3
|
PlatformOrder create: default renewal remark from subscription
|
2026-03-15 01:21:50 +00:00 |
|
萝卜
|
652d4134f7
|
PlatformOrder create: autofill merchant/plan from subscription defaults
|
2026-03-15 01:13:56 +00:00 |
|
萝卜
|
6c5705443d
|
Site subscriptions: add status toggle action on index
|
2026-03-14 23:34:31 +00:00 |
|
萝卜
|
bfd8f7784c
|
Plans: add publish toggle action and UI
|
2026-03-14 23:21:59 +00:00 |
|
萝卜
|
69edd4261d
|
Plans: unify back sanitize via BackUrl helper
|
2026-03-14 22:52:48 +00:00 |
|
萝卜
|
2d824d29dd
|
PlatformOrders: unify back sanitize via BackUrl
|
2026-03-14 22:45:46 +00:00 |
|
萝卜
|
ffc88feede
|
fix(backurl): avoid double fragment in withBackFirstAndFragment
|
2026-03-14 21:51:17 +00:00 |
|
萝卜
|
ee85e63340
|
fix(backurl): avoid double fragment when using withBackAndFragment
|
2026-03-14 21:33:32 +00:00 |
|
萝卜
|
4e741b92a1
|
security(backurl): re-sanitize back inside helpers
|
2026-03-14 21:27:52 +00:00 |
|
萝卜
|
e854d94578
|
feat(backurl): preserve existing fragment when appending back
|
2026-03-14 21:20:26 +00:00 |
|
萝卜
|
84e860e403
|
fix(backurl): avoid duplicating back query when already present
|
2026-03-14 21:17:02 +00:00 |
|
萝卜
|
9107d4af4a
|
fix(backurl): stabilize query append and support back-first links
|
2026-03-14 21:02:25 +00:00 |
|
萝卜
|
1b6476f2a4
|
refactor(back): add withBackAndFragment helper and use on platform_orders index
|
2026-03-14 19:06:32 +00:00 |
|
萝卜
|
956e177544
|
refactor: BackUrl::selfWithoutBack 统一 selfWithoutBack 构造并修复 currentQuery 依赖
|
2026-03-14 18:52:28 +00:00 |
|
萝卜
|
b759a87a57
|
refactor: BackUrl::withBack 统一 allUrl 生成(清空筛选但保留 back)
|
2026-03-14 18:46:18 +00:00 |
|
萝卜
|
0f8bc04020
|
refactor: BackUrl 增加 currentPathQuickFilter 并复用到收费闭环列表页
|
2026-03-14 18:37:47 +00:00 |
|
萝卜
|
7632b1d215
|
refactor: BackUrl 增加 currentPathWithQuery 并复用到订单列表
|
2026-03-14 18:25:35 +00:00 |
|
萝卜
|
3ffc87f78c
|
refactor: 抽出 BackUrl::sanitizeForLinks 统一 back 安全护栏
|
2026-03-14 18:23:00 +00:00 |
|
萝卜
|
98073f2b71
|
平台订单:补齐 BMPA 单订单清理入口(路由+控制器+详情页按钮+测试)
|
2026-03-14 14:13:30 +00:00 |
|
萝卜
|
f91be76e08
|
platform_orders: add clear single sync_error action from show page
|
2026-03-14 13:58:36 +00:00 |
|
萝卜
|
722f4a1f44
|
Harden products batch return_url: reject quotes and nested back
|
2026-03-14 10:41:48 +00:00 |
|
萝卜
|
41e3246381
|
fix: block batch sync when receipt_status=none
|
2026-03-14 06:26:44 +00:00 |
|
萝卜
|
fcabedff08
|
fix: block BMPA when governance filters present
|
2026-03-14 06:20:17 +00:00 |
|
萝卜
|
43311fd3d4
|
Platform orders export: include lead_id column
|
2026-03-14 05:53:44 +00:00 |
|