conversions2

This commit is contained in:
Filipriec
2026-08-23 09:39:18 +02:00
parent 5f2069784d
commit 3a34092e4c
4 changed files with 61 additions and 19 deletions

View File

@@ -15,7 +15,8 @@ enum ExchangeRateDateRule {
enum ExchangeRateSource {
EXCHANGE_RATE_SOURCE_UNSPECIFIED = 0;
EXCHANGE_RATE_SOURCE_ECB = 1;
// The rate source's own published reference rate (ECB's, today).
EXCHANGE_RATE_SOURCE_OFFICIAL = 1;
// A reusable rate from the profile's custom_exchange_rates table.
EXCHANGE_RATE_SOURCE_SAVED_CUSTOM = 2;
// A one-off rate recorded only in this posting's immutable evidence.
@@ -29,8 +30,9 @@ message ExchangeRateSelection {
ExchangeRateSource source = 2;
// Required for SPECIFIC_PUBLICATION_DATE and MANUAL; YYYY-MM-DD.
optional string specific_rate_date = 3;
// Required only for MANUAL. Exact foreign-currency units per EUR.
optional string manual_units_per_eur = 4;
// Required only for MANUAL. Exact foreign-currency units per one unit of
// the rate source's pivot currency (EUR for ECB).
optional string manual_units_per_pivot = 4;
// Required for SPECIFIC_PUBLICATION_DATE and MANUAL.
string reason = 5;
}
@@ -153,7 +155,7 @@ message PreviewEcbConversionResponse {
string determination_method = 5;
string rounding_method = 6;
optional string rate_date = 7;
optional string units_per_eur = 8;
optional string units_per_pivot = 8;
optional int64 rate_observation_id = 9;
optional string observation_hash = 10;
optional string source_payload_hash = 11;
@@ -162,8 +164,8 @@ message PreviewEcbConversionResponse {
optional string source_endpoint = 14;
// Present only when determination_method is custom_rate. rate_date and
// units_per_eur then describe the hand-entered row identified here, and the
// ECB observation fields above are empty.
// units_per_pivot then describe the hand-entered row identified here, and
// the ECB observation fields above are empty.
optional int64 custom_rate_table_definition_id = 15;
optional int64 custom_rate_record_id = 16;
optional int64 custom_rate_row_revision = 17;
@@ -223,7 +225,7 @@ message EcbConversionEvidence {
string determination_method = 8;
string rounding_method = 9;
optional string rate_date = 10;
optional string units_per_eur = 11;
optional string units_per_pivot = 11;
optional int64 rate_observation_id = 12;
optional string observation_hash = 13;
optional string source_payload_hash = 14;
@@ -233,7 +235,7 @@ message EcbConversionEvidence {
string evidence_created_at = 18;
// Present only when determination_method is custom_rate. The hand-entered row
// that supplied rate_date and units_per_eur. The row itself stays editable, so
// that supplied rate_date and units_per_pivot. The row itself stays editable, so
// the figures above are the immutable record of what was actually applied.
optional int64 custom_rate_table_definition_id = 19;
optional int64 custom_rate_record_id = 20;
@@ -253,6 +255,25 @@ message EcbConversionEvidence {
// the original-currency-to-EUR leg's evidence_id, which produced this row's
// original_amount/original_currency (always EUR).
optional int64 derived_from_evidence_id = 26;
// The pivot currency of the rate source that priced this hop (EUR for
// every hop today). A rate-based hop always has this currency on exactly
// one side of original_currency/converted_currency.
string pivot_currency = 27;
// Which rate source's policy governs this hop's profile ("ecb" for every
// hop today). Absent only for already_same_currency, where no policy
// needed to be consulted. This is about which policy applies, not about
// who actually supplied this specific rate -- see observation_source_id
// for that.
optional string policy_source_id = 28;
// Which rate source actually supplied this hop's rate as its own official
// observation. Present only when determination_method is
// official_reference_rate; absent for custom_rate, manual_rate, and
// already_same_currency, since none of those were priced by the policy's
// source itself -- a human entered them.
optional string observation_source_id = 29;
}
message ListEcbConversionEvidenceResponse {