gitextract_9atq3bqx/ ├── .config/ │ └── dotnet-tools.json ├── .editorconfig ├── .gitignore ├── CODE_OF_CONDUCT.md ├── Directory.Build.props ├── Directory.Packages.props ├── LICENSE ├── README.md ├── SECURITY.md ├── docs/ │ └── Architecture.pptx ├── eShopSupport.sln ├── nuget.config ├── seeddata/ │ ├── DataGenerator/ │ │ ├── .gitignore │ │ ├── ChatCompletionServiceExtensions.cs │ │ ├── DataGenerator.csproj │ │ ├── Generators/ │ │ │ ├── CategoryGenerator.cs │ │ │ ├── EvalQuestionGenerator.cs │ │ │ ├── GeneratorBase.cs │ │ │ ├── LocalTextEmbeddingGenerator.cs │ │ │ ├── ManualGenerator.cs │ │ │ ├── ManualPdfConverter.cs │ │ │ ├── ManualTocGenerator.cs │ │ │ ├── ProductGenerator.cs │ │ │ ├── TicketGenerator.cs │ │ │ ├── TicketSummaryGenerator.cs │ │ │ └── TicketThreadGenerator.cs │ │ ├── Model/ │ │ │ ├── Category.cs │ │ │ ├── EvalQuestion.cs │ │ │ ├── Manual.cs │ │ │ ├── ManualPdf.cs │ │ │ ├── ManualToc.cs │ │ │ ├── Product.cs │ │ │ ├── Role.cs │ │ │ ├── Ticket.cs │ │ │ ├── TicketThread.cs │ │ │ └── TicketThreadMessage.cs │ │ ├── Program.cs │ │ └── appsettings.json │ ├── dev/ │ │ ├── categories.json │ │ ├── customers.json │ │ ├── evalquestions.json │ │ ├── manual-chunks.json │ │ ├── products.json │ │ └── tickets.json │ └── test/ │ ├── categories.json │ ├── customers.json │ ├── evalquestions.json │ ├── manual-chunks.json │ ├── products.json │ └── tickets.json ├── src/ │ ├── AppHost/ │ │ ├── .gitignore │ │ ├── AppHost.csproj │ │ ├── Ollama/ │ │ │ ├── OllamaResource.cs │ │ │ └── OllamaResourceExtensions.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── Python/ │ │ │ └── PythonUvicornAppResourceBuilderExtensions.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Backend/ │ │ ├── Api/ │ │ │ ├── AssistantApi.cs │ │ │ ├── CatalogApi.cs │ │ │ ├── TicketApi.cs │ │ │ └── TicketMessagingApi.cs │ │ ├── Backend.csproj │ │ ├── Data/ │ │ │ ├── AppDbContext.cs │ │ │ ├── AsyncEnumerableExtensions.cs │ │ │ ├── Customer.cs │ │ │ ├── ManualChunk.cs │ │ │ ├── Message.cs │ │ │ ├── Product.cs │ │ │ ├── ProductCategory.cs │ │ │ └── Ticket.cs │ │ ├── HttpContextUserIdentityExtensions.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── Services/ │ │ │ ├── ProductManualSemanticSearch.cs │ │ │ ├── ProductSemanticSearch.cs │ │ │ └── TicketSummarizer.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── CustomerWebUI/ │ │ ├── Components/ │ │ │ ├── App.razor │ │ │ ├── Layout/ │ │ │ │ ├── FooterBar.razor │ │ │ │ ├── FooterBar.razor.css │ │ │ │ ├── HeaderBar.razor │ │ │ │ ├── HeaderBar.razor.css │ │ │ │ ├── MainLayout.razor │ │ │ │ ├── MainLayout.razor.css │ │ │ │ ├── UserMenu.razor │ │ │ │ └── UserMenu.razor.css │ │ │ ├── Pages/ │ │ │ │ ├── Error.razor │ │ │ │ ├── Home.razor │ │ │ │ └── Support/ │ │ │ │ ├── Ticket.razor │ │ │ │ ├── Ticket.razor.css │ │ │ │ ├── TicketCreate.razor │ │ │ │ ├── TicketCreate.razor.css │ │ │ │ ├── TicketList.razor │ │ │ │ └── TicketList.razor.css │ │ │ ├── Routes.razor │ │ │ └── _Imports.razor │ │ ├── CustomerWebUI.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── wwwroot/ │ │ └── css/ │ │ ├── app.css │ │ └── normalize.css │ ├── DataIngestor/ │ │ ├── DataIngestor.csproj │ │ ├── EvalQuestionIngestor.cs │ │ ├── ManualIngestor.cs │ │ ├── ManualZipIngestor.cs │ │ ├── PathUtils.cs │ │ ├── ProductCategoryIngestor.cs │ │ ├── ProductIngestor.cs │ │ ├── Program.cs │ │ └── TicketIngestor.cs │ ├── Evaluator/ │ │ ├── .gitignore │ │ ├── EvalQuestion.cs │ │ ├── Evaluator.csproj │ │ ├── Program.cs │ │ └── appsettings.json │ ├── IdentityServer/ │ │ ├── .gitignore │ │ ├── Config.cs │ │ ├── HostingExtensions.cs │ │ ├── IdentityServer.csproj │ │ ├── Pages/ │ │ │ ├── Account/ │ │ │ │ ├── AccessDenied.cshtml │ │ │ │ ├── AccessDenied.cshtml.cs │ │ │ │ ├── Create/ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ ├── Index.cshtml.cs │ │ │ │ │ └── InputModel.cs │ │ │ │ ├── Login/ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ ├── Index.cshtml.cs │ │ │ │ │ ├── InputModel.cs │ │ │ │ │ ├── LoginOptions.cs │ │ │ │ │ └── ViewModel.cs │ │ │ │ └── Logout/ │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ ├── LoggedOut.cshtml │ │ │ │ ├── LoggedOut.cshtml.cs │ │ │ │ ├── LoggedOutViewModel.cs │ │ │ │ └── LogoutOptions.cs │ │ │ ├── Ciba/ │ │ │ │ ├── All.cshtml │ │ │ │ ├── All.cshtml.cs │ │ │ │ ├── Consent.cshtml │ │ │ │ ├── Consent.cshtml.cs │ │ │ │ ├── ConsentOptions.cs │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ ├── InputModel.cs │ │ │ │ ├── ViewModel.cs │ │ │ │ └── _ScopeListItem.cshtml │ │ │ ├── Consent/ │ │ │ │ ├── ConsentOptions.cs │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ ├── InputModel.cs │ │ │ │ ├── ViewModel.cs │ │ │ │ └── _ScopeListItem.cshtml │ │ │ ├── Device/ │ │ │ │ ├── DeviceOptions.cs │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ ├── InputModel.cs │ │ │ │ ├── Success.cshtml │ │ │ │ ├── Success.cshtml.cs │ │ │ │ ├── ViewModel.cs │ │ │ │ └── _ScopeListItem.cshtml │ │ │ ├── Diagnostics/ │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ └── ViewModel.cs │ │ │ ├── Extensions.cs │ │ │ ├── ExternalLogin/ │ │ │ │ ├── Callback.cshtml │ │ │ │ ├── Callback.cshtml.cs │ │ │ │ ├── Challenge.cshtml │ │ │ │ └── Challenge.cshtml.cs │ │ │ ├── Grants/ │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ └── ViewModel.cs │ │ │ ├── Home/ │ │ │ │ └── Error/ │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ └── ViewModel.cs │ │ │ ├── IdentityServerSuppressions.cs │ │ │ ├── Index.cshtml │ │ │ ├── Index.cshtml.cs │ │ │ ├── Log.cs │ │ │ ├── Redirect/ │ │ │ │ ├── Index.cshtml │ │ │ │ └── Index.cshtml.cs │ │ │ ├── SecurityHeadersAttribute.cs │ │ │ ├── ServerSideSessions/ │ │ │ │ ├── Index.cshtml │ │ │ │ └── Index.cshtml.cs │ │ │ ├── Shared/ │ │ │ │ ├── _Layout.cshtml │ │ │ │ ├── _Nav.cshtml │ │ │ │ └── _ValidationSummary.cshtml │ │ │ ├── Telemetry.cs │ │ │ ├── TestUsers.cs │ │ │ ├── _ViewImports.cshtml │ │ │ └── _ViewStart.cshtml │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.json │ │ └── wwwroot/ │ │ ├── css/ │ │ │ ├── site.css │ │ │ └── site.scss │ │ ├── js/ │ │ │ ├── signin-redirect.js │ │ │ └── signout-redirect.js │ │ └── lib/ │ │ ├── bootstrap/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── dist/ │ │ │ ├── css/ │ │ │ │ ├── bootstrap-grid.css │ │ │ │ ├── bootstrap-reboot.css │ │ │ │ └── bootstrap.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ └── bootstrap.js │ │ ├── bootstrap4-glyphicons/ │ │ │ ├── LICENSE │ │ │ ├── css/ │ │ │ │ └── bootstrap-glyphicons.css │ │ │ └── maps/ │ │ │ ├── glyphicons-fontawesome.css │ │ │ └── glyphicons-fontawesome.less │ │ └── jquery/ │ │ ├── LICENSE.txt │ │ ├── README.md │ │ └── dist/ │ │ ├── jquery.js │ │ └── jquery.slim.js │ ├── PythonInference/ │ │ ├── PythonInference.pyproj │ │ ├── main.py │ │ ├── requirements.txt │ │ └── routers/ │ │ ├── classifier.py │ │ └── embedder.py │ ├── ServiceDefaults/ │ │ ├── Clients/ │ │ │ ├── Backend/ │ │ │ │ ├── CustomerBackendClient.cs │ │ │ │ ├── DevToolBackendClient.cs │ │ │ │ └── StaffBackendClient.cs │ │ │ ├── ChatCompletion/ │ │ │ │ ├── ChatCompletionServiceExtensions.cs │ │ │ │ ├── PreventStreamingWithFunctions.cs │ │ │ │ ├── ServiceCollectionChatClientExtensions.cs │ │ │ │ └── TestCachingChatClientBuilderExtensions.cs │ │ │ ├── HttpClientExtensions.cs │ │ │ ├── PythonInference/ │ │ │ │ └── PythonInferenceClient.cs │ │ │ └── QdrantHttpClientExtensions.cs │ │ ├── Extensions.cs │ │ └── ServiceDefaults.csproj │ └── StaffWebUI/ │ ├── Components/ │ │ ├── App.razor │ │ ├── Layout/ │ │ │ ├── LoginDisplay.razor │ │ │ ├── LoginDisplay.razor.css │ │ │ ├── MainLayout.razor │ │ │ ├── MainLayout.razor.css │ │ │ ├── ThemePicker.razor │ │ │ ├── ThemePicker.razor.css │ │ │ └── Title.razor │ │ ├── Pages/ │ │ │ ├── Account/ │ │ │ │ └── AccessDenied.razor │ │ │ ├── Error.razor │ │ │ ├── RedisSubscribingComponent.cs │ │ │ ├── Ticket/ │ │ │ │ ├── Ticket.razor │ │ │ │ ├── Ticket.razor.css │ │ │ │ ├── TicketAssistant.razor │ │ │ │ ├── TicketAssistant.razor.css │ │ │ │ ├── TicketAssistant.razor.js │ │ │ │ ├── TicketAssistantMessage.razor │ │ │ │ ├── TicketAssistantMessage.razor.css │ │ │ │ ├── TicketAssistantMessage.razor.js │ │ │ │ ├── TicketDetails.razor │ │ │ │ ├── TicketDetails.razor.css │ │ │ │ ├── TicketMessages.razor │ │ │ │ └── TicketMessages.razor.css │ │ │ └── Tickets/ │ │ │ ├── Columns/ │ │ │ │ ├── LinkPropertyColumn.cs │ │ │ │ └── LinkTemplateColumn.cs │ │ │ ├── SatisfactionIndicator.razor │ │ │ ├── SatisfactionIndicator.razor.css │ │ │ ├── Tickets.razor │ │ │ ├── Tickets.razor.css │ │ │ ├── TicketsFilter.razor │ │ │ └── TicketsFilter.razor.css │ │ ├── Routes.razor │ │ └── _Imports.razor │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── StaffWebUI.csproj │ ├── appsettings.Development.json │ ├── appsettings.json │ └── wwwroot/ │ ├── app.css │ ├── manual.html │ ├── pdfjs-4.2.67-dist/ │ │ ├── LICENSE │ │ ├── build/ │ │ │ ├── pdf.mjs │ │ │ ├── pdf.sandbox.mjs │ │ │ └── pdf.worker.mjs │ │ └── web/ │ │ ├── viewer.css │ │ ├── viewer.html │ │ └── viewer.mjs │ └── theme-info.js └── test/ ├── E2ETest/ │ ├── ChatCompletionCache/ │ │ ├── 5AF0103EF2560BEC4FE94D21D18E3A1945C5202F7B452834A8FFC891322F321A.json │ │ ├── 6981B02D1211D89EAD2B18D2A00BC2CC55A0CAA06E294C0318ADBB35112EB9D7.json │ │ ├── 973247AA1FE93490986EF3435E4C6D88928EC469857A873D0899EB4389672BB0.json │ │ ├── C70A33FF52171DCD96D2BF8F41BC45DE1FA308FAF38030F5EFE5764FDA6F787A.json │ │ ├── E55E8743B91B9650A9C60E7DF7627B0B5C39C8CD35093DF9D6F6EE4CF476FE87.json │ │ └── F7F43C2AD0BFAB1D1CEECA1454D8C1DD286336B9E097A32FA1A8FFEEA785937E.json │ ├── E2ETest.csproj │ ├── GlobalUsings.cs │ ├── Infrastructure/ │ │ ├── AppHostFixture.cs │ │ ├── AppTestCollection.cs │ │ ├── LoginExtensions.cs │ │ └── PlaywrightTestBase.cs │ ├── TicketAssistantTest.cs │ └── TicketsListTest.cs └── EvaluationTests/ ├── AnswerScoringEvaluator.cs ├── EvalQuestion.cs ├── EvaluationTests.cs ├── EvaluationTests.csproj ├── README.md ├── Settings.cs └── appsettings.json