backend phase 4: geography, addresses & nurse service areas
Adds the province -> city -> district reference hierarchy (geo schema, seeded with 31 provinces + capital cities + Tehran's 22 districts), nurse service areas (district_id NULL = whole city, filtered-index-pair uniqueness -> 409), and encrypted, geocoded customer addresses with a single-primary invariant. Introduces the IGeocoder seam (mocked) and 409 Conflict on the result envelope. Public cascading lookups are cached behind a generation-token scheme with invalidate-on-admin-write. One EF migration (GeographyAddressesServiceAreas, applied). Contract + swagger snapshot + handoff/report/registry updated. 103 tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,25 @@ public sealed class SeamOptions
|
||||
public FieldEncryptionOptions FieldEncryption { get; set; } = new();
|
||||
public ObjectStorageOptions ObjectStorage { get; set; } = new();
|
||||
public BankOwnershipOptions BankOwnership { get; set; } = new();
|
||||
public GeocodingOptions Geocoding { get; set; } = new();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tunes the mock <c>IGeocoder</c>. By default it resolves every address to a deterministic point around
|
||||
/// the city centroid. Set <see cref="ReturnNullCoordinates"/> to force the unresolved path globally, or
|
||||
/// embed <see cref="LowConfidenceMarker"/> in a single address to exercise the "saved without a map pin"
|
||||
/// UI state per-request. The real vendor implementation ignores these.
|
||||
/// </summary>
|
||||
public sealed class GeocodingOptions
|
||||
{
|
||||
/// <summary>When true, every geocode returns null coordinates with low confidence.</summary>
|
||||
public bool ReturnNullCoordinates { get; set; }
|
||||
|
||||
/// <summary>An address whose text contains this marker resolves to null coordinates (testability).</summary>
|
||||
public string LowConfidenceMarker { get; set; } = "NO_GEO";
|
||||
|
||||
/// <summary>Confidence returned for a successfully resolved address.</summary>
|
||||
public double ResolvedConfidence { get; set; } = 0.9;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user