Files
jobtrackingapp/job-tracker-ui/src/types.ts
T

162 lines
3.4 KiB
TypeScript

export interface Company {
id: number;
name: string;
location?: string;
source?: string;
recruiterName?: string;
recruiterEmail?: string;
recruiterLinkedIn?: string;
lastContactedAt?: string;
nextContactAt?: string;
pipelineStage?: string;
}
export interface JobApplication {
id: number;
jobTitle: string;
company: Company;
companyId?: number;
status: string;
dateApplied: string;
location?: string;
salary?: string;
nextAction?: string;
followUpAt?: string;
feedbackRequestedAt?: string;
responseReceived: boolean;
responseDate?: string;
description?: string;
translatedDescription?: string;
descriptionLanguage?: string;
tags?: string; // JSON array string
deadline?: string;
notes?: string;
coverLetterText?: string;
recruiterMessageDraft?: string | null;
jobUrl?: string;
shortSummary?: string;
fullSummary?: string | null;
tailoredCvText?: string | null;
tailoredCvUpdatedAt?: string | null;
hasResume?: boolean;
hasCoverLetter?: boolean;
hasPortfolio?: boolean;
hasOtherAttachment?: boolean;
daysSince: number;
isDeleted?: boolean;
deletedAt?: string;
needsFollowUp?: boolean;
followUpReason?: string;
}
export interface CandidateFitChannelGuidance {
cv: string[];
coverLetter: string[];
interview: string[];
recruiterMessage: string[];
}
export interface CandidateFit {
matchSummary: string;
fitLevel: string;
matchScore: number;
strengths: string[];
gaps: string[];
mention: string[];
avoid: string[];
cvImprovements: string[];
missingKeywords: string[];
interviewPrep: string[];
tailoredPitch: string;
guidance: CandidateFitChannelGuidance;
coverLetterDraft?: string | null;
recruiterMessageDraft?: string | null;
}
export interface FocusPlanResponse {
immediatePriorities: string[];
cvBulletIdeas: string[];
proofPointsToLeadWith: string[];
coverLetterAngles: string[];
followUpApproach: string[];
strategicSummary: string;
}
export interface InterviewPrepResponse {
summary: string;
talkingPoints: string[];
likelyQuestions: string[];
weakSpots: string[];
}
export interface ReadinessResponse {
score: number;
level: string;
completed: string[];
missing: string[];
reminders: string[];
}
export interface ApplicationPackageResponse {
tailoredCvText: string;
coverLetterDraft?: string | null;
applicationAnswerDraft?: string | null;
recruiterMessageDraft?: string | null;
keyPoints: string[];
attachmentSignals: string[];
attachmentFilesUsed: string[];
coverLetterVariants: string[];
recruiterMessageVariants: string[];
}
export interface SaveApplicationDraftsRequest {
coverLetterText?: string | null;
notes?: string | null;
recruiterMessageDraft?: string | null;
}
export interface CorrespondenceMessage {
id: number;
jobApplicationId: number;
from: string;
content: string;
subject?: string;
channel?: string;
date: string;
}
export interface GmailStatus {
connected: boolean;
gmailAddress?: string;
connectedAt?: string;
lastSyncedAt?: string;
}
export interface GmailMessageSummary {
id: string;
threadId: string;
subject: string;
from: string;
to: string;
date?: string;
snippet: string;
}
export interface JobImportResult {
title?: string;
company?: string;
location?: string;
description?: string;
translatedDescription?: string;
language?: string;
tags: string[];
sourceUrl: string;
deadline?: string;
success: boolean;
parser?: string;
error?: string;
}