new demo mode & tenure
This commit is contained in:
parent
7656f24544
commit
4a0f00f2a4
64 changed files with 2875 additions and 338 deletions
|
|
@ -40,6 +40,16 @@ pub struct HistoricalPrice {
|
|||
pub price: i64,
|
||||
}
|
||||
|
||||
/// A point on the property's tenure timeline: the year a certificate first
|
||||
/// recorded a new occupancy `status` ("Owner-occupied" / "Rented (private)" /
|
||||
/// "Rented (social)"). Derived per-EPC and reduced to change points by the
|
||||
/// pipeline, so this surfaces *when* a home was let out vs lived in.
|
||||
#[derive(Serialize, Clone)]
|
||||
pub struct TenureEvent {
|
||||
pub year: i32,
|
||||
pub status: String,
|
||||
}
|
||||
|
||||
pub struct PropertyData {
|
||||
pub lat: Vec<f32>,
|
||||
pub lon: Vec<f32>,
|
||||
|
|
@ -100,6 +110,9 @@ pub struct PropertyData {
|
|||
/// Per-row historical sale transactions (Land Registry price-paid).
|
||||
/// Keyed by (permuted) row index. Only rows with prices are present.
|
||||
historical_prices: FxHashMap<u32, Vec<HistoricalPrice>>,
|
||||
/// Per-row tenure timeline (owner-occupied <-> rented change points from
|
||||
/// EPC). Keyed by (permuted) row index. Only rows with changes are present.
|
||||
tenure_history: FxHashMap<u32, Vec<TenureEvent>>,
|
||||
property_sub_type: FxHashMap<u32, String>,
|
||||
price_qualifier: FxHashMap<u32, String>,
|
||||
}
|
||||
|
|
@ -153,6 +166,14 @@ impl PropertyData {
|
|||
.unwrap_or(&[])
|
||||
}
|
||||
|
||||
/// Get tenure timeline events for a given row (empty slice if none).
|
||||
pub fn tenure_history(&self, row: usize) -> &[TenureEvent] {
|
||||
self.tenure_history
|
||||
.get(&(row as u32))
|
||||
.map(|v| v.as_slice())
|
||||
.unwrap_or(&[])
|
||||
}
|
||||
|
||||
/// Get property sub-type for a given row.
|
||||
pub fn property_sub_type(&self, row: usize) -> Option<&str> {
|
||||
self.property_sub_type
|
||||
|
|
@ -231,6 +252,7 @@ impl PropertyData {
|
|||
approx_build_date_bits: Vec::new(),
|
||||
renovation_history: FxHashMap::default(),
|
||||
historical_prices: FxHashMap::default(),
|
||||
tenure_history: FxHashMap::default(),
|
||||
property_sub_type: FxHashMap::default(),
|
||||
price_qualifier: FxHashMap::default(),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue