feat: cover letter training export (Phase 1) #111

Merged
pyr0ball merged 9 commits from feat/cover-letter-training-export into main 2026-05-04 08:55:16 -07:00
6 changed files with 10 additions and 8 deletions
Showing only changes of commit f42a515629 - Show all commits

View file

@ -43,13 +43,14 @@ export interface WizardInferenceData {
testMessage: string testMessage: string
} }
// Total mandatory steps (integrations step 7 is optional/skip-able) // Total mandatory steps (integrations step 8 is optional/skip-able)
export const WIZARD_STEPS = 7 export const WIZARD_STEPS = 8
export const STEP_LABELS = ['Hardware', 'Tier', 'Resume', 'Identity', 'Inference', 'Search', 'Integrations'] export const STEP_LABELS = ['Hardware', 'Tier', 'Resume', 'Training', 'Identity', 'Inference', 'Search', 'Integrations']
export const STEP_ROUTES = [ export const STEP_ROUTES = [
'/setup/hardware', '/setup/hardware',
'/setup/tier', '/setup/tier',
'/setup/resume', '/setup/resume',
'/setup/training',
'/setup/identity', '/setup/identity',
'/setup/inference', '/setup/inference',
'/setup/search', '/setup/search',
@ -163,7 +164,7 @@ export const useWizardStore = defineStore('wizard', () => {
} }
// Resume at next step after last completed // Resume at next step after last completed
const resumeAt = Math.max(1, Math.min(data.wizard_step + 1, 7)) const resumeAt = Math.max(1, Math.min(data.wizard_step + 1, 8))
currentStep.value = resumeAt currentStep.value = resumeAt
return routeForStep(resumeAt) return routeForStep(resumeAt)
} finally { } finally {

View file

@ -60,6 +60,7 @@ async function checkLocalModel() {
onMounted(async () => { onMounted(async () => {
store.startPolling() store.startPolling()
await store.loadStatus()
await store.loadPairs() await store.loadPairs()
await store.loadDbPairs() await store.loadDbPairs()
if (store.step === 3 && !config.isCloud) await checkLocalModel() if (store.step === 3 && !config.isCloud) await checkLocalModel()

View file

@ -92,7 +92,7 @@ async function next() {
} }
wizard.identity = { ...form } wizard.identity = { ...form }
const ok = await wizard.saveStep(4, { const ok = await wizard.saveStep(5, {
name: form.name, name: form.name,
email: form.email, email: form.email,
phone: form.phone, phone: form.phone,

View file

@ -127,7 +127,7 @@ async function next() {
}) })
wizard.inference.services = svcMap wizard.inference.services = svcMap
const ok = await wizard.saveStep(5, { const ok = await wizard.saveStep(6, {
anthropic_key: form.anthropicKey, anthropic_key: form.anthropicKey,
openai_url: form.openaiUrl, openai_url: form.openaiUrl,
openai_key: form.openaiKey, openai_key: form.openaiKey,

View file

@ -85,7 +85,7 @@ function back() { router.push('/setup/search') }
async function finish() { async function finish() {
// Save integration selections (step 7) then mark wizard complete // Save integration selections (step 7) then mark wizard complete
await wizard.saveStep(7, { integrations: [...checkedIds.value] }) await wizard.saveStep(8, { integrations: [...checkedIds.value] })
const ok = await wizard.complete() const ok = await wizard.complete()
if (ok) router.replace('/') if (ok) router.replace('/')
} }

View file

@ -143,7 +143,7 @@ async function next() {
wizard.search.titles = [...form.titles] wizard.search.titles = [...form.titles]
wizard.search.locations = [...form.locations] wizard.search.locations = [...form.locations]
const ok = await wizard.saveStep(6, { const ok = await wizard.saveStep(7, {
search: { search: {
titles: form.titles, titles: form.titles,
locations: form.locations, locations: form.locations,