|
|||||||
|
ПОЛНАЯ ИНСТРУКТУРА: Система отслеживания багов
Время создания: 24.09.2025 23:54
Автор: alensav
Текстовые метки: ПОЛНАЯ ИНСТРУКТУРА: Система отслеживания багов
Раздел: GIT_BUG
Запись: alensav/MyTetra2/main/base/1758747277h4nmp69g2a/text.html на raw.githubusercontent.com
|
|||||||
|
|
|||||||
|
ПОЛНАЯ ИНСТРУКТУРА: Система отслеживания багов alensav (Ubuntu) + 🍊 Orange PI (Сервер) + Android 1. НАСТРОЙКА СТРУКТУРЫ КАТАЛОГОВ На alensav (Ubuntu): bash Copy Download # Открываем терминал на alensav # Создаем основной каталог проекта mkdir -p /home/alensav/my-project/bugs cd /home/alensav/my-project На Orange PI: bash Copy Download # Открываем отдельное окно терминала для Orange PI (ssh уже подключен) # Создаем каталоги на сервере mkdir -p /home/orangepi/my-project/bugs cd /home/orangepi/my-project 2. СОЗДАНИЕ ФАЙЛОВ СИСТЕМЫ На Orange PI (серверная часть): bash Copy Download # На Orange PI создаем файл сервера cat > /home/orangepi/my-project/bug-server.py << 'EOF' #!/usr/bin/env python3 import http.server import socketserver import json import os import sys from datetime import datetime PORT = 8001 BUGS_DIR = 'bugs' os.makedirs(BUGS_DIR, exist_ok=True) class BugHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): try: if self.path == '/api/bugs': self.send_response(200) self.send_header('Content-type', 'application/json; charset=utf-8') self.send_header('Access-Control-Allow-Origin', '*') self.end_headers()
bugs = [] if os.path.exists(BUGS_DIR): for filename in sorted(os.listdir(BUGS_DIR)): if filename.endswith('.md'): filepath = os.path.join(BUGS_DIR, filename) try: with open(filepath, 'r', encoding='utf-8') as f: content = f.read()
lines = content.split('\n') title = lines[0].replace('#', '').strip() if lines else 'Без названия'
status = 'Открыт' author = 'alensav' date = datetime.now().strftime('%d.%m.%Y')
for line in lines: if '**Статус:**' in line: status = line.replace('**Статус:**', '').strip() elif '**Автор:**' in line: author = line.replace('**Автор:**', '').strip() elif '**Дата:**' in line: date = line.replace('**Дата:**', '').strip()
bug_id = filename.split('-')[0] bugs.append({ 'id': bug_id, 'title': title, 'status': status, 'author': author, 'date': date, 'filename': filename })
except Exception as e: print(f"Ошибка чтения {filename}: {e}")
response = { 'success': True, 'bugs': bugs, 'count': len(bugs), 'server': 'Orange PI' } self.wfile.write(json.dumps(response, ensure_ascii=False).encode('utf-8'))
elif self.path == '/mobile': self.send_response(200) self.send_header('Content-type', 'text/html; charset=utf-8') self.end_headers()
html = '''<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>🐛 Баг-трекер</title> <style> body { font-family: Arial, sans-serif; margin: 20px; background: #f0f0f0; } .header { background: #4CAF50; color: white; padding: 20px; border-radius: 10px; text-align: center; } .bug-card { background: white; padding: 15px; margin: 10px 0; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } </style> </head> <body> <div class="header"> <h1>🐛 Баг-трекер</h1> <p>Orange PI Server • Mobile Version</p> </div> <div id="bugs"><p>Загрузка багов...</p></div>
<script> fetch('/api/bugs') .then(r => r.json()) .then(data => { const bugsHtml = data.bugs.map(bug => ` <div class="bug-card"> <h3>#${bug.id}: ${bug.title}</h3> <p>Статус: ${bug.status} | Автор: ${bug.author}</p> </div> `).join(''); document.getElementById('bugs').innerHTML = bugsHtml || '<p>Нет багов</p>'; }); </script> </body> </html>''' self.wfile.write(html.encode('utf-8'))
else: self.send_response(200) self.send_header('Content-type', 'text/html; charset=utf-8') self.end_headers() self.wfile.write(b'<h1>🐛 Bug Tracker Server</h1><p>Use <a href="/api/bugs">/api/bugs</a> or <a href="/mobile">/mobile</a></p>'.encode())
except Exception as e: print(f"Ошибка: {e}") self.send_error(500, "Server error") print("🚀 Сервер багов запускается...") print(f"📡 Порт: {PORT}") with socketserver.TCPServer(("", PORT), BugHandler) as httpd: print(f"✅ Сервер работает на http://0.0.0.0:{PORT}") httpd.serve_forever() EOF # Даем права на выполнение chmod +x /home/orangepi/my-project/bug-server.py На alensav (клиентская часть): bash Copy Download # На alensav создаем скрипт управления cat > /home/alensav/my-project/bug-tracker << 'EOF' #!/bin/bash BUGS_DIR="/home/alensav/my-project/bugs" SERVER_URL="http://192.168.1.75:8001" case "$1" in create) if [ -z "$2" ]; then echo "Использование: $0 create \"Описание бага\"" exit 1 fi
cd /home/alensav/my-project mkdir -p bugs
BUG_COUNT=$(ls bugs/*.md 2>/dev/null | wc -l) BUG_ID=$((BUG_COUNT + 1)) FILENAME="bugs/${BUG_ID}-$(echo "$2" | tr ' ' '-').md"
cat > "$FILENAME" << BUGFILE # Баг #${BUG_ID}: $2 **Статус:** ⚙️ Открыт **Автор:** alensav **Дата:** $(date +'%d.%m.%Y %H:%M') ## Описание Баг создан на главном компьютере. ## Комментарии BUGFILE echo "✅ Баг создан: $FILENAME" ;;
list) echo "📋 ЛОКАЛЬНЫЕ БАГИ:" echo "==================" for file in /home/alensav/my-project/bugs/*.md 2>/dev/null; do if [ -f "$file" ]; then ID=$(basename "$file" | cut -d'-' -f1) TITLE=$(head -n1 "$file" | sed 's/^# Баг #...: //') echo -e "${ID}:\t${TITLE}" fi done | sort -n ;;
server-status) echo "📊 СТАТУС СИСТЕМЫ:" echo "================="
# Проверка сервера echo -n "🌐 Сервер Orange PI: " if curl -s --connect-timeout 3 "$SERVER_URL/api/bugs" >/dev/null; then echo "✅ РАБОТАЕТ" echo "" curl -s "$SERVER_URL/api/bugs" | python3 -c " import json data = json.load(open(0)) print(f'📁 Багов на сервере: {data[\"count\"]}') print(f'🌐 Веб-интерфейс: $SERVER_URL') print(f'📱 Мобильная версия: $SERVER_URL/mobile') " else echo "❌ НЕДОСТУПЕН" echo "" echo "💡 Решение: Запустите сервер на Orange PI:" echo " cd /home/orangepi/my-project" echo " python3 bug-server.py" fi ;;
sync) echo "🔄 СИНХРОНИЗАЦИЯ С ORANGE PI:" rsync -av /home/alensav/my-project/bugs/ orangepi@192.168.1.75:/home/orangepi/my-project/bugs/ echo "✅ Баги синхронизированы" ;;
web) echo "🌐 ОТКРЫВАЮ ВЕБ-ИНТЕРФЕЙС..." xdg-open "$SERVER_URL/mobile" 2>/dev/null || echo "📱 Откройте: $SERVER_URL/mobile" ;;
*) echo "🐛 СИСТЕМА ОТСЛЕЖИВАНИЯ БАГОВ" echo "Главный: alensav | Сервер: Orange PI" echo "" echo "Команды:" echo " $0 create \"Описание\" - Создать баг" echo " $0 list - Список багов" echo " $0 server-status - Статус системы" echo " $0 sync - Синхронизировать" echo " $0 web - Открыть веб-интерфейс" echo "" echo "Пример:" echo " $0 create \"Ошибка компиляции\"" echo " $0 sync" echo " $0 web" ;; esac EOF chmod +x /home/alensav/my-project/bug-tracker 🚀 3. ЗАПУСК СИСТЕМЫ На Orange PI (запуск сервера): bash Copy Download # В терминале Orange PI cd /home/orangepi/my-project # Запускаем сервер (оставляем работать в foreground) python3 bug-server.py Окно Orange PI оставляем открытым! Сервер должен продолжать работать. На alensav (проверка работы): bash Copy Download # В терминале alensav cd /home/alensav/my-project # Проверяем статус системы ./bug-tracker server-status 🎯 4. РАБОЧИЙ ПРОЦЕСС (ЕЖЕДНЕВНОЕ ИСПОЛЬЗОВАНИЕ) Утро - проверка багов на Orange PI: bash Copy Download # На Orange PI (если нужно проверить логи) cd /home/orangepi/my-project # Сервер уже работает, просто проверяем в браузере с телефона На alensav - создание багов: bash Copy Download # На alensav создаем новый баг cd /home/alensav/my-project ./bug-tracker create "Ошибка сегментации при загрузке модуля" # Синхронизируем с сервером ./bug-tracker sync # Проверяем ./bug-tracker list Проверка на Android телефоне: text Copy Download Открыть браузер на Android и перейти: http://192.168.1.75:8001/mobile 📱 5. МОБИЛЬНЫЙ ДОСТУП QR-код для быстрого доступа (опционально): bash Copy Download # На Orange PI создаем QR-код cd /home/orangepi/my-project cat > generate-qr.py << 'EOF' #!/usr/bin/env python3 import qrcode url = "http://192.168.1.75:8001/mobile" qr = qrcode.make(url) qr.save("bug-tracker-qr.png") print(f"✅ QR-код создан: bug-tracker-qr.png") print(f"📱 URL: {url}") EOF python3 generate-qr.py На Android телефоне:
🔧 6. УСТРАНЕНИЕ ПРОБЛЕМ Если сервер не доступен: bash Copy Download # На Orange PI проверяем: cd /home/orangepi/my-project ps aux | grep bug-server.py # Если не запущен, запускаем: python3 bug-server.py Если нет связи между компьютерами: bash Copy Download # На alensav проверяем связь: ping 192.168.1.75 # Проверяем SSH: ssh orangepi@192.168.1.75 "echo OK" Если баги не отображаются на телефоне: bash Copy Download # На alensav синхронизируем: cd /home/alensav/my-project ./bug-tracker sync # На Orange PI проверяем файлы: cd /home/orangepi/my-project ls -la bugs/ 📁 7. СТРУКТУРА КАТАЛОГОВ (ИТОГ) На alensav: text Copy Download /home/alensav/my-project/ ├── bug-tracker # Скрипт управления └── bugs/ # Локальная копия багов ├── 001-*.md └── 002-*.md На Orange PI: text Copy Download /home/orangepi/my-project/ ├── bug-server.py # Веб-сервер ├── bugs/ # Основная папка багов │ ├── 001-*.md │ └── 002-*.md └── server.log # Логи сервера ✅ 8. ТЕСТОВЫЙ СЦЕНАРИЙ Шаг 1: Запуск сервера bash Copy Download # На Orange PI: cd /home/orangepi/my-project python3 bug-server.py Шаг 2: Создание тестового бага bash Copy Download # На alensav: cd /home/alensav/my-project ./bug-tracker create "Тестовый баг для проверки системы" ./bug-tracker sync Шаг 3: Проверка bash Copy Download # На alensav: ./bug-tracker server-status ./bug-tracker web Шаг 4: Проверка на телефоне text Copy Download Открыть на Android: http://192.168.1.75:8001/mobile 🎯 КОМАНДЫ ДЛЯ ЗАПОМНИНАНИЯ На alensav (основные): bash Copy Download cd /home/alensav/my-project ./bug-tracker create "Описание бага" # Создать ./bug-tracker list # Посмотреть ./bug-tracker sync # Синхронизировать ./bug-tracker server-status # Проверить сервер На Orange PI (сервер): bash Copy Download cd /home/orangepi/my-project python3 bug-server.py # Запуск сервера Система готова к работе! 🚀 New chat |
|||||||
|
Так же в этом разделе:
|
|||||||
|
|||||||
|
|||||||
|