Skip to main content

wist_api/action_result/
mod.rs

1//! `agent/action-results` seam(agentd → gateway,动作结果上报 + 回执)的报文。
2//!
3//! 报文引用的**领域类型**(`ActionResult` / `FinalStatus`)仍留在 `wist-contracts`;这里
4//! re-export,调用方从 `wist_api::action_result` 一处取齐。版本并存约定同
5//! [`crate::enrollment`](见 `wist-design/doc/design/foundation/api-seam-inventory.md` §7)。
6
7pub use wist_contracts::action_result::{ActionResult, FinalStatus};
8
9pub mod v1;
10pub use v1::*;
11
12/// 当前线上版本。新代码从这里取版本口径;并存期由路由/协商决定。
13pub const CURRENT: &str = v1::API_VERSION;
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    /// `CURRENT` 必须钉在 `v1`(与路由 `/api/v1/…` 一致),并与版本子模块同源。
20    #[test]
21    fn current_matches_the_live_wire_version() {
22        assert_eq!(CURRENT, "v1");
23        assert_eq!(CURRENT, v1::API_VERSION);
24    }
25
26    /// 编译期身份断言:本模块 re-export 的领域类型**就是** `wist-contracts` 的那几个
27    /// (若有人另抄一份,下面的函数体将类型不匹配而编译失败)。
28    #[test]
29    fn domain_types_are_the_contracts_ones() {
30        #[allow(dead_code)]
31        fn assert_identity() {
32            fn result(v: wist_contracts::action_result::ActionResult) -> ActionResult {
33                v
34            }
35            fn final_status(v: wist_contracts::action_result::FinalStatus) -> FinalStatus {
36                v
37            }
38            let _ = (result, final_status);
39        }
40        assert_identity();
41    }
42}