Vacancy Extraction Prep Map
Scope
This map covers the real Vacancy backend domain that exists today inside svc-tenders, not the broader future WorkStay umbrella. The goal is to separate:
Resolving locale, route permissions, and workspace projection.
Current scope: Guest
Category: 10_normative | Version: v1.0.0
Owner: DOCUMENT_CUSTODIAN | Review cycle: 90 days
Approval authority: GOVERNANCE_ADMIN
Documentation portal is read-only. Editing and mutation endpoints are disabled.
Kvary platform is originally created in Georgian. Where a Georgian version exists, Georgian is authoritative for platform UI, documentation, and legal interpretation.
Translations into other languages are provided for convenience. Some records may originate in other languages and carry their own source or legal locale for a specific flow, but where a Georgian version is available, the Georgian version prevails for platform-level wording and interpretation.
Metadata incomplete: Document ID, Version, Status, Owner Role, Last Review Date, Next Review Date, Change Log
This map covers the real Vacancy backend domain that exists today inside svc-tenders, not the broader future WorkStay umbrella. The goal is to separate:
svc-tenders| Surface | Current location | Verification | Runtime status | Ownership classification | Notes |
| --- | --- | --- | --- | --- | --- |
| Vacancy route registration | services/svc-tenders/src/routes/registerVacancyRoutes.ts | VERIFIED | REAL | vacancy-owned, temporary-hosted-in-svc-tenders | Active HTTP surface for public reads, owner reads, postings, and application flows. |
| Vacancy route support | services/svc-tenders/src/routes/support/vacancyRouteSupport.ts | VERIFIED | REAL | vacancy-owned, temporary-hosted-in-svc-tenders | Owns vacancy capability checks and mutation-error mapping; still consumes shared shell auth/parser inputs. |
| Vacancy-owned contracts | services/svc-tenders/src/vacancy/contracts.ts | VERIFIED | REAL | vacancy-owned | Active request/response/support type surface for vacancy routes and repositories. |
| Vacancy-owned validation | services/svc-tenders/src/vacancy/validation.ts | VERIFIED | REAL | vacancy-owned | Already domain-local; no longer primarily hosted in mixed validation surfaces. |
| Vacancy aggregate/domain logic | services/svc-tenders/src/vacancy/domain.ts | VERIFIED | REAL | vacancy-owned | Durable posting/application lifecycle truth. |
| Vacancy command handlers | services/svc-tenders/src/vacancy/commandHandlers.ts | VERIFIED | REAL | vacancy-owned, temporary-hosted-in-svc-tenders | Owns posting/application writes, outbox appends, and projection updates. |
| Vacancy projections | services/svc-tenders/src/vacancy/projections.ts | VERIFIED | REAL | vacancy-owned | Maintains vacancy read-side projections from vacancy domain events. |
| Vacancy read-model mapping | services/svc-tenders/src/vacancy/readModel.ts | VERIFIED | REAL | vacancy-owned | Maps projection rows and joined rows into route-facing storage shapes. |
| Vacancy preferred read repository | services/svc-tenders/src/vacancy/readRepository.ts | VERIFIED | MIXED | vacancy-owned, temporary-hosted-in-svc-tenders | Owner/application reads are vacancy-owned and clean; public discovery still falls back to legacy vacancies. |
| Vacancy compatibility read wrapper | services/svc-tenders/src/vacancy/compatibilityReadRepository.ts | VERIFIED | MIXED | compatibility residue | Exists only to preserve older TendersRepository call paths. |
| Vacancy compatibility application wrapper | services/svc-tenders/src/vacancy/compatibilityApplicationRepository.ts | VERIFIED | MIXED | compatibility residue | Same pattern for applicant/owner application reads. |
| Vacancy root repository hosting | services/svc-tenders/src/repository.ts vacancy methods | VERIFIED | MIXED | compatibility residue, temporary-hosted-in-svc-tenders | Root repository still hosts legacy vacancy read entry points for older callers. |
| Vacancy runtime composition | services/svc-tenders/src/server.ts | VERIFIED | SHELL | shared-Kvary-owned | Wires vacancy repository, handlers, and route support into the service shell. |
| API gateway vacancy public seam | services/api/src/routes/vacancies.ts | VERIFIED | REAL | shared-Kvary-owned | Uses VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL. Stable extraction seam already exists. |
| API gateway vacancy posting seam | services/api/src/routes/vacancy-postings.ts | VERIFIED | REAL | shared-Kvary-owned | Stable extracted-runtime target seam for posting mutations and owner review list-by-posting. |
| API gateway vacancy applications seam | services/api/src/routes/vacancy-applications.ts | VERIFIED | REAL | shared-Kvary-owned | Stable extracted-runtime target seam for submit/review/withdraw routes. |
| API gateway owner vacancy seams | services/api/src/routes/owner-vacancy-postings.ts, services/api/src/routes/owner-vacancy-applications.ts | VERIFIED | REAL | shared-Kvary-owned | Stable extracted-runtime seams for owner/internal reads. |
| Vacancy public discovery backend truth | /vacancies, /vacancies/:id via VacancyReadRepository | VERIFIED | MIXED | vacancy-owned plus compatibility residue | Projection-backed postings are real; legacy vacancies fallback still participates in canonical public results. |
| Vacancy application backend truth | vacancy_postings, vacancy_applications, projection-backed reads | VERIFIED | REAL | vacancy-application-owned | Durable and backend-real. |
| Owner/internal vacancy reads | /owner/vacancy-postings*, /owner/vacancy-applications* | VERIFIED | REAL | owner/internal vacancy-owned | Mainly read from vacancy_postings or joined vacancy application data. |
| Worker/applicant vacancy reads | /vacancy-applications/me | VERIFIED | REAL | vacancy-application-owned | Uses my_vacancy_applications_view. |
| Web vacancy public consumer | apps/web/src/portal/api.ts | VERIFIED | REAL | temporary-hosted-in-svc-tenders consumer | Calls API routes directly, but falls back to static catalog on errors. |
| Web vacancy detail/catalog enrichment | apps/web/src/features/domains/vacancyCatalog.ts, apps/web/src/features/domains/vacancyDetail.ts | VERIFIED | UI-FIRST | legacy compatibility residue / ambiguous | Frontend owns richer presentation-only shapes and mock enrichment that are not canonical backend contracts. |
| Map/nearby vacancy UI | apps/web/src/features/map/**, accommodation detail nearby vacancy UI | VERIFIED | UI-FIRST | not current vacancy backend extraction material | Consumes mock or derived data rather than vacancy backend truth. |
| Future worker/job intelligence platform surface | broader WorkStay intent | VERIFIED as strategy, UNVERIFIED as backend code | MISSING | ambiguous | Strategic direction is real, but not a backend extraction boundary today. |
Clearly real backend extraction material:
VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URLStill mixed or compatibility-backed:
TendersRepository vacancy call surfaceNot current backend extraction material:
services/svc-tenders/src/routes/registerVacancyRoutes.tsservices/svc-tenders/src/routes/support/vacancyRouteSupport.tsservices/svc-tenders/src/vacancy/contracts.tsservices/svc-tenders/src/vacancy/validation.tsservices/svc-tenders/src/vacancy/domain.tsservices/svc-tenders/src/vacancy/commandHandlers.tsservices/svc-tenders/src/vacancy/projections.tsservices/svc-tenders/src/vacancy/readModel.tsservices/svc-tenders/src/vacancy/readRepository.tsservices/api/src/routes/vacancies.tsservices/api/src/routes/vacancy-postings.tsservices/api/src/routes/vacancy-applications.tsservices/api/src/routes/owner-vacancy-postings.tsservices/api/src/routes/owner-vacancy-applications.ts/auth/meservices/svc-tenders/src/server.tsservices/svc-tenders/src/repository.tsservices/svc-tenders/src/vacancy/compatibilityReadRepository.tsservices/svc-tenders/src/vacancy/compatibilityApplicationRepository.tsvacancies table reads in public discoveryVACANCY_CATALOG| Blocker | Severity | Type | Why it blocks extraction | What reduces it next |
| --- | --- | --- | --- | --- |
| Public reads still fall back to legacy vacancies | HIGH | code+infra | Prevents declaring /vacancies as clean extracted-domain truth. | Decide whether to keep this as an explicit compatibility seam or replace it with projection-owned public truth. |
| Root repository compatibility residue | MEDIUM | code-only | Older callers still see vacancy through TendersRepository, which keeps extraction less direct. | Reduce or isolate remaining root repository callers after the extracted vacancy runtime exists. |
| Public route and owner-review asymmetry | MEDIUM | code-only | /vacancy-postings/:id/applications still reads vacancy summary through the broader public finder even though application ownership checks are vacancy-owned. | Narrow that route’s supporting read path or make the composed dependency explicit in later hardening. |
| Web/backend contract duplication | MEDIUM | code-only | Web detail/catalog layers still enrich or fallback beyond backend contract truth. | Isolate portal-facing vacancy DTOs and keep UI-only enrichment clearly second-class. |
| Shared shell auth/principal dependency | LOW | code-only | Extraction still needs requireServiceAuth and principal resolution. | Keep as intentional shared shell contract first; narrow later if needed. |
| Mixed migration ownership | LOW | code+infra | Vacancy runtime code can move before migrations fully transfer, but extraction ownership stays less clean. | Classify vacancy-dominant vs mixed migrations when runtime prep starts. |
Best current direction:
/vacancies.In practice, that means Vacancy is closer to:
not to a one-shot “everything vacancy moves at once” extraction.