9require_once dirname(__DIR__) .
'/include/dbxKiModuleBriefingService.class.php';
11$fail =
static function (
string $message,
int $code): void {
12 fwrite(STDERR,
"FAIL: $message\n");
16$class =
new ReflectionClass(
'dbx\\dbxKi\\dbxKiModuleBriefingService');
22 array $arguments = array()
29if (
$class->getConstant(
'MODULE_BRIEFING_VERSION') !==
'0.6') {
30 $fail(
'Modul-Briefing-Version ist nicht 0.6.', 1);
36 'ausschliesslich ueber dbxDB und DD-Namen',
37 'create_date, create_uid, update_date, update_uid und owner',
38 'dbxapp-Exportformat',
39 'Keine $addField-Closure',
40 'Nach einem Insert die von dbxDB gelieferte RID',
41 '{fid}_next_record-Default',
42 'spaet per add_rep()',
44 'keine unnoetigen Callback-Setter',
45 'Keine Modulmethoden',
46 'Nicht pauschal escapen',
47 'GET bleibt fuer Navigation',
49 'Keine action_routes-Konfiguration',
50 'dbx()->action_url($url)',
51 'keine check_action_token()-Pruefung',
52 'keinen dbx_token hinzu',
53 'Standardaktionen werden automatisch signiert',
54 'Ajax und normaler POST',
55 'myInvoices-Modul ist die ausfuehrbare Architektur-Referenz',
57 if (strpos(
$rulesText, $requiredRule) ===
false) {
58 $fail(
'Verbindliche Regel fehlt: ' . $requiredRule, 2);
73 if (!isset(
$way[$requiredKey]) || trim((
string)
$way[$requiredKey]) ===
'') {
74 $fail(
'dbxappWay-Eintrag fehlt: ' . $requiredKey, 3);
83foreach (array(
'forms',
'reports',
'dd',
'db',
'audit',
'objects',
'escaping',
'get',
'action_links') as $requiredKey) {
85 $fail(
'dbxApiContract-Eintrag fehlt: ' . $requiredKey, 4);
88foreach (array(
'{fid}_{event}-Callback-Defaults',
'add_rep()',
'{rpt:colspan}') as $requiredReportRule) {
89 if (strpos((
string)
$contract[
'reports'], $requiredReportRule) ===
false) {
90 $fail(
'dbxReport-Default fehlt im API-Vertrag: ' . $requiredReportRule, 4);
96 (
$reference[
'export_manual'] ??
'') !==
'reference/25_Verbindliches_Modulhandbuch.md'
97 || (
$reference[
'export_module'] ??
'') !==
'reference/myInvoices'
99 $fail(
'Exportierte Modulreferenz ist unvollstaendig.', 5);
105 'modulePipelineGuide',
108if ((
$guide[
'manifest'][
'task_type'] ??
'') !==
'update') {
109 $fail(
'Standardaufgabe der Modul-Pipeline ist nicht update.', 6);
111if ((
$guide[
'reference_standard'][
'export_module'] ??
'') !==
'reference/myInvoices') {
112 $fail(
'Pipeline-Guide liefert den Referenzstandard nicht aus.', 7);
116 dirname(__DIR__) .
'/include/dbxKiModuleBriefingService.class.php'
119 "'update' => 'Bestehendes Modul bearbeiten / aktualisieren'",
120 '$this->addReferenceToZip($zip);',
121 "'reference/README.md' => \$this->referenceText()",
122) as $requiredSource) {
123 if (strpos(
$source, $requiredSource) ===
false) {
124 $fail(
'Exportimplementierung fehlt: ' . $requiredSource, 8);
128 '/private function \w+\s*\([^)]*\)\s*(?::\s*[^{]+)?\{\s*'
129 .
'return\s+dbx\(\)->get_(?:system|include)_obj/s',
132 $fail(
'Reine dbx()-Wrapper sind in der Modulbearbeitung nicht erlaubt.', 8);
136 dirname(__DIR__) .
'/tpl/htm/ki-module-briefing.htm'
139 strpos(
$template,
'Module bearbeiten und aktualisieren') ===
false
140 || strpos(
$template,
'Handbuch + Referenz') ===
false
142 $fail(
'Modul-Briefing zeigt den neuen Standard nicht an.', 9);
145$instructions = (string)file_get_contents(dirname(__DIR__) .
'/KI-INSTRUCTIONS.md');
147 '## Module bearbeiten und aktualisieren',
148 'reference/25_Verbindliches_Modulhandbuch.md',
149 'reference/myInvoices/',
150 '`delete` und `save`',
151 'zusammen mit `rid` automatisch erkannt',
152 'dbx()->action_url($url)',
153 'keinen zusätzlichen',
154) as $requiredDocumentation) {
155 if (strpos(
$instructions, $requiredDocumentation) ===
false) {
156 $fail(
'KI-Dokumentation fehlt: ' . $requiredDocumentation, 10);
160echo
"OK dbxKi module briefing contract\n";
if(strpos($template, 'Module bearbeiten und aktualisieren')===false||strpos($template, 'Handbuch+Referenz')===false) $instructions
$fail
Vertragstest für die dbxKi-Modulbearbeitung.
if(($reference['export_manual'] ?? '') !=='reference/25_Verbindliches_Modulhandbuch.md'||($reference['export_module'] ?? '') !=='reference/myInvoices') $guide
foreach(array( 'forms', 'reports', 'dd', 'db', 'audit', 'objects', 'escaping', 'get', 'action_links') as $requiredKey) foreach(array('{fid}_{event}-Callback-Defaults', 'add_rep()', '{rpt:colspan}') as $requiredReportRule) $reference
foreach(array('ausschliesslich ueber dbxDB und DD-Namen', 'create_date, create_uid, update_date, update_uid und owner', 'dbxapp-Exportformat', 'Keine $addField-Closure', 'Nach einem Insert die von dbxDB gelieferte RID', '{fid}_next_record-Default', 'spaet per add_rep()', '{rpt:colspan}', 'keine unnoetigen Callback-Setter', 'Keine Modulmethoden', 'Nicht pauschal escapen', 'GET bleibt fuer Navigation', 'delete und save', 'Keine action_routes-Konfiguration', 'dbx() ->action_url($url)', 'keine check_action_token() -Pruefung', 'keinen dbx_token hinzu', 'Standardaktionen werden automatisch signiert', 'Ajax und normaler POST', 'myInvoices-Modul ist die ausfuehrbare Architektur-Referenz',) as $requiredRule) $way