solyanka 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- solyanka-0.0.1/.gitignore +14 -0
- solyanka-0.0.1/LICENSE +21 -0
- solyanka-0.0.1/PKG-INFO +101 -0
- solyanka-0.0.1/README.md +67 -0
- solyanka-0.0.1/pyproject.toml +40 -0
- solyanka-0.0.1/solyanka/__init__.py +6 -0
- solyanka-0.0.1/solyanka/transaction_patterns/__init__.py +5 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/README.md +79 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/brazil.yml +231 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/eea.yml +10 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/france.yml +18 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/general.yml +1091 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/georgia.yml +433 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/germany.yml +216 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/hungary.yml +108 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/indonesia.yml +602 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/japan.yml +127 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/latvia.yml +166 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/malaysia.yml +1109 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/oae.yml +53 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/oman.yml +26 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/portugal.yml +386 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/schema.json +237 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/thailand.yml +6825 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/transaction_pattern_creation.md +169 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/turkey.yml +29 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/uae.yml +376 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/uk.yml +67 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/ukraine.yml +13 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/usa.yml +120 -0
- solyanka-0.0.1/solyanka/transaction_patterns/data/vietnam.yml +2439 -0
- solyanka-0.0.1/solyanka/transaction_patterns/service.py +224 -0
solyanka-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) kvokka. All rights reserved.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE
|
solyanka-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: solyanka
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Transaction pattern utilities and dataset for statement generators
|
|
5
|
+
Author-email: Development Team <dev@company.com>
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) kvokka. All rights reserved.
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Python: >=3.11
|
|
29
|
+
Requires-Dist: pyyaml>=6.0
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: jsonschema>=4.23; extra == 'dev'
|
|
32
|
+
Requires-Dist: pytest>=8.2; extra == 'dev'
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
# Solyanka
|
|
36
|
+
|
|
37
|
+
Shared helpers and datasets that power the statement generators and downstream synthetic-data
|
|
38
|
+
pipelines (including LLM fine-tuning sets).
|
|
39
|
+
The first module exported by this repository focuses on transaction patterns: the curated YAML
|
|
40
|
+
files, the schema that keeps them in shape, and a tiny loader to consume them from any
|
|
41
|
+
application (FastAPI, CLI tools, notebooks, etc).
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pip install solyanka
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
For local development (tests + linters):
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install -e ".[dev]"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Usage
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
from solyanka import PatternsService, EEA_COUNTRIES
|
|
59
|
+
|
|
60
|
+
service = PatternsService()
|
|
61
|
+
general = service.load_general_patterns()
|
|
62
|
+
eea = service.load_eea_patterns()
|
|
63
|
+
thailand_specific = service.load_country_patterns("Thailand")
|
|
64
|
+
|
|
65
|
+
# Preferred helper: auto-mix general + (eea) + country overrides
|
|
66
|
+
full_set = service.get_country_patterns("Germany")
|
|
67
|
+
|
|
68
|
+
# Advanced filtering (e.g. validation scripts)
|
|
69
|
+
custom = service.get_patterns(country="Germany", include="general,eea")
|
|
70
|
+
|
|
71
|
+
# API-friendly dicts
|
|
72
|
+
payload = service.get_pattern_dicts(country="Spain")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
If you need to point the loader to different files (e.g. while editing YAML locally),
|
|
76
|
+
either pass `PatternsService(base_dir=Path("./transaction_patterns"))` or set the
|
|
77
|
+
`TRANSACTION_PATTERNS_DIR` environment variable.
|
|
78
|
+
|
|
79
|
+
## Pattern sets
|
|
80
|
+
|
|
81
|
+
- **General** – always included via `load_general_patterns()`.
|
|
82
|
+
- **EEA** – supplement auto-applied for EEA countries via `load_eea_patterns()`.
|
|
83
|
+
- **Country-specific** – call `load_country_patterns("Germany")`; the helper normalizes slugs internally.
|
|
84
|
+
|
|
85
|
+
`get_country_patterns(country)` mixes general + (EEA when applicable) + country-level patterns and accepts empty/None values.
|
|
86
|
+
`get_patterns(country, include)` exposes finer control when tooling needs only certain slices. `include` accepts a comma-separated subset of `{"general", "eea", "country"}`; invalid values raise `ValueError`.
|
|
87
|
+
`get_pattern_dicts(...)` mirrors these parameters but returns normalized dictionaries that are ready for JSON responses.
|
|
88
|
+
|
|
89
|
+
## Development
|
|
90
|
+
|
|
91
|
+
- `pytest` validates every YAML file against `schema.json`.
|
|
92
|
+
- GitHub Actions run tests on push/pull_request and build/publish artifacts when a semver tag is pushed.
|
|
93
|
+
|
|
94
|
+
Contributions should keep the dataset human-friendly: no generated UUIDs in the patterns,
|
|
95
|
+
clear field names, and comments that help reviewers understand why a pattern exists.
|
|
96
|
+
|
|
97
|
+
### Tests
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
poetry run pytest
|
|
101
|
+
```
|
solyanka-0.0.1/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Solyanka
|
|
2
|
+
|
|
3
|
+
Shared helpers and datasets that power the statement generators and downstream synthetic-data
|
|
4
|
+
pipelines (including LLM fine-tuning sets).
|
|
5
|
+
The first module exported by this repository focuses on transaction patterns: the curated YAML
|
|
6
|
+
files, the schema that keeps them in shape, and a tiny loader to consume them from any
|
|
7
|
+
application (FastAPI, CLI tools, notebooks, etc).
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install solyanka
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
For local development (tests + linters):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install -e ".[dev]"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
from solyanka import PatternsService, EEA_COUNTRIES
|
|
25
|
+
|
|
26
|
+
service = PatternsService()
|
|
27
|
+
general = service.load_general_patterns()
|
|
28
|
+
eea = service.load_eea_patterns()
|
|
29
|
+
thailand_specific = service.load_country_patterns("Thailand")
|
|
30
|
+
|
|
31
|
+
# Preferred helper: auto-mix general + (eea) + country overrides
|
|
32
|
+
full_set = service.get_country_patterns("Germany")
|
|
33
|
+
|
|
34
|
+
# Advanced filtering (e.g. validation scripts)
|
|
35
|
+
custom = service.get_patterns(country="Germany", include="general,eea")
|
|
36
|
+
|
|
37
|
+
# API-friendly dicts
|
|
38
|
+
payload = service.get_pattern_dicts(country="Spain")
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If you need to point the loader to different files (e.g. while editing YAML locally),
|
|
42
|
+
either pass `PatternsService(base_dir=Path("./transaction_patterns"))` or set the
|
|
43
|
+
`TRANSACTION_PATTERNS_DIR` environment variable.
|
|
44
|
+
|
|
45
|
+
## Pattern sets
|
|
46
|
+
|
|
47
|
+
- **General** – always included via `load_general_patterns()`.
|
|
48
|
+
- **EEA** – supplement auto-applied for EEA countries via `load_eea_patterns()`.
|
|
49
|
+
- **Country-specific** – call `load_country_patterns("Germany")`; the helper normalizes slugs internally.
|
|
50
|
+
|
|
51
|
+
`get_country_patterns(country)` mixes general + (EEA when applicable) + country-level patterns and accepts empty/None values.
|
|
52
|
+
`get_patterns(country, include)` exposes finer control when tooling needs only certain slices. `include` accepts a comma-separated subset of `{"general", "eea", "country"}`; invalid values raise `ValueError`.
|
|
53
|
+
`get_pattern_dicts(...)` mirrors these parameters but returns normalized dictionaries that are ready for JSON responses.
|
|
54
|
+
|
|
55
|
+
## Development
|
|
56
|
+
|
|
57
|
+
- `pytest` validates every YAML file against `schema.json`.
|
|
58
|
+
- GitHub Actions run tests on push/pull_request and build/publish artifacts when a semver tag is pushed.
|
|
59
|
+
|
|
60
|
+
Contributions should keep the dataset human-friendly: no generated UUIDs in the patterns,
|
|
61
|
+
clear field names, and comments that help reviewers understand why a pattern exists.
|
|
62
|
+
|
|
63
|
+
### Tests
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
poetry run pytest
|
|
67
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "solyanka"
|
|
3
|
+
version = "0.0.1"
|
|
4
|
+
description = "Transaction pattern utilities and dataset for statement generators"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.11"
|
|
7
|
+
license = {file = "LICENSE"}
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "Development Team", email = "dev@company.com"},
|
|
10
|
+
]
|
|
11
|
+
dependencies = [
|
|
12
|
+
"pyyaml>=6.0",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[project.optional-dependencies]
|
|
16
|
+
dev = [
|
|
17
|
+
"pytest>=8.2",
|
|
18
|
+
"jsonschema>=4.23",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
[build-system]
|
|
22
|
+
requires = ["hatchling"]
|
|
23
|
+
build-backend = "hatchling.build"
|
|
24
|
+
|
|
25
|
+
[tool.hatch.build]
|
|
26
|
+
include = [
|
|
27
|
+
"solyanka",
|
|
28
|
+
"README.md",
|
|
29
|
+
"LICENSE",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[tool.hatch.build.targets.wheel]
|
|
33
|
+
packages = ["solyanka"]
|
|
34
|
+
|
|
35
|
+
[tool.pytest.ini_options]
|
|
36
|
+
addopts = "-ra --strict-markers --strict-config"
|
|
37
|
+
testpaths = ["tests"]
|
|
38
|
+
markers = [
|
|
39
|
+
"transaction_patterns: validate transaction pattern YAML files against the schema",
|
|
40
|
+
]
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Transaction Patterns
|
|
2
|
+
|
|
3
|
+
This directory contains YAML files with transaction patterns for generating card transactions.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
- `general.yml`: Contains transaction patterns that are common to all countries.
|
|
8
|
+
- `eea.yml`: Contains transaction patterns specific to EEA (European Economic Area) countries.
|
|
9
|
+
- `[country_code].yml`: Contains transaction patterns specific to a country. For example, `portugal.yml` contains patterns for Portugal.
|
|
10
|
+
|
|
11
|
+
## Pattern Format
|
|
12
|
+
|
|
13
|
+
Each pattern is a YAML object with the following fields:
|
|
14
|
+
|
|
15
|
+
### Required Fields
|
|
16
|
+
|
|
17
|
+
- `title`: The merchant name. Can be a string or a template object for dynamic generation.
|
|
18
|
+
- `currency`: The currency of the transaction (3-letter currency code).
|
|
19
|
+
- `amount_range`: A dictionary with `min` and `max` values for the transaction amount.
|
|
20
|
+
- `amount_format`: An integer that controls the rounding of the generated transaction amount.
|
|
21
|
+
- A positive integer `n` rounds the amount to `n` decimal places (e.g., `2` for `12.34`).
|
|
22
|
+
- `0` rounds the amount to the nearest whole number (e.g., `12`).
|
|
23
|
+
- A negative integer `-n` rounds the amount to the nearest `10^|n|` (e.g., `-2` for rounding to the nearest 100, like `100`, `200`).
|
|
24
|
+
- `types`: An array of tags categorizing the merchant (e.g., `["shopping", "groceries"]`).
|
|
25
|
+
|
|
26
|
+
### Optional Fields
|
|
27
|
+
|
|
28
|
+
- `weight` (optional): The relative probability weight for pattern selection. Defaults to 1000.
|
|
29
|
+
- `refund_probability` (optional): The probability (from 0.0 to 1.0) that a transaction will be refunded. If not provided, defaults to system default.
|
|
30
|
+
- `refundDelayMinHours` (optional): The minimum number of hours after a transaction that a refund can be generated. Defaults to 72.
|
|
31
|
+
- `refundDelayMaxHours` (optional): The maximum number of hours after a transaction that a refund can be generated. Defaults to 288.
|
|
32
|
+
- `numberOfOccurrences` (optional): The maximum number of times this transaction pattern can be used globally across a statement. If not provided, allows unlimited use.
|
|
33
|
+
- `subscription_frequency_days` (optional): The frequency in days for recurring transactions. If provided, additional transactions will be generated every `subscription_frequency_days` days from the initial occurrence.
|
|
34
|
+
|
|
35
|
+
### Template Titles
|
|
36
|
+
|
|
37
|
+
The `title` field supports dynamic generation using templates:
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
title:
|
|
41
|
+
type: template
|
|
42
|
+
template: "Revolut**{num}* DUBLIN"
|
|
43
|
+
params:
|
|
44
|
+
num:
|
|
45
|
+
generator: random_digits
|
|
46
|
+
length: 4
|
|
47
|
+
global_constant: true
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
#### Supported Generators
|
|
51
|
+
|
|
52
|
+
- `random_digits`: Generates random digit strings
|
|
53
|
+
- `length`: Number of digits
|
|
54
|
+
- `zero_pad`: Whether to pad with leading zeros (default: true)
|
|
55
|
+
- `random_alnum`: Generates random alphanumeric strings
|
|
56
|
+
- `length`: Number of characters
|
|
57
|
+
- `charset`: Custom character set (optional)
|
|
58
|
+
- `choice`: Selects from a list of options
|
|
59
|
+
- `options`: Array of possible values
|
|
60
|
+
- `weights`: Optional array of selection weights
|
|
61
|
+
|
|
62
|
+
#### Supported Transforms
|
|
63
|
+
|
|
64
|
+
- `transform.case`: Apply case transformation
|
|
65
|
+
- `upper`: Convert to uppercase
|
|
66
|
+
- `lower`: Convert to lowercase
|
|
67
|
+
- `title`: Convert to title case
|
|
68
|
+
|
|
69
|
+
#### Global Constants
|
|
70
|
+
|
|
71
|
+
- `global_constant: true`: Ensures the same value is used across all instances of this parameter within a statement generation session.
|
|
72
|
+
|
|
73
|
+
## Schema
|
|
74
|
+
|
|
75
|
+
The JSON schema for the transaction patterns is available at [`schema.json`](schema.json).
|
|
76
|
+
|
|
77
|
+
## Creating Transaction Patterns
|
|
78
|
+
|
|
79
|
+
To create new transaction patterns, refer to the [Transaction Pattern Creation Guide](transaction_pattern_creation.md).
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Brazil Transaction Patterns
|
|
2
|
+
# Generated from BRL transaction data analysis
|
|
3
|
+
|
|
4
|
+
# Transportation - Uber rides
|
|
5
|
+
- title: "Uber *Uber *Trip Sao Paulo"
|
|
6
|
+
currency: "BRL"
|
|
7
|
+
amount_range:
|
|
8
|
+
min: 5.00
|
|
9
|
+
max: 150.00
|
|
10
|
+
amount_format: 2
|
|
11
|
+
types: ["transportation", "rideshare", "uber"]
|
|
12
|
+
weight: 800
|
|
13
|
+
|
|
14
|
+
- title: "Uber *Trip Help.uber.com SAO PAULO"
|
|
15
|
+
currency: "BRL"
|
|
16
|
+
amount_range:
|
|
17
|
+
min: 5.00
|
|
18
|
+
max: 150.00
|
|
19
|
+
amount_format: 2
|
|
20
|
+
types: ["transportation", "rideshare", "uber"]
|
|
21
|
+
weight: 600
|
|
22
|
+
|
|
23
|
+
# Food & Dining - Cafes
|
|
24
|
+
- title: "Cafe Fratelli Franqueador SAO PAULO"
|
|
25
|
+
currency: "BRL"
|
|
26
|
+
amount_range:
|
|
27
|
+
min: 10.00
|
|
28
|
+
max: 120.00
|
|
29
|
+
amount_format: 2
|
|
30
|
+
types: ["food", "cafe", "coffee"]
|
|
31
|
+
weight: 400
|
|
32
|
+
|
|
33
|
+
- title: "Cafeteria Bsg SAO PAULO"
|
|
34
|
+
currency: "BRL"
|
|
35
|
+
amount_range:
|
|
36
|
+
min: 10.00
|
|
37
|
+
max: 120.00
|
|
38
|
+
amount_format: 2
|
|
39
|
+
types: ["food", "cafe", "coffee"]
|
|
40
|
+
weight: 300
|
|
41
|
+
|
|
42
|
+
- title: "Rac Cafe Ltda SAO PAULO"
|
|
43
|
+
currency: "BRL"
|
|
44
|
+
amount_range:
|
|
45
|
+
min: 10.00
|
|
46
|
+
max: 120.00
|
|
47
|
+
amount_format: 2
|
|
48
|
+
types: ["food", "cafe", "coffee"]
|
|
49
|
+
weight: 200
|
|
50
|
+
|
|
51
|
+
# Healthcare - Pharmacies
|
|
52
|
+
- title: "Raia Drogasil SAO PAULO"
|
|
53
|
+
currency: "BRL"
|
|
54
|
+
amount_range:
|
|
55
|
+
min: 5.00
|
|
56
|
+
max: 150.00
|
|
57
|
+
amount_format: 2
|
|
58
|
+
types: ["healthcare", "pharmacy", "medicine"]
|
|
59
|
+
weight: 300
|
|
60
|
+
|
|
61
|
+
- title: "Drogaria Sao Paulo Sa SAO PAULO"
|
|
62
|
+
currency: "BRL"
|
|
63
|
+
amount_range:
|
|
64
|
+
min: 5.00
|
|
65
|
+
max: 150.00
|
|
66
|
+
amount_format: 2
|
|
67
|
+
types: ["healthcare", "pharmacy", "medicine"]
|
|
68
|
+
weight: 250
|
|
69
|
+
|
|
70
|
+
- title: "Drogaria Discover SAO PAULO"
|
|
71
|
+
currency: "BRL"
|
|
72
|
+
amount_range:
|
|
73
|
+
min: 5.00
|
|
74
|
+
max: 150.00
|
|
75
|
+
amount_format: 2
|
|
76
|
+
types: ["healthcare", "pharmacy", "medicine"]
|
|
77
|
+
weight: 200
|
|
78
|
+
|
|
79
|
+
# Personal Care - Barbershops
|
|
80
|
+
- title: "Barbearia Retrogol SAO PAULO"
|
|
81
|
+
currency: "BRL"
|
|
82
|
+
amount_range:
|
|
83
|
+
min: 100.00
|
|
84
|
+
max: 200.00
|
|
85
|
+
amount_format: 0
|
|
86
|
+
types: ["personal_care", "barbershop", "grooming"]
|
|
87
|
+
weight: 100
|
|
88
|
+
|
|
89
|
+
# Food & Dining - Restaurants
|
|
90
|
+
- title: "Restaurante Kanpai SAO PAULO"
|
|
91
|
+
currency: "BRL"
|
|
92
|
+
amount_range:
|
|
93
|
+
min: 50.00
|
|
94
|
+
max: 400.00
|
|
95
|
+
amount_format: 2
|
|
96
|
+
types: ["food", "restaurant", "dining"]
|
|
97
|
+
weight: 200
|
|
98
|
+
|
|
99
|
+
- title: "Z Deli Sanduiches SAO PAULO"
|
|
100
|
+
currency: "BRL"
|
|
101
|
+
amount_range:
|
|
102
|
+
min: 30.00
|
|
103
|
+
max: 350.00
|
|
104
|
+
amount_format: 2
|
|
105
|
+
types: ["food", "restaurant", "deli", "sandwiches"]
|
|
106
|
+
weight: 150
|
|
107
|
+
|
|
108
|
+
# Travel - Hotels
|
|
109
|
+
- title: "Hotel At Booking.com SAO PAULO"
|
|
110
|
+
currency: "BRL"
|
|
111
|
+
amount_range:
|
|
112
|
+
min: 500.00
|
|
113
|
+
max: 2500.00
|
|
114
|
+
amount_format: 2
|
|
115
|
+
types: ["travel", "hotel", "accommodation"]
|
|
116
|
+
weight: 50
|
|
117
|
+
|
|
118
|
+
- title: "Booking.com Hotel SAO PAULO"
|
|
119
|
+
currency: "BRL"
|
|
120
|
+
amount_range:
|
|
121
|
+
min: 500.00
|
|
122
|
+
max: 2500.00
|
|
123
|
+
amount_format: 2
|
|
124
|
+
types: ["travel", "hotel", "accommodation"]
|
|
125
|
+
weight: 50
|
|
126
|
+
|
|
127
|
+
# Shopping - General retail
|
|
128
|
+
- title: "Shopping Center SAO PAULO"
|
|
129
|
+
currency: "BRL"
|
|
130
|
+
amount_range:
|
|
131
|
+
min: 20.00
|
|
132
|
+
max: 400.00
|
|
133
|
+
amount_format: 0
|
|
134
|
+
types: ["shopping", "retail", "general"]
|
|
135
|
+
weight: 200
|
|
136
|
+
|
|
137
|
+
# Supermarkets and grocery stores
|
|
138
|
+
- title: "Supermercado Pao De Acucar SAO PAULO"
|
|
139
|
+
currency: "BRL"
|
|
140
|
+
amount_range:
|
|
141
|
+
min: 20.00
|
|
142
|
+
max: 300.00
|
|
143
|
+
amount_format: 2
|
|
144
|
+
types: ["food", "grocery", "supermarket"]
|
|
145
|
+
weight: 300
|
|
146
|
+
|
|
147
|
+
- title: "Extra Supermercados SAO PAULO"
|
|
148
|
+
currency: "BRL"
|
|
149
|
+
amount_range:
|
|
150
|
+
min: 25.00
|
|
151
|
+
max: 350.00
|
|
152
|
+
amount_format: 2
|
|
153
|
+
types: ["food", "grocery", "supermarket"]
|
|
154
|
+
weight: 250
|
|
155
|
+
|
|
156
|
+
# Gas stations
|
|
157
|
+
- title: "Posto Ipiranga SAO PAULO"
|
|
158
|
+
currency: "BRL"
|
|
159
|
+
amount_range:
|
|
160
|
+
min: 50.00
|
|
161
|
+
max: 400.00
|
|
162
|
+
amount_format: 2
|
|
163
|
+
types: ["fuel", "gas_station", "automotive"]
|
|
164
|
+
weight: 200
|
|
165
|
+
|
|
166
|
+
- title: "Shell Brasil SAO PAULO"
|
|
167
|
+
currency: "BRL"
|
|
168
|
+
amount_range:
|
|
169
|
+
min: 50.00
|
|
170
|
+
max: 400.00
|
|
171
|
+
amount_format: 2
|
|
172
|
+
types: ["fuel", "gas_station", "automotive"]
|
|
173
|
+
weight: 180
|
|
174
|
+
|
|
175
|
+
# Fast food chains
|
|
176
|
+
- title: "McDonald's SAO PAULO"
|
|
177
|
+
currency: "BRL"
|
|
178
|
+
amount_range:
|
|
179
|
+
min: 15.00
|
|
180
|
+
max: 80.00
|
|
181
|
+
amount_format: 2
|
|
182
|
+
types: ["food", "fast_food", "restaurant"]
|
|
183
|
+
weight: 300
|
|
184
|
+
|
|
185
|
+
- title: "Burger King SAO PAULO"
|
|
186
|
+
currency: "BRL"
|
|
187
|
+
amount_range:
|
|
188
|
+
min: 15.00
|
|
189
|
+
max: 75.00
|
|
190
|
+
amount_format: 2
|
|
191
|
+
types: ["food", "fast_food", "restaurant"]
|
|
192
|
+
weight: 200
|
|
193
|
+
|
|
194
|
+
# Public transportation
|
|
195
|
+
- title: "Metro Sao Paulo"
|
|
196
|
+
currency: "BRL"
|
|
197
|
+
amount_range:
|
|
198
|
+
min: 4.00
|
|
199
|
+
max: 15.00
|
|
200
|
+
amount_format: 2
|
|
201
|
+
types: ["transportation", "public_transport", "metro"]
|
|
202
|
+
weight: 400
|
|
203
|
+
|
|
204
|
+
# Entertainment
|
|
205
|
+
- title: "Cinema Cinemark SAO PAULO"
|
|
206
|
+
currency: "BRL"
|
|
207
|
+
amount_range:
|
|
208
|
+
min: 20.00
|
|
209
|
+
max: 60.00
|
|
210
|
+
amount_format: 2
|
|
211
|
+
types: ["entertainment", "cinema", "movies"]
|
|
212
|
+
weight: 100
|
|
213
|
+
|
|
214
|
+
# Clothing stores
|
|
215
|
+
- title: "C&A SAO PAULO"
|
|
216
|
+
currency: "BRL"
|
|
217
|
+
amount_range:
|
|
218
|
+
min: 30.00
|
|
219
|
+
max: 300.00
|
|
220
|
+
amount_format: 2
|
|
221
|
+
types: ["shopping", "clothing", "fashion"]
|
|
222
|
+
weight: 150
|
|
223
|
+
|
|
224
|
+
- title: "Renner SAO PAULO"
|
|
225
|
+
currency: "BRL"
|
|
226
|
+
amount_range:
|
|
227
|
+
min: 40.00
|
|
228
|
+
max: 350.00
|
|
229
|
+
amount_format: 2
|
|
230
|
+
types: ["shopping", "clothing", "fashion"]
|
|
231
|
+
weight: 120
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
- title:
|
|
2
|
+
type: template
|
|
3
|
+
template: "Hotel Tpe2 Vad {city}"
|
|
4
|
+
params:
|
|
5
|
+
city:
|
|
6
|
+
generator: choice
|
|
7
|
+
options: ["Bordeaux", "Paris", "Lyon"]
|
|
8
|
+
transform:
|
|
9
|
+
case: upper
|
|
10
|
+
currency: "EUR"
|
|
11
|
+
amount_range:
|
|
12
|
+
min: 250
|
|
13
|
+
max: 1000.0
|
|
14
|
+
amount_format: 2
|
|
15
|
+
types:
|
|
16
|
+
- "traveling"
|
|
17
|
+
- "hotel"
|
|
18
|
+
weight: 20
|