Files
zszq-trs/YLErpDAL/YLErpDAL.csproj
T
陈斐andClaude 3e357312c2 feat: 风控引擎核心重构 - 表达式树编译 + Roslyn Scripting + 规则模型合并
本次提交实现风控引擎从占位代码到可运行版本的核心升级:

【模型合并】
- RiskRule.cs:删除 RiskRuleApplication,将策略/时点/范围合并到 RiskRule
- 新增 FormulaJson 字段,用于 Roslyn 脚本解析
- 新增 CompiledScript 运行时字段(预编译委托,不持久化)

【规则编译器 - RuleCompiler.cs】
- ParseFormulaJson:解析 FormulaJson 条件列表
- BuildScriptCode:生成 Roslyn C# 脚本代码
- CompileScript:用 Roslyn 编译为 Func<RiskContext, bool> 委托
- 支持多条件 AND(逗号分隔自动拆分)
- 变量类型映射:YLErp.DBModels.trade 等

【EvaluateRisk 升级】
- LoadRules → 筛选 TriggerPoint → 执行 CompiledScript → 按策略聚合
- 异常处理:返回 NeedApproval(审批类,可审批通过)
- 示例规则:名义本金>1亿 且 保证金比例>50% → 禁止

【项目依赖】
- 新增 Microsoft.CodeAnalysis.CSharp (4.12.0)
- 升级 System.Text.Encoding.CodePages 6.0.0 → 7.0.0

【验证】
- 簿记交易确认(BOOK_CONFIRM)已接入 QuotaMonitorService
- 编译通过,运行验证通过

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-22 19:31:20 +08:00

84 lines
3.5 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>10.0</LangVersion>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<RootNamespace>YLErp</RootNamespace>
<Version>5.0.0.1</Version>
<AssemblyVersion>5.0.0.1</AssemblyVersion>
<FileVersion>5.0.0.1</FileVersion>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoWarn>NU1803</NoWarn>
<RunAnalyzersDuringBuild>False</RunAnalyzersDuringBuild>
<EnableNETAnalyzers>False</EnableNETAnalyzers>
</PropertyGroup>
<ItemGroup>
<Compile Remove="BLL\MarginCalculation\DongWu\CalculationHelper.cs" />
<Compile Remove="Modules\EodModule\SettlementModule\EodClientBalanceCalcV2.cs" />
<Compile Remove="Modules\TQuoteModule\CustomizedQuoteService.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="AutoMapper" Version="12.0.0" />
<PackageReference Include="Confluent.Kafka" Version="2.1.1" />
<PackageReference Include="CsvHelper" Version="28.0.1" />
<PackageReference Include="Dapper" Version="2.0.123" />
<PackageReference Include="FluentFTP" Version="45.2.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.12.0" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.10.0" />
<PackageReference Include="Microsoft.Net.Http.Headers" Version="2.2.8" />
<PackageReference Include="Oracle.EntityFrameworkCore" Version="6.21.90" />
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.90" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.2" />
<PackageReference Include="Snowflake.Core" Version="2.0.0" />
<PackageReference Include="SocialExplorer.FastDBF" Version="1.0.0" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.10.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.0" />
<PackageReference Include="Qdp.Pricing.Library.Options" Version="1.0.5" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="7.0.0" />
<PackageReference Include="YLErp.Office" Version="1.1.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Framework\YLErp.Cache\YLErp.Cache.csproj" />
<ProjectReference Include="..\Framework\YLErp.Core\YLErp.Core.csproj" />
<ProjectReference Include="..\Framework\YLErp.MailKit\YLErp.MailKit.csproj" />
<ProjectReference Include="..\Framework\YLErp.Resources\YLErp.Resources.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="CxxCalcLib">
<HintPath>..\ThirdPartyLibs\CxxQdp\CxxCalcLib.dll</HintPath>
</Reference>
<Reference Include="YLErp.ThirdParty.CaculatePrice">
<HintPath>..\ThirdPartyLibs\YLErp.ThirdParty.CaculatePrice.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="Modules\SwapModule\Interface\" />
</ItemGroup>
</Project>