Calendar și programare
Control Center se conectează la Google Calendar, astfel încât ziua ta stă alături de flota ta. Îți sincronizează evenimentele, le afișează în vizualizările de lună, săptămână, zi și agendă, te avertizează înainte să înceapă o întâlnire și transformă orice eveniment într-o întâlnire înregistrată și rezumată.
Ce schimbă în Google
Secțiune intitulată „Ce schimbă în Google”Aproape nimic. Integrarea preia evenimentele și le afișează. Nu creează, nu
editează, nu șterge și nu răspunde la invitații. Fiecare conectare prin cod de
dispozitiv, integrată sau cu acreditările tale, solicită calendar.readonly
plus openid email.
Evenimentele sunt sincronizate în baza de date proprie a spațiului de lucru
pe server (<dataDir>/<workspaceId>/workspace.db) și sunt afișate de fiecare
client prin RPC. Niciun client nu deține o acreditare Google.
Conturi pe spațiu de lucru
Secțiune intitulată „Conturi pe spațiu de lucru”Conturile de calendar aparțin spațiului de lucru, ca tot restul din Control Center. Fiecare spațiu de lucru își conectează propriul cont Google (sau mai multe), iar evenimentele și tokenurile unui spațiu de lucru nu sunt niciodată vizibile din altul. Schimbarea spațiului de lucru schimbă și calendarele pe care le vezi.
Un spațiu de lucru poate conecta mai multe conturi Google, de exemplu un cont de serviciu și unul personal, iar evenimentele lor sunt comasate în aceleași vizualizări.
De ce autentificarea este un cod de dispozitiv
Secțiune intitulată „De ce autentificarea este un cod de dispozitiv”cc_server rulează fără interfață grafică și nu are un browser care să
intercepteze o redirecționare OAuth. Așa că nu folosește una: autorizează cu
autorizarea prin cod de dispozitiv (RFC 8628). Serverul afișează un cod de
utilizator scurt și un URL Google, tu aprobi de pe orice dispozitiv care are un
browser, iar serverul așteaptă până aprobi. O instalare fără interfață grafică
poate conecta un cont exact pentru că nu există niciun punct final de
redirecționare de găzduit.
Consecința pe care trebuie să o știi înainte să-ți aduci propriile acreditări:
tipul de client trebuie să fie “TV and Limited Input devices” al Google. Google
acordă acelui tip de client doar un set de domenii aflate pe o listă de
permisiuni, iar un proiect în care Calendar nu este permis pentru el eșuează cu
invalid_scope — ai avea nevoie în schimb de un client loopback sau web.
Tokenurile nu părăsesc niciodată serverul. Sunt scrise în secrets.json al
serverului, în directorul lui de date, cu cheile
google_google:<workspaceId>:<email>, alături de bazele de date și sub aceeași
graniță de încredere a sistemului de fișiere al gazdei. Serverul reîmprospătează
accesul automat și, când Google invalidează definitiv un cont (o sesiune
revocată sau expirată de mult timp), publică CalendarAuthExpired și afișează un
banner Reconectează în loc să eșueze în tăcere.
O construcție din surse nu include nicio acreditare Google — îți aduci
propriul client id și propriul secret. Construcțiile oficiale de lansare includ
un client de cod de dispozitiv neconfidențial, astfel încât fluxul de conectare
funcționează imediat; serverul stochează doar un marcaj care îl referă, niciodată
o copie. GOOGLE_OAUTH_CLIENT_ID (și secretul lui) din mediu are întotdeauna
prioritate față de perechea inclusă. Nu există în mod deliberat un flag
--google-client-id: flag-urile necunoscute sunt ignorate, iar un secret de pe
linia de comandă poate fi citit prin ps.
Pentru a rula propriul proiect Google, vezi Conectează un Google Calendar.
Sincronizare
Secțiune intitulată „Sincronizare”Serverul preia o fereastră glisantă cu evenimentele fiecărui cont conectat — toate calendarele contului, nu doar cel principal — la fiecare două minute, plus la cerere (pornire, conectare, reîmprospătare manuală). Cadența scurtă este accesibilă pentru că parcurgerea este incrementală: fiecare calendar are propriul token de sincronizare, așa că un calendar neschimbat costă un singur răspuns aproape gol, în loc să reia o fereastră de cinci luni.
Evenimentele recurente sunt extinse pe server, astfel încât niciun client nu analizează vreodată o regulă de recurență. Navigarea la o lună din afara ferestrei curente încarcă acea zonă leneș. Evenimentele șterse sau mutate în afara intervalului sunt reconciliate la următoarea sincronizare.
Vizualizări
Secțiune intitulată „Vizualizări”| Vizualizare | Ce arată |
|---|---|
| Lună | O grilă completă de lună (bazată pe pachetul kalender) |
| Săptămână | Evenimentele cronometrate ale unei săptămâni, într-o grilă de timp |
| Zi | Evenimentele cronometrate ale unei singure zile, într-o grilă de timp |
| Agendă | O listă derulabilă cu evenimentele viitoare |
Deschide calendarul la /calendar; selectarea unui eveniment îi deschide
detaliile la /calendar/:eventId. Vizualizarea pe care o alegi este stocată în
preferințele proprii ale clientului respectiv, așa că nu te urmărește pe alt
dispozitiv.
Alerte de întâlnire
Secțiune intitulată „Alerte de întâlnire”Un planificator care rulează în fiecare minut caută evenimente ce încep în
intervalul de preaviz configurabil și declanșează o notificare
„Întâlnirea începe curând” (un
eveniment de domeniu
MeetingStartingSoon). Notificarea include URL-ul de conectare când există unul,
iar clic pe ea deschide detaliile evenimentului. Alertele sunt deduplicate pe
baza lui alertedAt al evenimentului, astfel încât aceeași întâlnire nu
alertează niciodată de două ori, nici măcar după reporniri, iar un eveniment a
cărui oră de începere a trecut cât aplicația era închisă nu se reia niciodată.
Două limite sunt ușor de încălcat. Planificatorul rulează pe client, pe desktop, și doar pentru spațiul de lucru pe care îl ai deschis — un spațiu de lucru în care nu ești nu declanșează nicio alertă. Iar construcția web nu are deloc o conductă de notificări ale sistemului de operare, așa că nu declanșează niciuna.
Înregistrează și leagă
Secțiune intitulată „Înregistrează și leagă”Dintr-un eveniment de calendar poți porni o înregistrare de întâlnire care preia titlul evenimentului. Control Center stochează o legătură unu-la-unu între înregistrare și eveniment, astfel încât notele întâlnirii și intrarea din calendar rămân conectate fără ca vreuna dintre funcții să depindă de cealaltă.
Pornește înregistrarea și leagă este doar pentru desktop. În clientul web, acțiunea raportează că înregistrarea nu este disponibilă — chiar dacă fluxul propriu de înregistrare al ecranului de întâlniri funcționează în browser.
- Întâlniri și transcriere: ce se întâmplă după ce pornești o înregistrare
- Spații de lucru și izolare: de ce conturile de calendar sunt pe spațiu de lucru
- Evenimente de domeniu:
MeetingStartingSoonșiCalendarAuthExpired - Conectează un Google Calendar
- Înregistrează și rezumă o întâlnire