Files
MBTI_wang/miniprogram/utils/pdpInsights.js

68 lines
3.0 KiB
JavaScript

/**
* PDP 深度洞察:主导动物型 → 心智模式 / 决策倾向 / 能量来源 / 压力反应
*/
// 8 维:心智 / 决策 / 能量 / 压力 / 沟通 / 领导 / 恋爱 / 团队角色
const PDP_INSIGHTS = {
Tiger: { mind: '老虎型 · 支配主导', decision: '速断·结果', energy: '挑战·夺冠', stress: '强硬控场', comm: '命令直接', lead: '果敢铁腕', love: '保护占有', team: '业务指挥' },
Peacock: { mind: '孔雀型 · 表达主导', decision: '氛围·直觉', energy: '舞台·社交', stress: '情绪放大', comm: '热情感染', lead: '激励型', love: '浪漫热烈', team: '气氛担当' },
Koala: { mind: '无尾熊型 · 支持主导', decision: '共识·稳妥', energy: '关系·节奏', stress: '回避冲突', comm: '温和聆听', lead: '幕后协调', love: '默默陪伴', team: '人和黏合' },
Owl: { mind: '猫头鹰型 · 分析主导', decision: '数据·规则', energy: '独立·深研', stress: '过度完美', comm: '精准严谨', lead: '标准驱动', love: '精选理性', team: '专家深研' },
Chameleon: { mind: '变色龙型 · 整合主导', decision: '平衡·权变', energy: '多场景切换', stress: '定位模糊', comm: '灵活变化', lead: '多面手', love: '契合环境', team: '跨界整合' }
}
const PDP_TAGS = {
Tiger: ['目标感', '高执行', '控制'],
Peacock: ['影响力', '乐观', '表达'],
Koala: ['可靠', '耐心', '协作'],
Owl: ['严谨', '分析', '系统'],
Chameleon: ['灵活', '适应', '整合']
}
const PDP_META = {
Tiger: { emoji: '🐅', label: '老虎 · 支配', desc: '行动果断、目标导向' },
Peacock: { emoji: '🦚', label: '孔雀 · 表达', desc: '富有感染力、善于社交' },
Koala: { emoji: '🐨', label: '无尾熊 · 支持', desc: '稳定可靠、照顾团队' },
Owl: { emoji: '🦉', label: '猫头鹰 · 分析', desc: '注重逻辑、追求精准' },
Chameleon: { emoji: '🦎', label: '变色龙 · 整合', desc: '灵活平衡、多面手' }
}
function toKey(code) {
const s = (code || '').trim()
if (!s) return ''
const up = s.charAt(0).toUpperCase() + s.slice(1).toLowerCase()
return PDP_INSIGHTS[up] ? up : ''
}
function getPdpInsight(code) {
const k = toKey(code)
return PDP_INSIGHTS[k] || null
}
function getPdpTags(code) {
const k = toKey(code)
return PDP_TAGS[k] || []
}
function buildPdpDimensions(result) {
const pi = (result && result.percentagesInt) || {}
const p = (result && result.percentages) || {}
return ['Tiger', 'Peacock', 'Koala', 'Owl', 'Chameleon'].map((k) => {
const meta = PDP_META[k]
return {
key: k,
label: meta.label,
emoji: meta.emoji,
desc: meta.desc,
dashClass: 'dash-fill--pdp-' + k.toLowerCase(),
percentage: pi[k] != null ? pi[k] : (p[k] != null ? Math.round(Number(p[k]) || 0) : 0)
}
})
}
module.exports = {
getPdpInsight,
getPdpTags,
buildPdpDimensions
}