temp1
This commit is contained in:
90
AICore/AICore.csproj
Normal file
90
AICore/AICore.csproj
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>AICore</RootNamespace>
|
||||||
|
<AssemblyName>BeWo.Features.AICore</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.2\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.IO.Pipelines, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.IO.Pipelines.9.0.2\lib\net462\System.IO.Pipelines.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Text.Encodings.Web, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Text.Encodings.Web.9.0.2\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Text.Json, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Text.Json.9.0.2\lib\net462\System.Text.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Context\Core\ContextEntryMapperFactory.cs" />
|
||||||
|
<Compile Include="Context\Entry\BaseContextEntry.cs" />
|
||||||
|
<Compile Include="Context\EntryMapper\BaseContextEntryMapper.cs" />
|
||||||
|
<Compile Include="Context\Core\ContextSummaryFactory.cs" />
|
||||||
|
<Compile Include="Context\Summary\BaseContextSummary.cs" />
|
||||||
|
<Compile Include="Prompt\Core\AiUtils.cs" />
|
||||||
|
<Compile Include="Prompt\Factories\BaseAiPromptFactory.cs" />
|
||||||
|
<Compile Include="Prompt\Factories\JsonAiPromptFactory.cs" />
|
||||||
|
<Compile Include="Prompt\Models\AiConversationContext.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Prompt\SystemPrompts\system_prompt1.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Prompt\SystemPrompts\system_prompt2.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Prompt\SystemPrompts\system_prompt3.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Data\Data.csproj">
|
||||||
|
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
|
||||||
|
<Name>Data</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\ServiceUtils\ServiceUtils.csproj">
|
||||||
|
<Project>{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}</Project>
|
||||||
|
<Name>ServiceUtils</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Shared\Shared.csproj">
|
||||||
|
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
|
||||||
|
<Name>Shared</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="app.config" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
29
AICore/Context/Core/ContextEntryMapperFactory.cs
Normal file
29
AICore/Context/Core/ContextEntryMapperFactory.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using AICore.Context.Entry;
|
||||||
|
using AICore.Context.EntryMapper;
|
||||||
|
using BeWo.Data.Entities;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AICore.Context.Core
|
||||||
|
{
|
||||||
|
public static class ContextEntryMapperFactory
|
||||||
|
{
|
||||||
|
public static CustomerContextEntryMapper CustomerMapper { get; } = new CustomerContextEntryMapper();
|
||||||
|
public static EmployeeContextEntryMapper EmployeeMapper { get; } = new EmployeeContextEntryMapper();
|
||||||
|
public static PersonContextEntryMapper PersonMapper { get; } = new PersonContextEntryMapper();
|
||||||
|
public static OrganisationContextEntryMapper OrganisationMapper { get; } = new OrganisationContextEntryMapper();
|
||||||
|
public static SupportConceptContextEntryMapper SupportConceptMapper { get; } = new SupportConceptContextEntryMapper();
|
||||||
|
|
||||||
|
public static CustomerNavigationContextEntryMapper CustomerNavigationMapper { get; } = new CustomerNavigationContextEntryMapper();
|
||||||
|
public static EmployeeNavigationContextEntryMapper EmployeeNavigationMapper { get; } = new EmployeeNavigationContextEntryMapper();
|
||||||
|
public static PersonNavigationContextEntryMapper PersonNavigationMapper { get; } = new PersonNavigationContextEntryMapper();
|
||||||
|
public static OrganisationNavigationContextEntryMapper OrganisationNavigationMapper { get; } = new OrganisationNavigationContextEntryMapper();
|
||||||
|
public static SupportConceptNavigationContextEntryMapper SupportConceptNavigationMapper { get; } = new SupportConceptNavigationContextEntryMapper();
|
||||||
|
|
||||||
|
public static ServiceRecordContextEntryMapper ServiceRecordMapper { get; } = new ServiceRecordContextEntryMapper();
|
||||||
|
public static BaseContextEntryMapper<Customer, CustomerNavigationContextEntry> ServiceRecordCustomerMapper { get; } = new CustomerNavigationContextEntryMapper();
|
||||||
|
}
|
||||||
|
}
|
||||||
109
AICore/Context/Core/ContextSummaryFactory.cs
Normal file
109
AICore/Context/Core/ContextSummaryFactory.cs
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
using AICore.Context.Core;
|
||||||
|
using AICore.Context.Entry;
|
||||||
|
using AICore.Context.EntryMapper;
|
||||||
|
using AICore.Context.Summary;
|
||||||
|
using BeWo.Data.Entities;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AICore.Context.SummaryMapper
|
||||||
|
{
|
||||||
|
public static class ContextSummaryFactory
|
||||||
|
{
|
||||||
|
public static CustomerDetailContextSummary CreateCustomerDetailContextSummary(Customer customer)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.CustomerMapper.MapToNewContext(customer);
|
||||||
|
|
||||||
|
return new CustomerDetailContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EmployeeDetailContextSummary CreateEmployeeDetailContextSummary(Employee employee)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.EmployeeMapper.MapToNewContext(employee);
|
||||||
|
|
||||||
|
return new EmployeeDetailContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PersonDetailContextSummary CreatePersonDetailContextSummary(Person person)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.PersonMapper.MapToNewContext(person);
|
||||||
|
|
||||||
|
return new PersonDetailContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OrganisationDetailContextSummary CreateOrganisationDetailContextSummary(Organisation organisation)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.OrganisationMapper.MapToNewContext(organisation);
|
||||||
|
|
||||||
|
return new OrganisationDetailContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SupportConceptDetailContextSummary CreateSupportConceptDetailContextSummary(SupportConcept supportConcept)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.SupportConceptMapper.MapToNewContext(supportConcept);
|
||||||
|
|
||||||
|
return new SupportConceptDetailContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CustomerNavigationContextSummary CreateCustomerNavigationContextSummary(IEnumerable<Customer> customer)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.CustomerNavigationMapper.MapToNewContexts(customer);
|
||||||
|
|
||||||
|
return new CustomerNavigationContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EmployeeNavigationContextSummary CreateEmployeeNavigationContextSummary(IEnumerable<Employee> employee)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.EmployeeNavigationMapper.MapToNewContexts(employee);
|
||||||
|
|
||||||
|
return new EmployeeNavigationContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PersonNavigationContextSummary CreatePersonNavigationContextSummary(IEnumerable<Person >person)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.PersonNavigationMapper.MapToNewContexts(person);
|
||||||
|
|
||||||
|
return new PersonNavigationContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OrganisationNavigationContextSummary CreateOrganisationNavigationContextSummary(IEnumerable<Organisation >organisation)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.OrganisationNavigationMapper.MapToNewContexts(organisation);
|
||||||
|
|
||||||
|
return new OrganisationNavigationContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SupportConceptNavigationContextSummary CreateSupportConceptNavigationContextSummary(IEnumerable<SupportConcept> supportConcept)
|
||||||
|
{
|
||||||
|
var entry = ContextEntryMapperFactory.SupportConceptNavigationMapper.MapToNewContexts(supportConcept);
|
||||||
|
|
||||||
|
return new SupportConceptNavigationContextSummary(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ServiceRecordNavigationContextSummary CreateServiceRecordNavigationContextSummary(IEnumerable<ServiceRecord> serviceRecords, Customer customer, string costBearer, string supportConcept)
|
||||||
|
{
|
||||||
|
var entries = ContextEntryMapperFactory.ServiceRecordMapper.MapToNewContexts(serviceRecords);
|
||||||
|
var customer_entry = ContextEntryMapperFactory.ServiceRecordCustomerMapper.MapToNewContext(customer);
|
||||||
|
|
||||||
|
return new ServiceRecordNavigationContextSummary(entries, customer_entry, costBearer, supportConcept);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServiceRecordNavigationContextSummary : NavigationContextSummary<ServiceRecordContextEntry>
|
||||||
|
{
|
||||||
|
public CustomerNavigationContextEntry Customer { get; set; }
|
||||||
|
public string CostBearer { get; set; }
|
||||||
|
public string SupportConcept { get; set; }
|
||||||
|
|
||||||
|
public ServiceRecordNavigationContextSummary(IEnumerable<ServiceRecordContextEntry> serviceRecords, CustomerNavigationContextEntry customer, string costBearer, string supportConcept)
|
||||||
|
: base(serviceRecords)
|
||||||
|
{
|
||||||
|
Customer = customer;
|
||||||
|
CostBearer = costBearer;
|
||||||
|
SupportConcept = supportConcept;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
131
AICore/Context/Entry/BaseContextEntry.cs
Normal file
131
AICore/Context/Entry/BaseContextEntry.cs
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
using BeWo.Data.Entities;
|
||||||
|
using BS.Shared.DataContracts.Compact;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AICore.Context.Entry
|
||||||
|
{
|
||||||
|
public abstract class BaseContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class DetailContextEntry : BaseContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomerDetailContextEntry : DetailContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EmployeeDetailContextEntry : DetailContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PersonDetailContextEntry : DetailContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OrganisationDetailContextEntry : DetailContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SupportConceptDetailContextEntry : DetailContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class NavigationContextEntry : BaseContextEntry
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomerNavigationContextEntry : NavigationContextEntry
|
||||||
|
{
|
||||||
|
[JsonPropertyName("Adresse")]
|
||||||
|
public string AddressString { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("Alias")]
|
||||||
|
public string CustomerAlias { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("Klient-ID")]
|
||||||
|
public long CustomerOid { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("Geburtstag")]
|
||||||
|
public string DateOfBirthString { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("EigenkapitalBeitrag")]
|
||||||
|
public decimal EquityContribution { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("Name")]
|
||||||
|
public string EquityConFullNametribution { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("Rechnungsadresse")]
|
||||||
|
public string InvoiceAddressString { get; set; }
|
||||||
|
}
|
||||||
|
public class EmployeeNavigationContextEntry : NavigationContextEntry {
|
||||||
|
[JsonPropertyName("Mitarbeiter-ID")]
|
||||||
|
public long EmployeeOid { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("Personalnummer")]
|
||||||
|
public string PersonnelNumber { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("Name")]
|
||||||
|
public string FirstNameLastName { get; set; }
|
||||||
|
}
|
||||||
|
public class PersonNavigationContextEntry : NavigationContextEntry {
|
||||||
|
public string AddressString { get; set; }
|
||||||
|
public DateTime Birthday { get; set; }
|
||||||
|
public long CustomerOid { get; set; }
|
||||||
|
public long EmployeeOid { get; set; }
|
||||||
|
public string FullName { get; set; }
|
||||||
|
public string Geschlecht { get; set; }
|
||||||
|
public string Function { get; set; }
|
||||||
|
}
|
||||||
|
public class OrganisationNavigationContextEntry : NavigationContextEntry {
|
||||||
|
public long OrganisationOid { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Name2 { get; set; }
|
||||||
|
public string DebitorNumber { get; set; }
|
||||||
|
public string BusinessPartnerId { get; set; }
|
||||||
|
public string AddressString { get; set; }
|
||||||
|
public string IKDatenannahmestelle { get; set; }
|
||||||
|
public string IKKostentrager { get; set; }
|
||||||
|
public string IKKrankenkasse { get; set; }
|
||||||
|
}
|
||||||
|
public class SupportConceptNavigationContextEntry : NavigationContextEntry {
|
||||||
|
public long SupportConceptOid { get; set; }
|
||||||
|
public string AddressString { get; set; }
|
||||||
|
public string AllCostBearerNames { get; set; }
|
||||||
|
public object CostBearer { get; set; }
|
||||||
|
public string CostBearerDetailStrings { get; set; }
|
||||||
|
public long CustomerOid { get; set; }
|
||||||
|
public DateTime StartDate { get; set; }
|
||||||
|
public DateTime EndDate { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServiceRecordContextEntry : NavigationContextEntry
|
||||||
|
{
|
||||||
|
public string ServiceRecordOid { get; set; }
|
||||||
|
public DateTime Start { get; set; }
|
||||||
|
public DateTime End { get; set; }
|
||||||
|
public decimal DurationInStunden { get; set; }
|
||||||
|
public string CategoryName { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Notice { get; set; }
|
||||||
|
public decimal DistanceInMeter { get; set; }
|
||||||
|
public DateTime InsertedOn { get; set; }
|
||||||
|
public decimal Betrag { get; set; }
|
||||||
|
public object InsUser { get; set; }
|
||||||
|
public object Employee { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
146
AICore/Context/EntryMapper/BaseContextEntryMapper.cs
Normal file
146
AICore/Context/EntryMapper/BaseContextEntryMapper.cs
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
using AICore.Context.Entry;
|
||||||
|
using BeWo.Data.Entities;
|
||||||
|
using BS.Shared.DataContracts;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace AICore.Context.EntryMapper
|
||||||
|
{
|
||||||
|
public abstract class BaseContextEntryMapper<TObject, TContext>
|
||||||
|
where TObject : class, new() where TContext : BaseContextEntry, new()
|
||||||
|
{
|
||||||
|
public virtual TContext MapToNewContext(TObject pObject)
|
||||||
|
{
|
||||||
|
return MergeWithObject(pObject, CreateNewContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual TContext CreateNewContext()
|
||||||
|
{
|
||||||
|
return new TContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual IEnumerable<TContext> MapToNewContexts(IEnumerable<TObject> pObjects)
|
||||||
|
{
|
||||||
|
if(pObjects is null || !pObjects.Any())
|
||||||
|
return Enumerable.Empty<TContext>();
|
||||||
|
|
||||||
|
return pObjects.Select(MapToNewContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract TContext MergeWithObject(TObject pDataContract, TContext pContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomerContextEntryMapper : BaseContextEntryMapper<Customer, CustomerDetailContextEntry>
|
||||||
|
{
|
||||||
|
public override CustomerDetailContextEntry MergeWithObject(Customer pObject, CustomerDetailContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EmployeeContextEntryMapper : BaseContextEntryMapper<Employee, EmployeeDetailContextEntry>
|
||||||
|
{
|
||||||
|
public override EmployeeDetailContextEntry MergeWithObject(Employee pObject, EmployeeDetailContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PersonContextEntryMapper : BaseContextEntryMapper<Person, PersonDetailContextEntry>
|
||||||
|
{
|
||||||
|
public override PersonDetailContextEntry MergeWithObject(Person pObject, PersonDetailContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OrganisationContextEntryMapper : BaseContextEntryMapper<Organisation, OrganisationDetailContextEntry>
|
||||||
|
{
|
||||||
|
public override OrganisationDetailContextEntry MergeWithObject(Organisation pObject, OrganisationDetailContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SupportConceptContextEntryMapper : BaseContextEntryMapper<SupportConcept, SupportConceptDetailContextEntry>
|
||||||
|
{
|
||||||
|
public override SupportConceptDetailContextEntry MergeWithObject(SupportConcept pObject, SupportConceptDetailContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomerNavigationContextEntryMapper : BaseContextEntryMapper<Customer, CustomerNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public override CustomerNavigationContextEntry MergeWithObject(Customer pObject, CustomerNavigationContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EmployeeNavigationContextEntryMapper : BaseContextEntryMapper<Employee, EmployeeNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public override EmployeeNavigationContextEntry MergeWithObject(Employee pObject, EmployeeNavigationContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PersonNavigationContextEntryMapper : BaseContextEntryMapper<Person, PersonNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public override PersonNavigationContextEntry MergeWithObject(Person pObject, PersonNavigationContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OrganisationNavigationContextEntryMapper : BaseContextEntryMapper<Organisation, OrganisationNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public override OrganisationNavigationContextEntry MergeWithObject(Organisation pObject, OrganisationNavigationContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SupportConceptNavigationContextEntryMapper : BaseContextEntryMapper<SupportConcept, SupportConceptNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public override SupportConceptNavigationContextEntry MergeWithObject(SupportConcept pObject, SupportConceptNavigationContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServiceRecordContextEntryMapper : BaseContextEntryMapper<ServiceRecord, ServiceRecordContextEntry>
|
||||||
|
{
|
||||||
|
public override ServiceRecordContextEntry MergeWithObject(ServiceRecord pObject, ServiceRecordContextEntry pContext)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
//public override Dictionary<string, object> ToJsonDictionary(ServiceRecordDC service_record)
|
||||||
|
//{
|
||||||
|
// var record_dict = new Dictionary<string, object>
|
||||||
|
// {
|
||||||
|
// { "Zeiteintrag-ID", service_record.ServiceRecordOid},
|
||||||
|
// { "Startdatum", service_record.Start },
|
||||||
|
// { "Enddatum", service_record.End },
|
||||||
|
// { "Dauer in Stunden", service_record.DurationInStunden },
|
||||||
|
// { "Leistungskategorie", service_record.ServiceDescription.Category.Name },
|
||||||
|
// { "Leistungsbeschreibung", service_record.ServiceDescription.Name },
|
||||||
|
// { "Dokumentation", service_record.Notice
|
||||||
|
// + "\n" + service_record.Notice2
|
||||||
|
// + "\n" + service_record.Notice3
|
||||||
|
// + "\n" + service_record.Notice4
|
||||||
|
// + "\n" + service_record.Notice5},
|
||||||
|
// { "Distanze in Meter", service_record.DistanceInMeter ?? 0 },
|
||||||
|
// { "Eingetragen am", service_record.InsertedOn },
|
||||||
|
// { "Betrag", service_record.Betrag },
|
||||||
|
// { "Eingetragen von", service_record.InsUser },
|
||||||
|
// { "Mitarbeiter", service_record.Employee }
|
||||||
|
// };
|
||||||
|
|
||||||
|
// return record_dict;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
115
AICore/Context/Summary/BaseContextSummary.cs
Normal file
115
AICore/Context/Summary/BaseContextSummary.cs
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
using AICore.Context.Entry;
|
||||||
|
using AICore.Context.EntryMapper;
|
||||||
|
using BeWo.Data.Entities;
|
||||||
|
using BS.Shared;
|
||||||
|
using BS.Shared.DataContracts;
|
||||||
|
using BS.Shared.DataContracts.Compact;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AICore.Context.Summary
|
||||||
|
{
|
||||||
|
public abstract class BaseContextSummary
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class DetailContext<T> : BaseContextSummary where T : DetailContextEntry
|
||||||
|
{
|
||||||
|
public T DataContext { get; set; }
|
||||||
|
|
||||||
|
protected DetailContext(T dataContext)
|
||||||
|
{
|
||||||
|
DataContext = dataContext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class NavigationContextSummary<T> : BaseContextSummary where T : NavigationContextEntry
|
||||||
|
{
|
||||||
|
public IEnumerable<T> DataContext { get; set; }
|
||||||
|
|
||||||
|
protected NavigationContextSummary(IEnumerable<T> dataContext)
|
||||||
|
{
|
||||||
|
DataContext = dataContext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomerDetailContextSummary : DetailContext<CustomerDetailContextEntry>
|
||||||
|
{
|
||||||
|
public CustomerDetailContextSummary(CustomerDetailContextEntry customer) : base(customer) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EmployeeDetailContextSummary : DetailContext<EmployeeDetailContextEntry>
|
||||||
|
{
|
||||||
|
public EmployeeDetailContextSummary(EmployeeDetailContextEntry employee) : base(employee) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PersonDetailContextSummary : DetailContext<PersonDetailContextEntry>
|
||||||
|
{
|
||||||
|
public PersonDetailContextSummary(PersonDetailContextEntry person) : base(person) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OrganisationDetailContextSummary : DetailContext<OrganisationDetailContextEntry>
|
||||||
|
{
|
||||||
|
public OrganisationDetailContextSummary(OrganisationDetailContextEntry organisation) : base(organisation) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SupportConceptDetailContextSummary : DetailContext<SupportConceptDetailContextEntry>
|
||||||
|
{
|
||||||
|
public SupportConceptDetailContextSummary(SupportConceptDetailContextEntry supportConcept) : base(supportConcept) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomerNavigationContextSummary : NavigationContextSummary<CustomerNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public CustomerNavigationContextSummary(IEnumerable<CustomerNavigationContextEntry> customers) : base(customers) { }
|
||||||
|
}
|
||||||
|
public class EmployeeNavigationContextSummary : NavigationContextSummary<EmployeeNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public EmployeeNavigationContextSummary(IEnumerable<EmployeeNavigationContextEntry> employee) : base(employee) { }
|
||||||
|
}
|
||||||
|
public class PersonNavigationContextSummary : NavigationContextSummary<PersonNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public PersonNavigationContextSummary(IEnumerable<PersonNavigationContextEntry> person) : base(person) { }
|
||||||
|
}
|
||||||
|
public class OrganisationNavigationContextSummary : NavigationContextSummary<OrganisationNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public OrganisationNavigationContextSummary(IEnumerable<OrganisationNavigationContextEntry> organisation) : base(organisation) { }
|
||||||
|
}
|
||||||
|
public class SupportConceptNavigationContextSummary : NavigationContextSummary<SupportConceptNavigationContextEntry>
|
||||||
|
{
|
||||||
|
public SupportConceptNavigationContextSummary(IEnumerable<SupportConceptNavigationContextEntry> supportConcept) : base(supportConcept) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServiceRecordNavigationContextSummary : NavigationContextSummary<ServiceRecordContextEntry>
|
||||||
|
{
|
||||||
|
public CustomerNavigationContextEntry Customer { get; set; }
|
||||||
|
public string CostBearer { get; set; }
|
||||||
|
public string SupportConcept { get; set; }
|
||||||
|
|
||||||
|
public ServiceRecordNavigationContextSummary(List<ServiceRecordContextEntry> serviceRecords, CustomerNavigationContextEntry customer, string costBearer, string supportConcept)
|
||||||
|
: base(serviceRecords)
|
||||||
|
{
|
||||||
|
Customer = customer;
|
||||||
|
CostBearer = costBearer;
|
||||||
|
SupportConcept = supportConcept;
|
||||||
|
}
|
||||||
|
|
||||||
|
//var customer = LoadEntity(bewoobjects, TableID.Customer, MapperFactory.CompactCustomerDC_Customer);
|
||||||
|
//var costbearer = LoadProperty(bewoobjects, TableID.CostBearer, MapperFactory.CompactOrganisationDC_Organisation, dc => dc.Name);
|
||||||
|
//var supportconcept = LoadProperty(bewoobjects, TableID.SupportConcept, MapperFactory.CompactSupportConceptDC_SupportConcept, dc => $"{dc.StartDate?.Date} - {dc.EndDate?.Date}");
|
||||||
|
//var records = LoadEntities(bewoobjects, TableID.ServiceRecord, MapperFactory.ServiceRecordDC_ServiceRecord);
|
||||||
|
|
||||||
|
//var result = new Dictionary<TableID, object>
|
||||||
|
// {
|
||||||
|
// { TableID.ServiceRecord, records },
|
||||||
|
// { TableID.Customer, customer },
|
||||||
|
// { TableID.CostBearer, costbearer },
|
||||||
|
// { TableID.SupportConcept, supportconcept }
|
||||||
|
// };
|
||||||
|
|
||||||
|
// return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
16
AICore/Prompt/Core/AiUtils.cs
Normal file
16
AICore/Prompt/Core/AiUtils.cs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
using BS.Shared;
|
||||||
|
using BS.Shared.Exceptions;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AICore.Prompt.Core
|
||||||
|
{
|
||||||
|
public static class AiUtils
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
306
AICore/Prompt/Factories/BaseAiPromptFactory.cs
Normal file
306
AICore/Prompt/Factories/BaseAiPromptFactory.cs
Normal file
@@ -0,0 +1,306 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using AICore.Context.Summary;
|
||||||
|
using AICore.Context.SummaryMapper;
|
||||||
|
using BeWo.Data.Access;
|
||||||
|
using BeWo.Data.Entities;
|
||||||
|
using BeWo.ServiceUtils.Core;
|
||||||
|
using BS.Shared;
|
||||||
|
using BS.Shared.Exceptions;
|
||||||
|
using BS.Shared.Translation;
|
||||||
|
|
||||||
|
namespace AICore.Prompt.Factories
|
||||||
|
{
|
||||||
|
public abstract class BaseAiPromptFactory
|
||||||
|
{
|
||||||
|
public string CreateSystemInstructions(AiContextType uicontext, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
|
||||||
|
sb.AppendLine(getCustomSystemPrompt());
|
||||||
|
|
||||||
|
sb.AppendLine($"Ich befinde mich aktuell in der \"{Translator.Translate(uicontext)}\" meiner Anwendung.");
|
||||||
|
sb.AppendLine("Es ist kein Filter gesetzt.");
|
||||||
|
|
||||||
|
if (bewoobjects is null || bewoobjects.Count == 0)
|
||||||
|
{
|
||||||
|
sb.AppendLine("Dir wurden keine Daten bereitgestellt.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.AppendLine("Du erhälst folgendes:");
|
||||||
|
var parsed = LoadContext(uicontext, bewoobjects);
|
||||||
|
sb.AppendLine(parsed);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private string LoadContext(AiContextType uicontext, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
var context = GetContext(uicontext, bewoobjects);
|
||||||
|
|
||||||
|
var parsed = Parse(uicontext, null);
|
||||||
|
|
||||||
|
return parsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual string Parse(AiContextType uicontext, Dictionary<TableID, object> data)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BaseContextSummary GetContext(AiContextType uicontext, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
switch (uicontext)
|
||||||
|
{
|
||||||
|
case AiContextType.SupportConcept:
|
||||||
|
case AiContextType.Customer:
|
||||||
|
case AiContextType.Person:
|
||||||
|
case AiContextType.Employee:
|
||||||
|
case AiContextType.Organisation:
|
||||||
|
return GetNavigationContext(uicontext, bewoobjects);
|
||||||
|
case AiContextType.ServiceRecord:
|
||||||
|
return GetServiceRecordsContext(bewoobjects);
|
||||||
|
case AiContextType.CustomerSingle:
|
||||||
|
case AiContextType.PersonSingle:
|
||||||
|
case AiContextType.EmployeeSingle:
|
||||||
|
return GetSingleContext(uicontext, bewoobjects);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw BeWoNotImplementedException.CreateFromEnum(uicontext);
|
||||||
|
}
|
||||||
|
|
||||||
|
private BaseContextSummary GetNavigationContext(AiContextType uicontext, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
switch (uicontext)
|
||||||
|
{
|
||||||
|
case AiContextType.SupportConcept:
|
||||||
|
|
||||||
|
return new SupportConceptNavigationContextSummary(LoadEntities<SupportConcept>(bewoobjects, TableID.SupportConcept));
|
||||||
|
case AiContextType.Customer:
|
||||||
|
return new CustomerNavigationContextSummary(LoadEntities<Customer>(bewoobjects, TableID.Customer));
|
||||||
|
case AiContextType.Person:
|
||||||
|
return new PersonNavigationContextSummary(LoadEntities<Person>(bewoobjects, TableID.Person));
|
||||||
|
case AiContextType.Employee:
|
||||||
|
return new EmployeeNavigationContextSummary(LoadEntities<Employee>(bewoobjects, TableID.Employee));
|
||||||
|
case AiContextType.Organisation:
|
||||||
|
return new OrganisationNavigationContextSummary(LoadEntities<Organisation>(bewoobjects, TableID.Organisation));
|
||||||
|
}
|
||||||
|
|
||||||
|
throw BeWoNotImplementedException.CreateFromEnum(uicontext);
|
||||||
|
}
|
||||||
|
|
||||||
|
private BaseContextSummary GetServiceRecordsContext(Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
var context = new ServiceRecordNavigationContext()
|
||||||
|
}
|
||||||
|
|
||||||
|
private BaseContextSummary GetSingleContext(AiContextType uicontext, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
switch (uicontext)
|
||||||
|
{
|
||||||
|
case AiContextType.CustomerSingle:
|
||||||
|
return new CustomerDetailContextSummary(LoadEntity<Customer>(bewoobjects, TableID.Customer));
|
||||||
|
case AiContextType.PersonSingle:
|
||||||
|
return new PersonDetailContextSummary(LoadEntity<Person>(bewoobjects, TableID.Person));
|
||||||
|
case AiContextType.EmployeeSingle:
|
||||||
|
return new EmployeeDetailContextSummary(LoadEntity<Employee>(bewoobjects, TableID.Employee));
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw BeWoNotImplementedException.CreateFromEnum(uicontext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<TableID, object> LoadContext(int uicontext, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
var result = new Dictionary<TableID, object>();
|
||||||
|
|
||||||
|
switch (uicontext)
|
||||||
|
{
|
||||||
|
case 0: return LoadNavigationContext(TableID.SupportConcept, bewoobjects);
|
||||||
|
case 1: return LoadNavigationContext(TableID.Customer, bewoobjects);
|
||||||
|
case 2: return LoadNavigationContext(TableID.Person, bewoobjects);
|
||||||
|
case 3: return LoadNavigationContext(TableID.Employee, bewoobjects);
|
||||||
|
case 4: return LoadNavigationContext(TableID.Organisation, bewoobjects);
|
||||||
|
//case 5: return "Team Navigation";
|
||||||
|
//case 6: return "Dokumente Navigation";
|
||||||
|
//case 7: return "Benutzer Navigation";
|
||||||
|
//case 8: return "Benutzergruppe Navigation";
|
||||||
|
//case 9: return "Bericht Navigation";
|
||||||
|
//case 10: return "Planer Navigation";
|
||||||
|
//case 11: return "Wohnheim Navigation";
|
||||||
|
//case 12: return "Vertretungen Navigation";
|
||||||
|
//case 13: return "Kunden-Team Navigation";
|
||||||
|
//case 14: return "Terminplanung Navigation";
|
||||||
|
//case 15: return "Finanz Navigation";
|
||||||
|
//case 16: return "Verwaltung Navigation";
|
||||||
|
//case 17: return "KI-Gesprächs Navigation";
|
||||||
|
//case 18: return "KI-Gesprächs Popup Navigation";
|
||||||
|
case 19: return LoadServiceRecordsContext(bewoobjects);
|
||||||
|
case 20: return LoadSingleContext(TableID.Customer, bewoobjects);
|
||||||
|
//case 21: return "Person Einzelansicht Navigation";
|
||||||
|
//case 22: return "Mitarbeiter Einzelansicht Navigation";
|
||||||
|
default:
|
||||||
|
throw new NotImplementedException($"UI Kontext {uicontext} ist nicht implementiert.");
|
||||||
|
//Alternativ könnte man auch einen Standard-String zurückgeben,
|
||||||
|
//z.B. return "Unbekannter UI-Kontext";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dictionary<TableID, object> LoadNavigationContext(TableID tableid, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
IList<Dictionary<string, object>> entities;
|
||||||
|
|
||||||
|
switch (tableid)
|
||||||
|
{
|
||||||
|
case TableID.Person:
|
||||||
|
entities = LoadEntities(bewoobjects, tableid, MapperFactory.CompactPersonDC_Person);
|
||||||
|
break;
|
||||||
|
case TableID.Customer:
|
||||||
|
entities = LoadEntities(bewoobjects, tableid, MapperFactory.CompactCustomerDC_Customer);
|
||||||
|
break;
|
||||||
|
case TableID.Employee:
|
||||||
|
entities = LoadEntities(bewoobjects, tableid, MapperFactory.CompactEmployeeDC_Employee);
|
||||||
|
break;
|
||||||
|
case TableID.SupportConcept:
|
||||||
|
entities = LoadEntities(bewoobjects, tableid, MapperFactory.CompactSupportConceptDC_SupportConcept);
|
||||||
|
break;
|
||||||
|
case TableID.Organisation:
|
||||||
|
entities = LoadEntities(bewoobjects, tableid, MapperFactory.CompactOrganisationDC_Organisation, (entity, dc) =>
|
||||||
|
{
|
||||||
|
if (entity.Address != null)
|
||||||
|
{
|
||||||
|
dc.AddressLine1 = entity.Address.AddressLine1;
|
||||||
|
dc.Street = entity.Address.Street;
|
||||||
|
dc.PostalCode = entity.Address.PostalCode;
|
||||||
|
dc.Town = entity.Address.Town;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new NotImplementedException($"TableID {tableid} not implemented as navigation context");
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = new Dictionary<TableID, List<Dictionary<string, object>>>
|
||||||
|
{
|
||||||
|
{ tableid, entities.ToList() }
|
||||||
|
};
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dictionary<TableID, object> LoadSingleContext(TableID tableid, Dictionary<TableID, long[]> bewoobjects)
|
||||||
|
{
|
||||||
|
var result = new Dictionary<TableID, Dictionary<string, object>>();
|
||||||
|
|
||||||
|
Dictionary<string, object> entity;
|
||||||
|
|
||||||
|
switch (tableid)
|
||||||
|
{
|
||||||
|
case TableID.Person:
|
||||||
|
entity = LoadEntity(bewoobjects, tableid, MapperFactory.PersonDC_Person);
|
||||||
|
break;
|
||||||
|
case TableID.Customer:
|
||||||
|
entity = LoadEntity(bewoobjects, tableid, MapperFactory.CustomerDC_Customer);
|
||||||
|
break;
|
||||||
|
case TableID.Employee:
|
||||||
|
entity = LoadEntity(bewoobjects, tableid, MapperFactory.EmployeeDC_Employee);
|
||||||
|
break;
|
||||||
|
case TableID.SupportConcept:
|
||||||
|
entity = LoadEntity(bewoobjects, tableid, MapperFactory.SupportConceptDC_SupportConcept);
|
||||||
|
break;
|
||||||
|
//case TableID.Organisation:
|
||||||
|
// entity = LoadEntity(bewoobjects, tableid, MapperFactory.OrganisationDC_OrganisationMapper, (entity, dc) =>
|
||||||
|
// {
|
||||||
|
// if (entity.Address != null)
|
||||||
|
// {
|
||||||
|
// dc.AddressLine1 = entity.Address.AddressLine1;
|
||||||
|
// dc.Street = entity.Address.Street;
|
||||||
|
// dc.PostalCode = entity.Address.PostalCode;
|
||||||
|
// dc.Town = entity.Address.Town;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// break;
|
||||||
|
default:
|
||||||
|
throw new NotImplementedException($"TableID {tableid} not implemented as navigation context");
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TRet LoadProperty<TEntity, TRet>
|
||||||
|
(Dictionary<TableID, long[]> bewoobjects, TableID tid, Func<TEntity, TRet> getPropertyFunc)
|
||||||
|
where TEntity : BeWoEntityBase, new()
|
||||||
|
{
|
||||||
|
if (!bewoobjects.TryGetValue(tid, out long[] oids) || (oids?.Length ?? 0) == 0)
|
||||||
|
return default;
|
||||||
|
|
||||||
|
var entity = DAOFactory.GenericDAO.GetByID<TEntity>(oids[0]);
|
||||||
|
var property = getPropertyFunc(entity);
|
||||||
|
|
||||||
|
return property;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TEntity LoadEntity<TEntity>
|
||||||
|
(Dictionary<TableID, long[]> bewoobjects, TableID tid)
|
||||||
|
where TEntity : BeWoEntityBase, new()
|
||||||
|
{
|
||||||
|
if (!bewoobjects.TryGetValue(tid, out long[] oids) || (oids?.Length ?? 0) == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var entity = DAOFactory.GenericDAO.GetByID<TEntity>(oids[0]);
|
||||||
|
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<TEntity> LoadEntities<TEntity>
|
||||||
|
(Dictionary<TableID, long[]> bewoobjects, TableID tid)
|
||||||
|
where TEntity : BeWoEntityBase, new()
|
||||||
|
{
|
||||||
|
if (!bewoobjects.TryGetValue(tid, out long[] oids) || (oids?.Length ?? 0) == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var entities = DAOFactory.GenericDAO.GetByIDs<TEntity>(oids);
|
||||||
|
|
||||||
|
//if(afterLoad != null)
|
||||||
|
//{
|
||||||
|
// foreach( var entity in entities)
|
||||||
|
// {
|
||||||
|
// afterLoad(entity);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
return entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string getSystemPrompt(int i)
|
||||||
|
{
|
||||||
|
var assembly = Assembly.GetExecutingAssembly();
|
||||||
|
var resourceName = $"AICore.Prompt.SystemPrompts.system_prompt{i}.txt";
|
||||||
|
|
||||||
|
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
|
||||||
|
using (StreamReader reader = new StreamReader(stream))
|
||||||
|
{
|
||||||
|
string result = reader.ReadToEnd();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string getCustomSystemPrompt()
|
||||||
|
{
|
||||||
|
var path = MergedConfig.GetSetting("AiSystemPromptPath");
|
||||||
|
|
||||||
|
return File.ReadAllText(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
10
AICore/Prompt/Factories/JsonAiPromptFactory.cs
Normal file
10
AICore/Prompt/Factories/JsonAiPromptFactory.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
namespace AICore.Prompt.Factories
|
||||||
|
{
|
||||||
|
public class JsonAiPromptFactory : BaseAiPromptFactory
|
||||||
|
{
|
||||||
|
//protected override string Parse(int uicontext, object data)
|
||||||
|
//{
|
||||||
|
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
19
AICore/Prompt/Models/AiConversationContext.cs
Normal file
19
AICore/Prompt/Models/AiConversationContext.cs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AICore.Prompt.Models
|
||||||
|
{
|
||||||
|
public class AiConversationContext
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public Dictionary<string, object> Filter { get; set; }
|
||||||
|
|
||||||
|
public AiConversationContext()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,4 +10,3 @@ WICHTIG:
|
|||||||
---
|
---
|
||||||
|
|
||||||
### **Daten**
|
### **Daten**
|
||||||
Du erhälst folgendes:
|
|
||||||
33
AICore/Properties/AssemblyInfo.cs
Normal file
33
AICore/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||||
|
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||||
|
// die einer Assembly zugeordnet sind.
|
||||||
|
[assembly: AssemblyTitle("AICore")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("AICore")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2025")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||||
|
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||||
|
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||||
|
[assembly: Guid("69d70ca9-0df9-419e-bfaf-f4539f129bd9")]
|
||||||
|
|
||||||
|
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||||
|
//
|
||||||
|
// Hauptversion
|
||||||
|
// Nebenversion
|
||||||
|
// Buildnummer
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
71
AICore/app.config
Normal file
71
AICore/app.config
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.ObjectPool" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Security.Cryptography.Xml" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.WebEncoders" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.TypedParts" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.Hosting" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
||||||
42
AICore/packages.config
Normal file
42
AICore/packages.config
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Microsoft.AspNetCore.Authentication" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Authentication.Abstractions" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Authentication.Core" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Cryptography.Internal" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.DataProtection" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.DataProtection.Abstractions" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Hosting.Abstractions" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Hosting.Server.Abstractions" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Http" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Http.Abstractions" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Http.Extensions" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.Http.Features" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNetCore.WebUtilities" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.2" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.Configuration.Abstractions" version="8.0.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.Diagnostics.Abstractions" version="8.0.1" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.FileProviders.Abstractions" version="8.0.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.Hosting.Abstractions" version="8.0.1" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.Logging.Abstractions" version="8.0.2" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.ObjectPool" version="8.0.11" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.Options" version="8.0.2" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.Primitives" version="8.0.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Extensions.WebEncoders" version="8.0.11" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Net.Http.Headers" version="2.3.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Win32.Registry" version="4.5.0" targetFramework="net472" />
|
||||||
|
<package id="System.Buffers" version="4.6.0" targetFramework="net472" />
|
||||||
|
<package id="System.Diagnostics.DiagnosticSource" version="8.0.1" targetFramework="net472" />
|
||||||
|
<package id="System.IO.Pipelines" version="9.0.2" targetFramework="net472" />
|
||||||
|
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
|
||||||
|
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||||
|
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
|
||||||
|
<package id="System.Security.AccessControl" version="4.5.0" targetFramework="net472" />
|
||||||
|
<package id="System.Security.Cryptography.Xml" version="8.0.2" targetFramework="net472" />
|
||||||
|
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net472" />
|
||||||
|
<package id="System.Text.Encodings.Web" version="9.0.2" targetFramework="net472" />
|
||||||
|
<package id="System.Text.Json" version="9.0.2" targetFramework="net472" />
|
||||||
|
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
|
||||||
|
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
|
||||||
|
</packages>
|
||||||
@@ -61,12 +61,7 @@ namespace BeWo
|
|||||||
Finance = 15,
|
Finance = 15,
|
||||||
Administration = 16,
|
Administration = 16,
|
||||||
AiConversation = 17,
|
AiConversation = 17,
|
||||||
AiConversationPopup = 18,
|
AiConversationPopup = 18
|
||||||
// Nur für AI Conversation Zuweisung
|
|
||||||
ServiceRecord = 19,
|
|
||||||
CustomerSingle = 20,
|
|
||||||
PersonSingle = 21,
|
|
||||||
EmployeeSingle = 22,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class MainControl
|
public partial class MainControl
|
||||||
|
|||||||
@@ -37,31 +37,14 @@ namespace BeWo.ViewModel
|
|||||||
public string Displayname
|
public string Displayname
|
||||||
{
|
{
|
||||||
get { return _Displayname; }
|
get { return _Displayname; }
|
||||||
set
|
set => SetProperty(ref _Displayname, value, nameof(Displayname), () => DataContract.Displayname);
|
||||||
{
|
|
||||||
if (!AreDifferent(_Displayname, value))
|
|
||||||
return;
|
|
||||||
|
|
||||||
_Displayname = value;
|
|
||||||
StoreDirtyInformation(AreDifferent(DataContract.Displayname, value), nameof(Displayname));
|
|
||||||
FirePropertyChanged(nameof(Displayname));
|
|
||||||
FirePropertyChanged(nameof(Json));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonProperty]
|
[JsonProperty]
|
||||||
public DateTime Updated
|
public DateTime Updated
|
||||||
{
|
{
|
||||||
get { return _Updated; }
|
get { return _Updated; }
|
||||||
set
|
set => SetProperty(ref _Updated, value, nameof(Updated), () => DataContract.Updated);
|
||||||
{
|
|
||||||
if (!AreDifferent(Updated, value))
|
|
||||||
return;
|
|
||||||
|
|
||||||
_Updated = value;
|
|
||||||
StoreDirtyInformation(AreDifferent(DataContract.Updated, value), nameof(Updated));
|
|
||||||
FirePropertyChanged(nameof(Updated));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AiConversationMessageListVM Messages
|
public AiConversationMessageListVM Messages
|
||||||
@@ -90,6 +73,7 @@ namespace BeWo.ViewModel
|
|||||||
public AiModelDC Modell => DataContract.Modell;
|
public AiModelDC Modell => DataContract.Modell;
|
||||||
public string Context => DataContract.Context;
|
public string Context => DataContract.Context;
|
||||||
public Dictionary<TableID, long[]> ContextBeWoObjects => DataContract.ContextBeWoObjects;
|
public Dictionary<TableID, long[]> ContextBeWoObjects => DataContract.ContextBeWoObjects;
|
||||||
|
public AiDataContextType Context_Type => DataContract.ContextType;
|
||||||
public UIContext UIContext => (UIContext)DataContract.UIContext;
|
public UIContext UIContext => (UIContext)DataContract.UIContext;
|
||||||
|
|
||||||
protected override void InitByDataContract(AiConversationDC pDataContract)
|
protected override void InitByDataContract(AiConversationDC pDataContract)
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ namespace BeWo.ViewModel.ListViewModel
|
|||||||
Displayname = "Displayname Megamegalange Deluxe Op 3000",
|
Displayname = "Displayname Megamegalange Deluxe Op 3000",
|
||||||
Messages = messages_dc,
|
Messages = messages_dc,
|
||||||
Modell = model,
|
Modell = model,
|
||||||
UIContext = 19,
|
UIContext = AiContextType.ServiceRecord,
|
||||||
Updated = DateTime.Now,
|
Updated = DateTime.Now,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ namespace BeWo.ViewModel.ListViewModel
|
|||||||
Created = DateTime.Now,
|
Created = DateTime.Now,
|
||||||
Displayname = "Dummy Num " + i.ToString(),
|
Displayname = "Dummy Num " + i.ToString(),
|
||||||
Modell = model,
|
Modell = model,
|
||||||
UIContext = 19,
|
UIContext = AiContextType.ServiceRecord,
|
||||||
Updated = DateTime.Now,
|
Updated = DateTime.Now,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
37
BeWoAI.sln
37
BeWoAI.sln
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 16
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 16.0.33927.289
|
VisualStudioVersion = 17.12.35707.178 d17.12
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{E7543C39-A44C-40C9-82C9-E7FAA2D9A852}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{E7543C39-A44C-40C9-82C9-E7FAA2D9A852}"
|
||||||
EndProject
|
EndProject
|
||||||
@@ -43,6 +43,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Translation", "Translation"
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TranslationUnitTest", "TranslationUnitTest\TranslationUnitTest.csproj", "{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TranslationUnitTest", "TranslationUnitTest\TranslationUnitTest.csproj", "{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Features", "Features", "{830D2912-108B-4946-A3BE-CE4ECD50819F}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AICore", "AICore\AICore.csproj", "{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceUtils", "ServiceUtils\ServiceUtils.csproj", "{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|.NET = Debug|.NET
|
Debug|.NET = Debug|.NET
|
||||||
@@ -189,6 +195,30 @@ Global
|
|||||||
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}.Release|Any CPU.Build.0 = Release|Any CPU
|
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|.NET.Build.0 = Release|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|.NET.Build.0 = Release|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -207,6 +237,9 @@ Global
|
|||||||
{7630915F-DFE4-45A4-A7B1-B6D19B0126C1} = {2F7893AD-34FC-40A2-838A-3D2D8596E9AC}
|
{7630915F-DFE4-45A4-A7B1-B6D19B0126C1} = {2F7893AD-34FC-40A2-838A-3D2D8596E9AC}
|
||||||
{B331128C-7E9F-4BDC-B509-A8DAE1B94E5C} = {CCD6B644-49E7-4A11-BD8F-607088A4AC83}
|
{B331128C-7E9F-4BDC-B509-A8DAE1B94E5C} = {CCD6B644-49E7-4A11-BD8F-607088A4AC83}
|
||||||
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5} = {B331128C-7E9F-4BDC-B509-A8DAE1B94E5C}
|
{83C43FEC-233D-49EF-BD23-BF842A3EBDF5} = {B331128C-7E9F-4BDC-B509-A8DAE1B94E5C}
|
||||||
|
{830D2912-108B-4946-A3BE-CE4ECD50819F} = {FEB0336B-F053-40B6-92DD-7DE56AB9408A}
|
||||||
|
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9} = {830D2912-108B-4946-A3BE-CE4ECD50819F}
|
||||||
|
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57} = {FEB0336B-F053-40B6-92DD-7DE56AB9408A}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {5352BE53-F2FD-442F-85A8-4157599AA153}
|
SolutionGuid = {5352BE53-F2FD-442F-85A8-4157599AA153}
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ namespace BeWo.Data.Entities
|
|||||||
public virtual string Context { get; set; }
|
public virtual string Context { get; set; }
|
||||||
public virtual long? ApplicationUserOid { get; set; }
|
public virtual long? ApplicationUserOid { get; set; }
|
||||||
public virtual IList<BeWoEntityReference> ContextBeWoObjects { get; set; }
|
public virtual IList<BeWoEntityReference> ContextBeWoObjects { get; set; }
|
||||||
public virtual int UIContext { get; set; }
|
public virtual AiContextType UIContext { get; set; }
|
||||||
|
public virtual AiDataContextType ContextType { get; set; }
|
||||||
public virtual IList<AiConversationMessage> Messages { get; set; }
|
public virtual IList<AiConversationMessage> Messages { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,9 @@
|
|||||||
<property name="Created"/>
|
<property name="Created"/>
|
||||||
<property name="Updated"/>
|
<property name="Updated"/>
|
||||||
<property name="Context"/>
|
<property name="Context"/>
|
||||||
<property name="UIContext"/>
|
<property name="UIContext" type="BS.Shared.AiContextType, BS.Shared"/>
|
||||||
<property name="ApplicationUserOid"/>
|
<property name="ApplicationUserOid"/>
|
||||||
|
<property name="ContextType" type="BS.Shared.AiDataContextType, BS.Shared"/>
|
||||||
|
|
||||||
<many-to-one name="Modell"
|
<many-to-one name="Modell"
|
||||||
column="Model"
|
column="Model"
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.Security;
|
using BeWo.Service.Security;
|
||||||
|
|
||||||
using BS.Shared;
|
using BS.Shared;
|
||||||
|
|||||||
@@ -255,7 +255,7 @@
|
|||||||
<add name="AdminSecurityExtension" type="BeWo.Service.ServiceBehavior.AdminSecurityBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
<add name="AdminSecurityExtension" type="BeWo.Service.ServiceBehavior.AdminSecurityBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||||
<add name="AdminHibernateSessionExtension" type="BeWo.Service.ServiceBehavior.AdminHibernateBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
<add name="AdminHibernateSessionExtension" type="BeWo.Service.ServiceBehavior.AdminHibernateBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||||
<add name="JsonErrorExtension" type="BeWo.Service.ServiceBehavior.JsonError.JsonErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
<add name="JsonErrorExtension" type="BeWo.Service.ServiceBehavior.JsonError.JsonErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||||
<add name="WCFErrorExtension" type="BeWo.Service.ServiceBehavior.WCFError.WCFErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
|
<add name="WCFErrorExtension" type="BeWo.Service.ServiceBehavior.WCFError.WCFErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||||
</behaviorExtensions>
|
</behaviorExtensions>
|
||||||
</extensions>
|
</extensions>
|
||||||
</system.serviceModel>
|
</system.serviceModel>
|
||||||
@@ -307,11 +307,11 @@
|
|||||||
<add key="SendMailModuleGkvSender" value="noreply@bewoplaner.de" />
|
<add key="SendMailModuleGkvSender" value="noreply@bewoplaner.de" />
|
||||||
<add key="SendMailModuleGkvReceiver" value="dakota.exchange@ownsoft.de" />
|
<add key="SendMailModuleGkvReceiver" value="dakota.exchange@ownsoft.de" />
|
||||||
|
|
||||||
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/"/>
|
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/" />
|
||||||
<add key="AiSystemPromptPath" value="C:\BeWoPlaner\AI\systemPrompts\customSystemPrompt.txt"/>
|
<add key="AiSystemPromptPath" value="C:\BeWoPlaner\AI\systemPrompts\customSystemPrompt.txt" />
|
||||||
<add key="AiServiceLogFilePath" value="C:\BeWoPlaner\logs2\server\aiservice.log.txt"/>
|
<add key="AiServiceLogFilePath" value="C:\BeWoPlaner\logs2\server\aiservice.log.txt" />
|
||||||
<add key="AiServiceLastRequestEnabled" value="true"/>
|
<add key="AiServiceLastRequestEnabled" value="true" />
|
||||||
<add key="AiServiceLastRequestFilePath" value="C:\BeWoPlaner\logs2\server\lastairequest.json"/>
|
<add key="AiServiceLastRequestFilePath" value="C:\BeWoPlaner\logs2\server\lastairequest.json" />
|
||||||
</appSettings>
|
</appSettings>
|
||||||
<!-- <> <> <> Appsettings <> <> <> -->
|
<!-- <> <> <> Appsettings <> <> <> -->
|
||||||
<devExpress>
|
<devExpress>
|
||||||
@@ -328,12 +328,76 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.TypedParts" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Composition.Hosting" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.ObjectPool" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Security.Cryptography.Xml" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.WebEncoders" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -1,2 +1,5 @@
|
|||||||
ALTER TABLE `aiconfig`
|
ALTER TABLE `aiconfig`
|
||||||
ADD COLUMN `Context_Type` INT NOT NULL DEFAULT 0 AFTER `Max_Gen_Len`;
|
ADD COLUMN `Context_Type` INT NOT NULL DEFAULT 0 AFTER `Max_Gen_Len`;
|
||||||
|
|
||||||
|
ALTER TABLE `aiconversation`
|
||||||
|
ADD COLUMN `ContextType` INT NOT NULL DEFAULT 0 AFTER `Model`;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
@@ -58,6 +58,34 @@
|
|||||||
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.ObjectPool" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Security.Cryptography.Xml" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.WebEncoders" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
@@ -58,6 +58,34 @@
|
|||||||
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.ObjectPool" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Security.Cryptography.Xml" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.WebEncoders" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
pDataContract.Context = pEntity.Context;
|
pDataContract.Context = pEntity.Context;
|
||||||
pDataContract.ContextBeWoObjects = Parse(pEntity.ContextBeWoObjects);
|
pDataContract.ContextBeWoObjects = Parse(pEntity.ContextBeWoObjects);
|
||||||
pDataContract.UIContext = pEntity.UIContext;
|
pDataContract.UIContext = pEntity.UIContext;
|
||||||
|
pDataContract.ContextType = pEntity.ContextType;
|
||||||
|
|
||||||
if (pEntity.Messages is IList<AiConversationMessage> list && list.Any())
|
if (pEntity.Messages is IList<AiConversationMessage> list && list.Any())
|
||||||
pDataContract.Messages = MapperFactory.AiConversationMessage.MapToNewDCs(list);
|
pDataContract.Messages = MapperFactory.AiConversationMessage.MapToNewDCs(list);
|
||||||
@@ -51,6 +52,7 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
pEntity.Context = pDataContract.Context;
|
pEntity.Context = pDataContract.Context;
|
||||||
pEntity.UIContext = pDataContract.UIContext;
|
pEntity.UIContext = pDataContract.UIContext;
|
||||||
pEntity.ContextBeWoObjects = Parse(pDataContract.ContextBeWoObjects);
|
pEntity.ContextBeWoObjects = Parse(pDataContract.ContextBeWoObjects);
|
||||||
|
pEntity.ContextType = pDataContract.ContextType;
|
||||||
|
|
||||||
MapperFactory.AiConversationMessage.MergeWithEntitys(pDataContract.Messages, pEntity.Messages);
|
MapperFactory.AiConversationMessage.MergeWithEntitys(pDataContract.Messages, pEntity.Messages);
|
||||||
|
|
||||||
|
|||||||
@@ -68,21 +68,5 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
{
|
{
|
||||||
return pDC.CustomerOid == pEntity.Oid;
|
return pDC.CustomerOid == pEntity.Oid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Dictionary<string, object> ToJsonDictionary(CompactCustomerDC customer)
|
|
||||||
{
|
|
||||||
var record_dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{"Adresse", customer.AddressString},
|
|
||||||
{"Alias", customer.CustomerAlias},
|
|
||||||
{"Klient-ID", customer.CustomerOid},
|
|
||||||
{"Geburtstag", customer.DateOfBirthString},
|
|
||||||
{"EigenkapitalBeitrag", customer.EquityContribution},
|
|
||||||
{"Name", customer.FullName},
|
|
||||||
{"Rechnungsadresse", customer.InvoiceAddressString}
|
|
||||||
};
|
|
||||||
|
|
||||||
return record_dict;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,17 +35,5 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
{
|
{
|
||||||
return pDC.EmployeeOid == pEntity.Oid;
|
return pDC.EmployeeOid == pEntity.Oid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Dictionary<string, object> ToJsonDictionary(CompactEmployeeDC pDC)
|
|
||||||
{
|
|
||||||
var dict = new Dictionary<string, object>()
|
|
||||||
{
|
|
||||||
{"Mitarbeiter-ID", pDC.EmployeeOid },
|
|
||||||
{"Personalnummer", pDC.PersonnelNumber },
|
|
||||||
{"Name", pDC.FirstNameLastName },
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,23 +63,5 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
// dc.CostRatePeriods = new List<CostRatePeriodDC>();
|
// dc.CostRatePeriods = new List<CostRatePeriodDC>();
|
||||||
// return dc;
|
// return dc;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public override Dictionary<string, object> ToJsonDictionary(CompactOrganisationDC pDC)
|
|
||||||
{
|
|
||||||
var jsonObject = new Dictionary<string, object>()
|
|
||||||
{
|
|
||||||
{"Organisation-ID", pDC.OrganisationOid },
|
|
||||||
{"Name", pDC.Name },
|
|
||||||
{"Abteilung", pDC.Name2 },
|
|
||||||
{"Kundennummer", pDC.DebitorNumber },
|
|
||||||
{"Geschäftspartnernummer", pDC.BusinessPartnerId },
|
|
||||||
{"Adress", pDC.AddressString },
|
|
||||||
{"IKDatenannahmestelle", pDC.IKDatenannahmestelle },
|
|
||||||
{"IKKostentrager", pDC.IKKostentrager },
|
|
||||||
{"IKKrankenkasse", pDC.IKKrankenkasse},
|
|
||||||
};
|
|
||||||
|
|
||||||
return jsonObject;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,21 +60,5 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
{
|
{
|
||||||
return pDC.PersonOid == pEntity.Oid;
|
return pDC.PersonOid == pEntity.Oid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Dictionary<string, object> ToJsonDictionary(CompactPersonDC pDC)
|
|
||||||
{
|
|
||||||
var jsonObject = new Dictionary<string, object>()
|
|
||||||
{
|
|
||||||
{"Adresse", pDC.AddressString },
|
|
||||||
{"Geburtstag", pDC.Birthday },
|
|
||||||
{"Klient-ID", pDC.CustomerOid },
|
|
||||||
{"Mitarbeiter-ID", pDC.EmployeeOid },
|
|
||||||
{"Name", pDC.FullName },
|
|
||||||
{"Geschlecht", pDC.Geschlecht.ToString() },
|
|
||||||
{"Funktion", pDC.Function },
|
|
||||||
};
|
|
||||||
|
|
||||||
return jsonObject;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,24 +69,5 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
{
|
{
|
||||||
return pDC.SupportConceptOid == pEntity.Oid;
|
return pDC.SupportConceptOid == pEntity.Oid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Dictionary<string, object> ToJsonDictionary(CompactSupportConceptDC pDC)
|
|
||||||
{
|
|
||||||
var customer = MapperFactory.CompactCustomerDC_Customer.ToJsonDictionary(pDC.Customer);
|
|
||||||
|
|
||||||
var jsonObject = new Dictionary<string, object>()
|
|
||||||
{
|
|
||||||
{"Hilfeplan-ID", pDC.SupportConceptOid },
|
|
||||||
{"Adresse", pDC.AddressString },
|
|
||||||
{"Kostentraegernamen", pDC.AllCostBearerNames},
|
|
||||||
{"Kostentraeger", pDC.CostBearer },
|
|
||||||
{"Kostentraeger Details", pDC.CostBearerDetailStrings },
|
|
||||||
{"Klient", customer },
|
|
||||||
{"Startdatum", pDC.StartDate },
|
|
||||||
{"Enddatum", pDC.EndDate }
|
|
||||||
};
|
|
||||||
|
|
||||||
return jsonObject;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Service.Core;
|
|
||||||
|
|
||||||
using BS.Shared.DataContracts;
|
using BS.Shared.DataContracts;
|
||||||
|
|
||||||
|
|||||||
@@ -266,30 +266,5 @@ namespace BeWo.Service.DCEntityMapper
|
|||||||
|
|
||||||
return pDC.ServiceRecordOid == pEntity.Oid;
|
return pDC.ServiceRecordOid == pEntity.Oid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Dictionary<string, object> ToJsonDictionary(ServiceRecordDC service_record)
|
|
||||||
{
|
|
||||||
var record_dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Zeiteintrag-ID", service_record.ServiceRecordOid},
|
|
||||||
{ "Startdatum", service_record.Start },
|
|
||||||
{ "Enddatum", service_record.End },
|
|
||||||
{ "Dauer in Stunden", service_record.DurationInStunden },
|
|
||||||
{ "Leistungskategorie", service_record.ServiceDescription.Category.Name },
|
|
||||||
{ "Leistungsbeschreibung", service_record.ServiceDescription.Name },
|
|
||||||
{ "Dokumentation", service_record.Notice
|
|
||||||
+ "\n" + service_record.Notice2
|
|
||||||
+ "\n" + service_record.Notice3
|
|
||||||
+ "\n" + service_record.Notice4
|
|
||||||
+ "\n" + service_record.Notice5},
|
|
||||||
{ "Distanze in Meter", service_record.DistanceInMeter ?? 0 },
|
|
||||||
{ "Eingetragen am", service_record.InsertedOn },
|
|
||||||
{ "Betrag", service_record.Betrag },
|
|
||||||
{ "Eingetragen von", service_record.InsUser },
|
|
||||||
{ "Mitarbeiter", service_record.Employee }
|
|
||||||
};
|
|
||||||
|
|
||||||
return record_dict;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,6 @@ using BS.Shared.Services;
|
|||||||
using BeWo.Data;
|
using BeWo.Data;
|
||||||
using BeWo.Data.Access;
|
using BeWo.Data.Access;
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
using BeWo.Service.DCEntityMapper;
|
||||||
|
|
||||||
namespace BeWo.Service.Invoicing
|
namespace BeWo.Service.Invoicing
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using BeWo.Data;
|
using BeWo.Data;
|
||||||
using BeWo.Data.Access;
|
using BeWo.Data.Access;
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
using BeWo.Service.DCEntityMapper;
|
||||||
using BeWo.Service.Plugins;
|
using BeWo.Service.Plugins;
|
||||||
using BS.Shared.DataContracts;
|
using BS.Shared.DataContracts;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ using System.ServiceModel;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using BeWo.Data.Access;
|
using BeWo.Data.Access;
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
using BeWo.Service.DCEntityMapper;
|
||||||
using BeWo.Service.Invoicing;
|
using BeWo.Service.Invoicing;
|
||||||
using BeWo.Service.ServiceContracts;
|
using BeWo.Service.ServiceContracts;
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ using System.Linq;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using System.ServiceModel;
|
using System.ServiceModel;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using AICore.Prompt.Factories;
|
||||||
using BeWo.Data.Access;
|
using BeWo.Data.Access;
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Data.Security;
|
using BeWo.Data.Security;
|
||||||
using BeWo.Service.AI;
|
|
||||||
using BeWo.Service.Core;
|
using BeWo.Service.Core;
|
||||||
using BeWo.Service.DCEntityMapper;
|
using BeWo.Service.DCEntityMapper;
|
||||||
using BeWo.Service.Invoicing;
|
using BeWo.Service.Invoicing;
|
||||||
@@ -112,15 +112,21 @@ namespace BeWo.Service.Plugins
|
|||||||
|
|
||||||
public AiConversationDC CreateAiConversation(AiConversationDC conversation, long modell_oid)
|
public AiConversationDC CreateAiConversation(AiConversationDC conversation, long modell_oid)
|
||||||
{
|
{
|
||||||
var conv = createAiConversation(conversation.UIContext, conversation.ContextBeWoObjects, modell_oid);
|
var config = GetAiConfig();
|
||||||
|
|
||||||
|
var conv = createAiConversation(conversation.UIContext, conversation.ContextBeWoObjects, modell_oid, config.Context_Type);
|
||||||
|
|
||||||
var conv_dc = MapperFactory.AiConversation.MapToNewDC(conv);
|
var conv_dc = MapperFactory.AiConversation.MapToNewDC(conv);
|
||||||
|
|
||||||
return conv_dc;
|
return conv_dc;
|
||||||
}
|
}
|
||||||
public AiConversationDC CreateAiConversationWithMessage(AiConversationDC conversation, long modell_oid, string message)
|
public AiConversationDC CreateAiConversationWithMessage(AiConversationDC conversation, long modell_oid, string message)
|
||||||
{
|
{
|
||||||
var conv = createAiConversation(conversation.UIContext, conversation.ContextBeWoObjects, modell_oid);
|
var config = GetAiConfig();
|
||||||
|
|
||||||
var new_messages = sendNewMessage(conv, message);
|
var conv = createAiConversation(conversation.UIContext, conversation.ContextBeWoObjects, modell_oid, config.Context_Type);
|
||||||
|
|
||||||
|
var new_messages = sendNewMessage(conv, message, config);
|
||||||
|
|
||||||
var conv_dc = MapperFactory.AiConversation.MapToNewDC(conv);
|
var conv_dc = MapperFactory.AiConversation.MapToNewDC(conv);
|
||||||
|
|
||||||
@@ -265,11 +271,12 @@ namespace BeWo.Service.Plugins
|
|||||||
return models;
|
return models;
|
||||||
}
|
}
|
||||||
|
|
||||||
private AiConversation createAiConversation(int uicontext, Dictionary<TableID, long[]> context, long modell_oid)
|
private AiConversation createAiConversation(int uicontext, Dictionary<TableID, long[]> context, long modell_oid, AiDataContextType context_Type)
|
||||||
{
|
{
|
||||||
var current_user = UserRightHelper.GetLoggedInUserWithOid();
|
var current_user = UserRightHelper.GetLoggedInUserWithOid();
|
||||||
|
var factory = getFactory(context_Type);
|
||||||
|
|
||||||
var system_prompt = AiPromptFactory.CreateSystemInstructions(uicontext, context);
|
var system_prompt = factory.CreateSystemInstructions(uicontext, context);
|
||||||
|
|
||||||
var conv = new AiConversation();
|
var conv = new AiConversation();
|
||||||
conv.Created = DateTime.Now;
|
conv.Created = DateTime.Now;
|
||||||
@@ -278,6 +285,7 @@ namespace BeWo.Service.Plugins
|
|||||||
conv.Messages = new List<AiConversationMessage>();
|
conv.Messages = new List<AiConversationMessage>();
|
||||||
conv.Modell = DAOFactory.GenericDAO.LoadByID<AiModel>(modell_oid);
|
conv.Modell = DAOFactory.GenericDAO.LoadByID<AiModel>(modell_oid);
|
||||||
conv.UIContext = uicontext;
|
conv.UIContext = uicontext;
|
||||||
|
conv.ContextType = context_Type;
|
||||||
conv.Updated = DateTime.Now;
|
conv.Updated = DateTime.Now;
|
||||||
conv.ApplicationUserOid = current_user.Oid;
|
conv.ApplicationUserOid = current_user.Oid;
|
||||||
|
|
||||||
@@ -294,10 +302,19 @@ namespace BeWo.Service.Plugins
|
|||||||
return conv;
|
return conv;
|
||||||
}
|
}
|
||||||
|
|
||||||
private AiConversationMessageDC[] sendNewMessage(AiConversation conv, string message)
|
private BaseAiPromptFactory getFactory(AiDataContextType context_Type)
|
||||||
|
{
|
||||||
|
if (context_Type == AiDataContextType.json)
|
||||||
|
return new JsonAiPromptFactory();
|
||||||
|
|
||||||
|
throw new NotImplementedException($"AiDataContextType {context_Type} not implemented.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private AiConversationMessageDC[] sendNewMessage(AiConversation conv, string message, AiConfigDC config = null)
|
||||||
{
|
{
|
||||||
// Hole Config
|
// Hole Config
|
||||||
var config = GetAiConfig();
|
if (config == null)
|
||||||
|
config = GetAiConfig();
|
||||||
var configModelName = config.SelectedModel.ModelName;
|
var configModelName = config.SelectedModel.ModelName;
|
||||||
|
|
||||||
// Build Payload
|
// Build Payload
|
||||||
@@ -308,7 +325,7 @@ namespace BeWo.Service.Plugins
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Check Token Size
|
// Check Token Size
|
||||||
if(!checkTokenSize(conv.Messages, configModelName))
|
if (!checkTokenSize(conv.Messages, configModelName))
|
||||||
{
|
{
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using BeWo.Data.Access;
|
using BeWo.Data.Access;
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
using BeWo.Service.DCEntityMapper;
|
||||||
using BeWo.Service.MessageContracts;
|
using BeWo.Service.MessageContracts;
|
||||||
using BS.Shared;
|
using BS.Shared;
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ using BeWo.Data;
|
|||||||
using BeWo.Data.Access;
|
using BeWo.Data.Access;
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Service.Configuration;
|
using BeWo.Service.Configuration;
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
using BeWo.Service.DCEntityMapper;
|
||||||
using BeWo.Service.MessageContracts;
|
using BeWo.Service.MessageContracts;
|
||||||
using BS.Shared;
|
using BS.Shared;
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ using BeWo.Data;
|
|||||||
using BeWo.Data.Access;
|
using BeWo.Data.Access;
|
||||||
using BeWo.Data.Entities;
|
using BeWo.Data.Entities;
|
||||||
using BeWo.Data.Security;
|
using BeWo.Data.Security;
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
using BeWo.Service.DCEntityMapper;
|
||||||
using BeWo.Service.MessageContracts;
|
using BeWo.Service.MessageContracts;
|
||||||
using BS.Shared;
|
using BS.Shared;
|
||||||
@@ -15,7 +14,6 @@ using BS.Shared.DataContracts;
|
|||||||
using BS.Shared.DataContracts.Compact;
|
using BS.Shared.DataContracts.Compact;
|
||||||
using BS.Shared.Extensions;
|
using BS.Shared.Extensions;
|
||||||
using BS.Shared.Services;
|
using BS.Shared.Services;
|
||||||
using Utils = BeWo.Service.Core.Utils;
|
|
||||||
|
|
||||||
|
|
||||||
namespace BeWo.Service.Plugins
|
namespace BeWo.Service.Plugins
|
||||||
|
|||||||
@@ -556,7 +556,6 @@
|
|||||||
<Compile Include="ServiceImplementations\ValueListServiceImp.cs" />
|
<Compile Include="ServiceImplementations\ValueListServiceImp.cs" />
|
||||||
<Compile Include="Configuration\AppSettings.cs" />
|
<Compile Include="Configuration\AppSettings.cs" />
|
||||||
<Compile Include="ServiceProxy\OpenWebApiClient.cs" />
|
<Compile Include="ServiceProxy\OpenWebApiClient.cs" />
|
||||||
<Compile Include="AI\AiPromptFactory.cs" />
|
|
||||||
<Compile Include="ServiceUtils\DistanceCalculator\AddressRouteManager.cs" />
|
<Compile Include="ServiceUtils\DistanceCalculator\AddressRouteManager.cs" />
|
||||||
<Compile Include="ServiceUtils\DistanceCalculator\AddressRouteMatrix.cs" />
|
<Compile Include="ServiceUtils\DistanceCalculator\AddressRouteMatrix.cs" />
|
||||||
<Compile Include="ServiceUtils\DistanceCalculator\GoogleDistanceMatrixAPI.cs" />
|
<Compile Include="ServiceUtils\DistanceCalculator\GoogleDistanceMatrixAPI.cs" />
|
||||||
@@ -576,6 +575,10 @@
|
|||||||
<Compile Include="XAMLInformation\InfoViaXAMLManager.cs" />
|
<Compile Include="XAMLInformation\InfoViaXAMLManager.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\AICore\AICore.csproj">
|
||||||
|
<Project>{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}</Project>
|
||||||
|
<Name>AICore</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Dakota\Dakota.csproj">
|
<ProjectReference Include="..\Dakota\Dakota.csproj">
|
||||||
<Project>{47331732-dd96-4075-869f-83aa9f3f9937}</Project>
|
<Project>{47331732-dd96-4075-869f-83aa9f3f9937}</Project>
|
||||||
<Name>Dakota</Name>
|
<Name>Dakota</Name>
|
||||||
@@ -620,15 +623,6 @@
|
|||||||
</None>
|
</None>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="AI\system_prompt1.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="AI\system_prompt2.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="AI\system_prompt3.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|||||||
@@ -1,94 +1,30 @@
|
|||||||
using BeWo.Data;
|
using BeWo.Service.Plugins;
|
||||||
using BeWo.Data.Access;
|
|
||||||
using BeWo.Data.Entities;
|
|
||||||
using BeWo.Data.Security;
|
|
||||||
using BeWo.Service.AI;
|
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
|
||||||
using BeWo.Service.Plugins;
|
|
||||||
using BeWo.Service.ServiceContracts;
|
using BeWo.Service.ServiceContracts;
|
||||||
using BeWo.Service.ServiceProxy;
|
|
||||||
using BS.Shared;
|
|
||||||
using BS.Shared.Core;
|
|
||||||
using BS.Shared.DataContracts;
|
using BS.Shared.DataContracts;
|
||||||
using BS.Shared.DataContracts.Feature.AI;
|
using BS.Shared.DataContracts.Feature.AI;
|
||||||
using BS.Shared.Exceptions;
|
|
||||||
using BS.Shared.Extensions;
|
|
||||||
using DevExpress.Drawing.Internal.Interop;
|
|
||||||
using DevExpress.Entity.Model.Metadata;
|
|
||||||
using DevExpress.XtraCharts.Native;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Runtime.ExceptionServices;
|
|
||||||
using System.Runtime.Remoting.Metadata.W3cXsd2001;
|
|
||||||
using System.Security.Cryptography;
|
|
||||||
using System.ServiceModel;
|
using System.ServiceModel;
|
||||||
using System.ServiceModel.Description;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Interop;
|
|
||||||
|
|
||||||
namespace BeWo.Service.ServiceImplementations
|
namespace BeWo.Service.ServiceImplementations
|
||||||
{
|
{
|
||||||
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
|
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
|
||||||
public class AiEnhancedServiceImp : IAiEnhancedService
|
public class AiEnhancedServiceImp : IAiEnhancedService
|
||||||
{
|
{
|
||||||
public AiConfigDC GetAiConfig()
|
public AiConfigDC GetAiConfig() => GetAiService().GetAiConfig();
|
||||||
{
|
public AiConfigDC UpdateAiConfig(AiConfigDC toUpdate) => GetAiService().UpdateAiConfig(toUpdate);
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
public IEnumerable<AiModelDC> GetAiModels() => GetAiService().GetAiModels();
|
||||||
return p.GetAiConfig();
|
public IEnumerable<AiConversationDC> GetAiConversations(int uicontext, long? oid) => GetAiService().GetAiConversations(uicontext, oid);
|
||||||
}
|
public AiConversationDC CreateAiConversation(AiConversationDC conversation, long modell_oid) => GetAiService().CreateAiConversation(conversation, modell_oid);
|
||||||
public AiConfigDC UpdateAiConfig(AiConfigDC toUpdate)
|
public AiConversationDC CreateAiConversationWithMessage(AiConversationDC conversation, long modell_oid, string message) => GetAiService().CreateAiConversationWithMessage(conversation, modell_oid, message);
|
||||||
{
|
public AiConversationDC CloneAiConversation(long conversation_oid, long? last_message_oid) => GetAiService().CloneAiConversation(conversation_oid, last_message_oid);
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
public long UpdateAiConversationDisplayname(long oid, long version, string displayname) => GetAiService().UpdateAiConversationDisplayname(oid, version, displayname);
|
||||||
return p.UpdateAiConfig(toUpdate);
|
public void DeleteAiConversation(long conversation_oid) => GetAiService().DeleteAiConversation(conversation_oid);
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<AiModelDC> GetAiModels()
|
public AiConversationMessageDC[] SendNewMessage(long conversation, string message) => GetAiService().SendNewMessage(conversation, message);
|
||||||
|
private AiService2 GetAiService()
|
||||||
{
|
{
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
var plugin = PluginLoader.FindClass<AiService2>();
|
||||||
return p.GetAiModels();
|
return plugin;
|
||||||
}
|
|
||||||
public IEnumerable<AiConversationDC> GetAiConversations(int uicontext, long? oid)
|
|
||||||
{
|
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
|
||||||
return p.GetAiConversations(uicontext, oid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public AiConversationDC CreateAiConversation(AiConversationDC conversation, long modell_oid)
|
|
||||||
{
|
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
|
||||||
return p.CreateAiConversation(conversation, modell_oid);
|
|
||||||
}
|
|
||||||
public AiConversationDC CreateAiConversationWithMessage(AiConversationDC conversation, long modell_oid, string message)
|
|
||||||
{
|
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
|
||||||
return p.CreateAiConversationWithMessage(conversation, modell_oid, message);
|
|
||||||
}
|
|
||||||
public AiConversationDC CloneAiConversation(long conversation_oid, long? last_message_oid)
|
|
||||||
{
|
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
|
||||||
return p.CloneAiConversation(conversation_oid, last_message_oid);
|
|
||||||
}
|
|
||||||
public long UpdateAiConversationDisplayname(long oid, long version, string displayname)
|
|
||||||
{
|
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
|
||||||
return p.UpdateAiConversationDisplayname(oid, version, displayname);
|
|
||||||
}
|
|
||||||
public void DeleteAiConversation(long conversation_oid)
|
|
||||||
{
|
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
|
||||||
p.DeleteAiConversation(conversation_oid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public AiConversationMessageDC[] SendNewMessage(long conversation, string message)
|
|
||||||
{
|
|
||||||
var p = PluginLoader.FindClass<AiService2>();
|
|
||||||
return p.SendNewMessage(conversation, message);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,311 +0,0 @@
|
|||||||
using BeWo.Data.Access;
|
|
||||||
using BeWo.Data.Entities;
|
|
||||||
using BeWo.Service.Core;
|
|
||||||
using BeWo.Service.DCEntityMapper;
|
|
||||||
using BS.Shared;
|
|
||||||
using BS.Shared.DataContracts;
|
|
||||||
using BS.Shared.DataContracts.Compact;
|
|
||||||
using DevExpress.PivotGrid.OLAP.Mdx;
|
|
||||||
using DevExpress.XtraRichEdit.Commands;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Web;
|
|
||||||
|
|
||||||
namespace BeWo.Service.AI
|
|
||||||
{
|
|
||||||
public static class AiPromptFactory
|
|
||||||
{
|
|
||||||
public static string CreateSystemInstructions(int uicontext, Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
if (bewoobjects is null || bewoobjects.Count == 0)
|
|
||||||
return getCustomSystemPrompt();
|
|
||||||
//return getSystemPrompt(3);
|
|
||||||
|
|
||||||
var data = getContextData(uicontext, bewoobjects);
|
|
||||||
|
|
||||||
var text = JsonConvert.SerializeObject(data);
|
|
||||||
|
|
||||||
var system_prompt = getCustomSystemPrompt();
|
|
||||||
//var system_prompt = getSystemPrompt(2);
|
|
||||||
|
|
||||||
var result = system_prompt + text;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// SupportConcept = 0,
|
|
||||||
/// Customer = 1,
|
|
||||||
/// Person = 2,
|
|
||||||
/// Employee = 3,
|
|
||||||
/// Organisation = 4,
|
|
||||||
/// Team = 5,
|
|
||||||
/// Dokumente = 6,
|
|
||||||
/// User = 7,
|
|
||||||
/// UserGroup = 8,
|
|
||||||
/// Report = 9,
|
|
||||||
/// Scheduler = 10,
|
|
||||||
/// Wohnheim = 11,
|
|
||||||
/// Vertretungen = 12,
|
|
||||||
/// CustomerTeam = 13,
|
|
||||||
/// Scheduling = 14,
|
|
||||||
/// Finance = 15,
|
|
||||||
/// Administration = 16,
|
|
||||||
/// AiConversation = 17,
|
|
||||||
/// AiConversationPopup = 18,
|
|
||||||
/// // Nur für AI Conversation Zuweisung
|
|
||||||
/// ServiceRecord = 19,
|
|
||||||
/// CustomerSingle = 20,
|
|
||||||
/// PersonSingle = 21,
|
|
||||||
/// EmployeeSingle = 22,
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="uicontext"></param>
|
|
||||||
/// <param name="bewoobjects"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
/// <exception cref="NotImplementedException"></exception>
|
|
||||||
private static Dictionary<string, object> getContextData(int uicontext, Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
switch (uicontext)
|
|
||||||
{
|
|
||||||
case 0: return createSupportConceptNavigationContext(bewoobjects);
|
|
||||||
case 1: return createCustomerNavigationContext(bewoobjects);
|
|
||||||
case 2: return createPersonNavigationContext(bewoobjects);
|
|
||||||
case 3: return createEmployeeNavigationContext(bewoobjects);
|
|
||||||
case 4: return createOrganisationNavigationContext(bewoobjects);
|
|
||||||
case 5: break;
|
|
||||||
case 6: break;
|
|
||||||
case 7: break;
|
|
||||||
case 8: break;
|
|
||||||
case 9: break;
|
|
||||||
case 10: break;
|
|
||||||
case 11: break;
|
|
||||||
case 12: break;
|
|
||||||
case 13: break;
|
|
||||||
case 14: break;
|
|
||||||
case 15: break;
|
|
||||||
case 16: break;
|
|
||||||
case 17: break;
|
|
||||||
case 18: break;
|
|
||||||
case 19: return createServiceRecordContext(bewoobjects);
|
|
||||||
case 20: return createCustomerContext(bewoobjects);
|
|
||||||
case 21: break;
|
|
||||||
case 22: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new NotImplementedException("UI Context unknown");
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Navigation
|
|
||||||
private static Dictionary<string, object> createSupportConceptNavigationContext(Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
var supports = LoadEntities(bewoobjects, TableID.SupportConcept, MapperFactory.CompactSupportConceptDC_SupportConcept);
|
|
||||||
|
|
||||||
var dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Aktuelle Ansicht", "Hilfeplan Navigation" },
|
|
||||||
{ "Aktueller Ansichtsfilter", "Funktion noch nicht verfügbar" },
|
|
||||||
{ "Hilfeplanliste", (object)supports ?? "keine Hilfepläne sichtbar" }
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
private static Dictionary<string, object> createCustomerNavigationContext(Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
var klienten = LoadEntities(bewoobjects, TableID.Customer, MapperFactory.CompactCustomerDC_Customer);
|
|
||||||
|
|
||||||
var dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Aktuelle Ansicht", "Klienten Navigation" },
|
|
||||||
{ "Aktueller Ansichtsfilter", "Funktion noch nicht verfügbar" },
|
|
||||||
{ "Klientenliste", (object)klienten ?? "keine Klienten sichtbar" }
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
private static Dictionary<string, object> createPersonNavigationContext(Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
var personen = LoadEntities(bewoobjects, TableID.Person, MapperFactory.CompactPersonDC_Person);
|
|
||||||
|
|
||||||
var dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Aktuelle Ansicht", "Personen Navigation" },
|
|
||||||
{ "Aktueller Ansichtsfilter", "Funktion noch nicht verfügbar" },
|
|
||||||
{ "Personenliste", (object)personen ?? "keine Personen sichtbar" }
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
private static Dictionary<string, object> createEmployeeNavigationContext(Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
var mitarbeiter = LoadEntities(bewoobjects, TableID.Employee, MapperFactory.CompactEmployeeDC_Employee);
|
|
||||||
|
|
||||||
var dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Aktuelle Ansicht", "Mitarbeiter Navigation" },
|
|
||||||
{ "Aktueller Ansichtsfilter", "Funktion noch nicht verfügbar" },
|
|
||||||
{ "Mitarbeiterliste", (object)mitarbeiter ?? "keine Mitarbeiter sichtbar" }
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
private static Dictionary<string, object> createOrganisationNavigationContext(Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
Action<Organisation, CompactOrganisationDC> loadAddress = (entity, dc) =>
|
|
||||||
{
|
|
||||||
if (entity.Address != null)
|
|
||||||
{
|
|
||||||
dc.AddressLine1 = entity.Address.AddressLine1;
|
|
||||||
dc.Street = entity.Address.Street;
|
|
||||||
dc.PostalCode = entity.Address.PostalCode;
|
|
||||||
dc.Town = entity.Address.Town;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var orgas = LoadEntities(bewoobjects, TableID.Organisation, MapperFactory.CompactOrganisationDC_Organisation, loadAddress);
|
|
||||||
|
|
||||||
var dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Aktuelle Ansicht", "Organisation Navigation" },
|
|
||||||
{ "Aktueller Ansichtsfilter", "Funktion noch nicht verfügbar" },
|
|
||||||
{ "Organisationsliste", (object)orgas ?? "keine Organisationen sichtbar" }
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
private static Dictionary<string, object> createServiceRecordContext(Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
var customer = LoadEntity(bewoobjects, TableID.Customer, MapperFactory.CompactCustomerDC_Customer);
|
|
||||||
var costbearer = LoadProperty(bewoobjects, TableID.CostBearer, MapperFactory.CompactOrganisationDC_Organisation, dc => dc.Name);
|
|
||||||
var supportconcept = LoadProperty(bewoobjects, TableID.SupportConcept, MapperFactory.CompactSupportConceptDC_SupportConcept, dc => $"{dc.StartDate?.Date} - {dc.EndDate?.Date}");
|
|
||||||
var records = LoadEntities(bewoobjects, TableID.ServiceRecord, MapperFactory.ServiceRecordDC_ServiceRecord);
|
|
||||||
|
|
||||||
var sub_dict = new Dictionary<string, object>()
|
|
||||||
{
|
|
||||||
{ "Klient", customer },
|
|
||||||
{ "Kostenträger", costbearer },
|
|
||||||
{ "Hilfeplan", supportconcept }
|
|
||||||
};
|
|
||||||
|
|
||||||
var dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Aktuelle Ansicht", "Zeiterfassung" },
|
|
||||||
{ "Aktueller Ansichtsfilter", "Funktion noch nicht verfügbar" },
|
|
||||||
{ "Auswahl", sub_dict},
|
|
||||||
{ "Zeiterfassungen", records }
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region SinglePage
|
|
||||||
|
|
||||||
private static Dictionary<string, object> createCustomerContext(Dictionary<TableID, long[]> bewoobjects)
|
|
||||||
{
|
|
||||||
var klient = LoadEntity(bewoobjects, TableID.Customer, MapperFactory.CustomerDC_Customer);
|
|
||||||
|
|
||||||
var dict = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{ "Aktuelle Ansicht", "Klienten Daten" },
|
|
||||||
{ "Klient", klient }
|
|
||||||
};
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region LOAD Methods
|
|
||||||
private static object LoadProperty<TEntity, TDC>
|
|
||||||
(Dictionary<TableID, long[]> bewoobjects, TableID tid, AbstractIDCEntityMapper<TEntity, TDC> mapper, Func<TDC, object> getPropertyFunc)
|
|
||||||
where TDC : class, new() where TEntity : BeWoEntityBase, new()
|
|
||||||
{
|
|
||||||
if (!bewoobjects.TryGetValue(tid, out long[] oids) || (oids?.Length ?? 0) == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
var entity = DAOFactory.GenericDAO.GetByID<TEntity>(oids[0]);
|
|
||||||
var dc = mapper.MapToNewDC(entity);
|
|
||||||
var property = getPropertyFunc(dc);
|
|
||||||
|
|
||||||
return property;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Dictionary<string, object> LoadEntity<TEntity, TDC>
|
|
||||||
(Dictionary<TableID, long[]> bewoobjects, TableID tid, AbstractIDCEntityMapper<TEntity, TDC> mapper)
|
|
||||||
where TDC : class, new() where TEntity : BeWoEntityBase, new()
|
|
||||||
{
|
|
||||||
if (!bewoobjects.TryGetValue(tid, out long[] oids) || (oids?.Length ?? 0) == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
var entity = DAOFactory.GenericDAO.GetByID<TEntity>(oids[0]);
|
|
||||||
var dict = mapper.ToJsonDictionary(entity);
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IList<Dictionary<string, object>> LoadEntities<TEntity, TDC>
|
|
||||||
(Dictionary<TableID, long[]> bewoobjects, TableID tid, AbstractIDCEntityMapper<TEntity, TDC> mapper)
|
|
||||||
where TDC : class, new() where TEntity : BeWoEntityBase, new()
|
|
||||||
{
|
|
||||||
if (!bewoobjects.TryGetValue(tid, out long[] oids) || (oids?.Length ?? 0) == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
var entities = DAOFactory.GenericDAO.GetByIDs<TEntity>(oids);
|
|
||||||
var dcs = mapper.MapToNewDCs(entities);
|
|
||||||
var dict = mapper.ToJsonDictionary(dcs);
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IList<Dictionary<string, object>> LoadEntities<TEntity, TDC>
|
|
||||||
(Dictionary<TableID, long[]> bewoobjects, TableID tid, AbstractIDCEntityMapper<TEntity, TDC> mapper, Action<TEntity, TDC> afterDC)
|
|
||||||
where TDC : class, new() where TEntity : BeWoEntityBase, new()
|
|
||||||
{
|
|
||||||
if (!bewoobjects.TryGetValue(tid, out long[] oids) || (oids?.Length ?? 0) == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
var entities = DAOFactory.GenericDAO.GetByIDs<TEntity>(oids);
|
|
||||||
var dcs = new List<TDC>();
|
|
||||||
foreach (var entity in entities)
|
|
||||||
{
|
|
||||||
var dc = mapper.MapToNewDC(entity);
|
|
||||||
|
|
||||||
afterDC(entity, dc);
|
|
||||||
|
|
||||||
dcs.Add(dc);
|
|
||||||
}
|
|
||||||
|
|
||||||
var dict = mapper.ToJsonDictionary(dcs);
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
private static string getSystemPrompt(int i)
|
|
||||||
{
|
|
||||||
var assembly = Assembly.GetExecutingAssembly();
|
|
||||||
var resourceName = $"BeWo.Service.AI.system_prompt{i}.txt";
|
|
||||||
|
|
||||||
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
|
|
||||||
using (StreamReader reader = new StreamReader(stream))
|
|
||||||
{
|
|
||||||
string result = reader.ReadToEnd();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string getCustomSystemPrompt()
|
|
||||||
{
|
|
||||||
var path = MergedConfig.GetSetting("AiSystemPromptPath");
|
|
||||||
|
|
||||||
return File.ReadAllText(path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -62,6 +62,34 @@
|
|||||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.ObjectPool" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Security.Cryptography.Xml" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.2" newVersion="8.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.WebEncoders" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-8.0.11.0" newVersion="8.0.11.0" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
||||||
|
|||||||
27
ServiceUtils/Core/MergedConfig.cs
Normal file
27
ServiceUtils/Core/MergedConfig.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.IO;
|
||||||
|
using System.Xml;
|
||||||
|
|
||||||
|
namespace BeWo.ServiceUtils.Core
|
||||||
|
{
|
||||||
|
public static class MergedConfig
|
||||||
|
{
|
||||||
|
public static string GetSetting(string key)
|
||||||
|
{
|
||||||
|
// 1. Versuche, aus AppSettings.local.config zu lesen
|
||||||
|
var localConfigPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Web.Secrets.config");
|
||||||
|
if (File.Exists(localConfigPath))
|
||||||
|
{
|
||||||
|
var xml = new XmlDocument();
|
||||||
|
xml.Load(localConfigPath);
|
||||||
|
var node = xml.SelectSingleNode($"/appSettings/add[@key='{key}']");
|
||||||
|
if (node is XmlElement element)
|
||||||
|
return element.GetAttribute("value");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Fallback: Standard-AppSettings
|
||||||
|
return ConfigurationManager.AppSettings[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
33
ServiceUtils/Properties/AssemblyInfo.cs
Normal file
33
ServiceUtils/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||||
|
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||||
|
// die einer Assembly zugeordnet sind.
|
||||||
|
[assembly: AssemblyTitle("ServiceUtils")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("ServiceUtils")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2025")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||||
|
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||||
|
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||||
|
[assembly: Guid("ec2349fb-7fe0-4ad1-b28b-a7a27af80a57")]
|
||||||
|
|
||||||
|
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||||
|
//
|
||||||
|
// Hauptversion
|
||||||
|
// Nebenversion
|
||||||
|
// Buildnummer
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
50
ServiceUtils/ServiceUtils.csproj
Normal file
50
ServiceUtils/ServiceUtils.csproj
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>BeWo.ServiceUtils</RootNamespace>
|
||||||
|
<AssemblyName>BeWo.ServiceUtils</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Configuration" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Core\MergedConfig.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
@@ -1380,4 +1380,33 @@ namespace BS.Shared
|
|||||||
csv,
|
csv,
|
||||||
tsv
|
tsv
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum AiContextType
|
||||||
|
{
|
||||||
|
SupportConcept = 0,
|
||||||
|
Customer = 1,
|
||||||
|
Person = 2,
|
||||||
|
Employee = 3,
|
||||||
|
Organisation = 4,
|
||||||
|
Team = 5,
|
||||||
|
Dokumente = 6,
|
||||||
|
User = 7,
|
||||||
|
UserGroup = 8,
|
||||||
|
Report = 9,
|
||||||
|
Scheduler = 10,
|
||||||
|
Wohnheim = 11,
|
||||||
|
Vertretungen = 12,
|
||||||
|
CustomerTeam = 13,
|
||||||
|
Scheduling = 14,
|
||||||
|
Finance = 15,
|
||||||
|
Administration = 16,
|
||||||
|
//AiConversation = 17,
|
||||||
|
//AiConversationPopup = 18,
|
||||||
|
ServiceRecord = 19,
|
||||||
|
CustomerSingle = 20,
|
||||||
|
PersonSingle = 21,
|
||||||
|
EmployeeSingle = 22,
|
||||||
|
OrganisationSingle = 23,
|
||||||
|
SupportConceptSingle = 24,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using BS.Shared.DataContracts;
|
using BS.Shared.DataContracts;
|
||||||
using BS.Shared.DataContracts.Wohnhilfe;
|
using BS.Shared.DataContracts.Wohnhilfe;
|
||||||
|
using BS.Shared.Exceptions;
|
||||||
using BS.Shared.Extensions;
|
using BS.Shared.Extensions;
|
||||||
using BS.Shared.Translation;
|
using BS.Shared.Translation;
|
||||||
|
|
||||||
@@ -31,8 +32,11 @@ namespace BS.Shared.Core
|
|||||||
public static Dictionary<UserRightType, String> UserRightType2Translations;
|
public static Dictionary<UserRightType, String> UserRightType2Translations;
|
||||||
|
|
||||||
public static Dictionary<Enum, string> Wohnhilfe2Translation;
|
public static Dictionary<Enum, string> Wohnhilfe2Translation;
|
||||||
|
|
||||||
public static Dictionary<Enum, string> Gkv2Translation;
|
public static Dictionary<Enum, string> Gkv2Translation;
|
||||||
|
|
||||||
|
public static Dictionary<Enum, string> Ai2Translation;
|
||||||
|
|
||||||
public static Dictionary<ValueListEntryType, String> ValueListEntryType2Header;
|
public static Dictionary<ValueListEntryType, String> ValueListEntryType2Header;
|
||||||
|
|
||||||
public static Dictionary<ValueListEntryType, String> ValueListEntryTypeTranslations;
|
public static Dictionary<ValueListEntryType, String> ValueListEntryTypeTranslations;
|
||||||
@@ -59,14 +63,20 @@ namespace BS.Shared.Core
|
|||||||
|
|
||||||
public static Dictionary<SubstitutionNeed, string> SubstitutionNeedTranslations;
|
public static Dictionary<SubstitutionNeed, string> SubstitutionNeedTranslations;
|
||||||
|
|
||||||
|
public static List<Dictionary<Enum, string>> TempTranslations;
|
||||||
|
|
||||||
static EnumTranslations()
|
static EnumTranslations()
|
||||||
{
|
{
|
||||||
InitUserRightTranslation();
|
TempTranslations = new List<Dictionary<Enum, string>>()
|
||||||
|
{
|
||||||
|
(Gkv2Translation = GetGkvTranslation()),
|
||||||
|
(Ai2Translation = GetAiTranslations())
|
||||||
|
};
|
||||||
|
|
||||||
|
InitUserRightTranslation();
|
||||||
|
|
||||||
InitWohnhilfeEnums();
|
InitWohnhilfeEnums();
|
||||||
|
|
||||||
InitGkvTranslation();
|
|
||||||
|
|
||||||
#region FamilyStatusTranslations
|
#region FamilyStatusTranslations
|
||||||
FamilyStatusTranslations = new Dictionary<object, String>
|
FamilyStatusTranslations = new Dictionary<object, String>
|
||||||
{
|
{
|
||||||
@@ -653,8 +663,17 @@ namespace BS.Shared.Core
|
|||||||
BehinderungsartTranslations.DoForEach(p => AllTranslations.AddAndIgnoreDuplicates(p.Key, p.Value));
|
BehinderungsartTranslations.DoForEach(p => AllTranslations.AddAndIgnoreDuplicates(p.Key, p.Value));
|
||||||
MerkzeichenTranslations.DoForEach(p => AllTranslations.AddAndIgnoreDuplicates(p.Key, p.Value));
|
MerkzeichenTranslations.DoForEach(p => AllTranslations.AddAndIgnoreDuplicates(p.Key, p.Value));
|
||||||
Wohnhilfe2Translation?.DoForEach(kv => AllTranslations.Add(kv.Key, kv.Value));
|
Wohnhilfe2Translation?.DoForEach(kv => AllTranslations.Add(kv.Key, kv.Value));
|
||||||
Gkv2Translation?.DoForEach(kv => AllTranslations.Add(kv.Key, kv.Value));
|
|
||||||
}
|
InitTemp(TempTranslations);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InitTemp(List<Dictionary<Enum, string>> list)
|
||||||
|
{
|
||||||
|
foreach (var dict in list)
|
||||||
|
{
|
||||||
|
dict?.DoForEach(kv => AllTranslations.Add(kv.Key, kv.Value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void InitUserRightTranslation()
|
private static void InitUserRightTranslation()
|
||||||
{
|
{
|
||||||
@@ -1111,17 +1130,32 @@ namespace BS.Shared.Core
|
|||||||
|
|
||||||
Wohnhilfe2Translation = dict;
|
Wohnhilfe2Translation = dict;
|
||||||
}
|
}
|
||||||
|
private static Dictionary<Enum, string> GetGkvTranslation()
|
||||||
private static void InitGkvTranslation()
|
|
||||||
{
|
{
|
||||||
var dict = new Dictionary<Enum, string>();
|
var dict = new Dictionary<Enum, string>();
|
||||||
|
|
||||||
dict.Add(GkvVerfahrensstufe.Test, "Test");
|
dict.Add(GkvVerfahrensstufe.Test, "Test");
|
||||||
dict.Add(GkvVerfahrensstufe.Erprobung, "Erprobung");
|
dict.Add(GkvVerfahrensstufe.Erprobung, "Erprobung");
|
||||||
dict.Add(GkvVerfahrensstufe.Echt, "Echt");
|
dict.Add(GkvVerfahrensstufe.Echt, "Echt");
|
||||||
|
|
||||||
Gkv2Translation = dict;
|
|
||||||
|
|
||||||
|
return dict;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private static Dictionary<Enum, string> GetAiTranslations()
|
||||||
|
{
|
||||||
|
var dict = new Dictionary<Enum, string>();
|
||||||
|
|
||||||
|
dict.Add(AiContextType.SupportConcept, "Hilfeplan Navigation");
|
||||||
|
dict.Add(AiContextType.Customer, "Klienten Navigation");
|
||||||
|
dict.Add(AiContextType.Person, "Personen Navigation");
|
||||||
|
dict.Add(AiContextType.Employee, "Mitarbeiter Navigation");
|
||||||
|
dict.Add(AiContextType.Organisation, "Organisationen Navigation");
|
||||||
|
dict.Add(AiContextType.ServiceRecord, "Zeiterfassung");
|
||||||
|
dict.Add(AiContextType.CustomerSingle, "Klienten Ansicht");
|
||||||
|
dict.Add(AiContextType.EmployeeSingle, "Personen Ansicht");
|
||||||
|
dict.Add(AiContextType.PersonSingle, "Mitarbeiter Ansicht");
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,8 @@ namespace BS.Shared.DataContracts.Feature.AI
|
|||||||
[DataMember] public AiModelDC Modell { get; set; }
|
[DataMember] public AiModelDC Modell { get; set; }
|
||||||
[DataMember] public string Context { get; set; }
|
[DataMember] public string Context { get; set; }
|
||||||
[DataMember] public Dictionary<TableID, long[]> ContextBeWoObjects { get; set; } = new Dictionary<TableID, long[]>();
|
[DataMember] public Dictionary<TableID, long[]> ContextBeWoObjects { get; set; } = new Dictionary<TableID, long[]>();
|
||||||
[DataMember] public int UIContext { get; set; }
|
[DataMember] public AiContextType UIContext { get; set; }
|
||||||
|
[DataMember] public AiDataContextType ContextType { get; set; }
|
||||||
[DataMember] public List<AiConversationMessageDC> Messages { get; set; }
|
[DataMember] public List<AiConversationMessageDC> Messages { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
Shared/Exceptions/BeWoNotImplementedException.cs
Normal file
36
Shared/Exceptions/BeWoNotImplementedException.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using BS.Shared.Core;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace BS.Shared.Exceptions
|
||||||
|
{
|
||||||
|
public class BeWoNotImplementedException : NotImplementedException
|
||||||
|
{
|
||||||
|
public BeWoNotImplementedException() : base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public BeWoNotImplementedException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public BeWoNotImplementedException(string message, Exception inner) : base(message, inner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BeWoNotImplementedException(SerializationInfo info, StreamingContext context) : base(info, context)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BeWoNotImplementedException CreateFromEnum(Enum value)
|
||||||
|
{
|
||||||
|
var type = value.GetType().Name;
|
||||||
|
|
||||||
|
return new BeWoNotImplementedException($"{type} {value} ist nicht implementiert.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -385,6 +385,7 @@
|
|||||||
<Compile Include="DataContracts\Reports\AuslastungAnalysisSupportConceptDC.cs" />
|
<Compile Include="DataContracts\Reports\AuslastungAnalysisSupportConceptDC.cs" />
|
||||||
<Compile Include="DataContracts\ServiceRecordHistoryDC.cs" />
|
<Compile Include="DataContracts\ServiceRecordHistoryDC.cs" />
|
||||||
<Compile Include="DataContracts\SupportPinDC.cs" />
|
<Compile Include="DataContracts\SupportPinDC.cs" />
|
||||||
|
<Compile Include="Exceptions\BeWoNotImplementedException.cs" />
|
||||||
<Compile Include="Exceptions\BeWoInvalidOperationException.cs" />
|
<Compile Include="Exceptions\BeWoInvalidOperationException.cs" />
|
||||||
<Compile Include="Exceptions\GkvException.cs" />
|
<Compile Include="Exceptions\GkvException.cs" />
|
||||||
<Compile Include="Extensions\ApiResponseExtension.cs" />
|
<Compile Include="Extensions\ApiResponseExtension.cs" />
|
||||||
|
|||||||
Reference in New Issue
Block a user