feat: persist job source and market
CI and Deploy / test (push) Successful in 2m34s
CI and Deploy / deploy (push) Successful in 56s

This commit is contained in:
cesnimda
2026-07-30 23:38:22 +02:00
parent efc9d83c25
commit 988a91a151
12 changed files with 62 additions and 9 deletions
@@ -102,7 +102,9 @@ namespace JobTrackerApi.Controllers
string? CoverLetterText,
string? JobUrl,
DateTime? DateApplied,
DateTime? FeedbackRequestedAt
DateTime? FeedbackRequestedAt,
string? Source = null,
string? CountryCode = null
);
public sealed record UpdateJobApplicationRequest(
@@ -762,6 +762,28 @@ Canonical profile:
ResponseDate = null,
};
var source = string.IsNullOrWhiteSpace(request.Source) ? null : request.Source.Trim().ToLowerInvariant();
if (source?.Length > 32) source = source[..32];
var countryCode = string.IsNullOrWhiteSpace(request.CountryCode) ? null : request.CountryCode.Trim().ToUpperInvariant();
if (countryCode?.Length != 2) countryCode = null;
job.Job = new Job
{
OwnerUserId = job.OwnerUserId,
CompanyId = job.CompanyId,
JobTitle = job.JobTitle,
Location = job.Location,
JobUrl = job.JobUrl,
Description = job.Description,
TranslatedDescription = job.TranslatedDescription,
DescriptionLanguage = job.DescriptionLanguage,
Tags = job.Tags,
Deadline = job.Deadline,
Salary = job.Salary,
Source = source,
CountryCode = countryCode,
SavedAt = job.SavedAt,
};
// A job created straight into a pre-application stage has not been applied to, so it
// must not carry an applied date. SyncAppliedDate also covers the reverse: a create
// that omits DateApplied but names a real stage still gets stamped.
@@ -769,12 +791,17 @@ Canonical profile:
(job.SalaryMin, job.SalaryMax, job.SalaryCurrency, job.SalaryPeriod) =
NormalizeSalary(request.SalaryMin, request.SalaryMax, request.SalaryCurrency, request.SalaryPeriod);
job.Job.SalaryMin = job.SalaryMin;
job.Job.SalaryMax = job.SalaryMax;
job.Job.SalaryCurrency = job.SalaryCurrency;
job.Job.SalaryPeriod = job.SalaryPeriod;
// Generate and persist a short summary at creation time to avoid repeated model calls.
try
{
var shortSum = await _summarizer.SummarizeAsync(BuildSummarySource(job), 160, 60);
job.ShortSummary = shortSum;
job.Job.ShortSummary = shortSum;
}
catch
{