# 测试管理系统 **Repository Path**: nicolerli_admin/test_manage_system ## Basic Information - **Project Name**: 测试管理系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-13 - **Last Updated**: 2025-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 链接管理系统 一个简单的链接管理系统,用于管理和展示不同环境(测试/正式)下的链接。支持H5小说、H5影视和H5影视(带video)三种类型的链接管理。 ## 功能特性 - 多环境支持(测试环境/正式环境) - 多类型链接管理(H5小说/H5影视/H5影视带video) - 每种类型独立配置域名 - 支持单条和批量编辑 - 链接自动补全域名 - 一键复制完整链接 - 美观的UI界面 ## 技术栈 - 前端:纯原生 HTML/CSS/JavaScript - 后端:Python Flask - 数据存储:JSON文件 - 服务器:Nginx ## 部署说明 1. 安装依赖: ```bash pip install -r requirements.txt ``` 2. 启动后端服务: ```bash python server.py ``` 3. 配置Nginx: ```nginx server { listen 80; server_name your_domain; location /test/h5 { alias /path/to/your/project; try_files $uri $uri/ /test/h5/index.html; index index.html; } location /api/ { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 4. 重新加载Nginx配置: ```bash nginx -t nginx -s reload ``` ## 使用说明 1. 管理后台(admin.html): - 选择链接类型(H5小说/H5影视/H5影视带video) - 配置对应类型的测试和正式环境域名 - 添加/编辑/删除链接 - 支持批量导入链接 2. 查看页面(view.html): - 通过URL参数指定类型,如:`view.html?type=novel` - 切换测试/正式环境查看链接 - 点击链接直接访问 - 一键复制完整链接 ## 目录结构 ``` . ├── admin.html # 管理后台页面 ├── view.html # 链接查看页面 ├── server.py # 后端服务 ├── requirements.txt # Python依赖 ├── data/ # 数据存储目录 │ ├── novel_domains.json # 小说域名配置 │ ├── novel_links.json # 小说链接数据 │ ├── video_domains.json # 影视域名配置 │ ├── video_links.json # 影视链接数据 │ ├── video_player_domains.json # 影视(带video)域名配置 │ └── video_player_links.json # 影视(带video)链接数据 └── README.md # 项目说明文档 ``` ## 注意事项 1. 确保 data 目录有写入权限 2. 后端服务默认运行在 5000 端口 3. 建议使用 supervisor 或 systemd 管理后端服务 4. 首次使用需要在管理后台配置域名 ## 如何运行 1. 服务端 nohup python3 server.py > /dev/null 2> server.error.log & //118服务器上 nohup /home/fun/miniconda3/bin/python server.py > /dev/null 2> server.error.log & 2. 页面 http://172.17.3.118/test/h5/index.html ##链接展示页面 http://172.17.3.118/test/h5/admin.html ##链接管理页面 ## 技术实现 ### admin.html 函数调用关系分析 #### 全局状态变量 - `currentType` - 当前链接类型 - `currentEnv` - 当前环境(test/prod) - `currentMode` - 当前编辑模式(single/batch) #### 核心函数分类 **1. 数据获取函数** - `getDomains()` - 获取域名配置 - `getLinks()` - 获取链接数据 **2. 数据操作函数** - `saveLinks(links)` - 保存链接数据 - `addLink()` - 添加链接 - `updateLink(index, field, value)` - 更新链接 - `deleteLink(index)` - 删除链接 - `updateBatch()` - 批量更新 **3. 配置管理函数** - `updateDomain(env, domain)` - 更新域名配置 - `updatePath(level, value)` - 更新路径配置 **4. 界面切换函数** - `switchType(type)` - 切换链接类型 - `switchEnv(env)` - 切换环境 - `switchEditMode(mode)` - 切换编辑模式 - `updateTabs(className, value)` - 更新标签页状态 **5. 工具函数** - `processUrl(url)` - 处理URL格式 - `generateFullUrl(path)` - 生成完整URL - `showToast(message)` - 显示提示信息 - `loadData()` - 加载数据到界面 - `initDomains()` - 初始化域名配置 #### 函数调用关系图 ```mermaid graph TD A[页面初始化] --> B[initDomains] A --> C[loadData] B --> D[getDomains] C --> E[getLinks] C --> F[generateFullUrl] F --> D G[switchType] --> H[updateTabs] G --> D G --> C I[switchEnv] --> H I --> C J[switchEditMode] --> H J --> E J --> F K[updateDomain] --> D K --> L[saveLinks] K --> M[showToast] K --> C N[updatePath] --> D N --> L N --> M N --> C O[addLink] --> P[getLinks] O --> Q[processUrl] O --> L O --> C O --> M R[updateLink] --> P R --> Q R --> L S[deleteLink] --> P S --> L S --> C T[updateBatch] --> Q T --> L T --> M L --> M ``` #### 主要调用流程 **1. 初始化流程** ``` 页面加载 → initDomains() → getDomains() → 设置域名输入框 页面加载 → loadData() → getLinks() + generateFullUrl() → 渲染链接列表 ``` **2. 切换操作流程** ``` switchType() → updateTabs() + getDomains() + loadData() switchEnv() → updateTabs() + loadData() switchEditMode() → updateTabs() + getLinks() + generateFullUrl() ``` **3. 数据操作流程** ``` addLink() → getLinks() + processUrl() + saveLinks() + loadData() updateLink() → getLinks() + processUrl() + saveLinks() deleteLink() → getLinks() + saveLinks() + loadData() updateBatch() → processUrl() + saveLinks() ``` **4. 配置更新流程** ``` updateDomain() → getDomains() + saveLinks() + loadData() updatePath() → getDomains() + saveLinks() + loadData() ``` #### 关键依赖关系 1. **数据层依赖**:所有数据操作都依赖 `getLinks()` 和 `saveLinks()` 2. **配置层依赖**:域名和路径配置都依赖 `getDomains()` 3. **UI层依赖**:界面更新都依赖 `loadData()` 和 `showToast()` 4. **URL处理依赖**:URL相关操作都依赖 `processUrl()` 和 `generateFullUrl()` #### 架构特点 - **数据流清晰**:数据获取、处理、保存分离明确 - **UI更新分离**:界面更新与数据操作解耦 - **配置管理独立**:域名和路径配置独立管理 - **错误处理完善**:各函数都有适当的错误处理和用户提示