Промпт для технического изучения кодовой базы и адаптации разработчика
Контекст: Я — разработчик, недавно присоединившийся к проекту, и использую тебя, ИИ-помощника по программированию, чтобы глубоко разобраться в существующей кодовой базе. Моя…
**Контекст:**
Я — разработчик, недавно присоединившийся к проекту, и использую тебя, ИИ-помощника по программированию, чтобы глубоко разобраться в существующей кодовой базе. Моя цель — как можно скорее начать продуктивно работать и принимать обоснованные технические решения, опираясь на надёжное понимание текущей системы.
**Главная цель:**
Проанализируй исходный код, предоставленный в этом проекте или рабочей области, и создай **подробный, понятный и хорошо структурированный документ Markdown**, объясняющий архитектуру системы, её возможности, основные потоки выполнения, ключевые компоненты и технологический стек.
Этот документ должен служить **техническим руководством для адаптации нового разработчика**.
По возможности улучшай навигацию, предоставляя **прямые ссылки на соответствующие файлы, классы и функции**, а также примеры кода, помогающие прояснить концепции.
---
## **Подробные инструкции — освети следующие пункты:**
### 1. **Обзор README и файлов с инструкциями**
- Найди файлы, такие как `README.md`, `LEIAME.md`, `CONTRIBUTING.md`, или аналогичную документацию.
- Дай объективный, но подробный обзор разделов, наиболее важных для нового разработчика, включая:
- Общие сведения о проекте.
- Как настроить и запустить систему локально.
- Принятые стандарты и соглашения.
- Правила участия в разработке, если доступны.
---
### 2. **Подробный технологический стек**
- Определи и перечисли полный технологический стек проекта:
- Языки программирования, включая версии, когда их можно определить, например из `package.json`, `pom.xml`, `.tool-versions`, `requirements.txt`, `build.gradle` и т. д.
- Основные фреймворки: бэкенд, фронтенд и прочее, например Spring Boot, .NET, React, Angular, Vue, Django, Rails.
- Базы данных:
- Тип (SQL / NoSQL).
- Название (PostgreSQL, MongoDB и т. д.).
- Основной архитектурный стиль, например монолит, микросервисы, Serverless, MVC, MVVM, Clean Architecture.
- Облачная платформа, если её можно определить по SDK или конфигурации: AWS, Azure, GCP.
- Инструменты сборки и менеджеры пакетов: Maven, Gradle, npm, yarn, pip.
- Любые другие важные технологии: кэширование, брокеры сообщений, контейнеризация — Docker, Kubernetes.
- **Укажи подтверждающие каждый пункт конфигурационные файлы и дай ссылки на них.**
---
### 3. **Обзор и назначение системы**
- Ясно опиши, что делает система и для кого она предназначена.
- Какие проблемы она решает?
- Перечисли основные функции.
- По возможности соотнеси систему с соответствующими предметными областями бизнеса.
- Дай общее описание главных возможностей.
---
### 4. **Структура проекта и рекомендации по изучению**
- **Точка входа:**
С чего мне начать изучение кода? Определи основные точки входа, например `main.go`, `index.js`, `Program.cs`, `app.py`, `Application.java`.
**Дай прямые ссылки на эти файлы.**
- **Общая организация:**
Объясни общую структуру папок и файлов. Выдели важные соглашения.
**Используй примеры реальных названий папок и файлов.**
- **Конфигурация:**
Есть ли основные конфигурационные файлы, например `config.yaml`, `.env`, `appsettings.json`?
Какие настройки критически важны?
**Дай ссылки.**
- **Рекомендации по изучению:**
Предложи порядок или набор ключевых файлов и модулей, которые следует прочитать первыми, чтобы быстро понять основные концепции проекта.
---
### 5. **Ключевые компоненты**
- Определи и опиши наиболее важные или центральные модули, классы, функции или сервисы.
- Объясни ответственность каждого компонента.
- Опиши их обязанности и взаимозависимости.
- Для каждого компонента:
- Включи показательный фрагмент кода.
- Дай ссылку на место его реализации.
- **По возможности предоставляй прямые ссылки и примеры кода.**
---
### 6. **Потоки выполнения и данных**
- Опиши наиболее распространённые или критически важные рабочие процессы либо бизнес-процессы, например обработку заказов или аутентификацию пользователей.
- Объясни, как данные проходят через систему:
- Где данные сохраняются.
- Как они читаются, изменяются и распространяются.
- **По возможности иллюстрируй примерами и ссылайся на соответствующие функции или классы.**
#### 6.1 **Обзор схемы базы данных, если применимо**
- Для приложений, интенсивно работающих с данными:
- Определи основные сущности, таблицы и коллекции.
- Опиши их главные связи.
- Основывайся на моделях ORM, миграциях или файлах схем, если они доступны.
---
### 7. **Зависимости и интеграции**
- **Зависимости:**
Перечисли основные используемые внешние библиотеки, фреймворки и SDK.
Кратко объясни роль каждого из них.
**Дай ссылки на места их настройки или наиболее частого использования.**
- **Интеграции:**
Определи и объясни интеграции с внешними сервисами, дополнительными базами данных, сторонними API, брокерами сообщений и т. д.
Как происходит обмен данными?
**Укажи отвечающие за это модули и классы и добавь ссылки.**
#### 7.1 **Документация API, если применимо**
- Если проект предоставляет API:
- Есть ли признаки использования инструментов или стандартов документирования API, например Swagger/OpenAPI, Javadoc, строк документации для отдельных конечных точек?
- Где можно найти эту документацию или как её сгенерировать?
---
### 8. **Диаграммы**
- Создай высокоуровневые диаграммы для визуализации архитектуры и поведения системы:
- Диаграмму компонентов с выделением основных модулей и их взаимодействий.
- Диаграмму потоков данных, показывающую движение информации через систему.
- Диаграмму классов с ключевыми классами и связями, если применимо.
- Упрощённую диаграмму развёртывания: где работают компоненты, если это можно определить.
- Упрощённую диаграмму инфраструктуры и развёртывания, если сведения об инфраструктуре очевидны.
- **Создавай эти диаграммы с помощью синтаксиса Mermaid внутри файла Markdown.**
- Диаграммы должны быть **высокоуровневыми**; избыточная детализация не требуется.
---
### 9. **Тестирование**
- Есть ли автоматизированные тесты?
- Модульные тесты.
- Интеграционные тесты.
- Сквозные тесты (E2E).
- Где они расположены в проекте?
- Какие фреймворки тестирования используются?
- Как обычно выполняются тесты?
- Как запустить тесты локально?
- Есть ли стратегия CI/CD, включающая тесты?
---
### 10. **Обработка ошибок и журналирование**
- Как приложение обычно обрабатывает ошибки?
- Есть ли стандартный шаблон, например глобальное middleware или пользовательские исключения?
- Какая библиотека журналирования используется?
- Есть ли стандартный формат журналов?
- Видна ли интеграция с инструментами мониторинга, например Datadog или Sentry?
---
### 11. **Вопросы безопасности**
- Есть ли в коде очевидные механизмы безопасности?
- Аутентификация.
- Авторизация через middleware или фильтры.
- Проверка входных данных.
- Широко ли используются специальные библиотеки безопасности, например Spring Security, Passport.js или библиотеки JWT?
- Есть ли заслуживающие внимания практики безопасности?
- Управление секретами.
- Защита от распространённых атак.
---
### 12. **Другие важные наблюдения, включая сборку и развёртывание**
- Есть ли файлы, связанные со **сборкой или развёртыванием**?
- `Dockerfile`.
- `docker-compose.yml`.
- Скрипты сборки и развёртывания.
- Конфигурационные файлы CI/CD, например `.github/workflows/`, `.gitlab-ci.yml`.
- Что эти файлы говорят о том, как приложение собирается и развёртывается?
- Есть ли что-нибудь ещё принципиально важное или особенно полезное для нового разработчика?
- Известный технический долг, упомянутый в комментариях.
- Необычные шаблоны проектирования.
- Важные соглашения о написании кода.
- Замечания о производительности.
---
## **Формат конечного результата**
- Сформируй полный ответ как **хорошо оформленный документ Markdown (`.md`)**.
- Используй **понятный и прямой язык**.
- Организуй содержимое с помощью **заголовков и подзаголовков** согласно пронумерованным разделам выше.
- **Включи уместные фрагменты кода** — короткие и показательные.
- **Включай кликабельные ссылки** на файлы, функции, классы и определения при каждом упоминании конкретного элемента кода.
- Для удобства чтения структурируй документ по пронумерованным разделам выше.
**По возможности:**
- Включай **кликабельные ссылки** на файлы, функции и классы.
- Показывай **короткие показательные фрагменты кода**.
- Используй **маркированные списки или таблицы** для перечислений.
---
### **ВАЖНО**
Анализ должен учитывать **ВСЕ файлы проекта**.
Прочитай и изучи **все необходимые файлы**, чтобы полностью выполнить эту задачу и получить целостное понимание системы.
---
### **Действие**
Проанализируй исходный код, который сейчас доступен в моей среде или рабочей области, и создай документ Markdown в соответствии с запросом.
Имя выходного файла должно соответствовать следующему формату:
`<yyyy-mm-dd-project-name-app-dev-discovery_cursor.md>`Текст доступен бесплатно по CC0 1.0. Источники и лицензии.
Что сделать после копирования
Вставьте промпт в нейросеть, добавьте свои вводные и выберите формат ответа. Для фото или видео понадобится модель с поддержкой этой задачи. Проверьте результат и уточните запрос при необходимости.