Skip to main content

wist_api/work/
mod.rs

1//! `agent/work:*` seam 报文(拉取授权快照 `PollWork`/`WorkGrant`、确认 `AckWork`/`WorkAccepted`、
2//! 上报执行结果 `ReportWorkResult`/`WorkResultAccepted`)。
3//!
4//! 「工作参数与状态」类**领域**类型(`WorkSpec*` / `WorkKind` / `StandingWork` / `OneShotWork` 等)
5//! 仍留在 `wist-contracts`;这里 re-export `WorkGrant` 内嵌到的那两个。版本并存约定同
6//! [`crate::enrollment`]。
7
8pub use wist_contracts::work::{OneShotWork, StandingWork};
9
10pub mod v1;
11pub use v1::*;
12
13/// 当前线上版本。新代码从这里取版本口径;并存期由路由/协商决定。
14pub const CURRENT: &str = v1::API_VERSION;
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    /// `CURRENT` 必须钉在 `v1`(与路由 `/api/v1/…` 一致),并与版本子模块同源。
21    #[test]
22    fn current_matches_the_live_wire_version() {
23        assert_eq!(CURRENT, "v1");
24        assert_eq!(CURRENT, v1::API_VERSION);
25    }
26
27    /// 编译期身份断言:`WorkGrant` 内嵌的两个工作类型**就是** `wist-contracts` 的那两个。
28    #[test]
29    fn domain_types_are_the_contracts_ones() {
30        #[allow(dead_code)]
31        fn assert_identity() {
32            fn standing(v: wist_contracts::work::StandingWork) -> StandingWork {
33                v
34            }
35            fn one_shot(v: wist_contracts::work::OneShotWork) -> OneShotWork {
36                v
37            }
38            let _ = (standing, one_shot);
39        }
40        assert_identity();
41    }
42}