feat: ship deterministic parser and lifecycle release
This commit is contained in:
@@ -280,6 +280,37 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"action": { "const": "confirmation_export" },
|
||||
"data": {
|
||||
"properties": {
|
||||
"existing_refs": {
|
||||
"properties": { "kind": { "const": "shared_plan" } },
|
||||
"required": ["kind"]
|
||||
}
|
||||
},
|
||||
"required": ["existing_refs"]
|
||||
}
|
||||
},
|
||||
"required": ["action", "data"]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"data": {
|
||||
"required": ["confirmation"],
|
||||
"not": { "required": ["export_types"] },
|
||||
"properties": {
|
||||
"confirmation": {
|
||||
"required": ["type"],
|
||||
"properties": { "type": { "const": "visitor-list" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"$defs": {
|
||||
@@ -397,6 +428,16 @@
|
||||
"DBL": { "type": "integer", "minimum": 1 }
|
||||
}
|
||||
},
|
||||
"passengerLeaderContact": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["sequence", "name", "phone"],
|
||||
"properties": {
|
||||
"sequence": { "type": "integer", "minimum": 1, "maximum": 5000 },
|
||||
"name": { "type": "string", "minLength": 1, "maxLength": 200 },
|
||||
"phone": { "type": "string", "minLength": 1, "maxLength": 200 }
|
||||
}
|
||||
},
|
||||
"passengerList": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@@ -405,7 +446,8 @@
|
||||
"operation": { "enum": ["import", "full_replace"] },
|
||||
"confirmed": { "type": "boolean" },
|
||||
"row_count": { "type": "integer", "minimum": 1, "description": "用户本次提供的游客行数,不代表订单总人数。" },
|
||||
"text": { "type": "string", "minLength": 1, "description": "一个或多个完整 13 列游客行;序号用于定位对应游客位。" }
|
||||
"text": { "type": "string", "minLength": 1, "description": "一个或多个完整 13 列游客行;序号用于定位对应游客位。" },
|
||||
"leader_contact": { "$ref": "#/$defs/passengerLeaderContact" }
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"$id": "https://local.lwltapi/schemas/standard_system_operation.schema.json",
|
||||
"title": "Standard LTJT System Operation",
|
||||
"description": "Deterministic LTJT core-lifecycle operation contract. It accepts a complete set of recognized user-visible update fields; live ERP execution remains capability-tiered and only the browser adapter's verified subset may be written automatically.",
|
||||
"$comment": "ltjt-lifecycle-v2.8-updating-wide-parse-2026-08: Agent input preserves all recognized business update targets. Ordinary lifecycle execution still requires ERP-enriched exact references; unvalidated update targets are retained for manual review and must not be written automatically.",
|
||||
"$comment": "ltjt-lifecycle-v2.9-roster-leader-contact-2026-08: passenger_list.leader_contact may only mirror the unique canonical passenger row whose trimmed remark is exactly 领队. Ordinary lifecycle execution still requires ERP-enriched exact references; unvalidated update targets are retained for manual review and must not be written automatically.",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["action", "order_nature", "submit_mode", "data"],
|
||||
@@ -825,7 +825,7 @@
|
||||
"properties": {
|
||||
"existing_refs": {
|
||||
"required": ["kind"],
|
||||
"properties": { "kind": { "enum": ["independent_order", "shared_child_order"] } }
|
||||
"properties": { "kind": { "enum": ["independent_order", "shared_plan", "shared_child_order"] } }
|
||||
},
|
||||
"confirmation": {
|
||||
"not": { "required": ["format"] }
|
||||
@@ -906,6 +906,60 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"action": { "const": "confirmation_export" },
|
||||
"data": {
|
||||
"properties": {
|
||||
"existing_refs": {
|
||||
"properties": { "kind": { "const": "shared_plan" } },
|
||||
"required": ["kind"]
|
||||
}
|
||||
},
|
||||
"required": ["existing_refs"]
|
||||
}
|
||||
},
|
||||
"required": ["action", "data"]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"data": {
|
||||
"required": ["confirmation"],
|
||||
"not": { "required": ["export_types"] },
|
||||
"properties": {
|
||||
"confirmation": {
|
||||
"required": ["type"],
|
||||
"properties": { "type": { "const": "visitor-list" } }
|
||||
},
|
||||
"existing_refs": {
|
||||
"required": ["tid"],
|
||||
"allOf": [
|
||||
{
|
||||
"anyOf": [
|
||||
{ "required": ["identifier"] },
|
||||
{ "required": ["parent_group_no"] },
|
||||
{ "required": ["parent_plan_no"] },
|
||||
{ "required": ["plan_no"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"anyOf": [
|
||||
{ "required": ["ddid"] },
|
||||
{ "required": ["child_did"] },
|
||||
{ "required": ["ltjt_ddid"] },
|
||||
{ "required": ["ltjt_child_id"] }
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"$defs": {
|
||||
@@ -1268,6 +1322,16 @@
|
||||
"text": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"passengerLeaderContact": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["sequence", "name", "phone"],
|
||||
"properties": {
|
||||
"sequence": { "type": "integer", "minimum": 1, "maximum": 5000 },
|
||||
"name": { "type": "string", "minLength": 1, "maxLength": 200 },
|
||||
"phone": { "type": "string", "minLength": 1, "maxLength": 200 }
|
||||
}
|
||||
},
|
||||
"passengerList": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@@ -1298,6 +1362,7 @@
|
||||
"items": { "type": "object" }
|
||||
},
|
||||
"text": { "type": "string", "description": "Explicit synthetic import text; the adapter never reads an unreferenced real file implicitly." },
|
||||
"leader_contact": { "$ref": "#/$defs/passengerLeaderContact" },
|
||||
"file_count": { "type": "integer", "minimum": 0 },
|
||||
"file_refs": {
|
||||
"type": "array",
|
||||
|
||||
Reference in New Issue
Block a user