{"id":308102,"date":"2020-08-06T15:01:09","date_gmt":"2020-08-06T15:01:09","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=308102"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2020-08-06T15:01:09","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=308102","title":{"rendered":"Alfa Battle \u2014 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e, \u0437\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0434\u0430\u0447"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/alfa\/blog\/513506\/\">\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u044e\u043d\u044f \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 Alfa Battle \u0434\u043b\u044f Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0432\u0438\u0434\u0435\u043e \u043e\u0442 \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432 \u0441\u0442\u0440\u0438\u043c-\u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u00ab\u041a\u043e\u0434\u0438\u043d\u0433 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e\u00bb (\u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a, \u0411\u0438\u043b\u0430\u0439\u043d, X5 Retail Group) \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  <a href=\"https:\/\/habr.com\/ru\/company\/alfa\/blog\/513506\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/oi\/ia\/_s\/oiia_slfnbcggldgu_dzk5-xgsy.png\"><\/a><\/p>\n<p>  \u041a \u0441\u043b\u043e\u0432\u0443, \u043e \u0437\u0430\u0434\u0430\u0447\u0430\u0445. \u0422\u043e \u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0438 \u043f\u0435\u0440\u0435\u043e\u0446\u0435\u043d\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0442\u043e \u043b\u0438 \u043f\u043e\u0433\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u0442\u0430\u043a \u0441\u0435\u0431\u0435, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0438\u0437 1498 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0438\u0437 50 \u0433\u043e\u0440\u043e\u0434\u043e\u0432 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 (5 \u0448\u0442\u0443\u043a) \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0435 \u0440\u0435\u0448\u0438\u043b \u043d\u0438\u043a\u0442\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0445 \u043f\u043e\u0440\u0435\u0448\u0430\u0442\u044c, \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0434\u0435\u0434\u043b\u0430\u0439\u043d\u043e\u0432. \u0422\u0435\u0445, \u043a\u0442\u043e \u043e\u0441\u0438\u043b\u0438\u0442, \u0441 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e <a href=\"https:\/\/job.alfabank.ru\/vacancy\/300?utm_source=habr&amp;utm_campaign=post\">\u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043c \u043a \u043d\u0430\u043c<\/a>. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0441\u0442\u0430 \u2014 \u043e \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430\u0439\u043c\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0411\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 IT \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0430 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u0430\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u0442\u0440\u0451\u0445 \u0433\u043e\u0440\u043e\u0434\u0430\u0445 \u2014 \u041c\u043e\u0441\u043a\u0432\u0430, \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433, \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433. \u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0434\u0435\u0439 \u0441\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b. \u0418 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u043e\u0442\u043a\u043b\u0438\u043a\u043d\u0443\u043b\u0441\u044f \u2014 \u0442\u0430\u043a\u0438\u0445 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u0435\u0435 1500 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e \u0444\u0438\u043d\u0430\u043b\u0430 \u0434\u043e\u0448\u043b\u0438 198 \u0440\u0435\u0431\u044f\u0442, \u043f\u043e\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0445 \u043b\u0443\u0447\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0414\u0430, \u0431\u044b\u043b\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e: \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043e\u0436\u0438\u0434\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438, \u0434\u0430 \u0438 \u0441\u0430\u043c \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u043d\u043b\u0430\u0439\u043d-\u0447\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442\u0430 \u0441\u043e \u0441\u0442\u0440\u0438\u043c\u043e\u043c \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438, \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u0430\u0436\u0435\u043c, \u0431\u044b\u043b \u043d\u0430\u043f\u0440\u044f\u0436\u0451\u043d\u043d\u044b\u043c. \u0412\u0441\u0451 \u0436\u0435, 5 \u0447\u0430\u0441\u043e\u0432 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043d\u0435 \u0440\u0435\u0442\u0440\u043e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438.<\/p>\n<p>  \u0418\u0442\u043e\u0433\u043e \u2014 \u0442\u0440\u0438 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u0435\u043d\u0435\u0436\u043d\u044b\u0439 \u043f\u0440\u0438\u0437, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043a \u043d\u0430\u043c \u0438 \u043a \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430\u043c \u0447\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442\u0430. \u0412\u043e\u0442 \u043e\u043d\u0438:<\/p>\n<p>  1 \u043c\u0435\u0441\u0442\u043e: \u041c\u0438\u0445\u0430\u0438\u043b \u0411\u0443\u0440\u0448\u0442\u0435\u0439\u043d, \u041c\u043e\u0441\u043a\u0432\u0430 (250 000 \u0440\u0443\u0431\u043b\u0435\u0439)<br \/>  2 \u043c\u0435\u0441\u0442\u043e: \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0418\u043b\u044e\u0448\u0435\u0447\u043a\u0438\u043d, \u041c\u043e\u0441\u043a\u0432\u0430 (150 000 \u0440\u0443\u0431\u043b\u0435\u0439)<br \/>  3 \u043c\u0435\u0441\u0442\u043e: \u041f\u0430\u0432\u0435\u043b \u041b\u044e\u0431\u0438\u043d\u0441\u043a\u0438\u0439, \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433 (100 000 \u0440\u0443\u0431\u043b\u0435\u0439)<\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>  <\/p>\n<h3>#1 \u0413\u0434\u0435 \u0436\u0435 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<h2>\u0423\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>  \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u0430\u0445 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0430.<br \/>  \u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c REST API \u043d\u0430 <a href=\"http:\/\/IP\">IP<\/a>:8080.<br \/>  \u0424\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c API \u2013 api.json.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a API \u0421\u0435\u0440\u0432\u0438\u0441 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u043e\u0432.<br \/>  \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: <a href=\"https:\/\/api.alfabank.ru\/node\/238\">api.alfabank.ru\/node\/238<\/a><br \/>  \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a API \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.<br \/>  \u0414\u0435\u0442\u0430\u043b\u0438: <a href=\"https:\/\/api.alfabank.ru\/start\">api.alfabank.ru\/start<\/a><\/p>\n<p>  * IP \u2014 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/>  * \u0412\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043b\u0435\u0436\u0430\u0442 \u0442\u0443\u0442: <a href=\"https:\/\/github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task1\">github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task1<\/a><\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>  <\/p>\n<h3>1. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u0430 \u043f\u043e deviceId<\/h3>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441: GET <a href=\"http:\/\/IP\">IP<\/a>:8080\/atms\/{deviceId}<br \/>  \u041e\u0442\u0432\u0435\u0442:<br \/>   \u2014 200 AtmResponse<br \/>   \u2014 404 ErrorResponse (\u0435\u0441\u043b\u0438 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d)<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8080\/atms\/153463 200 {   &quot;deviceId&quot;: 153463,   &quot;latitude&quot;: &quot;55.6610213&quot;,   &quot;longitude&quot;: &quot;37.6309405&quot;,   &quot;city&quot;: &quot;\u041c\u043e\u0441\u043a\u0432\u0430&quot;,   &quot;location&quot;: &quot;\u0421\u0442\u0430\u0440\u043e\u043a\u0430\u0448\u0438\u0440\u0441\u043a\u043e\u0435 \u0448., 4, \u043a\u043e\u0440\u043f. 10&quot;,   &quot;payments&quot;: false }<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8080\/atms\/1 404 {   \u201cstatus\u201d: \u201catm not found\u201d } <\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 18 \u0431\u0430\u043b\u043b\u043e\u0432.<\/p>\n<h3>2. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u0430 (\u043f\u043e-\u0433\u043b\u0443\u043f\u043e\u043c\u0443)<\/h3>\n<p>  \u041f\u043e-\u0433\u043b\u0443\u043f\u043e\u043c\u0443 \u2014 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0417\u0435\u043c\u043b\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0439.<br \/>  \u0410 \u0432<i> \u0417\u0430\u0434\u0430\u0447\u0435 3 \u0421\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043a\u0430\u0441\u0441\u0430!<\/i> \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e-\u0443\u043c\u043d\u043e\u043c\u0443.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 payments=true, \u0438\u0449\u0443\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u044b \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u043f\u043b\u0430\u0442\u044b \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0438 \u0443\u0441\u043b\u0443\u0433 (\u0441\u043c. \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a API \u0421\u0435\u0440\u0432\u0438\u0441 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u043e\u0432 ATMServices).<\/p>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441: GET <a href=\"http:\/\/IP\">IP<\/a>:8080\/atms\/nearest?latitude=string&amp;longitude=string&amp;payments=boolean<br \/>  \u041e\u0442\u0432\u0435\u0442: 200 AtmResponse<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8080\/atms\/nearest?latitude=55.66&amp;longitude=37.63 200 {   &quot;deviceId&quot;: 153463,   &quot;latitude&quot;: &quot;55.6610213&quot;,   &quot;longitude&quot;: &quot;37.6309405&quot;,   &quot;city&quot;: &quot;\u041c\u043e\u0441\u043a\u0432\u0430&quot;,   &quot;location&quot;: &quot;\u0421\u0442\u0430\u0440\u043e\u043a\u0430\u0448\u0438\u0440\u0441\u043a\u043e\u0435 \u0448., 4, \u043a\u043e\u0440\u043f. 10&quot;,   &quot;payments&quot;: false }<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8080\/atms\/nearest?latitude=55.66&amp;longitude=37.63&amp;payments=true 200 {   &quot;deviceId&quot;: 210612,   &quot;latitude&quot;: &quot;55.66442&quot;,   &quot;longitude&quot;: &quot;37.628051&quot;,   &quot;city&quot;: &quot;\u041c\u043e\u0441\u043a\u0432\u0430&quot;,   &quot;location&quot;: &quot;\u041a\u0430\u0448\u0438\u0440\u0441\u043a\u043e\u0435 \u0448\u043e\u0441\u0441\u0435, \u0434. 14&quot;,   &quot;payments&quot;: true } <\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 36 \u0431\u0430\u043b\u043b\u043e\u0432.<\/p>\n<h3>3. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043d\u044f\u0442\u0438\u044f \u0410\u043b\u044c\u0444\u0438\u043a\u043e\u0432<\/h3>\n<p>  \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0441\u043d\u044f\u0442\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0443\u0434\u043e-\u0432\u0430\u043b\u044e\u0442\u044b \u0410\u043b\u044c\u0444\u0438\u043a.<br \/>  \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u0441\u043d\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0410\u043b\u044c\u0444\u0438\u043a\u043e\u0432.<\/p>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441: GET <a href=\"http:\/\/IP\">IP<\/a>:8080\/atms\/nearest-with-alfik?latitude=string&amp;longitude=string&amp;alfik=int<br \/>  \u041e\u0442\u0432\u0435\u0442: 200 [AtmResponse]<\/p>\n<p>  \u0423\u0437\u043d\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0410\u043b\u044c\u0444\u0438\u043a\u043e\u0432 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 WebSocket STOMP \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430:<br \/>  <code>mkdir task1 ; cd task1<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task1\/docker-compose.yml<br \/>  docker-compose up -d<\/code><\/p>\n<p>  \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (\u0432 \u043f\u0430\u043f\u043a\u0435 task1):<br \/>  <code>docker-compose down<\/code><br \/>  \u0410\u0434\u0440\u0435\u0441: ws:\/\/IP:8100<br \/>  \u0417\u0430\u043f\u0440\u043e\u0441: { \u201cdeviceId\u201d: 0 }<br \/>  \u041e\u0442\u0432\u0435\u0442 \u043d\u0430 \/topic\/alfik: { \u201cdeviceId\u201d: 0, \u201calfik\u201d: 0 }<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"java\"> GET http:\/\/IP:8080\/atms\/nearest-with-alfik?latitude=55.66&amp;longitude=37.63&amp;alfik=300000 200 [{   &quot;deviceId&quot;: 153463,   &quot;latitude&quot;: &quot;55.6610213&quot;,   &quot;longitude&quot;: &quot;37.6309405&quot;,   &quot;city&quot;: &quot;\u041c\u043e\u0441\u043a\u0432\u0430&quot;,   &quot;location&quot;: &quot;\u0421\u0442\u0430\u0440\u043e\u043a\u0430\u0448\u0438\u0440\u0441\u043a\u043e\u0435 \u0448., 4, \u043a\u043e\u0440\u043f. 10&quot;,   &quot;payments&quot;: false }]<\/code><\/pre>\n<p>  (\u0442.\u043a. \u0432 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u0435 153463 \u2014 383026 \u0410\u043b\u044c\u0444\u0438\u043a\u043e\u0432)<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8080\/atms\/nearest-with-alfik?latitude=55.66&amp;longitude=37.63&amp;alfik=400000 200 [{   &quot;deviceId&quot;: 153463,   &quot;latitude&quot;: &quot;55.6610213&quot;,   &quot;longitude&quot;: &quot;37.6309405&quot;,   &quot;city&quot;: &quot;\u041c\u043e\u0441\u043a\u0432\u0430&quot;,   &quot;location&quot;: &quot;\u0421\u0442\u0430\u0440\u043e\u043a\u0430\u0448\u0438\u0440\u0441\u043a\u043e\u0435 \u0448., 4, \u043a\u043e\u0440\u043f. 10&quot;,   &quot;payments&quot;: false }, {   \u201cdeviceId&quot;: 153465,   &quot;latitude&quot;: &quot;55.6602801&quot;,   &quot;longitude&quot;: &quot;37.633823&quot;,   &quot;city&quot;: &quot;\u041c\u043e\u0441\u043a\u0432\u0430&quot;,   &quot;location&quot;:&quot; \u041a\u0430\u0448\u0438\u0440\u0441\u043a\u043e\u0435 \u0448., 18&quot;,   &quot;payments&quot;: false }]<\/code><\/pre>\n<p>  (\u0410\u043b\u044c\u0444\u0438\u043a\u043e\u0432 \u0443\u0436\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u043d\u0443\u0436\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442)  <\/div>\n<\/p><\/div>\n<h3>#2 \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439 \u044d\u0442\u043e<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<h2>\u0423\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>  \u0412 \u0442\u043e\u043f\u0438\u043a\u0435 Kafka RAW_PAYMENTS \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <br \/>  \u0411\u0440\u043e\u043a\u0435\u0440 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0432 docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e IP:29092 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 Kafka.<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430:<br \/>  <code>mkdir task2 ; cd task2<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task2\/data.txt<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task2\/docker-compose.yml<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task2\/start.sh<br \/>  bash start.sh<\/code><br \/>  \u0421\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0437\u0430\u043b\u044c\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u043e\u043f\u0438\u043a.<\/p>\n<p>  \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (\u0432 \u043f\u0430\u043f\u043a\u0435 task2):<br \/>  <code>docker-compose down<\/code><\/p>\n<p>  * IP \u2014 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/>  * \u0412\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043b\u0435\u0436\u0430\u0442 \u0442\u0443\u0442: <a href=\"https:\/\/github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task2\">github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task2<\/a><\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"java\">key1:{&quot;ref&quot;:&quot;U030306190000188&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;XAABAA&quot;, &quot;recipientId&quot;:&quot;XA3SZV&quot;, &quot;desc&quot;:&quot;\u041f\u043b\u0430\u0442\u0435\u0436 \u0437\u0430 \u0443\u0441\u043b\u0443\u0433\u0438&quot;, &quot;amount&quot;:10.0}<\/code><\/pre>\n<p>  , \u0433\u0434\u0435 key1 \u2014 \u043a\u043b\u044e\u0447 \u0437\u0430\u043f\u0438\u0441\u0438.<br \/>  \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0441\u043b\u0435 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0443.<\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443:  <\/p>\n<ul>\n<li>\u0412\u044b\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u043e\u043f\u0438\u043a\u0430 Kafka.<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c REST API \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0435 \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u043f\u043e\u0440\u0442\u0443 8081.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0435 \u0443\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0442\u043e\u043f\u0438\u043a\u0435 RAW_PAYMENTS. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u044b \u0438\u0437 \u0442\u043e\u043f\u0438\u043a\u0430.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Kafka \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u0438\u0442\u044b\u043c\u0438.<\/p>\n<p>  \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/h2>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0442\u043e\u043f\u0438\u043a\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043b\u0438\u0448\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0445 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043d\u043e\u0432\u043e (\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b, \u043b\u0438\u0431\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0443\u0447\u0435\u043b).<\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430:  <\/p>\n<ol>\n<li>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441 \u043d\u043e\u0432\u044b\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c consumer-group-id. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0441\u044c\u044e\u043c\u0435\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043f\u0438\u043a \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430.<\/li>\n<li>\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u043a\u0438\u043d\u0443\u0442\u044c \u043e\u0444\u0444\u0441\u0435\u0442\u044b \u0434\u043b\u044f \u0442\u043e\u043f\u0438\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 consumer-group. \u041b\u0438\u0431\u043e, \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0438\u043d\u0443\u0442\u044c \u0432\u0441\u0435 \u043e\u0444\u0444\u0441\u0435\u0442\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0433\u0440\u0443\u043f\u043f, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439<\/li>\n<\/ol>\n<p>  <code>docker exec -i broker kafka-consumer-groups --bootstrap-server broker:9092 --all-groups --all-topics --reset-offsets --to-earliest --execute<\/code><\/p>\n<p>  \u0420\u0435\u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043a\u0430\u0444\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c start.sh, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u043d\u0430\u0447\u0430\u043b\u0435. \u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u044c\u044e\u043c\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435<\/p>\n<h2>\u041f\u0440\u0438\u043c\u0435\u0440 Swagger-\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/h2>\n<p>  Swagger-\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 api-swagger.json \u0432 \u043f\u0430\u043f\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0437\u0430\u0434\u0430\u043d\u0438\u044f.<\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u043e\u043f\u0438\u043a\u0435:<\/p>\n<pre><code class=\"java\">key1:{&quot;ref&quot;:&quot;ref1&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_1&quot;, &quot;amount&quot;:10.0} key2:{&quot;ref&quot;:&quot;ref2&quot;, &quot;categoryId&quot;:2, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_2&quot;, &quot;amount&quot;:350.56} key3:{&quot;ref&quot;:&quot;ref3&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_3&quot;, &quot;amount&quot;:700.0} key4:{&quot;ref&quot;:&quot;ref4&quot;, &quot;categoryId&quot;:3, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_4&quot;, &quot;amount&quot;:5.99} key5:{&quot;ref&quot;:&quot;ref5&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_5&quot;, &quot;amount&quot;:10.0} key6:{&quot;ref&quot;:&quot;ref6&quot;, &quot;categoryId&quot;:2, &quot;userId&quot;:&quot;User_2&quot;, &quot;recipientId&quot;:&quot;User_3&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_6&quot;, &quot;amount&quot;:350.56} key7:{&quot;ref&quot;:&quot;ref7&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_7&quot;, &quot;amount&quot;:890.0} key8:{&quot;ref&quot;:&quot;ref8&quot;, &quot;categoryId&quot;:3, &quot;userId&quot;:&quot;User_3&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_8&quot;, &quot;amount&quot;:35.99} key9:{&quot;ref&quot;:&quot;ref9&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_9&quot;, &quot;amount&quot;:890.0} key10:{&quot;ref&quot;:&quot;ref10&quot;, &quot;categoryId&quot;:3, &quot;userId&quot;:&quot;User_3&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_10&quot;, &quot;amount&quot;:35.9910} key11:{&quot;ref&quot;:&quot;ref11&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_11&quot;, &quot;amount&quot;:10.0} key12:{&quot;ref&quot;:&quot;ref12&quot;, &quot;categoryId&quot;:2, &quot;userId&quot;:&quot;User_2&quot;, &quot;recipientId&quot;:&quot;User_3&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_12&quot;, &quot;amount&quot;:350.56} key13:{&quot;ref&quot;:&quot;ref13&quot;, &quot;categoryId&quot;:1, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_2&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_13&quot;, &quot;amount&quot;:10.0} key14:{&quot;ref&quot;:&quot;ref14&quot;, &quot;categoryId&quot;:2, &quot;userId&quot;:&quot;User_2&quot;, &quot;recipientId&quot;:&quot;User_3&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_14&quot;, &quot;amount&quot;:350.56} key15:{&quot;ref&quot;:&quot;ref15&quot;, &quot;categoryId&quot;:4, &quot;userId&quot;:&quot;User_1&quot;, &quot;recipientId&quot;:&quot;User_4&quot;, &quot;desc&quot;:&quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436_15&quot;, &quot;amount&quot;:15.00}<\/code><\/pre>\n<h3>1. \u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c<\/h3>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u043f\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c (\u043f\u043e\u043b\u0435 categoryId).<br \/>  \u041f\u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0438 \u043e\u0431\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c.<\/p>\n<h4>GET <a href=\"http:\/\/IP\">IP<\/a>:8081\/admin\/health<\/h4>\n<p>  200<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0432\u0435\u0442\u0430:  <\/p>\n<pre><code class=\"java\">{&quot;status&quot;:&quot;UP&quot;}  &lt;h4&gt;GET http:\/\/IP:8081\/analytic&lt;\/h4&gt; 200<\/code><\/pre>\n<p>  \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0432\u0435\u0442\u0430:  <\/p>\n<pre><code class=\"java\">[   {     &quot;userId&quot;: &quot;User_3&quot;,     &quot;totalSum&quot;: 71.981,     &quot;analyticInfo&quot;: {       &quot;3&quot;: {         &quot;min&quot;: 35.99,         &quot;max&quot;: 35.991,         &quot;sum&quot;: 71.981       }     }   },   {     &quot;userId&quot;: &quot;User_2&quot;,     &quot;totalSum&quot;: 1051.68,     &quot;analyticInfo&quot;: {       &quot;2&quot;: {         &quot;min&quot;: 350.56,         &quot;max&quot;: 350.56,         &quot;sum&quot;: 1051.68       }     }   },   {     &quot;userId&quot;: &quot;User_1&quot;,     &quot;totalSum&quot;: 2891.55,     &quot;analyticInfo&quot;: {       &quot;1&quot;: {         &quot;min&quot;: 10,         &quot;max&quot;: 890,         &quot;sum&quot;: 2520       },       &quot;2&quot;: {         &quot;min&quot;: 350.56,         &quot;max&quot;: 350.56,         &quot;sum&quot;: 350.56       },       &quot;3&quot;: {         &quot;min&quot;: 5.99,         &quot;max&quot;: 5.99,         &quot;sum&quot;: 5.99       },       &quot;4&quot;: {         &quot;min&quot;: 15,         &quot;max&quot;: 15,         &quot;sum&quot;: 15       }     }   } ]<\/code><\/pre>\n<p>  \u041a\u043b\u044e\u0447\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b analyticInfo \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f Id \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439.<\/p>\n<h4>GET <a href=\"http:\/\/IP\">IP<\/a>:8081\/analytic\/{userId}<\/h4>\n<p>   \u2014 200<br \/>   \u2014 404 + \u0442\u0435\u043b\u043e {\u00abstatus\u00bb:\u201duser not found&quot;} (\u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d)<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430:  <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8081\/analytic\/User_1<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0432\u0435\u0442\u0430:<\/p>\n<pre><code class=\"java\">{   &quot;userId&quot;: &quot;User_1&quot;,   &quot;totalSum&quot;: 2891.55,   &quot;analyticInfo&quot;: {     &quot;1&quot;: {       &quot;min&quot;: 10,       &quot;max&quot;: 890,       &quot;sum&quot;: 2520     },     &quot;2&quot;: {       &quot;min&quot;: 350.56,       &quot;max&quot;: 350.56,       &quot;sum&quot;: 350.56     },     &quot;3&quot;: {       &quot;min&quot;: 5.99,       &quot;max&quot;: 5.99,       &quot;sum&quot;: 5.99     },     &quot;4&quot;: {       &quot;min&quot;: 15,       &quot;max&quot;: 15,       &quot;sum&quot;: 15     }   } }<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 40 \u0431\u0430\u043b\u043b\u043e\u0432. <\/p>\n<h3>2. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430<\/h3>\n<p>  \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430:  <\/p>\n<ul>\n<li>\u0441\u0430\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0442\u0440\u0430\u0442<\/li>\n<li>\u0441\u0430\u043c\u0430\u044f \u0440\u0435\u0434\u043a\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0442\u0440\u0430\u0442<\/li>\n<li>\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u0443\u043c\u043c\u043e\u0439<\/li>\n<li>\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0441 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0443\u043c\u043c\u043e\u0439<\/li>\n<\/ul>\n<h4>GET <a href=\"http:\/\/IP\">IP<\/a>:8081\/analytic\/{userId}\/stats<\/h4>\n<p>   \u2014 200<br \/>   \u2014 404 + \u0442\u0435\u043b\u043e {\u00abstatus\u00bb:\u201duser not found&quot;} (\u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d)<br \/>  \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430:  <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8081\/analytic\/User_1\/stats \u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0432\u0435\u0442\u0430: {   &quot;oftenCategoryId&quot;: 1,   &quot;rareCategoryId&quot;: 2,   &quot;maxAmountCategoryId&quot;: 1,   &quot;minAmountCategoryId&quot;: 3 } <\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 60 \u0431\u0430\u043b\u043b\u043e\u0432<\/p>\n<h3>3. \u0428\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439<\/h3>\n<p>  \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>  \u041f\u043b\u0430\u0442\u0435\u0436 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u043c \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c:  <\/p>\n<ul>\n<li>\u0423 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f, \u043e\u0442 \u043a\u043e\u0433\u043e \u0438 \u043a\u043e\u043c\u0443 \u043f\u043b\u0430\u0442\u0435\u0436 \u0431\u044b\u043b \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d (recipientId \u0438 userId \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e)<\/li>\n<li>\u0422\u0430\u043a\u0438\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u0440\u0438 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u0430<\/li>\n<\/ul>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/p>\n<h4>GET <a href=\"http:\/\/IP\">IP<\/a>:8081\/analytic\/{userId}\/templates<\/h4>\n<p>   \u2014 200<br \/>   \u2014 404 + \u0442\u0435\u043b\u043e {\u00abstatus\u00bb:\u201duser not found&quot;} (\u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d)<br \/>  \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430:  <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8081\/analytic\/User_1\/templates \u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0432\u0435\u0442\u0430: [   {     &quot;recipientId&quot;: &quot;User_2&quot;,     &quot;categoryId&quot;: 1,     &quot;amount&quot;: 10   } ]<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<h3>#3 \u0421\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043a\u0430\u0441\u0441\u0430<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<h2>\u0423\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>  \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431 \u043e\u0444\u0438\u0441\u0430\u0445 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0430 \u0438 \u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<br \/>  \u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c REST API \u043d\u0430 <a href=\"http:\/\/IP\">IP<\/a>:8082.<br \/>  \u0424\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c API \u2013 api.json.<br \/>  \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u0435 \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u0443\u043c\u0435\u0435\u0442\u0435 \u0433\u0443\u0433\u043b\u0438\u0442\u044c, \u0434\u0430\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u0438, \u0447\u0442\u043e\u0431\u044b \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0442\u0430\u043a \u043d\u0435\u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432 PostgreSQL.<br \/>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 PostgreSQL:<br \/>  <code>mkdir task3 ; cd task3<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task3\/docker-compose.yml<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task3\/Dockerfile<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task3\/init_db.sql<br \/>  docker-compose up -d<\/code><br \/>  \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (\u0432 \u043f\u0430\u043f\u043a\u0435 task3):<br \/>  <code>docker-compose down<\/code><br \/>  \u0410\u0434\u0440\u0435\u0441: IP:5432<br \/>  DB: alfa_battle<br \/>  Auth: alfa_battle \/ qwe123<\/p>\n<p>  * IP \u2014 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/>  * \u0412\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043b\u0435\u0436\u0430\u0442 \u0442\u0443\u0442: <a href=\"https:\/\/github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task3\">github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task3<\/a><\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>  <\/p>\n<h3>1. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0444\u0438\u0441\u0430 \u043f\u043e id<\/h3>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441: GET <a href=\"http:\/\/IP\">IP<\/a>:8082\/branches\/{id}<br \/>  \u041e\u0442\u0432\u0435\u0442:<br \/>   \u2014 200 Branches<br \/>   \u2014 404 ErrorResponse (\u0435\u0441\u043b\u0438 \u043e\u0444\u0438\u0441 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d)<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8082\/branches\/612 200 {   &quot;id&quot;: 612,   &quot;title&quot;: &quot;\u041c\u044f\u0441\u043d\u0438\u0446\u043a\u0438\u0439&quot;,   &quot;lon&quot;: 37.6329,   &quot;lat&quot;: 55.7621,   &quot;address&quot;: &quot;\u041c\u044f\u0441\u043d\u0438\u0446\u043a\u0430\u044f \u0443\u043b., 13, \u0441\u0442\u0440. 1&quot; }<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"java\"> GET http:\/\/IP:8082\/branches\/1 404 {   \u201cstatus\u201d: \u201cbranch not found\u201d }<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 8 \u0431\u0430\u043b\u043b\u043e\u0432.<\/p>\n<h3>2. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043e\u0444\u0438\u0441\u0430 (\u043f\u043e-\u0443\u043c\u043d\u043e\u043c\u0443)<\/h3>\n<p>  \u041f\u043e-\u0443\u043c\u043d\u043e\u043c\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0417\u0435\u043c\u043b\u044f \u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u0430\u044f, \u043a\u0430\u043a \u0432 \u0417\u0430\u0434\u0430\u0447\u0435 1.<\/p>\n<p>  <a href=\"https:\/\/medium.com\/@congyuzhou\/%D1%80%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-%D0%B4%D0%B2%D1%83%D0%BC%D1%8F-%D1%82%D0%BE%D1%87%D0%BA%D0%B0%D0%BC%D0%B8-%D0%BD%D0%B0-%D0%BF%D0%BE%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%B7%D0%B5%D0%BC%D0%BB%D0%B8-a398352bfbde\">\u042d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e<\/a>.<\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0430\u043c\u044b\u0439 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u043e\u0444\u0438\u0441 \u043a \u0442\u043e\u0447\u043a\u0435, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Latitude Longitude.<\/p>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441: GET <a href=\"http:\/\/IP\">IP<\/a>:8082\/branches\/lat=string&amp;lon=string<br \/>  \u041e\u0442\u0432\u0435\u0442: 200 Branches<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8082\/branches\/lat=55.773284&amp;lon=37.624125 200 {   &quot;id&quot;: 631,   &quot;title&quot;: &quot;\u0426\u0432\u0435\u0442\u043d\u043e\u0439 \u0411\u0443\u043b\u044c\u0432\u0430\u0440&quot;,   &quot;lon&quot;: 37.6227,   &quot;lat&quot;: 55.7695,   &quot;address&quot;: &quot;\u0426\u0432\u0435\u0442\u043d\u043e\u0439 \u0431\u0443\u043b., 16\/1&quot;,   &quot;distance&quot;: 430 } <\/code><\/pre>\n<p>  <b>Distance<\/b> \u2014 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u0440\u0430\u0445, \u043f\u0440\u0438 \u0434\u0440\u043e\u0431\u043d\u044b\u0445 \u0447\u0438\u0441\u043b\u0430\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u0442\u044c.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 28 \u0431\u0430\u043b\u043b\u043e\u0432.<\/p>\n<h3>3. \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0444\u0438\u0441\u0430<\/h3>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u0437 \u043e\u0444\u0438\u0441\u043e\u0432 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0447\u0430\u0441, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043e\u0436\u0438\u0434\u0430\u044f, \u043f\u043e\u043a\u0430 \u0435\u0433\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0430\u0442.<\/p>\n<p>  \u041f\u0440\u0438 \u0440\u0430\u0441\u0447\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043d\u0443.<\/p>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441: GET <a href=\"http:\/\/IP\">IP<\/a>:8082\/branches\/{id}\/predict?dayOfWeek=int&amp;hourOfDay=int<br \/>  \u041e\u0442\u0432\u0435\u0442:<br \/>   \u2014 200 BranchesWithPredicting<br \/>   \u2014 404 ErrorResponse (\u0435\u0441\u043b\u0438 \u043e\u0444\u0438\u0441 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d)<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8082\/branches\/612\/predict?dayOfWeek=1&amp;hourOfDay=14 200 {   &quot;id&quot;: 612,   &quot;title&quot;: &quot;\u041c\u044f\u0441\u043d\u0438\u0446\u043a\u0438\u0439&quot;,   &quot;lon&quot;: 37.6329,   &quot;lat&quot;: 55.7621,   &quot;address&quot;: &quot;\u041c\u044f\u0441\u043d\u0438\u0446\u043a\u0430\u044f \u0443\u043b., 13, \u0441\u0442\u0440. 1&quot;,   &quot;dayOfWeek&quot;: 1,   &quot;hourOfDay&quot;: 14,   &quot;predicting&quot;: 117 }<\/code><\/pre>\n<p>  <b>dayOfWeek<\/b> \u2014 \u0447\u0438\u0441\u043b\u043e, \u0433\u0434\u0435 \u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a \u044d\u0442\u043e 1, \u0430 \u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435 7<br \/>  <b>hourOfDay<\/b> \u2014 \u0447\u0438\u0441\u043b\u043e \u043e\u0442 0 \u0434\u043e 23<br \/>  <b>Predicting<\/b> \u2014 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0434\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0442\u044c.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8082\/branches\/1\/predict?dayOfWeek=1&amp;hourOfDay=14 404 {   \u201cstatus\u201d: \u201cbranch not found\u201d } <\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0434\u0438\u0430\u043d\u0443.<br \/>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043c\u043e\u0447\u044c, <b>apache-commons-math3<\/b>  <\/div>\n<\/p><\/div>\n<h3>#4 \u042d\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u043a\u0440\u0435\u0434\u0438\u0442\u044b<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<h2>\u0423\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>  \u0415\u0441\u0442\u044c 1 \u0441\u0442\u0443\u043b \u0438 2 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430 JSON:<\/p>\n<p>  person.json \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445, \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0438\u0436\u0435:  <\/p>\n<pre><code class=\"java\">{      &quot;ID&quot;:&quot;29&quot;,      &quot;DocId&quot;:&quot;702821510&quot;,      &quot;FIO&quot;:&quot;Phoebe Whitehouse&quot;,      &quot;Birthday&quot;:&quot;7\/12\/1971&quot;,      &quot;Salary&quot;:&quot;201.02&quot;,      &quot;Gender&quot;:&quot;F&quot; }<\/code><\/pre>\n<p>  , \u0433\u0434\u0435:<br \/>  ID \u2014 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043a\u043b\u0438\u0435\u043d\u0442\u0430,<br \/>  DocId \u2014 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 (\u0444\u043e\u0440\u043c\u0430\u0442 9 \u0446\u0438\u0444\u0440)<br \/>  FIO \u2014 \u0424\u0418\u041e<br \/>  Birthday \u2014 \u0434\u0430\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 MM\/dd\/yyyy<br \/>  Salary \u2014 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0441\u043e\u0442\u044b\u0445, \u0442.\u0435. 201.02 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 20102 \u0440\u0443\u0431.<br \/>  Gender \u2014 \u043f\u043e\u043b<\/p>\n<p>  loans.json \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445, \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0438\u0436\u0435:  <\/p>\n<pre><code class=\"java\">{      &quot;Loan&quot;:&quot;631553&quot;,      &quot;PersonId&quot;:&quot;68&quot;,      &quot;Amount&quot;:&quot;201.02&quot;,      &quot;StartDate&quot;:&quot;6\/1\/2019&quot;,      &quot;Period&quot;:&quot;1&quot; }<\/code><\/pre>\n<p>  , \u0433\u0434\u0435:<br \/>  Loan \u2014 \u043d\u043e\u043c\u0435\u0440 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430,<br \/>  PersonId \u2014 \u043d\u043e\u043c\u0435\u0440 \u043a\u043b\u0438\u0435\u043d\u0442\u0430<br \/>  Amount \u2014 \u0441\u0443\u043c\u043c\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u043e\u0442\u044b\u0445, \u0442.\u0435. 201.02 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 20 102<br \/>  StartDate \u2014 \u0434\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 MM\/dd\/yyyy<br \/>  Period \u2014 \u0441\u0440\u043e\u043a \u043a\u0440\u0435\u0434\u0438\u0442\u0430 \u0432 \u0433\u043e\u0434\u0430\u0445<\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>  \u0418\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 ElasticSearch \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b.<br \/>  \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c REST-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 ElasticSearch, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0430 <a href=\"http:\/\/IP\">IP<\/a>:8083<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 ElasticSearch:<br \/>  <code>mkdir task4 ; cd task4<br \/>  wget https:\/\/raw.githubusercontent.com\/evgenyshiryaev\/alfa-battle-resources\/master\/task4\/docker-compose.yml<br \/>  docker-compose up -d<\/code><br \/>  ElasticSearch \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 IP:9200<\/p>\n<p>  \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (\u0432 \u043f\u0430\u043f\u043a\u0435 task4):<br \/>  <code>docker-compose down<\/code><\/p>\n<p>  * IP \u2014 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/>  * \u0412\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043b\u0435\u0436\u0430\u0442 \u0442\u0443\u0442: <a href=\"https:\/\/github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task4\">github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task4<\/a><\/p>\n<h2>\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 ElasticSearch \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<p>  <b>persons<\/b>  <\/p>\n<ul>\n<li>Birthday \u2014 \u0434\u043e\u043b\u0436\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 1945-05-03<\/li>\n<li>Salary \u2014 \u0434\u043e\u043b\u0436\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0443\u0431\u043b\u044f\u0445, \u0430 \u043d\u0435 \u0432 \u0441\u043e\u0442\u044b\u0445<\/li>\n<\/ul>\n<p>  <b>loans<\/b>  <\/p>\n<ul>\n<li>PersonId \u2014 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043b\u044f, \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0435 Document, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c DocId \u0438\u0437 Persons.<\/li>\n<li>Amount \u2014 \u0441\u0443\u043c\u043c\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432 \u0440\u0443\u0431\u043b\u044f\u0445, \u0430 \u043d\u0435 \u0432 \u0441\u043e\u0442\u044b\u0445.<\/li>\n<li>StartDate \u2014 \u0434\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u0430, \u0434\u043e\u043b\u0436\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 1945-05-03<\/li>\n<li>Period \u2014 \u0441\u0440\u043e\u043a \u043a\u0440\u0435\u0434\u0438\u0442\u0430, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u043c\u0435\u0441\u044f\u0446\u0430\u0445<\/li>\n<\/ul>\n<h2>\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h2>\n<p>  <\/p>\n<h3>\u0425\u0435\u043b\u0441\u0447\u0435\u043a<\/h3>\n<p>  GET <a href=\"http:\/\/IP\">IP<\/a>:8083\/admin\/health<br \/>  200<br \/>  {\u00abstatus\u00bb:\u00abUP\u00bb}<\/p>\n<h3>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432<\/h3>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 ElasicSearch.<\/p>\n<p>  POST <a href=\"http:\/\/IP\">IP<\/a>:8083\/loans\/loadPersons<br \/>  200<br \/>  {\u00abstatus\u00bb:\u00abOK\u00bb}  <\/p>\n<h4>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0432<\/h4>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 ElasicSearch.<br \/>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c Document, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 ElasticSearch \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/p>\n<p>  POST <a href=\"http:\/\/IP\">IP<\/a>:8083\/loans\/loadLoans<br \/>  200<br \/>  {\u00abstatus\u00bb:\u00abOK\u00bb}<\/p>\n<h3>\u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0435<\/h3>\n<p>  <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8083\/loans\/getPerson\/855406656\/ 200 {    &quot;docid&quot;: &quot;855406656&quot;,    &quot;fio&quot;: &quot;Celina Jackson&quot;,    &quot;birthday&quot;: &quot;1961-05-22&quot;,    &quot;salary&quot;: 69106.0,    &quot;gender&quot;: &quot;F&quot; }<\/code><\/pre>\n<p>  400 (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430)<br \/>  {<br \/>   \u00abstatus\u00bb: \u00abperson not found\u00bb<br \/>  }<\/p>\n<h3>\u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0435<\/h3>\n<p>  <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8083\/loans\/getLoan\/692826\/ 200 {    &quot;loan&quot;: &quot;692826&quot;,    &quot;amount&quot;: 448900,    &quot;document&quot;: &quot;027665876&quot;,    &quot;startdate&quot;: &quot;2017-01-16&quot;,    &quot;period&quot;: 48 } <\/code><\/pre>\n<p>  400 (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430)  <\/p>\n<pre><code class=\"java\">{    &quot;status&quot;: &quot;loan not found&quot; }<\/code><\/pre>\n<h3>\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/h3>\n<p>  \u0412\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0441\u0435\u0445 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u2014 Document.<\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8083\/loans\/creditHistory\/737767072\/ 200 {    &quot;countLoan&quot;: 4,    &quot;sumAmountLoans&quot;: 1058400.0,    &quot;loans&quot;: [        {            &quot;loan&quot;: &quot;434224&quot;,            &quot;amount&quot;: 7100,            &quot;document&quot;: &quot;737767072&quot;,            &quot;startdate&quot;: &quot;2019-09-18&quot;,            &quot;period&quot;: 12        },        {            &quot;loan&quot;: &quot;917105&quot;,            &quot;amount&quot;: 283600,            &quot;document&quot;: &quot;737767072&quot;,            &quot;startdate&quot;: &quot;2019-12-22&quot;,            &quot;period&quot;: 12        },        {            &quot;loan&quot;: &quot;692147&quot;,            &quot;amount&quot;: 300800,            &quot;document&quot;: &quot;737767072&quot;,            &quot;startdate&quot;: &quot;2016-08-01&quot;,            &quot;period&quot;: 24        },        {            &quot;loan&quot;: &quot;145020&quot;,            &quot;amount&quot;: 466900,            &quot;document&quot;: &quot;737767072&quot;,            &quot;startdate&quot;: &quot;2017-01-16&quot;,            &quot;period&quot;: 36        }    ] }<\/code><\/pre>\n<p>  , \u0433\u0434\u0435:<br \/>  countLoan \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0432<br \/>  sumAmountLoans \u2014 \u0441\u0443\u043c\u043c\u0430 \u0432\u0441\u0435\u0445 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0432<br \/>  loans \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0432<\/p>\n<h3>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430<\/h3>\n<p>  <\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8083\/loans\/creditClosed 200 [    {        &quot;loan&quot;: &quot;222398&quot;,        &quot;amount&quot;: 265400,        &quot;document&quot;: &quot;074658188&quot;,        &quot;startdate&quot;: &quot;2017-09-22&quot;,        &quot;period&quot;: 12    },           &quot;loan&quot;: &quot;826942&quot;,        &quot;amount&quot;: 329400,        &quot;document&quot;: &quot;788117788&quot;,        &quot;startdate&quot;: &quot;2016-01-29&quot;,        &quot;period&quot;: 48    }, ... ]<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0438 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430\u043c<\/h3>\n<p>  \u041e\u0442\u0432\u0435\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e \u0434\u0430\u0442\u0435 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e (\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0438\u0437 ElasticSearch).<\/p>\n<pre><code class=\"java\">GET http:\/\/IP:8083\/loans\/loansSortByPersonBirthday 200 [    {        &quot;id&quot;: null,        &quot;docid&quot;: &quot;840704451&quot;,        &quot;fio&quot;: &quot;John Isaac&quot;,        &quot;birthday&quot;: &quot;19.08.1989&quot;,        &quot;salary&quot;: 58295.0,        &quot;gender&quot;: &quot;M&quot;,        &quot;loans&quot;: [            {                &quot;loan&quot;: &quot;771916&quot;,                &quot;amount&quot;: 337600,                &quot;document&quot;: &quot;840704451&quot;,                &quot;startdate&quot;: &quot;2019-11-09&quot;,                &quot;period&quot;: 48            },            {                &quot;loan&quot;: &quot;504544&quot;,                &quot;amount&quot;: 358900,                &quot;document&quot;: &quot;840704451&quot;,                &quot;startdate&quot;: &quot;2018-06-10&quot;,                &quot;period&quot;: 36            },            {                &quot;loan&quot;: &quot;699247&quot;,                &quot;amount&quot;: 464400,                &quot;document&quot;: &quot;840704451&quot;,                &quot;startdate&quot;: &quot;2018-10-30&quot;,                &quot;period&quot;: 36            },            {                &quot;loan&quot;: &quot;783101&quot;,                &quot;amount&quot;: 139300,                &quot;document&quot;: &quot;840704451&quot;,                &quot;startdate&quot;: &quot;2017-02-19&quot;,                &quot;period&quot;: 36            }        ]    },    {        &quot;id&quot;: null,        &quot;docid&quot;: &quot;023665566&quot;,        &quot;fio&quot;: &quot;Denny Tanner&quot;,        &quot;birthday&quot;: &quot;25.03.1989&quot;,        &quot;salary&quot;: 80713.0,        &quot;gender&quot;: &quot;M&quot;,        &quot;loans&quot;: [            {                &quot;loan&quot;: &quot;631553&quot;,                &quot;amount&quot;: 403000,                &quot;document&quot;: &quot;023665566&quot;,                &quot;startdate&quot;: &quot;2019-06-01&quot;,                &quot;period&quot;: 12            },            {                &quot;loan&quot;: &quot;598452&quot;,                &quot;amount&quot;: 198500,                &quot;document&quot;: &quot;023665566&quot;,                &quot;startdate&quot;: &quot;2015-09-28&quot;,                &quot;period&quot;: 36            },            {                &quot;loan&quot;: &quot;151915&quot;,                &quot;amount&quot;: 13600,                &quot;document&quot;: &quot;023665566&quot;,                &quot;startdate&quot;: &quot;2019-06-15&quot;,                &quot;period&quot;: 12            },            {                &quot;loan&quot;: &quot;368342&quot;,                &quot;amount&quot;: 350500,                &quot;document&quot;: &quot;023665566&quot;,                &quot;startdate&quot;: &quot;2017-02-06&quot;,                &quot;period&quot;: 48            },            {                &quot;loan&quot;: &quot;633056&quot;,                &quot;amount&quot;: 482900,                &quot;document&quot;: &quot;023665566&quot;,                &quot;startdate&quot;: &quot;2016-07-01&quot;,                &quot;period&quot;: 12            }        ]    }, ... ]<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<h3>#5 \u041d\u0430 \u043f\u0440\u043e\u043c\u043e\u0438\u0433\u043b\u0435<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<h2>\u0423\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f.<br \/>  \u0421\u0443\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0435 \u0446\u0435\u043d \u043d\u0430 \u0442\u043e\u0432\u0430\u0440\u044b \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0439 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u0447\u0435\u043a\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u043a\u0438\u0434\u043a\u0438.<br \/>  \u0421\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430\u043c\u0438.<\/p>\n<p>  \u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c REST API \u043d\u0430 <a href=\"http:\/\/IP\">IP<\/a>:8084 \u0441 \u0434\u0432\u0443\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438:  <\/p>\n<ul>\n<li><b>\/promo<\/b> \u2013 \u0432 \u0442\u0435\u043b\u0435 POST \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0438 (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u043a \u0430\u043a\u0446\u0438\u0438 \u0421\u0435\u0442\u0438, \u0442\u0430\u043a \u0438 \u0430\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432). \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432.<\/li>\n<li><b>\/receipt<\/b> \u2013 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0446\u0435\u043d, \u043d\u0430 \u0432\u0445\u043e\u0434 \u0432 \u0442\u0435\u043b\u0435 POST \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 id \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430, \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u043c\u044b\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u043a\u0438\u0434\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u0440\u0442\u0430 \u043b\u043e\u044f\u043b\u044c\u043d\u043e\u0441\u0442\u0438), \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c\u0438 \u0446\u0435\u043d\u0430\u043c\u0438 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441\u043a\u0438\u0434\u043a\u0438, \u0441\u0443\u043c\u043c\u0430 \u0447\u0435\u043a\u0430 \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043a\u0438\u0434\u043a\u0438.<\/li>\n<\/ul>\n<p>  \u041f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \/promo, \u043f\u043e\u0442\u043e\u043c \/receipt.<\/p>\n<p>  * IP \u2014 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<br \/>  * \u0412\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043b\u0435\u0436\u0430\u0442 \u0442\u0443\u0442: <a href=\"https:\/\/github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task5\">github.com\/evgenyshiryaev\/alfa-battle-resources\/tree\/master\/task5<\/a><\/p>\n<h2>\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/h2>\n<p>  <\/p>\n<ol>\n<li>CSV \u0444\u0430\u0439\u043b\u044b \u0441 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:<\/li>\n<li>\u0424\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c API \u2013 api.yml<\/li>\n<\/ol>\n<h2>\u041e\u0431\u0449\u0438\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f<\/h2>\n<p>  \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0435\u0434\u0438\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0438 \u0441\u0435\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0438, \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0448\u0435.<br \/>  \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0447\u0435\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0439, \u0442\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u044f \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c. <br \/>  \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0447\u0435\u043a\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0439 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0443 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0430\u0451\u0442 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044e \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u043a\u0438\u0434\u043a\u0443.<\/p>\n<p>  \u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u043e 2 \u0437\u043d\u0430\u043a\u043e\u0432 \u0441 RoundingMode.HALF_EVEN.<\/p>\n<p>  !!! \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0447\u0435\u043a\u0430 \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u0430\u044f \u0441\u043a\u0438\u0434\u043a\u0430, \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 code review \u0436\u044e\u0440\u0438!!!<\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>  <\/p>\n<h3>1. \u0411\u0435\u0437 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0439<\/h3>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440:<br \/>  \u0417\u0430\u043f\u0440\u043e\u0441: POST <a href=\"http:\/\/IP\">IP<\/a>:8084\/promo<br \/>  {}<br \/>  \u041e\u0442\u0432\u0435\u0442: 200<br \/>  \u0417\u0430\u043f\u0440\u043e\u0441: POST <a href=\"http:\/\/IP\">IP<\/a>:8084\/receipt<br \/>  {<br \/>   \u00abshopId\u00bb: 1,<br \/>   \u00abloyaltyCard\u00bb: false,<br \/>   \u00abpositions\u00bb:<br \/>   [<br \/>   {<br \/>   \u00abitemId\u00bb: \u00ab3432166\u00bb,<br \/>   \u00abquantity\u00bb: 1<br \/>   }<br \/>   ]<br \/>  }<br \/>  \u041e\u0442\u0432\u0435\u0442: 200<br \/>  {<br \/>   \u00abtotal\u00bb: 141.99,<br \/>   \u00abdiscount\u00bb: 0.00,<br \/>   \u00abpositions\u00bb:<br \/>   [<br \/>   {<br \/>   \u00abid\u00bb: \u00ab3432166\u00bb,<br \/>   \u00abname\u00bb: \u00ab\u041b\u0423\u041a.\u0416\u0438\u0434.\u0410\u041d\u0422\u0418\u0424.G11 Green \u043d\u0435\u0437.1\u043a\u0433\u00bb,<br \/>   \u00abprice\u00bb: 141.99,<br \/>   \u00abregularPrice\u00bb: 141.99<br \/>   }<br \/>   ]<br \/>  }<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 8 \u0431\u0430\u043b\u043b\u043e\u0432.<\/p>\n<h3>2. \u041f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u044f \u041a\u0430\u0440\u0442\u0430 \u041b\u043e\u044f\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>  \u0412 \/promo \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0439 \u0442\u0438\u043f\u0430 \u201c\u0441\u043a\u0438\u0434\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u0430\u0440\u0442\u044b \u043b\u043e\u044f\u043b\u044c\u043d\u043e\u0441\u0442\u0438\u201d (LoyaltyCardRule). \u0410\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432.<\/p>\n<p>  \u0421\u043a\u0438\u0434\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043d\u0430 \u043f\u043e\u0434\u0441\u0447\u0435\u0442 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \/receipt \u0431\u0443\u0434\u0435\u0442 loyaltyCard=true \u0438 \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 \u0434\u043b\u044f \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430, id \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440:<br \/>  \u0417\u0430\u043f\u0440\u043e\u0441: POST <a href=\"http:\/\/IP\">IP<\/a>:8084\/promo  <\/p>\n<pre><code class=\"java\">{   &quot;loyaltyCardRules&quot;:    [     {       &quot;shopId&quot;: -1,       &quot;discount&quot;: 0.03     },     {       &quot;shopId&quot;: 2,       &quot;discount&quot;: 0.05     }   ] }<\/code><\/pre>\n<p>  \u041e\u0442\u0432\u0435\u0442: 200<\/p>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441: POST <a href=\"http:\/\/IP\">IP<\/a>:8084\/receipt  <\/p>\n<pre><code class=\"java\">{   &quot;shopId&quot;: 1,   &quot;loyaltyCard&quot;: false,   &quot;positions&quot;:   [     {       &quot;itemId&quot;: &quot;3432166&quot;,       &quot;quantity&quot;: 1     }   ] } \u041e\u0442\u0432\u0435\u0442: 200 {   &quot;total&quot;: 137.73,   &quot;discount&quot;: 4.26,   &quot;positions&quot;:   [     {       &quot;id&quot;: &quot;3432166&quot;,       &quot;name&quot;: &quot;\u041b\u0423\u041a.\u0416\u0438\u0434.\u0410\u041d\u0422\u0418\u0424.G11 Green \u043d\u0435\u0437.1\u043a\u0433&quot;,       &quot;price&quot;: 137.73,       &quot;regularPrice&quot;: 141.99     }   ] }<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 16 \u0431\u0430\u043b\u043b\u043e\u0432.<\/p>\n<h3>3. \u041f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u044f N+k<\/h3>\n<p>  \u0412 \/promo \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u043c\u043e-\u0430\u043a\u0446\u0438\u0439 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438 LoyaltyCardRule \u0438 ItemCountRule. \u0410\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432.<br \/>  \u0421\u0443\u0442\u044c \u0441\u043a\u0438\u0434\u043a\u0438 N+k \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043e\u043f\u043b\u0430\u0442\u0435 N \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e ID \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c k \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0438\u0436\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u043b\u044f \u0410\u043a\u0446\u0438\u0438 \u0441 N=3, k=2:  <\/div>\n<\/p><\/div>\n<h2>\u0412\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432<\/h2>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/s2\/hk\/n-\/s2hkn-qfgilqqme2uctgcbela4s.png\"><\/p>\n<p>  \u0412\u0441\u0435 16 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 \u0440\u0435\u0431\u044f\u0442 \u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u0432 \u0438\u0437 \u0411\u0438\u043b\u0430\u0439\u043d \u0438 X5 Retail Group \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 <a href=\"https:\/\/digital.alfabank.ru\/blog\/alfa-battle\">\u0441\u0430\u0439\u0442\u0435 \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u044f<\/a>.<\/p>\n<h2>\u0422\u0430\u043a \u0447\u0442\u043e \u0442\u0430\u043c \u043f\u0440\u043e \u043d\u0430\u0439\u043c?<\/h2>\n<p>  \u041f\u0440\u043e \u043d\u0430\u0439\u043c, \u043e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0430\u0445 \u0431\u0430\u043d\u043a\u0430, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u0445 \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0414\u0430\u043c\u0438\u0440 \u0411\u0430\u0442\u0442\u0443\u043b\u0438\u043d, \u043d\u0430\u0448 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u0434\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0430\u043d\u0430\u043b\u043e\u0432.<\/p>\n<blockquote><p>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443 \u043d\u0430\u0441 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u0432 \u0442\u0440\u0435\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u0446\u0438\u044f\u0445: \u041c\u043e\u0441\u043a\u0432\u0430, \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433 \u0438 \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433. \u041d\u043e \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u043d\u0434\u0435\u043c\u0438\u0435\u0439, \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0430\u0448\u0435\u0439 \u0433\u043e\u043b\u043e\u0432\u0435, \u0438 \u0441\u0442\u0430\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u043b\u0430\u043d\u0442\u043b\u0438\u0432\u044b\u0445 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0435. \u0418 \u0434\u0430\u0436\u0435 \u0420\u043e\u0441\u0441\u0438\u0435\u0439 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u0438\u0441\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0446\u0435\u043b\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438\u0437 \u0411\u0435\u043b\u043e\u0440\u0443\u0441\u0441\u0438\u0438. <\/p>\n<p>  \u041c\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0430. \u041c\u043e\u0436\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0432 \u0448\u0442\u0430\u0442 \u0431\u0430\u043d\u043a\u0430, \u0442\u0430\u043a \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u043d\u0434\u043e\u0440\u0430. \u041d\u0430\u043d\u0438\u043c\u0430\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0438 \u0446\u0435\u043b\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043b\u043e\u0436\u043d\u043e. \u041f\u043e\u043a\u0430 \u0441\u0442\u043e\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e. <\/p><\/blockquote>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438 (IT, \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433, HR \u0438 \u0434\u0440\u0443\u0433\u043e\u0435) \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/job.alfabank.ru\/?utm_source=habr&amp;utm_medium=post\">\u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.<\/a><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u2014 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0412 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0435 \u0431\u043e\u043b\u0435\u0435 100 \u043a\u043e\u043c\u0430\u043d\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430\u0434 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438. \u0418 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0435\u043b. \u0411\u0430\u043d\u043a \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432, \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u0441\u0432\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0445 \u0432 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430\u0445. \u0414\u0430\u043c\u0438\u0440 \u0411\u0430\u0442\u0442\u0443\u043b\u0438\u043d, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u0434\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0430, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0430\u0445 \u0431\u0430\u043d\u043a\u0430, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u0445 \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u2014 \u0414\u0432\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 \u0446\u0438\u0444\u0440\u043e\u0432\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0430, \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0434\u043e 2021 \u0433\u043e\u0434\u0430. \u041c\u044b \u0441\u0442\u0430\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0434 \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u0418 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0442\u0430\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u0435\u043d\u0435\u0433 \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432, \u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u2014 \u043e\u0442 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0438 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u0434\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0433\u0435\u0439\u043c\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0412 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442 7 \u0434\u043e 12 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u043a \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430\u043c.<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a \u0441\u0442\u0430\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0431\u0443\u0434\u0443\u0447\u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u0435\u0439. \u0412 \u043e\u0441\u043d\u043e\u0432\u0443 \u044d\u0442\u0438\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u043b\u0435\u0433\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c, \u043d\u043e \u043c\u044b \u0438\u0445 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043f\u043e\u0434 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0438\u0445 \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u0431\u0430\u043d\u043a\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u044b. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u043c \u043e\u043f\u044b\u0442\u0435 (\u043a\u0430\u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445, \u0442\u0430\u043a \u0438 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043b\u0438\u0446): \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043d\u0430\u043b\u044b \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439 \u2014 \u043e\u0444\u0438\u0441\u044b, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0431\u0430\u043d\u043a. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0438\u0437 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0443\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e, \u043d\u043e \u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u0435\u0449\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>  <b>\u2014 \u0412 \u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0430\u043d\u043a\u0430?<\/b><\/p>\n<p>  \u2014 \u042f \u043c\u043e\u0433\u0443 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0430.<\/p>\n<p>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u0446\u0435\u043b\u0435\u0439 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0434\u043b\u044f \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. <\/p>\n<p>  \u0412\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0430 \u2014 \u0431\u0435\u0437\u0431\u0443\u043c\u0430\u0436\u043d\u044b\u0439 \u0431\u0430\u043d\u043a. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u043c\u0430\u0433\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u0420\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0431\u0443\u043c\u0430\u0436\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u043e\u0442\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438, \u043d\u043e \u0438 \u043e \u0442\u0430\u043a\u0438\u0445 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c\u044b\u0445 \u0432\u0435\u0449\u0430\u0445, \u043a\u0430\u043a \u043a\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u043e\u0440\u0434\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0443.<\/p>\n<p>  \u0418 \u0442\u0440\u0435\u0442\u044c\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0430, \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u2014 smart branch. \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0444\u0438\u0441\u0430\u0445 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u0430\u043d\u043a\u0430 \u2013 \u0431\u043e\u043b\u0435\u0435 400 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0445 \u043f\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0435. \u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u041c\u043e\u0441\u043a\u0432\u0435, \u0442\u0440\u0435\u0442\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442 \u0432 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0435, \u0430 \u0432 \u043e\u043a\u0442\u044f\u0431\u0440\u0435 \u043c\u044b \u0432\u044b\u0439\u0434\u0435\u043c \u0441 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0432 \u0440\u0435\u0433\u0438\u043e\u043d\u044b. <\/p>\n<p>  \u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u0415\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u043d\u043a\u0430, \u0442\u043e \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u043b\u0438\u0446 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0443 \u0431\u0430\u043d\u043a\u0430, \u0447\u0442\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0437\u0430\u0431\u044b\u043b \u043f\u0430\u0441\u043f\u043e\u0440\u0442, \u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e. \u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0438 \u0432\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0443\u043c\u0430\u0436\u043d\u044b\u0439 \u043e\u0431\u043e\u0440\u043e\u0442. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u0443\u0447\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>  \u0418 \u0434\u043b\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0438, \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0435\u0437\u0431\u0443\u043c\u0430\u0436\u043d\u043e\u043c\u0443 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. <\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u0438\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432, \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0438 \u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445 \u0432 \u0431\u0430\u043d\u043a\u0435, \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0431\u044d\u043a-\u043e\u0444\u0438\u0441\u0430. \u0422\u0443\u0442 \u043c\u044b \u0442\u043e\u0436\u0435 \u0440\u0435\u0448\u0430\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0443\u0440\u044c\u0435\u0440\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0435. \u041f\u0440\u0438\u044f\u0442\u043d\u043e \u0432\u0435\u0434\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0431\u0430\u043d\u043a\u0435 \u043c\u043e\u0433\u0443\u0442 \u0437\u043d\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0435\u043d\u044c \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u043d\u0435 \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f \u0432 \u043f\u0430\u0441\u043f\u043e\u0440\u0442. <\/p>\n<p>  <b>\u2014 \u0421\u0438\u043b\u044c\u043d\u043e \u043b\u0438 \u0432\u043b\u0438\u044f\u0435\u0442 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043d\u043e\u0432\u044b\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b?<\/b><\/p>\n<p>  \u2014 \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443 \u043d\u0430\u0441 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u0432 \u0442\u0440\u0435\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u0446\u0438\u044f\u0445: \u041c\u043e\u0441\u043a\u0432\u0430, \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433 \u0438 \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433. \u041d\u043e \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u043d\u0434\u0435\u043c\u0438\u0435\u0439, \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0430\u0448\u0435\u0439 \u0433\u043e\u043b\u043e\u0432\u0435, \u0438 \u0441\u0442\u0430\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u043b\u0430\u043d\u0442\u043b\u0438\u0432\u044b\u0445 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0435. \u0418 \u0434\u0430\u0436\u0435 \u0420\u043e\u0441\u0441\u0438\u0435\u0439 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u0438\u0441\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0446\u0435\u043b\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438\u0437 \u0411\u0435\u043b\u043e\u0440\u0443\u0441\u0441\u0438\u0438. <\/p>\n<p>  \u041c\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0430. \u041c\u043e\u0436\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0432 \u0448\u0442\u0430\u0442 \u0431\u0430\u043d\u043a\u0430, \u0442\u0430\u043a \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u043d\u0434\u043e\u0440\u0430. \u041d\u0430\u043d\u0438\u043c\u0430\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0438 \u0446\u0435\u043b\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043b\u043e\u0436\u043d\u043e. \u041f\u043e\u043a\u0430 \u0441\u0442\u043e\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e. <\/p>\n<p>  <b>\u2014 \u041c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u043e\u0442\u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438?<\/b><\/p>\n<p>  \u2014 \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u2013 time to market. \u041c\u044b \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0437\u0434\u0440\u0430\u0432\u043e\u043c\u0443 \u0441\u043c\u044b\u0441\u043b\u0443. \u0415\u0441\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u043e \u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0437\u0430 \u043d\u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u0430\u043d\u043a\u0430. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0441\u0442\u0432\u043e. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0431\u0430\u043d\u043a\u0430\u0445 \u043a\u0430\u043a \u043e \u0434\u0435\u043d\u0435\u0436\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0445, \u0430 \u043d\u0435 \u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u044f\u0445.<\/p>\n<p>  \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0440\u043e\u0434\u043d\u0438\u0442 \u043d\u0430\u0441 \u0441\u043e \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430\u043c\u0438. \u041f\u0440\u043e\u0435\u043a\u0442\u044b smart branch \u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435 \u043a\u0430\u0440\u0442\u043e\u043d\u043d\u044b\u0445 \u043e\u0444\u0438\u0441\u043e\u0432, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438 \u0442\u0443\u0434\u0430 \u043b\u044e\u0434\u0435\u0439 \u0438 \u0438\u0437\u0443\u0447\u0430\u043b\u0438 \u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  <b>\u2014 \u041a\u0442\u043e \u0438 \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0438\u0434\u0435\u0438 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432?<\/b><\/p>\n<p>  \u2014 \u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u0427\u0430\u0441\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439, \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432. \u0415\u0441\u0442\u044c \u0441\u0442\u0440\u0438\u043c\u044b, \u0433\u0434\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u043d\u043a\u0430 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u044f\u0432\u043b\u044f\u0442\u044c \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u043d\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c.<br \/>  \u0421\u0430\u043c\u0438\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0441 \u043d\u0438\u043c\u0438, \u043d\u043e \u043d\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u0438 \u043d\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0436\u0443. \u042d\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u2014 \u043c\u044b \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c \u0431\u0438\u0437\u043d\u0435\u0441, \u043d\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u044f. \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0441\u0435\u0434\u0430\u0435\u0442, \u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0434\u0440\u0443\u0433\u0443\u044e. \u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u043e\u0439 \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0435: \u043e\u0442 iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043e Lead product manager \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 iOS, \u043e\u0442 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0430 \u0434\u043e Chief product owner \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. <\/p>\n<p>  \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0441\u0442\u0451\u0442. \u0415\u0449\u0435 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u0438\u0445 \u0431\u044b\u043b\u043e 56, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0443\u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u043e\u0432\u0430\u043d\u044b \u043d\u0430 60%, \u0430 \u0443\u0436\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044d\u0442\u043e\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0431\u043b\u0438\u0437\u043e\u043a \u043a 100%. <\/p>\n<p>  <b>\u2014 \u041a\u0430\u043a\u0438\u0435 \u0443 \u0432\u0430\u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430\u043c?<\/b><\/p>\n<p>  \u2014 \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0431\u043e\u0440\u043e\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432. \u041f\u043e\u043c\u0438\u043c\u043e \u043c\u0435\u043d\u044f, \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0434\u0438\u0440\u0435\u043a\u0446\u0438\u0439 \u0438\u043b\u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0446\u0435\u043d\u0442\u0440\u043e\u0432 \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u0439.<br \/>  \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e \u043c\u0435\u043d\u044f, \u0442\u043e \u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d \u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 chief product owner. \u0418 \u0442\u043e, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0445. \u041c\u043e\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043d\u0438\u043c \u2013 \u0431\u044b\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u0435\u043c, \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u044e \u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0435\u043d\u0442\u044b, \u043a\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u043b, \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443 \u043d\u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. <\/p>\n<p>  <b>\u2014 \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430\u0445. \u041e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0435 \u043d\u0430 \u043d\u0438\u0445 \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435? <\/b><\/p>\n<p>  \u2014 \u0414\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0430 \u0442\u0435\u0445, \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0434\u0430\u043a\u0442\u0430\u043c\u0438, \u043d\u043e \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u043b\u044e\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430\u043c\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b. \u0412\u0430\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0433\u0438\u0431\u043a\u0438\u043c\u0438 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438.<br \/>  \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0430 \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c. \u0418 \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432.<\/p>\n<p>  <b>\u2014 \u041a\u0430\u043a\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0443 \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f?<\/b><\/p>\n<p>  \u2014 \u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0430\u043d\u043a\u0430 \u2013 \u044d\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u0439. \u041f\u043e\u0434 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u043a\u043e\u0440\u043e \u043d\u0430\u0447\u043d\u0435\u043c \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0420\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0433\u0435\u0439\u043c\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0412 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0431\u044b\u043b \u0441\u0432\u044f\u0437\u0430\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u043e\u0439, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u2013 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0443\u043f\u0435\u0440-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0431\u0430\u043d\u043a\u0438. \u041c\u044b \u0434\u0430\u0436\u0435 \u0441 \u043d\u044b\u043d\u0435\u0448\u043d\u0438\u043c, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435, \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u043c \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c, \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043d\u043e\u0432\u044b\u0435 \u0438\u0434\u0435\u0438.<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0449\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0432 \u0443\u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0431\u0430\u043d\u043a\u0430, \u0442\u0430\u043a \u0438 \u0432 \u043d\u043e\u0432\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c. \u0412 \u044d\u0442\u043e\u043c \u0438 \u043d\u0430\u0448\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u2014 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043e\u0448\u0438\u0431\u0430\u0442\u044c\u0441\u044f, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f. \u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043d\u043a \u0434\u043b\u044f \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430.   <\/div>\n<\/p><\/div>\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\/company\/alfa\/blog\/513506\/\"> https:\/\/habr.com\/ru\/company\/alfa\/blog\/513506\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/alfa\/blog\/513506\/\">\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u044e\u043d\u044f \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 Alfa Battle \u0434\u043b\u044f Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0432\u0438\u0434\u0435\u043e \u043e\u0442 \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432 \u0441\u0442\u0440\u0438\u043c-\u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u00ab\u041a\u043e\u0434\u0438\u043d\u0433 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e\u00bb (\u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a, \u0411\u0438\u043b\u0430\u0439\u043d, X5 Retail Group) \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  <a href=\"https:\/\/habr.com\/ru\/company\/alfa\/blog\/513506\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/oi\/ia\/_s\/oiia_slfnbcggldgu_dzk5-xgsy.png\"><\/a><\/p>\n<p>  \u041a \u0441\u043b\u043e\u0432\u0443, \u043e \u0437\u0430\u0434\u0430\u0447\u0430\u0445. \u0422\u043e \u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0438 \u043f\u0435\u0440\u0435\u043e\u0446\u0435\u043d\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0442\u043e \u043b\u0438 \u043f\u043e\u0433\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u0442\u0430\u043a \u0441\u0435\u0431\u0435, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0438\u0437 1498 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0438\u0437 50 \u0433\u043e\u0440\u043e\u0434\u043e\u0432 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 (5 \u0448\u0442\u0443\u043a) \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0435 \u0440\u0435\u0448\u0438\u043b \u043d\u0438\u043a\u0442\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0445 \u043f\u043e\u0440\u0435\u0448\u0430\u0442\u044c, \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0434\u0435\u0434\u043b\u0430\u0439\u043d\u043e\u0432. \u0422\u0435\u0445, \u043a\u0442\u043e \u043e\u0441\u0438\u043b\u0438\u0442, \u0441 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e <a href=\"https:\/\/job.alfabank.ru\/vacancy\/300?utm_source=habr&amp;utm_campaign=post\">\u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043c \u043a \u043d\u0430\u043c<\/a>. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0441\u0442\u0430 \u2014 \u043e \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430\u0439\u043c\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0411\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 IT \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0430 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u0430\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u0442\u0440\u0451\u0445 \u0433\u043e\u0440\u043e\u0434\u0430\u0445 \u2014 \u041c\u043e\u0441\u043a\u0432\u0430, \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433, \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433. \u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0434\u0435\u0439 \u0441\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b. \u0418 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-308102","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308102","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=308102"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308102\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=308102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=308102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=308102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}