Перейти до вмісту

Побудувала на Python генератор CV, рекомендацій, портфоліо та супровідних листів на основі бази даних — 41 модуль, 10 580 рядків, — що відтворює шість форматів виводу з одного джерела SQLite на 23 таблиці, зібраного ідемпотентним пайплайном із 19 кроків.

41 модулів створюють шість форматів з однієї бази

Ситуація. CV, список рекомендацій, портфоліо та супровідний лист — це ті самі факти, упорядковані чотирма способами, і якщо вести їх як чотири окремі документи, кожне виправлення доведеться вносити чотири рази, а згодом його просто не внесуть. Три мови множать це на три. Типовий збій полягає не в тому, що документ помилковий, а в тому, що два документи суперечать один одному і ніщо не вказує, котрий із них актуальний.

Завдання. Одне джерело фактів мало генерувати кожен документ кожною мовою й у кожному форматі, а впорядкування мав визначати код, а не той, хто останнім редагував файл.

Дія. Джерело — база даних SQLite із двадцяти трьох таблиць — досягнення, посади, компанії, регіони, категорії, послуги, профілі, рекомендації, короткі описи, — яку збирає пайплайн із дев’ятнадцяти кроків: одна команда перетворює порожній файл на повну базу даних. Кроки виконуються в чіткому порядку, і кожен написано так, щоб його можна було безпечно повторювати, тож пайплайн можна запустити на наявній базі даних, не дублюючи жодного рядка. Сорок один модуль на Python загальним обсягом 10 580 рядків генерує з неї шість вихідних форматів: HTML, PDF у двох варіантах, звичайний текст, Markdown і JSON — за допомогою шести шаблонів Jinja і восьми таблиць стилів. Кількість залежностей часу виконання обмежили рівно двома — рушієм шаблонів і рендерером PDF, — виходячи з того, що генератор документів, який через п’ять років не вдасться встановити, нічого не зберіг. Адаптація під читача — повноцінна частина моделі, а не ручне редагування: профіль визначає, які досягнення з’являються і в якому порядку, тож документ для певного типу читачів — це запит, а не копія.

Результат. Шість форматів, три мови й п’ять тем генеруються з однієї бази даних, а речення виправляють лише один раз. Ціна в тому, що тепер система — єдиний спосіб отримати документ: більше немає файлу, який можна поспіхом відкрити й відредагувати, а щоб додати мову, її треба додати скрізь, інакше взагалі нічого не збереться.

Одна частина довшого переліку — і він увесь на цьому сайті.

Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.

Переглянути весь перелік