diff --git a/README.md b/README.md index a2fe992..abd79d9 100644 --- a/README.md +++ b/README.md @@ -23,3 +23,7 @@ docker compose up --build app postgres redis - `npm run check:contracts` — проверить manifest/settings/OpenAPI. Архитектурные решения: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md), интеграция: [docs/PLATFORM-INTEGRATION.md](docs/PLATFORM-INTEGRATION.md), будущий объём: [docs/ROADMAP.md](docs/ROADMAP.md). + +## Биометрический терминал + +Windows-приложение для SLK20R находится в [apps/KronaStaffTerminal](apps/KronaStaffTerminal). Оно добавляет сотрудников, регистрирует отпечаток по трём сканам, отмечает первый приход за день и отправляет уведомление в Telegram и/или MAX. Инструкция по запуску и настройке находится в [README терминала](apps/KronaStaffTerminal/README.md). diff --git a/apps/KronaStaffTerminal/.gitignore b/apps/KronaStaffTerminal/.gitignore new file mode 100644 index 0000000..dd39356 --- /dev/null +++ b/apps/KronaStaffTerminal/.gitignore @@ -0,0 +1,54 @@ +## .NET / Visual Studio +[Bb]in/ +[Oo]bj/ +[Dd]ebug/ +[Rr]elease/ +.vs/ +*.user +*.suo +*.userosscache +*.sln.docstates +artifacts/ + +# Build logs +[Ll]og/ +[Ll]ogs/ +*.log +*.binlog + +# Test results +[Tt]est[Rr]esult*/ +*.trx +*.coverage +*.coveragexml + +# NuGet +*.nupkg +*.snupkg +*.nuget.props +*.nuget.targets +project.lock.json + +# MSIX packaging output +AppPackages/ +BundleArtifacts/ +*.msix +*.msixupload +*.appx +*.appxbundle +*.appxupload + +# Publish output +publish/ +*.pubxml +PublishScripts/ + +# Code analysis and tooling +_ReSharper*/ +*.DotSettings.user +*.dotCover +.idea/ + +# Generated files +Generated\ Files/ +*_wpftmp.csproj diff --git a/apps/KronaStaffTerminal/App.xaml b/apps/KronaStaffTerminal/App.xaml new file mode 100644 index 0000000..0410b9e --- /dev/null +++ b/apps/KronaStaffTerminal/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/apps/KronaStaffTerminal/App.xaml.cs b/apps/KronaStaffTerminal/App.xaml.cs new file mode 100644 index 0000000..a6ceb25 --- /dev/null +++ b/apps/KronaStaffTerminal/App.xaml.cs @@ -0,0 +1,57 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace KronaStaffTerminal; + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : Application +{ + /// + /// The main application window. Use App.Window from any class that needs + /// the window reference (for dialogs, pickers, interop, etc.). + /// + public static Window Window { get; private set; } = null!; + + /// + /// The UI thread dispatcher. Use App.DispatcherQueue to marshal calls + /// to the UI thread. Fully qualified to avoid CS0104 ambiguity with + /// . + /// + public static Microsoft.UI.Dispatching.DispatcherQueue DispatcherQueue { get; private set; } = null!; + + /// + /// The native window handle (HWND). Use for file pickers, + /// DataTransferManager, and any WinRT interop that requires + /// InitializeWithWindow. + /// + public static nint WindowHandle => + WinRT.Interop.WindowNative.GetWindowHandle(Window); + + /// + /// Initializes the singleton application object. + /// + public App() + { + InitializeComponent(); + } + + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. + protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) + { + Window = new MainWindow(); + DispatcherQueue = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread(); + Window.Activate(); + } +} diff --git a/apps/KronaStaffTerminal/Assets/AppIcon.ico b/apps/KronaStaffTerminal/Assets/AppIcon.ico new file mode 100644 index 0000000..235dad2 Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/AppIcon.ico differ diff --git a/apps/KronaStaffTerminal/Assets/LockScreenLogo.scale-200.png b/apps/KronaStaffTerminal/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000..33f889e Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/LockScreenLogo.scale-200.png differ diff --git a/apps/KronaStaffTerminal/Assets/SplashScreen.scale-200.png b/apps/KronaStaffTerminal/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000..802c79d Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/SplashScreen.scale-200.png differ diff --git a/apps/KronaStaffTerminal/Assets/Square150x150Logo.scale-200.png b/apps/KronaStaffTerminal/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000..ddba42a Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/Square150x150Logo.scale-200.png differ diff --git a/apps/KronaStaffTerminal/Assets/Square44x44Logo.scale-200.png b/apps/KronaStaffTerminal/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000..9327dd7 Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/Square44x44Logo.scale-200.png differ diff --git a/apps/KronaStaffTerminal/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/apps/KronaStaffTerminal/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000..e51416a Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/apps/KronaStaffTerminal/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/apps/KronaStaffTerminal/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000..bf063eb Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png differ diff --git a/apps/KronaStaffTerminal/Assets/StoreLogo.png b/apps/KronaStaffTerminal/Assets/StoreLogo.png new file mode 100644 index 0000000..be865f0 Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/StoreLogo.png differ diff --git a/apps/KronaStaffTerminal/Assets/Wide310x150Logo.scale-200.png b/apps/KronaStaffTerminal/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000..314d297 Binary files /dev/null and b/apps/KronaStaffTerminal/Assets/Wide310x150Logo.scale-200.png differ diff --git a/apps/KronaStaffTerminal/KronaStaffTerminal.csproj b/apps/KronaStaffTerminal/KronaStaffTerminal.csproj new file mode 100644 index 0000000..ee682ea --- /dev/null +++ b/apps/KronaStaffTerminal/KronaStaffTerminal.csproj @@ -0,0 +1,82 @@ + + + WinExe + net10.0-windows10.0.26100.0 + 10.0.17763.0 + KronaStaffTerminal + app.manifest + x86;x64;ARM64 + win-$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant()) + win-$(Platform).pubxml + true + false + true + enable + enable + x64 + + + + + + + + + + + + + + + + + + + + + Vendor\ZKFinger\x64\libzkfpcsharp.dll + true + + + + + + + + + + + + + + + + + + + + true + + + + + False + True + False + + diff --git a/apps/KronaStaffTerminal/MainPage.xaml b/apps/KronaStaffTerminal/MainPage.xaml new file mode 100644 index 0000000..7d1f7c5 --- /dev/null +++ b/apps/KronaStaffTerminal/MainPage.xaml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +