Files
travel-planner-20260929043148/js/ai.js
T

74 lines
2.9 KiB
JavaScript

// AI 行程生成:本地规则引擎(可替换为真实大模型 API)
(function () {
// 一些常见城市的示例景点库
const SPOT_DB = {
'杭州': {
'自然风光': ['西湖', '西溪湿地', '九溪烟树'],
'历史文化': ['灵隐寺', '雷峰塔', '南宋御街'],
'美食购物': ['河坊街', '武林夜市', '湖滨银泰'],
'亲子家庭': ['杭州动物园', '极地海洋公园', '少年儿童公园']
},
'北京': {
'自然风光': ['颐和园', '香山公园', '奥林匹克森林公园'],
'历史文化': ['故宫', '天坛', '八达岭长城'],
'美食购物': ['南锣鼓巷', '王府井', '簋街'],
'亲子家庭': ['北京动物园', '欢乐谷', '中国科技馆']
},
'成都': {
'自然风光': ['青城山', '都江堰', '西岭雪山'],
'历史文化': ['武侯祠', '杜甫草堂', '金沙遗址'],
'美食购物': ['宽窄巷子', '锦里', '春熙路'],
'亲子家庭': ['成都动物园', '大熊猫繁育研究基地', '欢乐谷']
},
'上海': {
'自然风光': ['外滩', '世纪公园', '佘山'],
'历史文化': ['豫园', '城隍庙', '中共一大会址'],
'美食购物': ['南京路', '新天地', '田子坊'],
'亲子家庭': ['上海动物园', '迪士尼乐园', '上海科技馆']
}
};
// 默认通用景点(当城市不在库中时使用)
const DEFAULT_SPOTS = {
'自然风光': ['城市公园', '滨江步道', '近郊山景'],
'历史文化': ['博物馆', '老城区', '历史街区'],
'美食购物': ['美食街', '商业中心', '夜市'],
'亲子家庭': ['动物园', '科技馆', '游乐场']
};
// 生成行程计划
function generatePlan(dest, days, pref) {
const city = (dest || '').trim();
const db = SPOT_DB[city] || DEFAULT_SPOTS;
const pool = db[pref] || DEFAULT_SPOTS[pref] || DEFAULT_SPOTS['自然风光'];
const lines = [];
lines.push(`📍 目的地:${city || '未指定'}`);
lines.push(`🗓️ 天数:${days} 天`);
lines.push(`🎯 偏好:${pref}`);
lines.push('');
for (let d = 1; d <= days; d++) {
lines.push(`—— 第 ${d} 天 ——`);
const morning = pool[(d - 1) % pool.length];
const afternoon = pool[(d) % pool.length];
const evening = pool[(d + 1) % pool.length];
lines.push(`上午:游览「${morning}」`);
lines.push(`下午:前往「${afternoon}」`);
lines.push(`晚上:在「${evening}」附近用餐 / 散步`);
lines.push('');
}
lines.push('💡 提示:可在地图上点击添加自定义景点并标注状态。');
return lines.join('\n');
}
// 对外接口(异步,方便未来替换为真实 API)
function generatePlanAsync(dest, days, pref) {
return new Promise(resolve => {
setTimeout(() => resolve(generatePlan(dest, days, pref)), 400);
});
}
window.AI = { generatePlanAsync };
})();