feat!: move department_gen to edu_programs

feat!: rename "shorthand" variables to "short"
WIP: feat!: derive group name from edu_program
docs(template): adjust templates accordingly
style: format with typstyle
This commit is contained in:
2025-03-12 20:24:48 +02:00
parent 0e0dc20e9b
commit 33d067b67e
3 changed files with 73 additions and 51 deletions

38
lib.typ
View File

@ -15,10 +15,12 @@
/// education program abbreviations to name & number /// education program abbreviations to name & number
#let edu_programs = ( #let edu_programs = (
"ПЗПІ": ( "ПЗПІ": (
department_gen: "Програмної інженерії",
name: "Інженерія програмного забезпечення", name: "Інженерія програмного забезпечення",
number: 121, // TODO: ПЗПІ is "F2" now number: 121, // TODO: ПЗПІ is "F2" now
), ),
"КУІБ": ( "КУІБ": (
department_gen: "Інфокомунікацій",
name: "Управління інформаційною безпекою", name: "Управління інформаційною безпекою",
number: 125, number: 125,
), ),
@ -264,11 +266,10 @@
/// -> content /// -> content
/// - doc (content): Content to apply the template to. /// - doc (content): Content to apply the template to.
/// - title (str): Title of the document. /// - title (str): Title of the document.
/// - subject_shorthand (str): Subject short name. /// - subject_short (str): Subject short name.
/// - department_gen (str): Department name in genitive form.
/// - authors ((name: str, full_name_gen: str, variant: int, group: str, gender: str),): List of Authors dicts. /// - authors ((name: str, full_name_gen: str, variant: int, group: str, gender: str),): List of Authors dicts.
/// - mentors ((name: str, gender: str, degree: str),): List of mentors dicts. /// - mentors ((name: str, gender: str, degree: str),): List of mentors dicts.
/// - edu_program_shorthand (str): Education program shorthand. /// - edu_program_short (str): Education program shorthand.
/// - task_list (done_date: datetime, initial_date: datetime, source: (content | str), content: (content | str), graphics: (content | str)): Task list object. /// - task_list (done_date: datetime, initial_date: datetime, source: (content | str), content: (content | str), graphics: (content | str)): Task list object.
/// - calendar_plan ( plan_table: (content | str), approval_date: datetime): Calendar plan object. /// - calendar_plan ( plan_table: (content | str), approval_date: datetime): Calendar plan object.
/// - abstract (keywords: (str, ), text: (content | str)): Abstract object. /// - abstract (keywords: (str, ), text: (content | str)): Abstract object.
@ -277,11 +278,10 @@
#let cw-template( #let cw-template(
doc, doc,
title: "NONE", title: "NONE",
subject_shorthand: "NONE", subject_short: "NONE",
department_gen: "Програмної інженерії",
author: (), author: (),
mentors: (), mentors: (),
edu_program_shorthand: "ПЗПІ", edu_program_short: "ПЗПІ",
task_list: (), task_list: (),
calendar_plan: (), calendar_plan: (),
abstract: (), abstract: (),
@ -304,7 +304,7 @@
let head_mentor = mentors.at(0) let head_mentor = mentors.at(0)
let edu_program = edu_programs.at(edu_program_shorthand) let edu_program = edu_programs.at(edu_program_short)
// page 1 {{{2 // page 1 {{{2
[ [
@ -323,7 +323,7 @@
ДО КУРСОВОЇ РОБОТИ ДО КУРСОВОЇ РОБОТИ
з дисципліни: "#subjects.at(subject_shorthand, default: "NONE")" з дисципліни: "#subjects.at(subject_short, default: "NONE")"
Тема роботи: "#title" Тема роботи: "#title"
@ -389,9 +389,9 @@
Спеціальність Спеціальність
], ],
{ {
uline(align: left, department_gen) uline(align: left, edu_program.department_gen)
linebreak() linebreak()
uline(align: left, subjects.at(subject_shorthand)) uline(align: left, subjects.at(subject_short))
linebreak() linebreak()
uline(align: left, [#edu_program.number #edu_program.name]) uline(align: left, [#edu_program.number #edu_program.name])
}, },
@ -671,26 +671,28 @@
/// -> content /// -> content
/// - doc (content): Content to apply the template to. /// - doc (content): Content to apply the template to.
/// - doctype ("ЛБ" | "ПЗ"): Document type. /// - doctype ("ЛБ" | "ПЗ"): Document type.
/// - edu_program_short (str): Education program shorthand.
/// - title (str): Title of the document. /// - title (str): Title of the document.
/// - subject_shorthand (str): Subject short name. /// - subject_short (str): Subject short name.
/// - department_gen (str): Department name in genitive form.
/// - worknumber (int): Number of the work, can be omitted. /// - worknumber (int): Number of the work, can be omitted.
/// - authors ((name: str, full_name_gen: str, variant: int, group: str, gender: str),): List of Authors dicts. /// - authors ((name: str, full_name_gen: str, variant: int, group: str, gender: str),): List of Authors dicts.
/// - mentors (name: str, gender: str or none, degree: str): Mentors objects. /// - mentors (name: str, gender: str or none, degree: str): Mentors objects.
#let lab-pz-template( #let lab-pz-template(
doc, doc,
doctype: "NONE", doctype: "NONE",
edu_program_short: "ПЗПІ",
title: "NONE", title: "NONE",
subject_shorthand: "NONE", subject_short: "NONE",
department_gen: "Програмної інженерії",
worknumber: 1, worknumber: 1,
authors: (), authors: (),
mentors: (), mentors: (gender: none),
) = { ) = {
set document(title: title, author: authors.at(0).name) set document(title: title, author: authors.at(0).name)
show: style show: style
let edu_program = edu_programs.at(edu_program_short)
context counter(heading).update(worknumber - 1) context counter(heading).update(worknumber - 1)
// page 1 {{{2 // page 1 {{{2
@ -699,7 +701,7 @@
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ
\ \ \ \
Кафедра #department_gen Кафедра #edu_program.department_gen
\ \ \ \ \ \
Звіт \ Звіт \
@ -707,7 +709,7 @@
#if doctype == "ЛБ" [лабораторної роботи] else [практичної роботи] #if doctype == "ЛБ" [лабораторної роботи] else [практичної роботи]
#if worknumber != none [№ #worknumber] #if worknumber != none [№ #worknumber]
з дисципліни: "#subjects.at(subject_shorthand, default: "UNLNOWN SUBJECT, PLEASE OPEN AN ISSUE")" з дисципліни: "#subjects.at(subject_short, default: "UNKNOWN SUBJECT, PLEASE OPEN AN ISSUE")"
з теми: "#title" з теми: "#title"
@ -720,7 +722,7 @@
let author = authors.at(0) let author = authors.at(0)
if author.gender == "m" [Виконав:\ ] else [Виконала:\ ] if author.gender == "m" [Виконав:\ ] else [Виконала:\ ]
[ [
ст. гр. #author.group\ ст. гр. #author.edu_program\-#author.group\
#author.name\ #author.name\
] ]
if author.variant != none [Варіант: #author.variant] if author.variant != none [Варіант: #author.variant]

View File

@ -4,26 +4,14 @@
name: "Ситник Є. С.", name: "Ситник Є. С.",
full_name_gen: "Ситника Єгора Сергійовича", full_name_gen: "Ситника Єгора Сергійовича",
variant: 13, variant: 13,
group: "ПЗПІ-23-2", group: "23-2",
gender: "m", gender: "m",
) )
#let mentors = ( #let mentors = (
( (name: "Черепанова Ю. Ю.", gender: "f", degree: "Ст. викл. каф. ПІ"),
name: "Черепанова Ю. Ю.", (name: "Русакова Н. Є.", gender: "f", degree: "Доц. каф. ПІ"),
gender: "f", (name: "Широкопетлєва М. С.", gender: "f", degree: "Ст. викл. каф. ПІ"),
degree: "Ст. викл. каф. ПІ",
),
(
name: "Русакова Н. Є.",
gender: "f",
degree: "Доц. каф. ПІ",
),
(
name: "Широкопетлєва М. С.",
gender: "f",
degree: "Ст. викл. каф. ПІ",
),
) )
#let task_list = ( #let task_list = (
@ -38,19 +26,39 @@
plan_table: table( plan_table: table(
columns: 4, columns: 4,
align: (center, left, center, center), align: (center, left, center, center),
[Номер], [Назва етапів курсової роботи], [Строк виконання етапів роботи], [Примітки], [Номер],
[Назва етапів курсової роботи],
[Строк виконання етапів роботи],
[Примітки],
[1], [Аналіз предметної області], [15.09.24 24.09.24], [Виконано], [1], [Аналіз предметної області], [15.09.24 24.09.24], [Виконано],
[2], [Концептуальне моделювання], [24.09.24-30.09.24], [~], [2], [Концептуальне моделювання], [24.09.24-30.09.24], [~],
[2], [Постановка задачі], [28.09.24 2.10.24], [Виконано], [2], [Постановка задачі], [28.09.24 2.10.24], [Виконано],
[3], [Побудова ER-діаграми та схеми БД], [2.10.24 18.10.24], [Виконано], [3], [Побудова ER-діаграми та схеми БД], [2.10.24 18.10.24], [Виконано],
[4], [Оформлення розділів 1, 2 та 3.1, 3.2 пояснювальної записки], [10.10.24 - 18.10.24], [Виконано], [4],
[Оформлення розділів 1, 2 та 3.1, 3.2 пояснювальної записки],
[10.10.24 - 18.10.24],
[Виконано],
[5], [Перша контрольна точка з курсової роботи], [20.10.24], [Виконано], [5], [Перша контрольна точка з курсової роботи], [20.10.24], [Виконано],
[6], [Нормалізація бази даних], [20.10.24 - 15.11.24], [Виконано], [6], [Нормалізація бази даних], [20.10.24 - 15.11.24], [Виконано],
[7], [Створення програми], [20.10.24 20.11.24], [Виконано], [7], [Створення програми], [20.10.24 20.11.24], [Виконано],
[8], [Тестування програми, наповнення бази даних], [20.11.24 - 5.12.24], [Виконано], [8],
[Тестування програми, наповнення бази даних],
[20.11.24 - 5.12.24],
[Виконано],
[9], [Друга контрольна точка з курсової роботи], [7.12.24], [Виконано], [9], [Друга контрольна точка з курсової роботи], [7.12.24], [Виконано],
[10], [Реалізація остаточної версії програми], [7.12.24-15.12.24], [Виконано], [10],
[11], [Оформлення інших розділів пояснювальної записки], [1.11.24 25.12.24], [Виконано], [Реалізація остаточної версії програми],
[7.12.24-15.12.24],
[Виконано],
[11],
[Оформлення інших розділів пояснювальної записки],
[1.11.24 25.12.24],
[Виконано],
[12], [Третя контрольна точка з курсової роботи], [27.12.24], [Виконано], [12], [Третя контрольна точка з курсової роботи], [27.12.24], [Виконано],
), ),
approval_date: datetime(year: 2024, month: 12, day: 27), approval_date: datetime(year: 2024, month: 12, day: 27),
@ -69,11 +77,26 @@
"SQL", "SQL",
), ),
text: [ text: [
Мета даної роботи -- проєктування та розробка інформаційної системи «Помічник класного керівника. Керування класом», яка спрямована на автоматизацію процесів управління класом, облік даних про учнів, планування та аналіз навчального процесу. Основна задача інформаційної системи спростити роботу класного керівника, забезпечити ефективну організацію документації та взаємодію з учасниками освітнього процесу. Мета даної роботи -- проєктування та розробка інформаційної системи «Помічник
класного керівника. Керування класом», яка спрямована на автоматизацію процесів
управління класом, облік даних про учнів, планування та аналіз навчального
процесу. Основна задача інформаційної системи спростити роботу класного
керівника, забезпечити ефективну організацію документації та взаємодію з
учасниками освітнього процесу.
Для реалізації системи було використано сучасний стек технологій, а саме: Go -- як основна мова програмування для створення серверної логіки, HTMX -- для динамічного оновлення інтерфейсу без використання складних фреймворків, MySQL -- як СУБД для зберігання даних про учнів, їх оцінки та розклад, Neovim -- як середовище для швидкої та ефективної розробки коду, Go Echo -- веб-фреймворк для створення REST API, Go SQLx -- бібліотека для роботи з базою даних, що забезпечує зручність і гнучкість. Для реалізації системи було використано сучасний стек технологій, а саме: Go --
як основна мова програмування для створення серверної логіки, HTMX -- для
динамічного оновлення інтерфейсу без використання складних фреймворків, MySQL --
як СУБД для зберігання даних про учнів, їх оцінки та розклад, Neovim -- як
середовище для швидкої та ефективної розробки коду, Go Echo -- веб-фреймворк для
створення REST API, Go SQLx -- бібліотека для роботи з базою даних, що
забезпечує зручність і гнучкість.
Результат роботи веб-додаток, який дозволяє обліковувати особисті дані учнів та їхніх опікунів, включаючи інформацію про успішність, відвідуваність та інші показники; планувати розклад занять; генерувати звіти про успішність учнів та переглядати різну статистику. Інтерфейс, створений з використанням HTMX, легко адаптується під потреби користувача. Результат роботи веб-додаток, який дозволяє обліковувати особисті дані учнів
та їхніх опікунів, включаючи інформацію про успішність, відвідуваність та інші
показники; планувати розклад занять; генерувати звіти про успішність учнів та
переглядати різну статистику. Інтерфейс, створений з використанням HTMX, легко
адаптується під потреби користувача.
], ],
) )
@ -94,9 +117,8 @@
#show: cw-template.with( #show: cw-template.with(
title: "Інформаційна система «Помічник класного керівника». Керування класом", title: "Інформаційна система «Помічник класного керівника». Керування класом",
subject_shorthand: "БД", subject_short: "БД",
department_gen: "Програмної інженерії", edu_program_short: "ПЗПІ",
edu_program_shorthand: "ПЗПІ",
author: author, author: author,
mentors: mentors, mentors: mentors,
task_list: task_list, task_list: task_list,

View File

@ -2,9 +2,9 @@
#show: lab-pz-template.with( #show: lab-pz-template.with(
doctype: "ЛБ", doctype: "ЛБ",
edu_program_short: "ПЗПІ",
title: "Інформаційна система «Помічник класного керівника». Керування класом", title: "Інформаційна система «Помічник класного керівника». Керування класом",
subject_shorthand: "БД", subject_short: "БД",
department_gen: "Програмної інженерії",
authors: ( authors: (
( (
name: "Ситник Є. С.", name: "Ситник Є. С.",
@ -14,10 +14,8 @@
gender: "m", gender: "m",
), ),
), ),
mentor: ( mentors: (
name: "Черепанова Ю. Ю.", (name: "Черепанова Ю. Ю.", gender: "f", degree: "Ст. викл. каф. ПІ"),
gender: "f",
degree: "Ст. викл. каф. ПІ",
), ),
worknumber: 1, worknumber: 1,
) )