-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModule.php
More file actions
62 lines (53 loc) · 1.68 KB
/
Copy pathModule.php
File metadata and controls
62 lines (53 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
declare(strict_types = 1);
namespace Modules\AIProblemAnalysis;
use APP;
use CController as CAction;
use CWebUser;
use CMenuItem;
// Smart CModule detection like your working module
if (!class_exists('Zabbix\Core\CModule') && class_exists('Core\CModule')) {
class_alias('Core\CModule', 'Zabbix\Core\CModule');
}
use Zabbix\Core\CModule;
/**
* AI Problem Analysis Module
*/
class Module extends CModule {
/**
* Initialize module.
*/
public function init(): void {
if (CWebUser::getType() < USER_TYPE_ZABBIX_USER) {
return;
}
// CRITICAL: Load assets ONLY on problem.view pages
$action = $_REQUEST['action'] ?? '';
if (strpos($action, 'problem.view') !== false || strpos($action, 'problem.list') !== false) {
// Register JS/CSS with correct module-relative paths
$module_path = APP::ModuleManager()->getModule('ai-problem-analysis')->getPath();
APP::Component()->get('page.header')
->addCssFile($module_path . '/assets/css/ai-analysis.css')
->addJsFile($module_path . '/assets/js/ai-analysis.js');
}
}
/**
* Get default module configuration
*/
public function getConfig(): array {
return [
'ai_backend' => 'claude',
'anthropic_api_key' => '',
'openai_api_key' => '',
'openai_model' => 'gpt-4',
'claude_model' => 'claude-sonnet-4-20250514',
'custom_api_url' => '',
'custom_api_key' => '',
'analysis_timeout' => 30,
'include_history_hours' => 24,
'cache_duration' => 300
];
}
public function onBeforeAction(CAction $action): void {}
public function onTerminate(CAction $action): void {}
}