Pipeline: rename Location to City, add address tables + postal codes

This commit is contained in:
Aaron Po
2026-07-17 21:53:01 -04:00
parent 320696fb92
commit 6c5f65c86e
33 changed files with 1534 additions and 332 deletions

View File

@@ -22,16 +22,39 @@ class ILogger;
namespace prog_opts = boost::program_options;
// ============================================================================
// Location Models
// City Models
// ============================================================================
/**
* @brief Canonical location record for city-level generation.
* @brief Curated postal-code metadata for a city, mirroring the
* `postal_code` object in the locations dataset.
*/
struct Location {
struct PostalCodeSpec {
/**
* @brief Permissive country-wide postal-code format regex, used as the
* validation fallback for a selected example.
*/
std::string country_format_regex{};
/**
* @brief City-specific postal-code regexes (more precise than the country
* format).
*/
std::vector<std::string> city_regexes{};
/**
* @brief Concrete example postal codes for this city. The postal code
* service selects from these rather than synthesizing codes.
*/
std::vector<std::string> examples{};
};
/**
* @brief Canonical city record for city-level generation.
*/
struct City {
std::string city{};
std::string state_province{};
std::string postal_code{};
/**
* @brief ISO 3166-2 subdivision code.
@@ -51,14 +74,10 @@ struct Location {
std::vector<std::string> local_languages{};
/**
* @brief Latitude in decimal degrees.
* @brief Postal-code metadata (format regex, city regexes, and concrete
* examples) sourced directly from the curated locations dataset.
*/
double latitude{};
/**
* @brief Longitude in decimal degrees.
*/
double longitude{};
PostalCodeSpec postal_code{};
};
// ============================================================================