feat: 小程序与管理端迭代(神仙AI、了解自己CRM、AI测试入口、报表与分润等)
Made-with: Cursor
This commit is contained in:
69
miniprogram/utils/discInsights.js
Normal file
69
miniprogram/utils/discInsights.js
Normal file
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* DISC 深度洞察:主类型 → 心智模式 / 决策倾向 / 能量来源 / 压力反应
|
||||
* 支持单字母主类型(D/I/S/C)与组合(如 "S+I"),取首字母作为主导。
|
||||
*/
|
||||
|
||||
// 8 维:心智 / 决策 / 能量 / 压力 / 沟通 / 领导 / 恋爱 / 团队角色
|
||||
const DISC_INSIGHTS = {
|
||||
D: { mind: '力量型 · 动能主导', decision: '目标·速决', energy: '挑战·掌控', stress: '压迫他人', comm: '直接', lead: '铁腕推进', love: '保护欲强', team: '业务开拓' },
|
||||
I: { mind: '活跃型 · 影响主导', decision: '氛围·直觉', energy: '社交·舞台', stress: '注意力分散', comm: '热情表达', lead: '激励型', love: '浪漫热烈', team: '气氛担当' },
|
||||
S: { mind: '和平型 · 稳定主导', decision: '共识·耐心', energy: '关系·节奏', stress: '回避冲突', comm: '温和倾听', lead: '稳定协调', love: '默默陪伴', team: '人和支持' },
|
||||
C: { mind: '完美型 · 分析主导', decision: '规则·数据', energy: '独立·细节', stress: '过度自省', comm: '精准严谨', lead: '标准驱动', love: '精选长期', team: '质量把关' }
|
||||
}
|
||||
|
||||
const DISC_TAGS = {
|
||||
D: ['高执行', '目标感', '控制'],
|
||||
I: ['影响力', '乐观', '高社交'],
|
||||
S: ['可靠', '稳定', '协作'],
|
||||
C: ['严谨', '分析', '系统']
|
||||
}
|
||||
|
||||
const DISC_END_LABELS = {
|
||||
D: { label: '力量 D', emoji: '🔥', color: '#ef4444', desc: '主导型:行动、速度、结果' },
|
||||
I: { label: '活跃 I', emoji: '🎉', color: '#f59e0b', desc: '影响型:表达、社交、氛围' },
|
||||
S: { label: '和平 S', emoji: '🌿', color: '#10b981', desc: '稳定型:耐心、协作、节奏' },
|
||||
C: { label: '完美 C', emoji: '🎯', color: '#3b82f6', desc: '严谨型:分析、规则、数据' }
|
||||
}
|
||||
|
||||
function toFirstLetter(code) {
|
||||
if (!code) return ''
|
||||
return String(code).trim().toUpperCase().charAt(0)
|
||||
}
|
||||
|
||||
function getDiscInsight(code) {
|
||||
const k = toFirstLetter(code)
|
||||
return DISC_INSIGHTS[k] || null
|
||||
}
|
||||
|
||||
function getDiscTags(code) {
|
||||
const k = toFirstLetter(code)
|
||||
return DISC_TAGS[k] || []
|
||||
}
|
||||
|
||||
function getDiscEndMeta(letter) {
|
||||
return DISC_END_LABELS[letter] || null
|
||||
}
|
||||
|
||||
function buildDiscDimensions(result) {
|
||||
const p = (result && result.percentages) || {}
|
||||
const pi = (result && result.percentagesInt) || {}
|
||||
return ['D', 'I', 'S', 'C'].map((k) => {
|
||||
const meta = DISC_END_LABELS[k]
|
||||
return {
|
||||
key: k,
|
||||
label: meta.label,
|
||||
emoji: meta.emoji,
|
||||
desc: meta.desc,
|
||||
dashClass: 'dash-fill--disc-' + k.toLowerCase(),
|
||||
percentage: pi[k] != null ? pi[k] : (p[k] != null ? Math.round(Number(p[k]) || 0) : 0),
|
||||
raw: p[k] != null ? Number(p[k]) || 0 : (pi[k] != null ? pi[k] : 0)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getDiscInsight,
|
||||
getDiscTags,
|
||||
getDiscEndMeta,
|
||||
buildDiscDimensions
|
||||
}
|
||||
Reference in New Issue
Block a user