Giter Site home page Giter Site logo

cloudtreasury_old's People

Contributors

chethepavle avatar lianlun1 avatar maximumquiet avatar tyort avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

tyort

cloudtreasury_old's Issues

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

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

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

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

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

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

Задача:

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

Реализовать 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 . Дата отчета проставляется не верно (ячейка В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

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

Пример шаблона - 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

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

/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.