以下是一个基于分层架构和模块化设计的项目规划,使用Tkinter作为GUI框架,Playwright进行浏览器操作,SQLite作为数据库:
📂 项目结构
```
web_checker/
├── __main__.py # 程序入口
├── config.py # 配置管理
├── gui/ # 图形界面模块
│ ├── __init__.py
│ └── main_window.py
├── services/ # 业务逻辑
│ ├── __init__.py
│ ├── website_service.py
│ └── database.py
├── browser/ # 浏览器控制
│ ├── __init__.py
│ └── controller.py
└── models/ # 数据模型
├── __init__.py
└── website.py
```
1. 📝 config.py 配置文件
```python
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.parent
class Config:
DB_PATH = BASE_DIR / "data" / "web_checker.db"
BROWSER_TYPE = "chromium" # chromium, firefox, webkit
HEADLESS = False
TIMEOUT = 30000 # 30秒超时
```
2. 📦 models/website.py 数据模型
```python
from datetime import datetime
from sqlalchemy import Column, Integer, String, Boolean, DateTime
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class WebsiteVisit(Base):
__tablename__ = "website_visits"
id = Column(Integer, primary_key=True)
url = Column(String(500), nullable=False)
success = Column(Boolean, nullable=False)
timestamp = Column(DateTime, default=datetime.now)
error_message = Column(String(500))
```
3. 💾 services/database.py 数据库管理
```python
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import Config
from models.website import Base, WebsiteV