Initial travel knowledge graph release

This commit is contained in:
2026-06-09 09:56:26 +08:00
commit 5f061295d8
402 changed files with 103877 additions and 0 deletions

View File

@@ -0,0 +1,498 @@
{
"namespace": "travel_agency_itinerary_planning",
"version": "0.3",
"display_name": "旅行社行程规划知识图谱 Schema",
"purpose": "支持客服基于游客动态需求,快速从产品、景点、酒店、餐厅、交通、报价、规则和话术中组合行程单。",
"entity_types": {
"TravelDemand": {
"cn": "游客动态需求",
"purpose": "承接客服从自然语言里识别出的出行意向,是后续自动组合行程的输入对象。",
"fields": [
"demand_id",
"lead_source",
"travel_month",
"start_date",
"duration_days",
"party_size",
"adult_count",
"child_count",
"senior_count",
"hotel_preference",
"vehicle_preference",
"budget_level",
"must_visit",
"avoid_notes",
"special_care",
"demand_summary"
]
},
"ItineraryPlan": {
"cn": "推荐行程方案",
"purpose": "由图谱中的产品、报价、酒店、餐厅、交通组合出的可交付行程方案。",
"fields": [
"plan_id",
"plan_name",
"duration_days",
"fit_score",
"budget_estimate",
"route_summary",
"quote_summary",
"risk_notes",
"answer_hint"
]
},
"TourProduct": {
"cn": "旅游产品",
"purpose": "旅行社已经沉淀的线路产品,是行程组合的主要模块。",
"fields": [
"product_id",
"name",
"product_family",
"product_type",
"duration_days",
"group_mode",
"capacity_min",
"capacity_max",
"vehicle_layout",
"hotel_grade",
"meal_standard",
"service_promise",
"selling_points",
"included_summary",
"excluded_summary",
"optional_items",
"fee_summary",
"booking_notes",
"risk_notes",
"season_tags",
"source_files"
]
},
"TourVariant": {
"cn": "产品报价变体",
"purpose": "同一产品在不同团期、房型、人数和车型下的报价。",
"fields": [
"variant_id",
"variant_name",
"season",
"date_range",
"group_size_band",
"room_type",
"hotel_grade",
"vehicle_type",
"adult_price",
"child_price",
"single_room_supplement",
"inner_transport_fee",
"refund_policy",
"source_file"
]
},
"ItineraryDay": {
"cn": "每日行程",
"purpose": "拆解产品每天游览、交通、用餐、住宿,便于后续按需求重排。",
"fields": [
"day_id",
"day_index",
"title",
"route_path",
"route_summary",
"transport_summary",
"meals",
"accommodation",
"time_arrangement",
"tips",
"source_file"
]
},
"ScenicAttraction": {
"cn": "旅游景点",
"purpose": "客户需求和线路推荐最常见的锚点。",
"fields": [
"attraction_id",
"name",
"aliases",
"city",
"attraction_type",
"selling_points",
"ticket_policy",
"inner_transport_fee",
"walking_profile",
"visit_duration_hint"
]
},
"HotelResource": {
"cn": "酒店资源",
"purpose": "客服按酒店等级、区域、产品适用性组合住宿。",
"fields": [
"hotel_id",
"name",
"hotel_grade",
"region",
"address",
"features",
"off_season_price_text",
"peak_season_price_text",
"applicable_products",
"contact_name"
]
},
"RestaurantResource": {
"cn": "餐厅资源",
"purpose": "客服按区域、餐标、特色餐给行程补餐饮方案。",
"fields": [
"restaurant_id",
"name",
"region",
"address",
"per_capita_price_text",
"signature_dishes",
"meal_scene",
"contact_name"
]
},
"VehicleService": {
"cn": "车辆服务",
"purpose": "小团、接送、独立成团的交通能力。",
"fields": [
"vehicle_service_id",
"vehicle_type",
"seat_count",
"comfort_level",
"seat_layout",
"service_scope",
"notes"
]
},
"TransferQuote": {
"cn": "接送报价",
"purpose": "补充到达/离开日接送预算。",
"fields": [
"transfer_quote_id",
"origin_text",
"destination_text",
"vehicle_type",
"price_per_trip",
"quote_unit",
"quote_notes"
]
},
"DayVisit": {
"cn": "每日景点游览安排",
"purpose": "把某一天去哪个景点、游览多久、是否真实行程点、步行/排队风险和费用证据拆开,避免把自费说明误当成路线。",
"fields": [
"visit_id",
"day_index",
"visit_order",
"attraction_name",
"duration_text",
"evidence_text",
"fee_notes",
"walking_notes",
"walk_intensity",
"risk_notes",
"included_flag",
"source_file"
]
},
"MealArrangement": {
"cn": "每日用餐安排",
"purpose": "记录每天早中晚是否包含、餐标、特色餐和自理说明,避免 6 天行程只显示两家餐厅造成误解。",
"fields": [
"meal_id",
"day_index",
"breakfast",
"lunch",
"dinner",
"meal_text",
"meal_standard",
"special_meal",
"self_pay_notes",
"source_file"
]
},
"AccommodationOption": {
"cn": "住宿组选项",
"purpose": "承载产品中的住宿城市、等级、参考酒店组和同级替换规则;和酒店资源库中的单体酒店可以继续关联。",
"fields": [
"accommodation_id",
"city_or_area",
"hotel_grade",
"option_type",
"reference_hotels",
"stay_nights",
"notes",
"source_file"
]
},
"TransportSegment": {
"cn": "行程交通段",
"purpose": "记录每天从哪到哪、用什么车、车程和调度提醒,支持后续核算车费和判断赶路强度。",
"fields": [
"segment_id",
"day_index",
"origin_text",
"destination_text",
"vehicle_type",
"duration_text",
"distance_text",
"dispatch_notes",
"source_file"
]
},
"FeeItem": {
"cn": "费用项目",
"purpose": "把门票、小交通、保险、扶梯、餐标、赔付、退改损失等费用拆成可追溯证据。",
"fields": [
"fee_item_id",
"fee_type",
"item_name",
"amount_text",
"amount_value",
"unit",
"inclusion_status",
"applies_to",
"rule_text",
"source_file"
]
},
"GiftService": {
"cn": "赠送/包含服务",
"purpose": "记录长桌宴、旅拍券、矿泉水、打糍粑等赠送或服务承诺,并保留未使用不退等规则。",
"fields": [
"service_id",
"service_type",
"name",
"value_text",
"usage_rule",
"refundable",
"source_file"
]
},
"PolicyRule": {
"cn": "业务规则",
"purpose": "限制、退费、风险和合规提醒。",
"fields": [
"rule_id",
"rule_type",
"applies_to",
"rule_text",
"evidence_text",
"severity",
"source_file"
]
},
"SalesScript": {
"cn": "销售话术",
"purpose": "客服回复、追单、留资和解释费用包含。",
"fields": [
"script_id",
"channel",
"funnel_stage",
"trigger_scenario",
"message_template",
"intent_tags",
"required_customer_fields"
]
},
"Area": {
"cn": "区域",
"purpose": "连接酒店、餐厅、接送报价和景点。",
"fields": [
"area_id",
"name",
"area_type"
]
},
"SalesChannel": {
"cn": "销售渠道",
"purpose": "小红书、微信等线索来源。",
"fields": [
"channel_id",
"name",
"channel_type"
]
}
},
"relation_types": {
"HAS_DEMAND": [
"CustomerLead|SalesChannel",
"TravelDemand",
"线索产生游客需求"
],
"WANTS_TO_VISIT": [
"TravelDemand",
"ScenicAttraction",
"需求指定想去景点"
],
"PREFERS_HOTEL": [
"TravelDemand",
"HotelResource",
"需求偏好酒店资源或等级"
],
"PREFERS_VEHICLE": [
"TravelDemand",
"VehicleService",
"需求偏好车型"
],
"GENERATES_PLAN": [
"TravelDemand",
"ItineraryPlan",
"需求生成推荐方案"
],
"SATISFIES_DEMAND": [
"ItineraryPlan",
"TravelDemand",
"方案满足需求"
],
"PLAN_USES_PRODUCT": [
"ItineraryPlan",
"TourProduct",
"方案使用已有产品"
],
"PLAN_USES_VARIANT": [
"ItineraryPlan",
"TourVariant",
"方案使用报价变体"
],
"PLAN_HAS_DAY": [
"ItineraryPlan",
"ItineraryDay",
"方案包含每日行程"
],
"PLAN_STAYS_AT": [
"ItineraryPlan",
"HotelResource",
"方案建议入住酒店"
],
"PLAN_MEALS_AT": [
"ItineraryPlan",
"RestaurantResource",
"方案建议餐厅"
],
"PLAN_USES_VEHICLE": [
"ItineraryPlan",
"VehicleService",
"方案建议车辆"
],
"HAS_VARIANT": [
"TourProduct",
"TourVariant",
"产品拥有报价变体"
],
"HAS_DAY": [
"TourProduct",
"ItineraryDay",
"产品包含每日行程"
],
"VISITS": [
"TourProduct|ItineraryDay",
"ScenicAttraction",
"游览景点"
],
"DAY_HAS_VISIT": [
"ItineraryDay",
"DayVisit",
"每日行程包含具体游览安排"
],
"VISIT_AT_ATTRACTION": [
"DayVisit",
"ScenicAttraction",
"游览安排对应景点"
],
"DAY_HAS_MEAL": [
"ItineraryDay",
"MealArrangement",
"每日行程包含用餐安排"
],
"DAY_HAS_ACCOMMODATION": [
"ItineraryDay",
"AccommodationOption",
"每日行程包含住宿安排"
],
"DAY_USES_TRANSPORT": [
"ItineraryDay",
"TransportSegment",
"每日行程包含交通段"
],
"PRODUCT_HAS_ACCOMMODATION_OPTION": [
"TourProduct",
"AccommodationOption",
"产品可用住宿组选项"
],
"PRODUCT_HAS_FEE": [
"TourProduct|ItineraryDay|DayVisit",
"FeeItem",
"产品或每日行程涉及费用项目"
],
"DAY_HAS_FEE": [
"ItineraryDay|DayVisit",
"FeeItem",
"每日行程涉及费用项目"
],
"PRODUCT_INCLUDES_SERVICE": [
"TourProduct",
"GiftService",
"产品包含或赠送服务"
],
"STAYS_AT": [
"ItineraryDay",
"HotelResource",
"每日行程入住酒店"
],
"MEALS_AT": [
"ItineraryDay",
"RestaurantResource",
"每日行程用餐"
],
"USES_VEHICLE": [
"TourProduct|TourVariant|TransferQuote",
"VehicleService",
"使用车辆"
],
"CAN_UPGRADE_TO": [
"VehicleService",
"VehicleService",
"车辆可升级"
],
"HAS_POLICY": [
"TourProduct|TourVariant|TravelDemand",
"PolicyRule",
"适用规则"
],
"HAS_SCRIPT": [
"TourProduct|TravelDemand",
"SalesScript",
"适用话术"
],
"FROM_SOURCE": [
"TravelDemand|SalesScript",
"SalesChannel",
"来自渠道"
],
"LOCATED_IN": [
"ScenicAttraction|HotelResource|RestaurantResource",
"Area",
"位于区域"
],
"FROM_AREA": [
"TransferQuote",
"Area",
"接送出发区域"
],
"TO_AREA": [
"TransferQuote",
"Area",
"接送到达区域"
]
},
"quality_rules": [
"报价、人数、日期、景区小交通、自费项必须进入属性,不升级成无证据关系。",
"产品 VISITS 只允许来自简易行程/详细行程的真实游览日程;费用、自理、政策段落中出现的景点只能进入 FeeItem 或 PolicyRule。",
"每日行程必须尽量拆出 DayVisit、MealArrangement、AccommodationOption、TransportSegment 和 FeeItem以便客服解释住哪、吃什么、怎么走、费用看哪里。",
"产品与推荐方案分离TourProduct 保存已有资料库ItineraryPlan 保存按用户需求组合后的方案。",
"TravelDemand 是后期自然语言客资抽取的核心输入,必须连接 must_visit、vehicle/hotel preference 和生成方案。",
"同一产品不同房型、团期、车型必须拆成 TourVariant避免报价覆盖。",
"城市图谱与旅行社图谱使用不同 project_id 和 graph_name不共享默认查询上下文。"
]
}