Giter VIP home page Giter VIP logo

cloudtreasury's People

Contributors

chethepavle avatar lianlun1 avatar maximumquiet avatar tyort avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

tyort pivotdude

cloudtreasury's Issues

Создать шаблон для формы распоряжения

Пример шаблона - paymentSchedule.ods
Реализовать шаблон, положить его в https://github.com/ilb/cloudtreasury-templates, в templates/order.xls

В .env добавить apps.cloudtreasurytemplates.ws=путь_в_cloudtreasury-templates

Реализовать usecase для генерации распоряжения, src/reports/usecases/GenerateOrder.mjs, по примеру https://github.com/ilb/cloudtreasury/blob/master/src/usecases/GetDictionaries.mjs. В нём вызывать DocumentRenderer, передавая название шаблона (order), и данные в JSON:

const renderOptions = {
      attachmentName: `Имя итогового файла`,
      format: 'xls',
      formatTemp: 'xls'
    };

    // code - название шаблона, data - данные JSON
    const response = await this.documentRenderer.render(code, data, renderOptions);
    return response;

DocumentRenderer получать через конструктор:

constructor({ documentRenderer }) {
    this.documentRenderer = documentRenderer;
  }

Тестовые данные для шаблона:

{"active": true, "fairPrice": 956.05, "countDays": 30, "countDeals": 3501, "tradingVolume": 2.64, "initialVolume": 326456889, "date": "2019-05-21", "marketData": [{"countDeals": 62, "tradingVolume": 257748521.2, "weightedAverage": 94.546}, {"countDeals": 58, "tradingVolume": 322340098.22, "weightedAverage": 94.7}, {"countDeals": 200, "tradingVolume": 620157678.06, "weightedAverage": 94.738}, {"countDeals": 127, "tradingVolume": 531029279.92, "weightedAverage": 94.837}, {"countDeals": 68, "tradingVolume": 167206236.94, "weightedAverage": 94.931}, {"countDeals": 182, "tradingVolume": 58113084.26, "weightedAverage": 94.883}, {"countDeals": 1056, "tradingVolume": 25648809.44, "weightedAverage": 94.898}, {"countDeals": 91, "tradingVolume": 9971706.6, "weightedAverage": 94.996}, {"countDeals": 68, "tradingVolume": 458760929.9, "weightedAverage": 94.844}, {"countDeals": 46, "tradingVolume": 2071379.07, "weightedAverage": 94.843}, {"countDeals": 89, "tradingVolume": 4623288.52, "weightedAverage": 94.994}, {"countDeals": 78, "tradingVolume": 301932884.18, "weightedAverage": 94.851}, {"countDeals": 126, "tradingVolume": 1186610720.6, "weightedAverage": 94.81}, {"countDeals": 125, "tradingVolume": 671092941.71, "weightedAverage": 94.597}]}

Реализовать форму для генерации шаблона

По пути /pages/fairprice/export реализовать форму с выбором даты и кнопкой "Сгенерировать отчёт".
Для генерации документа использовать API https://github.com/ilb/cloudtreasury/blob/master/pages/fairprice/calculate.js#L100, в параметры передавать установленную дату.

В use case заменить текущую дату на ту, что будет приходить с фронта https://github.com/ilb/cloudtreasury/blob/master/src/reports/usecases/GetStockValuationsReport.mjs#L8

Разработка справочника тикеров ценных бумаг

Задача:

  • В БД cloudtreasury сделать новую таблицу Stocks. В ней добавить поля: stock_id, ticker, value, isin.
  • Загрузить в таблицу данные из файла https://ilb.github.io/stockvaluation/securities.xhtml
  • В проекте cloudtreasury создать страницу для администрирования. Там слева сделать поле с выпадающим списком тикеров и кнопки: Добавить, Удалить. В этом поле нужен поиск по подстроке. Справа данные по тикеру: Объем выпуска, ISIN, кнопка Сохранить.
  • По нажатию кнопки Добавить, справа появляется дополнительное поле Наименование.
  • По нажатию кнопки Удалить, выводится окно предупреждения с подтверждением удаления.
  • На странице /cloudtreasury/fairprice/calculate заменить поле с наименованием на выпадающий список. Поиск по подстроке.

Ошибки в расчетах

1 . Дата отчета проставляется не верно (ячейка В1), должна быть дата 12.09.2022
2. В отчет не попала бумага ЕАБР 1Р-04. По ней произошел сбой в расчете.
При расчете вышла ошибка (Скрин00), хотя на старом ресурсе https://devel.net.ilb.ru/workflowfront/workList расчет строится правильно (Скрин01)
3. При заведении данных в столбец отчета «Цена сделки (приобретения ценной бумаги), руб..» не происходит расчет в столбце отчета « Существенность отклонения, %% (не более 10%)» .
4. в столбце отчета «Исходные данные 1-го уровня - Активный рынок, 1-й уровень исходных данных: (ДА/НЕТ)» необходимо чтобы выходил итог ДА/НЕТ, а не true/false.
12092022_Определение СС.xls

2022-09-12.xlsx

Реализовать API для вызова калькулятора справедливой цены

Репозиторий калькулятора - https://github.com/ilb/stockvaluation
Клонировать его локально, и настроить путь до исполняемого файла в .env - apps.stockvaluation.ws=/home/user/stockvaluation/fairpricecalc.sh

Реализовать FairPriceService, с методом calculate(ticker, endDate). Внутри этого метода вызывать исполняемый файл stockvaluation и возвращать результат.

Реализовать юзкейс CalculateFairPrice, в котором использовать FairPriceService

Добавить POST /api/fairprice/calculations (/pages/api/fairprice/calculations), в котором доставать входные параметры и вызывать юзкейс CalculateFairPrice

Сбой в расчёте тикеров

В отчет не попала бумага ЕАБР 1Р-04. По ней произошел сбой в расчете.
При расчете вышла ошибка (Скрин00), хотя на старом ресурсе https://devel.net.ilb.ru/workflowfront/workList расчет строится правильно (Скрин01)

Ошибочные тикеты:
ЕАБР 1Р-04
ПочтаРБ1P8

Дата расчёта - 12/09/22

12092022_Определение СС.xls
2022-09-12.xlsx

Создать форму расчёта справедливой стоимости

/pages/fairprice/calculate

Ввод данных

Тикер ценной бумаги и дата оценки (расчёт будет проводиться за [дата] - 45 дней)

telegram-cloud-photo-size-2-5377804916296366743-y

POST /api/fairprice/calculations

Отображение результата

telegram-cloud-photo-size-2-5377804916296366747-y

Реализация

Для создания формы использовать antd + uniforms-antd:

  1. Описать схему формы
  2. Подключить схему в автоформу

Пример:
Схема

{
      type: 'object',
      properties: {
        login: {
          title: 'Номер телефона',
          type: 'number',
          uniforms: {
            format: '+7 (###) ###-##-##',
            decimalScale: 0,
            thousandSeparator: null,
            allowEmptyFormatting: true,
            mask: '_'
          }
        },
        password: { type: 'string', title: 'Пароль', uniforms: { type: 'password' } },
        keepSignedIn: { type: 'boolean', title: 'Запомнить меня' }
      },
      required: ['login', 'password']
    };
  }

Форма

    <Card centered padded>
      <Card.Content>
        <Card.Header>Авторизация</Card.Header>
      </Card.Content>
      <Card.Content>
        <AutoForm
          schema={createSchemaBridge(schema)}
          submitField={SignInButton}
          autoField={CustomAutoField}
          onSubmit={onSubmit}
        />
      </Card.Content>
      <Card.Content>
        <Grid columns={2} textAlign={'center'}>
          <Grid.Column>
            <Link href="/forgot">Забыли пароль?</Link>
          </Grid.Column>
        </Grid>
      </Card.Content>
    </Card>
{"active": true, "fairPrice": 956.05, "countDays": 30, "countDeals": 3501, "tradingVolume": 2.64, "initialVolume": 326456889, "date": "2019-05-21", "marketData": [{"countDeals": 62, "tradingVolume": 257748521.2, "weightedAverage": 94.546}, {"countDeals": 58, "tradingVolume": 322340098.22, "weightedAverage": 94.7}, {"countDeals": 200, "tradingVolume": 620157678.06, "weightedAverage": 94.738}, {"countDeals": 127, "tradingVolume": 531029279.92, "weightedAverage": 94.837}, {"countDeals": 68, "tradingVolume": 167206236.94, "weightedAverage": 94.931}, {"countDeals": 182, "tradingVolume": 58113084.26, "weightedAverage": 94.883}, {"countDeals": 1056, "tradingVolume": 25648809.44, "weightedAverage": 94.898}, {"countDeals": 91, "tradingVolume": 9971706.6, "weightedAverage": 94.996}, {"countDeals": 68, "tradingVolume": 458760929.9, "weightedAverage": 94.844}, {"countDeals": 46, "tradingVolume": 2071379.07, "weightedAverage": 94.843}, {"countDeals": 89, "tradingVolume": 4623288.52, "weightedAverage": 94.994}, {"countDeals": 78, "tradingVolume": 301932884.18, "weightedAverage": 94.851}, {"countDeals": 126, "tradingVolume": 1186610720.6, "weightedAverage": 94.81}, {"countDeals": 125, "tradingVolume": 671092941.71, "weightedAverage": 94.597}]}

Переписать сервис получения информации по тикерам на js

Переписать сервис получения информации по тикерам на js
https://github.com/ilb/stockvaluation/

  1. Запустить сервис, проверить работу
  2. Изучить объектную модель https://github.com/ilb/stockvaluation/tree/master/fairpricecalc
    Переписать на JS классы
  1. Написать тесты

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.