mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-03 18:20:21 +03:00
feat(meta-decompile): поддержка HTTPService + починка его компиляции
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
dac265995e
commit
01c45581ef
@@ -4,8 +4,9 @@
|
||||
"type": "HTTPService",
|
||||
"name": "ТоварныйAPI",
|
||||
"rootURL": "api/v1",
|
||||
"reuseSessions": "AutoUse",
|
||||
"reuseSessions": "Use",
|
||||
"sessionMaxAge": 30,
|
||||
"comment": "Публичный API",
|
||||
"urlTemplates": {
|
||||
"Товары": {
|
||||
"template": "/products/{id}",
|
||||
@@ -13,6 +14,13 @@
|
||||
"Получить": "GET",
|
||||
"Обновить": "PUT"
|
||||
}
|
||||
},
|
||||
"rpc": {
|
||||
"template": "/rpc",
|
||||
"comment": "Удалённый вызов",
|
||||
"methods": {
|
||||
"post": { "httpMethod": "POST", "handler": "ВызовЧерезТелоЗапроса", "synonym": "Post" }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+47
-15
@@ -9,9 +9,9 @@
|
||||
<v8:content>ТоварныйAPI</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Comment>Публичный API</Comment>
|
||||
<RootURL>api/v1</RootURL>
|
||||
<ReuseSessions>AutoUse</ReuseSessions>
|
||||
<ReuseSessions>Use</ReuseSessions>
|
||||
<SessionMaxAge>30</SessionMaxAge>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
@@ -24,23 +24,11 @@
|
||||
<v8:content>Товары</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Template>/products/{id}</Template>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Method uuid="UUID-003">
|
||||
<Properties>
|
||||
<Name>Обновить</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Обновить</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<HTTPMethod>PUT</HTTPMethod>
|
||||
<Handler>ТоварыОбновить</Handler>
|
||||
</Properties>
|
||||
</Method>
|
||||
<Method uuid="UUID-004">
|
||||
<Properties>
|
||||
<Name>Получить</Name>
|
||||
<Synonym>
|
||||
@@ -49,10 +37,54 @@
|
||||
<v8:content>Получить</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<HTTPMethod>GET</HTTPMethod>
|
||||
<Handler>ТоварыПолучить</Handler>
|
||||
</Properties>
|
||||
</Method>
|
||||
<Method uuid="UUID-004">
|
||||
<Properties>
|
||||
<Name>Обновить</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Обновить</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<HTTPMethod>PUT</HTTPMethod>
|
||||
<Handler>ТоварыОбновить</Handler>
|
||||
</Properties>
|
||||
</Method>
|
||||
</ChildObjects>
|
||||
</URLTemplate>
|
||||
<URLTemplate uuid="UUID-005">
|
||||
<Properties>
|
||||
<Name>rpc</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>rpc</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment>Удалённый вызов</Comment>
|
||||
<Template>/rpc</Template>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Method uuid="UUID-006">
|
||||
<Properties>
|
||||
<Name>post</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Post</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<HTTPMethod>POST</HTTPMethod>
|
||||
<Handler>ВызовЧерезТелоЗапроса</Handler>
|
||||
</Properties>
|
||||
</Method>
|
||||
</ChildObjects>
|
||||
</URLTemplate>
|
||||
</ChildObjects>
|
||||
|
||||
Reference in New Issue
Block a user