/**
 * 属相（生肖）计算工具
 */

// 十二生肖数组
const ZODIACS = ['鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊', '猴', '鸡', '狗', '猪']

// 生肖对应的emoji
const ZODIAC_EMOJIS = {
	'鼠': '🐭',
	'牛': '🐮',
	'虎': '🐯',
	'兔': '🐰',
	'龙': '🐲',
	'蛇': '🐍',
	'马': '🐴',
	'羊': '🐑',
	'猴': '🐵',
	'鸡': '🐔',
	'狗': '🐶',
	'猪': '🐷'
}

// 生肖性格特征
const ZODIAC_TRAITS = {
	'鼠': {
		name: '鼠',
		emoji: '🐭',
		personality: '机智灵活，善于社交，聪明伶俐',
		loveStyle: '浪漫细腻，善于制造惊喜',
		advantage: '头脑灵活、适应力强、幽默风趣',
		weakness: '有时过于谨慎、容易多疑',
		luckyColor: '蓝色、金色',
		luckyNumber: '2、3',
		compatibility: {
			best: ['龙', '猴', '牛'],
			good: ['鼠', '虎', '蛇'],
			avoid: ['马', '羊', '鸡']
		}
	},
	'牛': {
		name: '牛',
		emoji: '🐮',
		personality: '踏实稳重，勤劳努力，值得信赖',
		loveStyle: '专一深情，默默付出',
		advantage: '勤奋踏实、责任心强、值得依靠',
		weakness: '有时固执己见、不够浪漫',
		luckyColor: '黄色、绿色',
		luckyNumber: '1、9',
		compatibility: {
			best: ['鼠', '蛇', '鸡'],
			good: ['牛', '兔', '猪'],
			avoid: ['马', '羊', '龙']
		}
	},
	'虎': {
		name: '虎',
		emoji: '🐯',
		personality: '勇敢自信，充满激情，领导力强',
		loveStyle: '热情主动，保护欲强',
		advantage: '勇敢果断、充满魅力、正义感强',
		weakness: '容易冲动、有时过于强势',
		luckyColor: '橙色、蓝色',
		luckyNumber: '1、3、4',
		compatibility: {
			best: ['马', '狗', '猪'],
			good: ['龙', '羊'],
			avoid: ['蛇', '猴']
		}
	},
	'兔': {
		name: '兔',
		emoji: '🐰',
		personality: '温柔善良，优雅细腻，懂得生活',
		loveStyle: '温柔体贴，浪漫优雅',
		advantage: '温柔善良、审美出众、善解人意',
		weakness: '有时过于敏感、缺乏安全感',
		luckyColor: '粉色、白色',
		luckyNumber: '3、4、9',
		compatibility: {
			best: ['羊', '狗', '猪'],
			good: ['虎', '龙', '蛇'],
			avoid: ['鸡', '鼠']
		}
	},
	'龙': {
		name: '龙',
		emoji: '🐲',
		personality: '自信大方，富有理想，魅力十足',
		loveStyle: '浪漫大气，懂得制造惊喜',
		advantage: '自信魅力、理想远大、慷慨大方',
		weakness: '有时过于自我、不够耐心',
		luckyColor: '金色、银色',
		luckyNumber: '1、6、7',
		compatibility: {
			best: ['鼠', '猴', '鸡'],
			good: ['虎', '兔', '蛇'],
			avoid: ['狗', '龙']
		}
	},
	'蛇': {
		name: '蛇',
		emoji: '🐍',
		personality: '智慧深沉，神秘优雅，洞察力强',
		loveStyle: '深情专一，神秘诱人',
		advantage: '智慧深邃、优雅迷人、直觉敏锐',
		weakness: '有时过于冷静、不易亲近',
		luckyColor: '红色、黄色',
		luckyNumber: '2、8、9',
		compatibility: {
			best: ['牛', '鸡'],
			good: ['龙', '兔', '羊'],
			avoid: ['虎', '猪']
		}
	},
	'马': {
		name: '马',
		emoji: '🐴',
		personality: '热情开朗，积极乐观，充满活力',
		loveStyle: '热烈奔放，追求自由',
		advantage: '热情开朗、活力四射、乐观向上',
		weakness: '有时缺乏耐心、容易三分钟热度',
		luckyColor: '红色、紫色',
		luckyNumber: '2、3、7',
		compatibility: {
			best: ['虎', '羊', '狗'],
			good: ['龙', '蛇', '猴'],
			avoid: ['鼠', '牛', '马']
		}
	},
	'羊': {
		name: '羊',
		emoji: '🐑',
		personality: '温和善良，富有同情心，艺术气质',
		loveStyle: '温柔依赖，需要呵护',
		advantage: '温柔善良、富有创意、同情心强',
		weakness: '有时过于依赖、优柔寡断',
		luckyColor: '绿色、红色',
		luckyNumber: '3、4、9',
		compatibility: {
			best: ['兔', '马', '猪'],
			good: ['蛇', '猴', '鸡'],
			avoid: ['牛', '狗']
		}
	},
	'猴': {
		name: '猴',
		emoji: '🐵',
		personality: '聪明机智，活泼开朗，适应力强',
		loveStyle: '幽默风趣，善于讨喜',
		advantage: '聪明机智、幽默风趣、多才多艺',
		weakness: '有时过于浮躁、不够专注',
		luckyColor: '白色、蓝色',
		luckyNumber: '1、7、8',
		compatibility: {
			best: ['鼠', '龙'],
			good: ['牛', '兔', '马'],
			avoid: ['虎', '猪']
		}
	},
	'鸡': {
		name: '鸡',
		emoji: '🐔',
		personality: '自信独立，追求完美，时尚品味',
		loveStyle: '忠诚专一，追求完美',
		advantage: '自信独立、追求完美、有品味',
		weakness: '有时过于挑剔、爱面子',
		luckyColor: '金色、棕色',
		luckyNumber: '5、7、8',
		compatibility: {
			best: ['牛', '龙', '蛇'],
			good: ['羊', '猴', '猪'],
			avoid: ['兔', '鸡', '狗']
		}
	},
	'狗': {
		name: '狗',
		emoji: '🐶',
		personality: '忠诚可靠，正直善良，责任感强',
		loveStyle: '忠诚专一，保护欲强',
		advantage: '忠诚可靠、正直善良、责任心强',
		weakness: '有时过于固执、容易焦虑',
		luckyColor: '红色、绿色',
		luckyNumber: '3、4、9',
		compatibility: {
			best: ['虎', '兔', '马'],
			good: ['蛇', '猴', '猪'],
			avoid: ['龙', '羊', '鸡']
		}
	},
	'猪': {
		name: '猪',
		emoji: '🐷',
		personality: '真诚善良，乐观豁达，享受生活',
		loveStyle: '真诚浪漫，包容大度',
		advantage: '真诚善良、乐观豁达、宽容大度',
		weakness: '有时过于天真、容易受骗',
		luckyColor: '黄色、灰色',
		luckyNumber: '2、5、8',
		compatibility: {
			best: ['虎', '兔', '羊'],
			good: ['鼠', '龙', '鸡'],
			avoid: ['蛇', '猴', '猪']
		}
	}
}

/**
 * 根据公历年份计算生肖
 * @param {Number} year - 公历年份
 * @returns {String} 生肖名称
 */
export function getZodiacByYear(year) {
	// 1900年是鼠年，以此为基准计算
	const baseYear = 1900
	const index = (year - baseYear) % 12
	return ZODIACS[index]
}

/**
 * 根据生日计算生肖
 * 注意：这里简化处理，实际应该考虑农历新年
 * @param {String} birthday - 生日，格式：YYYY-MM-DD
 * @returns {String} 生肖名称
 */
export function getZodiacByBirthday(birthday) {
	const year = parseInt(birthday.split('-')[0])
	const month = parseInt(birthday.split('-')[1])
	
	// 简化处理：2月4日前算上一年的生肖
	let zodiacYear = year
	if (month === 1 || (month === 2 && parseInt(birthday.split('-')[2]) < 4)) {
		zodiacYear = year - 1
	}
	
	return getZodiacByYear(zodiacYear)
}

/**
 * 获取生肖emoji
 * @param {String} zodiac - 生肖名称
 * @returns {String} emoji
 */
export function getZodiacEmoji(zodiac) {
	return ZODIAC_EMOJIS[zodiac] || '🐷'
}

/**
 * 获取生肖详细信息
 * @param {String} zodiac - 生肖名称
 * @returns {Object} 生肖详细信息
 */
export function getZodiacInfo(zodiac) {
	return ZODIAC_TRAITS[zodiac] || ZODIAC_TRAITS['猪']
}

/**
 * 计算两个生肖的配对指数
 * @param {String} zodiac1 - 生肖1
 * @param {String} zodiac2 - 生肖2
 * @returns {Object} 配对结果 {level: 'best'|'good'|'normal'|'avoid', score: 85}
 * 
 * 注意：基于传统生肖配对理论，仅供参考
 */
export function getZodiacCompatibility(zodiac1, zodiac2) {
	const info = ZODIAC_TRAITS[zodiac1]
	if (!info) return { 
		level: 'normal', 
		score: 65,
		desc: '需要了解更多信息',
		disclaimer: '仅供参考，真正的契合需要双方共同努力'
	}
	
	if (info.compatibility.best.includes(zodiac2)) {
		return { 
			level: 'best', 
			score: Math.floor(Math.random() * 8) + 85, // 85-92（避免100%）
			desc: '根据传统理论，相处较为融洽',
			disclaimer: '配对仅供参考，感情需要经营'
		}
	} else if (info.compatibility.good.includes(zodiac2)) {
		return { 
			level: 'good', 
			score: Math.floor(Math.random() * 12) + 70, // 70-81
			desc: '互相欣赏，可以和谐相处',
			disclaimer: '配对仅供参考，感情需要经营'
		}
	} else if (info.compatibility.avoid.includes(zodiac2)) {
		return { 
			level: 'avoid', 
			score: Math.floor(Math.random() * 15) + 50, // 50-64
			desc: '可能需要更多磨合和包容',
			disclaimer: '配对仅供参考，感情需要经营'
		}
	} else {
		return { 
			level: 'normal', 
			score: Math.floor(Math.random() * 10) + 60, // 60-69
			desc: '各有特色，需要互相理解',
			disclaimer: '配对仅供参考，感情需要经营'
		}
	}
}

/**
 * 获取今日运势
 * @param {String} zodiac - 生肖名称
 * @returns {Object} 今日运势
 * 
 * 注意：当前版本为示例数据，建议接入专业API或建立专家数据库
 * 推荐API：聚合数据、天行数据、阿凡提数据
 */
export function getTodayFortune(zodiac) {
	// ⚠️ 警告：当前为模拟数据，仅供演示
	// TODO: 接入专业API或后端数据库
	
	const fortunes = ['较好', '平稳', '一般']
	const randomIndex = Math.floor(Math.random() * fortunes.length)
	
	// 生成相对保守的分数（避免极端值）
	const generateScore = () => Math.floor(Math.random() * 20) + 70 // 70-89
	
	const yiList = ['保持微笑', '积极社交', '主动沟通', '关心他人']
	const jiList = ['过度焦虑', '冲动决定', '熬夜晚睡', '情绪化']
	
	return {
		overall: fortunes[randomIndex],
		love: generateScore(),
		career: generateScore(),
		wealth: generateScore(),
		health: generateScore(),
		tips: `根据传统理论建议：${yiList[Math.floor(Math.random() * yiList.length)]}，避免${jiList[Math.floor(Math.random() * jiList.length)]}（仅供参考）`,
		source: 'local_demo', // 标记数据来源
		disclaimer: '此数据为示例，建议接入专业API'
	}
}

export default {
	getZodiacByYear,
	getZodiacByBirthday,
	getZodiacEmoji,
	getZodiacInfo,
	getZodiacCompatibility,
	getTodayFortune,
	ZODIACS,
	ZODIAC_EMOJIS
}

