Сервис для определния статьи ДДС в поступлении на расчетный счет, списании с расчетного счета: по виду операции и назначению платежа
[POST] /train - form-data:
file - File - Excel (xlsx) для обучения (например за предыдущий закрытый квартал) с колонкаим:
ВидОперации, НазначениеПлатежа, СтатьяДвиженияДенежныхСредств
model_id - string - текстовый идентификатор модели.
Например ИНН организации, подразделения, год (обычно статьи ДДС утверждаются ежегодно)
[ANSWER] - JSON - с полем message (Model trained successfully)
[POST] /test - form-data:
file - File - Excel (xlsx) для тестирования (например за текущий месяц) с колонкаим:
ВидОперации, НазначениеПлатежа, СтатьяДвиженияДенежныхСредств
model_id - string - текстовый идентификатор модели.
Например ИНН организации, подразделения, год (обычно статьи ДДС утверждаются ежегодно)
[ANSWER] - JSON - с полем accuracy "точность" модели
[POST] /predict - form-data:
model_id - Text - имя обученной ранее модели
operataion - string - вид операции.
Например Оплата от покупателя, Прочее поступление, Оплата поставщику
text - string - назначение платежа
[ANSWER] - JSON - с полем article (подходящий текст из колонки СтатьяДвиженияДенежныхСредств)
[POST] /stringmatch - json:
string_list - string[] - номера договоров, счетов;
более длинные строки имеют бОльший приоритет даже не смотря на полное совпадение меньшего текста
Например "Счет № 02" > "01" в тексте "Оплата по счету 02 от 01.01.2024"
text - string - назначение платежа
[ANSWER] - JSON - с полем prediction (подходящий текст из string_list)
[POST] /comparelists/start - json:
threshold_high - int - верхняя граница - сильно совпадающие, 99
threshold_low - int - верхняя граница - средне совпадающие, 93
contacts - object[] - имена наших контрагентов:
"contacts": [
{"name": "Наименование нашего контрагента"},
{"name": "ООО 'Ромашка'"},
{"name": "ООО 'Тюльпан'"},
{"name": "Рога"} ]
checklist - object[] - список для сверки:
"checklist": [
{"name": "ООО 'Мальчиш-плохиш'"},
{"name": "ПАО 'Сектанты'"} ]
[ANSWER] - JSON - идентификатор задания сравнения 202
{
"task_id": "af24540c-4797-403f-a193-21496bc4f2a2"
}
[GET] /comparelists/status?taskid=af24540c-4797-403f-a193-21496bc4f2a2 - json
если сравнение ещё выполняется, 200
[ANSWER]
{
"status": "in progress",
"task_id": "af24540c-4797-403f-a193-21496bc4f2a2",
"compareresult": null,
}
если сравнение выполнено, 200
[ANSWER]
{
"status": "completed",
"task_id": "af24540c-4797-403f-a193-21496bc4f2a2",
"compareresult": {
"Наименование нашего контрагента": {
"matches_high": [
["Сильно совпадающее наименование плохиша 3", 99],
["Сильно совпадающее наименование плохиша 4", 98]],
"matches_low": [
["Средне совпадающее наименование плохиша 1", 96],
["Средне совпадающее наименование плохиша 2", 95]]
},
}
}
если нет такого задания, 404
[ANSWER]
{
"status": "error"
}
Построить имидж (однократно)
docker build --tag textclassify .
Запустить
docker run --name article -p 5050:5050 textclassify
Сохранить из 1С результат запроса в XLSX за закрытый период (месяц, квартал)
ВЫБРАТЬ
ТабРеквизиты.ВидОперации КАК ВидОперации,
ТабРеквизиты.НазначениеПлатежа КАК НазначениеПлатежа,
ТабРеквизиты.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств
ИЗ Документ.ПоступлениеНаРасчетныйСчет КАК ТабРеквизиты
ГДЕ ТабРеквизиты.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТабРеквизиты.ВидОперации,
ТабРеквизиты.НазначениеПлатежа,
ТабРеквизиты.СтатьяДвиженияДенежныхСредств
ИЗ Документ.СписаниеСРасчетногоСчета КАК ТабРеквизиты
ГДЕ ТабРеквизиты.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
Обучить модель /train
; Использовать и радоваться: /predict
Пример использования onec_example
- выгрузка обработки (файлы в формате 1С) с примером использования.
В обработке используется КоннекторHTTP Владимира Бондаревского.