eac34705e3
Unblocks the documented core workflow and closes the AI-service exposure, without changing existing behaviour. Job/JobApplication split (additive; see ADR-002): - New Job entity (the opportunity) with owner-scoped query filter; nullable JobApplication.JobId FK. Nothing reads Job yet. - Migration AddJobEntityAndProspectStages, hand-edited to drop reconciler-owned tables the scaffolder re-emitted; verified against the real dev DB. Pipeline: 10 internal stages across three concerns kept separate — PipelineStage (workflow) / PipelineGroup (UI: NotApplied/Active/Closed) / PipelineCategory (analytics). Adds Saved/Interested/Preparing/Withdrawn; keeps Waiting and Ghosted. Kanban shows 3 grouped columns; cards keep a stage chip and full transitions; drag applies only safe transitions (never infers Ghosted/Withdrawn). DateApplied nullable + SavedAt. Cleared when leaving Applied so analytics stay accurate; the discarded date is preserved as an AppliedDateCleared JobEvent. AI service lockdown: no host port; private ai_internal network (backend is the only other member); X-Ai-Service-Token required on all non-/health endpoints; AI_SERVICE_TOKEN mandatory via compose. Verified backend-only against the live stack. Also carries two pre-existing working-tree files (views/ProfilePage.tsx, views/CareerWorkspacePage.tsx) so the tree is clean for the branch integration. Tests: +40 backend (247 total), +5 sidecar (16), +15 frontend. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
96 lines
1.2 KiB
Plaintext
96 lines
1.2 KiB
Plaintext
# OS / editor
|
|
.DS_Store
|
|
Thumbs.db
|
|
.vscode/
|
|
.idea/
|
|
|
|
# Environment files
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
|
|
# Python
|
|
.venv/
|
|
__pycache__/
|
|
*.pyc
|
|
venv/
|
|
|
|
# .NET / Visual Studio
|
|
bin/
|
|
obj/
|
|
bin_build/
|
|
.vs/
|
|
*.user
|
|
*.suo
|
|
*.userosscache
|
|
*.sln.docstates
|
|
|
|
# Logs
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
|
|
# Frontend build artifacts
|
|
node_modules/
|
|
build/
|
|
dist/
|
|
coverage/
|
|
.next/
|
|
.cache/
|
|
|
|
# Local temp / scratch files
|
|
temp_job.json
|
|
temp_post_job.py
|
|
todo jobtracker.txt
|
|
tmp/
|
|
/tmp/
|
|
|
|
# Runtime data that must never be committed (DataProtection keys, exports, CV artifacts)
|
|
keys/
|
|
backups/
|
|
JobTrackerApi/exports/
|
|
JobTrackerApi/CvArtifacts/
|
|
JobTrackerApi/CvExports/
|
|
JobTrackerApi/CvBenchmarks/
|
|
|
|
# Local app data
|
|
*.db
|
|
*.db-*
|
|
*.db.preview-bak
|
|
Attachments/
|
|
website_details.md
|
|
|
|
# Local-only files (dev overrides, scratch, archives)
|
|
docker-compose.override.yml
|
|
docs.7z
|
|
todo.md
|
|
|
|
# Private local test files
|
|
vendor/
|
|
target/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
*.code-workspace
|
|
|
|
# GSD
|
|
.gsd
|
|
|
|
# GSD runtime / ephemeral
|
|
.gsd/auto.lock
|
|
.gsd/completed-units.json
|
|
.gsd/STATE.md
|
|
.gsd/metrics.json
|
|
.gsd/activity/
|
|
.gsd/runtime/
|
|
.gsd/worktrees/
|
|
.gsd/parallel/
|
|
.gsd/reports/
|
|
.gsd/milestones/**/continue.md
|
|
.gsd/milestones/**/*-CONTINUE.md
|
|
|
|
# ── GSD baseline (auto-generated) ──
|
|
.gsd-id
|
|
.gsd/
|