41494bd18f
Adds openfut-adapter-fifa17 fut::store_catalog — a pure, faithful Rust port of the
Python oracle's PACK_CATALOG + _pack_body + store_catalog assembly at production
flag defaults (FUT_STORE_DISPLAYGROUP=1, GROUPID=0, PRICE_PROBE=0):
- PackDef + PACK_CATALOG (ids 1/5/6/7/70; economy numbers are OpenFUT PLACEHOLDER,
wire shape is oracle-verified; 65534 deliberately absent).
- pack_body() (_pack_body port), sentinel_body() (id-65534 compatibility shim),
build_purchasegroup(unopened_ids, StoreMode) mirroring store_catalog(3627).
- Differential parity: fixtures generated from the Python oracle
(tests/fixtures/purchasegroup_{zero_sentinel,zero_clean,pack70}.json); Rust output
matches semantically (6 tests). Adapter 140 tests, host 24, fmt/clippy clean,
Python A-R oracle green.
PURE wire shaping — NOT wired into the live host. Serving purchasegroup from Rust
requires an authoritative Rust owner of unopenedPackIds, which is blocked on the
economy-authority prerequisite (R3): coins are one shared balance written by many
Python-oracle routes (BUY spend, quick-sell credit, SBC/match/objective rewards)
persisted to fut_profile.json, so no single coin-touching route can move without a
whole-cluster migration. No dual-write introduced; no production deployment.
200 lines
4.2 KiB
JSON
200 lines
4.2 KiB
JSON
{
|
|
"purchase": [
|
|
{
|
|
"assetId": 1,
|
|
"currencies": [
|
|
{
|
|
"finalFunds": 400,
|
|
"funds": 400,
|
|
"name": "coins"
|
|
}
|
|
],
|
|
"description": "Bronze Pack",
|
|
"displayGroup": {
|
|
"value": "bronze"
|
|
},
|
|
"extPrice": {
|
|
"finalPrice": {
|
|
"amount": 4,
|
|
"currency": "mtx"
|
|
},
|
|
"originalPrice": {
|
|
"amount": 4,
|
|
"currency": "mtx"
|
|
}
|
|
},
|
|
"id": 1,
|
|
"isPremium": false,
|
|
"limitType": "NONE",
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 5,
|
|
"goldQuantity": 0,
|
|
"itemQuantity": 5,
|
|
"rareQuantity": 0,
|
|
"silverQuantity": 0
|
|
},
|
|
"packType": "BRONZE",
|
|
"purchaseCount": 0,
|
|
"purchaseLimit": 0,
|
|
"quantity": 0,
|
|
"saleType": "promo",
|
|
"sortPriority": 1,
|
|
"state": "active",
|
|
"unopened": false
|
|
},
|
|
{
|
|
"assetId": 5,
|
|
"currencies": [
|
|
{
|
|
"finalFunds": 5000,
|
|
"funds": 5000,
|
|
"name": "coins"
|
|
}
|
|
],
|
|
"description": "Gold Pack",
|
|
"displayGroup": {
|
|
"value": "gold"
|
|
},
|
|
"extPrice": {
|
|
"finalPrice": {
|
|
"amount": 50,
|
|
"currency": "mtx"
|
|
},
|
|
"originalPrice": {
|
|
"amount": 50,
|
|
"currency": "mtx"
|
|
}
|
|
},
|
|
"id": 5,
|
|
"isPremium": false,
|
|
"limitType": "NONE",
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"goldQuantity": 7,
|
|
"itemQuantity": 7,
|
|
"rareQuantity": 7,
|
|
"silverQuantity": 0
|
|
},
|
|
"packType": "GOLD",
|
|
"purchaseCount": 0,
|
|
"purchaseLimit": 0,
|
|
"quantity": 0,
|
|
"saleType": "promo",
|
|
"sortPriority": 2,
|
|
"state": "active",
|
|
"unopened": false
|
|
},
|
|
{
|
|
"assetId": 6,
|
|
"currencies": [
|
|
{
|
|
"finalFunds": 15000,
|
|
"funds": 15000,
|
|
"name": "coins"
|
|
}
|
|
],
|
|
"description": "Premium Gold",
|
|
"displayGroup": {
|
|
"value": "gold"
|
|
},
|
|
"extPrice": {
|
|
"finalPrice": {
|
|
"amount": 150,
|
|
"currency": "mtx"
|
|
},
|
|
"originalPrice": {
|
|
"amount": 150,
|
|
"currency": "mtx"
|
|
}
|
|
},
|
|
"id": 6,
|
|
"isPremium": false,
|
|
"limitType": "NONE",
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"goldQuantity": 11,
|
|
"itemQuantity": 11,
|
|
"rareQuantity": 11,
|
|
"silverQuantity": 0
|
|
},
|
|
"packType": "GOLD",
|
|
"purchaseCount": 0,
|
|
"purchaseLimit": 0,
|
|
"quantity": 0,
|
|
"saleType": "promo",
|
|
"sortPriority": 3,
|
|
"state": "active",
|
|
"unopened": false
|
|
},
|
|
{
|
|
"assetId": 7,
|
|
"currencies": [
|
|
{
|
|
"finalFunds": 25000,
|
|
"funds": 25000,
|
|
"name": "coins"
|
|
}
|
|
],
|
|
"description": "Special Players Pack",
|
|
"displayGroup": {
|
|
"value": "special"
|
|
},
|
|
"extPrice": {
|
|
"finalPrice": {
|
|
"amount": 250,
|
|
"currency": "mtx"
|
|
},
|
|
"originalPrice": {
|
|
"amount": 250,
|
|
"currency": "mtx"
|
|
}
|
|
},
|
|
"id": 7,
|
|
"isPremium": false,
|
|
"limitType": "NONE",
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"goldQuantity": 11,
|
|
"itemQuantity": 11,
|
|
"rareQuantity": 11,
|
|
"silverQuantity": 0
|
|
},
|
|
"packType": "GOLD",
|
|
"purchaseCount": 0,
|
|
"purchaseLimit": 0,
|
|
"quantity": 0,
|
|
"saleType": "promo",
|
|
"sortPriority": 4,
|
|
"state": "active",
|
|
"unopened": false
|
|
},
|
|
{
|
|
"assetId": 65534,
|
|
"description": "",
|
|
"displayGroup": {
|
|
"priority": 1,
|
|
"value": "mypacks"
|
|
},
|
|
"id": 65534,
|
|
"isPremium": false,
|
|
"limitType": "NONE",
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"goldQuantity": 0,
|
|
"itemQuantity": 0,
|
|
"rareQuantity": 0,
|
|
"silverQuantity": 0
|
|
},
|
|
"packType": "GOLD",
|
|
"purchaseCount": 0,
|
|
"purchaseLimit": 0,
|
|
"quantity": 0,
|
|
"saleType": "promo",
|
|
"sortPriority": 1,
|
|
"state": "active",
|
|
"unopened": false
|
|
}
|
|
],
|
|
"timestamp": 1596326400
|
|
}
|