znt/QWEN.md

183 lines
10 KiB
Markdown
Raw Normal View History

# 禅道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/`
- Поддерживаемые языки: упрощенный китайский, традиционный китайский, английский, немецкий, французский, вьетнамский, японский, испанский, португальский, русский
- Выбор языка можно настроить в пользовательских предпочтениях