İK › İşe Alım (App.Hr.Recruitment)
Kadro talebinden işe alıma kadar uçtan uca süreç: onaylı kadro talebi → iş ilanı → aday havuzu
(CV, KVKK açık rızası) → başvuru (aşama panosu) → mülakat (takvim, kriter ağırlıklı puan) →
teklif (iç onay, teklif mektubu). Tamamı konfigürasyondur (Wizard + SQL + rapor şablonu); entity,
migration ya da React kodu yoktur.
Bu doküman modülün tek "nasıl çalışır" kaynağıdır. Modülde yapılan her değişiklik aynı commit'te
buraya yansır (lowcode.instructions.md §0.13).
1. Amaç ve kapsam
| Persona |
Ne yapar |
Ekran |
| Talep eden yönetici |
Kadro talebi açar, onaya gönderir |
Kadro Talepleri |
| Onaycı |
Kadro talebini ve teklifi onaylar / reddeder |
Kadro Talepleri · Teklifler (Grid Workflow butonları) |
| İK / işe alım uzmanı |
İlan açar, aday ve başvuruları yönetir, mülakat planlar, teklif hazırlar, aday kaydını personele bağlar |
İlanlar · Adaylar · Başvurular · Mülakatlar · Teklifler |
| Mülakatçı |
Kendisine atanan mülakatta kriter bazlı puan verir |
Mülakatlar (+ bildirim) |
| İK yöneticisi |
Aday kaynağı, ret sebebi, değerlendirme kriteri tanımlarını yönetir |
İK › Tanımlar |
Kapsam: kiracı (IsTenant). Şube, kayıtta veri olarak tutulur (satır süzmesi yoktur).
2. Analiz ve kararlar
Modül §0.13 kuralından önce üretildi; keşif turu kaydı yoktur. Aşağıdaki kararlar üretilen
artefaktlardan (wizard, SQL, seed, commit 16fd5df0 "İşe Alım modülü") okunmuştur.
| Konu |
Karar |
| Yol |
Her adım ayrı Wizard ekranı; ilan ve aday ekranlarında başvuru alt formu, başvuruda mülakat ve teklif alt formu |
| Kadro talebi ve teklif onayı |
Grid Workflow (WorkflowDto): Start → Approval (Onay Bekliyor) → Inform → End Onaylandı / Reddedildi. Onaycı düğümün Approver değeridir (seed'de platform admin e-postası); motor onaycıyı kayıttaki alandan okumaz — ListForm › Workflow sekmesinden değiştirilir |
| İlan kaynağı |
İlan yalnızca onaylı (ApprovalStatus = 'Onaylandı') kadro talebinden açılır; şube/departman/pozisyon/adet/çalışma şekli talepten copy ile dolar |
| Aday kimliği |
E-posta kiracı içinde tekildir (filtreli unique index) |
| KVKK |
Açık rıza zorunlu: formda zorunlu alan + tabloda CHECK (KvkkConsent = 1); rıza tarihi/yöntemi/imzalı belge saklanır; satır butonu KVKK Açık Rıza Formu raporunu açar |
| Başvuru |
Aday × ilan çifti tekildir; aşama Todo (kanban) panosunda yönetilir |
| Aşama ilerlemesi |
Mülakat eklenince Interview, teklif eklenince Offer, teklif Accepted olunca Hired — SQL ile, geri gitmez |
| Mülakat puanı |
Kriter başına 1–5; OverallScore = Σ(puan × kriter ağırlığı) / Σ ağırlık; başvurunun AverageScore'u mülakatların ortalaması |
| Mülakatçı bildirimi |
Mülakat eklenince mülakatçıya IseAlimMulakatAtandi bildirimi (kanallar UiActivity + Mail) |
| Belge numaraları |
KT-YYYY-00001 (talep), ILN-… (ilan), TKL-… (teklif) — insert sonrası SQL, kiracı + yıl bazında |
| Personele dönüşüm |
İşe alınan adayın kullanıcı (personel) kaydını BT elle açar; İK aday kaydını UserId ile o kullanıcıya bağlar (otomatik kullanıcı açılmaz) |
| Kanban başlığı |
CandidateName / PostingTitle başvuruya metin olarak kopyalanır (Todo başlığı metin kolon ister) |
3. Menü ve ekranlar
İnsan Kaynakları › İşe Alım (App.Hr.Recruitment, ikon FcManager)
| Sıra |
Menü (TR / EN) |
ListFormCode |
Alt formlar |
Görünümler |
Widget'lar |
| 1 |
Kadro Talepleri / Staff Requests |
App.Hr.StaffRequest |
— |
Grid, Card, Pivot, Chart |
Toplam · Onay Bekliyor · Onaylanan · Onaylı kadro adedi (Σ Headcount) |
| 2 |
İlanlar / Job Postings |
App.Hr.JobPosting |
JobApplication (Id → JobPostingId) |
Grid, Card, Pivot, Chart |
Toplam · Yayında · Taslak · Kapalı |
| 3 |
Adaylar / Candidates |
App.Hr.Candidate |
JobApplication (Id → CandidateId) |
Grid, Card, Pivot, Chart |
Toplam · Aktif · Pasif · Personele Dönüşen |
| 4 |
Başvurular / Applications |
App.Hr.JobApplication |
Interview, JobOffer (Id → ApplicationId) |
Grid, Card, Pivot, Chart, Todo |
— (alt form olarak da kullanıldığı için yok) |
| 5 |
Mülakatlar / Interviews |
App.Hr.Interview |
InterviewScore (Id → InterviewId, menüsüz) |
Grid, Card, Pivot, Chart, Scheduler |
— |
| 6 |
Teklifler / Job Offers |
App.Hr.JobOffer |
— |
Grid, Card, Pivot, Chart |
— |
Tanımlar İnsan Kaynakları › Tanımlar (App.Hr.Definitions) altında, verileri seed dosyasıyla aynalı:
| Menü |
ListFormCode |
Seed |
| Aday Kaynakları |
App.Hr.CandidateSource |
7 kayıt: LinkedIn, Kariyer.net, Yenibiris, Şirket Web Sitesi, Referans, Kariyer Fuarı, Doğrudan Başvuru |
| Ret Sebepleri |
App.Hr.RejectionReason |
8 kayıt; RejectedBy = Company / Candidate |
| Değerlendirme Kriterleri |
App.Hr.EvaluationCriterion |
6 kayıt (ağırlıklı): İletişim 1, Teknik Yetkinlik 2, Problem Çözme 1.5, Takım Çalışması 1, Motivasyon 1, Kurum Kültürüne Uyum 1 |
Satır butonları (DynamicReport, Raporlar kategorisi):
| Ekran |
Buton |
Rapor şablonu |
Görünürlük |
| Adaylar |
KVKK Açık Rıza Formu |
475c1ab4-4600-5ef2-a43e-1366ed89b0ed |
Her satır |
| Teklifler |
Teklif Mektubu |
80d38666-423d-5e1d-8766-01f2c46be768 |
ApprovalStatus === 'Onaylandı' |
4. Veri modeli
Hr_T_StaffRequest ──< Hr_T_JobPosting ──< Hr_T_JobApplication >── Hr_T_Candidate ──> AbpUsers (UserId, personel)
│
├──< Hr_T_Interview ──< Hr_T_InterviewScore >── Hr_T_EvaluationCriterion
└──< Hr_T_JobOffer
| Tablo |
Önemli kolonlar |
Kural |
Hr_T_StaffRequest |
RequestNo, RequestDate, RequestedById, BranchId → DepartmentId → JobPositionId (cascade), Headcount, EmploymentType, ExpectedStartDate, Reason (NewPosition/Replacement), ReplacedUserId, ücret aralığı + CurrencyId, Qualifications (HTML), onay alanları |
Reason ≠ Replacement ise ReplacedUserId temizlenir (script) |
Hr_T_JobPosting |
PostingNo, StaffRequestId, Title, Status (Draft/Published/Closed/Cancelled), şube/departman/pozisyon, Headcount, EmploymentType, WorkModel (Office/Hybrid/Remote), Location, PublishDate, ClosingDate, SourceIds (yayın kanalları, çok değerli), açıklama/nitelikler (HTML) |
Başlık boşsa pozisyon adı kopyalanır |
Hr_T_Candidate |
Kişisel bilgiler, fotoğraf, ülke → şehir, eğitim (EducationLevel, okul, bölüm, mezuniyet), deneyim, ücret beklentisi, SourceId, SkillIds (Hr_T_Skill, çok değerli), CvDocument, UserId, KVKK alanları |
UX (TenantId, Email); CHECK (KvkkConsent = 1) |
Hr_T_JobApplication |
CandidateId, JobPostingId, CandidateName, PostingTitle, ApplicationDate, SourceId, OwnerUserId, AverageScore, Stage, RejectionReasonId, RejectionNote, SortOrder |
UX (TenantId, CandidateId, JobPostingId); aşama Rejected değilse ret sebebi/notu temizlenir |
Hr_T_Interview |
ApplicationId, Title, InterviewType (Phone/Video/FaceToFace/Technical/Hr), InterviewerUserId, StartDate, EndDate, Location, MeetingUrl, Status (Planned/Completed/Cancelled/NoShow), Recommendation (Hire/Hold/Reject), OverallScore |
Bitiş boşsa başlangıç + 1 saat (script) |
Hr_T_InterviewScore |
InterviewId, CriterionId, Score, Comment |
CHECK (Score BETWEEN 1 AND 5); UX (InterviewId, CriterionId) |
Hr_T_JobOffer |
OfferNo, ApplicationId, CandidateName, OfferDate, ValidUntil, StartDate, GrossSalary + CurrencyId, Status (Draft/Sent/Accepted/Declined/Expired), ResponseDate, pozisyon bilgileri, BenefitCodes (Hr_T_BenefitType), onay alanları |
CHECK (GrossSalary >= 0); durum Accepted/Declined olunca yanıt tarihi bugün (script) |
5. İş kuralları ve hesaplar
5.1 Başvuru aşamaları
Applied → Screening → Interview → Offer → Hired
└──→ Rejected (her aşamadan, elle)
| Tetik |
Etki (after-command SQL) |
| Mülakat eklendi |
Başvuru Applied/Screening ise → Interview |
| Teklif eklendi |
Başvuru Applied/Screening/Interview ise → Offer; teklif zaten Accepted ise → Hired |
Teklif güncellendi (Accepted) |
Başvuru henüz Hired değilse → Hired |
| Elle |
Panodan sürükleme ya da formdan her aşama seçilebilir |
Otomatik ilerleme yalnızca ileri gider; geri almak elle yapılır.
5.2 Puanlar
Interview.OverallScore = Σ(Score × Criterion.Weight) / Σ Weight (silinmemiş puanlar).
JobApplication.AverageScore = AVG(Interview.OverallScore) (puanı olan mülakatlar).
- Puan eklenince, güncellenince ya da silinince ikisi de yeniden hesaplanır.
5.3 Metin kopyaları
CandidateName, PostingTitle (başvuru), Title (mülakat = aday – ilan), CandidateName
(teklif) after-command ile yazılır. Aday, ilan ya da başvuru güncellendiğinde tüm değişmiş
kopyalar topluca düzeltilir (sorgu @Id ile değil fark koşuluyla çalışır).
5.4 Numaratörler
KT-, ILN-, TKL- + yıl + 5 hane; kiracı ve yıl bazında MAX + 1. Numara yalnızca boşsa yazılır.
5.5 Onay akışı (Kadro Talebi, Teklif)
Grid Workflow; durum ApprovalStatus, onaylayan ApprovalUser, tarih ApprovalDate, açıklama
ApprovalDescription. Onay/Ret butonlarını akış kendisi çizer. Onaycı düğümde sabittir
(system@sozsoft.com seed değeri) — gerçek onaycı ListForm › Workflow'dan girilmelidir.
6. Yetki ve görünürlük
İzin grubu App.Hr, modül Sas|Hr. Yetki ağacı menüyü izler: App.Hr.Recruitment ara yetkisinin
altında her ekranın kökü + .Create/.Update/.Delete/.Export/.Import/.Note; App.Hr.InterviewScore
mülakat yetkisinin altındadır. Tanımlar App.Hr.Definitions altındadır. Satır süzmesi yoktur —
ekran yetkisi olan tüm kayıtları görür. Hiçbir yetki role otomatik atanmaz.
Önerilen dağıtım:
| Rol |
Yetkiler |
| Talep eden yöneticiler |
App.Hr.StaffRequest (+ .Create/.Update) |
| Mülakatçılar |
App.Hr.Interview (+ .Update), App.Hr.InterviewScore (+ .Create/.Update/.Delete) |
| İşe alım uzmanı |
App.Hr.Recruitment dalının tamamı + üç tanım ekranı |
| Onaycı |
Onaylayacağı ekranın kökü + .Update |
KVKK: aday verisi kişisel veridir; Adaylar ekranının yetkisi yalnızca işe alım ekibine verilmelidir.
7. Entegrasyonlar
| Kaynak |
Kullanım |
Sas_T_Branch, Hr_T_Department, Hr_T_JobPosition |
Şube → departman → pozisyon cascade (talep, ilan, teklif) |
Sas_H_Currency |
Ücret para birimi (varsayılan TRY) |
Sas_H_Country, Sas_H_City |
Aday adresi (ülke → şehir cascade) |
Hr_T_Skill / Hr_T_SkillType |
Aday yetkinlikleri (SkillIds) |
Hr_T_BenefitType |
Teklifteki yan haklar (BenefitCodes) |
AbpUsers |
Talep eden, ayrılan personel, sorumlu, mülakatçı, personele dönüşen aday |
| Bildirimler |
Tip IseAlimMulakatAtandi; kurallar Custom + UiActivity/Mail; metin App.Hr.Interview.Notification.{Subject,Message}, yer tutucular [Candidate], [Posting], [Date] |
| Raporlar |
KVKK Açık Rıza Formu, Teklif Mektubu (DynamicReport) |
8. Akış örneği
- Satış müdürü Kadro Talepleri'nde "Satış Temsilcisi, 2 kişi, yeni pozisyon" talebini açar →
KT-2026-00001; onaya gönderir, onaycı onaylar → Onaylandı.
- İK İlanlar'da talebi seçer; şube/departman/pozisyon/adet dolar, başlık pozisyon adı olur;
yayın kanallarını (LinkedIn, Kariyer.net) seçip durumu Published yapar →
ILN-2026-00001.
- Gelen adaylar Adaylar'a CV ve KVKK rızasıyla girilir; KVKK formu satır butonundan basılır.
- İlanın Başvurular sekmesinden aday eklenir (
Applied); kanban panosunda Screening'e çekilir.
- Başvurunun Mülakatlar sekmesinden teknik mülakat planlanır → başvuru
Interview olur,
mülakatçıya bildirim gider; mülakatçı kriterleri puanlar → genel ve ortalama puan hesaplanır.
- Teklifler'de teklif hazırlanır → başvuru
Offer; teklif onaya gider, onaylanınca
Teklif Mektubu basılır.
- Aday kabul eder, teklif Accepted yapılır → başvuru
Hired. BT kullanıcıyı açar, İK aday
kaydının Personel alanına bağlar ("Personele Dönüşen" kartı artar).
9. Sık sorulanlar
İlan açarken kadro talebi listede yok. Yalnızca onaylanmış (ApprovalStatus = 'Onaylandı') talepler listelenir.
Onay butonu kimde görünüyor? Akış düğümündeki Approver'da (seed'de admin). ListForm › Workflow'dan gerçek onaycıyı yazın.
Başvuru aşaması geri gitmedi. Otomatik ilerleme yalnız ileri gider; geri almayı panodan ya da formdan elle yapın.
Ret sebebi alanı temizlendi. Ret sebebi ve notu yalnızca Rejected aşamasında tutulur.
Aday kaydı kaydedilmiyor. KVKK rızası işaretli olmalı (tablo da zorlar) ve e-posta kiracıda tekil olmalı.
Aynı aday aynı ilana ikinci kez eklenemiyor. Aday × ilan tekildir.
Mülakat puanı nasıl hesaplanıyor? Kriter ağırlıklı ortalama (§5.2); ağırlıklar İK › Tanımlar › Değerlendirme Kriterleri'nden.
İşe alınan aday otomatik personel olmuyor mu? Hayır; kullanıcıyı BT açar, İK aday kaydına bağlar.
10. Dosyalar ve geri alma
| Dosya |
İçerik |
configs/seeds/host/sql/object/Hr_T_{StaffRequest,JobPosting,Candidate,JobApplication,Interview,InterviewScore,JobOffer,CandidateSource,RejectionReason,EvaluationCriterion}.sql |
Tablolar, CHECK ve tekil indeksler |
configs/seeds/host/wizard/{StaffRequest,JobPosting,Candidate,JobApplication,Interview,InterviewScore,JobOffer,CandidateSource,RejectionReason,EvaluationCriterion}.json |
10 wizard |
configs/seeds/host/data/App.Hr.{CandidateSource,RejectionReason,EvaluationCriterion}.json |
Tanım verisi |
configs/seeds/host/data/App.Reports.ReportTemplates.json |
KVKK formu ve teklif mektubu şablonları |
configs/seeds/host/data/App.Notifications.Notification{Types,Rules}.json |
IseAlimMulakatAtandi tipi ve 2 kuralı |
configs/seeds/host/data/App.Menus.Menu.json, Abp.Identity.Permissions.json, App.Languages.LanguageText.json |
Menü, yetki, dil satırları |
Kurulum: DB Migrate. Geri alma: Wizard Manager'dan wizard'lar silinir (alt formlar önce: InterviewScore
→ Interview/JobOffer → JobApplication → diğerleri); tablolar yalnızca onayda seçilirse düşer.
Rapor şablonları ve bildirim satırları elle kaldırılır.
Ek — Ekran envanteri (otomatik)
Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur.
Kadro Talepleri — App.Hr.StaffRequest
| Özellik |
Değer |
| Wizard |
wizard/StaffRequest.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Recruitment › App.Hr.StaffRequest (sıra 1) |
| Yetki |
App.Hr.StaffRequest + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Kadro Talepleri — bir departmanın yeni ya da boşalan bir pozisyon için personel istemesi ve bu isteğin onay süreci. İşe alım sürecinin ilk adımıdır; ilan yalnızca onaylanmış talepten açılır. |
| Kaynak |
Hr_T_StaffRequest · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Pending, App.Hr.StaffRequest.Widget.Approved, App.Hr.StaffRequest.Widget.Headcount |
| Komutlar |
InsertAfter: SQL |
| Form varsayılanları |
IsActive=true, RequestDate=@DATE, RequestedById=@USERID, Headcount=1, EmploymentType=FullTime, Reason=NewPosition, CurrencyId=TRY |
| Onay akışı |
Start 'Onaya Gönderildi' → Approval 'Onay Bekliyor' → Inform 'Onay Bilgisi' → Inform 'Ret Bilgisi' → End 'Onaylandı' → End 'Reddedildi' |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
RequestNo |
Talep No |
dxTextBox |
|
✓ |
|
RequestDate |
Talep Tarihi |
dxDateBox |
✓ |
✓ |
|
RequestedById |
Talep Eden |
dxSelectBox |
|
✓ |
sorgu: AbpUsers |
BranchId |
Şube Adı |
dxSelectBox |
✓ |
✓ |
sorgu: Sas_T_Branch |
DepartmentId |
Departman |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_Department (← BranchId) |
JobPositionId |
İş Pozisyonu |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_JobPosition (← DepartmentId) |
Headcount |
Kadro Adedi |
dxNumberBox |
✓ |
✓ |
|
EmploymentType |
Çalışma Şekli |
dxSelectBox |
✓ |
✓ |
liste: FullTime, PartTime, Contract, Intern, Seasonal |
ExpectedStartDate |
Beklenen Başlangıç |
dxDateBox |
|
✓ |
|
Reason |
Talep Nedeni |
dxRadioGroup |
✓ |
✓ |
liste: NewPosition, Replacement · script |
ReplacedUserId |
Ayrılan Personel |
dxSelectBox |
|
✓ |
sorgu: AbpUsers |
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
MinSalary |
Asgari Ücret |
dxNumberBox |
|
✓ |
|
MaxSalary |
Azami Ücret |
dxNumberBox |
|
✓ |
|
CurrencyId |
Para Birimi |
dxSelectBox |
|
✓ |
sorgu: Sas_H_Currency |
Qualifications |
Aranan Nitelikler |
dxHtmlEditor |
|
✓ |
|
Description |
Açıklama |
dxTextArea |
|
✓ |
|
ApprovalStatus |
Onay Durumu |
dxTextBox |
|
✓ |
|
ApprovalUser |
Onaylayan |
dxTextBox |
|
✓ |
|
ApprovalDate |
Onay Tarihi |
dxDateBox |
|
✓ |
|
ApprovalDescription |
Onay Açıklaması |
dxTextArea |
|
✓ |
|
İlanlar — App.Hr.JobPosting
| Özellik |
Değer |
| Wizard |
wizard/JobPosting.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Recruitment › App.Hr.JobPosting (sıra 2) |
| Yetki |
App.Hr.JobPosting + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
İlanlar — onaylanmış kadro taleplerinden açılan iş ilanları ve ilana gelen başvurular. |
| Kaynak |
Hr_T_JobPosting · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Alt formlar |
App.Hr.JobApplication (Id → JobPostingId) |
| Widget'lar |
App.Widget.Total, App.Widget.Published, App.Widget.Draft, App.Hr.JobPosting.Widget.Closed |
| Komutlar |
InsertAfter: SQL · UpdateAfter: SQL |
| Form varsayılanları |
IsActive=true, Status=Draft, Headcount=1, EmploymentType=FullTime, WorkModel=Office, PublishDate=@DATE |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
PostingNo |
İlan No |
dxTextBox |
|
✓ |
|
StaffRequestId |
Kadro Talebi |
dxSelectBox |
|
✓ |
sorgu: Hr_T_StaffRequest · script |
Title |
İlan Başlığı |
dxTextBox |
✓ |
✓ |
|
Status |
Durum |
dxSelectBox |
✓ |
✓ |
liste: Draft, Published, Closed, Cancelled |
BranchId |
Şube Adı |
dxSelectBox |
✓ |
✓ |
sorgu: Sas_T_Branch |
DepartmentId |
Departman |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_Department (← BranchId) |
JobPositionId |
İş Pozisyonu |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_JobPosition (← DepartmentId) |
Headcount |
Kadro Adedi |
dxNumberBox |
✓ |
✓ |
|
EmploymentType |
Çalışma Şekli |
dxSelectBox |
✓ |
✓ |
liste: FullTime, PartTime, Contract, Intern, Seasonal |
WorkModel |
Çalışma Modeli |
dxSelectBox |
✓ |
✓ |
liste: Office, Hybrid, Remote |
Location |
Lokasyon |
dxTextBox |
|
✓ |
|
PublishDate |
Yayın Tarihi |
dxDateBox |
|
✓ |
|
ClosingDate |
Son Başvuru Tarihi |
dxDateBox |
|
✓ |
|
SourceIds |
Yayın Kanalları |
dxTagBox |
|
✓ |
sorgu: Hr_T_CandidateSource |
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
Description |
Açıklama |
dxHtmlEditor |
|
✓ |
|
Requirements |
Aranan Nitelikler |
dxHtmlEditor |
|
✓ |
|
Adaylar — App.Hr.Candidate
| Özellik |
Değer |
| Wizard |
wizard/Candidate.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Recruitment › App.Hr.Candidate (sıra 3) |
| Yetki |
App.Hr.Candidate + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Adaylar — CV ve KVKK açık rızası ile tutulan aday havuzu. Bir aday birden fazla ilana başvurabilir. |
| Kaynak |
Hr_T_Candidate · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Alt formlar |
App.Hr.JobApplication (Id → CandidateId) |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive, App.Hr.Candidate.Widget.Converted |
| Komutlar |
UpdateAfter: SQL |
| Form varsayılanları |
IsActive=true, KvkkConsentDate=@NOW, KvkkConsentMethod=Written, CurrencyId=TRY |
| Butonlar |
App.Hr.Candidate.KvkkConsentForm |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
Photo |
Fotoğraf |
dxImageUpload |
|
✓ |
|
FirstName |
Adı |
dxTextBox |
✓ |
✓ |
|
LastName |
Soyadı |
dxTextBox |
✓ |
✓ |
|
Email |
E-posta |
dxTextBox |
✓ |
✓ |
|
PhoneNumber |
Telefon |
dxTextBox |
|
✓ |
|
Gender |
Cinsiyet |
dxSelectBox |
|
✓ |
liste: Male, Female |
BirthDate |
Doğum Tarihi |
dxDateBox |
|
✓ |
|
Country |
Ülke |
dxSelectBox |
|
✓ |
sorgu: Sas_H_Country |
City |
Şehir |
dxSelectBox |
|
✓ |
sorgu: Sas_H_City (← Country) |
Address |
Adres |
dxTextBox |
|
✓ |
|
EducationLevel |
Eğitim Düzeyi |
dxSelectBox |
|
✓ |
liste: Primary, HighSchool, Associate, Bachelor, Master, Doctorate |
School |
Okul |
dxTextBox |
|
✓ |
|
Major |
Bölüm |
dxTextBox |
|
✓ |
|
GraduationYear |
Mezuniyet Yılı |
dxNumberBox |
|
✓ |
|
ExperienceYears |
Deneyim (Yıl) |
dxNumberBox |
|
✓ |
|
CurrentCompany |
Mevcut Firma |
dxTextBox |
|
✓ |
|
CurrentTitle |
Mevcut Ünvan |
dxTextBox |
|
✓ |
|
ExpectedSalary |
Ücret Beklentisi |
dxNumberBox |
|
✓ |
|
CurrencyId |
Para Birimi |
dxSelectBox |
|
✓ |
sorgu: Sas_H_Currency |
SourceId |
Kaynak |
dxSelectBox |
|
✓ |
sorgu: Hr_T_CandidateSource |
LinkedInUrl |
LinkedIn |
dxTextBox |
|
✓ |
|
UserId |
Personel |
dxSelectBox |
|
✓ |
sorgu: AbpUsers |
SkillIds |
Yetkinlikler |
dxTagBox |
|
✓ |
sorgu: Hr_T_Skill |
CvDocument |
CV |
dxImageUpload |
|
✓ |
|
Notes |
Notlar |
dxTextBox |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
KvkkConsent |
Adayın KVKK kapsamında açık rızası alındı |
dxCheckBox |
✓ |
✓ |
|
KvkkConsentDate |
Rıza Tarihi |
dxDateBox |
✓ |
✓ |
|
KvkkConsentMethod |
Rıza Alma Yöntemi |
dxSelectBox |
✓ |
✓ |
liste: Written, Electronic, Email |
KvkkConsentDocument |
İmzalı Rıza Belgesi |
dxImageUpload |
|
✓ |
|
Başvurular — App.Hr.JobApplication
| Özellik |
Değer |
| Wizard |
wizard/JobApplication.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Recruitment › App.Hr.JobApplication (sıra 4) |
| Yetki |
App.Hr.JobApplication + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Başvurular — bir adayın bir ilana başvurusu ve başvurunun aşama takibi (kanban panosu). |
| Kaynak |
Hr_T_JobApplication · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart, Todo (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Alt formlar |
App.Hr.Interview (Id → ApplicationId), App.Hr.JobOffer (Id → ApplicationId) |
| Todo |
başlık CandidateName, durum Stage (Applied,Screening,Interview,Offer,Hired,Rejected) |
| Komutlar |
InsertAfter: SQL · UpdateAfter: SQL |
| Form varsayılanları |
IsActive=true, ApplicationDate=@DATE, Stage=Applied, OwnerUserId=@USERID |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
CandidateId |
Aday |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_Candidate · script |
JobPostingId |
İlan |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_JobPosting |
CandidateName |
Aday |
dxTextBox |
|
|
|
PostingTitle |
İlan |
dxTextBox |
|
|
|
ApplicationDate |
Başvuru Tarihi |
dxDateBox |
✓ |
✓ |
|
SourceId |
Kaynak |
dxSelectBox |
|
✓ |
sorgu: Hr_T_CandidateSource |
OwnerUserId |
Sorumlu |
dxSelectBox |
|
✓ |
sorgu: AbpUsers |
AverageScore |
Ortalama Puan |
dxNumberBox |
|
✓ |
|
Stage |
Aşama |
dxSelectBox |
✓ |
✓ |
liste: Applied, Screening, Interview, Offer, Hired, Rejected · script |
RejectionReasonId |
Ret Sebebi |
dxSelectBox |
|
✓ |
sorgu: Hr_T_RejectionReason |
RejectionNote |
Ret Açıklaması |
dxTextArea |
|
✓ |
|
SortOrder |
Sıralama |
dxNumberBox |
|
|
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
Notes |
Notlar |
dxTextArea |
|
✓ |
|
Mülakatlar — App.Hr.Interview
| Özellik |
Değer |
| Wizard |
wizard/Interview.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Recruitment › App.Hr.Interview (sıra 5) |
| Yetki |
App.Hr.Interview + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Mülakatlar — başvuru için mülakat planlama, mülakatçı ataması ve kriter bazlı puanlama. |
| Kaynak |
Hr_T_Interview · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart, Scheduler (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Alt formlar |
App.Hr.InterviewScore (Id → InterviewId) |
| Komutlar |
InsertAfter: SQL · UpdateAfter: SQL · DeleteAfter: SQL |
| Form varsayılanları |
IsActive=true, InterviewType=FaceToFace, Status=Planned, InterviewerUserId=@USERID |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
ApplicationId |
Başvuru |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_JobApplication |
Title |
Başlık |
dxTextBox |
|
|
|
InterviewType |
Mülakat Türü |
dxSelectBox |
✓ |
✓ |
liste: Phone, Video, FaceToFace, Technical, Hr |
InterviewerUserId |
Mülakatçı |
dxSelectBox |
✓ |
✓ |
sorgu: AbpUsers |
StartDate |
Başlangıç |
dxDateBox |
✓ |
✓ |
script |
EndDate |
Bitiş |
dxDateBox |
✓ |
✓ |
|
Location |
Yer |
dxTextBox |
|
✓ |
|
MeetingUrl |
Toplantı Bağlantısı |
dxTextBox |
|
✓ |
|
Status |
Durum |
dxSelectBox |
✓ |
✓ |
liste: Planned, Completed, Cancelled, NoShow |
Recommendation |
Öneri |
dxSelectBox |
|
✓ |
liste: Hire, Hold, Reject |
OverallScore |
Genel Puan |
dxNumberBox |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
Notes |
Notlar |
dxTextArea |
|
✓ |
|
Teklifler — App.Hr.JobOffer
| Özellik |
Değer |
| Wizard |
wizard/JobOffer.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Recruitment › App.Hr.JobOffer (sıra 6) |
| Yetki |
App.Hr.JobOffer + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Teklifler — işe alınması düşünülen adaya yapılan ücret ve şart teklifi, iç onayı ve teklif mektubu. |
| Kaynak |
Hr_T_JobOffer · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Komutlar |
InsertAfter: SQL · UpdateAfter: SQL |
| Form varsayılanları |
IsActive=true, OfferDate=@DATE, Status=Draft, CurrencyId=TRY, EmploymentType=FullTime, WorkModel=Office |
| Butonlar |
App.Hr.JobOffer.OfferLetter |
| Onay akışı |
Start 'Onaya Gönderildi' → Approval 'Onay Bekliyor' → Inform 'Onay Bilgisi' → Inform 'Ret Bilgisi' → End 'Onaylandı' → End 'Reddedildi' |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
OfferNo |
Teklif No |
dxTextBox |
|
✓ |
|
ApplicationId |
Başvuru |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_JobApplication · script |
CandidateName |
Aday |
dxTextBox |
|
|
|
OfferDate |
Teklif Tarihi |
dxDateBox |
✓ |
✓ |
|
ValidUntil |
Geçerlilik Tarihi |
dxDateBox |
|
✓ |
|
StartDate |
İşe Başlama Tarihi |
dxDateBox |
|
✓ |
|
GrossSalary |
Brüt Maaş |
dxNumberBox |
✓ |
✓ |
|
CurrencyId |
Para Birimi |
dxSelectBox |
✓ |
✓ |
sorgu: Sas_H_Currency |
Status |
Durum |
dxSelectBox |
✓ |
✓ |
liste: Draft, Sent, Accepted, Declined, Expired · script |
ResponseDate |
Yanıt Tarihi |
dxDateBox |
|
✓ |
|
BranchId |
Şube Adı |
dxSelectBox |
✓ |
✓ |
sorgu: Sas_T_Branch |
DepartmentId |
Departman |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_Department (← BranchId) |
JobPositionId |
İş Pozisyonu |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_JobPosition (← DepartmentId) |
EmploymentType |
Çalışma Şekli |
dxSelectBox |
✓ |
✓ |
liste: FullTime, PartTime, Contract, Intern, Seasonal |
WorkModel |
Çalışma Modeli |
dxSelectBox |
✓ |
✓ |
liste: Office, Hybrid, Remote |
BenefitCodes |
Yan Haklar |
dxTagBox |
|
✓ |
sorgu: Hr_T_BenefitType |
Notes |
Notlar |
dxTextBox |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
ApprovalStatus |
Onay Durumu |
dxTextBox |
|
✓ |
|
ApprovalUser |
Onaylayan |
dxTextBox |
|
✓ |
|
ApprovalDate |
Onay Tarihi |
dxDateBox |
|
✓ |
|
ApprovalDescription |
Onay Açıklaması |
dxTextBox |
|
✓ |
|
Aday Kaynakları — App.Hr.CandidateSource
| Özellik |
Değer |
| Wizard |
wizard/CandidateSource.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Definitions › App.Hr.CandidateSource (sıra 13) |
| Yetki |
App.Hr.CandidateSource + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Aday Kaynakları — adayların ve ilanların hangi kanaldan geldiğini/yayınlandığını tanımlayan liste (LinkedIn, Kariyer.net, referans, kariyer fuarı…). |
| Kaynak |
Hr_T_CandidateSource · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
IsActive=true |
| Veri aynası |
data/App.Hr.CandidateSource.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
Name |
Adı |
dxTextBox |
✓ |
✓ |
|
Description |
Açıklama |
dxTextArea |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
Ret Sebepleri — App.Hr.RejectionReason
| Özellik |
Değer |
| Wizard |
wizard/RejectionReason.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Definitions › App.Hr.RejectionReason (sıra 14) |
| Yetki |
App.Hr.RejectionReason + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Ret Sebepleri — bir başvurunun şirket ya da aday tarafından neden kapatıldığını sınıflandıran liste. |
| Kaynak |
Hr_T_RejectionReason · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
IsActive=true, RejectedBy=Company |
| Veri aynası |
data/App.Hr.RejectionReason.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
Name |
Adı |
dxTextBox |
✓ |
✓ |
|
RejectedBy |
Reddeden |
dxRadioGroup |
✓ |
✓ |
liste: Company, Candidate |
Description |
Açıklama |
dxTextArea |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
Değerlendirme Kriterleri — App.Hr.EvaluationCriterion
| Özellik |
Değer |
| Wizard |
wizard/EvaluationCriterion.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Hr.Definitions › App.Hr.EvaluationCriterion (sıra 15) |
| Yetki |
App.Hr.EvaluationCriterion + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Değerlendirme Kriterleri — mülakatlarda puanlanan kriterler ve ağırlıkları (iletişim, teknik yetkinlik, problem çözme…). |
| Kaynak |
Hr_T_EvaluationCriterion · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
IsActive=true, Weight=1 |
| Veri aynası |
data/App.Hr.EvaluationCriterion.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
Name |
Adı |
dxTextBox |
✓ |
✓ |
|
Weight |
Ağırlık |
dxNumberBox |
✓ |
✓ |
|
Description |
Açıklama |
dxTextArea |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|
Mülakat Puanları — App.Hr.InterviewScore
| Özellik |
Değer |
| Wizard |
wizard/InterviewScore.json |
| Yol |
Liste (Wizard) |
| Menü |
Menüsüz (alt form) |
| Yetki |
App.Hr.InterviewScore + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Mülakat Puanları — mülakatta her değerlendirme kriterine verilen 1–5 puan. |
| Kaynak |
Hr_T_InterviewScore · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Komutlar |
InsertAfter: SQL · UpdateAfter: SQL · DeleteAfter: SQL |
| Form varsayılanları |
IsActive=true |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
InterviewId |
Mülakat |
dxTextBox |
|
|
|
CriterionId |
Kriter |
dxSelectBox |
✓ |
✓ |
sorgu: Hr_T_EvaluationCriterion |
Score |
Puan |
dxSelectBox |
✓ |
✓ |
liste: 1, 2, 3, 4, 5 |
Comment |
Yorum |
dxTextArea |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
|
✓ |
|