Этап
Готова
Тип
Задача
Приоритет
Обычный
Трудоемкость
Обычная
Создана
Дата создания
2 года назад
Назначена
Обновлена
год и 9 месяцев назад

Из tndt-75:

  • Объект статистики проекта(общей) с значениями: кол-во задач, количество готовых.
  • Хэндлер высчитывающий этот объект.
  • Виджет отображающий значения на сниппете проекта станице общей статистики.
  • Кеш статистки
  • Слушатели, сбрасывающие определенные элементы статистики.

Страница о системе, реально нам не нужна, она в sidebar просто для красоты и количества. Вместо неё туда можно добавить страницу состояния системы, на которой будут основные показатели:

  • версия
  • нужно ли обновляться отложили до появления сайта проекта
  • uptime
  • время с создания первого проекта
  • количество проектов
  • количество задач (и процент закрытых)
  • количество документов (и процент устаревших и архивных)
  • количество комментариев
  • количество активностей

Вероятно не все эти показатели стоит выводить в этой же задачи, часть из них можно оставить на потом. Главное, что эта страница больше не потребует для удовлетворения интереса лезть напрямую в продовую БД.

Вторая важная деталь это страницы, что на неё можно перенести кнопки управления системой, например для рута ссылку на управление пользователями (в sidebar всегда будет просто список пользователей)

Панель управления

Комментарии могут оставлять только авторизованные пользователи
 demius год и 9 месяцев назад

Все, думаю данный этап готов. Остальное после появления редиса

 demius год и 9 месяцев назад

Ну, вот вроде бы все что думали на этом этапе - сделанно

 demius год и 9 месяцев назад

Итак я поднял продовый image локально, и он ругается той же самой ошибкой, хотя во debug:container показывает ,что в адаптер приходит правильный конфиг, этот конфиг не срабатывает, когда адаптер оказывается внутри пула. Может оставить ка кбыло до введения редиса?

 demius год и 9 месяцев назад

Влили в неё tndt-40, в целом здесь все готово как только решим проблемы с кешами на тесте и проде

 demius год и 9 месяцев назад

после того, как мы поправили описание кешей, у нас перестал работать наш хитрый сверхбыстрый адаптер для полномочий.

 demius год и 9 месяцев назад

Это все решаемо, но надо модернизировтаь евенты, куча работы, которая сейчас малоактуальна.

 demius год и 9 месяцев назад

Да, базово в DocEvent/TaskEvent нет указания с кого на какое состояние переходит, поэтому пересчитать цифры на лету не выйдет. Например документ стал архивным, это обычный документ убрали в архив или устаревший решили не обновлять?

 demius год и 9 месяцев назад

Но вобще у нас и так МР конский, можно отложить

 demius год и 9 месяцев назад

Вобще говоря это проекты меняют количество раз в полгода, а задачи/докуенты по идее несколько раз в день. У нас сейчас от нескольких раз в месяц до нескольких в день. Т.е. их хорошо бы пересчитывать на лету.

 demius год и 9 месяцев назад

В целом теперь ttl можно ставить, если не в бесконечность, но бизко к тому.

 demius год и 9 месяцев назад

Ну вот, сделали подписчика, активность и количество комментариев он пересчитывает, а задачи, документы и проекты удаляет из статистики для пересчета

 demius год и 9 месяцев назад

первые два варианта требуют кеш с тегами, и в целом они есть и в редис и в файл кеше, так что мы можем их реализовать уже сейчас.

 demius год и 9 месяцев назад

В целом либо мы сейчас

  • делаем сабскрайбер пересчитывающй статистику,
  • делаем сабскрайбер просто сбрасыающий кеш
  • откладываем это до внедрения редиса, и ставим маленькие ттл.
 demius год и 9 месяцев назад

Сделали базовое кеширование, надо определиться с его ttl. По сценариям использования чаще всего кеш может жить днями пока мы что-нибудь не поменяем и не захотим посмотреть как действие повлияло на работу. Т.е. по хорошему надо бы делать кеши с длинным ттл, но сбросом по действию (или даже пересчету при действии)

 demius год и 10 месяцев назад

А уж CommonStat вобще объект конкретной страницы, и потому ViewModel. Как и его сборка обязаность контроллера, а не сервиса.

 demius год и 10 месяцев назад

Думается процессоры должны хранить голые цифры. А отображение будет само решать, проценты из этого делать, прогресс. pie или что еще. Наверное и выходные бизнес-объекты надо делать более абтрактными

 demius год и 10 месяцев назад

И так, все показометры, которые мы не очень сложно можем посчитать, и за которыми обычно лезем, мы вывели. Очеталась оптимизация всего этого. Какие значения храним, когда превращаем в проценты

 demius год и 10 месяцев назад

Кажется, что id в объекте рассчитанной статистики не нужен. Да и в целом надо подумать над ними, ведь их мы будем сериализовать

 demius год и 10 месяцев назад

Кстати с uptime, в итоге реализовали вариант с выводом stat /proc/1 он вроде бы работает корректно

 demius год и 10 месяцев назад

Кстати, когда мы обдумывали систему статистики ранее, мы полагали, что каждое число будет атомарным, и расчетчки не будут знать, что кто-то из них строит диаграммы. А тепрь привязываемся к месту получения. Впрочем так есть шанс немного сократить расчеты. Если нам понадобится статистика отдельно, будем думать над разбиением пожалуй

 demius год и 10 месяцев назад

Вариант на изучение: stat /proc/1/cmdline https://serverfault.com/questions/830643/uptime-command-gives-weird-results-in-a-docker-image?newreg=45d3277a4e644259851743c00706d54c

 demius год и 10 месяцев назад

Так же для примера вывели uptime, и он нам из контейнера показал аптайм сервера, что нам не подходит в этой адаче, но пригодиться в demius.ru Здесь надо будет поискать uptime именно php-fpm, либо uptime контейнера

 demius год и 10 месяцев назад

Ну что, взялись и даже примерно набросали решение, уже не с итератором тегов, а tagged locator’ом (возможно баджи надо то же на него, там же для каждого объекта только один хандлер по факту срабатывает)

 demius год и 10 месяцев назад

да, делаем в 3.1

 demius 2 года назад

Заодно можно убрать лишние ссылки из подвала. http://tasks.demius.ru/ не предоставляет поддержки, поскольку не дает регистрироваться или писать незарегстрированным. Changelog не нужен так активно, и может скрываться за версией.

 demius 2 года назад

В целом задача не сложная, но приятная, думаю не стоит затягивать в ожидании сложной статистики и кешей, ведь эта инфа отображается только на этой странице, так что систему грузить не будет. Самый минимум, количество разных сущностей, количество закрытых задач, время со старта и время начала фиксации активностей. Все это мы можем быстро и просто найти.

Остальное вынесем в отдельную задачу на потом, или несколько (отдельно внешний запрос за наличием обнволений, отдельно расчет каких сложных метрик, не обсчитанных здесь, отдельно какие-нибудь диаграмки)