cloudtreasury's People
cloudtreasury's Issues
Реализовать заполнение в отчете в столбца "ISIN"
Реализовать заполнение в отчете в столбце "ISIN" номеров ISIN путем подтягивания их из таблицы по объемам. Данные по ISIN в таблицу по объемам добавлены.
Создать шаблон для формы распоряжения
Пример шаблона - 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
Не происходит расчёт в столбце "Существенность отклонения" отчёта
При заведении данных в столбец отчета «Цена сделки (приобретения ценной бумаги), руб..» не происходит расчет в столбце отчета « Существенность отклонения, %% (не более 10%)» .
Неверный формат поля (true/false вместо ДА/НЕТ)
В столбце отчета «Исходные данные 1-го уровня - Активный рынок, 1-й уровень исходных данных: (ДА/НЕТ)» необходимо чтобы выходил итог ДА/НЕТ, а не true/false.
Разработка справочника тикеров ценных бумаг
Задача:
- В БД 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
Реализовать 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
Доработка Справедливая стоимость
- Меняется поле is_active (true/false) на поле activity: (ACTIVE/LOW_ACTIVE/INACTIVE). Поменять логику формирования значений для полей в отчёте
Неверная дата расчёта в отчёте
Дата отчета проставляется не верно (ячейка В1), должна быть дата сегодняшняя
Создать форму расчёта справедливой стоимости
/pages/fairprice/calculate
Ввод данных
Тикер ценной бумаги и дата оценки (расчёт будет проводиться за [дата] - 45 дней)
POST /api/fairprice/calculations
Отображение результата
Реализация
Для создания формы использовать antd + uniforms-antd:
- Описать схему формы
- Подключить схему в автоформу
Пример:
Схема
{
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/
- Запустить сервис, проверить работу
- Изучить объектную модель https://github.com/ilb/stockvaluation/tree/master/fairpricecalc
Переписать на JS классы
- Написать тесты
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.