Remove all old unused methods and add new for LK

This commit is contained in:
k.struzhkin 2019-11-21 14:53:57 +03:00
parent b7749988ec
commit a3a0514942
2 changed files with 166 additions and 117 deletions

View File

@ -1,152 +1,167 @@
include "base.thrift" include "base.thrift"
namespace java com.rbkmoney.damsel.analytics namespace java com.rbkmoney.damsel.analytics
namespace erlang analytics
/**
* Сервис для выдачи данных для построения графиков
*
* см. графики
* https://projects.invisionapp.com/share/YKOFERE9NC7#/screens/323916505
**/
typedef map<string, i64> DataPair // колонка + значение колонки, либо имя графика + значение графика в точке
typedef i64 Count
/** /**
* В каком разбиении сервис отдаёт данные. * В каком разбиении сервис отдаёт данные.
**/ **/
enum AggregationType { enum SplitUnit {
HOURLY MINUTE
DAILY HOUR
MONTHLY DAY
YEARLY WEEK
MONTH
YEAR
} }
/** /**
* Структура для описания точки на оси даты на графике PeriodStatistics * Статусы платежей.
**/ **/
struct Moment { enum Status {
1: required base.Year year PENDING
2: required base.Month month PROCESSED
3: required base.DayOfMonth day CAPTURED
4: required i8 hour CANCELLED
REFUNDED
FAILED
} }
/** /**
* Структура для линейных/столбчатых графиков * Параметры фильтрации мерчанта
**/ **/
struct PeriodStatistics { struct MerchantFilter {
1: required AggregationType type
2: required list<MomentData> data
}
/**
* Кусок данных для линейных/столбчатых графиков
**/
struct MomentData {
1: required Moment moment
2: required list<DataPair> data_set
}
/**
* Статистика табличного вида
**/
typedef list<RowStatistics> TableStatistics
/**
* Имя строки и колонки со значениями
**/
struct RowStatistics {
1: required string category
2: required list<DataPair> column_data_set
}
/**
* Статистика сегментного вида (Pie Chart)
**/
typedef list<DataPair> SegmentStatistics
/**
* Предикат по мерчанту и его магазинам
**/
struct PartyPredicate {
1: required string party_id 1: required string party_id
2: optional list<string> party_shops 2: optional string shop_id
} }
/** /**
* Предикат по времени * Параметры фильтрации по времени
**/ **/
struct DatePredicate { struct TimeFilter {
1: required base.Timestamp from_time // граница не включается 1: required base.Timestamp from_time
2: required base.Timestamp to_time // граница включается 2: required base.Timestamp to_time
} }
/** /**
* Предикат по странам или городам платежей * Запрос с разбивкой по периодам
**/ **/
union RegionPredicate { struct FilterRequest {
1: list<string> cities 1: required MerchantFilter merchant_filter
2: list<string> countries 2: required TimeFilter time_filter
} }
/** /**
* Общий предикат для запросов * Запрос с разбивкой по периодам сгруппированый по отрезкам
**/ **/
struct Predicate { struct SplitFilterRequest {
1: required PartyPredicate party_predicate 1: required FilterRequest filter_request
2: required DatePredicate date_predicate 2: required SplitUnit split_unit
3: optional RegionPredicate region_predicate
} }
/** /**
* Список городов или стран * Распределение в процентах для чего-либо
**/ **/
union Regions { struct NamingDistribution {
1: list<string> cities 1: required string name
2: list<string> countries 2: required base.Percent percents
} }
/** Структуры для разные режимов аналитики */ /**
struct StatsRevenuesAndRefunds {} * Список оборотов с группировкой по валютам
struct StatsPaymentTools {} **/
struct StatsUserStatuses {} struct AmountResponse {
struct StatsRevenue {} 1: required list<CurrencyGroupedAmount> groups_amount
struct RegionsTopRegions {}
struct RegionsTopCities {}
struct RegionsTopCountries {}
struct RegionsAllCountries {}
struct RegionsAllCities {}
union RegionsMode {
1: RegionsTopRegions top_regions
2: RegionsTopCities top_cities
3: RegionsTopCountries top_countries
4: RegionsAllCountries all_countries
5: RegionsAllCities all_cities
} }
union PeriodStatisticsMode { /**
1: StatsRevenuesAndRefunds revenues_and_refunds // график "Оборот и Возвраты" (см. шапку трифта) * Результат запроса распределения ошибок
//any name of new analytics **/
struct ErrorDistributionsResponse {
1: required list<NamingDistribution> error_distributions
} }
union SegmentStatisticsMode { /**
1: StatsPaymentTools payment_tools // график "Иструменты платежей" (см. шапку трифта) * Сгруппированное по валюте значение оборота
//any name of new analytics **/
struct CurrencyGroupedAmount {
1: required base.Amount amount
2: required base.CurrencySymbolicCode currency
} }
union TableStatisticsMode { /**
1: StatsUserStatuses users_statuses // график "Статусы по пользователям" (см. шапку трифта) * Результат запроса колличества сгруппированных по валютам
//any name of new analytics **/
struct CountResponse {
1: required list<CurrecyGroupCount> groups_count
} }
union SimpleCountMode { /**
1: StatsRevenue revenue // чиселка "Оборот за период" (см. шапку трифта) * Сгруппированное по валюте колличество
//any name of new analytics **/
struct CurrecyGroupCount {
1: required base.Count count
2: required base.CurrencySymbolicCode currency
}
/**
* Результат запроса распределения платежных средств
**/
struct PaymentToolDistributionResponse {
1: required List<NamingDistribution> payment_tools_distributions
}
/**
* Результат запроса оборотов разделенного на временные участки и сгруппированного по валюте
**/
struct SplitAmountResponse {
1: required List<GroupedCurrencyOffsetAmount> grouped_currency_amounts
}
/**
* Результат оборотов сгруппированных по валюте
**/
struct GroupedCurrencyOffsetAmount {
1: required base.CurrencySymbolicCode currency
2: required List<OffsetAmount> offset_amounts
}
/**
* Оборот со смещением в временном интервале
**/
struct OffsetAmount {
1: required base.Amount amount
2: required base.Count offset
}
/**
* Результат запроса колличества платежей разделенного на временные участки и сгруппированного по валюте и статусам
**/
struct SplitCountResponse {
1: required List<GroupedCurrencyOffsetCount> payment_tools_destrobutions
}
/**
* Колличества платежей сгруппированые по валюте
**/
struct GroupedCurrencyOffsetCount {
1: required base.CurrencySymbolicCode currency
2: required List<GroupedStatusOffsetCount> offset_amounts
}
/**
* Колличества платежей сгруппированые по статусам
**/
struct GroupedStatusOffsetCount {
1: required Status status
2: required list<OffsetCount> offsetCounts
}
/**
* Колличество платежей со смещением в временном интервале
**/
struct OffsetCount {
1: required base.Count count
2: required base.Count offset
} }
/** /**
@ -155,27 +170,43 @@ union SimpleCountMode {
service AnalyticsService { service AnalyticsService {
/** /**
* Получение данных для линейных/столбчатых графиков * Получение распределения использования платежных инструментов для ЛК.
**/ **/
PeriodStatistics GetPeriodStatistics(1: PeriodStatisticsMode mode, 2: Predicate predicate) // [ {момент времени + [{Название сегмента + цифра}...]} ... ] PaymentToolDistributionResponse GetPaymentsToolDistribution(1: FilterRequest request)
/** /**
* Получение данных для графика по сегментам (Pie Chart) * Получение списка оборотов с группировкой по валютам для ЛК.
**/ **/
SegmentStatistics GetSegmentStatistics(1: SegmentStatisticsMode mode, 2: Predicate predicate) // [ {Название сегмента + цифра} ... ] AmountResponse GetPaymentsAmount(1: FilterRequest request)
/** /**
* Получение данных для таблицы * Получение среднего размера платежа с группировкой по валютам для ЛК.
**/ **/
TableStatistics GetTableStatistics(1: TableStatisticsMode mode, 2: Predicate predicate) // [ {Название сегмента + [{Название сегмента + цифра}]} ...] AmountResponse GetAveragePayment(1: FilterRequest request)
/** /**
* Получение числа по предикату * Получение колличества платежей с группировкой по валютам для ЛК.
**/ **/
Count GetSimpleCount(1: SimpleCountMode mode, 2: Predicate predicate) // num CountResponse GetPaymentsCount(1: FilterRequest request)
/** /**
* Получение регионов (стран или городов) для ЛК. * Получение распределения ошибок для ЛК.
**/ **/
Regions GetRegions(1: RegionsMode mode, 2: Predicate predicate) ErrorDistributionsResponse GetPaymentsErrorDistribution(1: FilterRequest request)
/**
* Получение списка оборотов с группировкой по валютам и разделенные по временным интервалам для ЛК.
**/
SplitAmountResponse GetPaymentsSplitAmount(1: SplitFilterRequest request)
/**
* Получение колличества платежей с группировкой по валютам и статусам, разделенные по временным интервалам для ЛК.
**/
SplitCountResponse GetPaymentsSplitCount(1: SplitFilterRequest request)
/**
* Получение списка возвратов с группировкой по валютам для ЛК.
**/
AmountResponse GetRefundsAmount(1: FilterRequest request)
} }

18
proto/base.thrift Normal file
View File

@ -0,0 +1,18 @@
namespace java com.rbkmoney.damsel.analytics
/**
* Отметка во времени согласно RFC 3339.
*
* Строка должна содержать дату и время в UTC в следующем формате:
* `2016-03-22T06:12:27Z`.
*/
typedef string Timestamp
/** Символьный код, уникально идентифицирующий валюту. */
typedef string CurrencySymbolicCode
typedef i64 Count
typedef i64 Amount
typedef i64 Percent