{{ bank.name }}
-{{ bank.desc }}
-diff --git a/.gitignore b/.gitignore index 1bf2fbd..b02cf91 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,29 @@ -.cursor/ -api/runtime/ -api/vendor/ -*.code-workspace -*.env -api/database/ -*.zip -.git222/ -.git22222/ +# 依赖 +node_modules/ +vendor/ + +# 构建产物 +dist/ +dist-ssr/ +build/ + +# 环境与敏感信息 +.env +.env.local +.env.*.local + +# 日志与运行时 +*.log +api/runtime/log/ +api/runtime/cache/ +api/runtime/temp/ + +# IDE +.idea/ +.vscode/ +*.swp +*.swo +.DS_Store + +# 小程序私有配置(含 AppID 等) +miniprogram/project.private.config.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e8264d --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# mbti王 + +MBTI 性格测试小程序 · 管理后台 · API 服务 + +## GitHub 仓库 + +- **地址**: https://github.com/fnvtk/MBTI_wang +- **克隆**: `git clone https://github.com/fnvtk/MBTI_wang.git` + +## 日常同步 + +```bash +# 拉取最新 +git pull origin main + +# 提交并推送 +git add . +git commit -m "描述" +git push origin main +``` + +## 项目结构 + +- `admin/` - Vue 管理后台 +- `api/` - ThinkPHP API +- `miniprogram/` - 微信小程序 diff --git a/admin/.env.development b/admin/.env.development index 6936af1..6318896 100644 --- a/admin/.env.development +++ b/admin/.env.development @@ -1,7 +1,7 @@ -# 开发环境配置 -# 测试环境API地址 -VITE_API_BASE_URL=http://mbti.com - -# 环境标识 -VITE_APP_ENV=development +# 开发环境配置 +# 测试环境API地址 +VITE_API_BASE_URL=http://mbti.com + +# 环境标识 +VITE_APP_ENV=development VITE_APP_TITLE=MBTI管理后台-测试环境 \ No newline at end of file diff --git a/admin/.env.production b/admin/.env.production index 5fdb4b7..100804b 100644 --- a/admin/.env.production +++ b/admin/.env.production @@ -1,7 +1,7 @@ -# 生产环境配置 -# 正式环境API地址 -VITE_API_BASE_URL=https://mbtiapi.quwanzhi.com - -# 环境标识 -VITE_APP_ENV=production +# 生产环境配置 +# 正式环境API地址 +VITE_API_BASE_URL=https://mbtiapi.quwanzhi.com + +# 环境标识 +VITE_APP_ENV=production VITE_APP_TITLE=MBTI管理后台 \ No newline at end of file diff --git a/admin/.gitignore b/admin/.gitignore index 64a9b80..84c6442 100644 --- a/admin/.gitignore +++ b/admin/.gitignore @@ -1,32 +1,32 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -.DS_Store -dist -dist-ssr -coverage -# 环境文件(.env.local 不提交,但 .env.development 和 .env.production 需要提交) -.env.local -.env.local.* - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# Auto-generated -src/auto-imports.d.ts -src/components.d.ts - +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +# 环境文件(.env.local 不提交,但 .env.development 和 .env.production 需要提交) +.env.local +.env.local.* + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Auto-generated +src/auto-imports.d.ts +src/components.d.ts + diff --git a/admin/index.html b/admin/index.html index d30c5f2..77336c6 100644 --- a/admin/index.html +++ b/admin/index.html @@ -1,14 +1,14 @@ - - -
- - - -最近 14 天人脸分析、MBTI、PDP、DISC 等关键测试的完成情况
-生成专属邀请二维码,员工/客户扫码即可进入小程序完成测试
-最近 14 天人脸分析、MBTI、PDP、DISC 等关键测试的完成情况
+生成专属邀请二维码,员工/客户扫码即可进入小程序完成测试
+管理分销商、佣金和分销设置
-启用分销功能
-关闭后新订单不再产生佣金,小程序个人中心推广中心卡片将隐藏
-推广中心标题
-小程序个人中心推广中心卡片的显示文字,可自定义
-为每种测试类型独立设置佣金比例或固定金额,并可开启「无需付款」让用户完成测试即触发佣金。
-无需付款触发
-用户完成测试即发放佣金,无需付款
-管理分销商、佣金和分销设置
+启用分销功能
+关闭后新订单不再产生佣金,小程序个人中心推广中心卡片将隐藏
+推广中心标题
+小程序个人中心推广中心卡片的显示文字,可自定义
+为每种测试类型独立设置佣金比例或固定金额,并可开启「无需付款」让用户完成测试即触发佣金。
+无需付款触发
+用户完成测试即发放佣金,无需付款
+{{ overview.enterpriseName || '当前企业' }}的余额、测试收入和充值流水
-请使用微信扫码,在小程序内完成支付充值
-本次充值:¥{{ rechargeForm.amountYuan.toFixed(2) }}
-{{ overview.enterpriseName || '当前企业' }}的余额、测试收入和充值流水
+请使用微信扫码,在小程序内完成支付充值
+本次充值:¥{{ rechargeForm.amountYuan.toFixed(2) }}
+请输入您的管理员凭据以访问后台
-请输入您的管理员凭据以访问后台
+管理所有支付订单,含用户与关联测试数据
-加载中...
-管理所有支付订单,含用户与关联测试数据
+加载中...
+分别配置个人版和企业版的测试价格
-分别配置个人版和企业版的测试价格
+管理 MBTI、DISC、PDP 三套测试题库的导入、导出和验证
-{{ bank.name }}
-{{ bank.desc }}
-暂无题目数据
-{{ bank.resourceName }}
-{{ link }}
-{{ bank.resourceStat }}
-提示:导入格式为 JSON 数组,每题包含 id、question、options 字段。MBTI 还需包含 dimension 字段(EI/SN/TF/JP)。
-管理 MBTI、DISC、PDP 三套测试题库的导入、导出和验证
+{{ bank.name }}
+{{ bank.desc }}
+暂无题目数据
+{{ bank.resourceName }}
+{{ link }}
+{{ bank.resourceStat }}
+提示:导入格式为 JSON 数组,每题包含 id、question、options 字段。MBTI 还需包含 dimension 字段(EI/SN/TF/JP)。
+管理管理员账号
-配置小程序名称及展示文案,与超管共用全局配置,将显示在小程序导航栏等位置
-以下文案将显示在小程序对应位置,留空则使用默认值
-修改管理员账号和密码
-管理管理员账号
+配置小程序名称及展示文案,与超管共用全局配置,将显示在小程序导航栏等位置
+以下文案将显示在小程序对应位置,留空则使用默认值
+修改管理员账号和密码
+按企业用户池分类查看和管理用户数据
-{{ mbtiDetail.description }}
-{{ discDetail.description }}
-{{ pdpDetail.description }}
-{{ pdpDetail.teamRole }}
-- {{ faceDetail.mbti.type }} - · {{ faceDetail.mbti.title }} -
-- 主类型:{{ faceDetail.disc.primary }} - ,次类型:{{ faceDetail.disc.secondary }} -
-- 主类型:{{ faceDetail.pdp.primary }} - ,次类型:{{ faceDetail.pdp.secondary }} -
-{{ faceDetail.overview }}
-{{ faceDetail.boneAnalysis }}
-{{ faceDetail.personalitySummary }}
-{{ resumeDetail.portrait.workStyle }}
-{{ resumeDetail.hrView.performance.potential }}
- - -- 最佳团队:{{ resumeDetail.hrView.teamFit.bestTeam }} -
-- 管理建议:{{ resumeDetail.hrView.teamFit.manageAdvice }} -
-- 风险等级:{{ resumeDetail.hrView.complianceRisk.level }} -
-- {{ resumeDetail.hrView.complianceRisk.notes }} -
-{{ resumeDetail.resumeHighlights }}
-{{ currentTestDescription }}
-按企业用户池分类查看和管理用户数据
+{{ mbtiDetail.description }}
+{{ discDetail.description }}
+{{ pdpDetail.description }}
+{{ pdpDetail.teamRole }}
++ {{ faceDetail.mbti.type }} + · {{ faceDetail.mbti.title }} +
++ 主类型:{{ faceDetail.disc.primary }} + ,次类型:{{ faceDetail.disc.secondary }} +
++ 主类型:{{ faceDetail.pdp.primary }} + ,次类型:{{ faceDetail.pdp.secondary }} +
+{{ faceDetail.overview }}
+{{ faceDetail.boneAnalysis }}
+{{ faceDetail.personalitySummary }}
+{{ resumeDetail.portrait.workStyle }}
+{{ resumeDetail.hrView.performance.potential }}
+ + ++ 最佳团队:{{ resumeDetail.hrView.teamFit.bestTeam }} +
++ 管理建议:{{ resumeDetail.hrView.teamFit.manageAdvice }} +
++ 风险等级:{{ resumeDetail.hrView.complianceRisk.level }} +
++ {{ resumeDetail.hrView.complianceRisk.notes }} +
+{{ resumeDetail.resumeHighlights }}
+{{ currentTestDescription }}
+管理 AI 服务商的API密钥、模型参数和余额监控
-余额告警
-余额低于阈值时发送通知
-暂无额外参数
-ai_providers 中将 visible 设为 0 可隐藏该服务商(不在本列表展示),设为 1 可重新显示管理 AI 服务商的API密钥、模型参数和余额监控
+余额告警
+余额低于阈值时发送通知
+暂无额外参数
+ai_providers 中将 visible 设为 0 可隐藏该服务商(不在本列表展示),设为 1 可重新显示管理数据库连接、备份和恢复
-暂无数据表
-管理数据库连接、备份和恢复
+暂无数据表
+全平台分销商、佣金、提现审核与分销设置
-启用分销功能(个人版全局)
-关闭后新订单不再产生佣金
-推广中心标题
-小程序个人中心推广卡片的显示文字
-开启提现审核
-开启后每笔提现申请需管理员人工审核才可打款
-为每种测试类型独立设置佣金比例或固定金额,并可开启「无需付款」让用户完成测试即触发佣金。
-无需付款触发
-用户完成测试即发放佣金,无需付款
-全平台分销商、佣金、提现审核与分销设置
+启用分销功能(个人版全局)
+关闭后新订单不再产生佣金
+推广中心标题
+小程序个人中心推广卡片的显示文字
+开启提现审核
+开启后每笔提现申请需管理员人工审核才可打款
+为每种测试类型独立设置佣金比例或固定金额,并可开启「无需付款」让用户完成测试即触发佣金。
+无需付款触发
+用户完成测试即发放佣金,无需付款
+共{{ total }}家企业·活跃{{ activeCount }}家
-添加新企业到系统,设置基本信息和配置
-修改企业基本信息和配置
-查看企业完整信息和统计数据
-暂无管理员账户
-暂无用户数据
-暂无测试数据
-共{{ total }}家企业·活跃{{ activeCount }}家
+添加新企业到系统,设置基本信息和配置
+修改企业基本信息和配置
+查看企业完整信息和统计数据
+暂无管理员账户
+暂无用户数据
+暂无测试数据
+收入、成本及利润分析
-总收入
-{{ formatMoneyYuan(fenToYuan(financialOverview.totalRevenue)) }}
-总成本
-{{ formatMoneyYuan(fenToYuan(financialOverview.totalCost)) }}
-净利润
-{{ formatMoneyYuan(fenToYuan(financialOverview.netProfit)) }}
-| 订单号 | -企业名称 | -金额 | -支付方式 | -时间 | -
|---|---|---|---|---|
| {{ record.orderNo || '—' }} | -
-
-
- |
- - +{{ formatMoneyYuan(fenToYuan(record.amount)) }} - | -{{ record.method }} | -{{ record.date }} | -
暂无企业支付记录
-| 订单号 | -用户 | -企业 | -产品 | -金额 | -支付方式 | -时间 | -
|---|---|---|---|---|---|---|
| {{ record.orderNo }} | -{{ record.userName }} | -
-
-
- |
- {{ record.productType }} | -- +{{ formatMoneyYuan(fenToYuan(record.amount)) }} - | -{{ record.method }} | -{{ record.date }} | -
暂无支付记录
-收入、成本及利润分析
+总收入
+{{ formatMoneyYuan(fenToYuan(financialOverview.totalRevenue)) }}
+总成本
+{{ formatMoneyYuan(fenToYuan(financialOverview.totalCost)) }}
+净利润
+{{ formatMoneyYuan(fenToYuan(financialOverview.netProfit)) }}
+| 订单号 | +企业名称 | +金额 | +支付方式 | +时间 | +
|---|---|---|---|---|
| {{ record.orderNo || '—' }} | +
+
+
+ |
+ + +{{ formatMoneyYuan(fenToYuan(record.amount)) }} + | +{{ record.method }} | +{{ record.date }} | +
暂无企业支付记录
+| 订单号 | +用户 | +企业 | +产品 | +金额 | +支付方式 | +时间 | +
|---|---|---|---|---|---|---|
| {{ record.orderNo }} | +{{ record.userName }} | +
+
+
+ |
+ {{ record.productType }} | ++ +{{ formatMoneyYuan(fenToYuan(record.amount)) }} + | +{{ record.method }} | +{{ record.date }} | +
暂无支付记录
+请输入您的超级管理员凭据
-请输入您的超级管理员凭据
+超管端全局数据一览
-最近 14 天人脸分析、MBTI、PDP、DISC 等关键测试的完成情况
-暂无测试趋势数据
-暂无最近动态
-暂无企业排行数据
-超管端全局数据一览
+最近 14 天人脸分析、MBTI、PDP、DISC 等关键测试的完成情况
+暂无测试趋势数据
+暂无最近动态
+暂无企业排行数据
+配置全局定价策略,影响所有企业
-配置全局定价策略,影响所有企业
+管理全局题库,包括 MBTI、DISC、PDP 三套测试题库
-{{ bank.name }}
-{{ bank.desc }}
-暂无题目数据
-{{ bank.resourceName }}
-{{ link }}
-{{ bank.resourceStat }}
-提示:导入格式为 JSON 数组,每题包含 id、question、options 字段。MBTI 还需包含 dimension 字段(EI/SN/TF/JP)。
-管理全局题库,包括 MBTI、DISC、PDP 三套测试题库
+{{ bank.name }}
+{{ bank.desc }}
+暂无题目数据
+{{ bank.resourceName }}
+{{ link }}
+{{ bank.resourceStat }}
+提示:导入格式为 JSON 数组,每题包含 id、question、options 字段。MBTI 还需包含 dimension 字段(EI/SN/TF/JP)。
+提交微信审核前开启,审核通过后关闭。开启后小程序将隐藏所有AI相关功能。
+{{ reviewMode.enabled ? '当前小程序处于审核状态,AI面相分析功能已隐藏' : '当前小程序正常运行,所有功能可用' }}
+开启审核模式
+开启后小程序将执行以下变更:
+管理网站名称、审核模式等基础设置
+管理网站名称、维护模式等基础设置
审核模式
-开启后测试结果需管理员审核通过才可展示
+维护模式
+开启后前台将显示维护页面
按企业用户池分类查看和管理用户数据
-{{ mbtiDetail.description }}
-{{ discDetail.description }}
-{{ pdpDetail.description }}
-{{ pdpDetail.teamRole }}
-- {{ faceDetail.mbti.type }} - · {{ faceDetail.mbti.title }} -
-- 主类型:{{ faceDetail.disc.primary }} - ,次类型:{{ faceDetail.disc.secondary }} -
-- 主类型:{{ faceDetail.pdp.primary }} - ,次类型:{{ faceDetail.pdp.secondary }} -
-{{ faceDetail.overview }}
-{{ faceDetail.boneAnalysis }}
-{{ faceDetail.personalitySummary }}
-{{ resumeDetail.portrait.workStyle }}
-{{ resumeDetail.hrView.performance.potential }}
- - -- 最佳团队:{{ resumeDetail.hrView.teamFit.bestTeam }} -
-- 管理建议:{{ resumeDetail.hrView.teamFit.manageAdvice }} -
-风险等级:{{ resumeDetail.hrView.complianceRisk.level }}
-{{ resumeDetail.hrView.complianceRisk.notes }}
-{{ resumeDetail.resumeHighlights }}
-{{ currentTestDescription }}
-按企业用户池分类查看和管理用户数据
+{{ mbtiDetail.description }}
+{{ discDetail.description }}
+{{ pdpDetail.description }}
+{{ pdpDetail.teamRole }}
++ {{ faceDetail.mbti.type }} + · {{ faceDetail.mbti.title }} +
++ 主类型:{{ faceDetail.disc.primary }} + ,次类型:{{ faceDetail.disc.secondary }} +
++ 主类型:{{ faceDetail.pdp.primary }} + ,次类型:{{ faceDetail.pdp.secondary }} +
+{{ faceDetail.overview }}
+{{ faceDetail.boneAnalysis }}
+{{ faceDetail.personalitySummary }}
+{{ resumeDetail.portrait.workStyle }}
+{{ resumeDetail.hrView.performance.potential }}
+ + ++ 最佳团队:{{ resumeDetail.hrView.teamFit.bestTeam }} +
++ 管理建议:{{ resumeDetail.hrView.teamFit.manageAdvice }} +
+风险等级:{{ resumeDetail.hrView.complianceRisk.level }}
+{{ resumeDetail.hrView.complianceRisk.notes }}
+{{ resumeDetail.resumeHighlights }}
+{{ currentTestDescription }}
+