提交qiming-mcp-proxy
This commit is contained in:
54
qiming-mcp-proxy/voice-cli/src/utils/task_id.rs
Normal file
54
qiming-mcp-proxy/voice-cli/src/utils/task_id.rs
Normal file
@@ -0,0 +1,54 @@
|
||||
/// Task ID generation utilities
|
||||
use uuid::Uuid;
|
||||
|
||||
/// Generate a clean task ID with only alphanumeric characters
|
||||
/// Format: "task" + 32-character hexadecimal string (from UUID v7)
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// use voice_cli::utils::task_id::generate_task_id;
|
||||
///
|
||||
/// let task_id = generate_task_id();
|
||||
/// assert!(task_id.starts_with("task"));
|
||||
/// assert!(!task_id.contains('-'));
|
||||
/// assert!(!task_id.contains('_'));
|
||||
/// assert_eq!(task_id.len(), 36); // "task" + 32 hex chars
|
||||
/// ```
|
||||
pub fn generate_task_id() -> String {
|
||||
let uuid = Uuid::now_v7().to_string();
|
||||
// 移除所有连字符和下划线,只保留字母和数字
|
||||
let cleaned_uuid = uuid.replace(['-', '_'], "");
|
||||
format!("task{}", cleaned_uuid)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_generate_task_id_format() {
|
||||
let task_id = generate_task_id();
|
||||
|
||||
// Check format
|
||||
assert!(task_id.starts_with("task"));
|
||||
assert!(!task_id.contains('-'));
|
||||
assert!(!task_id.contains('_'));
|
||||
|
||||
// Check length (task + 32 hex chars)
|
||||
assert_eq!(task_id.len(), 36);
|
||||
|
||||
// Check that it's all alphanumeric after "task" prefix
|
||||
let suffix = &task_id[4..];
|
||||
assert!(suffix.chars().all(|c| c.is_ascii_hexdigit()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_generate_task_id_uniqueness() {
|
||||
let id1 = generate_task_id();
|
||||
let id2 = generate_task_id();
|
||||
|
||||
// Should be different (due to timestamp in UUID v7)
|
||||
assert_ne!(id1, id2);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user