1. Hujjatning maqsadi va administrator rollari
Hujjat mijozning saytida CShark dasturiy ta'minotini sozlaydigan va unga xizmat ko'rsatadigan mutaxassislar uchun mo'ljallangan.
Tizim bilan kundalik ish alohida hujjatda tasvirlangan "Foydalanuvchi qo'llanmasi", joylashtirish - hujjatda "Dasturiy ta'minot nusxasini o'rnatish bo'yicha ko'rsatmalar".
| Rol | Mas'uliyat sohasi |
|---|---|
| Tizim administratori | ob'ekt topologiyasi, qurilmalar, kameralar, displeylar, integratsiya, tizim parametrlari, yangilash |
| Avtoturargoh ma'muri | hodisalarni qayta ishlash qoidalari, zona rejimlari, operatorlar va ularning huquqlari |
| Mijoz tizimi muhandisi | infratuzilma, zaxira, monitoring, tarmoq |
Huquqlar namuna sifatida belgilanadi (12-bo'lim); yuqoridagi rollarga bo'linish tashkiliydir.
2. Dasturiy ta'minot tarkibi va komponentlarini joylashtirish
| Xizmat | Maqsad | Port |
|---|---|---|
core | dastur serveri: dastur mantig'i, REST API, WebSocket, voqea iste'molchilari | ichki |
gateway | qurilma shlyuzi: kamera hodisalarini qabul qilish va skorbordni boshqarish | 18010/tcp |
web | veb-interfeys va API-ga yagona kirish nuqtasi | 8088/tcp |
postgres | PostgreSQL 17 ma'lumotlar bazasi | ichki |
nats | NATS JetStream voqea avtobusi | ichki |
seaweedfs | ob'ekt ramkasini saqlash, S3 protokoli | 18333/tcp |
Kuzatish profili tekshirish to'plamiga kiritilgan; Grafana tomonidan nashr etilgan 13000/tcp, uning qolgan xizmatlari faqat Compose tarmog'ida mavjud.
Barcha xizmatlar ob'ektning yopiq tarmoq perimetri ichidagi konteynerlarda ishlaydi. Ish paytida tashqi xizmatlarga qo'ng'iroqlar amalga oshirilmaydi.
3. Xizmatlarni boshqarish
Ishchi katalog: /opt/cshark-stand.
# xizmatlar holati
sudo docker compose --env-file /opt/cshark-stand/.env \
-f /opt/cshark-stand/compose.yml --profile obs ps
# ishga tushirish
sudo docker compose --env-file /opt/cshark-stand/.env \
-f /opt/cshark-stand/compose.yml --profile obs up -d
# to‘xtatish
sudo docker compose --env-file /opt/cshark-stand/.env \
-f /opt/cshark-stand/compose.yml --profile obs stop
# alohida xizmatni qayta ishga tushirish
sudo docker compose --env-file /opt/cshark-stand/.env \
-f /opt/cshark-stand/compose.yml restart core
# xizmat jurnallari
sudo docker compose --env-file /opt/cshark-stand/.env \
-f /opt/cshark-stand/compose.yml logs -f core
4. Sozlamalar
Parametrlar muhit o'zgaruvchilari tomonidan o'rnatiladi (fayl .env xizmat tavsifi fayli yonida). Sozlamalarni o'zgartirgandan so'ng, xizmatni qayta ishga tushirish kerak.
| O'zgaruvchan | Maqsad | Standart qiymat |
|---|---|---|
CSHARK_DATABASE_URL | ma'lumotlar bazasi ulanish qatori | — |
CSHARK_NATS_URL | voqea avtobus manzili | nats://nats:4222 |
CSHARK_S3_ENDPOINT_URL | ob'ektni saqlash manzili | http://seaweedfs:8333 |
CSHARK_S3_PUBLIC_ENDPOINT_URL | mijozga havolalar yaratish uchun saqlash manzili | — |
CSHARK_S3_ACCESS_KEY, CSHARK_S3_SECRET_KEY | saqlashga kirish kalitlari | — |
CSHARK_S3_BUCKET | ob'ekt konteyneri | cshark-media |
CSHARK_AUTH_ENFORCE | majburiy autentifikatsiya | true |
CSHARK_AUTH_SECRET | sessiya tokenini imzolash siri | o'rnatish vaqtida o'rnatiladi |
CSHARK_CORS_ORIGINS | ruxsat etilgan veb-interfeys manbalari | — |
CSHARK_WEB_PORT | veb-interfeys nashriyot porti | 8088 |
CSHARK_OTEL_ENDPOINT | telemetriya kollektor manzili | belgilanmagan |
5. Ob'ektni dastlabki sozlash
Birinchi marta tizimga kirganingizda, Boshlang'ich sozlash ustasi mavjud. Ketma-ketlik:
- O'rnatilgan administrator hisobi uchun parolni o'zgartiring.
- Ob'ektni (to'xtash joyi), darajalarni, zonalarni, to'xtash joylarini yarating.
- Darajaning grafik fonini yuklang va diagrammaga ob'ektlarni joylashtiring.
- Kameralarni ro'yxatdan o'tkazing va ularni to'xtash joylariga bog'lang.
- Axborot taxtasi uchun shablon va qurilmalar yarating.
- Erish mumkin bo'lgan zonalar va kirish nuqtalarining grafigini o'rnating.
- Operator rollari va hisoblarini yarating.
- Hodisalarni qayta ishlash qoidalarini sozlang.
6. Topologiya va sxemani sozlash
Bo'lim "Ma'muriyat" → "Topologiya".
Ierarxiya: tashkilot → to'xtash joyi → daraja → zona → to'xtash joyi.
| Faoliyat: Faollik amalga oshiriladi. | Buyurtma |
|---|---|
| Darajani yaratish | nomi va seriya raqamini ko'rsating |
| Hudud yarating | ism, daraja ma'lumotnomasi, turini ko'rsating |
| Avtoturargohni yaratish | kodni (ob'ekt ichida yagona), zonani, turini ko'rsating |
| Darajali astar yuklanmoqda | daraja rejasining grafik faylini yuklab oling |
| Diagrammada joylashtirish | diagramma muharririda to'xtash joylari, zonalar va qurilmalarning koordinatalari va shaklini o'rnating |
Avtoturargoh kodlari foydalanuvchilarga ko'rsatiladi va saytdagi belgilarga mos kelishi kerak.
7. Video tahlil kameralarini sozlash
Bo'lim "Uskunalar".
- Voqealarni qurilma shlyuzi manziliga yuborish uchun kamerani sozlang (HTTP orqali sotuvchi protokoli). Manzil va port kamera sozlamalarida ko'rsatilgan.
- Tizimga kiradigan kamera aniqlanmagan qurilmalar ro'yxatida paydo bo'ladi.
- Kamerani ro'yxatdan o'tkazing: nom, tarmoq manzili, joylashuvni o'rnating.
- Kamerani u xizmat ko'rsatadigan to'xtash joylariga ulang.
- Voqealar kelishini tekshiring: vaziyat o'zgarganda bog'liq to'xtash joyining holati o'zgarishi kerak.
Ishlash monitoringi davriy mavjudlik signallari asosida avtomatik ravishda amalga oshiriladi. Qurilmaning holati "Uskunalar" bo'limida va sayt diagrammasida ko'rsatiladi. Davlat o'zgarishlari tarixi saqlanadi.
Boshqarishni qo'llab-quvvatlaydigan qurilmalar uchun buyruq kanali orqali buyruq uzatish mavjud.
8. Axborot taxtalarini o'rnatish
Bo'lim "Skorlar jadvali".
8.1. Shablonlar
Shablon ramkaning tartibini tavsiflaydi va mintaqalardan iborat:
| Mintaqa turi | Tarkib |
|---|---|
| Matn | kontekst qiymatini almashtirish bilan ixtiyoriy matn |
| Bepul o'rindiqlar hisoblagichi | zona yoki ob'ektdagi bo'sh o'rindiqlar soni |
| yo'nalish o'qi | zonaga harakat yo'nalishi |
| Rasm tasviri. | statik tasvir |
| QR kodi | havola tasvirga kodlangan |
| Daraja xaritasi | yuqori aniqlikdagi monitorlar uchun daraja diagrammasi |
| Zona jadvali | zona xulosasi |
| Ko'rsatkich | raqamli ko'rsatkich |
Shrift hajmi avtomatik ravishda mintaqaning o'lchamiga moslashtiriladi; Agar mintaqaning imkoniyatlari etarli bo'lmasa, shablonni saqlashda ogohlantirish beriladi.
8.2. Displey qurilmalari
- Qurilma yarating, sinfni tanlang: matnli LED paneli (EK07, TCP/RS-485 protokoli) yoki yuqori aniqlikdagi monitordagi veb-kiosk.
- Ulanish parametrlarini belgilang.
- Bog'lanish shabloni, zonasi va kirish nuqtasi.
- Yaratilgan ramkani oldindan ko'rish orqali natijani tekshiring.
Shaklning umumiy manzili veb-kiosk uchun yaratiladi /kiosk/display/<identifikator>?token=<token>; monitor bu sahifani kiosk rejimida ochadi. Token kontentga kirishni cheklaydi.
8.3. Kontent ustuvorliklari
Favqulodda → qo'lda almashtirish → jadval → xodimlar. Favqulodda vaziyat kontenti (yong'in yoki boshpana rejimi) har qanday boshqa kontentni almashtiradi va uni qo'lda almashtirib bo'lmaydi.
8.4. Matnlar manzili
Mavjud bo'lmaslik sabablari umumiy (haydovchiga ko'rsatiladi) va ma'muriy (faqat xodimlar uchun mavjud) bo'linadi. Ma'muriy matnlar umumiy kiosk javobida va WebSocket oqimida jismonan mavjud emas. Displeyning diagnostika holati quyidagi manzilda mavjud /api/displays/{id}/state faqat autentifikatsiya qilingan xodimlar uchun.
10. Obyekt rejimlari va zonalarini sozlash
Zona va ob'ekt holatlari: xodimlar, yong'in, boshpana, texnik xizmat ko'rsatish.
| Tartibni o'zgartirish usuli | Buyurtma |
|---|---|
| Qo'lda | "Ma'muriyat" bo'limi → "Zonalar" → rejimni tanlash |
| Avtomatik ravishda | qurilma shlyuzi orqali yong'in avtomatik tizimlarining signaliga ko'ra |
Rejimni o'zgartirish bir zumda o'zgaradi: zonada to'xtash joylari mavjudligi, ma'lumot taxtalarining tarkibi (favqulodda vaziyatlar tarkibi eng yuqori ustuvorlikni oladi), hodisalarni qayta ishlash qoidalari va bildirishnomalar tarkibi.
Buning sababini bartaraf etgandan so'ng, administrator qo'lda normal rejimga qaytadi.
11. Hodisalarni qayta ishlash qoidalarini o'rnatish
Bo'lim "Ma'muriyat" → "Qoidalar".
Qoida quyidagi sxema bo'yicha o'rnatiladi:
tetik (voqea turi) × mintaqa (ob'ekt, zona, joylar guruhi, aniq joy) × Shart sharti. (vaqt, holat, boshqa belgilar) → harakatlar
Mavjud harakatlar: operatorni xabardor qilish, hodisa yaratish, holatni o'zgartirish, qurilmaga buyruq yuborish.
Qoida xizmatlarni qayta ishga tushirmasdan kuchga kiradi. Qoidalarni qo'llash tartibi ularning ustuvorligi bilan belgilanadi.
Misollar: "harakati cheklangan odamlar uchun hududdagi belgilarni buzish → tanqidiy darajadagi hodisani yaratish"; "Kirish joyidagi mashinalar joyi ruxsatsiz 10 daqiqadan ko'proq vaqt davomida band bo'lgan → smena boshlig'ini xabardor qiling."
12. Foydalanuvchilar, rollar va huquqlarni boshqarish
Bo'lim "Ma'muriyat" → "Foydalanuvchilar" va "Rollar".
- Ruxsatlar "resurs: harakat" shaklining yagona maydoniga o'rnatiladi (masalan,
displays:manage,users:manage). - Rol - bu ruxsatlar to'plami. Foydalanuvchiga rol tayinlangan; Bundan tashqari, individual ruxsatnomalar berilishi mumkin.
- Huquqlar tufayli foydalanuvchiga kirish imkoni bo'lmagan interfeys bo'limlari navigatsiyada ko'rsatilmaydi.
- Foydalanuvchi harakatlari harakatlar jurnalida qayd etiladi.
Parol talablari: kamida 6 ta belgi. Parollar xesh shaklida saqlanadi (bcrypt algoritmi); ular aniq matnda saqlanmaydi yoki uzatilmaydi.
Seanslar imzolangan tokenlar orqali amalga oshiriladi; imzo siri parametr bilan belgilanadi CSHARK_AUTH_SECRET. Sirni o'zgartirish barcha faol seanslarni tugatadi.
13. Tashqi tizimlar bilan integratsiyani o'rnatish
Bo'lim "Ma'muriyat" → "Integratsiya".
| Imkoniyat | Tavsif |
|---|---|
| REST API | ob'ektlar ma'lumotnomalari, to'xtash joylari mavjudligi, tashqi kirishni boshqarish tizimining sessiyalari haqida ma'lumot olish; OpenAPI spetsifikatsiyasi quyidagi manzilda mavjud /openapi.json |
| Kirish kalitlari | ko'rinish doiralari va so'rov tezligi chegaralari bilan yaratilgan |
| Chiqish vebhuklari | hodisalarga tashqi tizimga obuna bo'lish; so'rovlar imzolanadi, agar xato bo'lsa, etkazib berish takrorlanadi |
Hamkorning avtomatlashtirilgan to'xtash tizimi (kirish guruhi) bilan o'zaro hamkorlik ushbu mexanizmlar orqali amalga oshiriladi.
14. Ma'lumotlarni saqlash va saqlash siyosati
| Ma'lumotlar | Saqlash joyi | Saqlash muddati: 1 yil. |
|---|---|---|
| Kataloglar, topologiya, foydalanuvchilar | ma’lumotlar bazasi ma’lumotlar bazasini yaratish. | cheksiz muddatga |
| Tashriflar, avtoturargoh voqealari, bandlik suratlari | ob'ekt va vaqt indekslari bilan muntazam PostgreSQL jadvallari | tasdiqlangan operatsion siyosat bilan belgilanadi |
| Voqea lavhalari | ob'ektni saqlash | moslashtirilgan, hodisani saqlash muddatiga mos keladi |
| Foydalanuvchi faoliyati jurnali | ma’lumotlar bazasi ma’lumotlar bazasini yaratish. | moslash mumkin |
Saqlash muddati tizim sozlamalari bo'limidagi siyosatlar bilan belgilanadi. Kadrlar faqat cheklangan vaqtli havolalar orqali mavjud; saqlash joylariga to'g'ridan-to'g'ri jamoat kirishi yopiq.
15. Zaxiralash va tiklash
15.1. Zaxira
tools/backup/backup.sh /path/to/backups
Ma'lumotlar bazasi dumpi va media manifest yaratiladi. Saqlash ob'ektlari sinxronizatsiya vositalari yordamida alohida nusxalanadi - buyruq skript tomonidan chiqariladi. Tavsiya etilgan chastota: ma'lumotlar bazasi - har kuni (xostdagi jadvalga muvofiq), media materiallari - haftalik. Nusxalarni saqlash chuqurligi tizimdagi ma'lumotlarni saqlash muddatidan kam emas.
15.2. Nusxani tekshirish
Ishlayotgan ma'lumotlar bazasiga xavf tug'dirmasdan vaqtinchalik ma'lumotlar bazasiga tiklash:
tools/backup/restore.sh backups/cshark-XXXX.dump cshark_restore_check
Skript yarashtirish uchun nazorat hisoblagichlarini (avtomobil bo'shliqlari, tashriflar, hodisalar, foydalanuvchilar) ko'rsatadi.
15.3. Qayta tiklash
Qayta tiklashdan oldin to'xtating core va gateway Fayl yaratish orqali /opt/cshark-stand/compose.yml, yetkazib berishdan standart tiklash skriptini bajaring va keyin bir xil xizmatlarni ishga tushiring. Zaxira nusxasiga buyruqlar va yo'l ish jurnalida qayd etiladi; qayta tiklash birinchi navbatda alohida stendda sinovdan o'tkaziladi.
Media materiallari manifest bilan tekshirish bilan ob'ekt konteyneriga sinxronlash orqali tiklanadi.
16. Monitoring va diagnostika
| Tekshirish | Buyruq yoki manzil |
|---|---|
| Ilova salomatligi | curl -fsS http://127.0.0.1:8088/api/health |
| Xizmat holati | sudo docker compose --env-file /opt/cshark-stand/.env -f /opt/cshark-stand/compose.yml --profile obs ps |
| Jurnallar | sudo docker compose --env-file /opt/cshark-stand/.env -f /opt/cshark-stand/compose.yml logs -f core |
Dastur OpenTelemetry standartiga muvofiq ko'rsatkichlar, jurnallar va izlarni yaratadi. Kuzatish profili yoqilganda, Grafana panellari mavjud.
Asosiy ko'rsatkichlar:
| Ko'rsatkich | Bu nimani anglatadi |
|---|---|
| nashr etilgan tadbirlar soni | uskunadan ma'lumotlarni olish |
| qayta ishlangan voqealar soni | dastur serveri iste'molchilarining ishlashi |
| qayta ishlanmagan xabarlar hajmi | o'sish server davom eta olmasligi yoki iste'molchi to'xtatilganligini anglatadi |
| ulangan WebSocket mijozlari soni | faol operator ish joylari |
Shaxsiy va maxfiy ma'lumotlar avtomatik ravishda jurnallardan chiqarib tashlanadi.
17. Dasturiy ta'minotni yangilash
Yangilanish mijoz administratori tomonidan boshlanadi. Ob'ektning perimetri tashqarisidan majburiy yangilash va masofadan boshqarish mexanizmlari mavjud emas.
Joriy versiya avtomatik masofadan yangilashni o'z ichiga olmaydi. Istiqbolli boshqariladigan mexanizmni amalga oshirishdan oldin, yangilanish alohida tartibga soluvchi etkazib berish sifatida amalga oshiriladi: imzolangan oflayn to'plamni qabul qiling, SHA-256 va xorijiy kalit imzosini tekshiring, zaxira nusxasini yarating va tekshiring, relizga oid ko'rsatmalarni va to'liq tutun sinovini bajaring. Amaliyot ma'mur tomonidan kelishilgan parvarishlash oynasida amalga oshiriladi.
Migratsiya kengayish-siqish tamoyiliga amal qiladi: buzilish sxemasi o'zgarishlari ularsiz ishlaydigan kod chiqarilgandan so'ng nashrda chiqariladi. Shuning uchun, kodning oldingi versiyasiga qaytish xavfsiz va sxemani orqaga qaytarishni talab qilmaydi.
Qaytish faqat ma'lumotlar sxemasining muvofiqligini baholagandan so'ng, avvalgi versiyaning oldindan saqlangan va sinovdan o'tgan to'plamida ruxsat etiladi. O'rnatilgan nusxada konteyner tegini o'zboshimchalik bilan o'zgartirish standart yangilanish emas.
18. Odatdagi nosozliklar va ularni hal qilish usullari
| Imzo | Mumkin sabab | Harakatlar |
|---|---|---|
| Avtoturargohlarning holati yangilanmagan | hodisani yetkazib berish buzilgan | kamera mavjudligini tekshirish; qurilma shlyuzi jurnallarini tekshirish; ishlov berilmagan xabarlar tezligini tekshiring - agar u oshsa, dastur serverini qayta ishga tushiring |
| Voqealar ramkalarsiz keladi | obyekt xotirasi mavjud emas | saqlash xizmatini tekshirish; hodisalar yo'qolmaydi, ramkalar faqat mavjud bo'lmagan davrda yo'qoladi |
| Tablo yangilanmayapti | displey qurilmasi mavjud emas | "Uskunalar" bo'limida ulanishni tekshiring; ramkani oldindan ko'rish - agar ramka hosil bo'lsa, muammo qurilma bilan aloqa kanalida |
| Veb-interfeys mavjud emas | Xizmat ishlamayapti yoki port band | konteynerlarning holatini tekshirish; port ziddiyati mavjud bo'lsa, o'rnating CSHARK_WEB_PORT va qayta ishga tushiring |
| Veb-interfeys davriy ravishda qayta ishga tushadi | yo'qolgan konteyner tarmog'i | kalit bilan xizmatni qayta yarating --force-recreate |
| Barcha foydalanuvchilar tizimga kirmagan | token imzolash sirini o'zgartirdi | tekshirish CSHARK_AUTH_SECRET; sirni o'zgartirgandan so'ng, qayta kirish talab qilinadi |
| Xotiraga freymlarni yuklashda xatolik vaqtga mos kelmasligini bildiradi | xost va konteyner soatining farqi | NTP orqali xost vaqtini sinxronlash |
| Ma'lumotlar bazasi hajmi o'sib bormoqda | saqlash siyosatlari sozlanmagan | tizim sozlamalarida hodisalar va kadrlar uchun saqlash muddatini o'rnating |
19. Fayllar va komponentlarning joylashuvi
| Komponent | Joylashuv |
|---|---|
| Xizmat tavsifi fayli | /opt/cshark-stand/compose.yml |
| Atrof-muhit sozlamalari | /opt/cshark-stand/.env |
| Asosiy tafsilotlar | /opt/cshark-stand/INITIAL-CREDENTIALS.txt |
| O'rnatish jurnali | /opt/cshark-stand/install.log |
| Ma'lumotlar bazasi ma'lumotlari | Docker hajmi pg_data |
| Ob'ektni saqlash ma'lumotlari | Docker hajmi seaweed_data |
| Voqealar avtobusi ma'lumotlari | Docker hajmi nats_data |
| Ilova serverining manba kodi (rasm ichida) | /app/apps/core/app/ |
| Qurilma shlyuzining manba matni (rasm ichida) | /app/apps/gateway/gateway/ |
| Ma'lumotlar bazasi sxemalarini ko'chirish | /app/apps/core/alembic/versions/ |
| Statik veb-interfeys fayllari | /usr/share/nginx/html/ veb-interfeys konteynerida |
| Dastur interfeysi spetsifikatsiyasi | http://<manzil>:8088/openapi.json |
| Interaktiv API hujjatlari | http://<manzil>:8088/docs |
Konteyner ichiga kirish:
sudo docker compose --env-file /opt/cshark-stand/.env \
-f /opt/cshark-stand/compose.yml exec core sh
docker run --rm cshark-core:<versiya> cat /etc/os-release # obrazning asosiy operatsion tizimi
20. Texnik yordam
| Kanal | Ma'nosi |
|---|---|
| Tashkilot tashkiloti | MChJ "KOMPETENTSIA" |
| Telefon: 900-180-00 | +7 495 532-61-18 |
| Ishlash rejimi | Dushanba-Juma, Moskva vaqti bilan 09:00-18:00 |
| Qo'llab-quvvatlash manzili | 115280, Moskva, st. Leninskaya Sloboda, 21, 1-bino |
Hujjatda so'rovlarni ko'rib chiqish tartibi, ustuvorliklar va javob berish muddatlari keltirilgan "Dasturiy ta'minotning hayot aylanishini ta'minlaydigan jarayonlar tavsifi".