Edu Schedule

Telegram-բոտ բուհի դասացուցակով՝ տվյալներ համալսարանի API-ից, քեշավորում և խմբի մոտավոր որոնում։ 1 100+ ակտիվ օգտատեր մեկ կիսամյակում։

Ժամանակահատված
2022 — 2026
Կարգավիճակ
Ավարտված
Իմ դերը
Միակ մշակողը՝ բոտը, բուհի API-ի հետ ինտեգրումը, քեշավորումը և զանգվածային հաղորդագրությունները։

Տեխնոլոգիաներ

  • Python
  • aiogram
  • SQLite
  • nginx

Խնդիրը

Մշակման պահին դասացուցակն ուսանողներին հրապարակվում էր PDF-ով։ Դասերը տեսնելու համար պետք էր գտնել ճիշտ փաստաթուղթը, դրա մեջ գտնել սեփական խումբը, պարզել՝ զույգ շաբաթ է, թե կենտ, և հեռախոսից կարդալ աղյուսակը։ Բոտն այդ ճանապարհը կրճատում էր մինչև մեկ կոճակի սեղմում, իսկ տվյալները վերցնում էր անմիջապես բուհի API-ից։

Լուծումը

Բոտը դասացուցակը վերցնում է բուհի API-ից, ստուգում և քեշավորում է տվյալները և տալիս է ցանկացած օրվա դասերը՝ հաշվի առնելով շաբաթվա զույգությունը և կոնկրետ խմբի դասաժամերի ժամանակացույցը։ Խումբն ընտրվում է անվան մոտավոր որոնմամբ. սխալ մուտքագրման դեպքում բոտը ցույց է տալիս նման տարբերակներ, և օգտատերն ընտրում է անհրաժեշտը։

Ճարտարապետություն

  1. Բուհի API

    Ընթացիկ դասացուցակը պաշտոնական API-ից

  2. Ստուգում

    Ճշտություն և ամբողջականություն

  3. Ձևաչափում

    Միասնական ձևաչափ

  4. Քեշ

    Արագ պատասխաններ և API-ին ավելի քիչ հարցումներ

  5. Բոտի պատասխան

    Ընթացիկ դասացուցակը՝ օգտատիրոջը

Թարմացում յուրաքանչյուր 10 րոպեն մեկ

Դասացուցակը միշտ արդիական է

Հիմնական տեխնիկական որոշումները

  • Քեշ բոտի և բուհի API-ի միջև. նույնանման հարցումները կրկին դուրս չեն գնում։ Պատասխանը գալիս է ավելի արագ, իսկ աղբյուրի բեռնվածությունն ավելի ցածր է։
  • Խմբի որոնում ըստ Լևենշտեյնի հեռավորության. ոչ ճշգրիտ մուտքագրման դեպքում բոտը ցույց է տալիս ամենամոտ անվանումները, որոնցից օգտատերն ընտրում է անհրաժեշտը։

Ստորև ներկայացված սքրինշոթներն ու տեսանյութերը վերցված են աշխատող համակարգից, ուստի ինտերֆեյսը և ձայնը (եթե կա) ռուսերեն են։

Տվյալների ստացում

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

Խմբի ընտրություն

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

Խմբի ընտրություն
Խմբի մոտավոր որոնում. թերի կամ սխալ անվան դեպքում բոտը վերադարձնում է ամենամոտ համընկնումները, որոնցից կարելի է ընտրել անհրաժեշտը։

Ընտրացանկ և մոտակա օրերը

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

Ընտրացանկ և մոտակա օրերը
Օրվա դասացուցակը. յուրաքանչյուր դաս՝ դասախոսով, ժամով և լսարանով, հանդիպման հղում հեռավար ուսուցման համար և «այսօր / վաղը / վաղը չէ մյուս օրը» կոճակները։

Շաբաթվա օրերը

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

Շաբաթվա օրերը
Շաբաթվա մեկ օրը միանգամից երկու տարբերակով. զույգ և կենտ շաբաթներին դասերը տարբեր են։

Օրացույց

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

Օրացույց
Օրացույց. ամսվա ցանկացած օր բացում է այդ ամսաթվի դասացուցակը, իսկ ընտրացանկում մնում են շաբաթվա օրերը և առարկաները։

Դասերի ժամերը

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

Դասերի ժամերը
Դասերը՝ տվյալ խմբի դասաժամերի ժամանակացույցով, և կոճակ, որը հեռացնում է հաղորդագրությունը զրույցից։

Տեղեկություն առարկաների մասին

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

Տեղեկություն առարկաների մասին
Առարկայի ընտրություն. բոտը տալիս է դասախոսին, լսարանը, կապի էլ. փոստը և հանդիպման հղումը։

Զանգվածային հաղորդագրություններ

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

Զանգվածային հաղորդագրություններ
Կիսամյակի ամփոփիչ հաղորդագրությունը՝ 36 000+ դիմում դասացուցակին և տասը խումբ, որոնք ամենաշատն են օգտվել բոտից։

Արդյունքներ

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

Մետրիկաներ

դասացուցակի բացում մեկ կիսամյակում
36 000+
ակտիվ օգտատեր
1 100+