Task 6 - 转换报告: - 扩展 ConversionReport 模型 - 添加 Id, ProjectId, SourceLanguage, TargetLanguage - 添加 IssueCount, TodoCount, ValidationStatus - 添加 CreatedAt, LastValidatedAt 时间戳 Task 7 - 存储服务: - IReportStorageService 接口 - ReportStorageService 内存实现 (MVP 版) - 支持保存/查询/删除报告 - 项目统计功能 WebAPI 项目: - CodePlay.WebAPI 项目创建 - JWT 认证配置 - AuthController (login, refresh, me) - ReportController (CRUD + stats) - Swagger 集成 测试:39 个测试全部通过 ✅ Co-authored-by: monkeycode-ai <[email protected]>
56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using CodePlay.Core.Services;
|
|
using CodePlay.Core.Models;
|
|
|
|
namespace CodePlay.WebAPI.Controllers;
|
|
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
[Authorize]
|
|
public class ReportController : ControllerBase
|
|
{
|
|
private readonly IReportStorageService _storageService;
|
|
|
|
public ReportController(IReportStorageService storageService)
|
|
{
|
|
_storageService = storageService;
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<ActionResult<List<ConversionReport>>> GetAllReports()
|
|
{
|
|
var reports = await _storageService.GetAllReportsAsync();
|
|
return Ok(reports);
|
|
}
|
|
|
|
[HttpGet("{reportId}")]
|
|
public async Task<ActionResult<ConversionReport>> GetReport(string reportId)
|
|
{
|
|
var report = await _storageService.GetReportAsync(reportId);
|
|
if (report == null) return NotFound();
|
|
return Ok(report);
|
|
}
|
|
|
|
[HttpGet("project/{projectId}")]
|
|
public async Task<ActionResult<List<ConversionReport>>> GetReportsByProject(string projectId)
|
|
{
|
|
var reports = await _storageService.GetReportsByProjectAsync(projectId);
|
|
return Ok(reports);
|
|
}
|
|
|
|
[HttpDelete("{reportId}")]
|
|
public async Task<IActionResult> DeleteReport(string reportId)
|
|
{
|
|
await _storageService.DeleteReportAsync(reportId);
|
|
return NoContent();
|
|
}
|
|
|
|
[HttpGet("stats")]
|
|
public async Task<ActionResult<Core.Services.ConversionStatistics>> GetStatistics()
|
|
{
|
|
var stats = await _storageService.GetStatisticsAsync();
|
|
return Ok(stats);
|
|
}
|
|
}
|