// ============================================================================
// 【文件说明】IHwSearchRebuildService.cs - 搜索索引重建服务接口
// ============================================================================
// 这个接口定义了搜索索引重建的契约。
//
// 【什么是索引重建?】
// 索引重建是指:
// 1. 从业务表读取数据
// 2. 转换成搜索文档格式
// 3. 写入搜索索引表
//
// 【为什么需要索引重建?】
// 1. 初始化:新环境部署时,索引表是空的
// 2. 修复:索引和业务数据不一致时,重建可以修复
// 3. 升级:索引结构变化时,需要重建所有索引
//
// 【与 Java Spring Boot 的对比】
// Java 通常用定时任务或消息队列触发重建:
// @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨2点
// public void rebuildIndex() { ... }
//
// C# 这里通过服务接口,可以在需要时手动触发。
// ============================================================================
namespace Admin.NET.Plugin.HwPortal;
///
/// 搜索索引重建服务接口。
///
/// 【服务职责】
/// 提供搜索索引的全量重建能力:
/// - 从业务表读取所有数据
/// - 转换成搜索文档格式
/// - 批量写入索引表
///
///
/// 【设计模式 - 策略模式】
/// 这个接口支持多种实现:
/// - HwSearchRebuildService:真正的重建服务(在 SearchEf 中)
/// - HwNoopSearchRebuildService:空实现,用于禁用重建功能
///
/// 通过接口注入,调用方不需要知道具体实现。
///
///
public interface IHwSearchRebuildService
{
///
/// 重建所有搜索索引。
///
/// 【重建流程】
/// 1. 清空现有索引(或标记为删除)
/// 2. 遍历所有业务表
/// 3. 读取数据并转换
/// 4. 批量写入索引表
///
/// 【注意事项】
/// - 重建是耗时操作,可能需要几分钟到几小时
/// - 建议在低峰期执行
/// - 大表重建可能需要分批处理
///
///
/// 【C# 语法知识点 - Task 返回类型】
/// Task RebuildAllAsync() 返回 Task,表示:
/// - 这是一个异步方法
/// - 不返回具体值(类似 Java 的 void)
/// - 调用方可以 await 等待完成
///
/// 对比 Java:
/// Java 返回 CompletableFuture<Void>:
/// CompletableFuture rebuildAllAsync();
///
///
/// 异步任务
Task RebuildAllAsync();
}