From 320696fb92d34107bb29719ab9cbd50609b6c2ab Mon Sep 17 00:00:00 2001 From: Aaron Po Date: Fri, 17 Jul 2026 21:11:23 -0400 Subject: [PATCH] use enriched city in generation functions --- .../includes/data_generation/data_generator.h | 6 ++---- .../data_generation/llama_generator.h | 3 +-- .../includes/data_generation/mock_generator.h | 11 +++------- .../generate_breweries.cc | 21 +++++++++++-------- .../data_generation/llama/generate_brewery.cc | 4 +++- .../data_generation/mock/generate_brewery.cc | 3 ++- 6 files changed, 23 insertions(+), 25 deletions(-) diff --git a/tooling/pipeline/includes/data_generation/data_generator.h b/tooling/pipeline/includes/data_generation/data_generator.h index b3408e40..1f74713a 100644 --- a/tooling/pipeline/includes/data_generation/data_generator.h +++ b/tooling/pipeline/includes/data_generation/data_generator.h @@ -20,12 +20,10 @@ class DataGenerator { /** * @brief Generates brewery data for a location. * - * @param location Location data - * @param region_context Additional regional context text. + * @param city Enriched city the brewery is associated with. * @return Brewery generation result. */ - virtual BreweryResult GenerateBrewery(const Location& location, - const std::string& region_context) = 0; + virtual BreweryResult GenerateBrewery(const EnrichedCity& city) = 0; /** * @brief Generates a user profile grounded in a sampled name and persona. diff --git a/tooling/pipeline/includes/data_generation/llama_generator.h b/tooling/pipeline/includes/data_generation/llama_generator.h index 7d4dadb9..0502c4a8 100644 --- a/tooling/pipeline/includes/data_generation/llama_generator.h +++ b/tooling/pipeline/includes/data_generation/llama_generator.h @@ -55,8 +55,7 @@ class LlamaGenerator final : public DataGenerator { * @param region_context Additional regional context. * @return Generated brewery result. */ - BreweryResult GenerateBrewery(const Location& location, - const std::string& region_context) override; + BreweryResult GenerateBrewery(const EnrichedCity&) override; /** * @brief Generates a user profile grounded in a sampled name and persona. diff --git a/tooling/pipeline/includes/data_generation/mock_generator.h b/tooling/pipeline/includes/data_generation/mock_generator.h index 62467d81..e2690ebd 100644 --- a/tooling/pipeline/includes/data_generation/mock_generator.h +++ b/tooling/pipeline/includes/data_generation/mock_generator.h @@ -20,20 +20,15 @@ class MockGenerator final : public DataGenerator { /** * @brief Generates deterministic brewery data for a location. * - * @param location City and country names. - * @param region_context Unused for mock generation. + * @param enriched_city * @return Generated brewery result. */ - BreweryResult GenerateBrewery(const Location& location, - const std::string& region_context) override; + BreweryResult GenerateBrewery(const EnrichedCity& enriched_city) override; /** * @brief Generates deterministic user data grounded in a sampled name and * persona. - * - * @param city Enriched city the user is associated with. - * @param persona Persona archetype. - * @param name Sampled first/last name, copied directly into the result. + * @return Generated user result. */ UserResult GenerateUser(const EnrichedCity& city, const UserPersona& persona, diff --git a/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc b/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc index 0ee023b4..3002a0c1 100644 --- a/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc +++ b/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc @@ -22,12 +22,15 @@ void BiergartenPipelineOrchestrator::GenerateBreweries( const auto generate_record = [this, &skipped_count]( - const Location& location, - const std::string& region_context) -> std::optional { + const EnrichedCity& enriched_city) -> std::optional { try { - const BreweryResult brewery = - generator_->GenerateBrewery(location, region_context); - return BreweryRecord{.location = location, .brewery = brewery}; + const BreweryResult brewery = generator_->GenerateBrewery(enriched_city); + const std::string postal_code = + postal_code_service_->GeneratePostalCode(enriched_city.location); + return BreweryRecord{ + .address = BreweryAddress{.city = enriched_city.location, + .postal_code = postal_code}, + .brewery = brewery}; } catch (const std::exception& e) { ++skipped_count; @@ -36,7 +39,8 @@ void BiergartenPipelineOrchestrator::GenerateBreweries( .phase = PipelinePhase::BreweryAndBeerGeneration, .message = std::format("[Pipeline] Skipping city '{}' ({}): brewery " "generation failed: {}", - location.city, location.country, e.what())}); + enriched_city.location.city, + enriched_city.location.country, e.what())}); return std::nullopt; } }; @@ -57,9 +61,8 @@ void BiergartenPipelineOrchestrator::GenerateBreweries( } }; - for (const auto& [location, region_context] : cities) { - const std::optional record = - generate_record(location, region_context); + for (const EnrichedCity& enriched_city : cities) { + const std::optional record = generate_record(enriched_city); if (!record.has_value()) { continue; } diff --git a/tooling/pipeline/src/data_generation/llama/generate_brewery.cc b/tooling/pipeline/src/data_generation/llama/generate_brewery.cc index 30c4ac62..f2c855d7 100644 --- a/tooling/pipeline/src/data_generation/llama/generate_brewery.cc +++ b/tooling/pipeline/src/data_generation/llama/generate_brewery.cc @@ -36,7 +36,9 @@ static std::string FormatLocalLanguageCodes( static constexpr int kBreweryInitialMaxTokens = 2800; BreweryResult LlamaGenerator::GenerateBrewery( - const Location& location, const std::string& region_context) { + const EnrichedCity& enriched_city) { + const City& location = enriched_city.location; + const std::string& region_context = enriched_city.region_context; /** * Preprocess and truncate region context to manageable size */ diff --git a/tooling/pipeline/src/data_generation/mock/generate_brewery.cc b/tooling/pipeline/src/data_generation/mock/generate_brewery.cc index 20a4ff6e..ea4d56c7 100644 --- a/tooling/pipeline/src/data_generation/mock/generate_brewery.cc +++ b/tooling/pipeline/src/data_generation/mock/generate_brewery.cc @@ -11,7 +11,8 @@ #include "data_generation/mock_generator.h" BreweryResult MockGenerator::GenerateBrewery( - const Location& location, const std::string& /*region_context*/) { + const EnrichedCity& enriched_city) { + const City& location = enriched_city.location; const size_t hash = DeterministicHash(location); const std::string_view adjective =