pub struct RunDetailResponse {Show 26 fields
pub id: i64,
pub tag_name: String,
pub notes: Option<String>,
pub driver: TuneDriver,
pub outcome: TuneOutcome,
pub failure_reason: Option<String>,
pub started_at: DateTime<Utc>,
pub completed_at: Option<DateTime<Utc>>,
pub template_name: String,
pub template_origin: TemplateOrigin,
pub allow_uncertain_quality: bool,
pub config: LoopConfig,
pub effective_tuning: Option<EffectiveTuning>,
pub opc_server: Option<String>,
pub bridge_host: Option<String>,
pub pid_constant_tags: Option<PidConstantTagsResponse>,
pub pid_parameter_labels: PidParameterLabelsResponse,
pub initial_readings: Option<InitialReadingsResponse>,
pub timing_metrics: Option<TimingMetrics>,
pub samples: Vec<SampleResponse>,
pub results: Vec<ResultResponse>,
pub writes: Vec<WriteResponse>,
pub mv_actuations: Vec<MvActuationResponse>,
pub restore_status: Option<RestoreStatus>,
pub restore_detail: Option<String>,
pub original_request: Option<StartRunRequest>,
}Fields§
§id: i64§tag_name: String§notes: Option<String>§driver: TuneDriver§outcome: TuneOutcome§failure_reason: Option<String>§started_at: DateTime<Utc>§completed_at: Option<DateTime<Utc>>§template_name: StringName of the template snapshotted onto this run at start time – not necessarily what
template_name currently resolves to in the catalog (safety-run-snapshot).
template_origin: TemplateOrigin§allow_uncertain_quality: boolWhether this run accepted Uncertain OPC quality, captured when the run started.
config: LoopConfig§effective_tuning: Option<EffectiveTuning>Concrete global timing and safety values frozen when this run was prepared. None
identifies a run created before effective-tuning snapshots were stored.
opc_server: Option<String>The resolved OPC DA server ProgID this run actually used, or None for a
simulator/replay run (db-run-request-snapshot). This is what history revert
trusts over any --server flag – see bhtune-cli::commands::history.
bridge_host: Option<String>The resolved bridge host this run actually used, matching opc_server above.
Some exactly when routes::runs::require_writable_run’s tag-presence check would
pass – i.e. when all three PID constant tags were configured on this run. The
frontend uses this (together with driver/outcome/opc_server/bridge_host) to
decide whether the post-hoc write/revert buttons are enabled and, when they are not,
to explain why – without duplicating require_writable_run’s logic client-side or
discovering ineligibility only after a failed request (api-post-run-write).
pid_parameter_labels: PidParameterLabelsResponseOperator-facing calculated-result column labels from the run’s historical template snapshot. Empty user-template suffixes use the conventional P/I/D labels.
initial_readings: Option<InitialReadingsResponse>§timing_metrics: Option<TimingMetrics>§samples: Vec<SampleResponse>§results: Vec<ResultResponse>§writes: Vec<WriteResponse>§mv_actuations: Vec<MvActuationResponse>§restore_status: Option<RestoreStatus>§restore_detail: Option<String>§original_request: Option<StartRunRequest>This run’s own request_json (db-run-request-snapshot), parsed back into a
StartRunRequest, or None if it isn’t usable – see [parse_stored_request].
Powers the run detail page’s “Duplicate this run” action (ui-prefill-last-run):
unlike GET /api/runs/last-request, which only ever answers for the single newest
run, this lets the New tune form seed itself from this specific historical run
regardless of how many later runs exist.
Trait Implementations§
Source§impl ComposeSchema for RunDetailResponse
impl ComposeSchema for RunDetailResponse
Source§impl Debug for RunDetailResponse
impl Debug for RunDetailResponse
Source§impl Serialize for RunDetailResponse
impl Serialize for RunDetailResponse
Auto Trait Implementations§
impl Freeze for RunDetailResponse
impl RefUnwindSafe for RunDetailResponse
impl Send for RunDetailResponse
impl Sync for RunDetailResponse
impl Unpin for RunDetailResponse
impl UnsafeUnpin for RunDetailResponse
impl UnwindSafe for RunDetailResponse
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].