# Кооперативный генератор документов

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![bundle][bundle-src]][bundle-href]
[![JSDocs][jsdocs-src]][jsdocs-href]
[![License][license-src]][license-href]

## Обзор
Данная библиотека предназначена для кооперативов, которые используют блокчейн EOSIO для хранения шаблонов документов и реализуют систему цифровой подписи на основе EOSIO. Шаблоны документов и соответствующие переводы хранятся в блокчейне, в то время как приватные данные для заполнения шаблонов находятся в закрытом хранилище кооператива. Библиотека позволяет генерировать документы, автоматически заполняя их данными из хранилища и подписывая при помощи приватного ключа.

## Функциональность
Библиотека предоставляет следующие основные возможности:

- Генерация метаданных для документов на основе предопределенных шаблонов.
- Конструирование данных для документов, используя JSON Schema, загружаемую из блокчейна.
- Получение шаблонов документов и переводов из блокчейна.
- Рендеринг документов для создания цифровой версии в формате doc и gdoc.
- Подпись сгенерированных документов с использованием приватных ключей EOSIO.

## Процесс генерации документов
Получение шаблона и схемы из блокчейна: Шаблоны и схемы загружаются из блокчейна. Шаблоны включают в себя как структуру самого документа, так и переводы элементов документа на разные языки.

Конструирование данных: Фабрика шаблонов использует JSON Schema для определения структуры данных, необходимых для каждого шаблона. Приватные данные загружаются из хранилища кооператива и используются для заполнения шаблонов.

Рендеринг шаблона: Используя загруженные данные и шаблон, библиотека рендерит окончательный документ. Этот этап включает подстановку реальных данных пользователя и кооператива в шаблон.

Подпись документа: Сгенерированный документ подписывается с использованием приватного ключа EOSIO.

Верификация документа: При необходимости, сгенерированные и подписанные документы могут быть верифицированы для подтверждения их подлинности.

## Подготовка к использованию
Для начала работы с библиотекой необходимо ознакомиться с требованиями окружения:
- Ваше приложение должно взаимодействовать с блокчейном EOSIO для получения шаблонов и схем.
- У кооператива должно быть настроено приватное хранилище для доступа к личным данным.
- Необходим модуль для работы с JSON Schema, например, json-schema для Node.js.
- Вам потребуется EOSJS для подписи документов.

## Пример использования
Пример реализации фабрики для генерации документа типа joincoop из файла documents/joincoop.ts:

``` javascript
const joinCoopFactory = new JoinCoopTemplateFactory()
joinCoopFactory.getComplexTemplate()
  .then((template) => {
    const options = {
      username: 'user1',
      lang: 'en',
      action: 'joincoop'
    }

    const generator = new GeneratorJSImpl()
    return generator.generate(options)
  })
  .then((document) => {
    // Работа с сгенерированным и подписанным документом
  })
  .catch((error) => {
    console.log(error)
    // Обработка ошибок
  })
```

## Расширение и модификация
Библиотека построена с учетом возможности расширения и модификации. Для добавления новых типов документов реализуйте свои фабрики, соответствующие интерфейсу IDocumentTemplateFactory, и регистрируйте их в главном классе библиотеки.

## Поддержка и вклад
Если у вас есть вопросы, предложения или вы хотите внести вклад в проект, пожалуйста, свяжитесь с технической поддержкой или откройте issue в системе управления проектами.

## Таблица документов
Здесь соберём таблицу имен и шаблонов типизированных документов.

## Лицензия

[MIT](./LICENSE) License © 2024-PRESENT [Alex Ant](https://github.com/dacom-dark-sun)

Версия документации: 1.0.0
