საბანკო სექტორში უწყვეტი დიალოგი ბანკსა და მის კლიენტებს შორის უმნიშვნელოვანესია. მობილური და ინტერნეტ ბანკინგის დამსახურებით, კლიენტებთან ურთიერთობის დიდი წილი ცირფულ არხებზე გადავიდა, სადაც მრავალ სხვადასხვა ფუნქციებთან ერთად, ბანერებსაც გადამწყვეტი როლი აკისრიათ. ისინი არიან ბანკის ახალი შეთავაზებების, განახლებული ფუნქციებისა და აუცილებელი შეტყობინებების მაცნეები, მარტივი და ლამაზი ფორმით.
Optio-ს ამოცანაა დაეხმაროს ბანკს მის კლიენტებთან კომუნიკაციაში, ამიტომაც გადავწყვიტეთ, რომ შევქმნათ ბანერების მართვის დინამიური მოდული. ეს მოდული ჩაფიქრებულია, როგორც ინსტრუმენტი ბანკის მარკეტინგის გუნდისთვის, რათა შექმნას, მართოს და განათავსოს ბანერები საკუთარ ციფრულ პლატფორმებზე.
შენი გამოწვევაა, თუ აირჩევ მის დაძლევას, ამ ჩანაფიქრის განხორციელება ვებ აპლიკაციის მხარეს.
იმისათვის, რომ მარკეტინგის გუნდის თანამშრომელმა ადვილად შეძლოს ბანერის განთავსება, მობილური და ინტერნეტ ბანკინგის ინტერფეისი დაყოფილია ლოგიკურ ზონებად (მაგ. Header, Right Sidebar, Footer, Main Hero Slider, და სხვა). ბანერის დამატებისას, ამ ზონებიდან ერთერთი აუცილებლად უნდა მივუთითოთ ჩანაწერს.
ბანერის ჩანაწერის ველები ქვედა ცხრილშია აღწერილი (”*” სიმბოლოთი აღნიშნულია აუცილებელი ველი):
სათაური | მონაცემთა ტიპი | აღწერა |
---|---|---|
id | string | ჩანაწერის უნიკალური იდენტიფიკატორი. API-ს შეგიძლია გადმოსცე შევსებული ან ცარიელი. API შეეცდება იპოვოს გადმოცემული მნიშვნელობით ჩანაწერი და თუ იპოვა განაახლოს ის, თუ ვერ მიაგნებს შექმნის ახალ ჩანაწერს |
name* | string | ბანერის სათაური, რომელსაც მომხმარებელი საკუთარი სურვილისამებრ არქმევს |
channelId* | string | ჩამონათვალი განსაზღვრავს, თუ რომელი საკომუნიკაციო არხისთვისაა განკუთვნილი ეს ბანერი |
language* | string | გამომდინარე იქიდან, მომხმარებელს რა ენა აქვს არჩეული, ბანერიც შესაბამის ენაზე უნდა გამოუჩნდეს. |
zoneId* | string | UI-ს ლოგიკური ზონა, რომელშიც გამოჩნდება ეს ბანერი |
priority* | number | პრიორიტეტულობის ინდექსი გამოიყენება ბანერების სორტირებისთვის. მაგალითად, თუ ერთ ლოგიკურ ზონაში რამდენიმე აქტიური ბანერია, ეს ინდექსი დაალაგებს მათ მიმდევრობას სლაიდერში. |
fileId* | string | ფაილის იდენტიფიკატორი, რომელიც იქმნება ფაილის ატვირთვის შემდეგ. ამავე იდენტიფიკატორით მოხდება ფაილის წაკითხვა API-დან (იხ. Blobs API ქვემოთ). |
url* | string | ეს ბმული გამოიყენება მომხმარებლის გადამისამართებისთვის ბანერზე დაკლიკვის შემდეგ. |
startDate* | Date | თარიღი, რომლის შემდეგაც ბანერი ითვლება აქტიურად და უნდა გამოჩნდეს მობილურ და ინტერნეტ ბანკინგში. |
endDate | Date | თარიღი, რომლის შემდეგაც ბანერი აღარ უნდა გამოჩნდეს მობილურ და ინტერნეტ ბანკინგში. |
active* | boolean | ამ ველით მაკერტინგის გუნდის თანამშრომელს შეუძლია სწრაფად გააქროს ან გამოაჩინოს ბანერი. ამ ველს ბანკის თანამშრომლები იმ შემთხვევაში იყენებენ თუ მოულოდნელად აღმოაჩინეს რაიმე ხარვეზი და თარიღების ცვლილების ნაცვლად, სწრაფად უნდა “გამორთონ” ან “ჩართონ” ბანერი. |
labels | string[] | ბანკში რეგისტრირებულ თითოეულ კლიენტს მინიჭებული აქვს ე.წ. ტეგი, ლეიბლი, რომელიც განსაზღვრავს მის სეგმენტს. მაგალითად: Payroll, Social, Affluent, და ა.შ. აქ ეთითება ერთი ან მეტი სეგმენტი, რომლებისთვისაც არის განკუთვნილი ეს ბანერი. თუ ველი ცარიელია მაშინ ითვლება, რომ ბანერი ყველა მომხმარებლისთვისაა აქტიური. |
👉 Optio-ს Banners API
-ში შეხვდები კიდევ ერთ ველს, isCorporate
, თუმცა ის არ გამოიყენება ამ ამოცანაში და არ მიაქციო ყურადღება
- შექმენი გვერდი, რომელიც აჩვენებს სიას Optio-ს
Banners API
-ს გამოყენებით - გამოაჩინე ინფორმაცია ბანერის შესახებ: სურათი, სათაური, სტატუსი, ზონა, დაწყება-დასრულების თარიღები, ლეიბლები.
- შესაძლებელი უნდა იყოს სიის გადაფურცვლა (Paging) და სორტირება
- მომხმარებელს ასევე უნდა შეეძლოს გაფილტვრა ტექსტით
- დამატებისა და რედაქტირებისთვის გამოიყენე ფორმა, რომელიც გამოჩნდება მარჯვენა მხარეს ე.წ. Drawer-ით
- რედაქტირებისთვის საკმარისი უნდა იყოს სიის ჩანაწერზე დაკლიკვა
- მომხმარებელმა უნდა შეძლოს სურათის ატვირთვა, სახელის დარქმევა, ზონის არჩევა, სტატუსის მინიჭება, დაწყებისა და დასრულების თარიღების მითითება, კლინეტების ლეიბლების მონიშვნა. სურათების ასატვირთად დაგჭირდება Optio-ს
Blobs API
. - ზონებისა და კლიენტების ლეიბლების შესაძლო მნიშვნელობების ჩასატვირთად დაგჭირდება Optio-ს
Reference Data API
.
Optio-ს API CRUD ოპერაციებისთვის ამ მეთოდებს იყენებს:
find
- მრავალი ჩანაწერის მოძიებაfind-one
- ერთი ჩანაწერის წაკითხვაsave
- ერთი ჩანაწერის შექმნა ან/და შენახვა, დამოკიდებულია იმაზე, თუ რა ეწერება გადმოცემულid
ველში.remove
- ერთი ჩანაწერის წაშლა
აღსანიშნავია, რომ ინფორმაციის წაკითხვის მეთოდებს აქვთ შესაძლებლობა გამოითხოვო კონკრეტული ველები. ამისთვის გამოიყენება include
და exclude
პარამეტრები. მაგალითად თუ include
-ს გადასცემ მასივს [’id’, ‘name’]
მხოლოდ ეს ორი ველი დაბრუნდება სერვერიდან.
API-ს დეტალური დოკუმენტაცია შეგიძლია იხილო Swagger-ით, ამ ბმულზე: https://development.api.optio.ai/swagger/banners
ბანერში სურათის ატვირთვისთვის გამოიყენება Blobs API
და პროცესი ორ ეტაპიანია:
- სურათი უნდა ატვირთო
/api/v2/blob/upload
მეთოდის გამოყენებით, რომლის რეზულტატშიც იქნება მითითებული ფაილის იდენტიფიკატორი - ეს იდენტიფიკატორი უნდა შეინახო ბანერის
fileId
-ი ველში
ენდპოინტი multipart/form-data
-ს იყენებს და ფაილის მონაცემებს ელოდება blobs
ველში.
ატვირთვის მაგალითი FormData
-ს გამოყენებით:
...
upload(image: File) {
const formData = new FormData();
formData.set('blob', image);
return this._httpClient.post(
[ENDPOINT_URL_HERE],
formData,
);
}
...
რაც შეეხება სურათის ჩამოტვირთვას და ჩვენებას, ამისთვის უნდა გამოიყენო /api/v2/blob/{id}
მეთოდი, სადაც {id}
-ში ჩაწერ fileId
-ის მნიშვნელობას.
API-ს დეტალური დოკუმენტაცია შეგიძლია იხილო Swagger-ით, ამ ბმულზე: https://development.api.optio.ai/swagger/blobs
ამ უნიფიცირებული API-ს გამოყენებით შესაძლებელია სხვადასხვა ჩამონათვალის გამოთხოვა მონაცემთა ბაზიდან. ჩამონათვლის იდენტიფიცირება ხდება typeId-ი ველის საშუალებით, რომელიც /api/v2/reference-data/find
-ს გადმოეცემა payload
-ით.
ამ ამოცანისთვის გჭირდება ოთხი ჩამონათვალი:
- საკომუნიკაციო არხები -
typeId:1600
- ზონები -
typeId:1700
- ლეიბლები -
typeId:1900
- ინტერფეისის ენები -
typeId:2900
key
ველში არსებული მნიშვნელობა, მომხმარებელს კი უნდა უჩვენო name
ველის მნიშვნელობა.
API-ს დეტალური დოკუმენტაცია შეგიძლია იხილო Swagger-ით, ამ ბმულზე: https://development.api.optio.ai/swagger/reference-data
- UI-ის ასაგებად გამოიყენე მხოლოდ Angular Material-ის კომპონენტები.
- უზრუნველყავი სუფთა და ინტუიტიური დიზაინი.
ქვემოთ ჩამოთვლილია დამატებითი ტექნოლოგიები და პირობები, რომელთა შესრულება არ არის აუცილებელი, თუმცა ჩაითვლება უპირატესობად ნამუშევრების შეფასებისას:
- NGRX-ის გამოყენება სთეითის მართვისთვის
- გვერდის დარეფრეშებისას სიის მდგომარეობის შენარჩუნება (ფილტრი, სოტირება, გვერდი, მონიშნული ჩანაწერი)
- Unit Test-ები
- README
ჩვენი API ითხოვს ავტორიზაციას, რისთვისაც მოგაწვდით Bearer Access Token-ს სარეგისტრაციო ფორმის შევსების შემდეგ.
ამოცანის გადაწყვეტა საჭიროა Angular-ის გამოყენებით, ცხრილები და სხვა ვიზუალური კომპონენტები მხოლოდ Angular Material
Optio, როგორც ფინტექის მხარდამჭერი ქართული კომპანია, მიზნად ისახავს საბანკო სექტორში კლიენტებთან ურთიერთობისა და მათი ჩართულობის ხელახალ განსაზღვრას, ე.წ. რედიზაინს. ჩვენი უახლესი Customer Data Platform (CDP) აძლიერებს ბანკებს მონაცემთა ინტელექტუალური ანალიტიკით, ხელს უწყობს პერსონალიზებულ ინტერაქციას მათ კლიენთებთან ციფრულ და სხვა საკომუნიკაციო არხებში.
ამ მიზნის მისაღწევად შექმნილ CDP-ში გამოიყენება მოწინავე ტექნოლოგიები: Big Data, Machine Learning, NLP, MicroService Architecture, Business Process Automation, Data Enrichment და სხვა მრავალი.
მთლიანობაში ჩვენი ტექნოლოგიური სტეკი მოიცავს: Angular, NodeJS, Python, ElasticSearch, Redis, RabbitMQ. პერიოდულად გვიწევს MS SQL, Oracle, MongoDb, dotnet core ტექნოლოგიებთან და სხვა მრავალ სისტემებთან მუშაობა და ინტეგრაცია.
ჩვენ ვეძებთ ახალგაზრდებს, რომლებიც ახლა იწყებენ პირველი კარიერული ნაბიჯების გადადგმას და გადაწყვეტილი აქვთ, რომ პროგრამირება მათი მთავარი პროფესიული საქმიანობაა.
ჩვენს გუნდში უკვე არიან შენნაირი დამწყები პროგრამისტები. მათ ყავთ საქართველოში ერთ-ერთი საუკეთესო მენტორი, რომელიც უზრუნველყოფს შენს პროფესიულ განვითარებას და დაგეხმარება შეისწავლო:
- პროგრამირება Javascript/Typescript/Angular/NodeJS ენების და ტექნოლოგიების გამოყენებით;
- Clean code-ის სტანდარტები;
- Git-თან მუშაობის საუკეთესო პრაქტიკა;
- კომპლექსური სისტემების არქიტექტურა;
- გუნდური მუშაობა;
- ავტომატური ტესტირება.
ჩვენთვის მნიშვნელოვანია ვიპოვოთ ცნობისმოყვარე, სწავლაზე და შრომაზე ორიენტირებული ადამიანები, რომლებიც გაივლიან ანაზღაურებად სტაჟირებას და წარმატებული სტაჟირების შემთხვევაში დასაქმდებიან ჩვენს კომპანიაში.
ამოცანის შესრულებისას ყურადღებას მივაქცევთ რამდენად სწორად არის გაგებული და შესრულებული ამოცანის მოთხოვნები და რამდენად არის დახარჯული დრო კოდის ხარისხზე.
Optio Internship Oct 2023 - ${YOUR_NAME_HERE}
@beqa-eqseulidze @GiorgiZanqaidze გასწორდა ხარვეზი. ინფრასტრუქტურის მიზეზით იყო შეფერხება. სცადეთ ერთხელაც.