Neues Modul PolyTrader.Modules.Accounting (IPolyTraderModule, acc_-Praefix, nur Core-Referenz, KEIN Handel). Konzept: docs/konzepte/KONZEPT-Modul-Accounting.md, Phase A-1. Buchungsgrundlage ausschliesslich aus unabhaengigen Polymarket-/On-Chain-Abrufen (nie unsere Trading-DB), append-only, prueffaehig: - Modelle: LedgerEntry (+ LedgerEventType), IngestRun (mit Balance-Anker), RawSnapshot, RawActivity/RawTransfer (normalisierte Eingaben, entkoppeln pure Logik von der API-Feldbenennung). - AccountingClassifier (Logic/, pur+getestet): Activity->Buchungssatz (Typ/Vorzeichen: BUY=Cash raus inkl. Fee, SELL=Cash rein minus Fee, Redeem/Reward +, Split/Merge/Conversion geldneutral), stabiler Idempotency-Key; Transfer-Klassifikation trennt intern (System-Contract-Whitelist) von externen Deposits/Withdrawals. SumNet fuer den Balance-Anker-Abgleich. - AccountingDbContext (acc_ledger append-only + Unique-Index Idempotency, acc_ingest_runs, acc_raw; Autoincrement-PKs). Migration InitialAccounting generiert UND angewendet. Repos mit idempotentem Upsert (true=neu/false=Duplikat). - AccountingIngestService (BackgroundService): testbarer IngestAccountAsync - Activity + On-Chain- Transfers klassifizieren + idempotent buchen, Rohschnappschuss ablegen, Lauf inkl. Balance-Anker- Delta protokollieren; Backfill vs. inkrementell (Lookback-Ueberlappung gegen API-Lag). - Quellen hinter Interfaces (IActivitySource/ITransferSource/IBalanceAnchorSource) mit Null-Stubs: Modul laeuft offline und bucht korrekt nichts. Live-Abruf + System-Contract-Whitelist = Zielland. - UI designerfaehig (partial + .Designer.cs): Tabs Ledger (filterbar) + Abruf/Status (Ingest-Laeufe, Balance-Anker, manueller Backfill/Inkrement). - Program.cs (beide Modul-Listen) + sln + App/Tests-Referenzen. A-2 (Abrechnung/BWA/FX), A-3 (US-Steuerschicht FIFO/Form-8949), A-4 (CSV/PDF via PDFsharp/MigraDoc) folgen. Tests: +12 (Klassifikation, intern/extern-Transfer, Ingest-Idempotenz, Balance-Anker, Inkrement-Fenster). Build 0 Fehler, 379 Tests gruen, --smoke-ui alle 6 Views gruen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
96 lines
3.8 KiB
XML
96 lines
3.8 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
||
|
||
<PropertyGroup>
|
||
<TargetFramework>net8.0-windows7.0</TargetFramework>
|
||
<Nullable>enable</Nullable>
|
||
<ImplicitUsings>enable</ImplicitUsings>
|
||
<ApplicationIcon>favicon.ico</ApplicationIcon>
|
||
<OutputType>WinExe</OutputType>
|
||
<UseWindowsForms>true</UseWindowsForms>
|
||
<!-- Assembly heißt jetzt PolyTrader.App; RootNamespace bleibt PolyTraderSharp,
|
||
damit die bestehenden Namespaces und die .resx-Ressourcenauflösung intakt bleiben. -->
|
||
<AssemblyName>PolyTrader.App</AssemblyName>
|
||
<RootNamespace>PolyTraderSharp</RootNamespace>
|
||
</PropertyGroup>
|
||
|
||
<ItemGroup>
|
||
<Compile Remove="agentspace\**" />
|
||
<None Remove="agentspace\**" />
|
||
<Compile Remove="libs\**" />
|
||
<None Remove="libs\**" />
|
||
<!-- Neue Modul-/Core-Projekte liegen unter src/ und werden separat kompiliert. -->
|
||
<Compile Remove="src\**" />
|
||
<None Remove="src\**" />
|
||
<EmbeddedResource Remove="src\**" />
|
||
<!-- Testprojekt unter tests/ wird separat kompiliert (nicht in die App ziehen). -->
|
||
<Compile Remove="tests\**" />
|
||
<None Remove="tests\**" />
|
||
<EmbeddedResource Remove="tests\**" />
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<Content Include="favicon.ico" />
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<None Update="appsettings.json">
|
||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||
</None>
|
||
<!-- Gitignorierte Local-Datei (MySQL-Connection) neben die EXE kopieren, damit die App
|
||
die Verbindung auch findet, wenn sie NICHT aus dem Projekt-Root gestartet wird. -->
|
||
<None Update="appsettings.Local.json" Condition="Exists('appsettings.Local.json')">
|
||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||
</None>
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<Folder Include="agentspace\antigravity\" />
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<Compile Update="Properties\Resources.Designer.cs">
|
||
<DesignTime>True</DesignTime>
|
||
<AutoGen>True</AutoGen>
|
||
<DependentUpon>Resources.resx</DependentUpon>
|
||
</Compile>
|
||
<Compile Update="Properties\Settings.Designer.cs">
|
||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||
<AutoGen>True</AutoGen>
|
||
<DependentUpon>Settings.settings</DependentUpon>
|
||
</Compile>
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<EmbeddedResource Update="Properties\Resources.resx">
|
||
<Generator>ResXFileCodeGenerator</Generator>
|
||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||
</EmbeddedResource>
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<PackageReference Include="Nethereum.Web3" Version="6.1.0" />
|
||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
||
<!-- Dashboard-Charts (MIT, keine Umsatzschwelle, kein Phone-Home – siehe docs/sicherheit). -->
|
||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
|
||
<!-- Angehoben, um Downgrade-Konflikt (EF Core zieht 8.0.2) aufzulösen. -->
|
||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
|
||
<PackageReference Include="ScottPlot" Version="5.1.59" />
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<None Update="Properties\Settings.settings">
|
||
<Generator>SettingsSingleFileGenerator</Generator>
|
||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||
</None>
|
||
</ItemGroup>
|
||
|
||
<ItemGroup>
|
||
<ProjectReference Include="src\PolyTrader.Core\PolyTrader.Core.csproj" />
|
||
<ProjectReference Include="src\PolyTrader.Modules.CopyTrading\PolyTrader.Modules.CopyTrading.csproj" />
|
||
<ProjectReference Include="src\PolyTrader.Modules.ResolutionFarming\PolyTrader.Modules.ResolutionFarming.csproj" />
|
||
<ProjectReference Include="src\PolyTrader.Modules.Supervisor\PolyTrader.Modules.Supervisor.csproj" />
|
||
<ProjectReference Include="src\PolyTrader.Modules.Accounting\PolyTrader.Modules.Accounting.csproj" />
|
||
</ItemGroup>
|
||
|
||
</Project> |