feat: add WonderQ admin backend

Add FastAPI admin/public API service, database setup, Docker deployment files, docs, and tests.
This commit is contained in:
duanshuwen
2026-06-30 13:56:45 +08:00
parent 90496fd300
commit 75f5a5a48b
34 changed files with 2208 additions and 25 deletions

83
app/content.py Normal file
View File

@@ -0,0 +1,83 @@
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),
]
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"]},
]