Go to file
Roman Pushkov ebdd7e9a25
FF-218: p2p transfer via thrift (#301)
* update wapi access backend

* add p2p transfer service

* add p2p transfer dummy

* update test data

* fix typo

* add p2p transfer thrift handling

* add p2p transfer thrift test

* minor fix

* copy error handling

* add fixme

* type fixes

* macro refactor

* rename p2p transfer module, update errors

* update handler

* type fixes

* update dummy date

* add p2p transfer tests

* DRY

* update marshalling

* remove redundant test permissions

* rename errors

* update tests

* fix quote type

* add quote tests to p2p transfer

* add token errors to thrift handler

* add p2p transfer quote handling

* fix p2p transfer marshalling bug

* import do/unwrap

* add quote to test

* fix merge

* fix contract not found bug

* fix thrift test

* refactor p2p transfer backend

* fix whitespace

* add p2p quote dummy data

* update create p2p transfer tests, add quote test

* add p2p quote handler

* update p2p quote

* add p2p quote to backend

* use thrift in wapi p2p quote

* rework tests to use thrift quote

* rework ff backend to use thrift quote

* rework p2p transfer to use thrift quote

* fix codec

* minor fixes

* update ct payment system
2020-10-06 11:43:28 +03:00
apps FF-218: p2p transfer via thrift (#301) 2020-10-06 11:43:28 +03:00
build-utils@2c4c2289ad +update build-utils 2020-09-09 20:20:56 +03:00
config MSPF-567: update bender client lib (#280) 2020-08-18 18:37:11 +03:00
schemes FF-206: List Identities/Destinations handles (#287) 2020-09-03 18:30:09 +03:00
test Update woody to rbkmoney/woody_erlang@b563bbb (#266) 2020-07-28 18:52:05 +03:00
.gitignore ignore tags 2019-09-13 12:46:23 +03:00
.gitmodules HG-392: check limits for wallet and withdrawal (#25) 2018-10-30 17:30:42 +03:00
docker-compose.sh MSPF-567: update bender client lib (#280) 2020-08-18 18:37:11 +03:00
Dockerfile.sh Nail wapi app here for a while 2018-07-06 16:49:30 +03:00
elvis.config FF-108: Webhooks (#100) 2019-08-12 13:58:18 +03:00
Jenkinsfile Disable parallel CI steps running (#259) 2020-07-17 11:06:59 +03:00
LICENSE Let's make it opensource 2019-09-20 00:03:57 +03:00
Makefile FF-172: Screen for pans in destination using swagger_validator callback (#206) 2020-04-14 12:07:24 +03:00
README.md Handle transfers through noion of accounts (yeah, again) (#9) 2018-07-16 17:21:17 +03:00
rebar.config DC-127: Refactor Payment Methods (#248) 2020-08-04 22:53:18 +03:00
rebar.lock MG-183: Modernizer support (#311) 2020-09-25 18:52:51 +03:00

Fistful

Wallet Processing Service

Development plan

Бизнес-функционал

  • Минимальный тестсьют для кошельков
  • Реализовать честный identity challenge
  • Запилить payment provider interface
  • Запилить контактные данные личности
  • Запилить нормально трансферы
  • Заворачивать изменения в единственный ивент в рамках операции
  • [.] Компактизировать состояние сессий
  • Запилить контроль лимитов по кошелькам
  • Запилить авторизацию по активной идентификации
  • Запилить отмену identity challenge
  • Запускать выводы через оплату инвойса провайдеру выводов
  • Обслуживать выводы по факту оплаты инвойса

Корректность

Удобство поддержки

  • Добавить служебные лимиты в рамках одного party
  • Добавить ручную прополку для всех асинхронных процессов
  • Вынести ff_withdraw в отдельный сервис
  • Разделить development, release и test зависимости
  • Вынести части ff_core в genlib

Поддержка checkout

Каждая машина, на которую мы можем сослаться в рамках асинхронной операции, должно в идеале давать возможность зафиксировать версию своего состояния посредством некой ревизии. Получение состояния по ревизии осуществляется с помощью вызова операции checkout. В тривиальном случае ревизия может быть выражена меткой времени, в идеале номером ревизии.

Коммуналка

Сервис должен давать возможность работать нескольким клиентам, которые возможно не знают ничего друг о друге кроме того, что у них разные tenant id. В идеале tenant должен иметь возможность давать знать о себе динамически, в рантайме, однако это довольно трудоёмкая задача. Если приводить аналогию с Riak KV, клиенты к нему могут: создать новый bucket type с необходимыми характеристиками, создать новый bucket с требуемыми параметрами N/R/W и так далее.

Дегидратация

В итоге как будто бы не самая здравая идея. Есть ощущение, что проще и дешевле хранить и оперировать идентификаторами, и разыменовывать их каждый раз по необходимости.

Служебные лимиты

Нужно уметь ограничивать максимальное ожидаемое количество тех или иных объектов, превышение которого может негативно влиять на качество обслуживания системы. Например, мы можем считать количество выводов одним участником неограниченным, однако при этом неограниченное количество созданных личностей мы совершенно не ожидаем. В этом случае возможно будет разумно ограничить их количество сверху труднодостижимой для подавляющего большинства планкой, например, в 1000 объектов. В идеале подобное должно быть точечно конфигурируемым.