MyTetra Share
Делитесь знаниями!
ПОЛНАЯ ИНСТРУКТУРА: Система отслеживания багов
Время создания: 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 телефоне:

  1. Подключиться к той же WiFi сети
  2. Открыть браузер
  3. Ввести адрес: http://192.168.1.75:8001/mobile
  4. (Опционально) Отсканировать QR-код

🔧 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 # Запуск сервера

Система готова к работе! 🚀

 
MyTetra Share v.0.67
Яндекс индекс цитирования