YML
- row:
- field: date
title: "Номер"
type: string
! Перевага index.php?title=Категорія:Інструменти розробника
POST /api/contractors генерації коду забезпечується через Для розробників. YML дає можливість описувати структуру компонента зрозуміло, читабельно, контрольовано і придатно; так само реалізовано версіонування через Git та роботи з штучним інтелектом. Частина логіки застаріває. entity: contractor
здатна бути автоматизовано розроблена умовна Python-модель:
index.php?title=Категорія:K2 ERP
title: "Заявка на ремонт"
- формулює задачу;
- перевіряє модель;
- уточнює структуру;
- контролює якість;
- акцептує створення компонента;
- дописує складну логіку, яка не була описана в промпті. |-
| 6
| K2 ERP автоматизовано створює компонент. - row:
Коли до цього підключається [[AI|штучний інтелект]], людина здатна описати задум людською мовою, отримати [[YML]]-модель, перевірити її, уточнити промптами й акцептувати автоматичне створення компонента. entities:
Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо. fields:
component:
calculated: true
calculate_total:
Він стає архітектором, який:
id:
== YML як міст між людиною і системою ==
- crm
type: directory
name:
title: "Власник"
* [[K2]]
* [[K2 ERP]]
* [[K2 Update]]
* [[ERP]]
* [[YML]]
* [[YAML]]
* [[JSON]]
* [[XML]]
* [[ER-модель]]
* [[BP-модель]]
* [[ORM]]
* [[API]]
* [[Python]]
* [[TypeScript]]
* [[PostgreSQL]]
* [[SQLite]]
* [[MySQL]]
* [[SQL]]
* [[Git]]
* [[AI]]
* [[Штучний інтелект]]
* [[Low-code]]
* [[No-code]]
* [[RAD]]
* [[IDE]]
* [[Автоматична генерація коду]]
* [[Автоматизація бізнесу]]
* [[Українське програмне забезпечення]]
* [[Альтернатива 1С]]
* [[Альтернатива BAS]]
title: "E-mail"
* [https://erp.kyiv.ua Сайт K2 ERP]
* [https://wiki.erp.kyiv.ua Wiki K2 ERP]
* [https://cloud.corp2.eu хмарна інфраструктура K2 ERP]
* [https://t.me/+uIdWI1W6vndkMTAy Telegram-канал K2 ERP]
* [https://t.me/+6jFwAZM6TQliNTdi Група обговорення функціоналу та пропозицій]
* [https://www.linkedin.com/company/k2erp/ LinkedIn K2]
Саме це і робить [[YML]] важливим для швидкої розробки. У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку. entity: customer_order
[[index.php?title=Категорія:Українське програмне забезпечення]]
type: reference
title: "Активний"
як приклад: Людина здатна написати промпт: table_parts:
title: "Номер" type: string
export interface Contractor {
auto: true title: "складський облік"
! Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат. entity: service_work
validation: - title: "Заявки на ремонт" - field: contractor_id - high
Форма документа — це те, з чим функціонує користувач системи. Правильний баланс. YML описує те, що можна формалізувати.</syntaxhighlight> Типові помилки:
entity: equipmentYML дає можливість описати модель один раз, а далі використати цей SEO-опис для автоматичного створення багатьох частин системи. Не вся бізнес-логіка здатна бути описана без зусиль через поля й типи. Програміст дописує те, що потребує складної експертної логіки. Якщо поле виступає як посиланням на іншу сутність, можна перевірити коректність зв’язку. |-
| 2 | ШІ створює YML-структуру.YML дає можливість описати компонент так, щоб він не був випадковим шматком коду. |- | 5 | Модель акцептується. Зв’язки перебудовуються. - name
- warehouse У першому рядку — номер і дата. як приклад, інтегратор створив компонент “Сервісне обслуговування обладнання”. Видно, що описується товар, у якого виступає як код, назва, одиниця виміру, ціна та ознака активності. | дає можливість швидше створювати новий функції ERP і адаптувати ERP під реальні процеси. Окремо варто відзначити моделей, налаштувань, компонентів, форм, меню, довідників, документів і інших елементів системи K2 ERP. Він прибирає рутину. active: + title: "Дата доставки" email: str | None = None fields:
type: decimal
- critical
Це один із ключових елементів сучасної архітектури, яка дає можливість переходити від ручного програмування до моделювання, автоматичної генерації та [[AI]]-асистованої розробки.<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
tax_number:
unit: "шт"
type: document
Але немає сенсу вручну створювати те, що повторюється в кожному модулі:
phone:
type: datetime
title: "Години"
title: "Дата"
У [[K2 ERP]] [[YML]] дає можливість скоротити цей шлях.[[AI|ШІ]] здатна генерувати [[YML]] за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента.== YML і документація ==
code: str contractor_id: type: reference set: робота, кількість годин, ставка, сума. Поля додаються. як приклад, якщо в YML описано довідник “Контрагенти”, платформа здатна створити: як приклад, якщо хтось додав нове поле до документа, це видно в diff: title: "Керівник продажів" Приклад: required: true як приклад: Це дає можливість не без зусиль передати “набір файлів”, а передати керовану модель, яку платформа здатна встановити, оновити або перевірити. required: true </syntaxhighlight> entity: product У сучасній ERP-системі критично не тільки написати код. title: "Відповідальний інженер" Такі зв’язки можна описувати явно. Не “написати все руками”, а “описати модель так, щоб платформа сама могла створити потрібну структуру”. |} Він не замінює складну бізнес-логіку.== YML і low-code/no-code == |
Але в реальності складні ERP-системи не можуть на 100% обійтися без архітекторів і програмістів. |- | Довідники | автоматизовано створені довідники. критично правильно описати структуру бізнесу.</syntaxhighlight>
як приклад, якщо поле обов’язкове, можна перевірити, що платформа не дає можливість зберегти документ без цього поля. У бізнес-системах давно використовуються різні формати опису даних: XML, JSON, YML та інші. Старий підхід як приклад, з опису довідника “Контрагенти” можна сформувати: sales/
default: draft
fields:
email:
- draft
permissions.yml
YML і права доступуcomment: type: decimal </syntaxhighlight> type: boolean title: "Дата" - closed rules: Це інтуїтивно для розробників, інтеграторів, тестувальників і користувачів.fields: equipment_id: Або TypeScript-інтерфейс: index.php?title=Категорія:Автоматизація бізнесу index.php?title=Категорія:Програмування total_amount: "sum(items.amount)" entity: equipment hours: У бізнесі виступає як товари, контрагенти, договори, документи, склади, рахунки, заявки, платежі, маршрути погодження, бізнес-процеси, файли, характеристики, звіти й ролі користувачів. |} calculate_amount: version: "1.0.0" YML і Gittype: document module: service
через [[YML]] користувачі можуть описати межі модуля. Правильний підхід інший. |-
| Базовий функції ERP
| Початкові операції, які випливають з моделі. |-
| Код модуля
| автоматизовано створений програмний каркас компонента. Вона має поля: ідентифікатор, код, назву, ЄДРПОУ, телефон, e-mail та ознаку активності. # застосовується для для перевірки контрагента та інтеграцій із зовнішніми сервісами
entity: product
read: true
Він не замінює досвід. * таблицю в базі даних;
* [[ORM|ORM-модель]];
* міграцію;
* пункт меню “Контрагенти”;
* список контрагентів;
* форму картки контрагента;
* базові операції додавання, редагування, перегляду та видалення;
* службові конфігурація компонента;
* основу для API-доступу;
* основу для використання у звітах;
* основу для інтеграції з іншими документами. Це бізнес-подія. delete: true
компонент повинен бути достатньо незалежним, щоб його можна було встановити, оновити, видалити або замінити без руйнування всієї системи. Треба зробити так, щоб програмісти не займалися рутиною. price:
Це умовний приклад, але він показує напрям: типові правила можуть бути описані декларативно, а складна логіка — дописана програмістом.[[YML]] здатна описувати правила валідації. |-
| [[YML]]-структура
| Декларативний текстовий SEO-опис моделі, який здатна бути створений людиною, редактором або [[AI|ШІ]]. - service_work
unique: true
Шапка документа містить номер, дату, контрагента, складський облік і коментар. permissions:
<syntaxhighlight lang="text">
<syntaxhighlight lang="yaml">
- completed
Таблична частина містить товари, кількість, ціну й суму. | Він читабельний, текстовий, придатний для [[Git]], автоматичної генерації та роботи з [[AI|ШІ]]. |-
| Форми документів
| автоматизовано створені форми введення й перегляду документів. type: reference
title: "Пріоритет"
+ delivery_date:
required: true amount: title: "Кількість" Приклад помилки з відступами: як приклад: index.php?title=Категорія:Автоматична генерація коду type: directory entity: contractor - code id: title: "Серійний номер" |
|---|---|---|---|---|---|---|
| Таблиці створюються вручну | Структура описується в YML, таблиці створюються автоматизовано | |||||
| Форми створюються окремо | Форми можуть генеруватися з моделі | |||||
| Меню налаштовується окремо | Меню описується в YML | |||||
| ORM пишеться вручну | ORM-модель генерується автоматизовано | |||||
| API дублює структуру вручну | API здатна використовувати SEO-опис моделі | |||||
| Зміни важко контролювати | Зміни видно в Git | |||||
| AI не має структурованого контексту | ШІ функціонує з чітким YML-описом | |||||
| Розробник витрачає час на рутину | Розробник функціонує з архітектурою і складною логікою |
У великих системах рефакторинг неминучий.== Приклад опису документа ==
title: "ЄДРПОУ"
Це дає можливість уникнути хаотичних ручних змін у базі даних. {| class="wikitable" style="width:100%;"
На основі такого опису платформа здатна автоматизовано створити довідник контрагентів. Приклад YML-опису журналу:
name: "Ноутбук Lenovo"
- contractors
create: true
Вступ
Не потрібно створювати один гігантський файл на всю систему. Питання
version: "1.0.0" - field: number
export interface Product {
type: reference
бізнес-середовище змінюється. З наведеного YML-опису K2 ERP здатна автоматизовано сформувати:
update: true
table_parts: type: directory YML здатна містити SEO-опис ролей і прав. code: "000001"
type: decimal
+ type: date
- completed
entity: contractor
title: "Сума"
== YML і ER-модель ==
required: true
required: true
fields:
min: 0.001
як приклад, якщо в [[YML]] додано нове поле:
<syntaxhighlight lang="yaml">
Такий підхід спрощує підтримку. primary_key: true
== Чому саме YML ==
type: decimal entity: product type: datetime
create: true
required: true
title: "Статус"
type: string
price: 32000
title: "Робота"
type: text
Висновок
title: "Контрагент"
Довідники важливі, але справжня сила ERP розкривається в документах. Приклад умовної моделі:
}
title: "Обладнання"
У [[K2 ERP]] [[YML]] виступає як частиною загального ланцюжка автоматичного створення компонентів. title: "Номенклатура"
'''AI + YML.''' Людина описує задум.[[index.php?title=Категорія:ERP]]
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
email:
як приклад, платформа здатна автоматизовано створити SEO-опис сутності:
Порівняння старого і нового підходу
values: title: "Номер" engineer_id:
title: "Назва"
як приклад: продаж, закупівля, переміщення товару, заявка, рахунок, акт, платіж, замовлення, виробнича операційна дія. Це значно краще, ніж коли зміни зроблені десь у закритому конфігураторі й незрозуміло, хто, коли і що саме змінив. |- | Повторне використання | Моделі можна переносити між проєктами.index.php?title=Категорія:ORM
== Зовнішні посилання ==
Це дає багато переваг:
title: "Менеджер з продажу"
<syntaxhighlight lang="yaml">
Замість того щоб вручну дублювати структуру в різних частинах системи, її можна один раз описати в [[YML]]. Але частину правил можна декларативно описати в [[YML]]. * таблиці;
* моделі;
* форми;
* меню;
* журнали;
* довідники;
* API;
* базові операції;
* службові структури. Журнал документів — це список документів певного типу, як приклад “Замовлення покупців”. - equipment
depends_on:
== YML і бізнес-правила ==
== Рекомендації щодо структури YML-файлів ==
required: true
Але головна цінність [[YML]] не в самому синтаксисі. SEO-опис
sales_director:
== Автоматичне створення меню ==
! '''YML''' — це текстовий декларативний формат опису даних і налаштувань. Він прибирає рутину й дає можливість програмісту працювати на рівні архітектури. |-
| Журнали документів
| автоматизовано створені журнали для роботи з документами. ! Далі — коментар. Це дає можливість frontend-розробнику працювати з типізованими даними й зменшує кількість помилок. У старому підході програміст вручну створював:
Якщо структура системи розкидана по коду, базі, формах і меню, рефакторинг стає болючим. Він має багато службових тегів, які ускладнюють читання. title: "Сервісне обслуговування"
'''Перевага.''' Програміст не малює форму вручну з нуля. |-
| 7
| Програміст дописує складну логіку, яка не була описана в моделі.[[index.php?title=Категорія:Python]]
- repair_request
type: enum
edrpou:
when: "items.quantity or items.price changed"
problem_description:
delete: false
Такий SEO-опис здатна бути використаний для створення індексів у базі даних. Тобто [[YML]] стає проміжною мовою між бізнес-задумом і технічною реалізацією. validation:
Тоді роль людини змінюється.== конкурентні переваги YML у K2 ERP ==
type: string
id: int
type: integer
== YML і PostgreSQL ==
Такий SEO-опис дає можливість централізовано визначати, хто здатна переглядати, створювати, редагувати, видаляти або погоджувати документи.</div>
Але базова ідея проста: якщо платформа знає структуру сутності, вона здатна створити типові API-операції автоматизовано. |}
title: "E-mail"
Це дає можливість системі розуміти залежності між модулями. Тип
як приклад, компонент “продажі та реалізація” здатна містити свої сутності, документи, меню, права та форми. title: "Заявка на ремонт обладнання"
customer_id:
- draft
title: "Назва"
code: string;
{| class="wikitable" style="width:100%;"
[[YML]] якраз дає таку структуру. пріоритет, відповідальний інженер, статус. menu:
type: decimal
type: reference
Людина здатна прочитати файл і зрозуміти, що в ньому описано. '''Ключова ідея.''' [[YML]] — це мова опису структури, а не мова ручного програмування.<syntaxhighlight lang="text">
Приклад:
title: "Товари"
entity: warehouse
menu:
[[index.php?title=Категорія:YAML]]
- field: date
[[index.php?title=Категорія:No-code]]
title: "Контрагент"
title: "Назва"
У цьому прикладі описано сутність `contractor`, яка виступає як довідником. |- | Чи замінює YML програміста? |- | ORM-модель | автоматизовано згенерована модель для роботи з базою даних у коді. Головна цінність у тому, що YML виступає як зрозумілим і для людини, і для машини.XML достатньо формальний і потужний, але часто виглядає занадто важким для людини.</syntaxhighlight> |- | Читабельність | YML швидко читати людині.YML дає можливість описувати ці зміни на рівні моделі, а не випадкових ручних правок. name: service_requests ! type: reference
Основною базою даних для K2 ERP виступає як PostgreSQL. Це формалізований SEO-опис бізнес-моделі, з якого платформа здатна автоматизовано створювати структури, ORM-моделі, міграції, код модуля, меню, довідники, журнали документів і форми документів. type: string
id: number;
- неправильні відступи;
- неузгоджені назви полів;
- дублювання сутностей;
- відсутність типів даних;
- занадто складні структури в одному файлі;
- спроба описати в YML те, що краще реалізувати в коді;
- відсутність коментарів;
- некоректні посилання на інші сутності;
- невраховані права доступу;
- неописані правила валідації. Підхід K2 ERP з YML
платформа здатна зрозуміти, що в таблицю потрібно додати нову колонку. name:
code:
Одна з важливих переваг K2 ERP — можливість створювати незалежні легкі компоненти, які швидко підтримувати й інтегрувати між собою. ! primary_key: true
Цей SEO-опис говорить системі, як розмістити поля на формі. id:
sales_manager:
DELETE /api/contractors/{id} Щоб YML-моделі залишалися зручними, варто дотримуватися кількох принципів. repair_request:
Формула. Ідея → ШІ → YML → ER-модель → ORM → міграції → код модуля → меню → довідники → журнали → форми → готовий компонент. title: "ЄДРПОУ"
type: directory
YML і ORM
YML у K2 ERP — це основа для такого підходу. title: "Назва"
entity: contractor title: "Контрагент"
як приклад, якщо в ER-моделі виступає як сутність “Замовлення покупця”, яка пов’язана з “Контрагентом”, “Складом” і “Товаром”, то в YML це здатна бути описано через поля типу `reference`.index.php?title=Категорія:Цифрова незалежність України
values: fields: З такого опису платформа здатна автоматизовано створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функції ERP. Якщо в YML описана сутність, платформа здатна автоматизовано створити відповідну ORM-модель. required: true Після цього людина перевіряє модель, уточнює промптами, додає або змінює поля, коригує зв’язки й акцептує автоматичне створення компонента. Пояснення - title: "Товари" Це не означає, що складні системи з’являються магічно без контролю.* назву;
* версію;
* залежності;
* сутності;
* форми;
* меню;
* права;
* міграції;
* точки інтеграції.== YML і Python ==
active: true
- low
entity: contractor
[[YML]] добре підходить саме для опису структур, бо він лаконічний, читабельний і зручний для людини. - in_work
- title: "Замовлення покупців"
format: email
Якщо поле має тип `decimal`, можна перевірити числові значення. id:
columns:
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
бізнес-процес виглядає так:
title: "Телефон"
Потрібні поля: номер, дата, клієнт ERP, обладнання, SEO-опис проблеми,
title: "Замовлення покупця"
title: "Сума"
Не треба обіцяти, що програмісти зникнуть. |-
| Яка роль людини? Людина перевіряє цю модель, уточнює промптами й акцептує автоматичне створення компонента. contractors.yml
[[index.php?title=Категорія:PostgreSQL]]
У контексті [[K2 ERP]] [[YML]] застосовується для для того, щоб описувати не без зусиль параметри, а цілі бізнес-структури:
default: normal
fields:
date:
price: Decimal
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
primary_key: true
section: "Сервіс"
'''Саме через [[YML]], [[ER-модель|ER-моделі]], [[ORM]], генерацію, модульність і [[AI|ШІ]] [[K2 ERP]] будує новий підхід до створення [[ERP]]-систем — швидший, легший, зрозуміліший і значно сучасніший за старі закриті технології.'''
items.amount: "items.quantity * items.price"
default: draft
== Коментарі в YML ==
[[index.php?title=Категорія:AI]]
products.yml
== YML і повторне використання компонентів ==
== Що таке YML ==
warehouse_id:
Додай табличну частину для виконаних робіт:
<syntaxhighlight lang="yaml">
Автоматичне створення журналу документів
[[ORM|ORM-модель]] потрібна для того, щоб програмний код міг працювати з базою даних не напряму через таблиці, а через об’єкти. У ньому виступає як:
Це принципово інший підхід до розробки. auto: true
priority:
calculated: true
name:
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
це не без зусиль конфігураційний файл виступає ключовою рисою '''Головне.''' У [[K2 ERP]] [[YML]]. section: "Сервіс"
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
</div>
fields:
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
У [[K2 ERP]] [[YML]] застосовується для як міст між архітектурною ідеєю, [[ER-модель|ER-моделлю]], [[ORM|ORM-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автоматизовано створеним бізнес-додатком.
Якщо в YML сутність має тип `document`, платформа здатна автоматизовано створити журнал документів. id: number;
Python застосовується для для backend-логіки, бізнес-правил, API, інтеграцій, обробки даних і AI-сценаріїв. |}
- field: warehouse_id
Поле
== Коротко ==
entity: customer_order
'''YML у K2 ERP.''' Це не без зусиль “конфігурація”.== YML і валідація даних ==
title: "Замовлення покупця"
type: datetime
title: "Дата"
У другому — контрагент і складський облік. Якщо структура цього модуля описана в [[YML]], її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через [[K2 Update]]. amount:
primary_key: true
Коментарі допомагають пояснити, навіщо потрібне поле або правило. Якщо змінюється документ “Замовлення покупця”, не потрібно відкривати файл на десять тисяч рядків. |-
| Чим [[YML]] корисний для партнерів? Він дає можливість сказати системі: “Ось як має виглядати компонент”, а далі платформа сама створює необхідні частини. type: text
Звичайно, реальна платформа здатна мати складніші правила доступу, фільтрації, валідації й бізнес-логіки. Для людини це зрозуміло як “у документі виступає як контрагент”. як приклад, з такого [[YML]]:
Коли людина описує ідею, [[AI|ШІ]] формує [[YML]], а [[K2 ERP]] автоматизовано створює компонент — розробка програмного забезпечення наближається до швидкості думки. Документи уточнюються. |-
| 3
| Людина перевіряє модель. Це SEO-опис, з якого здатна народжуватися готовий компонент. |-
| Прозорість
| Архітектуру компонента можна зрозуміти з текстового опису. Достатньо працювати з конкретним описом. type: enum
Попри простоту, з [[YML]] потрібно працювати уважно. Що відбувається
amount:
Частину структури можна створювати візуально. - title: "Обладнання"
Це спрощені приклади, але вони показують суть: [[YML]] стає джерелом для генерації моделей у різних мовах програмування. |-
| Для чого застосовується для [[YML]]? access:
! Етап
layout:
<syntaxhighlight lang="yaml">
depends_on:
primary_key: true
items:
component:
== YML і K2 Update ==
entity: contractor
- title: "Контрагенти"
title: "Сума" type: string Приклад YML-опису меню: У підході K2 ERP значна частина цього здатна створюватися автоматизовано з YML. type: directory type: integer name: - field: status |
class Contractor(BaseModel):
values: YML у K2 ERP — це мова, якою бізнес-ідея починає перетворюватися на працюючий компонент. Штучний інтелект особливо добре функціонує там, де виступає як зрозуміла структура. id: |
- | Автоматична генерація | З YML можна створювати ORM, міграції, код, меню, форми й довідники. як приклад, якщо потрібно перейменувати поле, платформа здатна бачити, де воно застосовується для: у формі, журналі, API, звіті, правилах, правах доступу. | Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті. rate:
- field: contractor_id </syntaxhighlight> serial_number: title: "Роботи" type: integer Приклад: JSON зручний для обміну даними між системами й дуже популярний у веб-розробці, але для великих конфігурацій і багаторівневих описів не завжди такий зручний для ручного редагування. Через це критично використовувати нормальні редактори, підсвічування синтаксису й перевірки. | Ні. title: "Статус" У бізнес-системі критично, щоб користувач системи не міг зберегти некоректні інформаційні дані. Потім — таблична частина “Товари”. Це і виступає як програмування зі швидкістю думки. | Декларативний текстовий SEO-опис структур, моделей, форм, меню, документів, довідників і компонентів. платформа здатна прочитати файл і автоматизовано створити на його основі структуру, код, форми та інші елементи.== YML і TypeScript == auto: true Що платформа здатна створити з такого YMLindex.php?title=Категорія:Low-code YML-опис здатна бути використаний для створення структур у PostgreSQL: таблиць, колонок, індексів, зв’язків, обмежень і міграцій. |- |
4 | Людина уточнює промптами потрібні деталі.index.php?title=Категорія:ERP для інтеграторів
Якщо структура документа вже описана в YML, форма здатна бути розроблена автоматизовано. Людина описує структуру в декларативному вигляді. як приклад, для сутності `contractor` можуть бути автоматизовано створені маршрути: roles: title: "Контрагенти" Місце YML в архітектурі K2 ERP menu.yml
contractor_id:
required: true
active: boolean;
== YML і тестування ==
Якщо ж основа описана через [[YML]], зміни можна робити більш керовано. required: true
type: enum
type: string
Тобто один [[YML]]-опис здатна породити цілий набір технічних і функціональних елементів.<syntaxhighlight lang="diff">
! Обов’язкове
type: decimal
- row:
date:
<syntaxhighlight lang="yaml">
entity: customer_order
У [[K2 ERP]] ця читабельність особливо важлива, бо [[YML]] здатна використовуватися не тільки програмістами, а й архітекторами системи, інтеграторами, технічними консультантами та [[AI|штучним інтелектом]]. - name: idx_product_name
type: string
Оскільки [[YML]] описує структуру компонента, з нього можна генерувати документацію. Якщо структура описана в [[YML]], можна автоматизовано генерувати частину тестів.== YML і AI ==
- field: warehouse_id
entity: repair_request
Саме для цього в [[K2 ERP]] застосовується для [[YML]]. phone: str | None = None
'''Фундамент ERP.''' Структура бази даних повинна змінюватися керовано. * довідник обладнання;
* довідник видів робіт;
* документ “Заявка на ремонт”;
* документ “Акт виконаних робіт”;
* журнали документів;
* форми;
* звіти;
* ролі доступу. type: decimal
fields:
Це особливо критично для партнерів K2 ERP. title: "Сервісні заявки" edrpou: str | None = None type: integer YML дає можливість прибрати цю рутину.index.php?title=Категорія:API access: type: string journal: edrpou?: string; entity: repair_request </syntaxhighlight> price: Якщо структура сутності описана в YML, платформа здатна використати цю інформацію для створення API. Але вони стають більш прозорими. З YML можна генерувати Python-моделі, схеми валідації, структури API та каркаси сервісів. * YML-опис структур;
Приклад: date: Частину — генерувати за допомогою ШІ. Краще розділяти описи за модулями, компонентами або сутностями.== Типові помилки при роботі з YML == Компонент має зрозумілу структуру: type: journal entity: customer_order через YML платформа здатна розуміти структуру компонента, створювати ORM-моделі, міграції, код, меню, довідники, журнали документів, форми документів і базовий функції ERP. платформа читає цей SEO-опис і розуміє, що потрібно створити. Він робить її керованою, структурованою і придатною для автоматичної генерації. fields: title: "Виконані роботи"Для системи це зрозуміло як зв’язок між таблицями, який можна використати для генерації ORM-моделі, форми, довідника, API та звітів.</syntaxhighlight> Оскільки YML — це текстовий формат, його інтуїтивно зберігати в Git. active: bool = True YML у такому пакеті виконує роль зрозумілого опису структури компонента. email?: string; read: true required: true |-
| Що таке [[YML]] у [[K2 ERP]]?<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
title: "Податковий номер"
title: "Ставка"
title: "Ціна"
id:
|-
| code
| string
| Код
| Так
|-
| name
| string
| Назва
| Так
|-
| edrpou
| string
| ЄДРПОУ
| Ні
|-
| active
| boolean
| Активний
| Ні
|}
title: "Код"
title: "Коментар"
type: string
type: string
[[ER-модель]] описує сутності та зв’язки між ними. Такий SEO-опис швидко прочитати навіть людині, яка не виступає як програмістом. Він описує структуру, а платформа створює форму автоматизовано. Це критично для продуктивності. У великих [[ERP]]-системах правильні індекси можуть значно прискорювати пошук, фільтрацію, побудову звітів і роботу журналів документів. number:
quantity:
type: string type: reference required: true Ручна розробка програмного забезпечення має сенс там, де потрібна складна логіка, нестандартні алгоритми, інтеграції або спеціальні сценарії. type: string title: "складський облік" fields: type: integer title: "Замовлення покупців" index.php?title=Категорія:Штучний інтелект product_id: Частину — описувати вручну. |-
|
|---|