feat: 实现 Task 6-7 报告和存储服务
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 <monkeycode-ai@chaitin.com>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user