# 禅道PMS контекст проекта ## Взаимодействие Всегда отвечайте на русском языке. ## Обзор проекта ZenTao PMS (система управления проектами) — это программное обеспечение с открытым исходным кодом, разработанное ZenTao Software (Циндао) Co., Ltd. Это первое в Китае开源 программное обеспечение для управления проектами, предназначенное для охвата основных процессов управления проектами, от управления продуктами и проектами до управления качеством, управления документацией, управления организацией и офисного управления. ### Основные характеристики - Построен на основе PHP-фреймворка ZenTao - Поддерживает несколько методологий управления проектами: Scrum, Waterfall и Kanban - Полный функционал включает управление продуктами, управление проектами, управление качеством, управление документацией - Поддержка нескольких языков (китайский, английский, немецкий, французский и др.) - Богатые модули включают визуализацию данных, метрики, DevOps, управление документами, автоматизированное тестирование - Версия 21.7.5 (согласно файлу VERSION) ### Архитектура ZenTao использует модульную MVC-архитектуру: - **Фреймворк**: пользовательский PHP-фреймворк, расположенный в `/framework` - **Модули**: функциональные модули в `/module` (например, продукт, проект, исполнение, дефект, задача и т.д.) - **База данных**: на основе MySQL, схема определена в `/db/zentao.sql` - **Веб-интерфейс**: веб-приложение на PHP, расположенное в `/www` - **Конфигурация**: централизованная конфигурация в `/config` ## Структура проекта ``` zentaopms/ ├── api/ # Файлы, связанные с API ├── bin/ # Исполняемые двоичные файлы/скрипты ├── config/ # Файлы конфигурации ├── db/ # Файлы схемы базы данных ├── doc/ # Документация ├── extension/ # Расширения ├── framework/ # Основные файлы фреймворка ├── lib/ # Библиотеки ├── misc/ # Различные файлы ├── module/ # Модули приложения ├── sdk/ # Комплекты для разработки ПО ├── tmp/ # Временные файлы ├── www/ # Корневая директория веб-сервера └── README.md # Документация проекта ``` ## Сборка и запуск ### Предварительные требования - PHP 8.1 или выше - База данных MySQL - Веб-сервер Apache или Nginx ### Процесс сборки Проект использует Makefile для сборки: 1. **Очистка среды сборки**: `make clean` 2. **Сборка приложения**: `make` или `make all` 3. **Создание пакета**: `make package` 4. **Создание дистрибутива**: `make pms` Процесс сборки: - Копирует необходимые файлы в директорию `zentaopms` - Обрабатывает и сжимает ресурсы JavaScript/CSS - Устанавливает соответствующие разрешения - Создает дистрибутивные пакеты (ZIP, tar.xz) ### Установка 1. Распакуйте дистрибутивный пакет в директорию веб-сервера 2. Настройте параметры базы данных в `config/my.php` (скопируйте из `config/config.php`) 3. Перейдите к веб-интерфейсу и следуйте инструкциям мастера установки 4. Если не установлено, система автоматически перенаправит на `install.php` ### Запуск в среде разработки 1. Поместите исходный код в корневую директорию веб-сервера 2. Настройте веб-сервер для обслуживания PHP-файлов 3. Убедитесь, что следующие директории доступны для записи: - `tmp/` - `www/data/` - `config/` - `extension/` ### Запуск в производственной среде 1. Соберите дистрибутивный пакет с помощью `make pms` 2. Распакуйте на производственном сервере 3. Установите соответствующие разрешения для директорий 4. Настройте подключение к базе данных в `config/my.php` 5. Получите доступ через веб-браузер для завершения установки ## Конфигурация ### Основная конфигурация Основная конфигурация находится в `config/config.php`, важные настройки включают: - Настройки подключения к базе данных - Конфигурация маршрутизации запросов - Настройки языка и темы оформления - Настройки безопасности - Ограничения на загрузку файлов ### Пользовательская конфигурация Создайте `config/my.php` для переопределения настроек по умолчанию: - Скопируйте из `config/config.php` - Измените настройки подключения к базе данных - Отрегулируйте другие конфигурации по мере необходимости ### Конфигурация базы данных Таблицы базы данных определены как константы в `config/zentaopms.php`: - Префикс таблиц: по умолчанию `zt_` - Более 100 таблиц для различных функций - Схема определена в `db/zentao.sql` ## Правила разработки ### Структура кода - Следует MVC-паттерну с моделями, представлениями и контроллерами - Модули организованы в директориях `/module/{module}/` - Каждый модуль обычно содержит: - `model.php`: бизнес-логика - `control.php`: действия контроллера - `view/`: файлы шаблонов - `lang/`: языковые файлы - `js/`: JavaScript для конкретного модуля - `css/`: CSS для конкретного модуля ### Маршрутизация - Маршрут по умолчанию: `index.php?m={module}&f={method}` - Маршрутизация PATH_INFO: `index.php/{module}-{method}` - Пользовательские маршруты API могут быть определены в `config/routes.php` ### Доступ к базе данных - Использует пользовательский паттерн DAO (объект доступа к данным) - Определен в `lib/base/dao/` - Пример: `$this->dao->select('*')->from(TABLE_USER)->where('id')->eq($id)->fetch()` ### Тестирование - Тесты находятся в `test/` в директориях модулей ## Основные модули ZenTao имеет обширную модульную структуру: - **Управление продуктами**: product, story, productplan, release - **Управление проектами**: project, execution, task, build - **Управление качеством**: bug, testcase, testtask, testsuite - **Управление документацией**: doc, doclib - **Управление организацией**: company, dept, user, group - **DevOps**: repo, job, compile, mr - **Отчеты**: report, pivot, chart - **Администрирование**: admin, custom, extension ## API и интеграции - RESTful API через `api.php` - Поддержка вебхуков для интеграции - Поддержка GitLab, Gogs, Gitea, Jenkins, SonarQube - Интеграция Xuanxuan для обмена сообщениями ## Безопасность - Валидация и фильтрация ввода - Защита от XSS - Защита от CSRF - Предотвращение SQL-инъекций через DAO - Ограничения на загрузку файлов ## Интернационализация - Поддержка нескольких языков, языковые файлы в `/module/{module}/lang/` - Поддерживаемые языки: упрощенный китайский, традиционный китайский, английский, немецкий, французский, вьетнамский, японский, испанский, португальский, русский - Выбор языка можно настроить в пользовательских предпочтениях