- Browser extension (Chromium MV3) injecting a "send to tracker" button next to the Indeed job description; scrapes job info and posts it to a new /api/indeed-import endpoint (CORS-enabled), configurable tracker URL via popup. - New "Entwurf" status. Imports create a draft and trigger background AI generation of tailored Anschreiben + Lebenslauf (PDF attachments) via the Ollama Cloud API, grounded strictly in user-provided base documents. - Vorlagen page to manage base documents; attachments UI, generation status polling, regenerate and download routes on the application page. - Schema: ort/stellenbeschreibung/quelle_url/generierung_* columns, plus basis_dokumente and anhaenge tables (with migrations). - Config via .env (OLLAMA_API_KEY/OLLAMA_MODEL/OLLAMA_HOST); dependency-free .env loader. Dockerfile copies lib/, .dockerignore added. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
1.2 KiB
CSS
49 lines
1.2 KiB
CSS
/* Button injected next to the Indeed job description */
|
|
.bt-import-wrap {
|
|
margin: 12px 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
}
|
|
|
|
.bt-import-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
align-self: flex-start;
|
|
background: #16a34a;
|
|
color: #fff;
|
|
border: none;
|
|
border-radius: 8px;
|
|
padding: 10px 16px;
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
|
|
transition: background 0.15s ease, opacity 0.15s ease;
|
|
}
|
|
|
|
.bt-import-btn:hover { background: #15803d; }
|
|
.bt-import-btn:disabled { opacity: 0.7; cursor: default; }
|
|
|
|
.bt-import-btn svg { width: 18px; height: 18px; flex: 0 0 auto; }
|
|
|
|
.bt-import-status {
|
|
font-size: 13px;
|
|
line-height: 1.4;
|
|
}
|
|
.bt-import-status a { color: #2563eb; text-decoration: underline; }
|
|
.bt-import-status.bt-ok { color: #16a34a; }
|
|
.bt-import-status.bt-err { color: #dc2626; }
|
|
|
|
/* Spinner */
|
|
.bt-spin {
|
|
width: 16px; height: 16px;
|
|
border: 2px solid rgba(255, 255, 255, 0.5);
|
|
border-top-color: #fff;
|
|
border-radius: 50%;
|
|
animation: bt-rotate 0.7s linear infinite;
|
|
}
|
|
@keyframes bt-rotate { to { transform: rotate(360deg); } }
|