Блог

Baby Monitor Timmy колдонмосун GitHub Copilot менен кантип түзөм

AI мага ылдамыраак иштөөгө жардам берет. Бирок Timmy үчүн жоопкерчилик дагы эле өзүмдө.

Baby Monitor Timmy жөнөкөй идеядан башталган: үйдө купуялуулукту сыйлаган ымыркай монитору. Булутка эч нерсе жазылбайт жана баланын бөлмөсүндөгү маалыматтар сыртка керексиз жөнөтүлбөйт. Көптөр биле бербеген жагы: Timmy'ди Цюрихте жалгыз өзүм түзөм, ал эми GitHub Copilot мага кошулуп иштеген абдан ыкчам программист.

Адам менен AI бирге иштеген процесс

Милдеттер так бөлүнгөн: функцияларды мен аныктайм, артыкчылыктарды белгилейм жана архитектуралык чечимдерди кабыл алам. Copilot аларды ишке ашырууга жардам берет: код жазат, тесттерди кошот, мүчүлүштүктөрдүн себептерин аныктоого көмөктөшөт жана релиз кадамдарын даярдайт.

Менин кадимки спринтим болжол менен мындай өтөт:

  1. Функциянын сүрөттөлүшү: Функция эмне кылышы керек экенин, анын ичинде өзгөчө учурларды жана чектөөлөрдү сүрөттөйм.
  2. Ишке ашыруу: Copilot кодду сунуштайт жана долбоордогу калыптанган эрежелерди карманат.
  3. Тестирлөө: Автоматташтырылган башынан аягына чейинки тесттер эки эмулятордо иштеп, бала тараптагы түзмөк менен ата-эне тараптагы түзмөктүн чыныгы байланышын текшерет.
  4. Релизге чыгаруу: Тесттер ийгиликтүү өтсө, Android жана iOS версиялары тиешелүү колдонмолор дүкөнүнө жана тестирлөө каналдарына чыгарууга даярдалат.

Бул цикл функциялар жана мүчүлүштүктөрдү оңдоо үчүн кайталанат. Ар бир сапты өзүм жазбайм, бирок эмне куруларын, эмне үчүн куруларын жана сунуш Timmy'ге туура келерин мен чечем.

Концепциядан WebRTC'ге чейин

Негизги техникалык милдет башынан эле так болчу: эки телефондун ортосунда аудио менен видеону реалдуу убакытта өткөрүү. WebRTC айкын тандоо эле, бирок аны Flutter менен интеграциялоо оңой эмес: ICE талапкерлери, SDP макулдашуусу, TURN резервдик байланышы жана DataChannel каналдары туура тартипте чогуу иштеши керек.

Copilot бул бөлүктөрдү кадам-кадам менен бириктирүүгө жардам берди: peer connection'ду орнотуу, маанилүү тартипти сактоо (offer'ден мурун DataChannel, setRemoteDescription'ден мурун onTrack), жана сигналдаштырууну Firebase Firestore'го жайгаштыруу. Кийинки кадамга өтөрдөн мурун ар бир бөлүк эки эмулятордо иштеши керек болчу.

ECDH менен коопсуз жупташтыруу

Эң маанилүү функциялардын бири коопсуз жупташтыруу системасы. Эки түзмөк өздүгүн ырастоо үчүн борбордук серверге таянбастан, бири-бирине ишеним түзүшү керек. Чечим — Firebase аркылуу ECDH P-256 ачкыч алмашуусун ортодогу адам чабуулун аныктоочу визуалдык текшерүү номери (SAS) менен айкалыштыруу.

Copilot криптографиялык чынжырды ишке ашырууга жардам берди: ачкычтарды түзүү, ачык ачкычтарды алмашуу, орток сырды алуу, SAS эсептөө жана мындан кийинки бардык сигналдаштыруу маалыматтарын AES-256-GCM менен шифрлөө. Жупташтыруу ачкычын серверге жөнөтпөйм; анын SHA-256 хэши гана Firestore документинин идентификатору катары колдонулат.

Коопсуздук аудити: алсыздыктарды табуу жана оңдоо

AI жардамындагы иштеп чыгуу мен үчүн жөн гана ылдамыраак терүү эмес. Ал мүчүлүштүктөрдү системалуу издөөгө да жардам берет. Коопсуздукка багытталган аудит спринтинде Copilot код базасын талдап, оңдошум керек болгон алты көйгөйдү тапты:

Алты көйгөйдүн баары ошол эле спринтте оңдолду. Copilot ушул жерде күчтүү: көп файлды окуйт, үлгүлөрдү салыштырат жана мен жакшылап карашым керек болгон жерлерди белгилейт.

Итерациялык спринттер: колдонмо кантип өнүктү

Timmy ыкчам, бирок так чектелген спринттер аркылуу өстү. Айрым маанилүү этаптар:

Ар бир спринт бир эле негизги тартипте өтөт: максатты сүрөттөө, сунуштарды карап чыгуу, автоматтык түрдө тестирлөө, андан соң сыноочуларга чыгаруу.

Түзмөктөр арасындагы E2E тестирлөө

Ымыркай мониторун бир эле түзмөктө туура тестирлөө мүмкүн эмес. Мага бала тараптагы бир түзмөк жана ата-эне тараптагы бир түзмөк керек. Долбоор бир убакта иштеген эки Android эмулятору менен башталган. Эми бул цикл жергиликтүү iOS симуляторундагы жана чыныгы түзмөктөрдөгү текшерүүлөр менен толукталат. Автоматташтырылган Android тест скрипти дагы эле төмөнкүлөрдү аткарат:

  1. Колдонмону эки эмуляторго тең орнотот
  2. Эки түзмөктө тең жупташтыруу кадамдарынан өтөт
  3. Аудио жана видео байланыштары түзүлгөнүн текшерет
  4. Басып сүйлөө, камераны башкаруу жана башка функцияларды тестирлейт

Эки эмулятор тең бир IP даректи бөлүшкөндүктөн (10.0.2.15), STUN аркылуу түзмөктөн түзмөккө түз байланыш түзүү мүмкүн эмес. Ар бир тест Cloudflare TURN релеси аркылуу өтүшү керек. Бул ыңгайсыз, бирок пайдалуу: эң татаал туташуу жолу ар бир тестте текшерилет.

Үйрөнгөндөрүм

AI жуп программисти менен толук кандуу колдонмо куруу мага бир нече нерсени үйрөттү:

Алдыга карай

Baby Monitor Timmy өнүгүүсүн улантууда. iOS релизи жакындап калды; андан кийин сенсорлорго байланыштуу кошумча функциялар кошулуп, коопсуздук мындан ары да бекемделет. Иш процесси мурдагыдай калат: багытты жана чектерди мен аныктайм, Copilot болсо аларды ыкчам ишке ашырууга жана текшерүүгө жардам берет.

Коопсуздукка тиешелүү негизги компоненттер эми так аныкталган чектердин ичинде жалпыга ачык baby-monitor-timmy-core репозиторийиндежайгашкан. Ал жерде жупташтыруу, сигналдаштыруу жана сервердик интерфейстер боюнча архитектуралык чечимдер да документтештирилген.


Дагы макалалар