mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-03 18:20:21 +03:00
meta-decompile не знал тип HTTPService, поэтому 7 сервисов УТ не проходили
раундтрип вовсе. Добавлен разбор: rootURL, reuseSessions, sessionMaxAge и
дерево urlTemplates -> methods.
Раундтрип на реальных сервисах вскрыл три пробела компилятора:
1. ReuseSessions: в allowlist были только DontUse и AutoUse, а платформа
пишет ещё и Use (4 объекта в корпусе) — компиляция падала с ошибкой.
2. Обработчик метода выводился по формуле ИмяШаблона+ИмяМетода; в реальных
конфигурациях он произвольный (УдаленныйВызовМетодаЧерезТелоЗапроса).
Метод получил объектную форму {httpMethod, handler, synonym, comment}
рядом со строчным сокращением "только HTTP-метод".
3. Comment не эмитился ни у объекта, ни у шаблонов и методов, хотя платформа
пишет тег всегда.
Порядок шаблонов и методов приведён к порядку DSL в обоих портах: PS шёл в
порядке хеш-таблицы, py сортировал — снэпшоты бы разъехались между портами.
В декомпиляторе сравнение синонима с авто-выводом сделано регистрочувствительным
(-ceq): "Post" против "post" считалось совпадением, и синоним терялся.
Проверка: HTTP-сервисы УТ 7/7 без расхождений (было 0 — тип не поддерживался),
сюита 76/76 на обоих портах, 1С-сертификация кейса пройдена.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
32 lines
893 B
JSON
32 lines
893 B
JSON
{
|
||
"name": "HTTP-сервис с шаблонами URL",
|
||
"input": {
|
||
"type": "HTTPService",
|
||
"name": "ТоварныйAPI",
|
||
"rootURL": "api/v1",
|
||
"reuseSessions": "Use",
|
||
"sessionMaxAge": 30,
|
||
"comment": "Публичный API",
|
||
"urlTemplates": {
|
||
"Товары": {
|
||
"template": "/products/{id}",
|
||
"methods": {
|
||
"Получить": "GET",
|
||
"Обновить": "PUT"
|
||
}
|
||
},
|
||
"rpc": {
|
||
"template": "/rpc",
|
||
"comment": "Удалённый вызов",
|
||
"methods": {
|
||
"post": { "httpMethod": "POST", "handler": "ВызовЧерезТелоЗапроса", "synonym": "Post" }
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"validatePath": "HTTPServices/ТоварныйAPI",
|
||
"expect": {
|
||
"files": ["HTTPServices/ТоварныйAPI.xml", "HTTPServices/ТоварныйAPI/Ext/Module.bsl"]
|
||
}
|
||
}
|