docs: add XML documentation and ConfigManager implementation plans
Add comprehensive XML documentation (param/returns tags) across 132 source files to improve IntelliSense and API discoverability. Include ConfigManager design documents and implementation plans for phases 1-9.
This commit is contained in:
@@ -28,6 +28,12 @@ public class AuthController : ApiControllerBase
|
||||
private readonly IRsaKeyService _rsaKeyService;
|
||||
private readonly ILogger<AuthController> _logger;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="AuthController"/> class.
|
||||
/// </summary>
|
||||
/// <param name="authService">The authentication service.</param>
|
||||
/// <param name="rsaKeyService">The RSA key service for credential encryption.</param>
|
||||
/// <param name="logger">Logger instance.</param>
|
||||
public AuthController(
|
||||
IAuthService authService,
|
||||
IRsaKeyService rsaKeyService,
|
||||
|
||||
@@ -14,6 +14,8 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Uploads an Excel file containing component lot/item pairs and returns the matched lots
|
||||
/// </summary>
|
||||
/// <param name="file">The Excel file containing component lot/item pairs.</param>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpPost("componentlots/upload")]
|
||||
[ProducesResponseType(typeof(FileUploadResult<LotViewModel>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(FileUploadResult<LotViewModel>), StatusCodes.Status400BadRequest)]
|
||||
@@ -63,6 +65,7 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Downloads an Excel template with current component lot data
|
||||
/// </summary>
|
||||
/// <param name="lotNumbers">The list of lot view models to include in the export.</param>
|
||||
[HttpPost("componentlots/download")]
|
||||
[ProducesResponseType(typeof(FileContentResult), StatusCodes.Status200OK)]
|
||||
public IActionResult DownloadComponentLots([FromBody] List<LotViewModel>? lotNumbers)
|
||||
|
||||
@@ -14,6 +14,8 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Uploads an Excel file containing item numbers and returns the matched items
|
||||
/// </summary>
|
||||
/// <param name="file">The uploaded Excel file containing item numbers.</param>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpPost("items/upload")]
|
||||
[ProducesResponseType(typeof(FileUploadResult<ItemViewModel>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(FileUploadResult<ItemViewModel>), StatusCodes.Status400BadRequest)]
|
||||
@@ -62,6 +64,7 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Downloads an Excel template with current item data
|
||||
/// </summary>
|
||||
/// <param name="items">The list of items to include in the template.</param>
|
||||
[HttpPost("items/download")]
|
||||
[ProducesResponseType(typeof(FileContentResult), StatusCodes.Status200OK)]
|
||||
public IActionResult DownloadItems([FromBody] List<ItemViewModel>? items)
|
||||
|
||||
@@ -14,6 +14,8 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Uploads an Excel file containing part operations and returns the parsed data
|
||||
/// </summary>
|
||||
/// <param name="file">The Excel file to upload.</param>
|
||||
/// <returns>Result containing parsed part operations.</returns>
|
||||
[HttpPost("partoperations/upload")]
|
||||
[ProducesResponseType(typeof(FileUploadResult<PartOperationViewModel>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(FileUploadResult<PartOperationViewModel>), StatusCodes.Status400BadRequest)]
|
||||
@@ -54,6 +56,8 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Downloads an Excel template with current part operation data
|
||||
/// </summary>
|
||||
/// <param name="partOperations">Optional list of part operations to include in template.</param>
|
||||
/// <returns>Excel file.</returns>
|
||||
[HttpPost("partoperations/download")]
|
||||
[ProducesResponseType(typeof(FileContentResult), StatusCodes.Status200OK)]
|
||||
public IActionResult DownloadPartOperations([FromBody] List<PartOperationViewModel>? partOperations)
|
||||
|
||||
@@ -14,6 +14,9 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Uploads an Excel file containing work order numbers and returns the matched work orders
|
||||
/// </summary>
|
||||
/// <param name="file">The Excel file to upload.</param>
|
||||
/// <param name="ct">Cancellation token.</param>
|
||||
/// <returns>Result containing parsed work orders.</returns>
|
||||
[HttpPost("workorders/upload")]
|
||||
[ProducesResponseType(typeof(FileUploadResult<WorkOrderViewModel>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(FileUploadResult<WorkOrderViewModel>), StatusCodes.Status400BadRequest)]
|
||||
@@ -63,6 +66,8 @@ public partial class FileIOController
|
||||
/// <summary>
|
||||
/// Downloads an Excel template with current work order data
|
||||
/// </summary>
|
||||
/// <param name="workOrders">Optional list of work order numbers to include in template.</param>
|
||||
/// <returns>Excel file.</returns>
|
||||
[HttpPost("workorders/download")]
|
||||
[ProducesResponseType(typeof(FileContentResult), StatusCodes.Status200OK)]
|
||||
public IActionResult DownloadWorkOrders([FromBody] List<long>? workOrders)
|
||||
|
||||
@@ -21,6 +21,13 @@ public partial class FileIOController : ApiControllerBase
|
||||
private readonly IExcelTemplateService _templateService;
|
||||
private readonly ILogger<FileIOController> _logger;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the FileIOController class.
|
||||
/// </summary>
|
||||
/// <param name="repository">Repository for accessing lot finder data.</param>
|
||||
/// <param name="parserService">Service for parsing Excel files.</param>
|
||||
/// <param name="templateService">Service for generating Excel templates.</param>
|
||||
/// <param name="logger">Logger for controller operations.</param>
|
||||
public FileIOController(
|
||||
ILotFinderRepository repository,
|
||||
IExcelParserService parserService,
|
||||
|
||||
@@ -15,6 +15,10 @@ public class LookupController : ApiControllerBase
|
||||
{
|
||||
private readonly ILotFinderRepository _repository;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="LookupController"/> class.
|
||||
/// </summary>
|
||||
/// <param name="repository">The LotFinder repository for data access.</param>
|
||||
public LookupController(ILotFinderRepository repository)
|
||||
{
|
||||
_repository = repository;
|
||||
|
||||
@@ -20,6 +20,12 @@ public class PipelineController : ApiControllerBase
|
||||
private readonly IDataUpdateRepository _dataUpdateRepository;
|
||||
private readonly IPipelineMapper _mapper;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="PipelineController"/> class.
|
||||
/// </summary>
|
||||
/// <param name="pipelineFactory">The ETL pipeline factory.</param>
|
||||
/// <param name="dataUpdateRepository">The data update repository.</param>
|
||||
/// <param name="mapper">The pipeline mapper.</param>
|
||||
public PipelineController(
|
||||
IEtlPipelineFactory pipelineFactory,
|
||||
IDataUpdateRepository dataUpdateRepository,
|
||||
@@ -45,6 +51,7 @@ public class PipelineController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Gets configuration for a specific pipeline.
|
||||
/// </summary>
|
||||
/// <param name="name">The pipeline name.</param>
|
||||
[HttpGet(ApiRoutes.Pipelines.ByName)]
|
||||
public ActionResult<PipelineConfigDto> GetPipeline(string name)
|
||||
{
|
||||
@@ -60,6 +67,8 @@ public class PipelineController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Gets schedule status for a pipeline.
|
||||
/// </summary>
|
||||
/// <param name="name">The pipeline name.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
[HttpGet(ApiRoutes.Pipelines.Status)]
|
||||
public async Task<ActionResult<PipelineStatusResponse>> GetStatus(
|
||||
string name,
|
||||
@@ -104,6 +113,9 @@ public class PipelineController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Gets recent execution history for a pipeline.
|
||||
/// </summary>
|
||||
/// <param name="name">The pipeline name.</param>
|
||||
/// <param name="count">The maximum number of recent executions to retrieve.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
[HttpGet(ApiRoutes.Pipelines.Executions)]
|
||||
public async Task<ActionResult<PipelineExecutionsResponse>> GetExecutions(
|
||||
string name,
|
||||
|
||||
@@ -17,6 +17,10 @@ public class RefreshStatusController : ApiControllerBase
|
||||
{
|
||||
private readonly ILotFinderRepository _repository;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="RefreshStatusController"/> class.
|
||||
/// </summary>
|
||||
/// <param name="repository">The repository for accessing data update records.</param>
|
||||
public RefreshStatusController(ILotFinderRepository repository)
|
||||
{
|
||||
_repository = repository;
|
||||
|
||||
@@ -26,6 +26,13 @@ public class SearchController : ApiControllerBase
|
||||
private readonly ILogger<SearchController> _logger;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the SearchController.
|
||||
/// </summary>
|
||||
/// <param name="repository">The lot finder repository for data access.</param>
|
||||
/// <param name="hubContext">The SignalR hub context for sending search updates.</param>
|
||||
/// <param name="logger">The logger for recording search operations.</param>
|
||||
/// <param name="timeProvider">The time provider for generating timestamps.</param>
|
||||
public SearchController(
|
||||
ILotFinderRepository repository,
|
||||
IHubContext<StatusHub> hubContext,
|
||||
@@ -41,6 +48,7 @@ public class SearchController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Gets all searches for the current user
|
||||
/// </summary>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(IEnumerable<SearchViewModel>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
@@ -59,6 +67,7 @@ public class SearchController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Gets all queued searches
|
||||
/// </summary>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpGet("queue")]
|
||||
[ProducesResponseType(typeof(IEnumerable<SearchViewModel>), StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<IEnumerable<SearchViewModel>>> GetQueuedSearches(CancellationToken ct)
|
||||
@@ -71,6 +80,8 @@ public class SearchController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Gets a single search by ID
|
||||
/// </summary>
|
||||
/// <param name="id">The search identifier.</param>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpGet("{id:int}")]
|
||||
[ProducesResponseType(typeof(SearchViewModel), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
@@ -87,6 +98,8 @@ public class SearchController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Copies an existing search for the current user (returns copy without persisting)
|
||||
/// </summary>
|
||||
/// <param name="id">The search identifier to copy.</param>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpGet("{id:int}/copy")]
|
||||
[ProducesResponseType(typeof(SearchViewModel), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
@@ -121,6 +134,8 @@ public class SearchController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Creates a new search
|
||||
/// </summary>
|
||||
/// <param name="viewModel">The search view model containing criteria and name.</param>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpPost]
|
||||
[ProducesResponseType(typeof(int), StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
@@ -160,6 +175,8 @@ public class SearchController : ApiControllerBase
|
||||
/// <summary>
|
||||
/// Downloads search results as an Excel file
|
||||
/// </summary>
|
||||
/// <param name="id">The search identifier.</param>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
[HttpGet("{id:int}/results")]
|
||||
[ProducesResponseType(typeof(FileContentResult), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
|
||||
@@ -16,6 +16,12 @@ public class StatusHub : Hub
|
||||
private readonly ILogger<StatusHub> _logger;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="StatusHub"/> class.
|
||||
/// </summary>
|
||||
/// <param name="cache">The memory cache for caching status updates.</param>
|
||||
/// <param name="logger">The logger instance.</param>
|
||||
/// <param name="timeProvider">The time provider for getting current UTC time.</param>
|
||||
public StatusHub(IMemoryCache cache, ILogger<StatusHub> logger, TimeProvider timeProvider)
|
||||
{
|
||||
_cache = cache;
|
||||
|
||||
@@ -12,15 +12,23 @@ public interface IPipelineMapper
|
||||
/// <summary>
|
||||
/// Maps a pipeline configuration to its DTO representation.
|
||||
/// </summary>
|
||||
/// <param name="name">The pipeline name.</param>
|
||||
/// <param name="config">The pipeline configuration.</param>
|
||||
/// <param name="defaults">The default schedule settings.</param>
|
||||
PipelineConfigDto MapToDto(string name, PipelineConfig config, ScheduleDefaults defaults);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the effective interval for a schedule, applying defaults if not specified.
|
||||
/// </summary>
|
||||
/// <param name="config">The schedule configuration, or null to use defaults.</param>
|
||||
/// <param name="defaults">The default schedule settings.</param>
|
||||
/// <param name="updateType">The type of update to get the interval for.</param>
|
||||
int GetEffectiveInterval(ScheduleConfig? config, ScheduleDefaults defaults, UpdateTypes updateType);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the schedule configuration for a specific update type.
|
||||
/// </summary>
|
||||
/// <param name="config">The pipeline configuration.</param>
|
||||
/// <param name="updateType">The type of update to get the configuration for.</param>
|
||||
ScheduleConfig? GetScheduleConfig(PipelineConfig config, UpdateTypes updateType);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user