Funkcje użytkowe
- obsługa wielu instalacji KCClose,
- odczyt daty oraz liczby dni wstecz,
- wybór daty z kalendarza,
- czytelne potwierdzenia i komunikaty błędów.
Dokumentacja produktu
Aplikacja Android do bezpiecznego zarządzania datą zamknięcia okresu w programie KCClose.
KCClose Remote umożliwia operatorowi odczyt bieżącej daty zamknięcia okresu oraz zapis nowej daty z telefonu lub tabletu z Androidem. Aplikacja komunikuje się z usługą REST udostępnianą przez program KCClose.
/getstatus i /setdate oraz autoryzacji nagłówkiem X-Auth-Token.http:// lub https://.| Pole | Przykład | Uwagi |
|---|---|---|
| Nazwa | Centrala | Nazwa widoczna na liście. |
| Adres | 192.168.1.20 | Bez prefiksu aplikacja doda http://. |
| Port | 8088 | Musi odpowiadać konfiguracji KCClose. |
| Hasło | •••••••••••• | Przesyłane jako X-Auth-Token. |
Wybierz wpis z listy, aby przełączyć aktywny serwer. Funkcja edycji aktualizuje istniejący wpis. Usunięcie wymaga potwierdzenia i nie zmienia konfiguracji programu KCClose.
Aplikacja wykonuje GET /getstatus. Odpowiedź poprawna aktualizuje kartę statusu i pole daty.
RRRR-MM-DD.| Kod / sytuacja | Znaczenie | Działanie operatora |
|---|---|---|
| Brak HTTP | Telefon nie nawiązał połączenia. | Sprawdź Wi‑Fi/VPN, adres, port, zaporę i działanie KCClose. |
| 401 unauthorized | Brak lub niezgodne hasło API. | Wpisz identyczne hasło jak w konfiguracji REST KCClose. |
| 400 invalid_date | Serwer odrzucił datę. | Sprawdź format i zakres dopuszczony przez KCClose. |
| 400 missing_date | Brak pola data. | Sprawdź zgodność wersji klienta i zgłoś błąd utrzymaniu. |
| 400 invalid_json | Treść nie jest obiektem JSON. | Sprawdź zgodność wersji klienta i serwera. |
| 404 closed_period_not_found | Brak daty zamkniętego okresu w bazie. | Zweryfikuj dane i konfigurację bazy w KCClose. |
| 404 not_found | Nieznany endpoint. | Sprawdź adres i wersję KCClose. |
| 405 method_not_allowed | Zła metoda HTTP. | Dla /setdate wymagane jest PUT; sprawdź wersję aplikacji. |
| 413 request_too_large | Treść przekracza 4096 bajtów. | Zgłoś niezgodność klienta; zwykłe żądanie ma kilka dziesiątek bajtów. |
| 500 database_error | Błąd operacji bazodanowej. | Sprawdź log KCClose i stan bazy. |
| 503 database_unavailable | KCClose nie ma połączenia z bazą. | Przywróć połączenie programu KCClose z bazą. |
| Nieprawidłowa odpowiedź | Odpowiedź 2xx nie ma oczekiwanych pól JSON. | Sprawdź zgodność wersji i log serwera. |
Każde wywołanie REST zawiera hasło w nagłówku X-Auth-Token. Hasło jest przypisane do konkretnego wpisu serwera. Po stronie KCClose konfigurację chroni Windows DPAPI. Po stronie Androida lista serwerów jest serializowana do pliku servers.dat w prywatnym katalogu aplikacji File.DirInternal.
servers.dat nie ma dodatkowego szyfrowania na poziomie aplikacji. Na urządzeniu z rootem lub przejętym kontem systemowym dane mogą zostać odczytane.| Warstwa | Rola | Technologia / dane |
|---|---|---|
| Aplikacja mobilna | Interfejs, konfiguracja, walidacja, REST. | B4A 13.40, OkHttpUtils2, JSON, XUI Views |
| Sieć | Transport żądań i odpowiedzi. | HTTP(S), X-Auth-Token, JSON UTF-8 |
| KCClose | Autoryzacja, walidacja i logika biznesowa. | Delphi, TIdHTTPServer |
| Baza danych | Źródło i miejsce zapisu daty zamkniętego okresu. | Dostęp wyłącznie przez KCClose |
| Klucz Map | Typ | Opis |
|---|---|---|
| Nazwa | String | Nazwa widoczna w interfejsie. |
| IP | String | Adres IP, host lub adres z prefiksem. |
| Port | String | Port REST od 1 do 65535. |
| Haslo | String | Token przekazywany w X-Auth-Token. |
http://<host>:<port>. Klient zachowuje podany prefiks http:// lub https://; jeśli go nie ma, dodaje http://.GET /getstatus Nagłówek: X-Auth-Token: <hasło>
{
"ok": true,
"dataZamkniecia": "2026-08-16",
"dniWstecz": 3
}
PUT /setdate Nagłówki: X-Auth-Token oraz Content-Type: application/json; charset=utf-8. Limit treści: 4096 bajtów.
{
"data": "2026-08-16"
}
{
"ok": true,
"message": "Data końca zamkniętego okresu została ustawiona na 2026-08-16."
}
{
"ok": false,
"error": "unauthorized",
"message": "Brak lub nieprawidłowe hasło w nagłówku X-Auth-Token."
}
Klient interpretuje kod HTTP i pole error. Pole message służy jako szczegół techniczny; operator otrzymuje uproszczony komunikat po polsku.
| Składnik | Wersja / ustawienie |
|---|---|
| B4A | 13.40 |
| Java | JDK 19; lokalnie C:\java\jdk-19.0.2 |
| Android SDK Platform | API 35 |
| android.jar | C:\Android\platforms\android-35\android.jar |
| Build-Tools | 35.0.0 |
| minSdkVersion | 21 |
| targetSdkVersion | 35 |
B4XCollections, Core, OkHttpUtils2, RandomAccessFile, XUI Views, AppCompat oraz JSON.
W B4A wybierz Tools > Configure Paths i wskaż C:\Android\platforms\android-35\android.jar. Użycie android-34 powoduje błąd linkera dotyczący android:attr/windowOptOutEdgeToEdgeEnforcement, ponieważ atrybut jest dostępny od API 35.
servers.dat pokazuje informację o braku serwerów./getstatus pokazuje datę i dni wstecz./setdate wysyła JSON, zapisuje datę i odświeża status.invalid_date.| Procedura | Odpowiedzialność |
|---|---|
| Activity_Create / ZbudujInterfejs | Inicjalizacja, wczytanie danych i budowa interfejsu. |
| PobierzStatus | GET /getstatus, autoryzacja i aktualizacja pulpitu. |
| btnWyslij_Click | PUT /setdate, JSON, potwierdzenie i odświeżenie. |
| OpiszBlad | Mapowanie odpowiedzi HTTP/API na komunikaty operatora. |
| btnDodaj_Click | Walidacja i dodanie lub aktualizacja serwera. |
| ZapiszListe | Serializacja listy serwerów do servers.dat. |
| Termin | Znaczenie |
|---|---|
| API | Interfejs komunikacyjny udostępniony przez KCClose. |
| REST | Komunikacja HTTP oparta na endpointach i metodach. |
| Token / hasło API | Wspólna tajna wartość przesyłana w X-Auth-Token. |
| Endpoint | Adres zasobu, np. /getstatus lub /setdate. |
| JSON | Tekstowy format danych żądań i odpowiedzi. |
| LAN | Lokalna, zaufana sieć komputerowa. |
| VPN | Szyfrowany tunel do sieci, w której działa KCClose. |
| DPAPI | Mechanizm Windows używany przez KCClose do ochrony hasła. |
Dokument opracowano na podstawie kodu źródłowego KCClose_Remote.b4a (wersja aplikacji 2.0), modułu Starter.bas oraz implementacji REST w module UMain.pas programu KCClose. Stan na 16 sierpnia 2026.