Edu Schedule
Telegram-բոտ բուհի դասացուցակով՝ տվյալներ համալսարանի API-ից, քեշավորում և խմբի մոտավոր որոնում։ 1 100+ ակտիվ օգտատեր մեկ կիսամյակում։
Տեխնոլոգիաներ
- Python
- aiogram
- SQLite
- nginx
Խնդիրը
Մշակման պահին դասացուցակն ուսանողներին հրապարակվում էր PDF-ով։ Դասերը տեսնելու համար պետք էր գտնել ճիշտ փաստաթուղթը, դրա մեջ գտնել սեփական խումբը, պարզել՝ զույգ շաբաթ է, թե կենտ, և հեռախոսից կարդալ աղյուսակը։ Բոտն այդ ճանապարհը կրճատում էր մինչև մեկ կոճակի սեղմում, իսկ տվյալները վերցնում էր անմիջապես բուհի API-ից։
Լուծումը
Բոտը դասացուցակը վերցնում է բուհի API-ից, ստուգում և քեշավորում է տվյալները և տալիս է ցանկացած օրվա դասերը՝ հաշվի առնելով շաբաթվա զույգությունը և կոնկրետ խմբի դասաժամերի ժամանակացույցը։ Խումբն ընտրվում է անվան մոտավոր որոնմամբ. սխալ մուտքագրման դեպքում բոտը ցույց է տալիս նման տարբերակներ, և օգտատերն ընտրում է անհրաժեշտը։
Ճարտարապետություն
Բուհի API
Ընթացիկ դասացուցակը պաշտոնական API-ից
Ստուգում
Ճշտություն և ամբողջականություն
Ձևաչափում
Միասնական ձևաչափ
Քեշ
Արագ պատասխաններ և API-ին ավելի քիչ հարցումներ
Բոտի պատասխան
Ընթացիկ դասացուցակը՝ օգտատիրոջը
Թարմացում յուրաքանչյուր 10 րոպեն մեկ
Դասացուցակը միշտ արդիական է
Հիմնական տեխնիկական որոշումները
- Քեշ բոտի և բուհի API-ի միջև. նույնանման հարցումները կրկին դուրս չեն գնում։ Պատասխանը գալիս է ավելի արագ, իսկ աղբյուրի բեռնվածությունն ավելի ցածր է։
- Խմբի որոնում ըստ Լևենշտեյնի հեռավորության. ոչ ճշգրիտ մուտքագրման դեպքում բոտը ցույց է տալիս ամենամոտ անվանումները, որոնցից օգտատերն ընտրում է անհրաժեշտը։
Ստորև ներկայացված սքրինշոթներն ու տեսանյութերը վերցված են աշխատող համակարգից, ուստի ինտերֆեյսը և ձայնը (եթե կա) ռուսերեն են։
Տվյալների ստացում
Բոտն ավտոմատ ստանում է ընթացիկ դասացուցակը համալսարանի API-ից։ Տվյալները ստուգվում են ճշտության և ամբողջականության տեսանկյունից, բերվում են միասնական ձևաչափի և քեշավորվում. API-ի բեռնվածությունն ավելի ցածր է, պատասխաններն՝ ավելի արագ։
Խմբի ընտրություն
Առաջին գործարկման ժամանակ բոտը խնդրում է մուտքագրել խմբի անվանումը։ Եթե ուսանողը սխալվել է կամ մուտքագրել է ոչ ճշգրիտ, բոտը ցույց է տալիս ամենամոտ տարբերակները՝ համեմատելով անվանումներն ըստ Լևենշտեյնի հեռավորության, և անհրաժեշտը կարելի է ընտրել հենց դրանցից։ Խումբը ցանկացած պահի կարելի է փոխել ընտրացանկից կամ նոր անվանում մուտքագրելով։

Ընտրացանկ և մոտակա օրերը
Խումբն ընտրելուց հետո բացվում է ընտրացանկը, որտեղ հիմնական գործողությունները հասանելի են մեկ հպումով։ «Այսօր», «Վաղը» և «Վաղը չէ մյուս օրը» կոճակները հավաքում են ընտրված օրվա դասերը մեկ հաղորդագրության մեջ։ Եթե դասն անցկացվում է առցանց՝ Zoom-ով, բոտն ավելացնում է հանդիպման տվյալները և «Միանալ» կոճակը, որպեսզի միանալը լինի մեկ հպումով՝ առանց ձեռքով մուտքագրման։

Շաբաթվա օրերը
Ընտրված շաբաթվա օրվա համար բոտը միանգամից ցույց է տալիս և՛ զույգ, և՛ կենտ շաբաթվա դասացուցակը՝ մեկ հաղորդագրությունում։ Ընդ որում այն ինքն է օրացույցով որոշում, թե որ շաբաթն է ընթանում հիմա, և ընդգծմամբ նշում է այն, որին վերաբերում է մոտակա ընտրված օրը, որպեսզի պարզ լինի՝ որ դասացուցակն է արդիական։

Օրացույց
Օրացույցում կարելի է թերթել ամիսները և ընտրել կոնկրետ ամսաթիվ։ Բոտը միանգամից ցույց կտա այդ օրվա դասացուցակը։ «Հեռացնել» կոճակը ջնջում է օրացույցով հաղորդագրությունը, որպեսզի նման հաղորդագրությունները չկուտակվեն զրույցում։

Դասերի ժամերը
Դասերի ժամերը կախված են խմբից, ուստի բոտն ընտրված խմբի համար վերցնում է դասաժամերի համապատասխան ժամանակացույցը և կիրառում այն օրվա դասերի վրա՝ հաշվի առնելով ընդմիջումները, ճաշը և դասղեկի ժամերը, եթե այդպիսիք կան։

Տեղեկություն առարկաների մասին
Առանձին բաժին՝ ուսանողի բոլոր առարկաների ցանկով։ Յուրաքանչյուր անվանում սեղմելի է. սեղմելիս բացվում է քարտ՝ դասախոսի անուն-ազգանունով, նրա էլ. փոստով, լսարաններով և Zoom-ի մուտքի տվյալներով։

Զանգվածային հաղորդագրություններ
Բոտի միջոցով ուսանողներին ուղարկվում էին կարևոր հաղորդագրություններ. կարելի էր արագ տեղեկացնել դասացուցակի փոփոխությունների, հայտարարությունների և այլ նորությունների մասին։ Բոտն աշխատում էր ոչ միայն որպես դասացուցակի տեղեկատու, այլև որպես օպերատիվ կապի ալիք։ Այս եղանակով ուղարկվում էին նաև ամփոփիչ հաղորդագրություններ. օրինակ՝ կիսամյակի վերջում բոտն ուղարկում էր օգտագործման վիճակագրությունը և ամենաակտիվ խմբերի ցանկը։

Արդյունքներ
- Կիսամյակի ընթացքում ուսանողները բոտի միջոցով դասացուցակը բացել են 36 000+ անգամ՝ 1 100+ ակտիվ օգտատիրոջ դեպքում։
- Քեշավորումը կրճատեց բուհի API-ին կրկնվող դիմումները և արագացրեց բոտի պատասխանները։
Մետրիկաներ
- դասացուցակի բացում մեկ կիսամյակում
- 36 000+
- ակտիվ օգտատեր
- 1 100+