Commit Graph

111 Commits

Author SHA1 Message Date
Claude Dev Environment 9d8db59825 fix: update web project port from 5000 to 5140 for Caddy reverse proxy alignment
- Changed CORS allowed origin from localhost:5000 to localhost:5140
- Updated docker-compose.override.yml port mapping from 5000:8080 to 5140:8080
- Aligns local development port with staging (myai.easysoft.ro) and production (myai.ro) Caddy reverse proxy configuration on port 5140
2026-05-27 13:05:40 +03:00
claude d08eb5d1dc fix: restore published port for myai-web + watchtower label
The docker-compose refactor moved port 5000:8080 to the override file.
Caddy on staging routes myai.easysoft.ro → localhost:5000, so the port
must be present in the deployment compose. Restoring it as WEB_PORT env var
(default 5000) and adding missing watchtower label.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 18:40:24 +03:00
claude 3cb6a8d702 fix: add Database env vars to api service in docker-compose
api now registers MyAiDbContext for template loading and needs
Database__* connection string vars like the other DB-connected services.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 18:16:34 +03:00
claude fc6fe7a78b feat: DB-backed localized templates + language-aware emails
- New Apis/myai-models project: MyAiDbContext (schema myAi), TemplateEntity,
  ITemplateService, DbTemplateService with 10-min in-memory cache
- Seeds EN+RO variants for all user-facing templates (match email, job search
  results email, HTML status pages, AI system prompt)
- Match result email now sent in user's UI language (en/ro)
- Job search results email now respects session language
- Language propagates: MatchJobRequest -> token -> session -> email
- Add Language column to JobSearchTokens and JobSearchSessions (default 'en')
- All three Dockerfiles updated to include myai-models in build context

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 18:06:44 +03:00
claude 2cada13fe3 Fix footer vertical misalignment — zero p margin inside footer-wrap
The <p> wrapping the copyright line had default browser margins (1em top/bottom)
which offset it above the sibling flex items despite align-items: center.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 17:11:54 +03:00
claude b6878e3b45 Respect UI language in match result — LLM responds in user's selected language
The frontend sends the active language code (currentLang()) with every match
request. CvMatcherService injects a language instruction into the system prompt
so the LLM returns summary, strengths, gaps, recommendations, and evidence in
the correct language. The match result cache (CvMatchResults) now includes
Language as part of the lookup key so Romanian and English results are stored
and retrieved independently. Existing cached rows default to 'en'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 17:04:21 +03:00
claude e394dad5fb Merge remote-tracking branch 'origin/staging' 2026-05-22 20:49:34 +03:00
claude 1fcf1e1470 Add complete XML doc and Swagger annotations to all controller endpoints
Every public action now has <summary>, <param>, and <returns> XML docs
plus matching SwaggerOperation/SwaggerResponse attributes with typed response
descriptions. Class-level summaries added to CvController, JobSearchController,
and RagController. Explanatory inline comments removed from FileDownloadController
per project conventions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:47:47 +03:00
claude 6deb8dd4c8 Move version display to GET /api/health/version in HealthController
Uses GetApplicationVersion(Assembly.GetExecutingAssembly()) — the same
timestamp-based version already logged at startup and baked into the
assembly via the csproj <Version> property. Removes the minimal-API
/version endpoint from web/Program.cs and reverts the web Dockerfile
APP_VERSION build-arg (no longer needed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:25:07 +03:00
claude 7441eb8cda Remove APP_VERSION from docker-compose — version is baked into image by CI
Setting APP_VERSION in docker-compose with a :-unknown fallback would override
the version baked into the image at build time. The CI already embeds it via
--build-arg APP_VERSION=1.0.<commit-count>, so compose should stay silent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:20:56 +03:00
claude 0154b56881 Add auto-incrementing version display to web UI footer
Exposes GET /version endpoint in the web container (reads APP_VERSION env var).
CI computes the version as 1.0.<git-commit-count> and passes it via --build-arg at build time.
Both index.html and cv-matcher/index.html show the version in the footer via a JS fetch.
docker-compose passes APP_VERSION through to the running container.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:18:31 +03:00
gelu bf0f46e77c Merge pull request 'Main build' (#10) from main into staging
Build and Push Docker Images Staging / build (push) Successful in 10s
Reviewed-on: #10
2026-05-22 17:05:10 +00:00
claude eced9531bc Merge 2026-05-22 20:04:12 +03:00
gelu 6f8923e8f6 Add cv-search-job to staging build pipeline
Build and Push Docker Images Staging / build (push) Successful in 10s
2026-05-22 16:08:57 +00:00
claude 7bed001d8b Add .claude/ to .gitignore
Build and Push Docker Images / build (push) Successful in 9s
Claude Code stores session files under .claude/ — these are local tooling
artifacts and should not be tracked in the repository.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 19:03:47 +03:00
claude cf064531c5 Refactor docker-compose: single deployable file + local override
Build and Push Docker Images / build (push) Successful in 11s
- docker-compose.yml is now the single file for Portainer (staging and prod).
  Uses registry images with ${IMAGE_TAG:-staging}, ${LOGS_PATH:-/opt/myai/logs},
  and ${FILES_PATH:-/opt/myai/files} so the same file works for all environments.
- docker-compose.override.yml adds build context, ports, and env_file for local dev
  and is auto-merged by "docker compose up" (no extra flags needed).
- .env.template documents IMAGE_TAG, LOGS_PATH, FILES_PATH alongside existing vars.
- docker-compose.dcproj updated so override file nests under docker-compose.yml in
  Solution Explorer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 18:52:39 +03:00
claude a4c128fdf4 Fix cv-matcher-api Dockerfile: add cv-search-models to build context
Build and Push Docker Images / build (push) Successful in 3m42s
dotnet restore failed in CI because cv-search-models.csproj was added as
a ProjectReference but not copied into the Docker build context.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 18:17:58 +03:00
claude 6293fa89e3 Add internet job search feature (cv-search-job)
Build and Push Docker Images / build (push) Failing after 1m36s
- New cv-search-models shared library: EF entities + CvSearchDbContext for cvSearch schema (JobSearchTokens, JobSearchSessions, JobSearchResults tables)
- New cv-search-job worker service: polls DB for pending sessions, scrapes job boards via configurable HTML scraping, runs LLM scoring via cv-matcher-api, emails ranked results
- cv-matcher-api: JobTokenService creates one-time tokens; JobSearchController handles link clicks and creates sessions
- api: proxies job-search start endpoint, appends job search link to match result email
- CI workflow updated to build and push myai-cv-search-job:staging image
- CLAUDE.md documentation added for all affected services

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 17:56:23 +03:00
claude a0ae262afc Main build
Build and Push Docker Images / build (push) Successful in 7s
2026-05-20 21:16:34 +03:00
claude 95d05d8fc8 Staging build
Build and Push Docker Images Staging / build (push) Successful in 9s
2026-05-20 21:15:18 +03:00
claude 6e54b20a02 Staging build 2026-05-20 21:11:25 +03:00
claude aa79b422e4 Changes
Build and Push Docker Images / build (push) Successful in 31s
2026-05-20 14:25:07 +03:00
claude fb5b254570 Staging build
Build and Push Docker Images / build (push) Successful in 8s
2026-05-14 16:15:32 +03:00
claude feefa0902b Prod build
Build and Push Docker Images / build (push) Successful in 8s
2026-05-14 16:15:18 +03:00
claude 2701a478e7 Changes
Build and Push Docker Images / build (push) Successful in 7s
2026-05-14 16:11:22 +03:00
claude b58b3c9314 Changes
Build and Push Docker Images / build (push) Failing after 6s
2026-05-14 16:09:57 +03:00
claude 501f86a970 Changes
Build and Push Docker Images / build (push) Successful in 29s
2026-05-14 15:47:02 +03:00
claude cec5130c2d Staging build
Build and Push Docker Images / build (push) Successful in 7s
2026-05-14 15:38:00 +03:00
claude 8ed8d04067 Production build
Build and Push Docker Images / build (push) Successful in 8s
2026-05-14 15:37:37 +03:00
claude 1a790ed9b4 Changes
Build and Push Docker Images / build (push) Successful in 5m57s
2026-05-14 15:04:30 +03:00
claude 9da9ac232b Changes
Build and Push Docker Images / build (push) Successful in 7s
2026-05-14 14:43:16 +03:00
claude 3b4f5a44b6 Refactor job configuration to rename and update CV cleanup job across Docker Compose files and build workflows
Build and Push Docker Images / build (push) Successful in 7s
2026-05-14 14:29:38 +03:00
claude 75bc9509c5 Changes
Build and Push Docker Images / build (push) Successful in 4m35s
2026-05-14 14:12:29 +03:00
claude 92278ae375 Update Dockerfile paths and project references to reflect new directory structure under 'Apis' and 'Jobs' 2026-05-14 13:56:45 +03:00
claude d4805b06e6 Changes 2026-05-13 09:38:52 +03:00
claude 24962fba03 Staging build
Build and Push Docker Images / build (push) Successful in 6s
2026-05-12 11:23:24 +03:00
claude a37c994050 Production build
Build and Push Docker Images / build (push) Successful in 6s
2026-05-12 11:23:00 +03:00
claude be1dec7171 Changes
Build and Push Docker Images / build (push) Successful in 16s
2026-05-12 11:22:34 +03:00
claude 6fceeb4481 Diacritics
Build and Push Docker Images / build (push) Successful in 17s
2026-05-12 11:19:00 +03:00
claude 6470f7a9c5 Changes
Build and Push Docker Images / build (push) Successful in 40s
2026-05-12 11:16:21 +03:00
claude 19e3526430 Changes
Build and Push Docker Images / build (push) Successful in 18s
2026-05-12 11:11:06 +03:00
claude 4eaae45cba Changes 2026-05-12 10:38:04 +03:00
claude 5f69e0ffb4 Changes
Build and Push Docker Images / build (push) Successful in 29s
2026-05-12 10:20:03 +03:00
claude 0f7166c1a3 Changes
Build and Push Docker Images / build (push) Successful in 30s
2026-05-12 10:16:17 +03:00
claude ee2c2d5159 Changes
Build and Push Docker Images / build (push) Successful in 2m2s
2026-05-12 09:56:55 +03:00
claude 3cd6a3cf43 Changes 2026-05-12 09:56:43 +03:00
claude cabf240397 Changes
Build and Push Docker Images / build (push) Successful in 35s
2026-05-11 16:50:05 +03:00
claude 66fe78a282 Changes
Build and Push Docker Images / build (push) Successful in 5s
2026-05-11 15:56:21 +03:00
claude bcf6e2aa2d Staging build
Build and Push Docker Images / build (push) Successful in 4s
2026-05-11 13:18:36 +03:00
claude 90b76f7fe8 Prod build
Build and Push Docker Images / build (push) Successful in 4s
2026-05-11 13:18:15 +03:00