Vacancy Dependency Edge Map
Purpose
This map traces the real dependency edges around the current Vacancy backend. It separates:
- acceptable shared Kvary shell dependencies
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 traces the real dependency edges around the current Vacancy backend. It separates:
| Source | Target | Dependency type | Verdict | Notes |
| --- | --- | --- | --- | --- |
| registerVacancyRoutes.ts | VacancyReadRepository | preferred read dependency | should move into Vacancy later | This is already the preferred route-time read path. |
| registerVacancyRoutes.ts | VacancyCommandHandlers | command/write dependency | should move into Vacancy later | Core mutation dependency for postings and applications. |
| registerVacancyRoutes.ts | VacancyRouteSupport | route-support dependency | should move into Vacancy later | Support contract is already vacancy-owned. |
| VacancyRouteSupport builder | requireServiceAuth | auth ingress dependency | can remain shared after extraction | Shared shell auth ingress is expected to stay shared initially. |
| VacancyRouteSupport builder | requireActivePrincipal | auth/principal dependency | can remain shared after extraction | Depends on shared auth/identity resolution behind /auth/me. |
| VacancyRouteSupport builder | parsePositiveInt | shell parser dependency | can be wrapped later | Small shell helper; not a blocker. |
| VacancyCommandHandlers | Postgres pool | persistence dependency | should move into Vacancy later | Core domain write dependency. |
| VacancyCommandHandlers | applyVacancyDomainEventProjection | domain projection dependency | should move into Vacancy later | Projection upkeep is domain-owned. |
| VacancyCommandHandlers | service outbox table via appendOutboxEvent | event/runtime dependency | should stay temporary for now | Uses shared outbox runtime pattern in current host. |
| VacancyReadRepository | vacancy_postings, vacancy_applications | primary write-model read dependency | should move into Vacancy later | Owner/application reads already rely on vacancy-owned tables. |
| VacancyReadRepository | vacancy_postings_view, vacancy_posting_detail_view, my_vacancy_applications_view, vacancy_applications_by_posting_view | projection/read-model dependency | should move into Vacancy later | These are real vacancy projections. |
| VacancyReadRepository | legacy vacancies table | compatibility public-read dependency | unresolved | Main blocker for clean public discovery extraction. |
| VacancyCompatibilityReadRepository | VacancyReadRepository | compatibility wrapper dependency | should stay temporary for now | Exists only for old root repository callers. |
| VacancyCompatibilityApplicationRepository | VacancyReadRepository | compatibility wrapper dependency | should stay temporary for now | Same pattern for application reads. |
| TendersRepository | vacancy compatibility wrappers | mixed root repository dependency | should stay temporary for now | Legacy hosting only; not the preferred runtime path anymore. |
| server.ts | VacancyReadRepository, VacancyCommandHandlers, buildVacancyRouteSupport | shell composition dependency | should stay temporary for now | Normal while vacancy still lives inside svc-tenders. |
| API vacancy routers | VACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL | gateway service-target seam | can remain shared after extraction | This is already the intended shared seam. |
| API vacancy routers | forwarded bearer token / x-intent-id | gateway auth/request propagation | can remain shared after extraction | Shared gateway contract, not vacancy-local ownership. |
| Web portal/api.ts vacancy functions | API vacancy routes | client/service dependency | should become API/service contract | Good extraction boundary if DTO drift is controlled. |
| Web portal/api.ts vacancy functions | VACANCY_CATALOG fallback | UI compatibility dependency | should stay temporary for now | Explicitly non-canonical fallback. |
| Web vacancyCatalog.ts / vacancyDetail.ts | richer catalog/detail types | UI-only contract dependency | unresolved | Real duplication and enrichment beyond backend DTOs. |
| Accommodation detail UI | vacancy list API results for nearby previews | cross-domain UI dependency | should stay temporary for now | Present in UI, but not a backend vacancy extraction edge. |
| Map vacancy layer | mock vacancy data | UI-only dependency | should be removed before extraction claims | Not backend truth at all. |
services/apiVACANCIES_SERVICE_URL ?? TENDERS_SERVICE_URL target resolution/auth/mesvc-tenders shell compositionVACANCY_CATALOG/vacancies becomes fully projection-backedvacancies.