Twórz automatycznie generowane pola unikalnych identyfikatorów z sekwencyjnym numerowaniem i niestandardowym formatowaniem
Pola unikalnych identyfikatorów automatycznie generują sekwencyjne, unikalne identyfikatory dla Twoich rekordów. Są idealne do tworzenia numerów biletów, identyfikatorów zamówień, numerów faktur lub jakiegokolwiek systemu identyfikatorów sekwencyjnych w Twoim przepływie pracy.
Podstawowy przykład
Utwórz proste pole unikalnego identyfikatora z automatycznym sekwencjonowaniem:
mutation CreateUniqueIdField {
createCustomField(input: {
name: "Ticket Number"
type: UNIQUE_ID
useSequenceUniqueId: true
}) {
id
name
type
useSequenceUniqueId
}
}
Zaawansowany przykład
Utwórz sformatowane pole unikalnego identyfikatora z prefiksem i zerowym wypełnieniem:
mutation CreateFormattedUniqueIdField {
createCustomField(input: {
name: "Order ID"
type: UNIQUE_ID
description: "Auto-generated order identifier"
useSequenceUniqueId: true
prefix: "ORD-"
sequenceDigits: 4
sequenceStartingNumber: 1000
}) {
id
name
type
description
useSequenceUniqueId
prefix
sequenceDigits
sequenceStartingNumber
}
}
Parametry wejściowe
CreateCustomFieldInput (UNIQUE_ID)
Parametr | Typ | Wymagane | Opis |
---|---|---|---|
name |
String! | ✅ Tak | Nazwa wyświetlana pola unikalnego identyfikatora |
type |
CustomFieldType! | ✅ Tak | Musi być UNIQUE_ID |
description |
String | Nie | Tekst pomocy wyświetlany użytkownikom |
useSequenceUniqueId |
Boolean | Nie | Włącz automatyczne sekwencjonowanie (domyślnie: fałsz) |
prefix |
String | Nie | Prefiks tekstowy dla generowanych identyfikatorów (np. "ZADANIE-") |
sequenceDigits |
Int | Nie | Liczba cyfr do zerowego wypełnienia |
sequenceStartingNumber |
Int | Nie | Początkowa liczba dla sekwencji |
Opcje konfiguracji
Automatyczne sekwencjonowanie (useSequenceUniqueId
)
- prawda: Automatycznie generuje sekwencyjne identyfikatory, gdy rekordy są tworzone
- fałsz lub nieokreślone: Wymagana ręczna wpisywanie (działa jak pole tekstowe)
Prefiks (prefix
)
- Opcjonalny prefiks tekstowy dodawany do wszystkich generowanych identyfikatorów
- Przykłady: "ZADANIE-", "ZAM-", "BŁĄD-", "WYM-"
- Brak ograniczeń długości, ale zachowaj rozsądne dla wyświetlania
Cyfry sekwencji (sequenceDigits
)
- Liczba cyfr do zerowego wypełnienia numeru sekwencji
- Przykład:
sequenceDigits: 3
produkuje001
,002
,003
- Jeśli nie określono, nie stosuje się wypełnienia
Początkowa liczba (sequenceStartingNumber
)
- Pierwsza liczba w sekwencji
- Przykład:
sequenceStartingNumber: 1000
zaczyna się od 1000, 1001, 1002... - Jeśli nie określono, zaczyna się od 1 (domyślne zachowanie)
Format generowanego identyfikatora
Ostateczny format identyfikatora łączy wszystkie opcje konfiguracji:
{prefix}{paddedSequenceNumber}
Przykłady formatów
Konfiguracja | Generowane identyfikatory |
---|---|
Brak opcji | 1 , 2 , 3 |
prefix: "TASK-" |
TASK-1 , TASK-2 , TASK-3 |
sequenceDigits: 3 |
001 , 002 , 003 |
prefix: "ORD-", sequenceDigits: 4 |
ORD-0001 , ORD-0002 , ORD-0003 |
prefix: "BUG-", sequenceStartingNumber: 500 |
BUG-500 , BUG-501 , BUG-502 |
All options combined | TASK-1001 , TASK-1002 , TASK-1003 |
Odczytywanie wartości unikalnych identyfikatorów
Zapytanie rekordów z unikalnymi identyfikatorami
query GetRecordsWithUniqueIds {
todos(filter: { projectIds: ["proj_123"] }) {
id
title
customFields {
id
customField {
name
type
prefix
sequenceDigits
}
sequenceId # The generated sequence number
text # The text value for UNIQUE_ID fields
}
}
}
Format odpowiedzi
{
"data": {
"todos": [
{
"id": "todo_123",
"title": "Fix login issue",
"customFields": [
{
"id": "field_value_456",
"customField": {
"name": "Ticket Number",
"type": "UNIQUE_ID",
"prefix": "TASK-",
"sequenceDigits": 3
},
"sequenceId": 42,
"text": "TASK-042"
}
]
}
]
}
}
Automatyczne generowanie identyfikatorów
Kiedy identyfikatory są generowane
- Tworzenie rekordu: Identyfikatory są automatycznie przypisywane, gdy nowe rekordy są tworzone
- Dodawanie pola: Podczas dodawania pola UNIQUE_ID do istniejących rekordów, zadanie w tle jest kolejkowane (implementacja robocza w toku)
- Przetwarzanie w tle: Generowanie identyfikatorów dla nowych rekordów odbywa się synchronicznie za pomocą wyzwalaczy bazy danych
Proces generowania
- Wyzwalacz: Nowy rekord jest tworzony lub pole UNIQUE_ID jest dodawane
- Wyszukiwanie sekwencji: System znajduje następny dostępny numer sekwencji
- Przypisanie identyfikatora: Numer sekwencji jest przypisywany do rekordu
- Aktualizacja licznika: Licznik sekwencji jest inkrementowany dla przyszłych rekordów
- Formatowanie: Identyfikator jest formatowany z prefiksem i wypełnieniem podczas wyświetlania
Gwarancje unikalności
- Ograniczenia bazy danych: Unikalne ograniczenie na identyfikatory sekwencji w każdym polu
- Operacje atomowe: Generowanie sekwencji wykorzystuje blokady bazy danych, aby zapobiec duplikatom
- Zakres projektu: Sekwencje są niezależne dla każdego projektu
- Ochrona przed warunkami wyścigu: Równoległe żądania są obsługiwane bezpiecznie
Tryb ręczny vs automatyczny
Tryb automatyczny (useSequenceUniqueId: true
)
- Identyfikatory są automatycznie generowane za pomocą wyzwalaczy bazy danych
- Gwarantowane jest sekwencyjne numerowanie
- Atomowe generowanie sekwencji zapobiega duplikatom
- Sformatowane identyfikatory łączą prefiks + wypełniony numer sekwencji
Tryb ręczny (useSequenceUniqueId: false
lub undefined
)
- Działa jak zwykłe pole tekstowe
- Użytkownicy mogą wprowadzać niestandardowe wartości za pomocą
setTodoCustomField
z parametremtext
- Brak automatycznego generowania
- Brak egzekwowania unikalności poza ograniczeniami bazy danych
Ustawianie wartości ręcznych (tylko tryb ręczny)
Gdy useSequenceUniqueId
jest fałsz, możesz ustawić wartości ręcznie:
mutation SetUniqueIdValue {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
text: "CUSTOM-ID-001"
})
}
Pola odpowiedzi
Odpowiedź TodoCustomField (UNIQUE_ID)
Pole | Typ | Opis |
---|---|---|
id |
String! | Unikalny identyfikator dla wartości pola |
customField |
CustomField! | Definicja pola niestandardowego |
sequenceId |
Int | Wygenerowany numer sekwencji (uzupełniony dla pól UNIQUE_ID) |
text |
String | Sformatowana wartość tekstowa (łączy prefiks + wypełnioną sekwencję) |
todo |
Todo! | Rekord, do którego należy ta wartość |
createdAt |
DateTime! | Kiedy wartość została utworzona |
updatedAt |
DateTime! | Kiedy wartość została ostatnio zaktualizowana |
Odpowiedź CustomField (UNIQUE_ID)
Pole | Typ | Opis |
---|---|---|
useSequenceUniqueId |
Boolean | Czy automatyczne sekwencjonowanie jest włączone |
prefix |
String | Prefiks tekstowy dla generowanych identyfikatorów |
sequenceDigits |
Int | Liczba cyfr do zerowego wypełnienia |
sequenceStartingNumber |
Int | Początkowa liczba dla sekwencji |
Wymagane uprawnienia
Akcja | Wymagane uprawnienie |
---|---|
Create unique ID field | OWNER or ADMIN role at project level |
Update unique ID field | OWNER or ADMIN role at project level |
Set manual value | Standard record edit permissions |
View unique ID value | Standard record view permissions |
Odpowiedzi błędów
Błąd konfiguracji pola
{
"errors": [{
"message": "Invalid sequence configuration",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Błąd uprawnień
{
"errors": [{
"message": "CustomField not found",
"extensions": {
"code": "CUSTOM_FIELD_NOT_FOUND"
}
}]
}
Ważne uwagi
Automatycznie generowane identyfikatory
- Tylko do odczytu: Automatycznie generowane identyfikatory nie mogą być edytowane ręcznie
- Trwałe: Po przypisaniu identyfikatory sekwencji nie zmieniają się
- Chronologiczne: Identyfikatory odzwierciedlają kolejność tworzenia
- Zakres: Sekwencje są niezależne dla każdego projektu
Rozważania dotyczące wydajności
- Generowanie identyfikatorów dla nowych rekordów odbywa się synchronicznie za pomocą wyzwalaczy bazy danych
- Generowanie sekwencji wykorzystuje
FOR UPDATE
blokady do operacji atomowych - System zadań w tle istnieje, ale implementacja robocza jest w toku
- Rozważ liczby początkowe sekwencji dla projektów o dużym wolumenie
Migracja i aktualizacje
- Dodanie automatycznego sekwencjonowania do istniejących rekordów kolejkowało zadanie w tle (implementacja robocza w toku)
- Zmiana ustawień sekwencji wpływa tylko na przyszłe rekordy
- Istniejące identyfikatory pozostają niezmienione po aktualizacjach konfiguracji
- Liczniki sekwencji kontynuują od aktualnej maksymalnej wartości
Najlepsze praktyki
Projektowanie konfiguracji
- Wybierz opisowe prefiksy, które nie będą kolidować z innymi systemami
- Użyj odpowiedniego wypełnienia cyfr dla oczekiwanego wolumenu
- Ustaw rozsądne liczby początkowe, aby uniknąć konfliktów
- Przetestuj konfigurację z przykładowymi danymi przed wdrożeniem
Wytyczne dotyczące prefiksów
- Zachowaj prefiksy krótkie i łatwe do zapamiętania (2-5 znaków)
- Używaj wielkich liter dla spójności
- Dodaj separatory (myślniki, podkreślenia) dla czytelności
- Unikaj znaków specjalnych, które mogą powodować problemy w adresach URL lub systemach
Planowanie sekwencji
- Oszacuj swój wolumen rekordów, aby wybrać odpowiednie wypełnienie cyfr
- Rozważ przyszły wzrost przy ustawianiu liczb początkowych
- Zaplanuj różne zakresy sekwencji dla różnych typów rekordów
- Udokumentuj swoje schematy identyfikatorów dla odniesienia zespołu
Typowe przypadki użycia
-
Systemy wsparcia
- Numery biletów:
TICK-001
,TICK-002
- Identyfikatory spraw:
CASE-2024-001
- Wnioski wsparcia:
SUP-001
- Numery biletów:
-
Zarządzanie projektami
- Identyfikatory zadań:
TASK-001
,TASK-002
- Elementy sprintu:
SPRINT-001
- Numery dostaw:
DEL-001
- Identyfikatory zadań:
-
Operacje biznesowe
- Numery zamówień:
ORD-2024-001
- Identyfikatory faktur:
INV-001
- Zamówienia zakupu:
PO-001
- Numery zamówień:
-
Zarządzanie jakością
- Raporty błędów:
BUG-001
- Identyfikatory przypadków testowych:
TEST-001
- Numery przeglądów:
REV-001
- Raporty błędów:
Funkcje integracji
Z automatyzacjami
- Wyzwalaj akcje, gdy przypisywane są unikalne identyfikatory
- Użyj wzorców identyfikatorów w regułach automatyzacji
- Odwołuj się do identyfikatorów w szablonach e-mail i powiadomieniach
Z wyszukiwaniami
- Odwołuj się do unikalnych identyfikatorów z innych rekordów
- Znajdź rekordy według unikalnego identyfikatora
- Wyświetl identyfikatory powiązanych rekordów
Z raportowaniem
- Grupuj i filtruj według wzorców identyfikatorów
- Śledź trendy przypisywania identyfikatorów
- Monitoruj wykorzystanie sekwencji i luki
Ograniczenia
- Tylko sekwencyjnie: Identyfikatory są przypisywane w kolejności chronologicznej
- Brak luk: Usunięte rekordy pozostawiają luki w sekwencjach
- Brak ponownego użycia: Numery sekwencji nigdy nie są ponownie używane
- Zakres projektu: Nie można dzielić sekwencji między projektami
- Ograniczenia formatu: Ograniczone opcje formatowania
- Brak aktualizacji zbiorczych: Nie można zbiorczo aktualizować istniejących identyfikatorów sekwencji
- Brak niestandardowej logiki: Nie można wdrażać niestandardowych reguł generowania identyfikatorów
Powiązane zasoby
- Pola tekstowe - Do ręcznych identyfikatorów tekstowych
- Pola numeryczne - Do sekwencji numerycznych
- Przegląd pól niestandardowych - Ogólne pojęcia
- Automatyzacje - Do reguł automatyzacji opartych na identyfikatorach