mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-25 13:10:13 +00:00
192a1e939b
Audit findings #4 (SessionSummary mapper x3) and #3 dual-write Phase 1.
- Collapse the two ~99%-identical SessionSummary mappers into one core mapper
taking the resolved sessionId (index vs primary differ only in that source).
- BuildSessionIndexEntity is now the single SessionsIndex projection manifest and
a SUPERSET of every field the merge call sites write, so a StartedAt-shift full
upsert can no longer drop a merged field (the recurring drift class, cf ab90423b).
- Fix two real bugs surfaced while grounding the design: ImeAgentVersion was never
written to the index although search/MCP push an OData filter against it (filter
matched nothing); UpdateSessionImeAgentVersionAsync now mirrors it. AdminMarkedAction
(dashboard list badge) was merged but missing from the projection -> now included.
- SyncSessionIndexAsync funnels the upsert-vs-merge + IndexRowKey-resolution decision
that was duplicated across the 3 StartedAt-shift branch sites.
- Correct the DeletionState doc-comment (it is primary-only, not index-surfaced).
The SessionsIndex is a full denormalized mirror of Sessions (different RowKey sort)
serving list/search/stats/raw directly; lean-drop would break /api/raw/sessions.
Backend build 0 warnings; full xUnit suite 2172/2172 (incl. new index-projection +
ImeAgentVersion-mirror tests). BuildSessionIndexEntity made internal for the test.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
75 lines
4.6 KiB
XML
75 lines
4.6 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
|
|
<PropertyGroup>
|
|
<TargetFramework>net8.0</TargetFramework>
|
|
<AzureFunctionsVersion>V4</AzureFunctionsVersion>
|
|
<OutputType>Exe</OutputType>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
|
|
<!-- Backend version surfaced via /api/health. CommitHash is injected at CI time
|
|
through -p:SourceRevisionId=<github.sha> and appended to InformationalVersion.
|
|
BuildTimestampUtc is baked into the assembly as AssemblyMetadata so /api/health
|
|
reports the actual build moment — not the file mtime, which Azure Functions
|
|
resets to the zip-extract time on every cold start. CI may override via
|
|
-p:BuildTimestampUtc=<iso8601> to force a specific timestamp. -->
|
|
<Version>1.0.0</Version>
|
|
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
|
<IncludeSourceRevisionInInformationalVersion>true</IncludeSourceRevisionInInformationalVersion>
|
|
<BuildTimestampUtc Condition="'$(BuildTimestampUtc)' == ''">$([System.DateTime]::UtcNow.ToString('o'))</BuildTimestampUtc>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
|
|
<_Parameter1>BuildTimestampUtc</_Parameter1>
|
|
<_Parameter2>$(BuildTimestampUtc)</_Parameter2>
|
|
</AssemblyAttribute>
|
|
<!-- Expose internals (e.g. BuildSessionIndexEntity, the SessionsIndex projection manifest) to tests. -->
|
|
<InternalsVisibleTo Include="AutopilotMonitor.Functions.Tests" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
|
<PackageReference Include="Azure.Identity" Version="1.21.0" />
|
|
<PackageReference Include="Azure.Monitor.Query" Version="1.5.0" />
|
|
<PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.23.0" />
|
|
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="2.51.0" />
|
|
<PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="2.50.0" />
|
|
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="2.1.0" />
|
|
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.SignalRService" Version="2.0.1" />
|
|
<PackageReference Include="Microsoft.Azure.SignalR.Management" Version="1.33.0" />
|
|
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Timer" Version="4.3.1" />
|
|
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues" Version="5.5.4" />
|
|
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="2.0.7" />
|
|
<PackageReference Include="Azure.Data.Tables" Version="12.11.0" />
|
|
<PackageReference Include="Azure.Storage.Blobs" Version="12.27.0" />
|
|
<PackageReference Include="Azure.Storage.Queues" Version="12.25.0" />
|
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
|
<PackageReference Include="Microsoft.Identity.Web" Version="4.3.0" />
|
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.11" />
|
|
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="8.0.25" />
|
|
<PackageReference Include="Resend" Version="0.2.1" />
|
|
<!-- Pin to override transitive 8.0.0 / 8.0.1 with HIGH severity advisories
|
|
(GHSA-447r-wph3-92pm in System.Formats.Asn1; GHSA-37gx-xxp4-5rgx +
|
|
GHSA-w3x6-4m5h-cxqf in System.Security.Cryptography.Xml). -->
|
|
<PackageReference Include="System.Formats.Asn1" Version="8.0.2" />
|
|
<PackageReference Include="System.Security.Cryptography.Xml" Version="8.0.3" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\..\Shared\AutopilotMonitor.Shared\AutopilotMonitor.Shared.csproj" />
|
|
<ProjectReference Include="..\..\Shared\AutopilotMonitor.DecisionCore\AutopilotMonitor.DecisionCore.csproj" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<EmbeddedResource Include="Security\Certificates\intune-root-*.pem" />
|
|
<EmbeddedResource Include="Security\Certificates\intune-intermediate-*.pem" />
|
|
<EmbeddedResource Include="..\..\..\rules\dist\gather-rules.json" LogicalName="AutopilotMonitor.Functions.Rules.gather-rules.json" />
|
|
<EmbeddedResource Include="..\..\..\rules\dist\analyze-rules.json" LogicalName="AutopilotMonitor.Functions.Rules.analyze-rules.json" />
|
|
<EmbeddedResource Include="..\..\..\rules\dist\ime-log-patterns.json" LogicalName="AutopilotMonitor.Functions.Rules.ime-log-patterns.json" />
|
|
<!-- CPE mapping seed + community files are loaded from GitHub via reseed, not embedded -->
|
|
<!-- Files at rules/dist/cpe-mapping-seed.json and rules/dist/cpe-community-mappings.json -->
|
|
</ItemGroup>
|
|
|
|
</Project>
|