Files
Axi_Omron/src/AxiOmron.PcbCheck/DesignTime/DesignTimeSftpLookupService.cs
yunxiao.zhu c67509ec82 ✨ feat(file-check): 添加 PLC 应答后命中文件删除
* 新增默认关闭的删除开关,仅在收到 PLC 放行应答后执行

* 本地与 SFTP Provider 校验根目录并支持幂等删除

* 补充工作流、设置页和文件删除相关测试与文档
2026-08-01 16:42:28 +08:00

60 lines
2.0 KiB
C#

using AxiOmron.PcbCheck.Models;
using AxiOmron.PcbCheck.Options;
using AxiOmron.PcbCheck.Services.Interfaces;
namespace AxiOmron.PcbCheck.DesignTime;
/// <summary>
/// 为设计器提供文件校验通道测试结果的设计时服务。
/// </summary>
public sealed class DesignTimeSftpLookupService : IFileCheckService
{
/// <summary>
/// 返回设计时文件校验结果。
/// </summary>
/// <param name="barcode">条码。</param>
/// <param name="cancellationToken">取消令牌。</param>
/// <returns>固定设计时结果。</returns>
public Task<FileCheckOutcome> CheckFileAsync(string barcode, CancellationToken cancellationToken)
{
return Task.FromResult(new FileCheckOutcome
{
Exists = true,
ConnectionSucceeded = true,
MatchedFilePath = $"/pcb/{barcode}.txt"
});
}
/// <summary>
/// 返回设计时产品 ID 文件删除结果,不执行实际文件操作。
/// </summary>
/// <param name="filePath">设计时文件路径。</param>
/// <param name="cancellationToken">取消令牌。</param>
/// <returns>固定成功结果。</returns>
public Task<FileDeleteOutcome> DeleteMatchedFileAsync(string filePath, CancellationToken cancellationToken)
{
return Task.FromResult(new FileDeleteOutcome
{
IsSuccess = true,
FilePath = filePath
});
}
/// <summary>
/// 返回设计时文件校验通道测试结果。
/// </summary>
/// <param name="config">根配置。</param>
/// <param name="cancellationToken">取消令牌。</param>
/// <returns>固定成功结果。</returns>
public Task<FileCheckTestOutcome> TestConnectionAsync(AppConfig? config, CancellationToken cancellationToken)
{
return Task.FromResult(new FileCheckTestOutcome
{
IsSuccess = true,
ConnectionSucceeded = true,
RootPathAccessible = true,
StatusMessage = "设计时文件校验通道可用。"
});
}
}