Files
WonderQ-Admin/app/content.py
duanshuwen 201e835eab feat: add hotel and vehicle option site modules
Add full support for hotel group and vehicle option site management features:
- Define SQLAlchemy models and alembic migration for the new database tables
- Add default sample content entries in content.py
- Extend admin and public API routes to support the new modules
- Update seed script to populate default hotel and vehicle data
- Update all relevant documentation and test cases
2026-07-03 20:26:44 +08:00

110 lines
4.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

HERO_SLIDES = [
{
"title": "经典人文打卡线路",
"kicker": "经典人文",
"action": "查看线路",
"image": "/assets/guizhou/huangguoshu-waterfall.jpg",
"targetValue": "classic-deal",
},
{
"title": "极限山野户外野咖线路",
"kicker": "山野户外",
"action": "探索玩法",
"image": "/assets/guizhou/wanfenglin.jpg",
"targetValue": "outdoor-deal",
},
{
"title": "人文+户外综合混搭线路",
"kicker": "人文+户外",
"action": "定制小团",
"image": "/assets/guizhou/xijiang-miao-village.jpg",
"targetValue": "classic-deal",
},
]
DESTINATIONS = [
("贵阳", "/assets/guizhou/jiaxiu-tower.jpg"),
("黄果树", "/assets/guizhou/huangguoshu-waterfall.jpg"),
("荔波小七孔", "/assets/guizhou/libo-xiaoqikong.jpg"),
("西江苗寨", "/assets/guizhou/xijiang-miao-village.jpg"),
("梵净山", "/assets/guizhou/fanjing-mountain.jpg"),
("镇远古城", "/assets/guizhou/zhenyuan-ancient-town.jpg"),
("万峰林", "/assets/guizhou/wanfenglin.jpg"),
("织金洞", "/assets/guizhou/zhijin-cave.jpg"),
("百里杜鹃", "/assets/guizhou/baili-azalea.jpg"),
("乌蒙草原", "/assets/guizhou/wumeng-grassland.jpg"),
("赤水丹霞", "/assets/guizhou/chishui-danxia.jpg"),
("肇兴侗寨", "/assets/guizhou/dong-village.jpg"),
("加榜梯田", "/assets/guizhou/jiabang-terrace.jpg"),
("青岩古镇", "/assets/guizhou/zhenyuan-ancient-town.jpg"),
("娄山关", "/assets/guizhou/chishui-danxia.jpg"),
("十二背后", "/assets/guizhou/zhijin-cave.jpg"),
("黔东南", "/assets/guizhou/xijiang-miao-village.jpg"),
]
ALIASES = {
"贵阳": ["贵阳", "青岩", "花溪", "高坡", "天河潭"],
"黄果树": ["黄果树", "安顺", "坝陵河", "瀑布"],
"荔波小七孔": ["荔波", "小七孔", "茂兰", "水上森林"],
"西江苗寨": ["西江", "苗寨", "郎德", "雷山", "苗岭"],
"梵净山": ["梵净山", "铜仁", "云舍", "寨沙"],
"镇远古城": ["镇远", "青龙洞", "古城"],
"肇兴侗寨": ["肇兴", "侗寨", "堂安", "加榜", "黎平", "侗族大歌"],
"万峰林": ["万峰林", "万峰湖", "马岭河", "兴义", "黔西南"],
"织金洞": ["织金洞", "织金", "洞穴", "喀斯特"],
"赤水丹霞": ["赤水", "丹霞", "竹海", "丙安"],
"青岩古镇": ["青岩", "古镇", "屯堡"],
"百里杜鹃": ["百里杜鹃", "毕节", "花季"],
"乌蒙草原": ["乌蒙", "六盘水", "草原", "避暑"],
"加榜梯田": ["加榜", "梯田", "黔东南"],
"娄山关": ["娄山关", "遵义", "红色文化", "黔北"],
"十二背后": ["十二背后", "石龙洞", "酷玩森林", "罗秧河", "莲花古洞", "溶洞"],
"黔东南": ["黔东南", "苗绣", "蜡染", "侗族大歌", "长桌宴"],
}
THEMES = [
("独特的风光地貌", "/assets/guizhou/fanjing-mountain.jpg"),
("天然的溶洞探险", "/assets/guizhou/zhijin-cave.jpg"),
("特有的人文体验", "/assets/guizhou/miao-costume.jpg"),
("山野里的咖啡厅", "/assets/guizhou/wanfenglin.jpg"),
]
CTAS = [
("万趣贵州小包团权益", "/assets/guizhou/huangguoshu-waterfall.jpg", "cardBenefits", None),
("咨询贵州定制游服务管家", "/assets/guizhou/xijiang-miao-village.jpg", "campaign", "classic-deal"),
("查看贵州省内目的地", "/assets/guizhou/libo-xiaoqikong.jpg", "destinationPicker", None),
("提交贵州出行需求", "/assets/guizhou/shuichunhe-rafting.jpg", "demand", None),
]
HOTEL_GROUPS = [
{
"title": "经典酒店",
"image": "/assets/guizhou/bailian-hot-spring.jpg",
"description": "城市接驳、景区度假和温泉休整,适合首游贵州的小包团动线。",
},
{
"title": "野奢酒店",
"image": "/assets/guizhou/jianhe-hot-spring.jpg",
"description": "把山地、村寨、星空和温泉留给行程里的慢时刻。",
},
]
VEHICLE_OPTIONS = [
{
"title": "5座舒适用车",
"image": "/assets/guizhou/jiaxiu-tower.jpg",
"description": "适合2-4人家庭或好友小团城市接送、景区穿梭更灵活。",
},
{
"title": "9座精品商务车",
"image": "/assets/guizhou/wanfenglin.jpg",
"description": "适合5-8人同行、亲子或长辈出行留足行李和休息空间。",
},
]
CAMPAIGNS = [
{"slug": "classic-deal", "title": "经典打卡特惠", "start": 0, "end": 8, "coverImage": HERO_SLIDES[0]["image"]},
{"slug": "outdoor-deal", "title": "山野野咖特惠", "start": 8, "end": 16, "coverImage": HERO_SLIDES[1]["image"]},
{"slug": "mixed-route", "title": "人文户外混搭", "start": 16, "end": 24, "coverImage": HERO_SLIDES[2]["image"]},
]