refactor: Rename TrueCV to RealCV throughout codebase

- Renamed all directories (TrueCV.* -> RealCV.*)
- Renamed all project files (.csproj)
- Renamed solution file (TrueCV.sln -> RealCV.sln)
- Updated all namespaces in C# and Razor files
- Updated project references
- Updated CSS variable names

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-22 20:47:55 +00:00
parent 6f384f8d09
commit 92a3b60878
107 changed files with 693 additions and 554 deletions

View File

@@ -0,0 +1,18 @@
namespace RealCV.Application.Interfaces;
public interface IAuditService
{
Task LogAsync(Guid userId, string action, string? entityType = null, Guid? entityId = null, string? details = null, string? ipAddress = null);
}
public static class AuditActions
{
public const string CVUploaded = "CV_UPLOADED";
public const string CVProcessed = "CV_PROCESSED";
public const string CVDeleted = "CV_DELETED";
public const string ReportViewed = "REPORT_VIEWED";
public const string ReportExported = "REPORT_EXPORTED";
public const string UserLogin = "USER_LOGIN";
public const string UserLogout = "USER_LOGOUT";
public const string UserRegistered = "USER_REGISTERED";
}

View File

@@ -0,0 +1,14 @@
using RealCV.Application.DTOs;
using RealCV.Application.Models;
namespace RealCV.Application.Interfaces;
public interface ICVCheckService
{
Task<Guid> CreateCheckAsync(Guid userId, Stream file, string fileName);
Task<CVCheckDto?> GetCheckAsync(Guid id);
Task<CVCheckDto?> GetCheckForUserAsync(Guid id, Guid userId);
Task<List<CVCheckDto>> GetUserChecksAsync(Guid userId);
Task<VeracityReport?> GetReportAsync(Guid checkId, Guid userId);
Task<bool> DeleteCheckAsync(Guid checkId, Guid userId);
}

View File

@@ -0,0 +1,8 @@
using RealCV.Application.Models;
namespace RealCV.Application.Interfaces;
public interface ICVParserService
{
Task<CVData> ParseAsync(Stream fileStream, string fileName, CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,15 @@
using RealCV.Application.Models;
namespace RealCV.Application.Interfaces;
public interface ICompanyNameMatcherService
{
/// <summary>
/// Uses AI to semantically compare a company name from a CV against Companies House candidates.
/// Returns the best match with confidence score and reasoning.
/// </summary>
Task<SemanticMatchResult?> FindBestMatchAsync(
string cvCompanyName,
List<CompanyCandidate> candidates,
CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,11 @@
using RealCV.Application.DTOs;
using RealCV.Application.Models;
namespace RealCV.Application.Interfaces;
public interface ICompanyVerifierService
{
Task<CompanyVerificationResult> VerifyCompanyAsync(string companyName, DateOnly? startDate, DateOnly? endDate, string? jobTitle = null);
Task<List<CompanySearchResult>> SearchCompaniesAsync(string query);
Task<bool?> VerifyDirectorAsync(string companyNumber, string candidateName, DateOnly? startDate, DateOnly? endDate);
}

View File

@@ -0,0 +1,16 @@
using RealCV.Application.Models;
namespace RealCV.Application.Interfaces;
public interface IEducationVerifierService
{
/// <summary>
/// Verify a single education entry.
/// </summary>
EducationVerificationResult Verify(EducationEntry education);
/// <summary>
/// Verify all education entries and check for timeline issues.
/// </summary>
List<EducationVerificationResult> VerifyAll(List<EducationEntry> education, List<EmploymentEntry>? employment = null);
}

View File

@@ -0,0 +1,8 @@
namespace RealCV.Application.Interfaces;
public interface IFileStorageService
{
Task<string> UploadAsync(Stream fileStream, string fileName);
Task<Stream> DownloadAsync(string blobUrl);
Task DeleteAsync(string blobUrl);
}

View File

@@ -0,0 +1,8 @@
using RealCV.Application.Models;
namespace RealCV.Application.Interfaces;
public interface ITimelineAnalyserService
{
TimelineAnalysisResult Analyse(List<EmploymentEntry> employmentHistory);
}

View File

@@ -0,0 +1,6 @@
namespace RealCV.Application.Interfaces;
public interface IUserContextService
{
Task<Guid?> GetCurrentUserIdAsync();
}