From 24ccc2a1284e766c639343f05285d127ebe062d7 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 18 May 2022 11:07:39 +0500 Subject: [PATCH 1/5] fix emails triggers and bodies --- AsbCloudDb/Model/IAsbCloudDbContext.cs | 3 +- .../OperationDetectionBackgroundService.cs | 1 - .../DrillingProgram/DrillingProgramMaker.cs | 50 ------------------- .../DrillingProgram/DrillingProgramService.cs | 30 +++++++---- .../Services/Email/MailBodyFactory.cs | 42 ++++++---------- .../Services/FileService.cs | 1 + .../Controllers/DrillingProgramController.cs | 2 +- AsbCloudWebApi/appsettings.json | 7 ++- 8 files changed, 47 insertions(+), 89 deletions(-) diff --git a/AsbCloudDb/Model/IAsbCloudDbContext.cs b/AsbCloudDb/Model/IAsbCloudDbContext.cs index e31c6852..0870a8ab 100644 --- a/AsbCloudDb/Model/IAsbCloudDbContext.cs +++ b/AsbCloudDb/Model/IAsbCloudDbContext.cs @@ -53,7 +53,8 @@ namespace AsbCloudDb.Model DatabaseFacade Database { get; } - Task RefreshMaterializedViewAsync(string? mwName = null, CancellationToken token = default) where TEntity : class; + Task RefreshMaterializedViewAsync(string? mwName = null, CancellationToken token = default); + Task RefreshMaterializedViewAsync(CancellationToken token = default) where TEntity : class; int SaveChanges(); int SaveChanges(bool acceptAllChangesOnSuccess); Task SaveChangesAsync(CancellationToken cancellationToken); diff --git a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs index 2834a1fd..98ff3fff 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs @@ -57,7 +57,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations catch (Exception ex) { Trace.TraceError(ex.Message); - Console.WriteLine(ex.Message); } GC.Collect(); } diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramMaker.cs b/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramMaker.cs index 3a4962df..f4248a73 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramMaker.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramMaker.cs @@ -8,58 +8,8 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram { internal class DrillingProgramMaker { - private const int maxAllowedColumns = 256; - //public async Task GetOrCreateAsync(int idWell, int idUser, CancellationToken token = default) - //{ - // var programParts = (await fileService.GetInfosByCategoryAsync(idWell, idFileCategoryDrillingProgramItems, token) - // .ConfigureAwait(false)) - // .Where(f => f.FileMarks?.Any(m => m.IdMarkType == 1 && !m.IsDeleted) ?? false); - - // var well = await wellService.GetAsync(idWell, token) - // .ConfigureAwait(false); - - // var programs = await fileService.GetInfosByCategoryAsync(idWell, idFileCategoryDrillingProgram, token) - // .ConfigureAwait(false); - - // if (programs is not null && programs.Any() && programParts.Any()) - // { - // programs = programs.OrderByDescending(f => f.UploadDate); - // var matchFilesIterator = programs.GetEnumerator(); - // matchFilesIterator.MoveNext(); - // var matchFile = matchFilesIterator.Current; - - // if (programParts.All(pp => matchFile.UploadDate > pp.UploadDate) && - // File.Exists(fileService.GetUrl(matchFile))) - // return matchFile; - // else - // await fileService.DeleteAsync(matchFile.Id, token) - // .ConfigureAwait(false); - - // while (matchFilesIterator.MoveNext()) - // await fileService.DeleteAsync(matchFilesIterator.Current.Id, token) - // .ConfigureAwait(false); - // } - - // if (!programParts.Any()) - // throw new FileNotFoundException("Нет частей для формирования программы бурения"); - - // var resultFileName = $"Программа бурения {well.Cluster} {well.Caption}.xlsx"; - - // var filteredFilePaths = programParts - // .Select(file => fileService.GetUrl(file)); - - // var tempResultFilePath = Path.Combine(Path.GetTempPath(), "drillingProgram", resultFileName); - - // UniteExcelFiles(filteredFilePaths, tempResultFilePath); - - // var fileInfo = await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram, - // resultFileName, tempResultFilePath, token).ConfigureAwait(false); - - // return fileInfo; - //} - public static void UniteExcelFiles(IEnumerable excelFilesNames, string resultExcelPath) { var resultExcelFile = new XLWorkbook(XLEventTracking.Disabled); diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs b/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs index 44b88f06..aebb1657 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs @@ -254,7 +254,8 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram if (idUserRole == idUserRoleApprover) await RemoveDrillingProgramAsync(part.IdWell, token); - await NotifyNewPublisherAsync(idWell, user, part.FileCategory.Name, token); + if (idUserRole == idUserRolePublisher) + await NotifyNewPublisherAsync(idWell, user, part.FileCategory.Name, token); return await context.SaveChangesAsync(token); } @@ -291,11 +292,16 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram var part = await context.DrillingProgramParts .Include(p => p.RelatedUsers) + .ThenInclude(r => r.User) + .AsNoTracking() .FirstOrDefaultAsync(p => p.IdWell == fileInfo.IdWell && p.IdFileCategory == fileInfo.IdCategory, token); - if (!part.RelatedUsers.Any(r => r.IdUser == idUser && r.IdUserRole == idUserRoleApprover)) + var user = part.RelatedUsers.FirstOrDefault(r => r.IdUser == idUser && r.IdUserRole == idUserRoleApprover)?.User; + if (user is null) throw new ForbidException($"User {idUser} is not in the approvers list."); + fileMarkDto.User = user.Adapt(); + var oldMarksIds = fileInfo.FileMarks ?.Where(m => m.User.Id == idUser) .Select(m => m.Id); @@ -311,16 +317,22 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram await RemoveDrillingProgramAsync(fileInfo.IdWell, token); await NotifyPublisherOnRejectAsync(fileMarkDto, token); } - - // если все согласованты согласовали - оповещаем публикатора - if (part.RelatedUsers - .Where(u => u.IdUserRole == idUserRoleApprover) - .All(user => fileInfo.FileMarks - .Any(mark => mark.IdMarkType == idMarkTypeApprove && mark.User.Id == user.IdUser))) + else { - await NotifyPublisherOnFullAccepAsync(fileMarkDto, token); + // если все согласованты согласовали - оповещаем публикатора + var approvers = part.RelatedUsers + .Where(u => u.IdUserRole == idUserRoleApprover); + if (approvers + .All(user => fileInfo.FileMarks + .Any(mark => (mark.IdMarkType == idMarkTypeApprove && mark.User.Id == user.IdUser && !mark.IsDeleted)) || + (fileMarkDto.IdMarkType == idMarkTypeApprove && user.IdUser == idUser))) + { + await NotifyPublisherOnFullAccepAsync(fileMarkDto, token); + } } + + return result; } diff --git a/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs b/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs index 06a76c50..d80b14d4 100644 --- a/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs +++ b/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs @@ -7,10 +7,10 @@ namespace AsbCloudInfrastructure { class MailBodyFactory { - protected readonly string platformName; + private readonly string platformName; private readonly string platformUrl; - protected readonly string companyName; - protected readonly string supportMail; + private readonly string companyName; + private readonly string supportMail; public MailBodyFactory(IConfiguration configuration) { @@ -26,11 +26,11 @@ namespace AsbCloudInfrastructure return subj; } - public string MakeMailBodyForNewPublisher(WellDto well, string userName, string documentCategory) + public string MakeMailBodyForNewPublisher(WellDto well, string publisherName, string documentCategory) { var drillingProgramHref = MakeDrillingProgramHref(well); - var body = $"

Здравствуйте, {userName}.

" + + var body = $"

Здравствуйте, {publisherName}.

" + $"На портале {platformName} началось создание программы бурения скважины {drillingProgramHref}," + $" куст {well.Cluster}, месторождение {well.Deposit}." + $"

От вас ожидается загрузка на портал документа «{documentCategory}» в формате excel (*.xlsx)." + @@ -39,13 +39,12 @@ namespace AsbCloudInfrastructure return body; } - public string MakeMailBodyForApproverNewFile(WellDto well, string userName, int idFile, string fileName) + public string MakeMailBodyForApproverNewFile(WellDto well, string approverName, int idFile, string fileName) { - var fileDownloadHref = MakeFileDownloadHref(well.Id, idFile, fileName); var drillingProgramHref = MakeDrillingProgramHref(well); - var body = $"

Здравствуйте, {userName}.

" + - $"На портал {platformName} загружен документ {fileDownloadHref}" + + var body = $"

Здравствуйте, {approverName}.

" + + $"На портал {platformName} загружен документ {fileName}" + $" для согласования при создании программы бурения скважины {drillingProgramHref}, куст ({well.Cluster})" + $", месторождение ({well.Deposit}).
" + MakeSignatue() + @@ -53,28 +52,26 @@ namespace AsbCloudInfrastructure return body; } - public string MakeMailBodyForPublisherOnReject(WellDto well, string userName, int idFile, string fileName, FileMarkDto fileMark) + public string MakeMailBodyForPublisherOnReject(WellDto well, string publisherName, int idFile, string fileName, FileMarkDto fileMark) { - var fileDownloadHref = MakeFileDownloadHref(well.Id, idFile, fileName); var drillingProgramHref = MakeDrillingProgramHref(well); - var body = $"

Здравствуйте, {userName}.

" + - $"На портале {platformName} отклонен загруженный вами документ {fileDownloadHref} " + + var body = $"

Здравствуйте, {publisherName}.

" + + $"На портале {platformName} отклонен загруженный вами документ {fileName} " + $" по программе бурения скважины {drillingProgramHref}," + $" куст {well.Cluster}, месторождение {well.Deposit}." + - $" Комментарий согласующего ({fileMark.User.Name} {fileMark.User.Surname}):
{fileMark.Comment}" + + $" Комментарий согласующего ({fileMark.User?.Name} {fileMark.User?.Surname}):
{fileMark.Comment}" + MakeSignatue() + $""; return body; } - public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string userName, int idFile, string fileName) + public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string publisherName, int idFile, string fileName) { - var fileDownloadHref = MakeFileDownloadHref(well.Id, idFile, fileName); var drillingProgramHref = MakeDrillingProgramHref(well); - var body = $"

Здравствуйте, {userName}.

" + - $"На портале {platformName} полностью согласован документ {fileDownloadHref} " + + var body = $"

Здравствуйте, {publisherName}.

" + + $"На портале {platformName} полностью согласован документ {fileName} " + $" по программе бурения скважины {drillingProgramHref}," + $" куст {well.Cluster}, месторождение {well.Deposit}." + MakeSignatue() + @@ -82,16 +79,9 @@ namespace AsbCloudInfrastructure return body; } - private string MakeFileDownloadHref(int idWell, int idFile, string fileName) - { - var fileDownloadUrl = $"{platformUrl}/api/well/{idWell}/files/{idFile}"; - var fileDownloadHref = MakeHref(fileDownloadUrl, fileName); - return fileDownloadHref; - } - private string MakeDrillingProgramHref(WellDto well) { - var drillingProgramUrl = $"{platformUrl}/api/well/{well.Id}/drillingProgram"; + var drillingProgramUrl = $"{platformUrl}/well/{well.Id}/drillingProgram"; var drillingProgramHref = MakeHref(drillingProgramUrl, well.Caption); return drillingProgramHref; } diff --git a/AsbCloudInfrastructure/Services/FileService.cs b/AsbCloudInfrastructure/Services/FileService.cs index c769788b..73f469aa 100644 --- a/AsbCloudInfrastructure/Services/FileService.cs +++ b/AsbCloudInfrastructure/Services/FileService.cs @@ -337,6 +337,7 @@ namespace AsbCloudInfrastructure.Services newFileMark.Id = default; newFileMark.DateCreated = DateTime.UtcNow; newFileMark.IdUser = idUser; + newFileMark.User = null; db.FileMarks.Add(newFileMark); return await db.SaveChangesAsync(token); diff --git a/AsbCloudWebApi/Controllers/DrillingProgramController.cs b/AsbCloudWebApi/Controllers/DrillingProgramController.cs index a083af86..05087540 100644 --- a/AsbCloudWebApi/Controllers/DrillingProgramController.cs +++ b/AsbCloudWebApi/Controllers/DrillingProgramController.cs @@ -125,7 +125,7 @@ namespace AsbCloudWebApi.Controllers if (!fileName.EndsWith(".xlsx")) return BadRequest(ArgumentInvalidException.MakeValidationError("file", "Файл должен быть xlsx")); - + var fileStream = files[0].OpenReadStream(); var result = await drillingProgramService.AddFile(idWell, idFileCategory, (int)idUser, fileName, fileStream, token); diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json index b82232b2..1f76edf8 100644 --- a/AsbCloudWebApi/appsettings.json +++ b/AsbCloudWebApi/appsettings.json @@ -16,7 +16,12 @@ "email": { "smtpServer": "smtp.timeweb.ru", "sender": "bot@autodrilling.ru", - "password": "xHhgwZ4D" + "password": "xHhgwZ4D", + + "platformName": "Цифровое бурение", + "platformUrl": "cloud.digitaldrilling.ru", + "companyName": "ООО \"Цифровое бурение\"", + "supportMail": "support@digitaldrilling.ru" }, "Urls": "http://0.0.0.0:5000" //;https://0.0.0.0:5001" //, // See https man: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0 From ed8bbf641a936f614d3bf7e0db7e61ae0129dd24 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 18 May 2022 13:16:03 +0500 Subject: [PATCH 2/5] Fix DailyReportMakerExcel. string[] to string --- .../Services/DailyReport/DailyReportMakerExcel.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index a4aa860b..8e0ed0fe 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -168,9 +168,9 @@ namespace AsbCloudInfrastructure.Services.DailyReport private int AddBlockDrillingModes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) { sheet.Cell(startRow + 2, 6).Value = - $"{reportDto.RotorDrillingModes}"; + $"{string.Join(", ", reportDto.RotorDrillingModes)}"; sheet.Cell(startRow + 3, 9).Value = - $"{reportDto.SlideDrillingModes}"; + $"{string.Join(", ", reportDto.SlideDrillingModes)}"; return startRow + 3; } From 521131d27a8b2fcb732656eae539bc8b86f86bf4 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 18 May 2022 17:02:03 +0500 Subject: [PATCH 3/5] Fix DrillingProgramController.AddFile error message text. --- AsbCloudWebApi/Controllers/DrillingProgramController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AsbCloudWebApi/Controllers/DrillingProgramController.cs b/AsbCloudWebApi/Controllers/DrillingProgramController.cs index 05087540..4fc2d13f 100644 --- a/AsbCloudWebApi/Controllers/DrillingProgramController.cs +++ b/AsbCloudWebApi/Controllers/DrillingProgramController.cs @@ -119,7 +119,7 @@ namespace AsbCloudWebApi.Controllers return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(files), "only 1 file can be uploaded")); if (files.Count == 0) - return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(files), "at list 1 file can be uploaded")); + return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(files), "at list 1 file should be uploaded")); var fileName = files[0].FileName; From 1ea68f560542a119d07f9a73badc41cc83314dd5 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 20 May 2022 09:01:39 +0500 Subject: [PATCH 4/5] fix email body links --- AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs | 2 +- AsbCloudWebApi/appsettings.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs b/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs index d80b14d4..4ca82d87 100644 --- a/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs +++ b/AsbCloudInfrastructure/Services/Email/MailBodyFactory.cs @@ -15,7 +15,7 @@ namespace AsbCloudInfrastructure public MailBodyFactory(IConfiguration configuration) { platformName = configuration.GetValue("email:platformName", "Цифровое бурение"); - platformUrl = configuration.GetValue("email:platformUrl", ""); + platformUrl = configuration.GetValue("email:platformUrl", "https://cloud.digitaldrilling.ru/"); companyName = configuration.GetValue("email:companyName", "ООО \"Цифровое бурение\""); supportMail = configuration.GetValue("email:supportMail", "support@digitaldrilling.ru"); } diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json index 1f76edf8..372f92e6 100644 --- a/AsbCloudWebApi/appsettings.json +++ b/AsbCloudWebApi/appsettings.json @@ -19,7 +19,7 @@ "password": "xHhgwZ4D", "platformName": "Цифровое бурение", - "platformUrl": "cloud.digitaldrilling.ru", + "platformUrl": "https://cloud.digitaldrilling.ru", "companyName": "ООО \"Цифровое бурение\"", "supportMail": "support@digitaldrilling.ru" }, From 121f200b47dce135d35eccb6c62286f7b399dd07 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 20 May 2022 14:02:49 +0500 Subject: [PATCH 5/5] update react client --- AsbCloudWebApi/wwwroot/asset-manifest.json | 76 +++++++++++----------- AsbCloudWebApi/wwwroot/index.html | 2 +- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/AsbCloudWebApi/wwwroot/asset-manifest.json b/AsbCloudWebApi/wwwroot/asset-manifest.json index c8f67bd2..14163925 100644 --- a/AsbCloudWebApi/wwwroot/asset-manifest.json +++ b/AsbCloudWebApi/wwwroot/asset-manifest.json @@ -1,52 +1,50 @@ { "files": { - "main.css": "/static/css/main.3c432080.chunk.css", - "main.js": "/static/js/main.0ca79ff5.chunk.js", - "main.js.map": "/static/js/main.0ca79ff5.chunk.js.map", - "runtime-main.js": "/static/js/runtime-main.485a750c.js", - "runtime-main.js.map": "/static/js/runtime-main.485a750c.js.map", - "static/js/2.2203d21b.chunk.js": "/static/js/2.2203d21b.chunk.js", - "static/js/2.2203d21b.chunk.js.map": "/static/js/2.2203d21b.chunk.js.map", + "main.css": "/static/css/main.c2a82e71.chunk.css", + "main.js": "/static/js/main.1a56c0e0.chunk.js", + "main.js.map": "/static/js/main.1a56c0e0.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.8da12c69.js", + "runtime-main.js.map": "/static/js/runtime-main.8da12c69.js.map", + "static/js/2.f196b75b.chunk.js": "/static/js/2.f196b75b.chunk.js", + "static/js/2.f196b75b.chunk.js.map": "/static/js/2.f196b75b.chunk.js.map", "static/css/3.f8ac3883.chunk.css": "/static/css/3.f8ac3883.chunk.css", - "static/js/3.37ce3ed2.chunk.js": "/static/js/3.37ce3ed2.chunk.js", - "static/js/3.37ce3ed2.chunk.js.map": "/static/js/3.37ce3ed2.chunk.js.map", + "static/js/3.31b66021.chunk.js": "/static/js/3.31b66021.chunk.js", + "static/js/3.31b66021.chunk.js.map": "/static/js/3.31b66021.chunk.js.map", "static/css/4.f8ac3883.chunk.css": "/static/css/4.f8ac3883.chunk.css", - "static/js/4.990dc4ef.chunk.js": "/static/js/4.990dc4ef.chunk.js", - "static/js/4.990dc4ef.chunk.js.map": "/static/js/4.990dc4ef.chunk.js.map", - "static/js/5.3f7d3780.chunk.js": "/static/js/5.3f7d3780.chunk.js", - "static/js/5.3f7d3780.chunk.js.map": "/static/js/5.3f7d3780.chunk.js.map", - "static/js/6.c6d1ff20.chunk.js": "/static/js/6.c6d1ff20.chunk.js", - "static/js/6.c6d1ff20.chunk.js.map": "/static/js/6.c6d1ff20.chunk.js.map", - "static/js/7.5e0d4920.chunk.js": "/static/js/7.5e0d4920.chunk.js", - "static/js/7.5e0d4920.chunk.js.map": "/static/js/7.5e0d4920.chunk.js.map", - "static/js/8.e7bbc963.chunk.js": "/static/js/8.e7bbc963.chunk.js", - "static/js/8.e7bbc963.chunk.js.map": "/static/js/8.e7bbc963.chunk.js.map", - "static/js/9.00e23c66.chunk.js": "/static/js/9.00e23c66.chunk.js", - "static/js/9.00e23c66.chunk.js.map": "/static/js/9.00e23c66.chunk.js.map", - "static/js/10.8775687b.chunk.js": "/static/js/10.8775687b.chunk.js", - "static/js/10.8775687b.chunk.js.map": "/static/js/10.8775687b.chunk.js.map", - "static/js/11.149d8387.chunk.js": "/static/js/11.149d8387.chunk.js", - "static/js/11.149d8387.chunk.js.map": "/static/js/11.149d8387.chunk.js.map", - "static/js/12.804eae39.chunk.js": "/static/js/12.804eae39.chunk.js", - "static/js/12.804eae39.chunk.js.map": "/static/js/12.804eae39.chunk.js.map", - "static/js/13.9dd1a8a3.chunk.js": "/static/js/13.9dd1a8a3.chunk.js", - "static/js/13.9dd1a8a3.chunk.js.map": "/static/js/13.9dd1a8a3.chunk.js.map", - "static/js/14.4b4cff1c.chunk.js": "/static/js/14.4b4cff1c.chunk.js", - "static/js/14.4b4cff1c.chunk.js.map": "/static/js/14.4b4cff1c.chunk.js.map", - "static/js/15.9a63212e.chunk.js": "/static/js/15.9a63212e.chunk.js", - "static/js/15.9a63212e.chunk.js.map": "/static/js/15.9a63212e.chunk.js.map", + "static/js/4.1f09e89e.chunk.js": "/static/js/4.1f09e89e.chunk.js", + "static/js/4.1f09e89e.chunk.js.map": "/static/js/4.1f09e89e.chunk.js.map", + "static/js/5.ef929bfe.chunk.js": "/static/js/5.ef929bfe.chunk.js", + "static/js/5.ef929bfe.chunk.js.map": "/static/js/5.ef929bfe.chunk.js.map", + "static/js/6.88051835.chunk.js": "/static/js/6.88051835.chunk.js", + "static/js/6.88051835.chunk.js.map": "/static/js/6.88051835.chunk.js.map", + "static/js/7.4f3c315a.chunk.js": "/static/js/7.4f3c315a.chunk.js", + "static/js/7.4f3c315a.chunk.js.map": "/static/js/7.4f3c315a.chunk.js.map", + "static/js/8.8e9a1dc7.chunk.js": "/static/js/8.8e9a1dc7.chunk.js", + "static/js/8.8e9a1dc7.chunk.js.map": "/static/js/8.8e9a1dc7.chunk.js.map", + "static/js/9.71667cac.chunk.js": "/static/js/9.71667cac.chunk.js", + "static/js/9.71667cac.chunk.js.map": "/static/js/9.71667cac.chunk.js.map", + "static/js/10.e5247b1b.chunk.js": "/static/js/10.e5247b1b.chunk.js", + "static/js/10.e5247b1b.chunk.js.map": "/static/js/10.e5247b1b.chunk.js.map", + "static/js/11.70112c8f.chunk.js": "/static/js/11.70112c8f.chunk.js", + "static/js/11.70112c8f.chunk.js.map": "/static/js/11.70112c8f.chunk.js.map", + "static/js/12.2265b74f.chunk.js": "/static/js/12.2265b74f.chunk.js", + "static/js/12.2265b74f.chunk.js.map": "/static/js/12.2265b74f.chunk.js.map", + "static/js/13.063a16c9.chunk.js": "/static/js/13.063a16c9.chunk.js", + "static/js/13.063a16c9.chunk.js.map": "/static/js/13.063a16c9.chunk.js.map", + "static/js/14.50a284b1.chunk.js": "/static/js/14.50a284b1.chunk.js", + "static/js/14.50a284b1.chunk.js.map": "/static/js/14.50a284b1.chunk.js.map", "index.html": "/index.html", "static/css/3.f8ac3883.chunk.css.map": "/static/css/3.f8ac3883.chunk.css.map", "static/css/4.f8ac3883.chunk.css.map": "/static/css/4.f8ac3883.chunk.css.map", - "static/css/main.3c432080.chunk.css.map": "/static/css/main.3c432080.chunk.css.map", - "static/js/2.2203d21b.chunk.js.LICENSE.txt": "/static/js/2.2203d21b.chunk.js.LICENSE.txt", + "static/css/main.c2a82e71.chunk.css.map": "/static/css/main.c2a82e71.chunk.css.map", + "static/js/2.f196b75b.chunk.js.LICENSE.txt": "/static/js/2.f196b75b.chunk.js.LICENSE.txt", "static/media/ClusterIcon.f85713df.svg": "/static/media/ClusterIcon.f85713df.svg", "static/media/DepositIcon.9688e406.svg": "/static/media/DepositIcon.9688e406.svg" }, "entrypoints": [ - "static/js/runtime-main.485a750c.js", - "static/js/2.2203d21b.chunk.js", - "static/css/main.3c432080.chunk.css", - "static/js/main.0ca79ff5.chunk.js" + "static/js/runtime-main.8da12c69.js", + "static/js/2.f196b75b.chunk.js", + "static/css/main.c2a82e71.chunk.css", + "static/js/main.1a56c0e0.chunk.js" ] } \ No newline at end of file diff --git a/AsbCloudWebApi/wwwroot/index.html b/AsbCloudWebApi/wwwroot/index.html index d0921b3d..ee10f878 100644 --- a/AsbCloudWebApi/wwwroot/index.html +++ b/AsbCloudWebApi/wwwroot/index.html @@ -1 +1 @@ -АСБ Vision
\ No newline at end of file +АСБ Vision
\ No newline at end of file