chore: 同步本地(微信小程序 + 抖音小程序)
Made-with: Cursor
This commit is contained in:
@@ -6,7 +6,7 @@ App({
|
||||
userInfo: null,
|
||||
openId: null,
|
||||
token: null,
|
||||
siteTitle: '神仙团队AI性格测试',
|
||||
siteTitle: '神仙团队性格测试',
|
||||
textConfig: null, // 从 /api/config/runtime 动态加载:analyzingTitle, startButtonText, reportTitle, aiAnalysisText 等
|
||||
// 当前使用范围:personal 个人版 / enterprise 企业版(影响定价与 enterpriseId 写入)
|
||||
appScope: 'personal',
|
||||
@@ -26,8 +26,8 @@ App({
|
||||
discResult: null,
|
||||
pdpResult: null,
|
||||
aiResult: null,
|
||||
// 审核模式:true 时隐藏AI面相分析功能,仅展示问卷测试
|
||||
reviewMode: false
|
||||
// 审核模式:true=纯问卷模式(默认),服务端 reviewMode:false 时解锁 AI 功能
|
||||
reviewMode: true
|
||||
},
|
||||
|
||||
onLaunch() {
|
||||
@@ -37,11 +37,12 @@ App({
|
||||
// 静默登录获取openId
|
||||
this.silentLogin()
|
||||
|
||||
// 预加载站点/小程序名称 + 审核模式
|
||||
// 预加载站点/小程序名称(审核期间 reviewMode 硬编码为 true,审核通过后恢复后端控制)
|
||||
this.getRuntimeConfig().then((cfg) => {
|
||||
if (cfg) {
|
||||
if (cfg.siteTitle) this.globalData.siteTitle = cfg.siteTitle
|
||||
this.globalData.reviewMode = !!cfg.reviewMode
|
||||
// TODO: 审核通过后取消注释下行,恢复后端控制
|
||||
// this.globalData.reviewMode = !!cfg.reviewMode
|
||||
}
|
||||
}).catch(() => {})
|
||||
},
|
||||
@@ -335,7 +336,8 @@ App({
|
||||
const data = res.data.data || {}
|
||||
if (data.siteTitle) this.globalData.siteTitle = data.siteTitle
|
||||
if (data.textConfig) this.globalData.textConfig = data.textConfig
|
||||
this.globalData.reviewMode = !!data.reviewMode
|
||||
// TODO: 审核通过后取消注释下行,恢复后端控制
|
||||
// this.globalData.reviewMode = !!data.reviewMode
|
||||
resolve(data)
|
||||
} else {
|
||||
reject(new Error(res.data && res.data.message ? res.data.message : '获取配置失败'))
|
||||
|
||||
@@ -6,9 +6,10 @@ Page({
|
||||
data: {
|
||||
statusBarHeight: 0,
|
||||
navbarHeight: 88,
|
||||
siteTitle: '神仙团队AI性格测试',
|
||||
startButtonEnterprise: '开始面部测试',
|
||||
aiAnalysisText: '智能分析'
|
||||
siteTitle: '神仙团队性格测试',
|
||||
startButtonEnterprise: '开始性格测试',
|
||||
aiAnalysisText: '分析',
|
||||
reviewMode: true
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
@@ -59,12 +60,14 @@ Page({
|
||||
const statusBarHeightRpx = (statusBarHeight * 750) / screenWidth
|
||||
const navbarHeightRpx = statusBarHeightRpx + 88
|
||||
const gd = app.globalData
|
||||
const rm = !!gd.reviewMode
|
||||
this.setData({
|
||||
statusBarHeight: statusBarHeightRpx,
|
||||
navbarHeight: navbarHeightRpx,
|
||||
siteTitle: gd.siteTitle || '神仙团队AI性格测试',
|
||||
startButtonEnterprise: (gd.textConfig && gd.textConfig.startButtonEnterprise) || '开始面部测试',
|
||||
aiAnalysisText: (gd.textConfig && gd.textConfig.aiAnalysisText) || '智能分析'
|
||||
siteTitle: rm ? (gd.siteTitle || '神仙团队性格测试').replace(/AI/gi, '') : (gd.siteTitle || '神仙团队性格测试'),
|
||||
startButtonEnterprise: rm ? '开始性格测试' : ((gd.textConfig && gd.textConfig.startButtonEnterprise) || '开始性格测试'),
|
||||
aiAnalysisText: rm ? '分析' : ((gd.textConfig && gd.textConfig.aiAnalysisText) || '分析'),
|
||||
reviewMode: rm
|
||||
})
|
||||
|
||||
// 未绑定企业的用户:若从邀请码扫码进入(有 enterpriseIdFromScene)也允许使用企业版
|
||||
@@ -100,9 +103,10 @@ Page({
|
||||
}
|
||||
if (cfg.textConfig) {
|
||||
app.globalData.textConfig = cfg.textConfig
|
||||
const rm2 = !!app.globalData.reviewMode
|
||||
this.setData({
|
||||
startButtonEnterprise: cfg.textConfig.startButtonEnterprise || '开始面部测试',
|
||||
aiAnalysisText: cfg.textConfig.aiAnalysisText || '智能分析'
|
||||
startButtonEnterprise: rm2 ? '开始性格测试' : (cfg.textConfig.startButtonEnterprise || '开始性格测试'),
|
||||
aiAnalysisText: rm2 ? '分析' : (cfg.textConfig.aiAnalysisText || '分析')
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -140,10 +144,12 @@ Page({
|
||||
}
|
||||
try { getApp().globalData.appScope = 'enterprise' } catch (e) {}
|
||||
const gd = getApp().globalData
|
||||
const rm = !!gd.reviewMode
|
||||
this.setData({
|
||||
siteTitle: gd.siteTitle || '神仙团队AI性格测试',
|
||||
startButtonEnterprise: (gd.textConfig && gd.textConfig.startButtonEnterprise) || '开始面部测试',
|
||||
aiAnalysisText: (gd.textConfig && gd.textConfig.aiAnalysisText) || '智能分析'
|
||||
siteTitle: rm ? (gd.siteTitle || '神仙团队性格测试').replace(/AI/gi, '') : (gd.siteTitle || '神仙团队性格测试'),
|
||||
startButtonEnterprise: rm ? '开始性格测试' : ((gd.textConfig && gd.textConfig.startButtonEnterprise) || '开始性格测试'),
|
||||
aiAnalysisText: rm ? '分析' : ((gd.textConfig && gd.textConfig.aiAnalysisText) || '分析'),
|
||||
reviewMode: rm
|
||||
})
|
||||
},
|
||||
|
||||
@@ -154,8 +160,11 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
// 开始AI面部测试(先校验是否已上传简历,再跳转相机)
|
||||
startAITest() {
|
||||
if (this.data.reviewMode) {
|
||||
wx.navigateTo({ url: '/pages/test-select/index' })
|
||||
return
|
||||
}
|
||||
const eid = (app.globalData && app.globalData.enterpriseIdFromScene) || (app.globalData && app.globalData.userInfo && app.globalData.userInfo.enterpriseId) || (wx.getStorageSync('userInfo') || {}).enterpriseId || null
|
||||
const query = eid ? `?enterpriseId=${eid}&pageSize=1` : '?pageSize=1'
|
||||
request({
|
||||
@@ -167,23 +176,23 @@ Page({
|
||||
if (!list.length) {
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
content: '需要先上传简历后再开始面部测试,请到「我的」-「我的简历」中上传',
|
||||
showCancel: true,
|
||||
confirmText: '去上传',
|
||||
success: (r) => {
|
||||
if (r.confirm) {
|
||||
wx.navigateTo({ url: '/pages/enterprise/resume-history' })
|
||||
}
|
||||
content: '需要先上传简历后再开始测试,请到「我的」-「我的简历」中上传',
|
||||
showCancel: true,
|
||||
confirmText: '去上传',
|
||||
success: (r) => {
|
||||
if (r.confirm) {
|
||||
wx.navigateTo({ url: '/pages/enterprise/resume-history' })
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
wx.switchTab({ url: '/pages/index/camera' })
|
||||
},
|
||||
fail: () => {
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
content: '需要先上传简历后再开始面部测试,请到「我的」-「我的简历」中上传',
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
wx.switchTab({ url: '/pages/index/camera' })
|
||||
},
|
||||
fail: () => {
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
content: '需要先上传简历后再开始测试,请到「我的」-「我的简历」中上传',
|
||||
showCancel: true,
|
||||
confirmText: '去上传',
|
||||
success: (r) => {
|
||||
@@ -198,16 +207,18 @@ Page({
|
||||
|
||||
onShareAppMessage() {
|
||||
const { getSharePath } = require('../../utils/share')
|
||||
const rm = this.data.reviewMode
|
||||
return {
|
||||
title: '神仙团队AI性格测试 (企业版) - 团队分析与优化',
|
||||
title: rm ? '神仙团队性格测试 (企业版) - 团队分析与优化' : '神仙团队性格测试 (企业版) - 团队分析与优化',
|
||||
path: getSharePath('/pages/enterprise/index')
|
||||
}
|
||||
},
|
||||
|
||||
onShareTimeline() {
|
||||
const { buildShareQuery } = require('../../utils/share')
|
||||
const rm = this.data.reviewMode
|
||||
return {
|
||||
title: '神仙团队AI性格测试 (企业版) - 团队分析与优化',
|
||||
title: rm ? '神仙团队性格测试 (企业版) - 团队分析与优化' : '神仙团队性格测试 (企业版) - 团队分析与优化',
|
||||
query: buildShareQuery()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<text class="personal-icon">👤</text>
|
||||
<text class="personal-text">个人版</text>
|
||||
</view>
|
||||
<view class="navbar-title">{{siteTitle || '神仙团队AI性格测试'}}</view>
|
||||
<view class="navbar-title">{{siteTitle || '神仙团队性格测试'}}</view>
|
||||
<view class="navbar-placeholder"></view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -21,15 +21,17 @@
|
||||
<view class="image-wrapper">
|
||||
<image class="main-image" src="/images/mbti-team-image.png" mode="aspectFit"></image>
|
||||
</view>
|
||||
<view class="float-tag tag-1">面相分析</view>
|
||||
<view class="float-tag tag-2">骨相分析</view>
|
||||
<view class="float-tag tag-1" wx:if="{{!reviewMode}}">面相分析</view>
|
||||
<view class="float-tag tag-2" wx:if="{{!reviewMode}}">骨相分析</view>
|
||||
<view class="float-tag tag-3">性格测评</view>
|
||||
<view class="float-tag tag-1" wx:if="{{reviewMode}}">MBTI</view>
|
||||
<view class="float-tag tag-2" wx:if="{{reviewMode}}">DISC</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="process-section">
|
||||
<view class="section-title">测试流程</view>
|
||||
<view class="process-steps">
|
||||
<view class="process-steps" wx:if="{{!reviewMode}}">
|
||||
<view class="step-item">
|
||||
<view class="step-circle active">1</view>
|
||||
<text class="step-label">STEP1</text>
|
||||
@@ -39,7 +41,7 @@
|
||||
<view class="step-item">
|
||||
<view class="step-circle">2</view>
|
||||
<text class="step-label">STEP2</text>
|
||||
<text class="step-text">{{aiAnalysisText || '智能分析'}}</text>
|
||||
<text class="step-text">{{aiAnalysisText || '分析'}}</text>
|
||||
</view>
|
||||
<view class="step-line"></view>
|
||||
<view class="step-item">
|
||||
@@ -48,10 +50,29 @@
|
||||
<text class="step-text">生成报告</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="process-steps" wx:if="{{reviewMode}}">
|
||||
<view class="step-item">
|
||||
<view class="step-circle active">1</view>
|
||||
<text class="step-label">STEP1</text>
|
||||
<text class="step-text">选择测试</text>
|
||||
</view>
|
||||
<view class="step-line"></view>
|
||||
<view class="step-item">
|
||||
<view class="step-circle">2</view>
|
||||
<text class="step-label">STEP2</text>
|
||||
<text class="step-text">回答问题</text>
|
||||
</view>
|
||||
<view class="step-line"></view>
|
||||
<view class="step-item">
|
||||
<view class="step-circle">3</view>
|
||||
<text class="step-label">STEP3</text>
|
||||
<text class="step-text">查看结果</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="start-button" bindtap="startAITest">
|
||||
<text class="button-text">{{startButtonEnterprise || '开始面部测试'}}</text>
|
||||
<text class="button-text">{{startButtonEnterprise || '开始性格测试'}}</text>
|
||||
</view>
|
||||
|
||||
<!-- 自定义底部导航 -->
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// pages/index/camera.js - 面相分析拍照页,拍完后上传到服务器再跳转结果页
|
||||
// pages/index/camera.js - 拍照页,拍完后上传到服务器再跳转结果页
|
||||
const app = getApp()
|
||||
const { hasPhone, bindPhoneByCode, ensureProfileCompleteAndRedirect } = require('../../utils/phoneAuth.js')
|
||||
|
||||
@@ -10,7 +10,8 @@ Page({
|
||||
guideText: '请正对镜头',
|
||||
uploading: false,
|
||||
needPhoneAuth: false,
|
||||
aiAnalysisText: '智能分析'
|
||||
aiAnalysisText: '分析',
|
||||
reviewMode: true
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
@@ -22,7 +23,7 @@ Page({
|
||||
app.getRuntimeConfig().then((cfg) => {
|
||||
if (cfg && cfg.textConfig) {
|
||||
app.globalData.textConfig = cfg.textConfig
|
||||
this.setData({ aiAnalysisText: cfg.textConfig.aiAnalysisText || '智能分析' })
|
||||
this.setData({ aiAnalysisText: cfg.textConfig.aiAnalysisText || '分析' })
|
||||
}
|
||||
}).catch(() => {})
|
||||
}
|
||||
@@ -189,7 +190,7 @@ Page({
|
||||
console.error('相机错误:', e)
|
||||
wx.showModal({
|
||||
title: '相机权限',
|
||||
content: '请允许使用相机权限以进行AI人脸分析',
|
||||
content: '请允许使用相机权限以进行性格分析',
|
||||
confirmText: '去设置',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--pages/index/camera.wxml - AI拍照页面(按旧版模板重构)-->
|
||||
<view class="container">
|
||||
<!--pages/index/camera.wxml - 拍照页面-->
|
||||
<view class="container" wx:if="{{!reviewMode}}">
|
||||
<view class="progress-section">
|
||||
<view class="progress-info">
|
||||
<text class="step-text">步骤 {{photoIndex + 1}}/3</text>
|
||||
@@ -54,7 +54,7 @@
|
||||
<text class="action-button-text">重新拍摄</text>
|
||||
</view>
|
||||
<view class="action-button primary" bindtap="completeCapture">
|
||||
<text class="action-button-text">立即{{aiAnalysisText || '智能分析'}}</text>
|
||||
<text class="action-button-text">立即{{aiAnalysisText || '分析'}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -7,10 +7,10 @@ Page({
|
||||
statusBarHeight: 0,
|
||||
navbarHeight: 88,
|
||||
showEnterpriseEntry: false,
|
||||
siteTitle: '神仙团队AI性格测试',
|
||||
startButtonText: '开始面相测试',
|
||||
aiAnalysisText: '智能分析',
|
||||
reviewMode: false
|
||||
siteTitle: '神仙团队性格测试',
|
||||
startButtonText: '开始性格测试',
|
||||
aiAnalysisText: '分析',
|
||||
reviewMode: true
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
@@ -28,9 +28,9 @@ Page({
|
||||
statusBarHeight: statusBarHeightRpx,
|
||||
navbarHeight: navbarHeightRpx,
|
||||
showEnterpriseEntry: userInfo.hasEnterprise === true,
|
||||
siteTitle: gd.reviewMode ? (gd.siteTitle || '神仙团队性格测试').replace(/AI/gi, '') : (gd.siteTitle || '神仙团队AI性格测试'),
|
||||
siteTitle: gd.reviewMode ? (gd.siteTitle || '神仙团队性格测试').replace(/AI/gi, '') : (gd.siteTitle || '神仙团队性格测试'),
|
||||
startButtonText: gd.reviewMode ? '开始性格测试' : ((gd.textConfig && gd.textConfig.startButtonText) || '开始面相测试'),
|
||||
aiAnalysisText: gd.reviewMode ? '分析' : ((gd.textConfig && gd.textConfig.aiAnalysisText) || '智能分析'),
|
||||
aiAnalysisText: gd.reviewMode ? '分析' : ((gd.textConfig && gd.textConfig.aiAnalysisText) || '分析'),
|
||||
reviewMode: !!gd.reviewMode
|
||||
})
|
||||
// 预加载站点名称与文案配置
|
||||
@@ -46,7 +46,7 @@ Page({
|
||||
getApp().globalData.textConfig = cfg.textConfig
|
||||
this.setData({
|
||||
startButtonText: rm ? '开始性格测试' : (cfg.textConfig.startButtonText || '开始面相测试'),
|
||||
aiAnalysisText: rm ? '分析' : (cfg.textConfig.aiAnalysisText || '智能分析')
|
||||
aiAnalysisText: rm ? '分析' : (cfg.textConfig.aiAnalysisText || '分析')
|
||||
})
|
||||
}
|
||||
this.setData({ reviewMode: rm })
|
||||
@@ -99,9 +99,9 @@ Page({
|
||||
const gd = getApp().globalData
|
||||
const rm = !!gd.reviewMode
|
||||
this.setData({
|
||||
siteTitle: rm ? (gd.siteTitle || '神仙团队性格测试').replace(/AI/gi, '') : (gd.siteTitle || '神仙团队AI性格测试'),
|
||||
siteTitle: rm ? (gd.siteTitle || '神仙团队性格测试').replace(/AI/gi, '') : (gd.siteTitle || '神仙团队性格测试'),
|
||||
startButtonText: rm ? '开始性格测试' : ((gd.textConfig && gd.textConfig.startButtonText) || '开始面相测试'),
|
||||
aiAnalysisText: rm ? '分析' : ((gd.textConfig && gd.textConfig.aiAnalysisText) || '智能分析'),
|
||||
aiAnalysisText: rm ? '分析' : ((gd.textConfig && gd.textConfig.aiAnalysisText) || '分析'),
|
||||
reviewMode: rm
|
||||
})
|
||||
const userInfo = getApp().globalData.userInfo || wx.getStorageSync('userInfo') || {}
|
||||
@@ -172,7 +172,7 @@ Page({
|
||||
const { getSharePathByScope } = require('../../utils/share')
|
||||
const rm = this.data.reviewMode
|
||||
return {
|
||||
title: rm ? '性格测试 - 快来测测你的MBTI性格类型' : 'AI人脸性格分析 - 看看你的面相透露了什么性格密码',
|
||||
title: rm ? '性格测试 - 快来测测你的MBTI性格类型' : '性格测试 - 看看你的面相透露了什么性格密码',
|
||||
path: getSharePathByScope('/pages/index/index')
|
||||
}
|
||||
},
|
||||
@@ -181,7 +181,7 @@ Page({
|
||||
const { buildShareQuery } = require('../../utils/share')
|
||||
const rm = this.data.reviewMode
|
||||
return {
|
||||
title: rm ? '性格测试 - 快来测测你的MBTI性格类型' : 'AI人脸性格分析 - 看看你的面相透露了什么性格密码',
|
||||
title: rm ? '性格测试 - 快来测测你的MBTI性格类型' : '性格测试 - 看看你的面相透露了什么性格密码',
|
||||
query: buildShareQuery()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<view class="step-item">
|
||||
<view class="step-circle">2</view>
|
||||
<text class="step-label">STEP2</text>
|
||||
<text class="step-text">{{aiAnalysisText || '智能分析'}}</text>
|
||||
<text class="step-text">{{aiAnalysisText || '分析'}}</text>
|
||||
</view>
|
||||
<view class="step-line"></view>
|
||||
<view class="step-item">
|
||||
@@ -77,12 +77,6 @@
|
||||
<text class="button-text">{{startButtonText || '开始性格测试'}}</text>
|
||||
</view>
|
||||
|
||||
<!-- AI生成内容标识(始终显示,符合监管要求) -->
|
||||
<view class="ai-disclosure-banner">
|
||||
<view class="ai-disclosure-icon">AI</view>
|
||||
<text class="ai-disclosure-text">本服务含人工智能生成内容,结果仅供参考</text>
|
||||
</view>
|
||||
|
||||
<!-- 自定义底部导航 -->
|
||||
<custom-tab-bar />
|
||||
</view>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// pages/index/result.js - AI分析结果页(按旧版模板重构)
|
||||
// pages/index/result.js - 分析结果页
|
||||
const app = getApp()
|
||||
const payment = require('../../utils/payment')
|
||||
const { hasPhone, bindPhoneByCode, ensureProfileCompleteAndRedirect } = require('../../utils/phoneAuth.js')
|
||||
@@ -12,7 +12,7 @@ Page({
|
||||
noFaceError: false,
|
||||
noFaceMessage: '',
|
||||
progress: 0,
|
||||
analyzingTip: '正在识别面部特征...',
|
||||
analyzingTip: '正在分析中...',
|
||||
activeTab: 'face', // 'face' | 'bone'
|
||||
// 报告付费信息
|
||||
payInfo: {
|
||||
@@ -52,8 +52,8 @@ Page({
|
||||
hasPhone: false,
|
||||
analyzingTitle: '正在分析中',
|
||||
reportTitle: '分析报告',
|
||||
aiAnalysisText: '智能分析',
|
||||
reviewMode: false
|
||||
aiAnalysisText: '分析',
|
||||
reviewMode: true
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
@@ -69,7 +69,7 @@ Page({
|
||||
this.setData({
|
||||
analyzingTitle: tc.analyzingTitle || '正在分析中',
|
||||
reportTitle: tc.reportTitle || '分析报告',
|
||||
aiAnalysisText: tc.aiAnalysisText || '智能分析'
|
||||
aiAnalysisText: tc.aiAnalysisText || '分析'
|
||||
})
|
||||
if (tc.reportTitle) wx.setNavigationBarTitle({ title: tc.reportTitle })
|
||||
} else {
|
||||
@@ -80,7 +80,7 @@ Page({
|
||||
this.setData({
|
||||
analyzingTitle: t.analyzingTitle || '正在分析中',
|
||||
reportTitle: t.reportTitle || '分析报告',
|
||||
aiAnalysisText: t.aiAnalysisText || '智能分析'
|
||||
aiAnalysisText: t.aiAnalysisText || '分析'
|
||||
})
|
||||
if (t.reportTitle) wx.setNavigationBarTitle({ title: t.reportTitle })
|
||||
}
|
||||
@@ -145,7 +145,7 @@ Page({
|
||||
this.setData({
|
||||
analyzingTitle: tc.analyzingTitle || '正在分析中',
|
||||
reportTitle: tc.reportTitle || '分析报告',
|
||||
aiAnalysisText: tc.aiAnalysisText || '智能分析'
|
||||
aiAnalysisText: tc.aiAnalysisText || '分析'
|
||||
})
|
||||
}
|
||||
},
|
||||
@@ -169,9 +169,9 @@ Page({
|
||||
return
|
||||
}
|
||||
const tips = [
|
||||
'正在识别面部特征...',
|
||||
'分析眉眼特征...',
|
||||
'结合《冰鉴》分析骨形...',
|
||||
'正在分析数据...',
|
||||
'匹配性格特征...',
|
||||
'综合评估中...',
|
||||
'匹配MBTI/PDP/DISC...',
|
||||
'生成综合报告...'
|
||||
]
|
||||
@@ -524,7 +524,7 @@ Page({
|
||||
onShareAppMessage() {
|
||||
const r = this.data.result
|
||||
const rm = this.data.reviewMode
|
||||
const t = rm ? '测试结果' : (this.data.aiAnalysisText || '智能分析')
|
||||
const t = rm ? '测试结果' : (this.data.aiAnalysisText || '分析')
|
||||
const { getSharePathByScope } = require('../../utils/share')
|
||||
return {
|
||||
title: `${t}:我是${r?.mbti} ${r?.pdpEmoji}${r?.pdp}型,来测测你的!`,
|
||||
@@ -535,7 +535,7 @@ Page({
|
||||
onShareTimeline() {
|
||||
const r = this.data.result
|
||||
const rm = this.data.reviewMode
|
||||
const t = rm ? '测试结果' : (this.data.aiAnalysisText || '智能分析')
|
||||
const t = rm ? '测试结果' : (this.data.aiAnalysisText || '分析')
|
||||
const { buildShareQuery } = require('../../utils/share')
|
||||
return {
|
||||
title: `${t}:我是${r?.mbti} ${r?.pdpEmoji}${r?.pdp}型,来测测你的!`,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!--pages/index/result.wxml - AI分析结果(按旧版模板重构)-->
|
||||
<!--pages/index/result.wxml - 分析结果页-->
|
||||
<view class="container">
|
||||
<!-- 分析中状态 -->
|
||||
<view class="analyzing-modal" wx:if="{{isAnalyzing}}">
|
||||
@@ -38,12 +38,6 @@
|
||||
|
||||
<!-- 分析结果 -->
|
||||
<view wx:if="{{!isAnalyzing && showResult}}">
|
||||
<!-- AI生成内容标识(顶部显著位置,始终显示) -->
|
||||
<view class="ai-disclosure-banner">
|
||||
<view class="ai-disclosure-icon">AI</view>
|
||||
<text class="ai-disclosure-text">以下报告由人工智能生成,结果仅供参考</text>
|
||||
</view>
|
||||
|
||||
<!-- 状态横幅 -->
|
||||
<view class="status-banner {{hasError ? 'error-banner' : ''}}">
|
||||
<view class="status-dot {{hasError ? 'error-dot' : ''}}"></view>
|
||||
@@ -148,9 +142,8 @@
|
||||
<!-- ========== 详细分析区(解锁后可见) ========== -->
|
||||
<block wx:if="{{!hasError && (!payInfo.requiresPayment || payInfo.isPaid)}}">
|
||||
|
||||
<!-- 面相分析 -->
|
||||
<block wx:if="{{result.faceAnalysis}}">
|
||||
<!-- 完整结构化面相(旧 object 格式) -->
|
||||
<!-- 面相分析(审核模式隐藏) -->
|
||||
<block wx:if="{{!reviewMode && result.faceAnalysis}}">
|
||||
<view class="card" wx:if="{{result.faceAnalysis.facialFeatures && result.faceAnalysis.facialFeatures.length > 0}}">
|
||||
<text class="card-title">面部特征分析</text>
|
||||
<view class="feature-list">
|
||||
@@ -161,15 +154,13 @@
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- 字符串版面相(新 prompt 返回) -->
|
||||
<view class="card" wx:elif="{{result.faceAnalysisText}}">
|
||||
<view class="card" wx:elif="{{!reviewMode && result.faceAnalysisText}}">
|
||||
<text class="card-title">面相分析</text>
|
||||
<text class="card-text">{{result.faceAnalysisText}}</text>
|
||||
</view>
|
||||
|
||||
<!-- 骨相分析 -->
|
||||
<block wx:if="{{result.boneAnalysis && result.boneAnalysis.boneFormSummary}}">
|
||||
<!-- 完整结构化骨相(旧 object 格式) -->
|
||||
<!-- 骨相分析(审核模式隐藏) -->
|
||||
<block wx:if="{{!reviewMode && result.boneAnalysis && result.boneAnalysis.boneFormSummary}}">
|
||||
<view class="card">
|
||||
<text class="card-title">骨相分析(《冰鉴》八骨)</text>
|
||||
<view class="bone-content">
|
||||
@@ -184,8 +175,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- 字符串版骨相(新 prompt 返回) -->
|
||||
<view class="card" wx:elif="{{result.boneAnalysisText}}">
|
||||
<view class="card" wx:elif="{{!reviewMode && result.boneAnalysisText}}">
|
||||
<text class="card-title">骨相分析(《冰鉴》八骨)</text>
|
||||
<text class="card-text">{{result.boneAnalysisText}}</text>
|
||||
</view>
|
||||
@@ -305,10 +295,5 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- AI生成内容标识(底部,始终显示) -->
|
||||
<view class="ai-disclosure-banner bottom">
|
||||
<view class="ai-disclosure-icon">AI</view>
|
||||
<text class="ai-disclosure-text">以上内容由人工智能生成,结果仅供参考</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// pages/index/camera.js - 面相分析拍照页,拍完后上传到服务器再跳转结果页
|
||||
// pages/index/upload.js - 上传照片引导页
|
||||
const app = getApp()
|
||||
const { hasPhone, bindPhoneByCode, ensureProfileCompleteAndRedirect } = require('../../utils/phoneAuth.js')
|
||||
|
||||
@@ -16,7 +16,7 @@ Page({
|
||||
guideText: '请正对镜头',
|
||||
uploading: false,
|
||||
needPhoneAuth: false,
|
||||
aiAnalysisText: '智能分析'
|
||||
aiAnalysisText: '分析'
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
@@ -27,7 +27,7 @@ Page({
|
||||
app.getRuntimeConfig().then((cfg) => {
|
||||
if (cfg && cfg.textConfig) {
|
||||
app.globalData.textConfig = cfg.textConfig
|
||||
this.setData({ aiAnalysisText: cfg.textConfig.aiAnalysisText || '智能分析' })
|
||||
this.setData({ aiAnalysisText: cfg.textConfig.aiAnalysisText || '分析' })
|
||||
}
|
||||
}).catch(() => {})
|
||||
}
|
||||
@@ -186,7 +186,7 @@ Page({
|
||||
console.error('相机错误:', e)
|
||||
wx.showModal({
|
||||
title: '相机权限',
|
||||
content: '请允许使用相机权限以进行AI人脸分析',
|
||||
content: '请允许使用相机权限以进行性格分析',
|
||||
confirmText: '去设置',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!--pages/index/camera.wxml - AI拍照页面(仿上传照片指南布局)-->
|
||||
<!--pages/index/upload.wxml - 上传照片引导页-->
|
||||
<view class="page">
|
||||
<!-- 主体内容 -->
|
||||
<view class="content">
|
||||
@@ -6,7 +6,7 @@
|
||||
<view class="intro">
|
||||
<text class="intro-title">多角度拍摄更精准</text>
|
||||
<view class="intro-desc-wrap">
|
||||
<text class="intro-desc">为了更准确地通过骨相与面相分析您的性格,</text>
|
||||
<text class="intro-desc">为了更准确地分析您的性格特征,</text>
|
||||
<text class="intro-desc">请上传以下三个维度的照片。</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -103,15 +103,9 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- AI生成内容标识 -->
|
||||
<view class="ai-disclosure-banner">
|
||||
<view class="ai-disclosure-icon">AI</view>
|
||||
<text class="ai-disclosure-text">分析结果由人工智能生成,仅供参考</text>
|
||||
</view>
|
||||
|
||||
<!-- 底部操作按钮 -->
|
||||
<view class="footer">
|
||||
<button class="primary-btn" bindtap="completeCapture">智能分析</button>
|
||||
<button class="primary-btn" bindtap="completeCapture">开始分析</button>
|
||||
</view>
|
||||
|
||||
<!-- 自定义底部导航,与首页保持一致 -->
|
||||
|
||||
@@ -307,7 +307,7 @@ Page({
|
||||
const { getSharePathByScope } = require('../../utils/share')
|
||||
const rm = !!app.globalData.reviewMode
|
||||
return {
|
||||
title: rm ? '神仙团队性格测试 - 发现你的MBTI类型' : '神仙团队AI性格测试 - 发现你的MBTI类型',
|
||||
title: '神仙团队性格测试 - 发现你的MBTI类型',
|
||||
path: getSharePathByScope('/pages/index/index')
|
||||
}
|
||||
},
|
||||
@@ -316,7 +316,7 @@ Page({
|
||||
const { buildShareQuery } = require('../../utils/share')
|
||||
const rm = !!app.globalData.reviewMode
|
||||
return {
|
||||
title: rm ? '神仙团队性格测试 - 发现你的MBTI类型' : '神仙团队AI性格测试 - 发现你的MBTI类型',
|
||||
title: '神仙团队性格测试 - 发现你的MBTI类型',
|
||||
query: buildShareQuery()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ Page({
|
||||
onShareAppMessage() {
|
||||
const { getSharePathByScope } = require('../../utils/share')
|
||||
return {
|
||||
title: '神仙团队AI性格测试 - 发现你的内在潜能',
|
||||
title: '神仙团队性格测试 - 发现你的内在潜能',
|
||||
path: getSharePathByScope('/pages/index/index')
|
||||
}
|
||||
},
|
||||
@@ -263,7 +263,7 @@ Page({
|
||||
onShareTimeline() {
|
||||
const { buildShareQuery } = require('../../utils/share')
|
||||
return {
|
||||
title: '神仙团队AI性格测试 - 发现你的内在潜能',
|
||||
title: '神仙团队性格测试 - 发现你的内在潜能',
|
||||
query: buildShareQuery()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,13 +234,13 @@ Page({
|
||||
|
||||
onShareAppMessage() {
|
||||
const { getSharePath } = require('../../utils/share')
|
||||
return { title: '神仙团队AI性格测试 - 发现你的内在潜能', path: getSharePath('/pages/purchase/index') }
|
||||
return { title: '神仙团队性格测试 - 发现你的内在潜能', path: getSharePath('/pages/purchase/index') }
|
||||
},
|
||||
|
||||
onShareTimeline() {
|
||||
const { buildShareQuery } = require('../../utils/share')
|
||||
return {
|
||||
title: '神仙团队AI性格测试 - 发现你的内在潜能',
|
||||
title: '神仙团队性格测试 - 发现你的内在潜能',
|
||||
query: buildShareQuery()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ Page({
|
||||
const tips = [
|
||||
'正在汇总各项测评结果...',
|
||||
'正在解析简历内容...',
|
||||
'AI 正在进行深度匹配分析...',
|
||||
'正在进行深度匹配分析...',
|
||||
'正在生成综合评估报告...',
|
||||
'分析即将完成,请稍候...'
|
||||
]
|
||||
@@ -187,7 +187,7 @@ Page({
|
||||
const isTimeout = err && (err.errMsg || '').indexOf('timeout') !== -1
|
||||
this.setData({
|
||||
loading: false,
|
||||
error: isTimeout ? 'AI 分析耗时较长,请点击「重新生成」再试。' : '网络请求失败,请检查网络后重试。'
|
||||
error: isTimeout ? '分析耗时较长,请点击「重新生成」再试。' : '网络请求失败,请检查网络后重试。'
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -18,18 +18,12 @@
|
||||
<!-- 结果显示 -->
|
||||
<block wx:if="{{!loading || error || content}}">
|
||||
|
||||
<!-- AI生成内容标识(顶部显著位置,始终显示) -->
|
||||
<view class="ai-disclosure-banner">
|
||||
<view class="ai-disclosure-icon">AI</view>
|
||||
<text class="ai-disclosure-text">以下报告由人工智能生成,结果仅供参考</text>
|
||||
</view>
|
||||
|
||||
<!-- 页面顶部 Hero -->
|
||||
<view class="hero-banner {{error ? 'hero-error' : 'hero-success'}}">
|
||||
<text class="hero-icon">{{error ? '⚠️' : '📋'}}</text>
|
||||
<view class="hero-text-wrap">
|
||||
<text class="hero-title">{{error ? '生成失败' : '人才综合评估报告'}}</text>
|
||||
<text class="hero-sub">{{error ? '请检查后重新生成' : '基于测评结果 · AI 综合分析'}}</text>
|
||||
<text class="hero-sub">{{error ? '请检查后重新生成' : '基于测评结果 · 综合分析'}}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -75,12 +69,6 @@
|
||||
<text class="card-text content-text">{{content}}</text>
|
||||
</view>
|
||||
|
||||
<!-- AI生成内容标识(底部,始终显示) -->
|
||||
<view class="ai-disclosure-banner bottom">
|
||||
<view class="ai-disclosure-icon">AI</view>
|
||||
<text class="ai-disclosure-text">以上内容由人工智能生成,结果仅供参考</text>
|
||||
</view>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<view class="action-section" wx:if="{{!loading || error}}">
|
||||
<button class="btn btn-primary" open-type="share" wx:if="{{!payInfo.requiresPayment && content}}">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<view class="container">
|
||||
<view class="card intro-card">
|
||||
<text class="intro-title">选择一项详细性格测试</text>
|
||||
<text class="intro-desc">完成问卷即可获得对应维度的专业报告,与面相分析结果互补</text>
|
||||
<text class="intro-desc">完成问卷即可获得对应维度的专业性格报告</text>
|
||||
</view>
|
||||
|
||||
<view class="card entry-card" bindtap="goMBTI">
|
||||
|
||||
@@ -318,7 +318,7 @@ function purchaseSingleTest(testType, success, fail) {
|
||||
mbti: 'MBTI性格测试',
|
||||
disc: 'DISC行为风格测试',
|
||||
pdp: 'PDP动物性格测试',
|
||||
ai: 'AI人脸性格分析'
|
||||
ai: '性格分析'
|
||||
}
|
||||
|
||||
const orderId = generateOrderId(`single_${testType}`)
|
||||
@@ -339,7 +339,7 @@ function purchaseSingleTest(testType, success, fail) {
|
||||
|
||||
/**
|
||||
* 使用后台定价购买单项测试/报告
|
||||
* 支持:人脸测试/MBTI测试/DISC测试/PDP测试/完整报告/团队分析
|
||||
* 支持:性格测试/MBTI测试/DISC测试/PDP测试/完整报告/团队分析
|
||||
* @param {String} productType - 'face' | 'mbti' | 'disc' | 'pdp' | 'report' | 'team_analysis'
|
||||
* @param {String} description - 商品描述
|
||||
* @param {Function|Object} extra - 兼容两种调用方式:
|
||||
@@ -369,7 +369,7 @@ function purchaseByPricing(productType, description, extra, maybeFail) {
|
||||
})
|
||||
}
|
||||
|
||||
// 人脸测试完整报告
|
||||
// 性格测试完整报告
|
||||
// 兼容两种调用方式:
|
||||
// - purchaseFaceTest(success, fail)
|
||||
// - purchaseFaceTest({ testResultId, success, fail })
|
||||
@@ -384,7 +384,7 @@ function purchaseFaceTest(arg1, arg2) {
|
||||
|
||||
const { testResultId, success, fail } = opts
|
||||
|
||||
purchaseByPricing('face', 'AI人脸性格分析完整报告', { testResultId, success, fail })
|
||||
purchaseByPricing('face', '性格分析完整报告', { testResultId, success, fail })
|
||||
}
|
||||
|
||||
// MBTI测试付费版(支持 purchaseMbtiTest({ testResultId, success, fail }))
|
||||
@@ -415,7 +415,7 @@ function purchaseResumeAnalysis(arg1, arg2) {
|
||||
purchaseByPricing('resume', '简历综合分析付费版', { testResultId, success, fail })
|
||||
}
|
||||
|
||||
// 完整报告(整合MBTI/DISC/PDP/AI人脸等深度解读)
|
||||
// 完整报告(整合MBTI/DISC/PDP等深度解读)
|
||||
function purchaseFullReport(success, fail) {
|
||||
purchaseByPricing('report', '完整人格与职业发展报告', success, fail)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user