fix(rd21): retain draft revisions and qualify conflict recovery
This commit is contained in:
@@ -14,6 +14,7 @@ export type WorkspaceNextStep = { key: string; label: string; reason: string; se
|
||||
|
||||
export type WorkspaceOverview = {
|
||||
id: number;
|
||||
revision: number;
|
||||
jobTitle: string;
|
||||
company: string | null;
|
||||
location: string | null;
|
||||
@@ -252,6 +253,7 @@ export type CoverLetterVersion = {
|
||||
};
|
||||
|
||||
export type CoverLetter = {
|
||||
revision: number;
|
||||
text: string | null;
|
||||
currentVersion: number;
|
||||
versions: CoverLetterVersion[];
|
||||
@@ -295,10 +297,10 @@ export const applicationAssetsApi = {
|
||||
api.get<TailoringPlan>(`/jobapplications/${jobId}/tailoring`).then((r) => r.data),
|
||||
coverLetter: (jobId: number) =>
|
||||
api.get<CoverLetter>(`/jobapplications/${jobId}/cover-letter`).then((r) => r.data),
|
||||
saveCoverLetter: (jobId: number, text: string, source = "manual", aiAction?: string) =>
|
||||
api.put<CoverLetter>(`/jobapplications/${jobId}/cover-letter`, { text, source, aiAction }).then((r) => r.data),
|
||||
restoreCoverLetter: (jobId: number, version: number) =>
|
||||
api.post<CoverLetter>(`/jobapplications/${jobId}/cover-letter/versions/${version}/restore`).then((r) => r.data),
|
||||
saveCoverLetter: (jobId: number, text: string, expectedVersion: number, source = "manual", aiAction?: string) =>
|
||||
api.put<CoverLetter>(`/jobapplications/${jobId}/cover-letter`, { text, source, aiAction, expectedVersion }).then((r) => r.data),
|
||||
restoreCoverLetter: (jobId: number, version: number, expectedVersion: number) =>
|
||||
api.post<CoverLetter>(`/jobapplications/${jobId}/cover-letter/versions/${version}/restore`, { expectedVersion }).then((r) => r.data),
|
||||
submittedPackages: (jobId: number) =>
|
||||
api.get<SubmittedPackage[]>(`/jobapplications/${jobId}/submitted-packages`).then((r) => r.data),
|
||||
captureSubmittedPackage: (jobId: number) =>
|
||||
@@ -307,8 +309,12 @@ export const applicationAssetsApi = {
|
||||
api.get<SubmittedPackageDetail>(`/jobapplications/${jobId}/submitted-packages/${packageId}`).then((r) => r.data),
|
||||
downloadSubmittedAttachment: (jobId: number, packageId: number, attachmentId: number) =>
|
||||
api.get<Blob>(`/jobapplications/${jobId}/submitted-packages/${packageId}/attachments/${attachmentId}`, { responseType: "blob" }).then((r) => r.data),
|
||||
saveApplicationDrafts: (jobId: number, applicationAnswerDraft: string, recruiterMessageDraft: string) =>
|
||||
api.put(`/jobapplications/${jobId}/application-drafts`, { applicationAnswerDraft, recruiterMessageDraft }).then(() => undefined),
|
||||
saveApplicationDrafts: (jobId: number, applicationAnswerDraft: string, recruiterMessageDraft: string, expectedVersion: number) =>
|
||||
api.put(`/jobapplications/${jobId}/application-drafts`, { applicationAnswerDraft, recruiterMessageDraft, expectedVersion }).then((response) => {
|
||||
const revision = Number(response.headers?.["x-job-version"]);
|
||||
if (!Number.isInteger(revision) || revision <= 0) throw new Error("Missing committed job revision.");
|
||||
return revision;
|
||||
}),
|
||||
};
|
||||
|
||||
// Phase 5.5 — Interview preparation and follow-up. Prep content is the user's; AI suggestions come
|
||||
|
||||
Reference in New Issue
Block a user