This commit is contained in:
Михаил Капелько
2026-04-24 10:28:10 +03:00
parent 7258c5bfae
commit a344ef773c
9 changed files with 435 additions and 79 deletions

View File

@@ -0,0 +1,64 @@
Google Doc URL: https://docs.google.com/document/d/1DfJsbyVZ98udo_hvU1DUagGYkTHabW0wMH5T5DvmCYI/edit?usp=sharing
WARNING: НЕ РЕДАКТИРОВАТЬ ТУТ, ЭТО ЧЕРНОВИК
Привет, коллеги,
на созвоне в четверг 16.04 команда Android представила команде КМП пример с авторизацией для обсуждения потенциального подхода КМП-2.
По итогу созвона у команды КМП возникли следующие вопросы к КМП-2:
===
Вопрос №1
===
Риск нарушения принципов Single source of truth (SSOT, Единственный источник истины) и Single Responsibility Principle (SRP, Единственная ответственность)
В КМП-1 следование SSOT и SRP достигается шудами/редьюсерами: один шуд отвечает за что-либо конкретное. Например, в реализации контактов на КМП-1 шуд/редьюсер contShouldResetContactsVisibility отвечает за видимость списка контактов на экране, поэтому всегда можно найти концы (кто меняет видимость и по каким условиям она меняется).
===
Вопрос №2
===
Риск конфликта разных механизмов диспетчеризации (многопоточности)
В КМП-2 предполагается использование Flow, Coroutines и подобных технологий, которые имеют свой жизненный цикл, отличающийся от жизненного цикла на платформах Apple.
В КМП-1 многопоточность находится вне общего кода КМП, т.е. находится в эффектах,
на стороне конкретной платформы, используя те инструменты, которые принято использовать
на конкретной платформе.
===
Вопрос №3
===
Риск падения производительности
Как следствие из предыдущего пункта, использование нестандартного для конкретной платформы
механизма диспетчеризации может приводить к гонке данных и трудновоспроизводимым просадкам производительности.
===
Вопрос №4
===
Заявленный отказ от нативной поддержки Desktop
КМП-2 предполагает отказ от нативных приложений Linux, macOS, Windows. Это приведёт
к потере компанией компетенций команды Desktop, собравшей огромное количество
граблей при поддержки трёх систем: Linux, macOS, Windows. Все эти компетенции и грабли
придётся собирать с нуля при использовании подхода аля Electron. На поиск и исправление
заново найденных граблей уйдёт огромное количество сил и времени.
КМП-1, со своей стороны, интегрируется (нативно, через Kotlin Native) в Desktop
ровно на тех же правах логики,
как это происходит с Android и iOS: оставляя диспетчеризацию (многопоточность),
работу с оборудованием, сетью и т.п. на усмотрение конкретной платформы. Таким образом,
КМП-1 сохраняет компетенции, иcключает просадку по платформе Desktop, исключает
повторный поиск и исправления уже собранных граблей.
Есть ещё несколько вопросов, которые будет уместно задать лишь при наличии
КМП-2 на руках, т.к. пока КМП-2 существует лишь на бумаге. КМП-1, со своей стороны,
в рамках контактов уже прошёл первичное проверку командой тестирования и готов к повторной.
С уважением,
Михаил.

View File

@@ -1,10 +1,182 @@
HOLD: https://jira.iva.ru/browse/VCSMOB-14365
HOLD: [KMP] Решить проблему лишних diff в obkom
https://jira.iva.ru/browse/VCSMOB-14530
[KMP] Подготовить авторизацию для Qt
22.04:
* исправить сборку sdk-ios
* ввести authProto.swift
* исправить auth.swift
* исправить AuthHosts.swift
* исправить AuthLogin.swift
* исправить AuthHosts.qml
* исправить AuthLogin.qml
* исправить auth.launch на auth.setup
* исправить VM.h/cpp
* пересоздать auth.h/cpp как копию HW
* подключить кнопки AuthHosts
* оформить УЗС-2
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/293
* перепроверить Android
* перепроверить iOS
* сообщить об УЗС-2
Сливаю УЗС-2 по авторизации на desktop: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/293
√ 823 (т: 423), main, >=2
* влить УЗС-2
21.04:
* изучить неверную генерацию для sdk mac
didClickChangeText ещё поля из HWContext подмешались в AuthContext
entityNames: 13
entityTypes: 12
ошибка?
после AuthContext почему-то был какой-то символ, а не должно было
итог: был лишний пробел в yml
* собрать sdk mac
* попросить Cursor сделать копию auth на Desktop на основе версии iOS
Have a look at how AuthHosts.swift, AuthLogin.swift and auth.swift organized.
They form a so-called component that is displayed at the start of application.
Do the same files for ver-mac using QML.
* проверить версию Cursor
какая-то проблема с кучей WS ping-pong
но интерфейс похож
* отобразить заготовку интерфейса auth в mac
и сделать заготовку авторизации с помощью Cursor
* исправить CMakeLists.txt
* скрыть HW на Desktop
20.04:
* создать auth/ на Android
* создать auth/ на iOS
* починить собираемость на mac
* оформить УЗС-1
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/289
* сообщить об УЗС-1
Сливаю УЗС-1 по авторизации на desktop: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/289
√ 388, main, >=2
* влить УЗС-1
* перевести auth на Proto
17.04:
* переключить на kd 3.1
* обновить ветку cppgen до последней версии main
* убрать копирование для mac
симлинков достаточно
копирование сильно ущербное
оставлю для Windows строго лишь как меньшее из зол
* собрать заготовку KOM на Windows
* убрать renameWindowsIncludes
* переместить бинарь и dll в mingw64/bin
* запустить на Windows
* записать демонстрацию запуска на Windows 10
* перепроверить запускаемость Android и iOS
* оформить ЗС
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/203
* сообщить о ЗС
Сливаю ЗС с заготовкой для Windows: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/203
√ 487, main, >=2, демо
* влить ЗС
таблица
демо
* убрать несколько констант AuthConst.kt
* убрать задание combined host из MainActivity
* выяснить необходимость AuthLoginScreen/Box
на Pixel5 6" тоже не увидел разницы
убрал
* выделить UI авторизации в отдельный файл authUI
* проверить запускаемость на iOS
* поправить F combined host на iOS
* выделить authUI на iOS
* переместить hw на mac
==
https://jira.iva.ru/browse/VCSMOB-14365
[KMP] Решить проблему лишних diff в obkom
16.04:
* ввести latest для v020
* оформить ЗС
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/36
* сообщить о ЗС
Сливаю ЗС об исправлении diff для obkom v020: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/36
√ 149, main, >=2
* влить ЗС
* ввести latest для v021
* оформить ЗС
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/37
* сообщить о ЗС
Сливаю ЗС об исправлении diff для obkom v021: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/37
√ 8, main, >=2
* влить ЗС
* ввести latest для v022
сделать это под запись
* подготовить видеоинструкцию
* README
написать инструкцию к видео
1. удостоверяемся в наличии copyLatest последним шагом в каждом v*/setup-*
2. прописываем новую версию комбинации в LATEST_VERSION
3. copyLatest срабатывает после запуска setup
4. комитим изменения в latest
* оформить ЗС
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/38
* сообщить о ЗС
Сливаю ЗС об исправлении diff для obkom v022: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/38
√ 152, main, >=2
* влить ЗС
* починить дифы мостового кода для obkom
* рассказать в чате KMP про то, как работает latest
рассказать лучше в запросе слияния
ещё раз с нуля
15.04:
* ввести latest для v010
* оформить ЗС-1
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/33
* сообщить о ЗС-1
Сливаю ЗС об исправлении diff для obkom v010: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/33
√ 207, main, >=2
* влить ЗС-1
* ввести latest для v011
* оформить ЗС-2
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/34
* сообщить о ЗС-2
Сливаю ЗС об исправлении diff для obkom v011: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/34
√ 500, main, >=2
* влить ЗС-2
* ввести latest для v015
* оформить ЗС-3
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/35
* сообщить о ЗС-3
Сливаю ЗС об исправлении diff для obkom v015: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/35
√ 309, main, >=2
* влить ЗС-3
===
https://jira.iva.ru/browse/VCSMOB-14386
[iOS One] Подготовить IvaMeet с изменениями Connect 24.0
11.04:
* изучить diff в one
лишь ориентацию теряем?
да
* убрать исправление ориентации из v042
* README: добавить v042 со ссылкой на ЗС
* оформить ЗС v042
упомянуть о причине удаления ориентации
возможно, её надо добавить в connect 24.1
https://git.hi-tech.org/mobile/apple/combo/-/merge_requests/62
* влить ЗС v042
* оформить IvaMeet ЗС на основе combo v042
https://git.hi-tech.org/iva/one/ios/messenger/-/merge_requests/1433
* сообщить о IvaMeet ЗС команде One
10.04:
* оформить ЗС v041

View File

@@ -1,38 +1,51 @@
11.04:
23.04:
* изучить diff в one
лишь ориентацию теряем?
да
* убрать исправление ориентации из v042
* README: добавить v042 со ссылкой на ЗС
* оформить ЗС v042
упомянуть о причине удаления ориентации
возможно, её надо добавить в connect 24.1
https://git.hi-tech.org/mobile/apple/combo/-/merge_requests/62
* влить ЗС v042
* оформить IvaMeet ЗС на основе combo v042
https://git.hi-tech.org/iva/one/ios/messenger/-/merge_requests/1433
* сообщить о IvaMeet ЗС команде One
* создать ветку authd3
* ввести ktString
* ввести KTStr
* восстановить локализацию
* восстановить кнопка отладки-вставки хоста
* изучить AuthComponent::loadNetwork
НАДО:
* ввести ручную обёртку NetRequest
* ввести аналог loadURL
* ввести ручную обёртку NetResponse
* ввести работу с сетью
так, чтобы было похоже на loadURL на Android/iOS
* оформить УЗС-3
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/304
* сообщить об УЗС-3
* влить УЗС-3
* сделать авторизацию для mac
* починить ios
* починить windows
* прокомментировать F.didClickMenuLogout
оно вообще отсутствует
в main_.swift ios вызов как раз есть
* КЗС
* !289
* !293
* !304
таблица
демо
* Cursor: попросить сделать подключаемый в AppView.qml файл mainUI.qml
* проверить на Windows 11
* починить дифы мостового кода для obkom
если мы команда КМП, то почему мы не можем выбрать архитектуру?
* подготовить демонстрацию преимущества подхода KOM
соревнования?
* использовать генератор для замены KT.h/cpp
* оформить ЗС
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/203
* влить ЗС
таблица
демо
* сделать копирование на Windows
* ввести SDK для Windows
* проверить на Windows
* сделать для Linux

View File

@@ -0,0 +1,9 @@
Почему нет смысла переходить с КМП-1 на КМП-2:
1. Если мы команда КМП, то почему мы не можем выбрать архитектуру?
2. Какой смысл сейчас что-то менять, если остальные команды точно так же станут в позу и не захотят использовать уже предложенный командой шаблон проектирования MVI? Мы будем опять переписывать?