Files
the-biergarten-app/tooling/pipeline/includes/data_model/generated_models.h

145 lines
3.1 KiB
C++

#ifndef BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_GENERATED_MODELS_H_
#define BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_GENERATED_MODELS_H_
/**
* @file data_model/generated_models.h
* @brief Generated output models from the pipeline: brewery/user results,
* enriched data, and complete generation results.
*/
#include <string>
#include "data_model/models.h"
// Generation Output Models
/**
* @brief Generated brewery payload.
*/
struct BreweryResult {
/**
* @brief Brewery display name in English.
*/
std::string name_en;
/**
* @brief Brewery description text in English.
*/
std::string description_en;
/**
* @brief Brewery display name in the local language.
*/
std::string name_local;
/**
* @brief Brewery description text in the local language.
*/
std::string description_local;
};
/**
* @brief Generated user profile payload.
*/
struct UserResult {
/**
* @brief First (given) name, copied from the sampled Name -- not
* LLM-invented.
*/
std::string first_name{};
/**
* @brief Last (family) name, copied from the sampled Name -- not
* LLM-invented.
*/
std::string last_name{};
/**
* @brief Gender associated with the sampled first name, copied from the
* sampled Name -- not LLM-invented.
*/
std::string gender{};
/**
* @brief Username handle.
*/
std::string username{};
/**
* @brief Short user biography.
*/
std::string bio{};
/**
* @brief Relative check-in/activity weight for this user, used to drive
* a J-curve activity profile in later pipeline phases.
*/
float activity_weight{};
};
// Pipeline Data Models
/**
* @brief Enriched city data with Wikipedia context.
*/
struct EnrichedCity {
City location;
std::string region_context{};
};
/**
* @brief A physical address: the city plus a coordinate pair sampled near
* the city's centre.
*/
struct BreweryAddress {
City city;
double longitude{};
double latitude{};
/**
* @brief Street address line (e.g. house number + road), resolved once
* via reverse geocoding at generation time.
*/
std::string address_line1{};
/**
* @brief Postal code, resolved once via reverse geocoding at generation
* time.
*/
std::string postal_code{};
};
/**
* @brief A physical address for a generated user: the city plus a
* coordinate pair sampled near the city's centre.
*/
struct UserAddress {
City city;
double longitude{};
double latitude{};
};
/**
* @brief Helper struct to store generated brewery data.
*/
struct BreweryRecord {
BreweryAddress address;
BreweryResult brewery;
};
/**
* @brief Helper struct to store generated user data.
*
* `email` and `date_of_birth` are programmatically generated by the
* orchestrator (never LLM-authored) so a downstream auth-account seeding
* consumer can register real accounts from the pipeline's SQLite export.
*/
struct UserRecord {
UserAddress address;
UserResult user;
std::string email{};
std::string date_of_birth{};
};
#endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_GENERATED_MODELS_H_