https://github.com/webpractik/schema
https://github.com/webpractik/schema
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/webpractik/schema
- Owner: webpractik
- Created: 2020-10-20T14:20:23.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-11-19T08:49:00.000Z (over 5 years ago)
- Last Synced: 2025-03-16T06:44:19.194Z (about 1 year ago)
- Language: JavaScript
- Size: 242 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Upgreat Readable Schema
Схема обмена данных в рамках конкурса [Прочтение](https://ai.upgreat.one/).
- Работа с типом
- Валидация
## Работа с типом
```ts
const schema = Schema.fromJson(jsonDoc);
```
При попытке создалть экземпляр, в случае если json не соответствует схеме, вызовется throw new Exception.
## Пример работы валидации
```ts
async function example() {
// создаем объект Schema
const schema = Schema.fromJson(jsonDoc);
// Скачиваем каталог ошибок
const errMap = await ErrorMapFactory.createErrorMap();
// Создаем экземпляр валидатора
const validator = new Validator();
validator.setErrorsMap(errMap);
// Можем добавлять валидации, в данном случае можно добавить проверку на оригальность текста
// используя внутренний источник данных
const textCheck = new CheckOriginalText((publicId, text) => {
return true;
});
// Изменить стандартное сообщение
textCheck.setErrMessage('new error message');
validator.addChecker(textCheck);
// Получаем результат валидации
const resultValidation = validator.validate(schema);
console.log(
'resultValidation',
resultValidation.status,
resultValidation.errors,
);
}
```
## Перечень проверок
Для проверки логики разметки Validator использует ряд проверок:
- CheckEmptyFieldType - Отсутствуют фрагменты с пустыми типами ошибок "type"
- CheckErrorTypeCorrection - У фрагмента ИСП всегда заполнено поле исправление "correction"
- CheckRangeMarkup - Попадение цифр диапазона разметок (начало и конец) в длину текста.
- CheckStartCoordinates - "endSelection" больше чем "startSelection"
- CheckErrorTypes - Соответствие размеченных типов ошибок предмету
- CheckSubTypes - Соответствие подтипов типам.
- CheckFullTextErrorsCoordinates - Общие ошибки всегда имеют нулевые "startSelection", "endSelection"
- CheckEqualityCoordinates - "startSelection" и "endSelection" не равны
- CheckUniqueTag - Отсутствует ситуации с уникальным значением поля "tag" в рамках одного файла.
- CheckOriginalText - проверка на совпадения текста. Присланный текст в json должен совпадать с оригинальным (страхуемся на случай что присланный originalText не был изменен). Для работы ошибки необходимо зарегистрировать callback который берет текст по умолчанию.
Все проверки кроме CheckOriginalText запускаются по умолчанию.