{"id":500869,"date":"2026-10-29T14:11:52","date_gmt":"2026-10-29T11:11:52","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=500869"},"modified":"2026-10-29T14:11:52","modified_gmt":"2026-10-29T11:11:52","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=500869","title":{"rendered":"\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0444\u0438\u0447\u0430 \u0431\u0435\u0437 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043e\u043a: Spec driven development \u0441 AI, UML, C4 \u0438 OpenAPI"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0438\u0447\u0438 \u0441\u00a0\u043d\u0443\u043b\u044f \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043c\u0430\u043d\u0447\u0438\u0432\u043e \u043b\u0435\u0433\u043a\u043e. \u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b \u0438\u0434\u0435\u044e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0430 \u044d\u043a\u0440\u0430\u043d\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c. \u041d\u043e\u00a0\u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442\u00a0\u043e\u0431\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u044b\u0441\u043b\u0430 \u043a\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u0441\u0432\u043e\u0439 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0432\u0435\u0431-\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440 \u0438\u00a0\u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0431\u0440\u043e\u043d\u044c, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442\u00a0\u0435\u0451. \u0417\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c \u0438\u00a0CRUD. \u0418\u043b\u043b\u044e\u0437\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u0432\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0437\u0430\u0432\u0438\u0441\u0430\u0435\u0442 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430, \u0430\u00a0\u043e\u0442\u043c\u0435\u043d\u0451\u043d\u043d\u0430\u044f \u0437\u0430\u044f\u0432\u043a\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0432\u00a0\u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u0435.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u0443\u0442\u044c \u043e\u0442\u00a0\u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u0438 \u0434\u043e\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 LLM: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<h3>\u041c\u0435\u0436\u0434\u0443 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043c\u0438 \u0438\u00a0\u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c<\/h3>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u00a0\u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c\u044e, \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c. \u041d\u0430\u00a0\u0432\u0441\u0442\u0440\u0435\u0447\u0435 \u0432\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c: \u00ab\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f\u00bb, \u00ab\u043d\u0435\u00a0\u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0440\u043e\u043d\u0438\u00bb, \u00ab\u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043c\u0435\u043d\u044b \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c\u00bb. \u041d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u043f\u043e\u043d\u0438\u043c\u0430\u043b \u043f\u043e\u0434 \u0440\u0435\u0437\u0435\u0440\u0432\u043e\u043c \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u0432\u0442\u043e\u0440\u043e\u0439\u00a0\u2014 \u0432\u0435\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b, \u0430\u00a0\u0442\u0440\u0435\u0442\u0438\u0439 \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438.<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0443\u0442\u043e\u0447\u043d\u044f\u0435\u0442 \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0430\u0441\u044b \u0438\u00a0\u0434\u043d\u0438: \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u00a0\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c.<\/p>\n<p>\u0414\u0440\u0443\u0433\u0430\u044f \u043a\u0440\u0430\u0439\u043d\u043e\u0441\u0442\u044c\u00a0\u2014 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0447\u0442\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c. \u0417\u0434\u0435\u0441\u044c \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u044d\u043a\u0440\u0430\u043d \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0435\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438, \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0438\u00a0\u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0430\u0437\u0443, \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043d\u0430\u00a0\u043d\u0435\u0432\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0442\u0435\u043c \u0434\u043e\u0440\u043e\u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u00a0\u0448\u0438\u0440\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p><a class=\"anchor\" name=\"figure-01\" id=\"figure-01\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/9d\/9c\/e6\/9d9ce6af7e1fea88eabd1f03a0be3a10.png\" alt=\"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0448\u043a\u0430\u043b\u0430: \u043e\u0442\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u0445, \u043d\u043e\u00a0\u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u043a\u00a0\u0442\u043e\u0447\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u0432\u00a0\u043a\u043e\u0434\u0435; \u043c\u043e\u0434\u0435\u043b\u0438, \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0432\u00a0\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/9d\/9c\/e6\/9d9ce6af7e1fea88eabd1f03a0be3a10.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/9d\/9c\/e6\/9d9ce6af7e1fea88eabd1f03a0be3a10.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0448\u043a\u0430\u043b\u0430: \u043e\u0442\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u0445, \u043d\u043e\u00a0\u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u043a\u00a0\u0442\u043e\u0447\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u0432\u00a0\u043a\u043e\u0434\u0435; \u043c\u043e\u0434\u0435\u043b\u0438, \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0432\u00a0\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435<\/figcaption><\/div>\n<\/figure>\n<p>*\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a01.\u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u043e\u0441\u0442\u044c\u044e \u0435\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. *<\/p>\n<p>\u041a\u043e\u0434 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0451\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u041d\u043e\u00a0\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u043c \u0438\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0435\u0441\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c: \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u041e\u043d\u0438 \u0443\u0436\u0435 \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u044e\u0442 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430\u00a0\u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043d\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u0443\u044e \u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c <strong>Spec driven development<\/strong>: \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u043e\u0442\u00a0\u0438\u0434\u0435\u0438 \u0434\u043e\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<p><a class=\"anchor\" name=\"figure-02\" id=\"figure-02\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d3\/dd\/99\/d3dd9941f8e190e9ea885cba74e74d14.png\" alt=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f, \u0437\u0430\u043c\u0435\u0442\u043a\u0438, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, ERD, Use Case, C4\u00a0Context \u0438\u00a0Container, State Machine, Sequence, Activity, OpenAPI, Markdown-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, BDD, \u043a\u043e\u0434 \u0438\u00a0\u0442\u0435\u0441\u0442\u044b\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d3\/dd\/99\/d3dd9941f8e190e9ea885cba74e74d14.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d3\/dd\/99\/d3dd9941f8e190e9ea885cba74e74d14.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f, \u0437\u0430\u043c\u0435\u0442\u043a\u0438, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, ERD, Use Case, C4\u00a0Context \u0438\u00a0Container, State Machine, Sequence, Activity, OpenAPI, Markdown-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, BDD, \u043a\u043e\u0434 \u0438\u00a0\u0442\u0435\u0441\u0442\u044b<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a02. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. LLM \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u0441\u0435\u0445 \u044d\u0442\u0430\u043f\u0430\u0445; \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0438\u00a0\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/em><\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u0437\u0435\u0440\u0432 \u0436\u0438\u0432\u0451\u0442 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u0430\u044f \u0431\u0440\u043e\u043d\u044c \u0438\u00a0\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b. \u041e\u0442\u043c\u0435\u043d\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0435\u0433\u043e. \u041e\u043f\u043b\u0430\u0442\u0443, \u0432\u044b\u0434\u0430\u0447\u0443 \u0438\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0444\u0438\u0447\u0438.<\/p>\n<p>\u0421\u0445\u0435\u043c\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f, \u0430\u00a0\u043d\u0435\u00a0\u0437\u0430\u043f\u0440\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0437\u0430\u0434. \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u00a0Sequence \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435. \u0422\u043e\u0433\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0434\u043e\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0433\u043e \u0448\u0430\u0433\u0430. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\n<h3>1. \u0412\u0441\u0442\u0440\u0435\u0447\u0438 \u0438\u00a0\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f: \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u0440\u043e\u0438\u043c<\/h3>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u00a0\u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u0430 \u0444\u0438\u0447\u0430. \u041a\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u0435\u0439\u0447\u0430\u0441? \u041a\u0442\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435? \u0427\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f? \u041a\u0430\u043a\u0438\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c\u0438? \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438: \u00ab\u0434\u0432\u0430 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u043f\u0440\u0438\u0448\u043b\u0438 \u0437\u0430\u00a0\u043e\u0434\u043d\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440\u043e\u043c\u00bb, \u00ab\u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043e\u0442\u043a\u0440\u044b\u043b \u0444\u043e\u0440\u043c\u0443 \u0438\u00a0\u0443\u0448\u0451\u043b, \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043d\u044f\u0442\u044b\u043c\u00bb.<\/p>\n<p>\u0412\u00a0\u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438, \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u0441\u043c\u044b\u0441\u043b \u043e\u0442\u043c\u0435\u043d\u044b \u0438\u00a0\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u044f\u0435\u043c \u0433\u0440\u0430\u043d\u0438\u0446\u044b: \u0431\u0440\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440 \u0441\u00a0\u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c, \u0430\u00a0\u043d\u0435\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0438\u0437\u00a0\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438.<\/p>\n<p>LLM \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0435 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u041d\u043e\u00a0\u043e\u0442\u0432\u0435\u0442 \u00ab\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442\u00bb \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438. \u0412\u044b\u0431\u043e\u0440 \u0441\u0440\u043e\u043a\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043b\u044e\u0434\u044f\u043c, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u043c \u0437\u0430\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0438\u00a0\u2014 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u00a0\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u00a0\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438. \u0414\u0440\u0443\u0433\u0443\u044e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c.<\/p>\n<h3>2. \u041a\u043e\u043d\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u00a0\u0437\u0430\u043c\u0435\u0442\u043a\u0438: \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442. \u041f\u043e\u043b\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440, \u043d\u043e\u00a0\u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0438\u0437\u00a0\u043d\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412\u00a0\u0437\u0430\u043c\u0435\u0442\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0435\u0433\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0438\u00a0\u043e\u0441\u0442\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<blockquote>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0440\u0435\u0437\u0435\u0440\u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0441\u00a0\u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0441\u043f\u0435\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c. \u0418\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u0412\u043e\u043f\u0440\u043e\u0441: \u043c\u043e\u0436\u043d\u043e\u00a0\u043b\u0438 \u043f\u0440\u043e\u0434\u043b\u0435\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432? \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438: \u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u0443\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0440\u043e\u043a \u043e\u0442\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u0432\u0448\u0435\u0439 \u0438\u0434\u0435\u0438.<\/p>\n<p>LLM \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0440\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442\u0430 \u0438\u00a0\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043c\u0438. \u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u00a0\u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u00a0\u043d\u0435\u00a0\u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h3>3. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f: \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u00ab\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u00bb \u043d\u0430\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0412\u043c\u0435\u0441\u0442\u043e \u00ab\u043d\u0435\u00a0\u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u0431\u0440\u043e\u043d\u044c\u00bb \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u044f\u0432\u043a\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u00a0\u0447\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>| \u041f\u0440\u0430\u0432\u0438\u043b\u043e\u00a0| \u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 | | \u2014\u00a0| \u2014 | | BR-01\u00a0| \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434 <code>[startsAt, endsAt)<\/code>: \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u043a\u043e\u043d\u0435\u0446 \u0438\u0441\u043a\u043b\u044e\u0447\u0451\u043d; \u043d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043a\u043e\u043d\u0446\u0430. | | BR-02\u00a0| \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f <code>HELD<\/code>, \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430\u00a0\u2014 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u043f\u043e\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. | | BR-03\u00a0| \u041e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442 <code>CONFIRMED<\/code> \u0438 <code>HELD<\/code>, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <code>now &lt; holdExpiresAt<\/code>. | | BR-04\u00a0| \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0438\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0434\u043d\u0443 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. | | BR-05\u00a0| \u041f\u0440\u0438 <code>now &gt;= holdExpiresAt<\/code> \u0440\u0435\u0437\u0435\u0440\u0432 \u0438\u0441\u0442\u0451\u043a; \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f. | | BR-06\u00a0| \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. |<\/p>\n<p>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u00a0\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 \u0438\u00a0\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u043c\u0438. \u0410\u0433\u0435\u043d\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0440\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0431\u0435\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u043b\u0438 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e. \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043c\u044b\u0441\u043b \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0438\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043a\u0430\u043a \u043c\u044b\u00a0\u043f\u043e\u0439\u043c\u0451\u043c, \u0447\u0442\u043e \u043e\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e?\u00bb. \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b\u00bb \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0435\u00a0\u0434\u0430\u0451\u0442. \u00ab\u0418\u0437\u00a0\u0434\u0432\u0443\u0445 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430\u00a0\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u0430\u00bb \u0443\u0436\u0435 \u0437\u0430\u0434\u0430\u0451\u0442 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443.<\/p>\n<h3>4. \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u00a0ERD: \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/h3>\n<p>\u0412\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0451\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041a\u0430\u0436\u0434\u043e\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u00a0\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u00a0\u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u0435. \u0423\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p><a class=\"anchor\" name=\"figure-03\" id=\"figure-03\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/55\/59\/6a\/55596a6545bfe98cabb735d36c36121c.png\" alt=\"ERD: User \u0438\u00a0Equipment \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0434\u0438\u043d \u043a\u043e\u00a0\u043c\u043d\u043e\u0433\u0438\u043c \u0441\u00a0Reservation; \u0443\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u00a0\u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/55\/59\/6a\/55596a6545bfe98cabb735d36c36121c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/55\/59\/6a\/55596a6545bfe98cabb735d36c36121c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>ERD: User \u0438\u00a0Equipment \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0434\u0438\u043d \u043a\u043e\u00a0\u043c\u043d\u043e\u0433\u0438\u043c \u0441\u00a0Reservation; \u0443\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u00a0\u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a03. <\/em><code><em>startsAt<\/em><\/code><em> \u0438 <\/em><code><em>endsAt<\/em><\/code><em> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, <\/em><code><em>holdExpiresAt<\/em><\/code><em> \u2014 \u0441\u0440\u043e\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.<\/em><\/p>\n<p>ERD \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438\u00a0\u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0439 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u044f\u0434\u043e\u043c: \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>LLM \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0438\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430. \u0421\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0443\u0436\u0435\u043d \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u043e\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u0431\u0440\u043e\u043d\u0438 \u043d\u0435\u0437\u0430\u0447\u0435\u043c. \u0418\u00a0\u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u043d\u0430\u0442\u044c \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0432\u0440\u0435\u043c\u044f. \u0422\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432\u00a0API \u0438\u00a0\u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0430 \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c\u0443 ORM.<\/p>\n<h3>5. Use Case: \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/h3>\n<p>Use Case \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0414\u043b\u044f \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u0447\u0435\u0442\u044b\u0440\u0435 \u0446\u0435\u043b\u0438: \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p><a class=\"anchor\" name=\"figure-04\" id=\"figure-04\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/3c\/e9\/e4\/3ce9e4917ec16df2795323c2e7a2604e.png\" alt=\"UML Use Case: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0441\u0432\u044f\u0437\u0430\u043d \u0441\u00a0\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/3c\/e9\/e4\/3ce9e4917ec16df2795323c2e7a2604e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/3c\/e9\/e4\/3ce9e4917ec16df2795323c2e7a2604e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>UML Use Case: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0441\u0432\u044f\u0437\u0430\u043d \u0441\u00a0\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a04. \u041b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u0441\u00a0\u0446\u0435\u043b\u044f\u043c\u0438; \u043e\u043d\u0438 \u043d\u0435\u00a0\u0437\u0430\u0434\u0430\u044e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c HTTP-\u0432\u044b\u0437\u043e\u0432\u043e\u0432.<\/em><\/p>\n<p>\u041d\u0435\u00a0\u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0432\u00a0\u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u00a0\u0431\u0430\u0437\u0435\u00a0\u2014 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430\u00a0\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0443 \u043d\u0443\u0436\u0435\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<p>LLM \u043b\u0435\u0433\u043a\u043e \u0441\u0442\u0440\u043e\u0438\u0442 \u0442\u0430\u043a\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u00a0\u0441\u043f\u0438\u0441\u043a\u0443 \u0446\u0435\u043b\u0435\u0439. \u041f\u043e\u043b\u044c\u0437\u0430 \u0440\u0435\u0432\u044c\u044e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0433\u0440\u0430\u043d\u0438\u0446: \u043d\u0435\u00a0\u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c\u00a0\u043b\u0438 \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0447\u0443\u0436\u0443\u044e \u0437\u0430\u044f\u0432\u043a\u0443, \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0430\u043b\u0430\u00a0\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u0430, \u043d\u0435\u00a0\u0434\u043e\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c\u00a0\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0437\u0430\u0434\u0430\u0447\u0443. \u041e\u0431\u0449\u0443\u044e \u043d\u043e\u0442\u0430\u0446\u0438\u044e \u044d\u0442\u0438\u0445 \u0438\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 <a href=\"https:\/\/www.omg.org\/spec\/UML\/2.5.1\" rel=\"noopener nofollow\">UML<\/a>.<\/p>\n<h3>6. C4\u00a0Context: \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043c\u0435\u0441\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h3>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441\u00a0\u2014 \u0433\u0434\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448\u0430 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u00a0Context-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u0435\u0441\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041c\u044b\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0430\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<p><a class=\"anchor\" name=\"figure-05\" id=\"figure-05\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/12\/b4\/b1\/12b4b1ef08e7943e0c897f621e850f23.png\" alt=\"C4\u00a0Context: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/12\/b4\/b1\/12b4b1ef08e7943e0c897f621e850f23.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/12\/b4\/b1\/12b4b1ef08e7943e0c897f621e850f23.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>C4\u00a0Context: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a05. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u00a0\u0432\u043d\u0435\u0448\u043d\u044f\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c.<\/em><\/p>\n<p>Context \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c \u0441\u00a0\u043b\u044e\u0434\u044c\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u043e\u0447\u0435\u0440\u0447\u0435\u043d\u043d\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u043b\u0443\u0436\u0431\u0430, \u0435\u0451\u00a0\u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u043e\u0432\u044b\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<h3>7. C4\u00a0Container: \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>\u0420\u0430\u0441\u043a\u0440\u043e\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e\u00a0\u0442\u0440\u0451\u0445 \u0447\u0430\u0441\u0442\u0435\u0439: \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, API \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. API \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430. \u0411\u0430\u0437\u0430 \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u00a0\u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0438 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><a class=\"anchor\" name=\"figure-06\" id=\"figure-06\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/a6\/f3\/9b\/a6f39b0efc4d6f8133c0fd21cf09f97b.png\" alt=\"C4\u00a0Container: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0\u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c; \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 API \u043f\u043e\u00a0HTTPS \u0438\u00a0JSON; API \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u00a0\u0431\u0430\u0437\u0435 \u043f\u043e\u00a0SQL \u0438\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u044b \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/a6\/f3\/9b\/a6f39b0efc4d6f8133c0fd21cf09f97b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/a6\/f3\/9b\/a6f39b0efc4d6f8133c0fd21cf09f97b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>C4\u00a0Container: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0\u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c; \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 API \u043f\u043e\u00a0HTTPS \u0438\u00a0JSON; API \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u00a0\u0431\u0430\u0437\u0435 \u043f\u043e\u00a0SQL \u0438\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u044b \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a06. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 C4\u00a0\u2014 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/em><\/p>\n<p>\u041d\u0430\u00a0\u0441\u0445\u0435\u043c\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0438\u00a0\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0439 Sequence. LLM \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u00a0\u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u0414\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e\u00a0\u0432 <a href=\"https:\/\/c4model.com\/diagrams\/container\" rel=\"noopener nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 C4\u00a0Container<\/a>.<\/p>\n<h3>8. State Machine: \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u00a0\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c<\/h3>\n<p>\u0423\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f: \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 <code>HELD<\/code>, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u0430\u044f \u0431\u0440\u043e\u043d\u044c <code>CONFIRMED<\/code>, \u043e\u0442\u043c\u0435\u043d\u0430 <code>CANCELLED<\/code> \u0438\u00a0\u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435 <code>EXPIRED<\/code>. \u0418\u0437\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432\u00a0\u043b\u044e\u0431\u043e\u0435 \u0438\u0437\u00a0\u0442\u0440\u0451\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u0443\u044e \u0431\u0440\u043e\u043d\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c. \u041e\u0442\u043c\u0435\u043d\u0430 \u0438\u00a0\u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/p>\n<p><a class=\"anchor\" name=\"figure-07\" id=\"figure-07\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/1d\/1f\/7d\/1d1f7d55918d9d805bcf39c6cca2b4c4.png\" alt=\"UML State Machine: HELD \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0CONFIRMED \u043f\u0440\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u0434\u043e\u00a0\u0441\u0440\u043e\u043a\u0430, \u0432\u00a0EXPIRED \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u0441\u0440\u043e\u043a\u0430 \u0438\u043b\u0438 \u0432\u00a0CANCELLED \u043f\u0440\u0438 \u043e\u0442\u043c\u0435\u043d\u0435; CONFIRMED \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/1d\/1f\/7d\/1d1f7d55918d9d805bcf39c6cca2b4c4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/1d\/1f\/7d\/1d1f7d55918d9d805bcf39c6cca2b4c4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>UML State Machine: HELD \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0CONFIRMED \u043f\u0440\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u0434\u043e\u00a0\u0441\u0440\u043e\u043a\u0430, \u0432\u00a0EXPIRED \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u0441\u0440\u043e\u043a\u0430 \u0438\u043b\u0438 \u0432\u00a0CANCELLED \u043f\u0440\u0438 \u043e\u0442\u043c\u0435\u043d\u0435; CONFIRMED \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a07. \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432\u0430\u0436\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u0432. \u0420\u043e\u0432\u043d\u043e \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0440\u043e\u043a\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e.<\/em><\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f:<\/p>\n<pre><code>\u041f\u043e\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c BR-02, BR-05 \u0438\u00a0BR-07 \u0432\u0435\u0440\u0441\u0438\u0438 equipment-reservation-v1\u043f\u043e\u0441\u0442\u0440\u043e\u0439 State Machine \u0432\u00a0PlantUML. \u041f\u043e\u043a\u0430\u0436\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432.\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0438\u0448\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041d\u0435\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439 \u043d\u043e\u0432\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439.\u0415\u0441\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0435\u0440\u0435\u0434 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u043e\u0439.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0443\u044e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 LLM \u0438\u00a0\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u044f\u0434\u043e\u043c \u0441\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438\u00a0\u0440\u0435\u043d\u0434\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f; \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043c\u044b\u0441\u043b\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0440\u0435\u0432\u044c\u044e. <a href=\"https:\/\/plantuml.com\/state-diagram\" rel=\"noopener nofollow\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 State Diagram \u0432\u00a0PlantUML<\/a>.<\/p>\n<h3>9. Sequence: \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0430: \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, API \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u00a0\u0438\u0445, \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u00a0\u0431\u0430\u0437\u0435, \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0431\u0435\u0440\u0451\u043c \u0438\u0437\u00a0Container, \u043f\u043e\u043b\u0435\u0439\u00a0\u2014 \u0438\u0437\u00a0ERD, \u0443\u0441\u043b\u043e\u0432\u0438\u0439\u00a0\u2014 \u0438\u0437\u00a0\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p><a class=\"anchor\" name=\"figure-08\" id=\"figure-08\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/98\/77\/72\/9877724470a4df26bf4217f6d61fcc1d.png\" alt=\"UML\u00a0Sequence: \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u043d\u0430\u0447\u0430\u043b\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0431\u0440\u043e\u043d\u0435\u0439 \u0438\u00a0\u0432\u0435\u0442\u043a\u0438 \u043e\u0442\u0432\u0435\u0442\u0430 409 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u00a0\u043e\u0442\u0432\u0435\u0442\u043e\u043c 201\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/98\/77\/72\/9877724470a4df26bf4217f6d61fcc1d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/98\/77\/72\/9877724470a4df26bf4217f6d61fcc1d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>UML\u00a0Sequence: \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u043d\u0430\u0447\u0430\u043b\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0431\u0440\u043e\u043d\u0435\u0439 \u0438\u00a0\u0432\u0435\u0442\u043a\u0438 \u043e\u0442\u0432\u0435\u0442\u0430 409 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u00a0\u043e\u0442\u0432\u0435\u0442\u043e\u043c 201<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a08. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u00a0\u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u0438\u00a0\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e.<\/em><\/p>\n<p>LLM \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0440\u0430\u0437\u0440\u044b\u0432\u044b \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438\u00a0\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438. \u041d\u0430\u00a0\u0440\u0435\u0432\u044c\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0442\u0432\u0435\u0442\u0430: <code>201<\/code> \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438.<\/p>\n<h3>10. Activity: \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u00a0\u0440\u0430\u0437\u0432\u0438\u043b\u043a\u0438<\/h3>\n<p>Sequence \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043a\u0442\u043e \u0441\u00a0\u043a\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\u00bb, Activity\u00a0\u2014 \u00ab\u043a\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f\u00bb. \u0412\u00a0\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0437\u0430\u0442\u0435\u043c \u0432\u00a0\u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0431\u0440\u043e\u043d\u0438 \u0438\u00a0\u0438\u0449\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p><a class=\"anchor\" name=\"figure-09\" id=\"figure-09\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/82\/53\/00\/82530023800c48ac7f39861cde4f3359.png\" alt=\"UML Activity \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0430: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u0432\u0435\u0442 409 \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 HELD \u0438\u00a0\u043e\u0442\u0432\u0435\u0442 201\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/82\/53\/00\/82530023800c48ac7f39861cde4f3359.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/82\/53\/00\/82530023800c48ac7f39861cde4f3359.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>UML Activity \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0430: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u0432\u0435\u0442 409 \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 HELD \u0438\u00a0\u043e\u0442\u0432\u0435\u0442 201<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a09. \u0418\u0441\u0442\u0451\u043a\u0448\u0438\u0439 <\/em><code><em>HELD<\/em><\/code><em> \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0431\u0440\u043e\u043d\u0435\u0439 \u0434\u043e\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f.<\/em><\/p>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0443\u0434\u043e\u0431\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a\u00a0\u044f\u0437\u044b\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code>overlap = existing.startsAt &lt; requested.endsAtand requested.startsAt &lt; existing.endsAtblocks = status == CONFIRMEDor\u00a0(status == HELD and now &lt; holdExpiresAt)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>LLM \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432\u00a0Activity \u0438\u00a0\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0442\u043a\u0438. \u041f\u0440\u0438 \u0440\u0435\u0432\u044c\u044e \u0432\u0430\u0436\u043d\u043e \u0441\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u00a0Sequence. \u041a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0430\u0442 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c. \u041e\u0434\u043d\u0430 \u0438\u00a0\u0442\u0430\u00a0\u0436\u0435 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u00a0\u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445.<\/p>\n<h3>11. OpenAPI: \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h3>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c HTTP-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442. \u0412\u00a0\u0443\u0447\u0435\u0431\u043d\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u0435\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u0445\u043e\u0434\u0430 \u0432\u00a0\u043d\u0435\u0433\u043e \u043d\u0435\u00a0\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c OpenAPI 3.0.3, \u043a\u0430\u043a \u0432\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438; \u044d\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0430\u00a0\u043d\u0435\u00a0\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439.<\/p>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b <code>equipmentId<\/code>, <code>startsAt<\/code> \u0438 <code>endsAt<\/code>. \u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0438\u00a0\u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u041d\u0438 <code>userId<\/code>, \u043d\u0438\u00a0\u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442. \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">\/api\/v1\/reservations:post:operationId: createReservationsecurity:\u2014\u00a0bearerAuth: []requestBody:required: truecontent:application\/json:schema:$ref: \u2019#\/components\/schemas\/CreateReservation\u2019responses:\u2019201\u2032:description: \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0441\u043e\u0437\u0434\u0430\u043dcontent:application\/json:schema:$ref: \u2019#\/components\/schemas\/Reservation\u2019\u2019409\u2032:$ref: \u2019#\/components\/responses\/Conflict\u2019<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c \u0438\u00a0\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f\u00a0\u0432 <a href=\"#appendix-openapi\" rel=\"noopener nofollow\">\u043f\u043e\u043b\u043d\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u043e\u043c OpenAPI<\/a>. \u0423\u0441\u043f\u0435\u0448\u043d\u044b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <code>200<\/code>. \u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u00a0\u2014 <code>400<\/code>, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\u00a0\u2014 <code>401<\/code>. \u0414\u043b\u044f \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0438\u043b\u0438 \u0447\u0443\u0436\u043e\u0439 \u0431\u0440\u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>404<\/code>; \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u00a0\u2014 <code>409<\/code> \u0441\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u044b.<\/p>\n<p>\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434, \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u00a0\u0442\u0435\u0441\u0442\u044b. LLM \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0438\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u0441\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043e\u00a0\u0441\u0445\u0435\u043c\u0430\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Bearer \u043d\u0435\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0442\u043e\u043a\u0435\u043d\u0430, \u0430\u00a0\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 JSON \u043d\u0435\u00a0\u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0440\u043e\u043d\u0438. \u042d\u0442\u0438 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u0438\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u00a0\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 HTTP-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 <a href=\"https:\/\/spec.openapis.org\/oas\/v3.0.3\" rel=\"noopener nofollow\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f OpenAPI<\/a>.<\/p>\n<h3>12. Markdown-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f: \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442<\/h3>\n<p>\u041a\u00a0\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u043b\u0438 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 \u043e\u0442\u00a0\u0446\u0435\u043b\u0438 \u0434\u043e\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f: \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043c\u043e\u0434\u0435\u043b\u044c, \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438\u00a0\u0432\u0435\u0440\u0441\u0438\u044f.<\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u043b\u0438, \u0447\u0435\u0433\u043e \u043c\u044b\u00a0\u0445\u043e\u0442\u0438\u043c. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f Markdown-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f. \u041d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u00a0\u043d\u0435\u0451 \u0432\u0435\u0441\u044c OpenAPI: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u0438\u00a0\u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u0437\u00a0\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>\u0412\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0435\u0441\u0442\u044c <a href=\"#appendix-spec\" rel=\"noopener nofollow\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 <code>equipment-reservation-v1<\/code>. \u042d\u0442\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430, \u043d\u0435\u00a0\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 Git-\u0442\u0435\u0433. \u0412\u00a0\u043d\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f\u0432\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u00a0\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>LLM \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c: \u0432\u0441\u0435\u00a0\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432\u00a0\u043c\u043e\u0434\u0435\u043b\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00a0\u043b\u0438 \u043e\u0442\u0432\u0435\u0442 \u0432\u0435\u0442\u043a\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043d\u0435\u0442\u00a0\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0431\u0435\u0437 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\n<h3>13. BDD-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438: \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u043e\u00a0\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435<\/h3>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u043e\u0434\u043e\u043c \u0437\u0430\u0434\u0430\u0451\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0438\u00a0\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u00a0\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 <a href=\"https:\/\/cucumber.io\/docs\/gherkin\/reference\/\" rel=\"noopener nofollow\">Gherkin<\/a>:<\/p>\n<pre><code># language: ru\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c: \u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u043e\u0432\u043d\u043e \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0440\u043e\u043a\u0430\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 HELD\u0418\u00a0\u0435\u0433\u043e \u0441\u0440\u043e\u043a \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0432\u00a0\u00ab2026-11-02T09:10:00Z\u00bb\u0418\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0432\u043d\u043e \u00ab2026-11-02T09:10:00Z\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 409\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abRESERVATION_EXPIRED\u00bb\u0418\u00a0\u0440\u0435\u0437\u0435\u0440\u0432 \u043d\u0435\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0443\u0436\u043d\u044b \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b, \u043e\u0442\u043c\u0435\u043d\u0430, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u00a0\u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u0447\u0443\u0436\u043e\u0439 \u0431\u0440\u043e\u043d\u0438. \u0414\u043b\u044f \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0438\u0437\u00a0\u0434\u0432\u0443\u0445 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a\u00a0\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c\u0443 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <code>201<\/code>, \u0434\u0440\u0443\u0433\u043e\u0439\u00a0\u2014 <code>409<\/code>; \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u043d\u0430. \u041f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d.<\/p>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f\u00a0\u0432 <a href=\"#appendix-bdd\" rel=\"noopener nofollow\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435<\/a>. \u041f\u043e\u043a\u0430 \u0443\u00a0\u043d\u0438\u0445 \u043d\u0435\u0442 \u0448\u0430\u0433\u043e\u0432\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u0438\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u044d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0430\u00a0\u043d\u0435\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u044b. \u0418\u0445\u00a0\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u0440\u0443\u0447\u0430\u0435\u043c LLM \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430.<\/p>\n<h3>14. \u041a\u043e\u0434 \u0438\u00a0\u0442\u0435\u0441\u0442\u044b: \u043e\u0434\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430, \u043e\u0434\u043d\u043e \u0440\u0435\u0432\u044c\u044e, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0430\u0433\u0435\u043d\u0442\u0443. \u0411\u043e\u043b\u044c\u0448\u0443\u044e \u0444\u0438\u0447\u0443 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u00a0\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b; \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435; \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430; HTTP API; \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441; \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432. \u0422\u0435\u0441\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435, \u0430\u00a0\u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e.<\/p>\n<p><a class=\"anchor\" name=\"figure-10\" id=\"figure-10\"><\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/f5\/07\/5c\/f5075c110d9cbccba8a666c2b5099b6f.png\" alt=\"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b: \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f LLM, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u00a0\u0440\u0435\u0432\u044c\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c; \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0448\u0430\u0433 \u043d\u0430\u00a0\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/f5\/07\/5c\/f5075c110d9cbccba8a666c2b5099b6f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/f5\/07\/5c\/f5075c110d9cbccba8a666c2b5099b6f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b: \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f LLM, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u00a0\u0440\u0435\u0432\u044c\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c; \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0448\u0430\u0433 \u043d\u0430\u00a0\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a010. \u0427\u0435\u043b\u043e\u0432\u0435\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/em><\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u0430\u043f\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code>\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u0430.\u041e\u0441\u043d\u043e\u0432\u0430: equipment-reservation-v1\u00a0\u2014 reservation-spec.md,openapi.yaml, 03-erd.puml, 08-sequence.puml, 09-activity.puml\u0438\u00a0\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 reservations.feature \u0441\u00a0\u0442\u0435\u0433\u043e\u043c @create.\u0412\u0441\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u00a0assets\/.\u041f\u0440\u043e\u0432\u0435\u0440\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432.\u0421\u043e\u0431\u043b\u044e\u0434\u0430\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e.\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b,\u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u00a0\u0434\u0432\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.\u041d\u0435\u00a0\u043c\u0435\u043d\u044f\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438\u00a0\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0440\u0430\u0434\u0438 \u0437\u0435\u043b\u0451\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432.\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b.\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0436\u0434\u0438\u0441\u044c \u0440\u0435\u0432\u044c\u044e; \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f \u043d\u0435\u00a0\u043d\u0430\u0447\u0438\u043d\u0430\u0439.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u043d\u0435\u00a0\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0412\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u00a0\u043d\u0435\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u00a0\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432.<\/p>\n<p>\u0427\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u0438\u00a0\u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0441\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c. \u041a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044e \u0438\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043d\u0430\u00a0\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u0435: \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043d\u0435\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442 \u0435\u0451\u00a0\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f HTTP-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u0441\u044f \u043a\u043e\u0434, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u0434. \u0415\u0441\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u043f\u0440\u043e\u0431\u0435\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c, \u043f\u0440\u0430\u0432\u0438\u043b \u0438\u00a0\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432. \u0420\u0435\u0432\u044c\u044e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0435\u0451 \u0432\u044b\u0440\u0430\u0441\u0442\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u0447\u0438.<\/p>\n<h3>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0443\u0441\u0438\u043b\u0438\u0435\u00a0\u2014 \u0432\u00a0\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/h3>\n<p>\u0412\u00a0\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u043e\u0435, \u0430\u00a0\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0435\u0449\u0451 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0430\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, UML-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u0445, \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 C4\u00a0\u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445. \u0420\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u0434\u0430\u044e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041a\u043e\u0434 \u0432\u043e\u043f\u043b\u043e\u0449\u0430\u0435\u0442\u00a0\u0438\u0445. Markdown \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442, \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u043c\u0438.<\/p>\n<p>LLM \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0445\u0435\u043c: \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b, \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c. \u0422\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u00a0\u0441\u043c\u044b\u0441\u043b\u00a0\u2014 \u043a\u0430\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d, \u043a\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u00a0\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e, \u0447\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u043c. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0437\u00a0\u0443\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u0445\u0435\u043c\u0430, \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b, \u0443\u00a0\u0430\u0433\u0435\u043d\u0442\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0447\u0438\u043d \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438\u00a0\u0440\u0435\u0432\u044c\u044e. \u042d\u0442\u043e \u043d\u0435\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0436\u0438\u043c\u043e \u043c\u0430\u043b\u044b\u043c\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0451\u043c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043e\u043a.<\/p>\n<h3>\u0423\u0447\u0435\u0431\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432\u00a0\u0444\u0430\u0439\u043b\u044b \u0441\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0432\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <code>assets\/<\/code>. \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u00a0\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p><a class=\"anchor\" name=\"appendix-openapi\" id=\"appendix-openapi\"><\/a><\/p>\n<details class=\"spoiler\">\n<summary>OpenAPI 3.0.3 \u2014 openapi.yaml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">openapi: 3.0.3info:title: \u0411\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u00a0\u2014 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 HTTP-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442version: 1.0.0description: \u2019\u0420\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430: equipment-reservation-v1. \u041e\u0445\u0432\u0430\u0442: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0432\u0445\u043e\u0434, \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u00a0\u0432\u044b\u0434\u0430\u0447\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u043d\u0435\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u044b. \u0411\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u00a0\u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u00a0reservation-spec.md. \u042d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d.\u2019paths:\/api\/v1\/reservations:post:operationId: createReservationsummary: \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432description: \u2019BR-01\u2014BR-04. \u0410\u0442\u043e\u043c\u0430\u0440\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u00a0\u0441\u043e\u0437\u0434\u0430\u0442\u044c HELD\u00a0\u043d\u043010\u00a0\u043c\u0438\u043d\u0443\u0442. \u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0438\u0437\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 POST \u043d\u0435\u0438\u043c\u0435\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438: \u043f\u0440\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0439\u0441\u044f\u043f\u043e\u0432\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 409\u00a0EQUIPMENT_BUSY.\u2019security:\u2014\u00a0bearerAuth: []requestBody:required: truecontent:application\/json:schema:$ref: \u2019#\/components\/schemas\/CreateReservation\u2019example:equipmentId: eq-042startsAt: \u20192026-11-02T10:00:00Z\u2019endsAt: \u20192026-11-02T11:00:00Z\u2019responses:\u2019201\u2032:description: \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0441\u043e\u0437\u0434\u0430\u043dcontent:application\/json:schema:$ref: \u2019#\/components\/schemas\/Reservation\u2019example:id: res-001equipmentId: eq-042startsAt: \u20192026-11-02T10:00:00Z\u2019endsAt: \u20192026-11-02T11:00:00Z\u2019status: HELDholdExpiresAt: \u20192026-11-02T09:10:00Z\u2019\u2019400\u2032: &amp;id001$ref: \u2019#\/components\/responses\/BadRequest\u2019\u2019401\u2032: &amp;id002$ref: \u2019#\/components\/responses\/Unauthorized\u2019\u2019404\u2032: &amp;id003$ref: \u2019#\/components\/responses\/NotFound\u2019\u2019409\u2032: &amp;id004$ref: \u2019#\/components\/responses\/Conflict\u2019\/api\/v1\/reservations\/{reservationId}\/confirm:post:operationId: confirmReservationsummary: \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432description: BR-05\u2014BR-07. HELD \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 now &lt; holdExpiresAt.CONFIRMED \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u00a0200. EXPIRED, \u0432\u043a\u043b\u044e\u0447\u0430\u044f HELD\u00a0\u0441 \u0438\u0441\u0442\u0451\u043a\u0448\u0438\u043c\u0441\u0440\u043e\u043a\u043e\u043c, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 409\u00a0RESERVATION_EXPIRED. CANCELLED \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 409\u00a0INVALID_STATE.security:\u2014\u00a0bearerAuth: []parameters:\u2014\u00a0name: reservationIdin: pathrequired: trueschema: &amp;id005type: stringminLength: 1maxLength: 80pattern: ^[A-Za-z0-9_-]+$responses:\u2019200\u2032:description: \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430content:application\/json:schema:$ref: \u2019#\/components\/schemas\/Reservation\u2019example:id: res-001equipmentId: eq-042startsAt: \u20192026-11-02T10:00:00Z\u2019endsAt: \u20192026-11-02T11:00:00Z\u2019status: CONFIRMEDholdExpiresAt: \u20192026-11-02T09:10:00Z\u2019\u2019400\u2032: *id001\u2019401\u2032: *id002\u2019404\u2032: *id003\u2019409\u2032: *id004\/api\/v1\/reservations\/{reservationId}\/cancel:post:operationId: cancelReservationsummary: \u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435description: BR-05\u2014BR-07. \u0414\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 HELD \u0438\u00a0CONFIRMED \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u0432\u00a0CANCELLED.\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043e\u0442\u043c\u0435\u043d\u0430 CANCELLED \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 200 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. EXPIRED, \u0432\u043a\u043b\u044e\u0447\u0430\u044fHELD\u00a0\u0441 \u0438\u0441\u0442\u0451\u043a\u0448\u0438\u043c \u0441\u0440\u043e\u043a\u043e\u043c, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 409\u00a0RESERVATION_EXPIRED.security:\u2014\u00a0bearerAuth: []parameters:\u2014\u00a0name: reservationIdin: pathrequired: trueschema: *id005responses:\u2019200\u2032:description: \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430content:application\/json:schema:$ref: \u2019#\/components\/schemas\/Reservation\u2019example:id: res-001equipmentId: eq-042startsAt: \u20192026-11-02T10:00:00Z\u2019endsAt: \u20192026-11-02T11:00:00Z\u2019status: CANCELLEDholdExpiresAt: \u20192026-11-02T09:10:00Z\u2019\u2019400\u2032: *id001\u2019401\u2032: *id002\u2019404\u2032: *id003\u2019409\u2032: *id004components:securitySchemes:bearerAuth:type: httpscheme: bearerbearerFormat: JWTdescription: API \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f, \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u044e \u0438\u00a0\u0441\u0440\u043e\u043a \u0442\u043e\u043a\u0435\u043d\u0430. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u043f\u0430\u0440\u0435 issuer\/subject; userId \u0438\u0437\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0435\u00a0\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f.schemas:CreateReservation:type: objectadditionalProperties: falserequired:\u2014\u00a0equipmentId\u2014\u00a0startsAt\u2014\u00a0endsAtdescription: \u2019BR-01: startsAt &lt; endsAt. \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u0442 \u0438\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.\u2019properties:equipmentId: *id005startsAt: &amp;id006type: stringformat: date-timepattern: Z$description: \u0412\u0440\u0435\u043c\u044f UTC; \u0441\u0442\u0440\u043e\u043a\u0430 RFC 3339\u00a0\u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c\u00a0Z.endsAt: *id006Reservation:type: objectadditionalProperties: falserequired:\u2014\u00a0id\u2014\u00a0equipmentId\u2014\u00a0startsAt\u2014\u00a0endsAt\u2014\u00a0status\u2014\u00a0holdExpiresAtproperties:id: *id005equipmentId: *id005startsAt: *id006endsAt: *id006status:type: stringenum:\u2014\u00a0HELD\u2014\u00a0CONFIRMED\u2014\u00a0CANCELLED\u2014\u00a0EXPIREDdescription: \u2019\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: HELD\u00a0\u0441 now &gt;= holdExpiresAt \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044fEXPIRED.\u2019holdExpiresAt:type: stringformat: date-timepattern: Z$description: \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0440\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u0430; \u043f\u043e\u0441\u043b\u0435 CONFIRMED \u0438\u043b\u0438 CANCELLED\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u00a0\u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.Error:type: objectadditionalProperties: falserequired:\u2014\u00a0code\u2014\u00a0messageproperties:code:type: stringenum:\u2014\u00a0INVALID_REQUEST\u2014\u00a0UNAUTHENTICATED\u2014\u00a0EQUIPMENT_NOT_FOUND\u2014\u00a0RESERVATION_NOT_FOUND\u2014\u00a0EQUIPMENT_BUSY\u2014\u00a0RESERVATION_EXPIRED\u2014\u00a0INVALID_STATEmessage:type: stringdescription: \u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430; \u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u0435\u0442\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u00a0code.responses:BadRequest:description: \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0438\u043b\u0438 startsAt &gt;= endsAt.content:application\/json:schema:$ref: \u2019#\/components\/schemas\/Error\u2019example:code: INVALID_REQUESTmessage: \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0438\u043b\u0438 startsAt &gt;= endsAt.Unauthorized:description: \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.content:application\/json:schema:$ref: \u2019#\/components\/schemas\/Error\u2019example:code: UNAUTHENTICATEDmessage: \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.headers:WWW-Authenticate:schema:type: stringexample: Bearerdescription: \u0421\u0445\u0435\u043c\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.NotFound:description: \u041e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u00a0\u043d\u0430\u0439\u0434\u0435\u043d\u043e; \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.content:application\/json:schema:$ref: \u2019#\/components\/schemas\/Error\u2019example:code: RESERVATION_NOT_FOUNDmessage: \u041e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u00a0\u043d\u0430\u0439\u0434\u0435\u043d\u043e; \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.Conflict:description: \u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043b\u0438\u0431\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0430\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c.content:application\/json:schema:$ref: \u2019#\/components\/schemas\/Error\u2019examples:EQUIPMENT_BUSY:value:code: EQUIPMENT_BUSYmessage: \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0437\u0430\u043d\u044f\u0442.RESERVATION_EXPIRED:value:code: RESERVATION_EXPIREDmessage: \u0421\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0438\u0441\u0442\u0451\u043a.INVALID_STATE:value:code: INVALID_STATEmessage: \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0432\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><a class=\"anchor\" name=\"appendix-spec\" id=\"appendix-spec\"><\/a><\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u2014 reservation-spec.md<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0411\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f: \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430<\/h4>\n<p>\u0420\u0435\u0434\u0430\u043a\u0446\u0438\u044f: <strong>equipment-reservation-v1<\/strong>. \u0421\u0442\u0430\u0442\u0443\u0441: \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u042d\u0442\u043e \u043d\u0435\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u00a0\u043d\u0435\u00a0Git-\u0442\u0435\u0433. \u0412\u0441\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a\u00a0\u044d\u0442\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438.<\/p>\n<h4>\u0426\u0435\u043b\u044c \u0438\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u044b<\/h4>\n<p>\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0438\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u0432, \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0438\u00a0\u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434. \u041e\u043f\u043b\u0430\u0442\u0430, \u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u0432\u044b\u0434\u0430\u0447\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0442, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u00a0\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043d\u0435 \u043e\u0445\u0432\u0430\u0442\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u043d\u043e\u00a0\u0435\u0433\u043e HTTP-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0432\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c OpenAPI \u043d\u0435\u00a0\u043e\u043f\u0438\u0441\u0430\u043d. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u00a0\u044d\u043a\u0440\u0430\u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0430\u044f: \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0430. \u0423\u0447\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435\u00a0\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 SLO, \u043b\u0438\u043c\u0438\u0442\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u00a0\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0441\u0431\u043e\u0435\u0432.<\/p>\n<h4>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/h4>\n<p>| ID\u00a0| \u041f\u0440\u0430\u0432\u0438\u043b\u043e | | \u2014\u00a0| \u2014 | | BR-01\u00a0| \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b <code>[startsAt, endsAt)<\/code>; <code>startsAt &lt; endsAt<\/code>. \u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435: <code>a.startsAt &lt; b.endsAt &amp;&amp;\u00a0b.startsAt &lt; a.endsAt<\/code>. \u0421\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b. \u0412\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 \u0432\u0441\u0435 \u0434\u0430\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u00a0UTC \u0441 <code>Z<\/code>. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044b \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043d\u0435\u00a0\u0432\u0432\u043e\u0434\u0438\u0442. | | BR-02\u00a0| \u041f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <code>HELD<\/code>, <code>createdAt = now<\/code>, <code>holdExpiresAt = now + 10\u00a0\u043c\u0438\u043d\u0443\u0442<\/code>. \u0412\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438\u00a0\u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440. | | BR-03\u00a0| \u041e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f <code>CONFIRMED<\/code> \u0438 <code>HELD<\/code> \u043f\u0440\u0438 <code>now &lt; holdExpiresAt<\/code>. <code>CANCELLED<\/code> \u0438\u00a0\u0438\u0441\u0442\u0451\u043a\u0448\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u044b \u043d\u0435\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442. | | BR-04\u00a0| \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0438\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b. \u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0440\u043e\u043d\u0435\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0435\u0433\u043e \u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0438\u0442\u0430\u044e\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438. | | BR-05\u00a0| <code>HELD<\/code> \u043f\u0440\u0438 <code>now &gt;= holdExpiresAt<\/code> \u0438\u043c\u0435\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <code>EXPIRED<\/code>, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0435\u0449\u0451 <code>HELD<\/code>. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <code>409\u00a0RESERVATION_EXPIRED<\/code>. \u0418\u0441\u0442\u0451\u043a\u0448\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435\u00a0\u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b. | | BR-06\u00a0| API \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043a\u0435\u043d \u0438\u00a0\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <code>(issuer, subject)<\/code> \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\u00a0\u2014 <code>401<\/code>; \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0438\u00a0\u0447\u0443\u0436\u0430\u044f \u0431\u0440\u043e\u043d\u044c\u00a0\u2014 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 <code>404\u00a0RESERVATION_NOT_FOUND<\/code>. | | BR-07\u00a0| \u0414\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 <code>HELD<\/code> \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 <code>CONFIRMED<\/code> \u0438\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <code>CANCELLED<\/code>. <code>CONFIRMED<\/code> \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <code>CANCELLED<\/code>. \u041f\u043e\u0432\u0442\u043e\u0440 confirm \u0434\u043b\u044f <code>CONFIRMED<\/code> \u0438\u00a0cancel \u0434\u043b\u044f <code>CANCELLED<\/code> \u0434\u0430\u044e\u0442 <code>200<\/code> \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. Confirm \u0434\u043b\u044f <code>CANCELLED<\/code> \u2014 <code>409\u00a0INVALID_STATE<\/code>. \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 <code>CANCELLED<\/code> \u0438 <code>EXPIRED<\/code> \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. |<\/p>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u2192 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u2192 \u043f\u043e\u0438\u0441\u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0438\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u2192 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u0447\u0443\u0436\u043e\u0439 \u0431\u0440\u043e\u043d\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0435\u00a0\u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u041a\u043e\u043c\u0430\u043d\u0434\u044b confirm\/cancel \u043d\u0435\u00a0\u0438\u043c\u0435\u044e\u0442 \u0442\u0435\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 create \u043d\u0435\u00a0\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 confirm\/cancel: \u043f\u0440\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u0435 \u043f\u043e\u0432\u0442\u043e\u0440 \u043d\u0430\u00a0\u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432\u0435\u0440\u043d\u0451\u0442 <code>409\u00a0EQUIPMENT_BUSY<\/code>.<\/p>\n<h4>\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p><a href=\"#figure-03\" rel=\"noopener nofollow\">ERD<\/a> \u00b7 <a href=\"#source-03\" rel=\"noopener nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a<\/a>.<\/p>\n<p>\u2014\u00a0<code>User<\/code>: <code>id<\/code> (PK), <code>authIssuer<\/code>, <code>authSubject<\/code>; \u043f\u0430\u0440\u0430 <code>(authIssuer, authSubject)<\/code> \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430. \u2014\u00a0<code>Equipment<\/code>: <code>id<\/code> (PK), <code>inventoryNumber<\/code> (\u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d), <code>name<\/code>. \u2014\u00a0<code>Reservation<\/code>: <code>id<\/code> (PK), <code>userId<\/code> (FK), <code>equipmentId<\/code> (FK), <code>startsAt<\/code>, <code>endsAt<\/code>, <code>createdAt<\/code>, <code>holdExpiresAt<\/code>, <code>status<\/code>. \u2014\u00a0\u0412\u0441\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b. \u041a\u0430\u0436\u0434\u0430\u044f \u0431\u0440\u043e\u043d\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043a\u00a0\u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e; \u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u00a0\u043d\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u00a0\u043d\u0443\u043b\u044f \u0434\u043e\u00a0\u043c\u043d\u043e\u0433\u0438\u0445 \u0431\u0440\u043e\u043d\u0435\u0439. \u2014\u00a0<code>status<\/code>: <code>HELD<\/code>, <code>CONFIRMED<\/code>, <code>CANCELLED<\/code>, <code>EXPIRED<\/code>. \u0421\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u044b \u0438\u00a0\u043d\u0435\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u2014\u00a0\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0435\u00a0\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>userId<\/code>, \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0438 <code>createdAt<\/code>; \u0441\u0445\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u00a0HTTP DTO \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<h4>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u00a0\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p><a href=\"#figure-04\" rel=\"noopener nofollow\">Use Case<\/a> \u00b7 <a href=\"#figure-05\" rel=\"noopener nofollow\">C4\u00a0Context<\/a> \u00b7 <a href=\"#figure-06\" rel=\"noopener nofollow\">C4\u00a0Container<\/a>.<\/p>\n<p>\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u00a0API \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u00a0HTTPS\/JSON \u0441\u00a0Bearer-\u0442\u043e\u043a\u0435\u043d\u043e\u043c. \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434; API \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u00a0\u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u043e\u043a\u0435\u043d\u0430. API \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u00a0SQL \u043a\u00a0\u0431\u0430\u0437\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e API. C4\u00a0\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u00a0UML.<\/p>\n<p><a href=\"#figure-07\" rel=\"noopener nofollow\">State Machine<\/a> \u00b7 <a href=\"#figure-08\" rel=\"noopener nofollow\">Sequence<\/a> \u00b7 <a href=\"#figure-09\" rel=\"noopener nofollow\">Activity<\/a>.<\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u00a0\u043a\u043e\u043d\u0446\u0430; \u043d\u0430\u0439\u0442\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0438\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u00a0\u0443\u0447\u0435\u0431\u043d\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e; \u0432\u00a0\u043f\u043e\u043b\u043d\u043e\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0438\u00a0\u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f <code>now<\/code> \u043f\u043e\u0441\u043b\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0440\u043e\u043d\u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0423\u0411\u0414 \u0438\u00a0\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438; \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c BR-03. \u041f\u0440\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e, \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u0438\u00a0\u0432\u0435\u0440\u043d\u0443\u0442\u044c <code>409\u00a0EQUIPMENT_BUSY<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c <code>HELD<\/code> \u043f\u043e\u00a0BR-02. \u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0438\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e commit \u0432\u0435\u0440\u043d\u0443\u0442\u044c <code>201<\/code> \u0441\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>Confirm\/cancel \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0443\u00a0\u0436\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e; \u043f\u043e\u0441\u043b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0437\u0430\u043d\u043e\u0432\u043e \u0447\u0438\u0442\u0430\u044e\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0412\u0440\u0435\u043c\u044f \u0438\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0424\u043e\u043d\u043e\u0432\u0430\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>EXPIRED<\/code> \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u00a0\u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0422\u0430\u0439\u043c-\u0430\u0443\u0442\u044b, \u0434\u0435\u0434\u043b\u043e\u043a\u0438 \u0438\u00a0\u043f\u043e\u0442\u0435\u0440\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0432\u0442\u043e\u0440 create \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043d\u0435\u00a0\u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0438\u00a0\u0431\u0438\u0437\u043d\u0435\u0441-\u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b.<\/p>\n<h4>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 HTTP-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442<\/h4>\n<p><a href=\"#appendix-openapi\" rel=\"noopener nofollow\">OpenAPI 3.0.3<\/a>, \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 <code>1.0.0<\/code>.<\/p>\n<p>| \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u00a0| \u0423\u0441\u043f\u0435\u0445\u00a0| \u0411\u0438\u0437\u043d\u0435\u0441-\u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b | | \u2014\u00a0| \u2014\u00a0| \u2014 | | <code>POST \/api\/v1\/reservations<\/code>\u00a0| <code>201<\/code>, <code>HELD<\/code>\u00a0| <code>409\u00a0EQUIPMENT_BUSY<\/code> | | <code>POST \/api\/v1\/reservations\/{reservationId}\/confirm<\/code>\u00a0| <code>200<\/code>, <code>CONFIRMED<\/code>\u00a0| <code>409\u00a0RESERVATION_EXPIRED<\/code>\u00a0\/ <code>INVALID_STATE<\/code> | | <code>POST \/api\/v1\/reservations\/{reservationId}\/cancel<\/code>\u00a0| <code>200<\/code>, <code>CANCELLED<\/code>\u00a0| <code>409\u00a0RESERVATION_EXPIRED<\/code> |<\/p>\n<p>\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438: <code>400\u00a0INVALID_REQUEST<\/code>, <code>401\u00a0UNAUTHENTICATED<\/code>, <code>404\u00a0EQUIPMENT_NOT_FOUND<\/code> \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438 <code>404\u00a0RESERVATION_NOT_FOUND<\/code> \u0434\u043b\u044f \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439\/\u0447\u0443\u0436\u043e\u0439 \u0431\u0440\u043e\u043d\u0438. \u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>code<\/code> \u0438 <code>message<\/code>; \u043b\u043e\u0433\u0438\u043a\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>code<\/code>.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f: \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f <code>2026-11-02T09:00:00Z<\/code>, \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 <code>eq-042<\/code>, \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b <code>10:00\u201411:00Z<\/code> \u0442\u043e\u0439\u00a0\u0436\u0435 \u0434\u0430\u0442\u044b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: <code>HELD<\/code>, \u0441\u0440\u043e\u043a <code>09:10:00Z<\/code>. \u0420\u043e\u0432\u043d\u043e \u0432 <code>09:10:00Z<\/code> \u043d\u0435\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b.<\/p>\n<h4>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c<\/h4>\n<p><a href=\"#appendix-bdd\" rel=\"noopener nofollow\">BDD\u00a0\u043d\u0430 Gherkin<\/a>. \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u0442\u0435\u0433\u0438 \u043f\u0440\u0430\u0432\u0438\u043b \u0438\u00a0\u044d\u0442\u0430\u043f\u043e\u0432. \u0412\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c \u0441\u0442\u0435\u043d\u0434\u043e\u043c, \u0434\u0430\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0435\u00a0\u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442\u00a0\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u043d\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<p>| \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u00a0| \u041f\u0440\u0430\u0432\u0438\u043b\u0430 | | \u2014\u00a0| \u2014 | | \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u00a0\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u043e\u043a\u0430\u00a0| BR-01, BR-02 | | \u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u00a0\u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b\u00a0| BR-01, BR-03 | | \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u044f\u0432\u043a\u0438\u00a0| BR-03, BR-04 | | \u0418\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u00a0\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u00a0| BR-03, BR-05 | | \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u043e\u0442\u043c\u0435\u043d\u0430, \u043f\u043e\u0432\u0442\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u00a0| BR-05, BR-07 | | \u041d\u0435\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0443\u0436\u0430\u044f \u0438\u00a0\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0431\u0440\u043e\u043d\u044c\u00a0| BR-06 |<\/p>\n<h4>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h4>\n<ol>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0438\u00a0\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b; \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438\u00a0\u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435; \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 <code>@create<\/code>, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044e \u043d\u0430\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0421\u0423\u0411\u0414.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430; \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 <code>@confirm<\/code>, <code>@cancel<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438\u00a0\u043f\u043e\u0432\u0442\u043e\u0440\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>HTTP-\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u043f\u043e\u00a0OpenAPI; \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0438\u00a0\u0441\u0442\u0430\u0442\u0443\u0441\u043e\u0432. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u043b\u043e\u044f \u043d\u0430\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0448\u0430\u0433\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0431\u0435\u0437 HTTP-\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441: \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0438\u00a0\u0441\u0440\u043e\u043a\u0430. \u0414\u043e\u00a0\u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u0442\u044c API \u0447\u0442\u0435\u043d\u0438\u044f, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0432\u00a0\u0443\u0447\u0435\u0431\u043d\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0438\u00a0\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0448\u0430\u0433\u0430\u00a0\u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u00a0\u0440\u0435\u0432\u044c\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432, \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0438\u00a0\u043a\u043e\u0434\u0430. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 BDD-\u0444\u0430\u0439\u043b\u0430 \u043d\u0435\u00a0\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0435\u0441\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b: \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u00a0\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u00a0\u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u044f\u0442.<\/p>\n<h4>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c<\/h4>\n<p><a class=\"anchor\" name=\"source-03\" id=\"source-03\"><\/a><\/p>\n<h4>03-erd.puml<\/h4>\n<pre><code>@startuml!pragma layout smetanaskinparam backgroundColor #F7F6F2skinparam defaultFontName DejaVu Sansskinparam defaultFontSize 23skinparam shadowing falseskinparam roundcorner 12skinparam ArrowColor #315DF5skinparam ArrowThickness 2skinparam LineThickness 2skinparam defaultFontColor #182020skinparam classBackgroundColor #E9EEFFskinparam classBorderColor #315DF5skinparam classAttributeFontSize 22skinparam classFontSize 25skinparam rectangleBackgroundColor #E9EEFFskinparam rectangleBorderColor #315DF5skinparam rectangleFontSize 23skinparam packageBackgroundColor #F7F6F2skinparam packageBorderColor #9BAACDskinparam stateBackgroundColor #E9EEFFskinparam stateBorderColor #315DF5skinparam stateFontSize 24skinparam usecaseBackgroundColor #E9EEFFskinparam usecaseBorderColor #315DF5skinparam activityBackgroundColor #E9EEFFskinparam activityBorderColor #315DF5skinparam activityDiamondBackgroundColor #FFFFFFskinparam activityDiamondBorderColor #315DF5skinparam participantBackgroundColor #E9EEFFskinparam participantBorderColor #315DF5skinparam sequenceLifeLineBorderColor #9BAACDskinparam sequenceGroupBorderColor #315DF5skinparam sequenceGroupBackgroundColor #F7F6F2skinparam noteBackgroundColor #FFFFFFskinparam noteBorderColor #9BAACDskinparam nodesep 55skinparam ranksep 65hide circlehide methodsentity \u00abUser\\n\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u00bb as\u00a0U {* id : identifier &lt;&lt;PK&gt;&gt;\u2014* authIssuer : string* authSubject : string}entity \u00abEquipment\\n\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u00bb as\u00a0E {* id : identifier &lt;&lt;PK&gt;&gt;\u2014* inventoryNumber : string &lt;&lt;unique&gt;&gt;* name : string}entity \u00abReservation\\n\u0411\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb as\u00a0R {* id : identifier &lt;&lt;PK&gt;&gt;\u2014* userId : identifier &lt;&lt;FK&gt;&gt;* equipmentId : identifier &lt;&lt;FK&gt;&gt;* startsAt : UTC timestamp* endsAt : UTC timestamp* holdExpiresAt : UTC timestamp* createdAt : UTC timestamp* status : enum}U ||-down-o{ R : \u0432\u043b\u0430\u0434\u0435\u0435\u0442E ||-down-o{ R : \u0431\u0440\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044fU -[hidden]right- E@enduml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"source-04\" id=\"source-04\"><\/a><\/p>\n<h4>04-use-case.puml<\/h4>\n<pre><code>@startuml!pragma layout smetanaskinparam backgroundColor #F7F6F2skinparam defaultFontName DejaVu Sansskinparam defaultFontSize 23skinparam shadowing falseskinparam roundcorner 12skinparam ArrowColor #315DF5skinparam ArrowThickness 2skinparam LineThickness 2skinparam defaultFontColor #182020skinparam classBackgroundColor #E9EEFFskinparam classBorderColor #315DF5skinparam classAttributeFontSize 22skinparam classFontSize 25skinparam rectangleBackgroundColor #E9EEFFskinparam rectangleBorderColor #315DF5skinparam rectangleFontSize 23skinparam packageBackgroundColor #F7F6F2skinparam packageBorderColor #9BAACDskinparam stateBackgroundColor #E9EEFFskinparam stateBorderColor #315DF5skinparam stateFontSize 24skinparam usecaseBackgroundColor #E9EEFFskinparam usecaseBorderColor #315DF5skinparam activityBackgroundColor #E9EEFFskinparam activityBorderColor #315DF5skinparam activityDiamondBackgroundColor #FFFFFFskinparam activityDiamondBorderColor #315DF5skinparam participantBackgroundColor #E9EEFFskinparam participantBorderColor #315DF5skinparam sequenceLifeLineBorderColor #9BAACDskinparam sequenceGroupBorderColor #315DF5skinparam sequenceGroupBackgroundColor #F7F6F2skinparam noteBackgroundColor #FFFFFFskinparam noteBorderColor #9BAACDskinparam nodesep 55skinparam ranksep 65actor \u00ab\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u00bb as\u00a0Urectangle \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb {usecase \u00ab\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\\n\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u00bb as\u00a0Viewusecase \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c\\n\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\u00bb as\u00a0Holdusecase \u00ab\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c\\n\u0441\u0432\u043e\u0451 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb as\u00a0Confirmusecase \u00ab\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\\n\u0441\u0432\u043e\u0451 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb as\u00a0CancelView -[hidden]down- HoldHold -[hidden]down- ConfirmConfirm -[hidden]down- Cancel}U -right- ViewU -right- HoldU -right- ConfirmU -right- Cancel@enduml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"source-05\" id=\"source-05\"><\/a><\/p>\n<h4>05-c4-context.puml<\/h4>\n<pre><code>@startuml!pragma layout smetanaskinparam backgroundColor #F7F6F2skinparam defaultFontName DejaVu Sansskinparam defaultFontSize 23skinparam shadowing falseskinparam roundcorner 12skinparam ArrowColor #315DF5skinparam ArrowThickness 2skinparam LineThickness 2skinparam defaultFontColor #182020skinparam classBackgroundColor #E9EEFFskinparam classBorderColor #315DF5skinparam classAttributeFontSize 22skinparam classFontSize 25skinparam rectangleBackgroundColor #E9EEFFskinparam rectangleBorderColor #315DF5skinparam rectangleFontSize 23skinparam packageBackgroundColor #F7F6F2skinparam packageBorderColor #9BAACDskinparam stateBackgroundColor #E9EEFFskinparam stateBorderColor #315DF5skinparam stateFontSize 24skinparam usecaseBackgroundColor #E9EEFFskinparam usecaseBorderColor #315DF5skinparam activityBackgroundColor #E9EEFFskinparam activityBorderColor #315DF5skinparam activityDiamondBackgroundColor #FFFFFFskinparam activityDiamondBorderColor #315DF5skinparam participantBackgroundColor #E9EEFFskinparam participantBorderColor #315DF5skinparam sequenceLifeLineBorderColor #9BAACDskinparam sequenceGroupBorderColor #315DF5skinparam sequenceGroupBackgroundColor #F7F6F2skinparam noteBackgroundColor #FFFFFFskinparam noteBorderColor #9BAACDskinparam nodesep 55skinparam ranksep 65actor \u00ab\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\\n[Person]\u00bb as\u00a0Urectangle \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\\n[Software System]\\n\\n\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c, \u0440\u0435\u0437\u0435\u0440\u0432\u044b,\\n\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430\u00bb as\u00a0Srectangle \u00ab\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\\n[External Software System]\\n\\n\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438\\n\u0438 \u0432\u044b\u043f\u0443\u0441\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432\u00bb as\u00a0I #E8E9EDU -down-&gt; S : \u0411\u0440\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435S -down-&gt; I : \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044cU -right-&gt; I : \u0412\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c@enduml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"source-06\" id=\"source-06\"><\/a><\/p>\n<h4>06-c4-container.puml<\/h4>\n<pre><code>@startuml!pragma layout smetanaskinparam backgroundColor #F7F6F2skinparam defaultFontName DejaVu Sansskinparam defaultFontSize 23skinparam shadowing falseskinparam roundcorner 12skinparam ArrowColor #315DF5skinparam ArrowThickness 2skinparam LineThickness 2skinparam defaultFontColor #182020skinparam classBackgroundColor #E9EEFFskinparam classBorderColor #315DF5skinparam classAttributeFontSize 22skinparam classFontSize 25skinparam rectangleBackgroundColor #E9EEFFskinparam rectangleBorderColor #315DF5skinparam rectangleFontSize 23skinparam packageBackgroundColor #F7F6F2skinparam packageBorderColor #9BAACDskinparam stateBackgroundColor #E9EEFFskinparam stateBorderColor #315DF5skinparam stateFontSize 24skinparam usecaseBackgroundColor #E9EEFFskinparam usecaseBorderColor #315DF5skinparam activityBackgroundColor #E9EEFFskinparam activityBorderColor #315DF5skinparam activityDiamondBackgroundColor #FFFFFFskinparam activityDiamondBorderColor #315DF5skinparam participantBackgroundColor #E9EEFFskinparam participantBorderColor #315DF5skinparam sequenceLifeLineBorderColor #9BAACDskinparam sequenceGroupBorderColor #315DF5skinparam sequenceGroupBackgroundColor #F7F6F2skinparam noteBackgroundColor #FFFFFFskinparam noteBorderColor #9BAACDskinparam nodesep 55skinparam ranksep 65actor \u00ab\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\\n[Person]\u00bb as\u00a0Urectangle \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u0430\\n\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb {rectangle \u00ab\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\\n[Container: \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435]\\n\\n\u0412\u044b\u0431\u043e\u0440 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u00a0\u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00bb as\u00a0Wrectangle \u00abAPI \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\\n[Container: \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435]\\n\\n\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u00bb as\u00a0Adatabase \u00ab\u0411\u0430\u0437\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439\\n[Container: \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0411\u0414]\\n\\n\u0414\u0430\u043d\u043d\u044b\u0435, \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438\\n\u00bb as\u00a0DW -down-&gt; A : \u041a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0\/ \u043e\u0442\u0432\u0435\u0442\u044b\\n[HTTPS\u00a0\/ JSON]\\nBearer-\u0442\u043e\u043a\u0435\u043dA -down-&gt; D : \u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\\n[SQL]}rectangle \u00ab\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\\n\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\\n[External System]\u00bb as\u00a0I #E8E9EDU -down-&gt; W : \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442W -right-&gt; I : \u0412\u0445\u043e\u0434\\n[OIDC\u00a0\/ HTTPS]A -right-&gt; I : \u041a\u043b\u044e\u0447\u0438\\n\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\\n[HTTPS]@enduml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"source-07\" id=\"source-07\"><\/a><\/p>\n<h4>07-state-machine.puml<\/h4>\n<pre><code>@startuml!pragma layout smetanaskinparam backgroundColor #F7F6F2skinparam defaultFontName DejaVu Sansskinparam defaultFontSize 23skinparam shadowing falseskinparam roundcorner 12skinparam ArrowColor #315DF5skinparam ArrowThickness 2skinparam LineThickness 2skinparam defaultFontColor #182020skinparam classBackgroundColor #E9EEFFskinparam classBorderColor #315DF5skinparam classAttributeFontSize 22skinparam classFontSize 25skinparam rectangleBackgroundColor #E9EEFFskinparam rectangleBorderColor #315DF5skinparam rectangleFontSize 23skinparam packageBackgroundColor #F7F6F2skinparam packageBorderColor #9BAACDskinparam stateBackgroundColor #E9EEFFskinparam stateBorderColor #315DF5skinparam stateFontSize 24skinparam usecaseBackgroundColor #E9EEFFskinparam usecaseBorderColor #315DF5skinparam activityBackgroundColor #E9EEFFskinparam activityBorderColor #315DF5skinparam activityDiamondBackgroundColor #FFFFFFskinparam activityDiamondBorderColor #315DF5skinparam participantBackgroundColor #E9EEFFskinparam participantBorderColor #315DF5skinparam sequenceLifeLineBorderColor #9BAACDskinparam sequenceGroupBorderColor #315DF5skinparam sequenceGroupBackgroundColor #F7F6F2skinparam noteBackgroundColor #FFFFFFskinparam noteBorderColor #9BAACDskinparam nodesep 55skinparam ranksep 65state \u00ab\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\\nHELD\u00bb as\u00a0Hstate \u00ab\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u0430\u044f \u0431\u0440\u043e\u043d\u044c\\nCONFIRMED\u00bb as\u00a0Cstate \u00ab\u041e\u0442\u043c\u0435\u043d\u0430\\nCANCELLED\u00bb as\u00a0Xstate \u00ab\u0418\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435\\nEXPIRED\u00bb as\u00a0E[*] \u2014&gt; H : \u0441\u043e\u0437\u0434\u0430\u0442\u044cH -down-&gt; C : \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c\\n[now &lt;\\nholdExpiresAt]H -right-&gt; E : \u0441\u0440\u043e\u043a \u0438\u0441\u0442\u0451\u043a\\n[now &gt;=\\nholdExpiresAt]H -left-&gt; X : \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\\n[now &lt;\\nholdExpiresAt]C -left-&gt; X : \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c@enduml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"source-08\" id=\"source-08\"><\/a><\/p>\n<h4>08-sequence.puml<\/h4>\n<pre><code>@startuml!pragma layout smetanaskinparam backgroundColor #F7F6F2skinparam defaultFontName DejaVu Sansskinparam defaultFontSize 23skinparam shadowing falseskinparam roundcorner 12skinparam ArrowColor #315DF5skinparam ArrowThickness 2skinparam LineThickness 2skinparam defaultFontColor #182020skinparam classBackgroundColor #E9EEFFskinparam classBorderColor #315DF5skinparam classAttributeFontSize 22skinparam classFontSize 25skinparam rectangleBackgroundColor #E9EEFFskinparam rectangleBorderColor #315DF5skinparam rectangleFontSize 23skinparam packageBackgroundColor #F7F6F2skinparam packageBorderColor #9BAACDskinparam stateBackgroundColor #E9EEFFskinparam stateBorderColor #315DF5skinparam stateFontSize 24skinparam usecaseBackgroundColor #E9EEFFskinparam usecaseBorderColor #315DF5skinparam activityBackgroundColor #E9EEFFskinparam activityBorderColor #315DF5skinparam activityDiamondBackgroundColor #FFFFFFskinparam activityDiamondBorderColor #315DF5skinparam participantBackgroundColor #E9EEFFskinparam participantBorderColor #315DF5skinparam sequenceLifeLineBorderColor #9BAACDskinparam sequenceGroupBorderColor #315DF5skinparam sequenceGroupBackgroundColor #F7F6F2skinparam noteBackgroundColor #FFFFFFskinparam noteBorderColor #9BAACDskinparam nodesep 55skinparam ranksep 65hide footboxskinparam maxMessageSize 350participant \u00ab\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u00bb as\u00a0Wparticipant \u00abAPI \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb as\u00a0Adatabase \u00ab\u0411\u0430\u0437\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439\u00bb as\u00a0Dnote over W,D\u041f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u0435: \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b;\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.end noteW -&gt; A : POST \/api\/v1\/reservationsactivate\u00a0Agroup \u041e\u0434\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u00a0\/ \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044eA -&gt; D : BEGIN; \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 EquipmentD \u2014&gt; A : \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430A -&gt; A : now = \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044fA -&gt; D : \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0431\u0440\u043e\u043d\u0438\\n\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435D \u2014&gt; A : \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438alt \u0415\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435A -&gt; D : ROLLBACK; \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443D \u2014&gt; A : \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430A \u2014&gt; W : 409\u00a0EQUIPMENT_BUSYelse \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043dA -&gt; D : INSERT Reservation: HELD\\nholdExpiresAt = now + 10\u00a0\u043c\u0438\u043dA -&gt; D : COMMIT; \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443D \u2014&gt; A : \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043eA \u2014&gt; W : 201 Reservationendenddeactivate A@enduml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"source-09\" id=\"source-09\"><\/a><\/p>\n<h4>09-activity.puml<\/h4>\n<pre><code>@startuml!pragma layout smetanaskinparam backgroundColor #F7F6F2skinparam defaultFontName DejaVu Sansskinparam defaultFontSize 23skinparam shadowing falseskinparam roundcorner 12skinparam ArrowColor #315DF5skinparam ArrowThickness 2skinparam LineThickness 2skinparam defaultFontColor #182020skinparam classBackgroundColor #E9EEFFskinparam classBorderColor #315DF5skinparam classAttributeFontSize 22skinparam classFontSize 25skinparam rectangleBackgroundColor #E9EEFFskinparam rectangleBorderColor #315DF5skinparam rectangleFontSize 23skinparam packageBackgroundColor #F7F6F2skinparam packageBorderColor #9BAACDskinparam stateBackgroundColor #E9EEFFskinparam stateBorderColor #315DF5skinparam stateFontSize 24skinparam usecaseBackgroundColor #E9EEFFskinparam usecaseBorderColor #315DF5skinparam activityBackgroundColor #E9EEFFskinparam activityBorderColor #315DF5skinparam activityDiamondBackgroundColor #FFFFFFskinparam activityDiamondBorderColor #315DF5skinparam participantBackgroundColor #E9EEFFskinparam participantBorderColor #315DF5skinparam sequenceLifeLineBorderColor #9BAACDskinparam sequenceGroupBorderColor #315DF5skinparam sequenceGroupBackgroundColor #F7F6F2skinparam noteBackgroundColor #FFFFFFskinparam noteBorderColor #9BAACDskinparam nodesep 55skinparam ranksep 65start:\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441;if\u00a0(\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b?) then (\u043d\u0435\u0442):400\u00a0INVALID_REQUEST;stopelse (\u0434\u0430)endifif\u00a0(\u041e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442?) then (\u043d\u0435\u0442):404\u00a0EQUIPMENT_NOT_FOUND;stopelse (\u0434\u0430)endifpartition \u00ab\u0410\u0442\u043e\u043c\u0430\u0440\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u00bb {:\u041d\u0430\u0447\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e;\\n\u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 Equipment;:\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 now;:CONFIRMED \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0440\u043e\u043a\u0430;\\nHELD\u00a0\u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 now &lt; holdExpiresAt;if\u00a0(\u0415\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435\\n\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u0432?) then (\u0434\u0430):\u041e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e;\\n\u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443;:409\u00a0EQUIPMENT_BUSY;stopelse (\u043d\u0435\u0442):\u0421\u043e\u0437\u0434\u0430\u0442\u044c HELD;\\nholdExpiresAt = now + 10\u00a0\u043c\u0438\u043d;:\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e;\\n\u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443;endif}:201\u00a0Reservation;stop@enduml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><a class=\"anchor\" name=\"appendix-bdd\" id=\"appendix-bdd\"><\/a><\/p>\n<details class=\"spoiler\">\n<summary>BDD-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u2014 reservations.feature<\/summary>\n<div class=\"spoiler__content\">\n<pre><code># language: ru@equipment-reservation-v1\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c: \u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0423\u0447\u0435\u0431\u043d\u044b\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f; \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438\u00a0\u0448\u0430\u0433\u043e\u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.\u0412\u0441\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 UTC, \u0447\u0430\u0441\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c \u0441\u0442\u0435\u043d\u0434\u043e\u043c.\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f:\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u00abeq-042\u00bb\u0418\u00a0\u044f\u00a0\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u00abuser-a\u00bb\u0418\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0432\u043d\u043e \u00ab2026-11-02T09:00:00Z\u00bb\u0418\u00a0\u0443\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u0442 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439@create @BR-01 @BR-02\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u0430\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T10:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:00:00Z\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 201\u0418\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u043e \u00abHELD\u00bb\u0418\u00a0\u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0440\u0430\u0432\u0435\u043d \u00ab2026-11-02T09:10:00Z\u00bb\u0418\u00a0\u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00abuser-a\u00bb@create @BR-01 @BR-03\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u043e\u0439 \u0431\u0440\u043e\u043d\u044c\u044e\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u044f\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u043e\u0439 \u0431\u0440\u043e\u043d\u044c\u044e \u0441\u00a0\u00ab2026-11-02T10:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:00:00Z\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T10:30:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:30:00Z\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 409\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abEQUIPMENT_BUSY\u00bb\u0418\u00a0\u043d\u043e\u0432\u043e\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u00a0\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f@create @BR-01 @BR-03\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u0421\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u044f\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u043e\u0439 \u0431\u0440\u043e\u043d\u044c\u044e \u0441\u00a0\u00ab2026-11-02T10:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:00:00Z\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T11:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T12:00:00Z\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 201@create @BR-01\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432 \u00abeq-042\u00bb \u0441\u00a0\u00ab&lt;\u043d\u0430\u0447\u0430\u043b\u043e&gt;\u00bb \u0434\u043e\u00a0\u00ab&lt;\u043a\u043e\u043d\u0435\u0446&gt;\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 400\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abINVALID_REQUEST\u00bb\u0418\u00a0\u043d\u043e\u0432\u043e\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u00a0\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f\u041f\u0440\u0438\u043c\u0435\u0440\u044b:| \u043d\u0430\u0447\u0430\u043b\u043e\u00a0| \u043a\u043e\u043d\u0435\u0446 || 2026-11-02T10:00:00Z\u00a0| 2026-11-02T10:00:00Z || 2026-11-02T11:00:00Z\u00a0| 2026-11-02T10:00:00Z |@create @BR-03 @BR-05\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u0421\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0440\u0435\u0437\u0435\u0440\u0432 HELD\u00a0\u043d\u0430 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T10:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:00:00Z\u00bb\u0418\u00a0\u0435\u0433\u043e \u0441\u0440\u043e\u043a \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0432\u00a0\u00ab2026-11-02T09:10:00Z\u00bb\u0418\u00a0\u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b \u0441\u0442\u0430\u0442\u0443\u0441\u0418\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0432\u043d\u043e \u00ab&lt;\u0432\u0440\u0435\u043c\u044f&gt;\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T10:30:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:30:00Z\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 &lt;\u0441\u0442\u0430\u0442\u0443\u0441&gt;\u041f\u0440\u0438\u043c\u0435\u0440\u044b:| \u0432\u0440\u0435\u043c\u044f\u00a0| \u0441\u0442\u0430\u0442\u0443\u0441 || 2026-11-02T09:09:59Z\u00a0| 409 || 2026-11-02T09:10:00Z\u00a0| 201 || 2026-11-02T09:10:01Z\u00a0| 201 |@create @BR-03 @BR-04\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u0414\u0432\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430\u00a0\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u00abuser-a\u00bb \u0438\u00a0\u00abuser-b\u00bb \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u044e\u0442 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T10:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:00:00Z\u00bb\u0422\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 201\u0418\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 409\u00a0\u0441 \u043a\u043e\u0434\u043e\u043c \u00abEQUIPMENT_BUSY\u00bb\u0418\u00a0\u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0418\u00a0\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f \u043d\u0435\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c@confirm @BR-05 @BR-07\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0434\u043e\u00a0\u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 HELD\u0418\u00a0\u0435\u0433\u043e \u0441\u0440\u043e\u043a \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0432\u00a0\u00ab2026-11-02T09:10:00Z\u00bb\u0418\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0432\u043d\u043e \u00ab2026-11-02T09:09:59Z\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 200\u0418\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u043e \u00abCONFIRMED\u00bb\u0418\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u043e\u0441\u043b\u0435 \u00ab2026-11-02T09:10:00Z\u00bb@confirm @BR-05\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u043e\u0432\u043d\u043e \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0440\u043e\u043a\u0430\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 HELD\u0418\u00a0\u0435\u0433\u043e \u0441\u0440\u043e\u043a \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0432\u00a0\u00ab2026-11-02T09:10:00Z\u00bb\u0418\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0432\u043d\u043e \u00ab2026-11-02T09:10:00Z\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 409\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abRESERVATION_EXPIRED\u00bb\u0418\u00a0\u0440\u0435\u0437\u0435\u0440\u0432 \u043d\u0435\u00a0\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435@cancel @BR-03 @BR-07\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u041e\u0442\u043c\u0435\u043d\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0451 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T10:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:00:00Z\u00bb \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00ab&lt;\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435&gt;\u00bb\u0418\u00a0\u0435\u0433\u043e \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0440\u0430\u0432\u0435\u043d \u00ab2026-11-02T09:10:00Z\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u043e\u0442\u043c\u0435\u043d\u044f\u044e \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 200\u0418\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u043e \u00abCANCELLED\u00bb\u041a\u043e\u0433\u0434\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u0442\u00a0\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 201\u041f\u0440\u0438\u043c\u0435\u0440\u044b:| \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 || HELD || CONFIRMED |@confirm @cancel @BR-07\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u041f\u043e\u0432\u0442\u043e\u0440 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0451 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00ab&lt;\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435&gt;\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u00ab&lt;\u043a\u043e\u043c\u0430\u043d\u0434\u0430&gt;\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 200\u0418\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u00ab&lt;\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435&gt;\u00bb\u041f\u0440\u0438\u043c\u0435\u0440\u044b:| \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u00a0| \u043a\u043e\u043c\u0430\u043d\u0434\u0430 || CONFIRMED\u00a0| confirm || CANCELLED\u00a0| cancel |@confirm @BR-07\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u041e\u0442\u043c\u0435\u043d\u0451\u043d\u043d\u0443\u044e \u0431\u0440\u043e\u043d\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0451 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abCANCELLED\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 409\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abINVALID_STATE\u00bb@cancel @BR-05\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u0418\u0441\u0442\u0451\u043a\u0448\u0438\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 HELD\u0418\u00a0\u0435\u0433\u043e \u0441\u0440\u043e\u043a \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0432\u00a0\u00ab2026-11-02T09:10:00Z\u00bb\u0418\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0432\u043d\u043e \u00ab2026-11-02T09:10:00Z\u00bb\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u043e\u0442\u043c\u0435\u043d\u044f\u044e \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 409\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abRESERVATION_EXPIRED\u00bb@confirm @cancel @BR-06\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u0427\u0443\u0436\u043e\u0435 \u0438\u00a0\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u00a0\u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u00ab&lt;\u0432\u0438\u0434&gt;\u00bb \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u00ab&lt;\u043a\u043e\u043c\u0430\u043d\u0434\u0430&gt;\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 404\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abRESERVATION_NOT_FOUND\u00bb\u0418\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0447\u0443\u0436\u0438\u0445 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0435\u00a0\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f\u041f\u0440\u0438\u043c\u0435\u0440\u044b:| \u0432\u0438\u0434\u00a0| \u043a\u043e\u043c\u0430\u043d\u0434\u0430 || \u0447\u0443\u0436\u043e\u0433\u043e\u00a0| confirm || \u0447\u0443\u0436\u043e\u0433\u043e\u00a0| cancel || \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e\u00a0| confirm || \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e\u00a0| cancel |@create @BR-06\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u0417\u0430\u043f\u0440\u043e\u0441 \u0431\u0435\u0437 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u043e\u0439 \u0442\u043e\u043a\u0435\u043d \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432 \u00abeq-042\u00bb \u0441\u00a0\u00ab2026-11-02T10:00:00Z\u00bb \u0434\u043e\u00a0\u00ab2026-11-02T11:00:00Z\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 401\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abUNAUTHENTICATED\u00bb@create @BR-02 @BR-06\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u041d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0432\u00a0\u0442\u0435\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u041a\u043e\u0433\u0434\u0430 \u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u044e \u0440\u0435\u0437\u0435\u0440\u0432 \u0441\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c userId \u0440\u0430\u0432\u043d\u044b\u043c \u00abuser-b\u00bb\u0422\u043e\u0433\u0434\u0430 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 400\u0418\u00a0\u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0432\u0435\u043d \u00abINVALID_REQUEST\u00bb<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1101186\/\">https:\/\/habr.com\/ru\/articles\/1101186\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0438\u0447\u0438 \u0441\u00a0\u043d\u0443\u043b\u044f \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043c\u0430\u043d\u0447\u0438\u0432\u043e \u043b\u0435\u0433\u043a\u043e. \u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b \u0438\u0434\u0435\u044e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0430 \u044d\u043a\u0440\u0430\u043d\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c. \u041d\u043e\u00a0\u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442\u00a0\u043e\u0431\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u044b\u0441\u043b\u0430 \u043a\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u0441\u0432\u043e\u0439 \u043e\u0442\u0432\u0435\u0442.\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0432\u0435\u0431-\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440 \u0438\u00a0\u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0431\u0440\u043e\u043d\u044c, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442\u00a0\u0435\u0451. \u0417\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c \u0438\u00a0CRUD. \u0418\u043b\u043b\u044e\u0437\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u0432\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0437\u0430\u0432\u0438\u0441\u0430\u0435\u0442 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430, \u0430\u00a0\u043e\u0442\u043c\u0435\u043d\u0451\u043d\u043d\u0430\u044f \u0437\u0430\u044f\u0432\u043a\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0432\u00a0\u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u0435.\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u0443\u0442\u044c \u043e\u0442\u00a0\u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u0438 \u0434\u043e\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 LLM: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.\u041c\u0435\u0436\u0434\u0443 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043c\u0438 \u0438\u00a0\u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u00a0\u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c\u044e, \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c. \u041d\u0430\u00a0\u0432\u0441\u0442\u0440\u0435\u0447\u0435 \u0432\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c: \u00ab\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f\u00bb, \u00ab\u043d\u0435\u00a0\u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0440\u043e\u043d\u0438\u00bb, \u00ab\u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043c\u0435\u043d\u044b \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c\u00bb. \u041d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u043f\u043e\u043d\u0438\u043c\u0430\u043b \u043f\u043e\u0434 \u0440\u0435\u0437\u0435\u0440\u0432\u043e\u043c \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u0432\u0442\u043e\u0440\u043e\u0439\u00a0\u2014 \u0432\u0435\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b, \u0430\u00a0\u0442\u0440\u0435\u0442\u0438\u0439 \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438.\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0443\u0442\u043e\u0447\u043d\u044f\u0435\u0442 \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0430\u0441\u044b \u0438\u00a0\u0434\u043d\u0438: \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u00a0\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c.\u0414\u0440\u0443\u0433\u0430\u044f \u043a\u0440\u0430\u0439\u043d\u043e\u0441\u0442\u044c\u00a0\u2014 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0447\u0442\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c. \u0417\u0434\u0435\u0441\u044c \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u044d\u043a\u0440\u0430\u043d \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0435\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438, \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0438\u00a0\u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0430\u0437\u0443, \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043d\u0430\u00a0\u043d\u0435\u0432\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0442\u0435\u043c \u0434\u043e\u0440\u043e\u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u00a0\u0448\u0438\u0440\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0448\u043a\u0430\u043b\u0430: \u043e\u0442\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u0445, \u043d\u043e\u00a0\u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u043a\u00a0\u0442\u043e\u0447\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u0432\u00a0\u043a\u043e\u0434\u0435; \u043c\u043e\u0434\u0435\u043b\u0438, \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0432\u00a0\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435*\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a01.\u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u043e\u0441\u0442\u044c\u044e \u0435\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. *\u041a\u043e\u0434 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0451\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u041d\u043e\u00a0\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435.\u041c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u043c \u0438\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0435\u0441\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c: \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u041e\u043d\u0438 \u0443\u0436\u0435 \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u044e\u0442 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430\u00a0\u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043d\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u0443\u044e \u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c Spec driven development: \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.\u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u043e\u0442\u00a0\u0438\u0434\u0435\u0438 \u0434\u043e\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f, \u0437\u0430\u043c\u0435\u0442\u043a\u0438, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, ERD, Use Case, C4\u00a0Context \u0438\u00a0Container, State Machine, Sequence, Activity, OpenAPI, Markdown-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, BDD, \u043a\u043e\u0434 \u0438\u00a0\u0442\u0435\u0441\u0442\u044b\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a02. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. LLM \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u0441\u0435\u0445 \u044d\u0442\u0430\u043f\u0430\u0445; \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0438\u00a0\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u0437\u0435\u0440\u0432 \u0436\u0438\u0432\u0451\u0442 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u0430\u044f \u0431\u0440\u043e\u043d\u044c \u0438\u00a0\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b. \u041e\u0442\u043c\u0435\u043d\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0435\u0433\u043e. \u041e\u043f\u043b\u0430\u0442\u0443, \u0432\u044b\u0434\u0430\u0447\u0443 \u0438\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0444\u0438\u0447\u0438.\u0421\u0445\u0435\u043c\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f, \u0430\u00a0\u043d\u0435\u00a0\u0437\u0430\u043f\u0440\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0437\u0430\u0434. \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u00a0Sequence \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435. \u0422\u043e\u0433\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0434\u043e\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0433\u043e \u0448\u0430\u0433\u0430. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.1. \u0412\u0441\u0442\u0440\u0435\u0447\u0438 \u0438\u00a0\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f: \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u0440\u043e\u0438\u043c\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u00a0\u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u0430 \u0444\u0438\u0447\u0430. \u041a\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u0435\u0439\u0447\u0430\u0441? \u041a\u0442\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435? \u0427\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f? \u041a\u0430\u043a\u0438\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c\u0438? \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438: \u00ab\u0434\u0432\u0430 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u043f\u0440\u0438\u0448\u043b\u0438 \u0437\u0430\u00a0\u043e\u0434\u043d\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440\u043e\u043c\u00bb, \u00ab\u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043e\u0442\u043a\u0440\u044b\u043b \u0444\u043e\u0440\u043c\u0443 \u0438\u00a0\u0443\u0448\u0451\u043b, \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043d\u044f\u0442\u044b\u043c\u00bb.\u0412\u00a0\u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438, \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u0441\u043c\u044b\u0441\u043b \u043e\u0442\u043c\u0435\u043d\u044b \u0438\u00a0\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u044f\u0435\u043c \u0433\u0440\u0430\u043d\u0438\u0446\u044b: \u0431\u0440\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0440 \u0441\u00a0\u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c, \u0430\u00a0\u043d\u0435\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0438\u0437\u00a0\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438.LLM \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0435 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u041d\u043e\u00a0\u043e\u0442\u0432\u0435\u0442 \u00ab\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442\u00bb \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438. \u0412\u044b\u0431\u043e\u0440 \u0441\u0440\u043e\u043a\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043b\u044e\u0434\u044f\u043c, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u043c \u0437\u0430\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441.\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0438\u00a0\u2014 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u00a0\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u00a0\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438. \u0414\u0440\u0443\u0433\u0443\u044e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c.2. \u041a\u043e\u043d\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u00a0\u0437\u0430\u043c\u0435\u0442\u043a\u0438: \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442. \u041f\u043e\u043b\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440, \u043d\u043e\u00a0\u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0438\u0437\u00a0\u043d\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412\u00a0\u0437\u0430\u043c\u0435\u0442\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0435\u0433\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0438\u00a0\u043e\u0441\u0442\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c.\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0440\u0435\u0437\u0435\u0440\u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0441\u00a0\u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0441\u043f\u0435\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c. \u0418\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u0412\u043e\u043f\u0440\u043e\u0441: \u043c\u043e\u0436\u043d\u043e\u00a0\u043b\u0438 \u043f\u0440\u043e\u0434\u043b\u0435\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432? \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438: \u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.\u0422\u0430\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u0443\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0440\u043e\u043a \u043e\u0442\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u0432\u0448\u0435\u0439 \u0438\u0434\u0435\u0438.LLM \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0440\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442\u0430 \u0438\u00a0\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043c\u0438. \u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u00a0\u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u00a0\u043d\u0435\u00a0\u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c.3. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f: \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u00ab\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u00bb \u043d\u0430\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0422\u0435\u043f\u0435\u0440\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0412\u043c\u0435\u0441\u0442\u043e \u00ab\u043d\u0435\u00a0\u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u0431\u0440\u043e\u043d\u044c\u00bb \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u044f\u0432\u043a\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u00a0\u0447\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u043c.| \u041f\u0440\u0430\u0432\u0438\u043b\u043e\u00a0| \u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 | | \u2014\u00a0| \u2014 | | BR-01\u00a0| \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434 [startsAt, endsAt): \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u043a\u043e\u043d\u0435\u0446 \u0438\u0441\u043a\u043b\u044e\u0447\u0451\u043d; \u043d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043a\u043e\u043d\u0446\u0430. | | BR-02\u00a0| \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f HELD, \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430\u00a0\u2014 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u043f\u043e\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. | | BR-03\u00a0| \u041e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442 CONFIRMED \u0438 HELD, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e now &lt; holdExpiresAt. | | BR-04\u00a0| \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0438\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0434\u043d\u0443 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. | | BR-05\u00a0| \u041f\u0440\u0438 now &gt;= holdExpiresAt \u0440\u0435\u0437\u0435\u0440\u0432 \u0438\u0441\u0442\u0451\u043a; \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f. | | BR-06\u00a0| \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. |\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u00a0\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 \u0438\u00a0\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u043c\u0438. \u0410\u0433\u0435\u043d\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0440\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0431\u0435\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u043b\u0438 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e. \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043c\u044b\u0441\u043b \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0438\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.\u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043a\u0430\u043a \u043c\u044b\u00a0\u043f\u043e\u0439\u043c\u0451\u043c, \u0447\u0442\u043e \u043e\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e?\u00bb. \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b\u00bb \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0435\u00a0\u0434\u0430\u0451\u0442. \u00ab\u0418\u0437\u00a0\u0434\u0432\u0443\u0445 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430\u00a0\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u0430\u00bb \u0443\u0436\u0435 \u0437\u0430\u0434\u0430\u0451\u0442 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443.4. \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u00a0ERD: \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435\u0412\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0451\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041a\u0430\u0436\u0434\u043e\u0435 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u00a0\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u00a0\u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u0435. \u0423\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439.ERD: User \u0438\u00a0Equipment \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0434\u0438\u043d \u043a\u043e\u00a0\u043c\u043d\u043e\u0433\u0438\u043c \u0441\u00a0Reservation; \u0443\u00a0\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u00a0\u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a03. startsAt \u0438 endsAt \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, holdExpiresAt \u2014 \u0441\u0440\u043e\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.ERD \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438\u00a0\u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0439 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u044f\u0434\u043e\u043c: \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.LLM \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0438\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439.\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430. \u0421\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0443\u0436\u0435\u043d \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u043e\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u0431\u0440\u043e\u043d\u0438 \u043d\u0435\u0437\u0430\u0447\u0435\u043c. \u0418\u00a0\u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u043d\u0430\u0442\u044c \u0441\u0440\u043e\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0432\u0440\u0435\u043c\u044f. \u0422\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432\u00a0API \u0438\u00a0\u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0430 \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c\u0443 ORM.5. Use Case: \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044fUse Case \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0414\u043b\u044f \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u0447\u0435\u0442\u044b\u0440\u0435 \u0446\u0435\u043b\u0438: \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.UML Use Case: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0441\u0432\u044f\u0437\u0430\u043d \u0441\u00a0\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0438\u00a0\u043e\u0442\u043c\u0435\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a04. \u041b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u0441\u00a0\u0446\u0435\u043b\u044f\u043c\u0438; \u043e\u043d\u0438 \u043d\u0435\u00a0\u0437\u0430\u0434\u0430\u044e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c HTTP-\u0432\u044b\u0437\u043e\u0432\u043e\u0432.\u041d\u0435\u00a0\u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0432\u00a0\u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u00a0\u0431\u0430\u0437\u0435\u00a0\u2014 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430\u00a0\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0443 \u043d\u0443\u0436\u0435\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.LLM \u043b\u0435\u0433\u043a\u043e \u0441\u0442\u0440\u043e\u0438\u0442 \u0442\u0430\u043a\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u00a0\u0441\u043f\u0438\u0441\u043a\u0443 \u0446\u0435\u043b\u0435\u0439. \u041f\u043e\u043b\u044c\u0437\u0430 \u0440\u0435\u0432\u044c\u044e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0433\u0440\u0430\u043d\u0438\u0446: \u043d\u0435\u00a0\u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c\u00a0\u043b\u0438 \u0443\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0447\u0443\u0436\u0443\u044e \u0437\u0430\u044f\u0432\u043a\u0443, \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0430\u043b\u0430\u00a0\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u0430, \u043d\u0435\u00a0\u0434\u043e\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c\u00a0\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0437\u0430\u0434\u0430\u0447\u0443. \u041e\u0431\u0449\u0443\u044e \u043d\u043e\u0442\u0430\u0446\u0438\u044e \u044d\u0442\u0438\u0445 \u0438\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 UML.6. C4\u00a0Context: \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043c\u0435\u0441\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441\u00a0\u2014 \u0433\u0434\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448\u0430 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u00a0Context-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u0435\u0441\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041c\u044b\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0430\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.C4\u00a0Context: \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\u0420\u0438\u0441\u0443\u043d\u043e\u043a\u00a05. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u00a0\u0432\u043d\u0435\u0448\u043d\u044f\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c.Context \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c \u0441\u00a0\u043b\u044e\u0434\u044c\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u043e\u0447\u0435\u0440\u0447\u0435\u043d\u043d\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u044b\u0434\u0430\u0451\u0442&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-500869","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=500869"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500869\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}