CreoOtkPluging/ModelSearchHandler.h
sladro b874b17534 实现模型搜索功能 - 支持名称模糊匹配和完整层级路径显示
新增ModelSearchEngine和ModelSearchHandler模块,提供零件和装配体名称搜索功能:
• 支持prefix、contains、fuzzy三种匹配模式
• 从根装配体构建完整模型树层级路径
• 智能去重算法自动去除重复结果,保留最长路径
• 递归搜索支持多层级装配体遍历
• 向后兼容,不影响现有功能

解决搜索重复结果和缺少层级路径问题,提升用户体验。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 18:36:12 +08:00

39 lines
1.6 KiB
C++

#pragma once
#include "ModelSearchEngine.h"
#include "HttpServer.h"
#include <string>
#include <sstream>
class ModelSearchHandler {
public:
// 主要HTTP处理方法
static HttpResponse HandleModelSearchRequest(const HttpRequest& request);
private:
// JSON解析辅助方法
static std::string ExtractJsonValue(const std::string& json, const std::string& key);
static bool ExtractJsonBoolValue(const std::string& json, const std::string& key, bool default_value = false);
static int ExtractJsonIntValue(const std::string& json, const std::string& key, int default_value = 0);
static double ExtractJsonDoubleValue(const std::string& json, const std::string& key, double default_value = 0.0);
static std::vector<std::string> ExtractJsonArrayValue(const std::string& json, const std::string& key);
// JSON转义辅助方法
static std::string EscapeJsonString(const std::string& input);
// 请求验证方法
static bool ValidateHttpRequest(const HttpRequest& request, std::string& error_message);
// 参数解析方法
static ModelSearchRequest ParseSearchRequest(const std::string& json_body);
// 响应格式化方法
static HttpResponse FormatSuccessResponse(const ModelSearchResult& result);
static HttpResponse FormatErrorResponse(int status_code, const std::string& error_message);
// 辅助工具方法
static std::string Trim(const std::string& str);
static bool StartsWith(const std::string& str, const std::string& prefix);
static bool EndsWith(const std::string& str, const std::string& suffix);
};