znt/CLAUDE.md

174 lines
5 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Interactive
Always reply in Chinese.
## Project Overview
ZenTao is a comprehensive, open-source project management software written in PHP that covers the main PM process from product and project management to quality management, documentation management, organization management, and office management. It follows a modular MVC architecture pattern.
## Architecture
### Core Structure
- **framework/**: Core framework classes (control, model, router, helper)
- **module/**: Modular architecture with each module containing:
- `control.php` - Controller logic
- `model.php` - Data layer and business logic
- `zen.php` - New architecture layer (when present)
- `tao.php` - Extended business logic layer (when present)
- `config/` - Module-specific configuration
- `lang/` - Internationalization files
- `view/` - Traditional view templates
- `ui/` - Modern UI components
- `css/` and `js/` - Frontend assets
- **lib/**: Third-party libraries and utility classes
- **config/**: Global configuration files
- **www/**: Web entry point and public assets
- **db/**: Database schemas and migration scripts
- **extension/**: Extension system for customization
### Database
- Uses MySQL/MariaDB with custom DAO layer in `lib/dao/`
- Database schemas in `db/` directory with versioned SQL files
- Supports multiple database engines including experimental DuckDB support
### Frontend
- Mix of traditional PHP templates and modern UI components
- Uses ZUI framework (custom UI library)
- jQuery-based JavaScript
- CSS organized per module
## Development Commands
### Build System
```bash
# Full build process
make all
# Clean build artifacts
make clean
# Common build (core functionality)
make common
# Package for distribution
make package
# Create distribution packages
make pms # Standard package
make ci # CI build with all packages
```
### Testing
The project uses a custom testing framework located in `test/`:
```bash
# Run tests (navigate to test directory first)
cd test
php spider.php
# UI testing configuration available in test/config/config.php
```
### Code Quality
- PHP compatibility checks via `misc/compatibility/`
- Downgrade scripts for PHP version compatibility in `misc/rector/`
- Code minification: `php misc/minifyfront.php`
## Key Modules
### Core Business Modules
- **product/**: Product management
- **project/**: Project management (includes execution/)
- **story/**: User story management
- **task/**: Task management
- **bug/**: Bug tracking
- **testcase/**: Test case management
- **build/**: Build management
### Administrative Modules
- **user/**: User management
- **group/**: Permission groups
- **company/**: Organization management
- **dept/**: Department structure
### Integration Modules
- **git/, gitlab/, gitea/, gogs/**: Source control integration
- **jenkins/**: CI/CD integration
- **api/**: API management
- **webhook/**: Webhook support
### Reporting & Analytics
- **report/**: Standard reports
- **chart/**: Charting functionality
- **metric/**: Metrics calculation
- **bi/**: Business intelligence
## Configuration
### Database Configuration
- Main config: `config/config.php`
- Database settings typically in `config/my.php` (not tracked)
### Extension System
- Custom extensions in `extension/custom/`
- Configuration extensions in `config/ext/`
### Internationalization
- Language files in each module's `lang/` directory
- Supported languages: zh-cn, zh-tw, en, de, fr
## File Patterns
### Naming Conventions
- Controllers: `control.php`
- Models: `model.php`
- Views: `view/*.html.php`
- UI Components: `ui/*.html.php`
- Configurations: `config/*.php`
- Language files: `lang/{locale}.php`
### Architecture Layers
- **zen.php**: New architecture implementation
- **tao.php**: Business logic extension layer
- Traditional MVC for legacy code
## Development Notes
### PHP Requirements
- Minimum PHP 5.6, supports up to PHP 8.1+
- Uses strict types declaration in newer files
- Extensive use of custom framework classes
### Security
- Custom authentication and authorization system
- Input filtering via `lib/filter/`
- SQL injection protection through DAO layer
### Performance
- Built-in caching system in `lib/cache/`
- Database query optimization
- File-based session management
## Common Tasks
### Adding New Features
1. Create module directory structure in `module/`
2. Implement controller, model, and views
3. Add language files for internationalization
4. Configure routing if needed
5. Add database tables via SQL files in `db/`
### Database Changes
1. Add migration SQL to `db/update*.sql`
2. Update schema in `db/zentao.sql`
3. Test with different database engines if needed
### Testing Changes
1. Add test data to `test/data/`
2. Create test cases using the custom framework
3. Run compatibility checks for PHP versions
This codebase represents a mature, enterprise-level project management system with extensive customization capabilities and multi-language support.