claude
de7a3a3a2d
feat(myai-data): cleanup migration removes email.* and ai.* templates; update CLAUDE.md
...
- Add DeleteMigratedTemplates migration: removes all email.* and ai.*
rows from myAi.Templates (now owned by emailApi.EmailTemplates and
cvMatcher.AiPrompts respectively)
- CLAUDE.md: add email-api-data to solution layout; add emailApi schema
to database schemas table; add email-api-data EF CLI migration command;
note cv-matcher-api no longer runs MyAi migrations
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-28 08:50:19 +03:00
claude
a1c145e861
feat(cv-matcher): add AiPrompts table; remove MyAiDbContext dependency
...
cv-matcher-data:
- Add AiPromptEntity (Key, Language, Value, Description, UpdatedAt)
- Add AiPrompts DbSet to CvMatcherDbContext with composite PK
- Migration AddAiPrompts: create cvMatcher.AiPrompts table and seed
ai.cv-match.system-prompt (language "*") with the current prompt value
cv-matcher-api:
- Add IAiPromptsRepository / EfAiPromptsRepository under Data/Repositories/
- CvMatcherService: inject IAiPromptsRepository; replace _templates.Render(...)
with async DB lookup + simple string replacement
- Program.cs: register IAiPromptsRepository (scoped); remove MyAiDbContext,
ITemplateService/DbTemplateService registrations and MyAiDbContext migration call
- Remove myai-data ProjectReference
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-28 08:48:39 +03:00
claude
e17f17b566
feat(cv-search-job): replace MyAiDbContext+ITemplateService with IEmailTemplateService
...
- Add ProjectReference to email-api-data; remove myai-data reference
- Program.cs: register EmailApiDbContext (no migrate), IEmailTemplateRepository
(scoped), IEmailTemplateService (singleton); remove MyAiDbContext +
ITemplateService registrations and their migration call
- CvSearchEmailSender: inject IEmailTemplateService; replace
_config["Contact:ToEmail"] with GetOperatorCopy("email.search-results.subject")
for operator copy logic; remove IConfiguration injection
- docker-compose: remove Contact__ToEmail from cv-search-job service block;
add Database__* env vars to email-api service (needed for EmailApiDbContext)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-28 08:45:18 +03:00
claude
e7ca6043b7
feat(api): wire IEmailTemplateService; replace Contact:ToEmail with OperatorCopy
...
- Add ProjectReference to email-api-data
- Register EmailApiDbContext (no migrate — email-api owns migrations)
- Register IEmailTemplateRepository (scoped) and IEmailTemplateService (singleton)
- EmailApiEmailSender: replace ITemplateService with IEmailTemplateService for
all email.* template rendering (match body/subject/footer)
- SendMatchAsync: replace _contact.ToEmail operator copy with
GetOperatorCopy("email.match.subject", "en") from DB template
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-28 08:43:07 +03:00
claude
c415ab3957
feat(email-api): wire email-api-data; load html shell templates from DB
...
- Add ProjectReference to email-api-data
- Register EmailApiDbContext + run migrations on startup
- Register IEmailTemplateRepository (scoped) and IEmailTemplateService (singleton)
- SmtpEmailDispatcher: inject IEmailTemplateService; replace hardcoded
HtmlShellStart/HtmlShellEnd string constants with DB template lookups
(email.html-shell.start / email.html-shell.end, language "*")
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-28 08:40:40 +03:00
claude
19e73aca17
feat: add email-api-data project with EmailTemplates repository and service
...
New data project owning the emailApi schema:
- EmailTemplateEntity with Key, Language, Value, Description, UpdatedAt, OperatorCopy
- EmailApiDbContext (schema: emailApi, custom migration table _EmailApiMigrations)
- IEmailTemplateRepository / EfEmailTemplateRepository (scoped)
- IEmailTemplateService / EmailTemplateService (singleton, 10-min cache)
- GetOperatorCopy falls back to first non-empty OperatorCopy across all rows
- Initial migration CreateEmailTemplates: creates table + seeds all email.*
templates (match + search-results in en/ro) and html-shell fragments
with OperatorCopy = "contact@myai.ro " for addressable rows
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-28 08:39:15 +03:00