pub struct AiSpendRecord {
pub ts_ms: i64,
pub consumer: String,
pub consumer_type: String,
pub team: String,
pub provider: String,
pub model: String,
pub version: String,
pub prompt_tokens: u64,
pub completion_tokens: u64,
pub total_tokens: u64,
pub cost_micros: u64,
}Expand description
One AI spend record (DW-079): the per-request spend dimensions
written to the ai_spend table. A PLAIN DTO — deliberately not
importing ai::types::Usage (the analytics domain may not import
the ai domain; see scripts/check_deps.py). The dataplane
converts from ai::types::Usage at the call site.
Fields§
§ts_ms: i64Wall-clock ms since the Unix epoch.
consumer: StringThe authenticated consumer name (or “anonymous”).
consumer_type: StringThe consumer type (DW-113): "user" or "agent". Defaults to
"user" for pre-DW-113 records and anonymous traffic.
team: StringThe policy-scoped team key (the policy name a scope: policy
budget uses), or empty when no team budget binds the request.
provider: StringThe serving provider name (ai.providers[].name).
model: StringThe provider’s own model identifier (the pricing key).
version: StringThe canary version label (DW-076), or empty for non-canary.
prompt_tokens: u64Provider-reported prompt (input) tokens.
completion_tokens: u64Provider-reported completion (output) tokens.
total_tokens: u64Total tokens (prompt + completion, or the provider’s own total).
cost_micros: u64Priced cost in integer micro-USD (usage x pricing table).
Trait Implementations§
Source§impl Clone for AiSpendRecord
impl Clone for AiSpendRecord
Source§fn clone(&self) -> AiSpendRecord
fn clone(&self) -> AiSpendRecord
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for AiSpendRecord
impl RefUnwindSafe for AiSpendRecord
impl Send for AiSpendRecord
impl Sync for AiSpendRecord
impl Unpin for AiSpendRecord
impl UnwindSafe for AiSpendRecord
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&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