提交qiming-mcp-proxy

This commit is contained in:
Codex
2026-06-01 13:03:20 +08:00
parent 9e9486b7c2
commit afb3d9f4e6
394 changed files with 124494 additions and 0 deletions

View 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);
}
}