From 394e0040deedd8b65d7156f24e1efa1cd80074bb Mon Sep 17 00:00:00 2001 From: busya Date: Fri, 26 Sep 2025 10:30:59 +0300 Subject: [PATCH] 211 --- .../filesystem_task_channel.xml | 74 - .../implementations/gitea_task_channel.xml | 69 - .../implementations/xml_file_log_sink.xml | 17 - .../implementations/xml_file_metrics_sink.xml | 17 - .../interfaces/log_sink_interface.xml | 7 - .../interfaces/metrics_sink_interface.xml | 7 - .../interfaces/task_channel_interface.xml | 43 - .../knowledge_base/ai_friendly_logging.xml | 52 - .../knowledge_base/design_by_contract.xml | 55 - .../knowledge_base/graphrag_optimization.xml | 55 - .../kotlin/comments_and_kdoc.md | 0 .../kotlin/naming_conventions.md | 82 - .../kotlin/style_and_formatting.md | 0 .../knowledge_base/semantic_linting.xml | 133 -- .../protocols/semantic_enrichment_protocol.md | 111 ++ .../semantic_enrichment_protocol.xml | 12 - agent_promts/roles/architect.md | 75 + agent_promts/roles/architect.xml | 105 - agent_promts/roles/base_role.xml | 37 - agent_promts/roles/code.md | 60 + agent_promts/roles/documentation.xml | 88 - agent_promts/roles/engineer.xml | 54 - agent_promts/roles/qa.md | 63 + agent_promts/roles/qa.xml | 58 - agent_promts/roles/semantic_linter.xml | 97 - agent_promts/shared/knowledge_base.md | 172 ++ agent_promts/shared/metrics_catalog.md | 44 + agent_promts/shared/metrics_catalog.xml | 47 - app/build.gradle.kts | 11 +- .../com/homebox/lens/navigation/NavGraph.kt | 44 +- .../lens/navigation/NavigationActions.kt | 26 +- .../com/homebox/lens/navigation/Screen.kt | 8 + .../com/homebox/lens/ui/common/AppDrawer.kt | 10 + .../homebox/lens/ui/common/MainScaffold.kt | 27 +- .../lens/ui/screen/itemedit/ItemEditScreen.kt | 401 +++- .../ui/screen/itemedit/ItemEditViewModel.kt | 445 ++++- .../ui/screen/labelslist/LabelsListScreen.kt | 63 +- .../ui/screen/labelslist/LabelsListUiState.kt | 4 +- .../screen/labelslist/LabelsListViewModel.kt | 84 +- .../lens/ui/screen/settings/SettingsScreen.kt | 104 + .../ui/screen/settings/SettingsUiState.kt | 8 + .../ui/screen/settings/SettingsViewModel.kt | 54 + app/src/main/res/values-en/strings.xml | 25 + app/src/main/res/values/strings.xml | 27 +- .../screen/itemedit/ItemEditViewModelTest.kt | 118 +- build.gradle.kts | 14 +- buildSrc/src/main/java/Dependencies.kt | 68 +- .../homebox/lens/data/api/dto/ItemOutDto.kt | 26 +- .../com/homebox/lens/data/db/dao/LabelDao.kt | 9 + .../data/repository/ItemRepositoryImpl.kt | 5 +- .../com/homebox/lens/domain/model/Item.kt | 24 +- .../com/homebox/lens/domain/model/ItemOut.kt | 13 +- .../lens/domain/usecase/DeleteLabelUseCase.kt | 12 +- .../domain/usecase/UpdateItemUseCaseTest.kt | 64 +- extract_semantics.py | 5 +- extract_semantics_output.txt | 289 +++ feature/dashboard/build.gradle.kts | 95 + .../feature/dashboard/DashboardNavigation.kt | 63 + .../feature}/dashboard/DashboardScreen.kt | 107 +- .../feature}/dashboard/DashboardUiState.kt | 6 +- .../feature}/dashboard/DashboardViewModel.kt | 18 +- .../dashboard/src/main/res/values/strings.xml | 25 + feature/scan/build.gradle.kts | 72 + .../lens/feature/scan/BarcodeAnalyzer.kt | 62 + .../homebox/lens/feature/scan/ScanScreen.kt | 132 ++ .../homebox/lens/feature/scan/ScanUiState.kt | 52 + .../lens/feature/scan/ScanViewModel.kt | 75 + final_prompt_engineer_file.xml | 179 ++ .../20250908_settings_screen_qa_report.xml | 22 + logs/engineer_metrics_20250912_120000.xml | 13 + logs/metrics_for_current_work_order.xml | 35 + logs/metrics_log.xml | 56 + process_openapi.py | 147 -- screenshots/Screenshot_20250909_094357.png | Bin 0 -> 68829 bytes settings.gradle.kts | 15 +- tasks/completed/current_work_order.xml | 199 ++ .../qa_task_for_current_work_order.xml | 7 + tasks/current_work_order.xml | 71 - .../work_order_feature_dashboard_refactor.xml | 173 ++ tasks/work_order_item_creation_update.md | 80 + tech_spec/PROJECT_MANIFEST.xml | 1687 +++++++++++++---- validate_semantics.py | 309 +++ 82 files changed, 5324 insertions(+), 1998 deletions(-) delete mode 100644 agent_promts/implementations/filesystem_task_channel.xml delete mode 100644 agent_promts/implementations/gitea_task_channel.xml delete mode 100644 agent_promts/implementations/xml_file_log_sink.xml delete mode 100644 agent_promts/implementations/xml_file_metrics_sink.xml delete mode 100644 agent_promts/interfaces/log_sink_interface.xml delete mode 100644 agent_promts/interfaces/metrics_sink_interface.xml delete mode 100644 agent_promts/interfaces/task_channel_interface.xml delete mode 100644 agent_promts/knowledge_base/ai_friendly_logging.xml delete mode 100644 agent_promts/knowledge_base/design_by_contract.xml delete mode 100644 agent_promts/knowledge_base/graphrag_optimization.xml delete mode 100644 agent_promts/knowledge_base/kotlin/comments_and_kdoc.md delete mode 100644 agent_promts/knowledge_base/kotlin/naming_conventions.md delete mode 100644 agent_promts/knowledge_base/kotlin/style_and_formatting.md delete mode 100644 agent_promts/knowledge_base/semantic_linting.xml create mode 100644 agent_promts/protocols/semantic_enrichment_protocol.md delete mode 100644 agent_promts/protocols/semantic_enrichment_protocol.xml create mode 100644 agent_promts/roles/architect.md delete mode 100644 agent_promts/roles/architect.xml delete mode 100644 agent_promts/roles/base_role.xml create mode 100644 agent_promts/roles/code.md delete mode 100644 agent_promts/roles/documentation.xml delete mode 100644 agent_promts/roles/engineer.xml create mode 100644 agent_promts/roles/qa.md delete mode 100644 agent_promts/roles/qa.xml delete mode 100644 agent_promts/roles/semantic_linter.xml create mode 100644 agent_promts/shared/knowledge_base.md create mode 100644 agent_promts/shared/metrics_catalog.md delete mode 100644 agent_promts/shared/metrics_catalog.xml create mode 100644 app/src/main/java/com/homebox/lens/ui/screen/settings/SettingsScreen.kt create mode 100644 app/src/main/java/com/homebox/lens/ui/screen/settings/SettingsUiState.kt create mode 100644 app/src/main/java/com/homebox/lens/ui/screen/settings/SettingsViewModel.kt create mode 100644 extract_semantics_output.txt create mode 100644 feature/dashboard/build.gradle.kts create mode 100644 feature/dashboard/src/main/java/com/homebox/lens/feature/dashboard/DashboardNavigation.kt rename {app/src/main/java/com/homebox/lens/ui/screen => feature/dashboard/src/main/java/com/homebox/lens/feature}/dashboard/DashboardScreen.kt (79%) rename {app/src/main/java/com/homebox/lens/ui/screen => feature/dashboard/src/main/java/com/homebox/lens/feature}/dashboard/DashboardUiState.kt (94%) rename {app/src/main/java/com/homebox/lens/ui/screen => feature/dashboard/src/main/java/com/homebox/lens/feature}/dashboard/DashboardViewModel.kt (91%) create mode 100644 feature/dashboard/src/main/res/values/strings.xml create mode 100644 feature/scan/build.gradle.kts create mode 100644 feature/scan/src/main/java/com/homebox/lens/feature/scan/BarcodeAnalyzer.kt create mode 100644 feature/scan/src/main/java/com/homebox/lens/feature/scan/ScanScreen.kt create mode 100644 feature/scan/src/main/java/com/homebox/lens/feature/scan/ScanUiState.kt create mode 100644 feature/scan/src/main/java/com/homebox/lens/feature/scan/ScanViewModel.kt create mode 100644 final_prompt_engineer_file.xml create mode 100644 logs/assurance_reports/20250908_settings_screen_qa_report.xml create mode 100644 logs/engineer_metrics_20250912_120000.xml create mode 100644 logs/metrics_for_current_work_order.xml create mode 100644 logs/metrics_log.xml delete mode 100644 process_openapi.py create mode 100644 screenshots/Screenshot_20250909_094357.png create mode 100644 tasks/completed/current_work_order.xml create mode 100644 tasks/completed/qa_task_for_current_work_order.xml delete mode 100644 tasks/current_work_order.xml create mode 100644 tasks/work_order_feature_dashboard_refactor.xml create mode 100644 tasks/work_order_item_creation_update.md create mode 100644 validate_semantics.py diff --git a/agent_promts/implementations/filesystem_task_channel.xml b/agent_promts/implementations/filesystem_task_channel.xml deleted file mode 100644 index dddb439..0000000 --- a/agent_promts/implementations/filesystem_task_channel.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - Реализует канал управления задачами через локальную файловую систему. - Задачи хранятся как файлы в директории `tasks/`. - - - - Сканировать директорию `tasks/`. - Найти первый файл, содержащий `status="pending"` и метку роли `{RoleName}`. - Если найден, вернуть содержимое файла. Иначе, вернуть `NULL`. - - - - Создать новый XML-файл в директории `tasks/`. - Имя файла: `{Timestamp}_{Title}.xml`. - Содержимое файла должно включать `Title`, `Body`, `Assignee`, `Labels` и `status="pending"`. - - - - Найти файл задачи по `{IssueID}` (имени файла). - Заменить в файле `status="{OldStatus}"` на `status="{NewStatus}"`. - - - - Найти файл задачи по `{IssueID}`. - Добавить в конец файла XML-блок `{CommentBody}`. - - - - - [FileSystemTaskChannel] INFO: Операция 'CreatePullRequest' не поддерживается файловым протоколом. Пропущено. - Title: {Title}, Head: {HeadBranch}, Base: {BaseBranch} - - - - - - [FileSystemTaskChannel] INFO: Операция 'MergeAndComplete' не поддерживается файловым протоколом. Пропущено. - IssueID: {IssueID}, PrID: {PrID} - - - - - - [FileSystemTaskChannel] INFO: Операция 'ReturnToDev' не поддерживается файловым протоколом. Пропущено. - IssueID: {IssueID}, PrID: {PrID} - - - - - - [FileSystemTaskChannel] INFO: Операция 'CommitChanges' не поддерживается файловым протоколом. Пропущено. - Commit Message: {CommitMessage} - - - - - - [FileSystemTaskChannel] INFO: Операция 'CreateBranch' не поддерживается файловым протоколом. Пропущено. - Branch Name: {BranchName} - - - - - - [FileSystemTaskChannel] INFO: Операция 'CommitChanges' не поддерживается файловым протоколом. Пропущено. - Commit Message: {CommitMessage} - - - - diff --git a/agent_promts/implementations/gitea_task_channel.xml b/agent_promts/implementations/gitea_task_channel.xml deleted file mode 100644 index 5842fcf..0000000 --- a/agent_promts/implementations/gitea_task_channel.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - Реализует канал управления задачами через Gitea, используя `gitea-client.zsh`. - - - - - Выполнить команду `./gitea-client.zsh {RoleName} find-tasks --type "{TaskType}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} create-task --title "{Title}" --body "{Body}" --assignee "{Assignee}" --labels "{Labels}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} update-task-status --issue-id {IssueID} --old "{OldStatus}" --new "{NewStatus}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} create-pr --title "{Title}" --body "{Body}" --head "{HeadBranch}" --base "{BaseBranch}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} merge-and-complete --issue-id {IssueID} --pr-id {PrID} --branch "{BranchToDelete}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} return-to-dev --issue-id {IssueID} --pr-id {PrID} --report "{DefectReport}"`. - - - - - - - - ACTION: AddComment. Issue: {IssueID}, Body: {CommentBody} - - - - - Выполнить `git add .`. - Выполнить `git commit -m "{CommitMessage}"`. - Выполнить `git push origin {CurrentBranch}`. - - - - Выполнить `git checkout -b {BranchName}`. - - - - Выполнить `git add .`. - Выполнить `git commit -m "{CommitMessage}"`. - Выполнить `git push origin {CurrentBranch}`. - - diff --git a/agent_promts/implementations/xml_file_log_sink.xml b/agent_promts/implementations/xml_file_log_sink.xml deleted file mode 100644 index 88ac553..0000000 --- a/agent_promts/implementations/xml_file_log_sink.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Реализует канал логирования путем дозаписи в файл 'logs/communication_log.xml'. - - - - LogMessage - - Сформировать XML-блок `` на основе `LogMessage`. - - - Добавить (append) сформированный блок в файл `/home/busya/dev/homebox_lens/logs/communication_log.xml`. - - - diff --git a/agent_promts/implementations/xml_file_metrics_sink.xml b/agent_promts/implementations/xml_file_metrics_sink.xml deleted file mode 100644 index d84765d..0000000 --- a/agent_promts/implementations/xml_file_metrics_sink.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Реализует канал для метрик путем дозаписи в файл 'logs/metrics_log.xml'. - - - - MetricsBundle - - Сформировать XML-блок `` на основе `MetricsBundle`. - - - Добавить (append) сформированный блок в файл `/home/busya/dev/homebox_lens/logs/metrics_log.xml`. - - - diff --git a/agent_promts/interfaces/log_sink_interface.xml b/agent_promts/interfaces/log_sink_interface.xml deleted file mode 100644 index 1f7b0dc..0000000 --- a/agent_promts/interfaces/log_sink_interface.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/agent_promts/interfaces/metrics_sink_interface.xml b/agent_promts/interfaces/metrics_sink_interface.xml deleted file mode 100644 index 9199991..0000000 --- a/agent_promts/interfaces/metrics_sink_interface.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/agent_promts/interfaces/task_channel_interface.xml b/agent_promts/interfaces/task_channel_interface.xml deleted file mode 100644 index 6059f1f..0000000 --- a/agent_promts/interfaces/task_channel_interface.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Абстрактный контракт для канала взаимодействия с системой управления задачами. - Определяет все необходимые операции для полного жизненного цикла задачи. - - - - Находит следующую доступную задачу для указанной роли и типа. - - - - Создает новую задачу. - - - - Атомарно изменяет статус задачи. - - - - Создает Pull Request. - - - - Атомарно сливает PR, удаляет ветку и закрывает связанную задачу. - - - - Отклоняет PR и возвращает задачу разработчику с отчетом о дефектах. - - - - Добавляет комментарий к задаче. - - - - Создает новую ветку в системе контроля версий. - - - - Фиксирует все текущие изменения в рабочей директории. - - diff --git a/agent_promts/knowledge_base/ai_friendly_logging.xml b/agent_promts/knowledge_base/ai_friendly_logging.xml deleted file mode 100644 index 78fae1b..0000000 --- a/agent_promts/knowledge_base/ai_friendly_logging.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - Каждая значимая операция, проверка контракта или изменение состояния ДОЛЖНЫ - сопровождаться структурированной записью в лог для обеспечения полной - трассируемости и отлаживаемости. - - - Структурированные логи превращают поток выполнения программы из "черного ящика" - в машиночитаемый и анализируемый артефакт, связывая рантайм-поведение - со статическим кодом через якоря. - - - - - - - Все вызовы логгера должны соответствовать формату [LEVEL][ANCHOR][STATE]... - - Нарушен структурный формат лога. Ожидается: [LEVEL][ANCHOR][STATE] message. - - - - - Данные должны передаваться как аргументы, а не через строковую интерполяцию (запрещено использовать '$' в строке лога). - - Обнаружена строковая интерполяция ('$') в сообщении лога. Передавайте данные как аргументы. - - - - - Прямые вызовы логгера (logger.*, Timber.*) запрещены в модуле :domain. - - Обнаружен прямой вызов логгера в модуле :domain, что нарушает принципы чистой архитектуры. - - - - \ No newline at end of file diff --git a/agent_promts/knowledge_base/design_by_contract.xml b/agent_promts/knowledge_base/design_by_contract.xml deleted file mode 100644 index 6324852..0000000 --- a/agent_promts/knowledge_base/design_by_contract.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - Каждая публичная сущность должна иметь формальный KDoc-контракт, а предусловия - и постусловия должны быть реализованы в коде через require/check. - - - Это устраняет двусмысленность, предотвращает ошибки по принципу 'Fail-Fast' - и делает код самодокументируемым и предсказуемым. - - - - - - - Публичные функции и классы должны иметь полный KDoc-контракт. - - - - - - - - - - Отсутствует обязательный KDoc-тег контракта. - - - - - Предусловия, описанные в @param, должны проверяться через require(). - - Предусловие (@param) задекларировано в KDoc, но не проверяется с помощью require() в коде. - - - - - Постусловия, описанные в @return, должны проверяться через check(). - - Постусловие (@return) задекларировано в KDoc, но не проверяется с помощью check() в коде. - - - - - \ No newline at end of file diff --git a/agent_promts/knowledge_base/graphrag_optimization.xml b/agent_promts/knowledge_base/graphrag_optimization.xml deleted file mode 100644 index 039cc2c..0000000 --- a/agent_promts/knowledge_base/graphrag_optimization.xml +++ /dev/null @@ -1,55 +0,0 @@ - - Код должен содержать явный, машиночитаемый граф знаний в виде семантических якорей [ENTITY] и [RELATION]. - Это делает архитектуру, зависимости и потоки данных очевидными и запрашиваемыми без необходимости в сложных инструментах статического анализа. - - - - - Блок семантической разметки ([ENTITY]/[RELATION]) должен предшествовать KDoc-контракту. - - - Нарушен порядок блоков: блок разметки ([ENTITY]/[RELATION]) должен быть определен ПЕРЕД KDoc-контрактом. - - - - - Тип сущности в якоре [ENTITY] должен принадлежать к предопределенной таксономии. - - ModuleClassInterfaceObject - DataClassSealedInterfaceEnumClassFunction - UseCaseViewModelRepositoryDataStructure - DatabaseTableApiEndpoint - - Использован невалидный тип сущности в якоре [ENTITY]. - - - - - Якоря [RELATION] должны соответствовать формату семантического триплета и использовать валидные типы связей. - \w+)'\('(?P.*?)'\)\s*->\s*\[(?P\w+)\]\s*->\s*\['(?P\w+)'\('(?P.*?)'\)\]]]> - - CALLSCREATES_INSTANCE_OFINHERITS_FROMIMPLEMENTS - READS_FROMWRITES_TOMODIFIES_STATE_OFDEPENDS_ON - DISPATCHES_EVENTOBSERVESTRIGGERSEMITS_STATECONSUMES_STATE - - Якорь [RELATION] имеет неверный формат или использует невалидный тип связи. - - - - - Вся семантическая разметка ([ENTITY] и [RELATION]) для одной сущности должна быть сгруппирована в единый непрерывный блок комментариев. - Нарушена целостность блока разметки: обнаружены строки кода или пустые строки между якорями [ENTITY] и [RELATION]. - - - - \ No newline at end of file diff --git a/agent_promts/knowledge_base/kotlin/comments_and_kdoc.md b/agent_promts/knowledge_base/kotlin/comments_and_kdoc.md deleted file mode 100644 index e69de29..0000000 diff --git a/agent_promts/knowledge_base/kotlin/naming_conventions.md b/agent_promts/knowledge_base/kotlin/naming_conventions.md deleted file mode 100644 index 27d5cfa..0000000 --- a/agent_promts/knowledge_base/kotlin/naming_conventions.md +++ /dev/null @@ -1,82 +0,0 @@ -# Соглашения об именовании в Kotlin для AI - -Этот документ определяет соглашения об именовании для написания кода на Kotlin. Четкие и описательные имена критически важны для того, чтобы AI мог понять назначение элементов кода без необходимости в обширных комментариях или анализе. - -## 1. Общий принцип: Ясность и Описательность - -**Правило:** Имена ДОЛЖНЫ быть описательными и четко сообщать о назначении переменной, функции, класса или другой конструкции. Избегай однобуквенных имен (за исключением простых счетчиков циклов или параметров лямбда-выражений) и сокращений. - -**Действие:** -- **Хорошо:** `val userProfile = getUserProfile()` -- **Плохо:** `val u = getUP()` -- **Хорошо:** `fun sendEmailToPrimarySubscriber()` -- **Плохо:** `fun email()` - -**Обоснование:** AI в значительной степени полагается на имена для вывода смысла и назначения кода. Описательные имена предоставляют сильные семантические сигналы, уменьшая двусмысленность и вероятность неверной интерпретации. - -## 2. Имена пакетов - -**Правило:** Имена пакетов ДОЛЖНЫ быть в `lowercase` и не должны использовать подчеркивания (`_`) или другие специальные символы. Несколько слов должны быть соединены вместе. - -**Действие:** -- **Хорошо:** `com.homebox.lens.user.profile` -- **Плохо:** `com.homebox.lens.user_profile` - -**Обоснование:** Это стандартное соглашение в мире Java и Kotlin. Его соблюдение обеспечивает консистентность. - -## 3. Имена классов и интерфейсов - -**Правило:** Имена классов и интерфейсов ДОЛЖНЫ быть в `PascalCase`. - -**Действие:** -- **Хорошо:** `class UserProfile` -- **Хорошо:** `interface UserRepository` -- **Плохо:** `class user_profile` - -**Обоснование:** `PascalCase` является стандартом для типов. Это позволяет AI немедленно отличать типы от переменных или функций. - -## 4. Имена функций - -**Правило:** Имена функций ДОЛЖНЫ быть в `camelCase`. Обычно они должны быть глаголами или глагольными фразами. - -**Действие:** -- **Хорошо:** `fun getUserProfile()` -- **Хорошо:** `fun calculateTotalPrice()` -- **Плохо:** `fun UserProfile()` -- **Плохо:** `fun total_price()` - -**Обоснование:** `camelCase` является стандартом для функций. Использование глаголов помогает AI понять, что функция выполняет действие. - -## 5. Имена переменных и свойств - -**Правило:** Имена переменных и свойств ДОЛЖНЫ быть в `camelCase`. - -**Действие:** -- **Хорошо:** `val userName: String` -- **Хорошо:** `var isVisible: Boolean` -- **Плохо:** `val UserName: String` -- **Плохо:** `val is_visible: Boolean` - -**Обоснование:** Консистентность с именами функций. - -## 6. Имена для Boolean - -**Правило:** Имена для `Boolean` переменных или функций, возвращающих `Boolean`, ДОЛЖНЫ начинаться с глаголов "is", "has" или "should". - -**Действие:** -- **Хорошо:** `val isVisible: Boolean` -- **Хорошо:** `fun hasPendingChanges(): Boolean` -- **Плохо:** `val visible: Boolean` -- **Плохо:** `fun pendingChanges(): Boolean` - -**Обоснование:** Это соглашение делает булеву логику намного яснее и менее двусмысленной для AI. Имя читается как вопрос, чем, по сути, и является булево условие. - -## 7. Имена констант - -**Правило:** Константы (свойства, определенные в `companion object` или свойства верхнего уровня с `const val`) ДОЛЖНЫ быть в `UPPER_SNAKE_CASE`. - -**Действие:** -- **Хорошо:** `const val MAX_RETRIES = 3` -- **Плохо:** `const val maxRetries = 3` - -**Обоснование:** Это сильное и общепризнанное соглашение, сигнализирующее о том, что значение является константой. diff --git a/agent_promts/knowledge_base/kotlin/style_and_formatting.md b/agent_promts/knowledge_base/kotlin/style_and_formatting.md deleted file mode 100644 index e69de29..0000000 diff --git a/agent_promts/knowledge_base/semantic_linting.xml b/agent_promts/knowledge_base/semantic_linting.xml deleted file mode 100644 index a71ace5..0000000 --- a/agent_promts/knowledge_base/semantic_linting.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - Этот документ является единственным источником истины для правил, которые должны - соблюдаться в кодовой базе. Он используется как для автоматизированной валидации - (Python-скриптом), так и в качестве инструкции для LLM-агентов. - - - - - Каждый `.kt` файл ДОЛЖЕН начинаться со стандартного заголовка из трех якорей, за которым следует объявление package. - Заголовок служит 'паспортом' файла, позволяя инструментам мгновенно понять его расположение, имя и назначение. - - - .*?)\n//\s*\[FILE\]\s*(?P.*?)\n//\s*\[SEMANTICS\]\s*(?P.*)]]> - - - - - Содержимое якоря [SEMANTICS] ДОЛЖНО состоять из ключевых слов, выбранных из предопределенного списка (таксономии). - Устраняет неоднозначность и обеспечивает консистентность тегирования по всему проекту. - - - - uidomaindatapresentation - - - viewmodelusecaserepositoryservicescreencomponentdialogmodelentityactivityapplicationnav_hostcontrollernavigation_drawerscaffolddashboarditemlabellocationsetupthemedependenciescustom_fieldstatisticsimageattachmentitem_creationitem_detaileditem_summaryitem_updatesummaryupdate - - - networkingdatabasecachingauthenticationvalidationparsingstate_managementnavigationditestingentrypointhilttimbercomposeactionsroutescommoncolor_selectionloadinglistdetailseditlabel_managementlabels_listdialog_managementlocationssealed_stateparallel_data_loadingtimber_loggingdialogcolortypographybuilddata_transfer_objectdtoapiitem_creationitem_detaileditem_summaryitem_updatecreatemappercountuser_setupauthentication_flow - - - sealed_classsealed_interface - - - ui_logicui_statedata_modelimmutable - - - - - - Каждая ключевая сущность (class, interface, fun и т.д.) ДОЛЖНА быть обернута в парные якоря [ENTITY]...[END_ENTITY]. - Превращает плоский текстовый файл в иерархическое дерево семантических узлов для надежного парсинга AI-инструментами. - - - \w+)\('(?P.*?)'\)\]]]> - - - ) : LabelsListUiState -// [END_ENTITY: DataClass('Success')] - ]]> - - - Крупные, не относящиеся к конкретной сущности блоки файла, также должны быть обернуты в парные якоря. - Четко разграничивает секции файла, позволяя инструментам работать с ними изолированно (например, 'добавить новый импорт в блок IMPORTS'). - - - // [IMPORTS]// [END_IMPORTS] - // [CONTRACT]// [END_CONTRACT] - - - - - - - Каждый файл должен заканчиваться специальным закрывающим якорем, который сигнализирует о его полном завершении. - Служит надежным маркером конца файла, защищая от случайного усечения и упрощая парсинг. - - - - - - - - Традиционные, 'человеческие' комментарии (`// ...` или `/* ... */`) КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНЫ. - Такие комментарии являются 'семантическим шумом' для AI, неструктурированы и не могут быть использованы для автоматического анализа. - - - - - - - - Единственным исключением из правила 'NoStrayComments' является специальный, структурированный якорь для заметок между AI-агентами. - Позволяет оставлять пояснения к сложным архитектурным решениям в машиночитаемом формате. - - - - - - - - \ No newline at end of file diff --git a/agent_promts/protocols/semantic_enrichment_protocol.md b/agent_promts/protocols/semantic_enrichment_protocol.md new file mode 100644 index 0000000..29b88d6 --- /dev/null +++ b/agent_promts/protocols/semantic_enrichment_protocol.md @@ -0,0 +1,111 @@ +# Протокол Семантического Обогащения (Semantic Enrichment Protocol) +**Версия: 1.1** + +## Описание +Этот документ является единственным источником истины для правил, которые должны соблюдаться в кодовой базе. Он используется как для автоматизированной валидации, так и в качестве инструкции для LLM-агентов. + +--- + +## Правила + +### 1. Целостность Заголовка Файла (`FileHeaderIntegrity`) +Каждый `.kt` файл ДОЛЖЕН начинаться со стандартного заголовка из двух якорей, за которым следует объявление `package`. Заголовок служит 'паспортом' файла. + +**Пример:** +```kotlin +// [FILE] YourFileName.kt +// [SEMANTICS] ui, viewmodel, state_management + +package com.example.your.package.name +``` + +### 2. Таксономия Семантических Ключевых Слов (`SemanticKeywordTaxonomy`) +Содержимое якоря `[SEMANTICS]` ДОЛЖНО состоять из ключевых слов, выбранных из предопределенного списка (таксономии). + +**Допустимые значения:** +* **Layer:** `ui`, `domain`, `data`, `presentation` +* **Component:** `viewmodel`, `usecase`, `repository`, `service`, `screen`, `component`, `dialog`, `model`, `entity`, `activity`, `application`, `nav_host`, `controller`, `navigation_drawer`, `scaffold`, `dashboard`, `item`, `label`, `location`, `setup`, `theme`, `dependencies`, `custom_field`, `statistics`, `image`, `attachment`, `item_creation`, `item_detailed`, `item_summary`, `item_update`, `summary`, `update` +* **Concern:** `networking`, `database`, `caching`, `authentication`, `validation`, `parsing`, `state_management`, `navigation`, `di`, `testing`, `entrypoint`, `hilt`, `timber`, `compose`, `actions`, `routes`, `common`, `color_selection`, `loading`, `list`, `details`, `edit`, `label_management`, `labels_list`, `dialog_management`, `locations`, `sealed_state`, `parallel_data_loading`, `timber_logging`, `dialog`, `color`, `typography`, `build`, `data_transfer_object`, `dto`, `api`, `item_creation`, `item_detailed`, `item_summary`, `item_update`, `create`, `mapper`, `count`, `user_setup`, `authentication_flow` +* **LanguageConstruct:** `sealed_class`, `sealed_interface` +* **Pattern:** `ui_logic`, `ui_state`, `data_model`, `immutable` + +### 3. Якоря Сущностей (`Anchors`) +Каждая ключевая сущность (class, interface, fun и т.д.) ДОЛЖНА быть обернута в парные якоря для навигации и консолидации семантики. + +**Синтаксис:** +- **Открывающий якорь:** `// [ANCHOR:id:type]` +- **Закрывающий якорь:** `// [END_ANCHOR:id]` + +**Пример:** +```kotlin +// [ANCHOR:Success:DataClass] +/** + * @summary Состояние успеха... + */ +data class Success(val labels: List