From b79d13b4f25e1b854983e3cb60664d494ce025b9 Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Thu, 2 Apr 2026 19:26:13 -0700 Subject: [PATCH] =?UTF-8?q?feat(vue):=20parity=20gaps=20#50,=20#54,=20#61?= =?UTF-8?q?=20=E2=80=94=20sort/filter,=20research=20modal,=20draft=20CL=20?= =?UTF-8?q?button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #50 Job Review list view — sort + filter controls: - Sort by best match / newest first / company A-Z (client-side computed) - Remote-only checkbox filter - Job count indicator; filters reset on tab switch - Remote badge on list items #61 Cover letter generation from approved tab: - '✨ Draft' button on each approved-list item → /apply/:id - No extra API call; ApplyWorkspace handles generation from there #54 Company research modal (all API endpoints already existed): - CompanyResearchModal.vue: 3-state machine (empty→generating→ready) polling /research/task every 3s, displays all 7 research sections (company, leadership, talking points, tech, funding, red flags, accessibility), copy-to-clipboard for talking points, ↺ Refresh - InterviewCard: new 'research' emit + '🔍 Research' button for phone_screen/interviewing/offer stages - InterviewsView: wires modal with researchJobId/Title/AutoGen state; auto-opens modal with autoGenerate=true when a job is moved to phone_screen (mirrors Streamlit behaviour) --- web/src/components/CompanyResearchModal.vue | 412 ++++++++++++++++++++ web/src/components/InterviewCard.vue | 2 + web/src/views/InterviewsView.vue | 39 +- web/src/views/JobReviewView.vue | 153 +++++++- 4 files changed, 582 insertions(+), 24 deletions(-) create mode 100644 web/src/components/CompanyResearchModal.vue diff --git a/web/src/components/CompanyResearchModal.vue b/web/src/components/CompanyResearchModal.vue new file mode 100644 index 0000000..c5e175b --- /dev/null +++ b/web/src/components/CompanyResearchModal.vue @@ -0,0 +1,412 @@ + + + + + diff --git a/web/src/components/InterviewCard.vue b/web/src/components/InterviewCard.vue index 1955f7d..0d9d1c7 100644 --- a/web/src/components/InterviewCard.vue +++ b/web/src/components/InterviewCard.vue @@ -13,6 +13,7 @@ const emit = defineEmits<{ move: [jobId: number, preSelectedStage?: PipelineStage] prep: [jobId: number] survey: [jobId: number] + research: [jobId: number] }>() // Signal state @@ -180,6 +181,7 @@ const columnColor = computed(() => {