feat(interview): integrate contextual AI prep

This commit is contained in:
cesnimda
2026-08-28 12:53:35 +02:00
parent 3b4adb8281
commit 8e344379b4
3 changed files with 272 additions and 30 deletions
+80
View File
@@ -91,6 +91,46 @@ export const translations = {
confirmDestructiveHint: "This action may be hard to undo.",
confirmStandardHint: "Please confirm this action.",
enterValue: "Enter value",
interviewPrepTitle: "Interview preparation",
interviewPrepSubtitle: "Your research, answers and questions. AI suggestions are only saved when you accept them.",
interviewPrepEarly: "This application has not reached an interview stage yet. Preparing early is fine.",
interviewPrepProgress: "Interview preparation progress",
interviewPrepReadyCount: "{prepared} of {total} ready",
interviewPrepEmpty: "Nothing prepared yet. Add an expected question, a company fact worth knowing, or a STAR example you want ready.",
interviewPrepCategory: "Category",
interviewPrepAddLabel: "Add a question, topic or note",
interviewPrepAdd: "Add",
interviewAiTitle: "AI interview coach",
interviewAiSubtitle: "Uses the linked CV, job advert and application analysis. Suggestions never overwrite your notes.",
interviewAiUsing: "Using",
interviewAiSelectCv: "Select a CV on the CV tab before generating tailored interview preparation.",
interviewAiFocus: "Preparation focus",
interviewAiFull: "Complete interview brief",
interviewAiTechnical: "Technical questions",
interviewAiBehavioural: "Behavioural questions",
interviewAiStar: "STAR preparation",
interviewAiGaps: "Weak areas and likely concerns",
interviewAiGenerate: "Generate preparation",
interviewAiGenerating: "Generating…",
interviewAiProRequired: "Pro required",
interviewAiAddToPrep: "Add to preparation",
interviewAiFailed: "Could not generate interview preparation.",
interviewAiAcceptFailed: "Could not add the suggestion to your preparation.",
interviewPrepReadyLabel: "Ready: {title}",
interviewPrepFromAi: "From AI",
interviewPrepAnswerPlaceholder: "Your answer, in your own words.",
interviewPrepSaveAnswer: "Save answer",
interviewPrepDiscard: "Discard",
interviewPrepDelete: "Delete",
interviewPrepDeleteLabel: "Delete: {title}",
interviewPrepDeleteTitle: "Delete preparation item?",
interviewPrepDeleteMessage: "Delete “{title}”? This cannot be undone.",
interviewFollowUpTitle: "Follow-up",
interviewFollowUpSubtitle: "Uses the same date as reminders. Follow-up tasks remain in the application checklist.",
interviewFollowUpOpenTask: "{count} open follow-up task on the checklist.",
interviewFollowUpOpenTasks: "{count} open follow-up tasks on the checklist.",
interviewFollowUpDate: "Follow up on",
interviewFollowUpEmpty: "No follow-up scheduled. Applications without one can go quiet.",
notFoundTitle: "Page not found",
notFoundBody: "The page you were looking for does not exist or may have moved.",
appErrorTitle: "Something went wrong",
@@ -1318,6 +1358,46 @@ export const translations = {
confirmDestructiveHint: "Denne handlingen kan være vanskelig å angre.",
confirmStandardHint: "Bekreft denne handlingen.",
enterValue: "Skriv inn verdi",
interviewPrepTitle: "Intervjuforberedelse",
interviewPrepSubtitle: "Din research, dine svar og spørsmål. AI-forslag lagres bare når du godtar dem.",
interviewPrepEarly: "Søknaden har ikke nådd intervjustadiet ennå. Det er helt greit å forberede seg tidlig.",
interviewPrepProgress: "Fremdrift for intervjuforberedelse",
interviewPrepReadyCount: "{prepared} av {total} klare",
interviewPrepEmpty: "Ingenting er forberedt ennå. Legg til et forventet spørsmål, et relevant selskapsfakta eller et STAR-eksempel.",
interviewPrepCategory: "Kategori",
interviewPrepAddLabel: "Legg til spørsmål, tema eller notat",
interviewPrepAdd: "Legg til",
interviewAiTitle: "AI-intervjutrening",
interviewAiSubtitle: "Bruker tilknyttet CV, stillingsannonse og søknadsanalyse. Forslag overskriver aldri notatene dine.",
interviewAiUsing: "Bruker",
interviewAiSelectCv: "Velg en CV i CV-fanen før du genererer tilpasset intervjuforberedelse.",
interviewAiFocus: "Fokus for forberedelsen",
interviewAiFull: "Komplett intervjuforberedelse",
interviewAiTechnical: "Tekniske spørsmål",
interviewAiBehavioural: "Atferdsbaserte spørsmål",
interviewAiStar: "STAR-forberedelse",
interviewAiGaps: "Svake områder og sannsynlige bekymringer",
interviewAiGenerate: "Generer forberedelse",
interviewAiGenerating: "Genererer…",
interviewAiProRequired: "Krever Pro",
interviewAiAddToPrep: "Legg til i forberedelsen",
interviewAiFailed: "Kunne ikke generere intervjuforberedelse.",
interviewAiAcceptFailed: "Kunne ikke legge forslaget til i forberedelsen.",
interviewPrepReadyLabel: "Klar: {title}",
interviewPrepFromAi: "Fra AI",
interviewPrepAnswerPlaceholder: "Svaret ditt, med egne ord.",
interviewPrepSaveAnswer: "Lagre svar",
interviewPrepDiscard: "Forkast",
interviewPrepDelete: "Slett",
interviewPrepDeleteLabel: "Slett: {title}",
interviewPrepDeleteTitle: "Slette forberedelseselement?",
interviewPrepDeleteMessage: "Slette «{title}»? Dette kan ikke angres.",
interviewFollowUpTitle: "Oppfølging",
interviewFollowUpSubtitle: "Bruker samme dato som påminnelser. Oppfølgingsoppgaver forblir i søknadssjekklisten.",
interviewFollowUpOpenTask: "{count} åpen oppfølgingsoppgave i sjekklisten.",
interviewFollowUpOpenTasks: "{count} åpne oppfølgingsoppgaver i sjekklisten.",
interviewFollowUpDate: "Følg opp den",
interviewFollowUpEmpty: "Ingen oppfølging er planlagt. Søknader uten oppfølging kan bli stille.",
notFoundTitle: "Siden ble ikke funnet",
notFoundBody: "Siden du lette etter finnes ikke eller kan ha blitt flyttet.",
appErrorTitle: "Noe gikk galt",