55 lines
4.7 KiB
XML
55 lines
4.7 KiB
XML
<Rule id="GraphRAG" enforcement="strict">
|
||
<Description>Код должен содержать явный, машиночитаемый граф знаний в виде семантических якорей [ENTITY] и [RELATION].</Description>
|
||
<Rationale>Это делает архитектуру, зависимости и потоки данных очевидными и запрашиваемыми без необходимости в сложных инструментах статического анализа.</Rationale>
|
||
<Definition type="multi_check">
|
||
<Checks>
|
||
<!--
|
||
ПРОВЕРКА 1: Блок разметки ([ENTITY]/[RELATION]) должен идти ПЕРЕД KDoc.
|
||
Это реализация правила 'Placement'.
|
||
-->
|
||
<Check type="block_order" scope="entity">
|
||
<Description>Блок семантической разметки ([ENTITY]/[RELATION]) должен предшествовать KDoc-контракту.</Description>
|
||
<PrecedingBlockPattern><![CDATA[//\s*\[(ENTITY|RELATION):]]></PrecedingBlockPattern>
|
||
<FollowingBlockPattern><![CDATA[\/\*\*]]></FollowingBlockPattern>
|
||
<FailureMessage>Нарушен порядок блоков: блок разметки ([ENTITY]/[RELATION]) должен быть определен ПЕРЕД KDoc-контрактом.</FailureMessage>
|
||
</Check>
|
||
|
||
<!--
|
||
ПРОВЕРКА 2: Тип сущности в [ENTITY] должен быть из разрешенного списка.
|
||
-->
|
||
<Check type="entity_type_validation" scope="entity">
|
||
<Description>Тип сущности в якоре [ENTITY] должен принадлежать к предопределенной таксономии.</Description>
|
||
<ValidEntityTypes>
|
||
<Type>Module</Type><Type>Class</Type><Type>Interface</Type><Type>Object</Type>
|
||
<Type>DataClass</Type><Type>SealedInterface</Type><Type>EnumClass</Type><Type>Function</Type>
|
||
<Type>UseCase</Type><Type>ViewModel</Type><Type>Repository</Type><Type>DataStructure</Type>
|
||
<Type>DatabaseTable</Type><Type>ApiEndpoint</Type>
|
||
</ValidEntityTypes>
|
||
<FailureMessage>Использован невалидный тип сущности в якоре [ENTITY].</FailureMessage>
|
||
</Check>
|
||
|
||
<!--
|
||
ПРОВЕРКА 3: Все [RELATION] триплеты должны иметь корректный формат и валидный тип связи.
|
||
-->
|
||
<Check type="relation_validation" scope="entity">
|
||
<Description>Якоря [RELATION] должны соответствовать формату семантического триплета и использовать валидные типы связей.</Description>
|
||
<TripletPattern><![CDATA[//\s*\[RELATION:\s*'(?P<subject_type>\w+)'\('(?P<subject_name>.*?)'\)\s*->\s*\[(?P<relation_type>\w+)\]\s*->\s*\['(?P<object_type>\w+)'\('(?P<object_name>.*?)'\)\]]]></TripletPattern>
|
||
<ValidRelationTypes>
|
||
<Type>CALLS</Type><Type>CREATES_INSTANCE_OF</Type><Type>INHERITS_FROM</Type><Type>IMPLEMENTS</Type>
|
||
<Type>READS_FROM</Type><Type>WRITES_TO</Type><Type>MODIFIES_STATE_OF</Type><Type>DEPENDS_ON</Type>
|
||
<Type>DISPATCHES_EVENT</Type><Type>OBSERVES</Type><Type>TRIGGERS</Type><Type>EMITS_STATE</Type><Type>CONSUMES_STATE</Type>
|
||
</ValidRelationTypes>
|
||
<FailureMessage>Якорь [RELATION] имеет неверный формат или использует невалидный тип связи.</FailureMessage>
|
||
</Check>
|
||
|
||
<!--
|
||
ПРОВЕРКА 4: Вся разметка ([ENTITY] и [RELATION]) должна быть в едином непрерывном блоке.
|
||
Это реализация правила 'MarkupBlockCohesion'.
|
||
-->
|
||
<Check type="markup_cohesion" scope="entity">
|
||
<Description>Вся семантическая разметка ([ENTITY] и [RELATION]) для одной сущности должна быть сгруппирована в единый непрерывный блок комментариев.</Description>
|
||
<FailureMessage>Нарушена целостность блока разметки: обнаружены строки кода или пустые строки между якорями [ENTITY] и [RELATION].</FailureMessage>
|
||
</Check>
|
||
</Checks>
|
||
</Definition>
|
||
</Rule> |