Заметки
IO v7. Что осталось важного сделать
- перенос недостающих функций из IO6.
- внедрение Capsule из laravel/symfony для удобства конструирования SQL запросов (
$capsuledb). - изменение сервиса авторизации на использование JWT без cookie, что позволит создавать открытое API.
- добавление поддержки словарей фраз.
- добавление поддержки
$ioEnum. - добавление поддержки
$ioLangs. - добавление поддержки
$purifier. - перенос недостающих констант из IO6.
- проверить поддержку параметров
~и!~в функцииgetWhereFromFilter()классаIO_MYSQL_PDO.
IO v7. Остаются вопросы
- где dbsearch2 у классов? она заменена на search.
- почему Unit класс находится в модуле io7 а не в trade?
- проверить работоспособность вызова классов и моделей через общалку. как локальных так и удаленных. попробовать не переопределять некоторые функции, чтобы проверить имеются ли они по умолчанию в классе наследования или нет, и нужно ли вообще их объявлять.
- попробовать воспользоваться
IOCore::Instance()и->delete(),->update(), ...
Что нужно дописать в документации
- io6
- Функции фреймворка
- описать каждую функцию
- dbSearchAll
- описать как получать массив объектов вместо массива массивов
- Class
- описать прочие функции класса
- написать примеры
- описать какие функции только для монго
- Model
- подробнее описать класс наследования и доступные функции
- Controller
- описать как управлять выводом кнопок в
app.view.cabinet.mainчерезrun_pre()
- описать как управлять выводом кнопок в
- Twig функции
- описать каждую функцию
- Twig фильтры
- описать каждый фильтр
- JS плагины
- описать популярные библиотеки
- описать какие библиотеки используются по умолчанию
- в кабинете
- во внешней части
- в мобилке
- Обращение к Model через JS
- преобразовать картинки в текст
- Разворачивание нового проекта
- описать подробнее
- $ioSession->user
- узнать как используется и описать
delegate - узнать как используется и описать
init() - узнать как используется и описать
delegate() - узнать как используется и описать
mylogin()
- узнать как используется и описать
- IOCore класс
- узнать как используется и описать
runController()
- узнать как используется и описать
- Функции фреймворка
- io7
- Функции фреймворка
- описать каждую функцию
- Route
- описать все доступные функции (например
show_error(),show_success(), ...) - привести содержимое страницы в порядок как в io6
- описать все доступные функции (например
- Class
- подробнее описать классы наследования и доступные функции
MySQL_Class
- описать функционал операций с классом
- описать все доступные функции
- привести содержимое страницы в порядок как в io6
- подробнее описать классы наследования и доступные функции
- Api
- подробнее описать классы наследования и доступные функции
- привести содержимое страницы в порядок как в io6
- Twig функции
- описать каждую функцию
- Обращение к Api через JS
- перенести описание страницы из io6
- Разворачивание нового проекта
- описать подробнее
- методы frontend разработки
- как создавать модели/компоненты/шаблоны по правилам
- описать виды проекта (под микрофронт, без него)
- создать страницу для процессов по разработке фронта на vue3
- удалены некоторые глобальные переменные!!!
- добавлены новые типы проектов (чистый проект, проект с поддержкой микрофронтенда). у них отличается структура папок и файлов!
- Функции фреймворка
Прочие заметки от lexinzector
касаемо хоста:
- нужно где-то хранить список доступных сервисов (appModel.mfservices)
- нужно как-то управлять доменами dev и prod и самим списком сервисов, т.к. на проде может быть меньше запущенных сервисов
- нужно как-то получать список купленных и некупленных сервисов пользователя, для отображения в MainPanel и в модалке списка сервисов и в модалке поиска
- нужно как-то переключать компанию (при выборе компании, по прямой ссылке)
- нужно как-то запрашивать компанию, если нет возможности в ссылке ее указать (к примеру ссылка на кабинет какого-то сервиса, а после перехода запрашивать компанию, как сделано в io6)
- разработать разделы /cabinet, /admin, /settings
- выделить /messages в микрофронтенд сервиса уведомлений
- выделить /help в микрофронтенд сервиса базы знаний
касаемо микрофронтов:
- определить как будут писаться функции
- модернизировать ioCallEntity и ioCallEntitySubmit так, чтобы они обрабатывали ошибки нормально, и не было проблем с сессией и cors
касаемо фреймворка io7:
- добавить в модели базовые функции похожие на map reduce (подробнее в проекте трейда в модели инвойсов)
- понять, что лучше использовать, api через роуты или через entity к моделям?
- везде убрать define переменные а оставить только getenv()
- везде применить Constant переменные EIO:... вместо EIO_...
iocli должен уметь эту команду и вывод должен быть соответственным:
php artisan migrate:fresh --seed
Dropping all tables .................................................................................................. 381.22ms DONE
INFO Preparing database.
Creating migration table .............................................................................................. 43.29ms DONE
INFO Running migrations.
0001_01_01_000000_create_users_table ................................................................................. 125.26ms DONE
0001_01_01_000001_create_cache_table .................................................................................. 97.60ms DONE
0001_01_01_000002_create_jobs_table .................................................................................. 138.36ms DONE
2024_01_01_000003_create_personal_access_tokens_table ................................................................. 80.22ms DONE
2024_01_01_000004_create_parent_student_table ........................................................................ 206.12ms DONE
2024_01_01_000005_create_courses_table ................................................................................ 93.12ms DONE
2024_01_01_000006_create_course_enrollments_table .................................................................... 343.00ms DONE
2024_01_01_000007_create_topics_table ................................................................................. 97.92ms DONE
2024_01_01_000008_create_assignments_table ........................................................................... 143.47ms DONE
2024_01_01_000009_create_submissions_table ........................................................................... 163.26ms DONE
2024_01_01_000010_create_rubrics_table ............................................................................... 183.24ms FAIL
Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 1824 Failed to open the referenced table 'rubric_criterias' (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: study, SQL: alter table `rubric_levels` add constraint `rubric_levels_rubric_criteria_id_foreign` foreign key (`rubric_criteria_id`) references `rubric_criterias` (`id`) on delete cascade)
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:857
853▕ $exceptionType = ($isUniqueConstraintError = $this->isUniqueConstraintError($e))
854▕ ? UniqueConstraintViolationException::class
855▕ : QueryException::class;
856▕
➜ 857▕ $exception = new $exceptionType(
858▕ $this->getNameWithReadWriteType(),
859▕ $query,
860▕ $this->prepareBindings($bindings),
861▕ $e,
+9 vendor frames
10 database/migrations/2024_01_01_000010_create_rubrics_table.php:32
Illuminate\Support\Facades\Facade::__callStatic()
+37 vendor frames
48 artisan:16
Illuminate\Foundation\Application::handleCommand()
нужно создать composer библиотеку bmc/io-installer (как laravel/installer). но для этого нужен composer репозиторий на сервере компании....
- повторяющиеся участки документации нужно удалить. в местах где пересекаются инструкции нужно создавать ссылки на документы с отдельными инструкциями вместо дублирования текста.
- очереди queue на данный момент работают через бд и iocli queue:work. нужно будет посадить ее в том числе на redis.
- schedule нужно перевести на работу как в laravel (из базы в Module.php). и разработать фасад Schedule, который умеет работать как в laravel и может запускать задачи каждую секунду и т.п.
- есть несколько проектов, которые читают одну базу. чтобы не повредить базу, нужно в app/Module.php сделать возможность отключать миграции для каждого модуля (настраиваемо), а также в .env добавить флаг MIGRATE_ENABLE для всего проекта. в iocli также внести изменения.
в laravel 13 cron скрипты это команды либо замыкания (блоки кода), которые запускаются через фасад Schedule. они описываются в routes/console.php, либо в bootstrap/app.php через withSchedule. на сервере запускаются кроном раз в минуту. однако Schedule умеет за положенную ей минуту выполнять скрипты, которые должны выполняться например каждую секунду и т.п. в laravel 13 jobs это задачи, которые нужно выполнить в фоне (генерация отчетов или что-то сложное и долгое). они формируются при срабатывании какого то события (пользователь что-то сделал). в laravel 13 queue это очередь для jobs, которая выполняется немедленно, в момент попадания в очередь какой-либо задачи. используется либо бд либо redis. в laravel 13 bin скриптов нет, но вместо них используются либо миграции (одноразовые), либо команды (с заглушкой от повторного запуска), либо патчи (laravel-patches, которые работают как миграции, но отдельно от них)
в io7 помимо .twig файлов нужно добавить поддержку .blade.php файлов
в io6 при открытии несуществующей страницы открывается страница "файл не найден" и без глобального меню. исправить
в мобильном приложении сессия должна быть вечной как в приложении vk, а авторизация не должна делать редирект на sso. форма должна быть в мобильном приложении, т.к. там авторизация по отпечатку и пинкоду с вводом логина пароля... но непонятно что делать там с авторизацией через соцсети...
в io7 добавить класс работы с s3 хранилищами (minio)
в io7 добавить поддержку elasticsearch и solr
в io7proj подумать как io7/php/Init.php и io7/php/Const.php перенести в Module.php. и то же самое с app/Conf.php в Module.php
в io7 добавить поддержку Storage как в laravel 13
в io7 доделать функцию CrudApi.doGetReport, т.к. там нет дебага, нет выгрузки в файл, нет рекурсии для выгрузки большого количества записей
в io7 не все функции из io6 перенесены (functions.php, twig.php)
переписать документацию по io7 на манер доков laravel 13 https://laravel.su/docs/13.x
сделать в io7 функцию callApi для вызова api роутов проектов. 3 аргумента функции. 1 проект, 2 урл, 3 параметры функция как для бэка так и для фронта модели переименовать из Api в Model
по идее отличия минимальные:
- классы не проверяют полномочия но требуют запуск внутри проектов, поддерживается только в backend.
- модели доступны везде но там проверка полномочий.
- роуты доступны везде, покрыты middleware и проверкой полномочий.
отказаться от моделей в пользу роутов. в twig фронте бэке сделать ioCallRoute. в io6 добавить поддержку ioCallRoute для новых проектов. ioCallRoute(proj, request_type, url, params) вполне возможно что классы превратятся в модели как в ларавел а классы станут кастомными при особых случаях без привязки к таблицам бд
- проверить выполнение: так как есть поддержка oauth2, при запрашивании данных с проекта sso, нужно сделать страницу показа информации, какое устройство или токен запрашивает доступ, к каким данным, куда произойдет редирект, и с кнопками authorize/accept и cancel. также нужно создать нужные роуты и конструкции для возможности отдавать запрашиваемые данные. в документации нужно добавить статью о том, как это делать сторонним разработчикам в их сервисах.
- протестировать и роуты и модели в postman с использованием bearer token логин пароль, oauth iot токенов устройств и отдельных токенов