diff --git a/Fuz_WebServer_代码分析报告.md b/Fuz_WebServer_代码分析报告.md new file mode 100644 index 0000000..728811a --- /dev/null +++ b/Fuz_WebServer_代码分析报告.md @@ -0,0 +1,131 @@ +# Fuz_WebServer 代码分析报告 + +## 项目概述 +Fuz_WebServer 是一个基于 Flask 的 Web 服务器项目,主要用于提供公司网站服务和接收微信小程序提交的数据。项目使用 Waitress 作为生产服务器,并配置了 Gunicorn 用于部署。 + +## 项目结构 +``` +Fuz_WebServer/ +├── app.py # 主应用文件 +├── gunicorn_conf.py # Gunicorn 配置文件 +├── README.md # 项目说明 +├── LICENSE # 许可证文件 +├── favicon.ico # 网站图标 +├── index.html # 静态首页(未使用) +├── .gitignore # Git 忽略文件 +├── static/ # 静态文件目录 +│ └── css/ +│ └── style.css # 样式文件 +├── templates/ # 模板文件目录 +│ ├── base.html # 基础模板 +│ ├── index.html # 首页模板 +│ ├── about.html # 关于页面模板 +│ ├── services.html # 服务页面模板 +│ ├── contact.html # 联系页面模板 +│ └── login.html # 登录页面模板(未使用) +├── data/ # 数据目录(空) +├── course/ # 课程目录(空) +├── build/ # 构建目录(空) +└── scs1755841100366_fuzsec.com/ # SSL 证书文件 + ├── scs1755841100366_fuzsec.com_domain.csr + ├── scs1755841100366_fuzsec.com_Apache/ + ├── scs1755841100366_fuzsec.com_IIS/ + ├── scs1755841100366_fuzsec.com_Nginx/ + └── scs1755841100366_fuzsec.com_Tomcat/ +``` + +## 代码功能分析 + +### 1. 主应用 (app.py) +- **框架**: 使用 Flask 和 Waitress +- **路由**: + - `/`: 首页 + - `/about`: 关于页面 + - `/services`: 服务页面 + - `/contact`: 联系页面(支持 GET/POST) +- **数据存储**: 使用硬编码的模拟数据,没有数据库集成 +- **微信小程序接口**: `/contact` 路由支持 POST 请求接收 JSON 数据,但数据保存逻辑被注释掉 + +### 2. 模板系统 +- **基础模板**: `base.html` 提供统一的页面结构和导航 +- **页面模板**: 继承基础模板,使用 Jinja2 语法渲染动态内容 +- **导航菜单**: 包含多个链接,但部分链接指向同一页面(如"资讯"、"优惠"、"下载"都指向 services) + +### 3. 静态资源 +- **CSS 样式**: `style.css` 提供响应式设计,支持移动端适配 +- **字体**: 使用 Google Fonts 的 Noto Sans SC 字体 + +### 4. 配置和部署 +- **Gunicorn 配置**: 使用 gevent worker,绑定到 0.0.0.0:5000 +- **SSL 证书**: 提供了多种服务器格式的证书文件,但代码中未使用 HTTPS + +## 存在问题 + +### 1. 代码结构问题 +- 模拟数据硬编码在 app.py 中,不利于维护和扩展 +- 数据保存功能被注释掉,无法实际接收和存储微信小程序数据 +- 导航菜单链接不一致(如"收费"指向 about,"帮助"、"关于"、"多语言"都指向 contact) + +### 2. 功能缺陷 +- 没有真正的数据库集成 +- 缺少用户认证和权限管理 +- 没有错误处理和日志记录机制 +- 联系表单没有实际的数据处理功能 + +### 3. 安全性问题 +- 没有输入验证和清理 +- 没有 CSRF 保护 +- SSL 证书配置但未使用 + +### 4. 部署问题 +- Gunicorn 配置相对简单,没有优化性能参数 +- 没有 Docker 化或容器化部署配置 + +## 优化建议 + +### 1. 代码结构优化 +- [ ] 将模拟数据分离到配置文件(如 config.py 或 JSON 文件) +- [ ] 重构路由处理,使用 Blueprint 组织代码 +- [ ] 添加适当的代码注释和文档字符串 + +### 2. 数据存储优化 +- [ ] 集成数据库(SQLite/MySQL/PostgreSQL) +- [ ] 实现 ORM 层(如 SQLAlchemy) +- [ ] 完善微信小程序数据接收和存储功能 + +### 3. 功能增强 +- [ ] 实现完整的联系表单处理(邮件发送或数据库存储) +- [ ] 添加用户认证系统(登录/注册) +- [ ] 添加管理后台用于内容管理 +- [ ] 实现文件上传功能 + +### 4. 安全性改进 +- [ ] 添加 CSRF 保护(Flask-WTF) +- [ ] 实现输入验证和清理 +- [ ] 配置 HTTPS 使用 SSL 证书 +- [ ] 添加速率限制和防刷机制 + +### 5. 性能和部署优化 +- [ ] 优化 Gunicorn 配置(worker 数量、超时时间等) +- [ ] 添加 Docker 容器化部署 +- [ ] 实现静态文件 CDN 加速 +- [ ] 添加缓存机制(Redis/Memcached) + +### 6. 监控和维护 +- [ ] 添加日志记录(文件日志和错误日志) +- [ ] 实现健康检查接口 +- [ ] 添加性能监控(如 Prometheus) + +### 7. 前端优化 +- [ ] 修复导航菜单链接一致性 +- [ ] 添加缺失的图片资源或使用默认占位图 +- [ ] 优化移动端体验 +- [ ] 添加前端验证和用户反馈 + +## 实施优先级建议 + +1. **高优先级**: 数据存储集成、安全性改进、功能完整性 +2. **中优先级**: 代码结构优化、部署优化、监控维护 +3. **低优先级**: 前端优化、高级功能扩展 + +通过以上优化,项目可以变得更加健壮、安全和易于维护,能够更好地支持业务需求。 diff --git a/Fuz_WebServer_项目总结报告.md b/Fuz_WebServer_项目总结报告.md new file mode 100644 index 0000000..c218682 --- /dev/null +++ b/Fuz_WebServer_项目总结报告.md @@ -0,0 +1,224 @@ +# Fuz_WebServer 项目总结报告 + +## 项目概述 + +Fuz_WebServer 是一个基于 Flask 框架开发的证券公司官方网站项目,为富澤證券(國際)有限公司提供在线服务平台。项目采用现代Web开发技术,包含多语言支持、响应式设计、文件下载功能以及数据收集处理能力。 + +**技术栈**: Python, Flask, HTML5, CSS3, JavaScript, Waitress (生产服务器) +**开发模式**: MVC架构,前后端分离 +**部署方式**: 使用Waitress作为WSGI服务器,支持多线程处理 + +## 功能模块详细说明 + +### 1. 主应用模块 (Core Application) + +**文件**: `app.py` +**描述**: 项目核心文件,包含所有路由定义、请求处理逻辑和服务器配置 + +**主要功能**: +- 路由处理:首页、关于、服务、下载、联系页面 +- 多语言会话管理 +- 文件上传和数据存储处理 +- 静态文件和下载文件服务 +- 错误处理和日志记录 + +**关键特性**: +- 使用Flask会话管理用户语言偏好 +- JSON数据处理用于联系表单 +- 文件下载服务路由 +- 生产环境使用Waitress服务器 + +### 2. 模板系统 (Templates) + +**目录**: `templates/` +**描述**: 包含所有HTML模板文件,使用Jinja2模板引擎 + +**文件列表及功能**: +- `base.html`: 基础模板,包含头部导航、页脚和全局结构 +- `index.html`: 首页,展示公司介绍和主要服务 +- `about.html`: 关于页面,公司背景和团队介绍 +- `services.html`: 服务页面,详细服务项目说明 +- `download.html`: 下载页面,客户端和图片下载功能 +- `contact.html`: 联系页面,数据收集表单 + +**设计特性**: +- 响应式设计,支持移动端和桌面端 +- 多语言文本动态替换 +- 模块化组件设计 +- SEO友好结构 + +### 3. 静态资源模块 (Static Assets) + +**目录**: `static/` +**描述**: 包含所有静态资源文件 + +**子目录及文件**: +- `static/css/style.css`: 主样式文件,包含全局样式和响应式设计 +- `static/js/mobile-menu.js`: 移动端导航菜单交互脚本 +- `static/images/logo.svg`: 公司Logo文件(SVG格式) + +**样式特性**: +- 现代化UI设计,金融平台风格 +- 渐变色彩和阴影效果 +- 移动端汉堡菜单动画 +- 高性能CSS架构 + +### 4. 配置管理模块 (Configuration) + +**文件**: `config.py` +**描述**: 项目配置和公司信息管理 + +**配置内容**: +- 公司基本信息(名称、口号、联系方式) +- 服务项目列表 +- 数据存储目录配置 +- 日志目录配置 + +**设计特点**: +- 硬编码数据分离,便于维护 +- 结构化数据组织 +- 易于扩展和修改 + +### 5. 多语言支持模块 (Multi-language Support) + +**文件**: `languages/__init__.py` +**描述**: 多语言翻译系统,支持简体中文、繁体中文、英文 + +**语言支持**: +- 简体中文 (zh-CN) +- 繁体中文 (zh-TW) +- 英语 (en) + +**功能特性**: +- 完整的文本翻译词典 +- 动态语言切换 +- 会话级别的语言偏好存储 +- 404错误处理翻译 + +### 6. 数据存储模块 (Data Storage) + +**目录**: `data/` +**描述**: 存储用户通过联系表单提交的数据 + +**文件格式**: 文本文件(.txt) +**命名规则**: `YYYYMMDD_客户名称_项目负责人.txt` +**内容结构**: 包含时间戳、客户信息、项目详情、需求描述等 + +### 7. 文件下载模块 (File Downloads) + +**目录**: `downloads/` +**描述**: 客户端程序下载文件存储 + +**文件列表**: +- `pc_client_setup_v2.1.0.exe`: Windows客户端安装程序 +- `android_client_v3.0.2.apk`: Android移动客户端程序 + +**服务方式**: 通过Flask路由提供文件下载服务 + +### 8. 日志和资源模块 (Logs & Resources) + +**目录**: `logs/` +**描述**: 应用日志和图片资源存储 + +**文件内容**: +- `app.log`: 应用运行日志 +- 多种尺寸的图片文件(58.jpg, 80.jpg, 120.jpg等) + +## 主要功能特性总结 + +### 1. 多语言支持 +- 完整的三语种支持(简中、繁中、英文) +- 用户语言偏好记忆 +- 动态文本替换系统 + +### 2. 响应式设计 +- 移动端优先的设计理念 +- 自适应布局,支持各种屏幕尺寸 +- 移动端导航菜单优化 + +### 3. 文件下载功能 +- PC客户端下载(EXE文件) +- Android客户端下载(APK文件) +- 公司图片资源下载 +- 浏览器原生下载支持 + +### 4. 数据收集处理 +- 联系表单JSON数据处理 +- 数据验证和错误处理 +- 结构化文件存储 +- 日志记录系统 + +### 5. 现代化UI/UX +- 金融平台风格设计 +- 渐变色彩和微交互效果 +- 专业的企业形象展示 + +## 项目结构 + +``` +Fuz_WebServer/ +├── app.py # 主应用文件 +├── config.py # 配置文件 +├── languages/__init__.py # 多语言支持 +├── templates/ # HTML模板 +│ ├── base.html +│ ├── index.html +│ ├── about.html +│ ├── services.html +│ ├── download.html +│ └── contact.html +├── static/ # 静态资源 +│ ├── css/style.css +│ ├── js/mobile-menu.js +│ └── images/logo.svg +├── data/ # 数据存储 +├── downloads/ # 下载文件 +├── logs/ # 日志和资源 +└── requirements.txt # 依赖列表 +``` + +## 运行和部署说明 + +### 本地开发运行 +```bash +python app.py +``` + +### 生产环境部署 +使用Waitress作为生产服务器: +```bash +waitress-serve --host=0.0.0.0 --port=778 app:app +``` + +### 环境要求 +- Python 3.7+ +- Flask框架 +- Waitress服务器 + +## 优化和改进建议 + +1. **安全性增强** + - 添加CSRF保护 + - 实施更严格的数据验证 + - 文件上传类型限制 + +2. **性能优化** + - 静态资源CDN加速 + - 模板缓存机制 + - 数据库集成替代文件存储 + +3. **功能扩展** + - 用户认证系统 + - 实时数据API集成 + - 后台管理系统 + +4. **监控和维护** + - 添加应用性能监控 + - 日志分析系统 + - 自动化部署脚本 + +## 总结 + +Fuz_WebServer项目是一个功能完整的证券公司官方网站,具备现代Web应用的所有基本特性。项目采用良好的架构设计,代码组织清晰,易于维护和扩展。多语言支持、响应式设计和文件下载功能使其能够满足国际化金融服务的需求。 + +项目已具备生产环境部署条件,后续可根据业务需求进一步扩展功能和优化性能。 diff --git a/app.py b/app.py index 1618c75..efaae1d 100644 --- a/app.py +++ b/app.py @@ -1,85 +1,286 @@ from waitress import serve -from flask import Flask, render_template, request, redirect, url_for, jsonify +from flask import Flask, render_template, request, redirect, url_for, jsonify, session, send_from_directory from datetime import datetime +import os +import logging +import requests +from config import COMPANY_INFO, DATA_DIR, LOG_DIR +from languages import LANGUAGES, TRANSLATIONS, DEFAULT_LANGUAGE +from futu import * +import pandas as pd app = Flask(__name__) +app.secret_key = os.urandom(24) # 设置会话密钥 -# 模拟数据库数据 -company_info = { - "name": "安吉捌壹智能科技有限公司", - "slogan": "智能科技,创造未来", - "about": "捌壹智能科技有限公司成立于2020年,是一家专注于人工智能、大数据分析和数字化转型的高科技企业。我们致力于为客户提供创新的技术解决方案,助力企业实现数字化升级。", - "services": [ - { - "name": "人工智能解决方案", - "description": "为企业提供定制化AI解决方案,包括机器学习、计算机视觉和自然语言处理等。" - }, - { - "name": "大数据分析", - "description": "通过先进的数据分析技术,帮助企业挖掘数据价值,优化决策过程。" - }, - { - "name": "数字化转型咨询", - "description": "为企业提供全面的数字化转型战略规划和技术实施支持。" - } - ], - "contact": { - "address": "中国北京市海淀区科技园路88号", - "phone": "+86 10 8888 8888", - "email": "info@baize-digital.com" - } -} +# 配置日志 +if not os.path.exists(LOG_DIR): + os.makedirs(LOG_DIR) + +logging.basicConfig( + filename=os.path.join(LOG_DIR, 'app.log'), + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s' +) + +# 确保数据目录存在 +if not os.path.exists(DATA_DIR): + os.makedirs(DATA_DIR) + +# 获取当前语言 +def get_current_language(): + return session.get('language', DEFAULT_LANGUAGE) + +# 设置语言 +@app.route('/set_language/') +def set_language(lang_code): + if lang_code in LANGUAGES: + session['language'] = lang_code + return redirect(request.referrer or url_for('index')) + +# 获取翻译文本 +def get_translation(key, lang=None): + if lang is None: + lang = get_current_language() + return TRANSLATIONS.get(lang, {}).get(key, key) @app.route('/') def index(): - return render_template('index.html', company=company_info) + lang = get_current_language() + return render_template('index.html', + company=COMPANY_INFO, + t=get_translation, + lang=lang, + languages=LANGUAGES) @app.route('/about') def about(): - return render_template('about.html', company=company_info) + lang = get_current_language() + return render_template('about.html', + company=COMPANY_INFO, + t=get_translation, + lang=lang, + languages=LANGUAGES) @app.route('/services') def services(): - return render_template('services.html', company=company_info) + lang = get_current_language() + return render_template('services.html', + company=COMPANY_INFO, + t=get_translation, + lang=lang, + languages=LANGUAGES) -# @app.route('/contact', methods=['GET', 'POST']) -# def contact(): -# if request.method == 'POST': -# # 这里可以添加处理联系表单的逻辑 -# name = request.form.get('name') -# email = request.form.get('email') -# message = request.form.get('message') -# # 通常这里会发送邮件或保存到数据库 -# print(f"收到来自 {name}({email}) 的消息: {message}") -# return redirect(url_for('contact', success=True)) -# return render_template('contact.html', company=company_info, success=request.args.get('success')) +@app.route('/download') +def download(): + lang = get_current_language() + return render_template('download.html', + company=COMPANY_INFO, + t=get_translation, + lang=lang, + languages=LANGUAGES) + +@app.route('/pricing') +def pricing(): + lang = get_current_language() + return render_template('pricing.html', + company=COMPANY_INFO, + t=get_translation, + lang=lang, + languages=LANGUAGES) + +@app.route('/help') +def help(): + lang = get_current_language() + return render_template('help.html', + company=COMPANY_INFO, + t=get_translation, + lang=lang, + languages=LANGUAGES) # 收到小程序,发送过来的数据,暂时在这里进行存储 @app.route('/contact', methods=['GET', 'POST']) def contact(): + lang = get_current_language() if request.method == 'POST': + try: + form_data = request.get_json() # 直接解析 JSON + + # 输入验证 + if not form_data: + return jsonify({"status": "error", "message": "无效的JSON数据"}), 400 + + customerName = form_data.get('customerName', '').strip() + projectSource = form_data.get('projectSource', '').strip() + projectLeader = form_data.get('projectLeader', '').strip() + clientdemand = form_data.get('clientdemand', '').strip() + handovertasks = form_data.get('handovertasks', '').strip() + remarks = form_data.get('remarks', '').strip() - form_data = request.get_json() # 直接解析 JSON + # 基本验证 + if not customerName or not projectLeader: + return jsonify({"status": "error", "message": "客户名称和项目负责人不能为空"}), 400 - # customerName = form_data.get('customerName', '') - # projectSource = form_data.get('projectSource', '') - # projectLeader = form_data.get('projectLeader', '') - # clientdemand = form_data.get('clientdemand', '') - # handovertasks = form_data.get('handovertasks', '') - # remarks = form_data.get('remarks', '') + # 生成文件名 + filename = os.path.join(DATA_DIR, datetime.now().strftime("%Y%m%d_") + customerName + "_" + projectLeader + ".txt") - # # 暂时保存在 txt 文件中 - # # 生成文件名 - # filename = "D:/ProjectManagementSystem/data/" + datetime.now().strftime("%Y%m%d_") + customerName+ "_" + projectLeader+ ".txt" + # 要保存的内容 + content = f"文件生成时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n" + content += f"客户名称:{customerName}\n\n" + content += f"项目来源:{projectSource}\n\n" + content += f"项目负责人:{projectLeader}\n\n" + content += f"客户需求:{clientdemand}\n\n" + content += f"交接任务:{handovertasks}\n\n" + content += f"备注:{remarks}" - # # 要保存的内容 - # content = f"文件生成时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n" + customerName + "\n\n" + projectSource+ "\n\n" + projectLeader+ "\n\n" + clientdemand+ "\n\n" + handovertasks+ "\n\n" + remarks + # 写入文件 + with open(filename, "w", encoding="utf-8") as file: + file.write(content) - # # 写入文件 - # with open(filename, "w", encoding="utf-8") as file: - # file.write(content) + logging.info(f"成功保存数据到文件: {filename}") + return jsonify({"status": "success", "message": "提交成功"}) + + except Exception as e: + logging.error(f"处理数据时发生错误: {str(e)}") + return jsonify({"status": "error", "message": "服务器内部错误"}), 500 + + return render_template('contact.html', + company=COMPANY_INFO, + success=request.args.get('success'), + t=get_translation, + lang=lang, + languages=LANGUAGES) + +# 服务日志目录中的文件 +@app.route('/logs/') +def serve_log_file(filename): + return send_from_directory(LOG_DIR, filename) + +# 服务下载目录中的文件 +@app.route('/downloads/') +def serve_download_file(filename): + return send_from_directory('downloads', filename) + +# 这个地方后期需要改成 长桥的数据源 实时推送 +# 实时市场数据API端点 +@app.route('/api/market-data') +def market_data(): + # try: + # quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111) + + # market_data_list = [] + # ret_sub, err_message = quote_ctx.subscribe(['HK.00700'], [SubType.QUOTE], subscribe_push=False) + # # 先订阅 K 线类型。订阅成功后 OpenD 将持续收到服务器的推送,False 代表暂时不需要推送给脚本 + # if ret_sub == RET_OK: # 订阅成功 + # ret, data = quote_ctx.get_stock_quote(['HK.00700']) # 获取订阅股票报价的实时数据 + # if ret == RET_OK: + # # market_data_list.append({ + # # 'symbol': data['name'], # 使用中文名称 + # # 'price': float(data['last_price']), + # # 'change': float(data['last_price']), + # # 'change_percent': 0 + # # }) + # pass + # else: + # print('error:', data) + # else: + # print('subscription failed', err_message) + # quote_ctx.close() # 关闭当条连接,OpenD 会在1分钟后自动取消相应股票相应类型的订阅 + + # return jsonify({ + # 'status': 'success', + # 'data': market_data_list, + # 'timestamp': datetime.now().isoformat() + # }) + + # except ImportError: + # pass + try: + # 尝试使用akshare获取真实市场数据 + import akshare as ak + import pandas as pd + + # 获取指数实时数据 + index_data = ak.stock_zh_index_spot() + index_codes = ['sh000001', 'sz399001'] # 上证指数和深证成指 + index_df = index_data[index_data['code'].isin(index_codes)] + + # 获取股票实时数据 + stock_data = ak.stock_zh_a_spot() + stock_codes = ['sh601318', 'sz000858'] # 中国平安和五粮液 + stock_df = stock_data[stock_data['code'].isin(stock_codes)] + + # 合并数据 + combined_data = pd.concat([index_df, stock_df], ignore_index=True) + + market_data_list = [] + for index, row in combined_data.iterrows(): + # 处理价格字段(指数使用latest,股票使用price) + price = row['latest'] if 'latest' in row else row['price'] + change = row['change'] + change_percent = row['change_percent'] + + market_data_list.append({ + 'symbol': row['name'], # 使用中文名称 + 'price': float(price), + 'change': float(change), + 'change_percent': float(change_percent) + }) + + return jsonify({ + 'status': 'success', + 'data': market_data_list, + 'timestamp': datetime.now().isoformat() + }) + + except ImportError: + # akshare未安装,使用模拟数据 + logging.error("akshare未安装,使用模拟数据") + import random + base_prices = {'上证指数': 3000, '深证成指': 10000, '中国平安': 50, '五粮液': 200} + + market_data = [] + for symbol, base_price in base_prices.items(): + change_percent = random.uniform(-0.01, 0.01) + current_price = round(base_price * (1 + change_percent), 2) + change_value = round(current_price - base_price, 2) + + market_data.append({ + 'symbol': symbol, + 'price': current_price, + 'change': change_value, + 'change_percent': round(change_percent * 100, 2) + }) + + return jsonify({ + 'status': 'success', + 'data': market_data, + 'timestamp': datetime.now().isoformat() + }) + + except Exception as e: + logging.error(f"获取市场数据时发生错误: {str(e)}") + # 出错时使用模拟数据 + import random + base_prices = {'上证指数': 3000, '深证成指': 10000, '中国平安': 50, '五粮液': 200} + + market_data = [] + for symbol, base_price in base_prices.items(): + change_percent = random.uniform(-0.01, 0.01) + current_price = round(base_price * (1 + change_percent), 2) + change_value = round(current_price - base_price, 2) + + market_data.append({ + 'symbol': symbol, + 'price': current_price, + 'change': change_value, + 'change_percent': round(change_percent * 100, 2) + }) + + return jsonify({ + 'status': 'success', + 'data': market_data, + 'timestamp': datetime.now().isoformat() + }) - return jsonify({"status": "success", "message": "提交成功"}) - return render_template('contact.html', company=company_info, success=request.args.get('success')) if __name__ == '__main__': - serve(app, host='0.0.0.0', port=777) \ No newline at end of file + serve(app, host='0.0.0.0', port=778) diff --git a/config.py b/config.py new file mode 100644 index 0000000..e176fbd --- /dev/null +++ b/config.py @@ -0,0 +1,31 @@ +# 配置文件 - 分离硬编码的公司信息数据 + +COMPANY_INFO = { + "name": "富澤證券(國際)有限公司", + "slogan": "智能科技,创造未来", + "about": "捌壹智能科技有限公司成立于2020年,是一家专注于人工智能、大数据分析和数字化转型的高科技企业。我们致力于为客户提供创新的技术解决方案,助力企业实现数字化升级。", + "services": [ + { + "name": "人工智能解决方案", + "description": "为企业提供定制化AI解决方案,包括机器学习、计算机视觉和自然语言处理等。" + }, + { + "name": "大数据分析", + "description": "通过先进的数据分析技术,帮助企业挖掘数据价值,优化决策过程。" + }, + { + "name": "数字化转型咨询", + "description": "为企业提供全面的数字化转型战略规划和技术实施支持。" + } + ], + "contact": { + "address": "香港上環永樂街93-103號協成行上環中心10樓1004室", + "Tel": "+852 35856298", + "Fax": "+852 31862366", + "Email": "Sec.Info@fuzsec.com" + } +} + +# 数据存储配置 +DATA_DIR = "data" +LOG_DIR = "logs" diff --git a/data/20250823_测试客户_测试负责人.txt b/data/20250823_测试客户_测试负责人.txt new file mode 100644 index 0000000..72cc0b7 --- /dev/null +++ b/data/20250823_测试客户_测试负责人.txt @@ -0,0 +1,13 @@ +文件生成时间:2025-08-23 23:22:04 + +客户名称:测试客户 + +项目来源:测试来源 + +项目负责人:测试负责人 + +客户需求:测试需求 + +交接任务:测试任务 + +备注:测试备注 \ No newline at end of file diff --git a/languages/__init__.py b/languages/__init__.py new file mode 100644 index 0000000..761d9e6 --- /dev/null +++ b/languages/__init__.py @@ -0,0 +1,499 @@ +# 多语言支持 - 简体中文、繁体中文、英文 + +# 语言代码映射 +LANGUAGES = { + 'zh-CN': '简体中文', + 'zh-TW': '繁體中文', + 'en': 'English' +} + +# 默认语言 +DEFAULT_LANGUAGE = 'zh-CN' + +# 翻译字典 +TRANSLATIONS = { + 'zh-CN': { + 'home': '首页', + 'about': '关于', + 'services': '服务', + 'contact': '联系', + 'language': '语言', + 'all_rights_reserved': '保留所有权利', + 'privacy_policy': '隐私政策', + 'terms_of_use': '使用条款', + 'company_name': '富澤證券(國際)有限公司', + 'slogan': '智能科技,创造未来', + 'about_text': '捌壹智能科技有限公司成立于2020年,是一家专注于人工智能、大数据分析和数字化转型的高科技企业。我们致力于为客户提供创新的技术解决方案,助力企业实现数字化升级。', + 'our_mission': '我们的使命', + 'mission_text': '通过创新技术推动企业数字化转型,为客户创造长期价值。', + 'our_vision': '我们的愿景', + 'vision_text': '成为全球领先的数字技术解决方案提供商,用科技改变世界。', + 'our_services': '我们的服务', + 'services_subtitle': '我们提供全方位的数字技术解决方案,助力您的业务增长', + 'consult_details': '咨询详情', + 'success_cases': '成功案例', + 'contact_us': '联系我们', + 'name': '姓名', + 'email': '邮箱', + 'message': '消息', + 'submit': '提交', + 'send_message': '发送消息', + 'address': '地址', + 'tel': '电话', + 'fax': '传真', + 'email_address': '邮箱地址', + 'leadership_team': '领导团队', + 'founder_ceo': '创始人 & CEO', + 'cto': '技术总监', + 'marketing_director': '市场总监', + 'ai_solutions': '人工智能解决方案', + 'ai_description': '为企业提供定制化AI解决方案,包括机器学习、计算机视觉和自然语言处理等。', + 'big_data': '大数据分析', + 'big_data_description': '通过先进的数据分析技术,帮助企业挖掘数据价值,优化决策过程。', + 'digital_transformation': '数字化转型咨询', + 'digital_description': '为企业提供全面的数字化转型战略规划和技术实施支持。', + 'download': '下载', + 'download_clients': '客户端下载', + 'download_description': '下载我们的客户端,体验更便捷的服务', + 'available_downloads': '可用下载', + 'choose_platform': '选择适合您设备的客户端版本', + 'pc_client': '电脑客户端', + 'pc_client_desc': '适用于Windows系统的桌面客户端,提供完整功能体验', + 'android_client': '安卓手机客户端', + 'android_client_desc': '适用于Android手机的移动客户端,随时随地管理您的账户', + 'download_now': '立即下载', + 'version': '版本', + 'file_size': '文件大小', + 'system_requirements': '系统要求', + 'features': '客户端特色功能', + 'real_time_quotes': '实时行情', + 'real_time_quotes_desc': '提供全球市场的实时行情数据,及时掌握市场动态', + 'secure_transaction': '安全交易', + 'secure_transaction_desc': '多重加密保护,确保您的交易安全和资金安全', + 'multi_device_sync': '多设备同步', + 'multi_device_sync_desc': '支持电脑和手机客户端数据同步,随时随地继续操作', + 'hero_subtitle': '专业证券交易与投资平台', + 'hero_description': '提供全球市场股票、期货、期权交易,智能投顾服务,助力您的财富增长', + 'download_app': '下载客户端', + 'learn_more': '了解更多', + 'market_quotes': '实时行情', + 'why_choose_us': '为什么选择我们', + 'features_subtitle': '专业、安全、便捷的投资体验', + 'global_markets': '全球市场', + 'global_markets_desc': '港股、美股、A股、加密货币等多市场交易', + 'secure_trading': '安全交易', + 'secure_trading_desc': '银行级安全防护,资金隔离保障', + 'smart_investing': '智能投资', + 'smart_investing_desc': 'AI投顾、智能选股、量化策略', + 'low_fees': '低手续费', + 'low_fees_desc': '零佣金交易,透明收费标准', + 'trading_tools': '专业交易工具', + 'trading_tools_subtitle': '丰富的分析工具,助力投资决策', + 'realtime_charts': '实时图表', + 'realtime_charts_desc': '多时间周期K线图,技术指标分析', + 'news_analysis': '新闻分析', + 'news_analysis_desc': '实时财经新闻,市场情绪分析', + 'portfolio_management': '组合管理', + 'portfolio_management_desc': '投资组合分析,风险控制工具', + 'download_app_cta': '立即下载客户端', + 'download_app_desc': '随时随地交易,把握投资机会', + 'mobile_app': '手机客户端', + 'desktop_app': '电脑客户端', + 'image_download': '图片下载', + 'image_download_desc': '下载公司标志或相关图片', + 'download_image': '下载图片', + 'file_format': '文件格式', + 'resolution': '分辨率', + 'pricing': '收费', + 'help': '帮助', + 'pricing_description': '透明合理的收费结构,助力您的投资成功', + 'pricing_plans': '收费标准', + 'choose_plan': '选择适合您的投资方案', + 'basic_plan': '基础套餐', + 'basic_plan_desc': '适合初级投资者的入门套餐', + 'pro_plan': '专业套餐', + 'pro_plan_desc': '适合活跃交易者的专业套餐', + 'vip_plan': 'VIP套餐', + 'vip_plan_desc': '适合机构投资者的尊贵套餐', + 'get_started': '立即开通', + 'feature1': '基础行情数据', + 'feature2': '5次免费交易', + 'feature3': '基础分析工具', + 'feature4': '高级行情数据', + 'feature5': '无限次交易', + 'feature6': '专业分析工具', + 'feature7': '实时市场警报', + 'feature8': '全市场行情数据', + 'feature9': '专属客户经理', + 'feature10': '高级分析工具套件', + 'feature11': '个性化投资策略', + 'feature12': '优先客服支持', + 'why_choose_our_pricing': '为什么选择我们的收费方案', + 'transparent_pricing': '透明收费', + 'transparent_pricing_desc': '无隐藏费用,所有收费项目清晰明了', + 'value_for_money': '物超所值', + 'value_for_money_desc': '提供远超价格的优质服务和工具', + 'flexible_plans': '灵活选择', + 'flexible_plans_desc': '多种套餐满足不同投资需求', + 'help_description': '获取使用指南和常见问题解答', + 'frequently_asked_questions': '常见问题', + 'faq_subtitle': '找到您需要的答案', + 'faq1_question': '如何注册账户?', + 'faq1_answer': '访问注册页面,填写基本信息并完成身份验证即可创建账户。', + 'faq2_question': '如何下载客户端?', + 'faq2_answer': '在下载页面选择适合您设备的版本,点击下载按钮即可获取安装文件。', + 'faq3_question': '交易费用如何计算?', + 'faq3_answer': '交易费用根据您的套餐类型和交易量计算,具体标准请参考收费页面。', + 'faq4_question': '如何联系客服?', + 'faq4_answer': '您可以通过联系页面提交问题,或直接拨打客服电话获取帮助。', + 'faq5_question': '支持哪些支付方式?', + 'faq5_answer': '我们支持银行转账、信用卡、支付宝和微信支付等多种支付方式。', + 'faq6_question': '如何查看交易记录?', + 'faq6_answer': '登录账户后,在交易记录页面可以查看所有的历史交易明细。', + 'contact_support': '联系支持', + 'support_description': '如果您的问题未在常见问题中找到答案,请联系我们的支持团队', + 'email_support': '邮件支持', + 'email_support_desc': '发送邮件至 Sec.Info@fuzsec.com,我们将在24小时内回复', + 'send_email': '发送邮件', + 'phone_support': '电话支持', + 'phone_support_desc': '拨打客服热线 +852 35856298,工作日9:00-18:00', + 'call_now': '立即拨打', + 'live_chat': '在线聊天', + 'live_chat_desc': '通过网站右下角的聊天窗口与客服实时沟通', + 'start_chat': '开始聊天', + 'commission_rates': '详细佣金费率', + 'commission_rates_desc': '透明公开的交易费用,助力您的投资决策', + 'market': '市场', + 'product_type': '产品类型', + 'commission_rate': '佣金费率', + 'minimum_fee': '最低收费', + 'additional_fees': '其他费用', + 'commission_note': '以上费率仅供参考,实际费用可能因市场情况而变化。详细费用请参考最新费率表。', + 'stocks': '股票、ETF和权证', + 'options': '期权', + 'futures': '期货', + 'funds': '基金', + 'other_products': '其他产品' + }, + 'zh-TW': { + 'home': '首頁', + 'about': '關於', + 'services': '服務', + 'contact': '聯繫', + 'language': '語言', + 'all_rights_reserved': '保留所有權利', + 'privacy_policy': '隱私政策', + 'terms_of_use': '極狐使用條款', + 'company_name': '富澤證券(國際)有限公司', + 'slogan': '智能科技,創造未來', + 'about_text': '捌壹智能科技有限公司成立於2020年,是一家專注於人工智能、大數據分析和數字化轉型的高科技企業。我們致力於為客戶提供創新的技術解決方案,助力企業實現數字化升級。', + 'our_mission': '我們的使命', + 'mission_text': '通過創新技術推動企業數字化轉型,為客戶創造長期價值。', + 'our_vision': '我們的願景', + 'vision_text': '成為全球領進的數字技術解決方案提供商,用科技改變世界。', + 'our_services': '我們的服務', + 'services_subtitle': '我們提供全方位的數字技術解決方案,助力您的業務增長', + 'consult_details': '咨詢詳情', + 'success_cases': '成功案例', + 'contact_us': '聯繫我們', + 'name': '姓名', + 'email': '郵箱', + 'message': '消息', + 'submit': '提交', + 'send_message': '發送消息', + 'address': '地址', + 'tel': '電話', + 'fax': '傳真', + 'email_address': '郵箱地址', + 'leadership_team': '領導團隊', + 'founder_ceo': '創始人 & CEO', + 'cto': '技術總監', + 'marketing_director': '市場總監', + 'ai_solutions': '人工智能解決方案', + 'ai_description': '為企業提供定制化AI解決方案,極狐包括機器學習、計算機視覺和自然語言處理等。', + 'big_data': '大數據分析', + 'big_data_description': '通過先進的數據分析技術,幫助企業挖掘數據極狐價值,優化極狐決策過程。', + 'digital_transformation': '數字化轉型咨詢', + 'digital_description': '為企業提供全面的數字化轉型戰略規劃和技術實施支持。', + 'download': '下載', + 'download_clients': '客戶端下載', + 'download_description': '下載我們的客戶端,體驗更便捷的服務', + 'available_downloads': '可用下載', + 'choose_platform': '選擇適合您設備的客戶端版本', + 'pc_client': '電腦客戶端', + 'pc_client_desc': '適用於Windows系統的桌面客戶端,提供完整功能體驗', + 'android_client': '安卓手機客戶端', + 'android_client_desc': '適用於Android手機的移動客戶端,隨時隨地管理您的賬戶', + 'download_now': '立即下載', + 'version': '版本', + 'file_size': '文件大小', + 'system_requirements': '系統要求', + 'features': '客戶端特色功能', + 'real_time_quotes': '實時行情', + 'real_time_quotes_desc': '提供全球市場的實時行情數據,及時掌握市場動態', + 'secure_transaction': '安全交易', + 'secure_transaction_desc': '多重加密保護,確保您的交易安全和資金安全', + 'multi_device_sync': '多設備同步', + 'multi_device_sync_desc': '支持電腦和手機客戶端數據同步,隨時隨地繼續操作', + 'hero_subtitle': '專業證券交易與投資平台', + 'hero_description': '提供全球市場股票、期貨、期權交易,智能投顧服務,助力您的財富增長', + 'download_app': '下載客戶端', + 'learn_more': '了解更多', + 'market_quotes': '實時行情', + 'why_choose_us': '為什麼選擇我們', + 'features_subtitle': '專業、安全、便捷的投資體驗', + 'global_markets': '全球市場', + 'global_markets_desc': '港股、美股、A股、加密貨幣等多市場交易', + 'secure_trading': '安全交易', + 'secure_trading_desc': '銀行級安全防護,資金隔離保障', + 'smart_investing': '智能投資', + 'smart_investing_desc': 'AI投顧、智能選股、量化策略', + 'low_fees': '低手續費', + 'low_fees_desc': '零佣金交易,透明收費標準', + 'trading_tools': '專業交易工具', + 'trading_tools_subtitle': '豐富的分析工具,助力投資決策', + 'realtime_charts': '實時圖表', + 'realtime_charts_desc': '多時間周期K線圖,技術指標分析', + 'news_analysis': '新聞分析', + 'news_analysis_desc': '實時財經新聞,市場情緒分析', + 'portfolio_management': '組合管理', + 'portfolio_management_desc': '投資組合分析,風險控制工具', + 'download_app_cta': '立即下載客戶端', + 'download_app_desc': '隨時隨地交易,把握投資機會', + 'mobile_app': '手機客戶端', + 'desktop_app': '電腦客戶極狐端', + 'pricing': '收費', + 'help': '幫助', + 'pricing_description': '透明合理的收費結構,助力您的投資成功', + 'pricing_plans': '收費標準', + 'choose_plan': '選擇適合您的投資方案', + 'basic_plan': '基礎套餐', + 'basic_plan_desc': '適合初級投資者的極狐入門套餐', + 'pro_plan': '專業套餐', + 'pro_plan_desc': '適合活躍交易者的專業套餐', + 'vip_plan': 'VIP套餐', + 'vip_plan_desc': '適合機構投資者的尊貴套餐', + 'get_started': '立即開通', + 'feature1': '基礎行情數據', + 'feature2': '5次免費交易', + 'feature3': '基礎分析工具', + 'feature4': '高級行情數據', + 'feature5': '無限次交易', + 'feature6': '專業分析工具', + 'feature7': '實時市場警報', + 'feature8': '全市場行情數據', + 'feature9': '專屬客戶經理', + 'feature10': '高級分析工具套件', + 'feature11': '個性化投資策略', + 'feature12': '優先客服支持', + 'why_choose_our_pricing': '為什麼選擇我們的收費方案', + 'transparent_pricing': '透明收費', + 'transparent_pricing_desc': '無隱藏費用,所有收費項目清晰明了', + 'value_for_money': '物超所值', + 'value_for_money_desc': '提供遠超價格的優質服務和工具', + 'flexible_plans': '極狐靈活選擇', + 'flexible_plans_desc': '多種套餐滿足不同投資需求', + 'help_description': '獲取使用指南和常見問題解答', + 'frequently_asked_questions': '常見極狐問題', + 'faq_subtitle': '找到您需要的答案', + 'faq1_question': '如何註冊賬戶?', + 'faq1_answer': '訪問註冊頁面,填寫基本信息並完成身份驗證即可創建極狐賬戶。', + 'faq2_question': '如何下載客戶端?', + 'faq2_answer': '在下載頁面選擇適合您設備的版本,點擊下載按鈕即可獲取安裝文件。', + 'faq3_question': '交易費用如何計算?', + 'faq3_answer': '交易費用根據您的套餐類型和交易量計算,具體標準請參考收費頁面。', + 'faq4_question': '如何聯繫客服?', + 'faq4_answer': '您可以通過聯繫頁面提交問題,或直接撥打客服電話獲取幫助。', + 'faq5_question': '支持哪些支付方式?', + 'faq5_answer': '我們支持銀行轉賬、信用卡、支付寶和微信支付等多種支付方式。', + 'faq6_question': '如何查看交易記錄?', + 'faq6_answer': '登錄賬戶後,在交易記錄頁面可以查看所有的歷史交易明細。', + 'contact_support': '聯繫支持', + 'support_description': '如果您的問題未在常見問題中找到答案,請聯繫我們的支持團隊', + 'email_support': '郵件支持', + 'email_support_desc': '發送郵件至 Sec.Info@fuzsec.com,我們將在24小時內回复', + 'send_email': '發送郵件', + 'phone_support': '電話支持', + 'phone_support_desc': '撥打客服熱線 +852 35856298,工作日9:00-18:00', + 'call_now': '立即撥打', + 'live_chat': '在線聊天', + 'live_chat_desc': '通過網站右下角的聊天窗口與客服實時溝通', + 'start_chat': '開始聊天', + 'commission_rates': '詳細佣金費率', + 'commission_rates_desc': '透明公開的交易費用,助力您的投資決策', + 'market': '市場', + 'product_type': '產品類型', + 'commission_rate': '佣金費率', + 'minimum_fee': '最低收極狐費', + 'additional_fees': '其他費用', + 'commission_note': '以上費率僅供參考,實際費用可能因市場情況而變化。詳細費用請參考最新費率表。', + 'stocks': '股票、ETF和權證', + 'options': '期權', + 'futures': '期貨', + 'funds': '基金', + 'other_products': '其他產品' + }, + 'en': { + 'home': 'Home', + 'about': 'About', + 'services': 'Services', + 'contact': 'Contact', + 'language': 'Language', + 'all_rights_reserved': 'All rights reserved', + 'privacy_policy': 'Privacy Policy', + 'terms_of_use': 'Terms of Use', + 'company_name': 'FUZE SECURITIES (INTERNATIONAL) LIMITED', + 'slogan': 'Smart Technology, Creating the Future', + 'about_text': 'Bayi Intelligent Technology Co., Ltd. was established in 2020, focusing on artificial intelligence, big data analysis and digital transformation. We are committed to providing innovative technology solutions to help enterprises achieve digital upgrade.', + 'our_mission': 'Our Mission', + 'mission_text': 'Promote enterprise digital transformation through innovative technology and create long-term value for customers.', + 'our_vision': 'Our Vision', + 'vision_text': 'Become a world-leading digital technology solutions provider, using technology to change the world.', + 'our_services': 'Our Services', + 'services_subtitle': 'We provide comprehensive digital technology solutions to help your business grow', + 'consult_details': 'Consult Details', + 'success_cases': 'Success Cases', + 'contact_us': 'Contact Us', + 'name': 'Name', + 'email': 'Email', + 'message': 'Message', + 'submit': 'Submit', + 'send_message': 'Send Message', + 'address': 'Address', + 'tel': 'Tel', + 'fax': 'Fax', + 'email_address': 'Email Address', + 'leadership_team': 'Leadership Team', + 'founder_ceo': 'Founder & CEO', + 'cto': 'Technical Director', + 'marketing_director': 'Marketing Director', + 'ai_solutions': 'AI Solutions', + 'ai_description': 'Provide customized AI solutions for enterprises, including machine learning, computer vision and natural language processing.', + 'big_data': 'Big Data Analysis', + 'big_data_description': 'Help enterprises mine data value and optimize decision-making process through advanced data analysis technology.', + 'digital_transformation': 'Digital Transformation Consulting', + 'digital_description': 'Provide comprehensive digital transformation strategy planning and technical implementation support for enterprises.', + 'download': 'Download', + 'download_clients': 'Client Downloads', + 'download_description': 'Download our clients for a more convenient service experience', + 'available_downloads': 'Available Downloads', + 'choose_platform': 'Choose the client version suitable for your device', + 'pc_client': 'PC Client', + 'pc_client_desc': 'Desktop client for Windows systems, providing full-featured experience', + 'android_client': 'Android Mobile Client', + 'android_client_desc': 'Mobile client for Android phones, manage your account anytime, anywhere', + 'download_now': 'Download Now', + 'version': 'Version', + 'file_size': 'File Size', + 'system_requirements': 'System Requirements', + 'features': 'Client Features', + 'real_time_quotes': 'Real-time Quotes', + 'real_time_quotes_desc': 'Provide real-time market data from global markets, stay updated with market trends', + 'secure_transaction': 'Secure Transactions', + 'secure_transaction_desc': 'Multiple encryption protection to ensure your transaction security and fund safety', + 'multi_device_sync': 'Multi-device Sync', + 'multi_device_sync_desc': 'Support data synchronization between PC and mobile clients, continue operations anywhere', + 'hero_subtitle': 'Professional Securities Trading & Investment Platform', + 'hero_description': 'Global stock, futures, options trading, smart investment advisory services to help grow your wealth', + 'download_app': 'Download Client', + 'learn_more': 'Learn More', + 'market_quotes': 'Real-time Quotes', + 'why_choose_us': 'Why Choose Us', + 'features_subtitle': 'Professional, Secure, Convenient Investment Experience', + 'global_markets': 'Global Markets', + 'global_markets_desc': 'HK stocks, US stocks, A-shares, cryptocurrency and multi-market trading', + 'secure_trading': 'Secure Trading', + 'secure_trading_desc': 'Bank-level security protection, fund segregation guarantee', + 'smart_investing': 'Smart Investing', + 'smart_investing_desc': 'AI investment advisory, smart stock selection, quantitative strategies', + 'low_fees': 'Low Fees', + 'low_fees_desc': 'Zero commission trading, transparent fee structure', + 'trading_tools': 'Professional Trading Tools', + 'trading_tools_subtitle': 'Rich analysis tools to support investment decisions', + 'realtime_charts': 'Real-time Charts', + 'realtime_charts_desc': 'Multiple timeframe candlestick charts, technical indicator analysis', + 'news_analysis': 'News Analysis', + 'news_analysis_desc': 'Real-time financial news, market sentiment analysis', + 'portfolio_management': 'Portfolio Management', + 'portfolio_management_desc': 'Investment portfolio analysis, risk control tools', + 'download_app_cta': 'Download Client Now', + 'download_app_desc': 'Trade anytime, anywhere, seize investment opportunities', + 'mobile_app': 'Mobile Client', + 'desktop_app': 'Desktop Client', + 'image_download': 'Image Download', + 'image_download_desc': 'Download company logo or related images', + 'download_image': 'Download Image', + 'file_format': 'File Format', + 'resolution': 'Resolution', + 'pricing': 'Pricing', + 'help': 'Help', + 'pricing_description': 'Transparent and reasonable pricing structure to help your investment success', + 'pricing_plans': 'Pricing Plans', + 'choose_plan': 'Choose the investment plan that suits you', + 'basic_plan': 'Basic Plan', + 'basic_plan_desc': 'Entry-level package suitable for beginner investors', + 'pro_plan': 'Professional Plan', + 'pro_plan_desc': 'Professional package suitable for active traders', + 'vip_plan': 'VIP Plan', + 'vip_plan_desc': 'Premium package suitable for institutional investors', + 'get_started': 'Get Started', + 'feature1': 'Basic market data', + 'feature2': '5 free trades', + 'feature3': 'Basic analysis tools', + 'feature4': 'Advanced market data', + 'feature5': 'Unlimited trades', + 'feature6': 'Professional analysis tools', + 'feature7': 'Real-time market alerts', + 'feature8': 'Full market data', + 'feature9': 'Dedicated account manager', + 'feature10': 'Advanced analysis tool suite', + 'feature11': 'Personalized investment strategies', + 'feature12': 'Priority customer support', + 'why_choose_our_pricing': 'Why Choose Our Pricing', + 'transparent_pricing': 'Transparent Pricing', + 'transparent_pricing_desc': 'No hidden fees, all charges are clear and transparent', + 'value_for_money': 'Value for Money', + 'value_for_money_desc': 'Provide quality services and tools that far exceed the price', + 'flexible_plans': 'Flexible Plans', + 'flexible_plans_desc': 'Multiple packages to meet different investment needs', + 'help_description': 'Get user guides and frequently asked questions', + 'frequently_asked_questions': 'Frequently Asked Questions', + 'faq_subtitle': 'Find the answers you need', + 'faq1_question': 'How to register an account?', + 'faq1_answer': 'Visit the registration page, fill in basic information and complete identity verification to create an account.', + 'faq2_question': 'How to download the client?', + 'faq2_answer': 'Select the version suitable for your device on the download page and click the download button to get the installation file.', + 'faq3_question': 'How are trading fees calculated?', + 'faq3_answer': 'Trading fees are calculated based on your plan type and trading volume. For specific standards, please refer to the pricing page.', + 'faq4_question': 'How to contact customer service?', + 'faq4_answer': 'You can submit questions through the contact page or directly call customer service for help.', + 'faq5_question': 'What payment methods are supported?', + 'faq5_answer': 'We support various payment methods including bank transfer, credit card, Alipay, and WeChat Pay.', + 'faq6_question': 'How to view transaction records?', + 'faq6_answer': 'After logging into your account, you can view all historical transaction details on the transaction records page.', + 'contact_support': 'Contact Support', + 'support_description': 'If your question is not answered in the FAQs, please contact our support team', + 'email_support': 'Email Support', + 'email_support_desc': 'Send email to Sec.Info@fuzsec.com, we will reply within 24 hours', + 'send_email': 'Send Email', + 'phone_support': 'Phone Support', + 'phone_support_desc': 'Call customer service hotline +852 35856298, weekdays 9:00-18:00', + 'call_now': 'Call Now', + 'live_chat': 'Live Chat', + 'live_chat_desc': 'Real-time communication with customer service through the chat window in the lower right corner of the website', + 'start_chat': 'Start Chat', + 'commission_rates': 'Commission Rates', + 'commission_rates_desc': 'Transparent trading fees to support your investment decisions', + 'market': 'Market', + 'product_type': 'Product Type', + 'commission_rate': 'Commission Rate', + 'minimum_fee': 'Minimum Fee', + 'additional_fees': 'Additional Fees', + 'commission_note': 'The above rates are for reference only. Actual fees may vary depending on market conditions. Please refer to the latest fee schedule for detailed fees.', + 'stocks': 'Stocks,ETFs & Warrants', + 'options': 'Options', + 'futures': 'Futures', + 'funds': 'Funds', + 'other_products': 'Other Products' + } +} diff --git a/logs/1024 500.jpg b/logs/1024 500.jpg new file mode 100644 index 0000000..175e370 Binary files /dev/null and b/logs/1024 500.jpg differ diff --git a/logs/1024.jpg b/logs/1024.jpg new file mode 100644 index 0000000..dcd89fc Binary files /dev/null and b/logs/1024.jpg differ diff --git a/logs/120.jpg b/logs/120.jpg new file mode 100644 index 0000000..214009a Binary files /dev/null and b/logs/120.jpg differ diff --git a/logs/512.jpg b/logs/512.jpg new file mode 100644 index 0000000..d0bcdb6 Binary files /dev/null and b/logs/512.jpg differ diff --git a/logs/58.jpg b/logs/58.jpg new file mode 100644 index 0000000..f396c9f Binary files /dev/null and b/logs/58.jpg differ diff --git a/logs/640 1136.jpg b/logs/640 1136.jpg new file mode 100644 index 0000000..3928722 Binary files /dev/null and b/logs/640 1136.jpg differ diff --git a/logs/640 960.jpg b/logs/640 960.jpg new file mode 100644 index 0000000..95b3038 Binary files /dev/null and b/logs/640 960.jpg differ diff --git a/logs/80.jpg b/logs/80.jpg new file mode 100644 index 0000000..8beaa59 Binary files /dev/null and b/logs/80.jpg differ diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_ca.crt b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_ca.crt new file mode 100644 index 0000000..d63506d --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_ca.crt @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH +MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE +eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv +NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch +QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn +NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP +ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI +lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf +BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C +AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp +Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu +Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG +/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT +MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ +L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi +98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe +xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN +GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2 +n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg== +-----END CERTIFICATE----- diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_server.crt b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_server.crt new file mode 100644 index 0000000..83260a1 --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_server.crt @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF/DCCBOSgAwIBAgIQC3xhQ+DiSWi/7PN9snu1uDANBgkqhkiG9w0BAQsFADBu +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg +RFYgVExTIENBIC0gRzIwHhcNMjUwODIyMDAwMDAwWhcNMjUxMTIxMjM1OTU5WjAV +MRMwEQYDVQQDEwpmdXpzZWMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAzrkj3m+fIKJ3jMMpQ+UvhofLJGb2oQPGqRmQwkTkVR1f9fsZUwP6ofKn +GXOV5lqMcZkizMpxxzEEsk7bQatkMg5o5GwhXZZ6dS0gP7OQj1ZCl71UTGUDzJrT +BmeM/gob2bb357lgFuQ7TJFXV1A2nUis024VdZt9iBDsfdH2JSnosb6Maos3Yh/3 +4EP8GYlja5r7OOB/dIy5/x6Dr76Wuz2MYAVa0dTPNZSHFmwbyyBa6LhifzXde/ZL +mFuDd7yXa0JGSPNVyCayQZQrlQDlZRprRSMnuEkDWXl687rDhdkiwlgFV69eZe1N +xdZbZmsodencer83XsDDBkCkOWyNvQIDAQABo4IC7TCCAukwHwYDVR0jBBgwFoAU +eN+RkF/u3qz2xXXr1UxVU+8kSrYwHQYDVR0OBBYEFJ8boh0OAKUhtWca1DfjuMUW +xp6KMCUGA1UdEQQeMByCCmZ1enNlYy5jb22CDnd3dy5mdXpzZWMuY29tMD4GA1Ud +IAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNl +cnQuY29tL0NQUzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG +CCsGAQUFBwMCMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v +Y3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGln +aWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1HMi5jcnQwDAYD +VR0TAQH/BAIwADCCAX4GCisGAQQB1nkCBAIEggFuBIIBagFoAHcA3dzKNJXX4RYF +55Uy+sef+D0cUN/bADoUEnYKLKy7yCoAAAGY0FLb2AAABAMASDBGAiEAu/yU2Wks +def4mOQGqpu3z1JH8HEoMf8tMWfp6Q8UUSMCIQD6RDO1IyMK4RFircmSCccYFh/O +tl3PsA3pqXz1dThd1QB1AO08S9boBsKkogBX28sk4jgB31Ev7cSGxXAPIN23Pj/g +AAABmNBS28YAAAQDAEYwRAIgIryywG9w6/zYnnU3OKNjoDKhsjZzZS3eI+27vdBI +I90CIFxnBnmzKl7hYkn5caiKeUsv7xoYUjIkfES7r4OI1oc8AHYApELFBklgYVSP +D9TqnPt6LSZFTYepfy/fRVn2J086hFQAAAGY0FLb2QAABAMARzBFAiEAgdksB7sa +raxUUADBCqa9erRVVsPccu4pgUZzvBTEzwUCIHq7mUxayZrywuB3ymai6CESoy/D +G+e7DYOQCcAE7RX6MA0GCSqGSIb3DQEBCwUAA4IBAQBW6JszLOTVkWn589+8Ky9D ++89WoUoLQDpHS8wsOGuZvre6VmEmm68s+RaAE4bSwCuzxn59PIxrS6h7mYIjwIAw +08c51d97xMYtJAxW/8r7qK8uLbFfk6irU5AJEppIbdaODlEI2TBX9f3aERoItgIO +R4s6iUZO2clot1N4E0yrPziMuhxwKbkDbA2DhUx1Vl8FTfJd2wL2k5YAJpMiQWtc +bm49Fd2lJkmyx4EiwljGVTCApEZcjAVuVh06EKlb9yQt6Vt0HQEikUesD6UZ14ap +Vc9Dgp3cUE0pjQyBzqJPGiJNrGRutuTxAtGoKz7lnzxQjJxa6htuIQHo5537xDS7 +-----END CERTIFICATE----- diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_server.key b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_server.key new file mode 100644 index 0000000..58a37c7 --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Apache/scs1755841100366_fuzsec.com_server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEAzrkj3m+fIKJ3jMMpQ+UvhofLJGb2oQPGqRmQwkTkVR1f9fsZ +UwP6ofKnGXOV5lqMcZkizMpxxzEEsk7bQatkMg5o5GwhXZZ6dS0gP7OQj1ZCl71U +TGUDzJrTBmeM/gob2bb357lgFuQ7TJFXV1A2nUis024VdZt9iBDsfdH2JSnosb6M +aos3Yh/34EP8GYlja5r7OOB/dIy5/x6Dr76Wuz2MYAVa0dTPNZSHFmwbyyBa6Lhi +fzXde/ZLmFuDd7yXa0JGSPNVyCayQZQrlQDlZRprRSMnuEkDWXl687rDhdkiwlgF +V69eZe1NxdZbZmsodencer83XsDDBkCkOWyNvQIDAQABAoIBAEJW8LdX29mlubbP +BIWY3X0PQ/Y9IqV+aDjpDucBI8Nax2pReAmHi91/2PcWfELtyQdFjQDqcMPrK6Yr +Hzq+TUuxCyFOwBBgE5FZ93Dp55jQJlO6uvw/KI53GwSBo6H8zX47NOhEuZzvBkam +l8BZ6gTkhy3ctH9G9Gx/fd1MzXCUI4nWl5Zuz8auUVsL5bDKyWlMqJGNVvoF7Jeq +rWDK3WWmBBprfD7wNktxsiSiybCnMSvtyPSI7KkymGOf9MXZFdKIZqMdRt2++UlX +x2tpoW93gUqdPxTm33yIAQV3/wa7RyQp4sABeHqMD6Mpr+yIx+ksQyfBjzBfHH5q +EkRZtBMCgYEA/ibMmvbkFEcj5SsQB/OzReCnzLm7QleroMr3N+Om18DXH8KAs6At +OOCttFCf69l9IsOOU4zKFdMvBI9YR8Hn1XMi0JaYEJGiSuaQzozqBrw7qi2CaXjY +fVXaAr9WFhrNuFDd8s2KTVke5MsbisqaD3Eco6jB1nfzlkjo0BkPiJsCgYEA0DoI +5p/QnhTXttb0E70NWCgzs7svoJqmYmTn8fqTVAbac/ALc8qnYjCnJLAI1mTDi3Zo +hYM8QEjT6tJnYzMHuH9wT8eyCk4jq7Rq0vW1a7wGGploWlxcfUgg12ErJs2FLRDJ +WFSSeg2upPk6hlTCTAbpUtggxqfz4MKkroogzIcCgYEAgJEeFhJpRLzMMsT7AhrN +CL9iA1W9ngz9nISwVQyLvT8nVECvnK6d0dUO6lWS4NuPywNEP43MOQgxE8xz6zDz +V248IWrdGBykDeHfRS3RwYB9alRFUZe5ZIYGmDc0lFAQ23nFHWvO19wKndEFaMue +7crZowzeqeDaT58obwUOb5sCgYEAwSkE9sPMJ8kX7tHqa6EVjvEEPTdo0CiGLoKC +s/OJ1gnhfmlwhkK5EZomgx8Vo6SnzWjTPv9l1hB5Hb1/EQPWpqz5h9is7WhdKLxd +2EL8v+sVEnm61xAU8FcHuCS4fe9rGkoXLWyO0NB+cSWNx+06rIJA0YwSo5ZL4vVN +BWi3UmMCgYEAmdmbEDA4er173Aay+WWtG6h/FB1FRR08TEqU0bsSecoZigRnqAB7 +ihsCFuWTbw+Akf5qPvaaIGQATCSxTeMH6Wu8aXFIbdDgfBhc4gWo9FCTiWIRbSKP +H4uFiA8FUDSlXmeRBjaOnZ8g7/ifvcEPLKiGYNe+F9ozBovcgRONSUw= +-----END RSA PRIVATE KEY----- diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_IIS/scs1755841100366_fuzsec.com_keystorePass.txt b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_IIS/scs1755841100366_fuzsec.com_keystorePass.txt new file mode 100644 index 0000000..90befc8 --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_IIS/scs1755841100366_fuzsec.com_keystorePass.txt @@ -0,0 +1 @@ +Fs6>yKnCzGtzed8T \ No newline at end of file diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_IIS/scs1755841100366_fuzsec.com_server.pfx b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_IIS/scs1755841100366_fuzsec.com_server.pfx new file mode 100644 index 0000000..fd51f62 Binary files /dev/null and b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_IIS/scs1755841100366_fuzsec.com_server.pfx differ diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Nginx/scs1755841100366_fuzsec.com_server.crt b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Nginx/scs1755841100366_fuzsec.com_server.crt new file mode 100644 index 0000000..a851e55 --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Nginx/scs1755841100366_fuzsec.com_server.crt @@ -0,0 +1,61 @@ +-----BEGIN CERTIFICATE----- +MIIF/DCCBOSgAwIBAgIQC3xhQ+DiSWi/7PN9snu1uDANBgkqhkiG9w0BAQsFADBu +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg +RFYgVExTIENBIC0gRzIwHhcNMjUwODIyMDAwMDAwWhcNMjUxMTIxMjM1OTU5WjAV +MRMwEQYDVQQDEwpmdXpzZWMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAzrkj3m+fIKJ3jMMpQ+UvhofLJGb2oQPGqRmQwkTkVR1f9fsZUwP6ofKn +GXOV5lqMcZkizMpxxzEEsk7bQatkMg5o5GwhXZZ6dS0gP7OQj1ZCl71UTGUDzJrT +BmeM/gob2bb357lgFuQ7TJFXV1A2nUis024VdZt9iBDsfdH2JSnosb6Maos3Yh/3 +4EP8GYlja5r7OOB/dIy5/x6Dr76Wuz2MYAVa0dTPNZSHFmwbyyBa6LhifzXde/ZL +mFuDd7yXa0JGSPNVyCayQZQrlQDlZRprRSMnuEkDWXl687rDhdkiwlgFV69eZe1N +xdZbZmsodencer83XsDDBkCkOWyNvQIDAQABo4IC7TCCAukwHwYDVR0jBBgwFoAU +eN+RkF/u3qz2xXXr1UxVU+8kSrYwHQYDVR0OBBYEFJ8boh0OAKUhtWca1DfjuMUW +xp6KMCUGA1UdEQQeMByCCmZ1enNlYy5jb22CDnd3dy5mdXpzZWMuY29tMD4GA1Ud +IAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNl +cnQuY29tL0NQUzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG +CCsGAQUFBwMCMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v +Y3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGln +aWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1HMi5jcnQwDAYD +VR0TAQH/BAIwADCCAX4GCisGAQQB1nkCBAIEggFuBIIBagFoAHcA3dzKNJXX4RYF +55Uy+sef+D0cUN/bADoUEnYKLKy7yCoAAAGY0FLb2AAABAMASDBGAiEAu/yU2Wks +def4mOQGqpu3z1JH8HEoMf8tMWfp6Q8UUSMCIQD6RDO1IyMK4RFircmSCccYFh/O +tl3PsA3pqXz1dThd1QB1AO08S9boBsKkogBX28sk4jgB31Ev7cSGxXAPIN23Pj/g +AAABmNBS28YAAAQDAEYwRAIgIryywG9w6/zYnnU3OKNjoDKhsjZzZS3eI+27vdBI +I90CIFxnBnmzKl7hYkn5caiKeUsv7xoYUjIkfES7r4OI1oc8AHYApELFBklgYVSP +D9TqnPt6LSZFTYepfy/fRVn2J086hFQAAAGY0FLb2QAABAMARzBFAiEAgdksB7sa +raxUUADBCqa9erRVVsPccu4pgUZzvBTEzwUCIHq7mUxayZrywuB3ymai6CESoy/D +G+e7DYOQCcAE7RX6MA0GCSqGSIb3DQEBCwUAA4IBAQBW6JszLOTVkWn589+8Ky9D ++89WoUoLQDpHS8wsOGuZvre6VmEmm68s+RaAE4bSwCuzxn59PIxrS6h7mYIjwIAw +08c51d97xMYtJAxW/8r7qK8uLbFfk6irU5AJEppIbdaODlEI2TBX9f3aERoItgIO +R4s6iUZO2clot1N4E0yrPziMuhxwKbkDbA2DhUx1Vl8FTfJd2wL2k5YAJpMiQWtc +bm49Fd2lJkmyx4EiwljGVTCApEZcjAVuVh06EKlb9yQt6Vt0HQEikUesD6UZ14ap +Vc9Dgp3cUE0pjQyBzqJPGiJNrGRutuTxAtGoKz7lnzxQjJxa6htuIQHo5537xDS7 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH +MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE +eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv +NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch +QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn +NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP +ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI +lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf +BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C +AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp +Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu +Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG +/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT +MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ +L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi +98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe +xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN +GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2 +n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg== +-----END CERTIFICATE----- diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Nginx/scs1755841100366_fuzsec.com_server.key b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Nginx/scs1755841100366_fuzsec.com_server.key new file mode 100644 index 0000000..58a37c7 --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Nginx/scs1755841100366_fuzsec.com_server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEAzrkj3m+fIKJ3jMMpQ+UvhofLJGb2oQPGqRmQwkTkVR1f9fsZ +UwP6ofKnGXOV5lqMcZkizMpxxzEEsk7bQatkMg5o5GwhXZZ6dS0gP7OQj1ZCl71U +TGUDzJrTBmeM/gob2bb357lgFuQ7TJFXV1A2nUis024VdZt9iBDsfdH2JSnosb6M +aos3Yh/34EP8GYlja5r7OOB/dIy5/x6Dr76Wuz2MYAVa0dTPNZSHFmwbyyBa6Lhi +fzXde/ZLmFuDd7yXa0JGSPNVyCayQZQrlQDlZRprRSMnuEkDWXl687rDhdkiwlgF +V69eZe1NxdZbZmsodencer83XsDDBkCkOWyNvQIDAQABAoIBAEJW8LdX29mlubbP +BIWY3X0PQ/Y9IqV+aDjpDucBI8Nax2pReAmHi91/2PcWfELtyQdFjQDqcMPrK6Yr +Hzq+TUuxCyFOwBBgE5FZ93Dp55jQJlO6uvw/KI53GwSBo6H8zX47NOhEuZzvBkam +l8BZ6gTkhy3ctH9G9Gx/fd1MzXCUI4nWl5Zuz8auUVsL5bDKyWlMqJGNVvoF7Jeq +rWDK3WWmBBprfD7wNktxsiSiybCnMSvtyPSI7KkymGOf9MXZFdKIZqMdRt2++UlX +x2tpoW93gUqdPxTm33yIAQV3/wa7RyQp4sABeHqMD6Mpr+yIx+ksQyfBjzBfHH5q +EkRZtBMCgYEA/ibMmvbkFEcj5SsQB/OzReCnzLm7QleroMr3N+Om18DXH8KAs6At +OOCttFCf69l9IsOOU4zKFdMvBI9YR8Hn1XMi0JaYEJGiSuaQzozqBrw7qi2CaXjY +fVXaAr9WFhrNuFDd8s2KTVke5MsbisqaD3Eco6jB1nfzlkjo0BkPiJsCgYEA0DoI +5p/QnhTXttb0E70NWCgzs7svoJqmYmTn8fqTVAbac/ALc8qnYjCnJLAI1mTDi3Zo +hYM8QEjT6tJnYzMHuH9wT8eyCk4jq7Rq0vW1a7wGGploWlxcfUgg12ErJs2FLRDJ +WFSSeg2upPk6hlTCTAbpUtggxqfz4MKkroogzIcCgYEAgJEeFhJpRLzMMsT7AhrN +CL9iA1W9ngz9nISwVQyLvT8nVECvnK6d0dUO6lWS4NuPywNEP43MOQgxE8xz6zDz +V248IWrdGBykDeHfRS3RwYB9alRFUZe5ZIYGmDc0lFAQ23nFHWvO19wKndEFaMue +7crZowzeqeDaT58obwUOb5sCgYEAwSkE9sPMJ8kX7tHqa6EVjvEEPTdo0CiGLoKC +s/OJ1gnhfmlwhkK5EZomgx8Vo6SnzWjTPv9l1hB5Hb1/EQPWpqz5h9is7WhdKLxd +2EL8v+sVEnm61xAU8FcHuCS4fe9rGkoXLWyO0NB+cSWNx+06rIJA0YwSo5ZL4vVN +BWi3UmMCgYEAmdmbEDA4er173Aay+WWtG6h/FB1FRR08TEqU0bsSecoZigRnqAB7 +ihsCFuWTbw+Akf5qPvaaIGQATCSxTeMH6Wu8aXFIbdDgfBhc4gWo9FCTiWIRbSKP +H4uFiA8FUDSlXmeRBjaOnZ8g7/ifvcEPLKiGYNe+F9ozBovcgRONSUw= +-----END RSA PRIVATE KEY----- diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Tomcat/scs1755841100366_fuzsec.com_keystorePass.txt b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Tomcat/scs1755841100366_fuzsec.com_keystorePass.txt new file mode 100644 index 0000000..90befc8 --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Tomcat/scs1755841100366_fuzsec.com_keystorePass.txt @@ -0,0 +1 @@ +Fs6>yKnCzGtzed8T \ No newline at end of file diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Tomcat/scs1755841100366_fuzsec.com_server.jks b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Tomcat/scs1755841100366_fuzsec.com_server.jks new file mode 100644 index 0000000..176b1b5 Binary files /dev/null and b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_Tomcat/scs1755841100366_fuzsec.com_server.jks differ diff --git a/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_domain.csr b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_domain.csr new file mode 100644 index 0000000..ba382cf --- /dev/null +++ b/scs1755841100366_fuzsec.com/scs1755841100366_fuzsec.com_domain.csr @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICrzCCAZcCAQAwajELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDXBlcnNvbmFsIHVz +ZXIxFjAUBgNVBAgMDXBlcnNvbmFsIHVzZXIxFjAUBgNVBAcMDXBlcnNvbmFsIHVz +ZXIxEzARBgNVBAMMCmZ1enNlYy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDOuSPeb58goneMwylD5S+Gh8skZvahA8apGZDCRORVHV/1+xlTA/qh +8qcZc5XmWoxxmSLMynHHMQSyTttBq2QyDmjkbCFdlnp1LSA/s5CPVkKXvVRMZQPM +mtMGZ4z+ChvZtvfnuWAW5DtMkVdXUDadSKzTbhV1m32IEOx90fYlKeixvoxqizdi +H/fgQ/wZiWNrmvs44H90jLn/HoOvvpa7PYxgBVrR1M81lIcWbBvLIFrouGJ/Nd17 +9kuYW4N3vJdrQkZI81XIJrJBlCuVAOVlGmtFIye4SQNZeXrzusOF2SLCWAVXr15l +7U3F1ltmayh16dx6vzdewMMGQKQ5bI29AgMBAAGgADANBgkqhkiG9w0BAQsFAAOC +AQEAgzg04DS+aEFnnXDTMOLZMvyHNVYRB0dAlLNJnjg0SAtpw4hSzb56hijiKPK7 +lKIEgZEv6D8RrDOuF+vyR+UkKkEOFyv9BtSQR44Lv3KU6++grfgIzYq9GTRXDCzh +thKRVASsadNZZmN5azSbEc7k0OLjXTZdC9Mx7DLCoJwRhz+YIxX5D+abdUM5lQME +/2UJ/Xu6g/92seGLjWCmdu5UVHklIq4EuTF6A/t6u461FoCjyUpk3q1XaDNy09Vx +gROXDna1w8llQy0+UfNwiRqRf3bpn/IuKCXX9X9BP6mqAa7XSycSSvBGTsae+h1H +E+kRd6krBsSFr6WL+bDC0bD4uw== +-----END CERTIFICATE REQUEST----- diff --git a/static/css/style.css b/static/css/style.css index 665ea8e..8a8627d 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -6,203 +6,1035 @@ } body { - font-family: 'Noto Sans SC', sans-serif; + font-family: 'Noto Sans SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; - color: #333; - background-color: #f9f9f9; + color: #1a1a1a; + background-color: #ffffff; } .container { width: 90%; - max-width: 1200px; + max-width: 1400px; margin: 0 auto; - padding: 0 15px; + padding: 0 20px; } a { text-decoration: none; - color: #0066cc; + color: #0052cc; + transition: color 0.2s ease; } a:hover { - color: #004499; + color: #003d99; } .btn { display: inline-block; - padding: 10px 20px; - background-color: #0066cc; + padding: 12px 24px; + background-color: #0052cc; color: white; - border-radius: 4px; - transition: background-color 0.3s; + border-radius: 6px; + font-weight: 500; + transition: all 0.3s ease; + border: none; + cursor: pointer; } .btn:hover { - background-color: #004499; + background-color: #003d99; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 82, 204, 0.2); +} + +.btn-outline { + background-color: transparent; + border: 2px solid #0052cc; + color: #0052cc; +} + +.btn-outline:hover { + background-color: #0052cc; color: white; } /* 头部样式 */ header { - background-color: white; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + background-color: rgba(255, 255, 255, 0.98); + backdrop-filter: blur(10px); + border-bottom: 1px solid #f0f0f0; position: fixed; width: 100%; top: 0; z-index: 1000; + transition: all 0.3s ease; } header .container { display: flex; justify-content: space-between; align-items: center; - padding: 15px 0; + padding: 12px 0; } header h1 { - font-size: 1.5rem; + font-size: 1.8rem; font-weight: 700; + margin: 0; } header h1 a { - color: #333; + color: #0052cc; + display: flex; + align-items: center; + gap: 10px; + text-decoration: none; +} + +.logo-img { + width: 170px; + height: 55px; + display: block; +} + +.logo { + font-size: 2rem; + font-weight: bold; + background: linear-gradient(135deg, #0052cc, #0077ff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +header nav { + display: flex; + align-items: center; + gap: 30px; } header nav ul { display: flex; list-style: none; -} - -header nav ul li { - margin-left: 20px; + gap: 25px; + margin: 0; + padding: 0; } header nav ul li a { - color: #333; + color: #1a1a1a; font-weight: 500; + font-size: 0.95rem; + padding: 8px 0; + position: relative; } header nav ul li a:hover { - color: #0066cc; + color: #0052cc; +} + +header nav ul li a::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background-color: #0052cc; + transition: width 0.3s ease; +} + +header nav ul li a:hover::after { + width: 100%; } /* 主要内容区域 */ main { margin-top: 80px; - padding: 40px 0; + padding: 0; } -/* 英雄区域 */ +/* 英雄区域 - 金融平台风格 */ .hero { - background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('../images/hero-bg.jpg'); - background-size: cover; - background-position: center; + background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%); + padding: 40px 0; color: white; - text-align: center; - padding: 100px 0; + position: relative; + overflow: hidden; } -.hero h2 { +.hero .container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 60px; + align-items: center; +} + +.hero-content h1 { + font-size: 3.5rem; + font-weight: 700; + margin-bottom: 15px; + line-height: 1.2; + background: linear-gradient(135deg, #0077ff, #00aaff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.hero-subtitle { + font-size: 1.5rem; + font-weight: 600; + margin-bottom: 20px; + color: #ffffff; +} + +.hero-description { + font-size: 1.1rem; + margin-bottom: 40px; + color: #cccccc; + line-height: 1.6; +} + +.hero-buttons { + display: flex; + gap: 15px; +} + +.btn-primary { + background: linear-gradient(135deg, #0077ff, #00aaff); + border: none; +} + +.btn-primary:hover { + background: linear-gradient(135deg, #0066cc, #0088ff); + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(0, 119, 255, 0.3); +} + +/* 市场行情显示器 */ +.market-ticker { + background: rgba(255, 255, 255, 0.1); + backdrop-filter: blur(10px); + border-radius: 16px; + padding: 25px; + border: 1px solid rgba(255, 255, 255, 0.2); +} + +.ticker-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; +} + +.ticker-header h3 { + color: white; + margin: 0; + font-size: 1.2rem; +} + +.refresh-badge { + background: #00cc00; + color: white; + padding: 4px 12px; + border-radius: 20px; + font-size: 0.8rem; + font-weight: 600; +} + +.ticker-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 12px 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.ticker-item:last-child { + border-bottom: none; +} + +.ticker-item .symbol { + font-weight: 600; + color: white; +} + +.ticker-item .price { + font-weight: 600; + color: white; +} + +.ticker-item .change { + font-weight: 600; + padding: 4px 8px; + border-radius: 4px; +} + +.ticker-item .change.positive { + background: rgba(0, 204, 0, 0.2); + color: #00cc00; +} + +.ticker-item .change.negative { + background: rgba(204, 0, 0, 0.2); + color: #cc0000; +} + +/* 特性部分 */ +.features-section { + padding: 100px 0; + background: #ffffff; +} + +.section-header { + text-align: center; + margin-bottom: 60px; +} + +.section-header h2 { + font-size: 2.5rem; + font-weight: 700; + color: #1a1a1a; + margin-bottom: 15px; +} + +.section-header p { + font-size: 1.1rem; + color: #666; + max-width: 600px; + margin: 0 auto; +} + +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 30px; +} + +.feature-card { + background: #ffffff; + padding: 30px; + border-radius: 12px; + box-shadow: 0 5px 25px rgba(0, 0, 0, 0.08); + text-align: center; + border: 1px solid #f0f0f0; + transition: all 0.3s ease; +} + +.feature-card:hover { + transform: translateY(-5px); + box-shadow: 0 15px 40px rgba(0, 0, 0, 0.12); +} + +.feature-card .feature-icon { font-size: 2.5rem; margin-bottom: 20px; } -.hero p { - font-size: 1.2rem; - margin-bottom: 30px; +.feature-card h3 { + font-size: 1.3rem; + font-weight: 600; + margin-bottom: 15px; + color: #1a1a1a; } -/* 特性网格 */ -.features, -.services-grid, -.team-grid { - margin: 50px 0; +.feature-card p { + color: #666; + line-height: 1.6; } -.feature-grid, -.services-grid, -.team-grid { +/* 交易工具部分 */ +.trading-tools { + padding: 100px 0; + background: #f8f9ff; +} + +.tools-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; - margin-top: 30px; } -.feature, -.service, -.team-member { - background-color: white; +.tool-card { + background: #ffffff; padding: 30px; - border-radius: 8px; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); - transition: transform 0.3s; + border-radius: 12px; + box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05); + transition: all 0.3s ease; } -.feature:hover, -.service:hover, -.team-member:hover { - transform: translateY(-5px); +.tool-card:hover { + transform: translateY(-3px); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); } -.feature h3, -.service h3, -.team-member h3 { +.tool-card h3 { + font-size: 1.3rem; + font-weight: 600; margin-bottom: 15px; - color: #0066cc; + color: #0052cc; } -.position { +.tool-card p { color: #666; - font-style: italic; + line-height: 1.6; +} + +/* 应用下载CTA */ +.app-download { + padding: 100px 0; + background: linear-gradient(135deg, #0052cc 0%, #0077ff 100%); + color: white; + text-align: center; +} + +.download-content h2 { + font-size: 2.5rem; + font-weight: 700; margin-bottom: 15px; } -/* 关于页面 */ -.about h2, -.services h2, -.contact h2, -.team h2, -.case-studies h2 { - text-align: center; - margin-bottom: 30px; - font-size: 2rem; +.download-content p { + font-size: 1.2rem; + margin-bottom: 40px; + opacity: 0.9; } -.subtitle { +.download-buttons { + display: flex; + gap: 20px; + justify-content: center; +} + +.download-buttons .btn { + display: flex; + align-items: center; + gap: 10px; + padding: 15px 30px; + font-weight: 600; +} + +.download-buttons .btn-outline { + background: transparent; + border: 2px solid white; + color: white; +} + +.download-buttons .btn-outline:hover { + background: white; + color: #0052cc; +} + +.download-buttons .icon { + font-size: 1.2rem; +} + +/* 特性网格 */ +.features { + padding: 100px 0; + background: #ffffff; +} + +.section-title { + text-align: center; + margin-bottom: 60px; +} + +.section-title h2 { + font-size: 2.5rem; + font-weight: 700; + color: #1a1a1a; + margin-bottom: 15px; +} + +.section-title p { + font-size: 1.1rem; + color: #666; + max-width: 600px; + margin: 0 auto; +} + +.feature-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); + gap: 40px; +} + +.feature { + background: #ffffff; + padding: 40px; + border-radius: 12px; + box-shadow: 0 5px 25px rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; + text-align: center; + border: 1px solid #f0f0f0; +} + +.feature:hover { + transform: translateY(-8px); + box-shadow: 0 15px 40px rgba(0, 0, 0, 0.12); +} + +.feature-icon { + width: 60px; + height: 60px; + margin: 0 auto 25px; + background: linear-gradient(135deg, #0052cc, #0077ff); + border-radius: 16px; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: 1.5rem; +} + +.feature h3 { + font-size: 1.4rem; + font-weight: 600; + margin-bottom: 15px; + color: #1a1a1a; +} + +.feature p { + color: #666; + line-height: 1.6; +} + +/* 服务网格 */ +.services { + padding: 100px 0; + background: #f8f9ff; +} + +.services-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 30px; + margin-top: 50px; +} + +.service { + background: #ffffff; + padding: 30px; + border-radius: 12px; + box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05); + transition: all 0.3s ease; +} + +.service:hover { + transform: translateY(-5px); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); +} + +.service h3 { + font-size: 1.3rem; + font-weight: 600; + margin-bottom: 15px; + color: #0052cc; +} + +/* 页脚样式 */ +footer { + background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%); + color: white; + padding: 60px 0 30px; +} + +footer .container { + display: grid; + grid-template-columns: 2fr 1fr 1fr 1fr; + gap: 5px; +} + +.footer-brand h3 { + font-size: 1.8rem; + margin-bottom: 15px; + background: linear-gradient(135deg, #0077ff, #00aaff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.footer-brand p { + color: #ccc; + line-height: 1.6; + margin-bottom: 20px; +} + +.footer-links h4 { + font-size: 1.1rem; + margin-bottom: 20px; + color: #ffffff; +} + +.footer-links ul { + list-style: none; + padding: 0; +} + +.footer-links ul li { + margin-bottom: 10px; +} + +.footer-links ul li a { + color: #ccc; + transition: color 0.2s ease; +} + +.footer-links ul li a:hover { + color: #0077ff; +} + +.footer-bottom { + grid-column: 1 / -1; + text-align: center; + padding-top: 30px; + border-top: 1px solid #444; + margin-top: 40px; +} + +.footer-bottom p { + color: #999; + margin: 0; +} + +/* 语言切换器样式 */ +.language-switcher { + display: flex; + align-items: center; + gap: 10px; +} + +.language-switcher select { + border: none; + background: transparent; + color: #666; + font-weight: 500; + font-size: 0.9rem; + padding: 4px 8px; + cursor: pointer; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +.language-switcher select:focus { + outline: none; +} + +/* 响应式设计 */ +@media (max-width: 1024px) { + footer .container { + grid-template-columns: 1fr 1fr; + gap: 30px; + } + + .hero .container { + gap: 40px; + } + + .hero-content h1 { + font-size: 3rem; + } +} + +@media (max-width: 768px) { + header .container { + flex-direction: row; + gap: 0; + } + + .hero .container { + grid-template-columns: 1fr; + gap: 40px; + text-align: center; + } + + .hero-content h1 { + font-size: 2.5rem; + } + + .hero-subtitle { + font-size: 1.3rem; + } + + .hero-description { + font-size: 1rem; + } + + .hero-buttons { + justify-content: center; + } + + .market-ticker { + order: -1; + } + + .features-grid { + grid-template-columns: 1fr; + gap: 20px; + } + + .feature-card { + padding: 25px; + } + + .tools-grid { + grid-template-columns: 1fr; + gap: 20px; + } + + .tool-card { + padding: 25px; + } + + .download-buttons { + flex-direction: column; + align-items: center; + } + + .download-buttons .btn { + width: 100%; + max-width: 250px; + justify-content: center; + } + + .feature-grid { + grid-template-columns: 1fr; + gap: 30px; + } + + .feature { + padding: 30px; + } + + footer .container { + grid-template-columns: 1fr; + gap: 30px; + } + + .services-grid { + grid-template-columns: 1fr; + gap: 20px; + } + + .service { + padding: 25px; + } +} + +@media (max-width: 480px) { + .container { + padding: 0 15px; + } + + .hero { + padding: 80px 0 40px; + } + + .hero-content h1 { + font-size: 2rem; + } + + .hero-subtitle { + font-size: 1.1rem; + } + + .section-header h2 { + font-size: 2rem; + } + + .section-title h2 { + font-size: 2rem; + } + + .feature { + padding: 20px; + } + + .feature-card { + padding: 20px; + } + + .tool-card { + padding: 20px; + } + + .service { + padding: 20px; + } + + .download-content h2 { + font-size: 2rem; + } + + .download-content p { + font-size: 1rem; + } + + /* 移动端表格优化 */ + .ticker-item { + flex-wrap: wrap; + gap: 8px; + } + + .ticker-item .symbol, + .ticker-item .price, + .ticker-item .change { + flex: 1; + min-width: 80px; + text-align: center; + } +} + +/* 超小屏幕设备 */ +@media (max-width: 360px) { + .hero-content h1 { + font-size: 1.8rem; + } + + .hero-buttons .btn { + padding: 10px 20px; + font-size: 0.9rem; + } + + .feature-icon { + width: 50px; + height: 50px; + font-size: 1.2rem; + } + + .feature h3 { + font-size: 1.2rem; + } + + .feature-card .feature-icon { + font-size: 2rem; + } + + .feature-card h3 { + font-size: 1.1rem; + } +} + +/* 横屏模式优化 */ +@media (max-height: 500px) and (orientation: landscape) { + .hero { + padding: 60px 0; + } + + .nav-menu { + padding: 60px 20px 20px; + } + + .nav-menu ul li a { + padding: 10px 0; + font-size: 1rem; + } +} + +/* 移动端导航菜单 */ +@media (max-width: 768px) { + .mobile-menu-toggle { + display: flex; + flex-direction: column; + justify-content: space-between; + width: 30px; + height: 24px; + background: none; + border: none; + cursor: pointer; + padding: 0; + z-index: 1000; + } + + .mobile-menu-toggle span { + display: block; + height: 3px; + width: 100%; + background-color: #1a1a1a; + border-radius: 3px; + transition: all 0.3s ease; + } + + .mobile-menu-toggle.active span:nth-child(1) { + transform: translateY(10px) rotate(45deg); + } + + .mobile-menu-toggle.active span:nth-child(2) { + opacity: 0; + } + + .mobile-menu-toggle.active span:nth-child(3) { + transform: translateY(-10px) rotate(-45deg); + } + + .nav-menu { + position: fixed; + top: 0; + right: -100%; + width: 80%; + max-width: 320px; + height: 100vh; + background: white; + box-shadow: -5px 0 25px rgba(0, 0, 0, 0.1); + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + padding: 80px 30px 30px; + transition: right 0.3s ease; + z-index: 999; + overflow-y: auto; + } + + .nav-menu.active { + right: 0; + } + + .nav-menu ul { + flex-direction: column; + gap: 0; + width: 100%; + } + + .nav-menu ul li { + width: 100%; + border-bottom: 1px solid #f0f0f0; + } + + .nav-menu ul li:last-child { + border-bottom: none; + } + + .nav-menu ul li a { + display: block; + padding: 15px 0; + font-size: 1.1rem; + font-weight: 500; + } + + .nav-menu ul li a::after { + display: none; + } + + .language-switcher { + margin-top: 30px; + flex-direction: column; + align-items: flex-start; + gap: 15px; + width: 100%; + } + + .language-switcher select { + font-size: 1rem; + padding: 8px 12px; + } + + /* 防止背景滚动 */ + body.menu-open { + overflow: hidden; + } + + /* 覆盖层 */ + .nav-menu::before { + content: ''; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; + z-index: -1; + } + + .nav-menu.active::before { + opacity: 1; + visibility: visible; + } +} + +/* 超小屏幕导航优化 */ +@media (max-width: 480px) { + .nav-menu { + width: 85%; + padding: 70px 20px 20px; + } + + .nav-menu ul li a { + font-size: 1rem; + padding: 12px 0; + } + + .language-switcher { + margin-top: 20px; + } +} + +/* 高DPI设备优化 */ +@media (-webkit-min-device-pixel-ratio: 2), +(min-resolution: 192dpi) { + .mobile-menu-toggle span { + height: 2.5px; + } +} + +/* 减少动画对性能的影响 */ +@media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} + +/* 联系页面样式 */ +.contact { + padding: 40px 0; +} + +.contact .container { + max-width: 1000px; +} + +.contact h2 { + font-size: 2.5rem; text-align: center; margin-bottom: 40px; - color: #666; + color: #1a1a1a; } -/* 联系我们页面 */ .contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; - margin-top: 40px; + align-items: start; } -.contact-info { - background-color: white; - padding: 30px; - border-radius: 8px; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); -} - -.contact-info h3 { +.contact-info h3, +.contact-form h3 { + font-size: 1.5rem; margin-bottom: 20px; - color: #0066cc; + color: #0052cc; } .contact-info p { + line-height: 2; margin-bottom: 15px; + color: #666; +} + +.contact-info p strong { + color: #1a1a1a; } .contact-form { - background-color: white; - padding: 30px; - border-radius: 8px; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + background: #f8f9ff; + padding: 25px; + border-radius: 10px; + border: 1px solid #e0e0e0; } .form-group { @@ -211,70 +1043,342 @@ main { .form-group label { display: block; - margin-bottom: 5px; + margin-bottom: 8px; font-weight: 500; + color: #1a1a1a; + line-height: 1.6; } .form-group input, .form-group textarea { width: 100%; - padding: 10px; + padding: 12px 15px; border: 1px solid #ddd; - border-radius: 4px; - font-family: inherit; + border-radius: 5px; + font-size: 1rem; + line-height: 1.6; + transition: border-color 0.3s ease; +} + +.form-group input:focus, +.form-group textarea:focus { + outline: none; + border-color: #0052cc; + box-shadow: 0 0 0 3px rgba(0, 82, 204, 0.1); } .form-group textarea { resize: vertical; + min-height: 120px; } .success-message { - background-color: #dff0d8; - color: #3c763d; + background: #d4edda; + color: #155724; padding: 15px; - border-radius: 4px; - margin-bottom: 20px; + border-radius: 6px; + margin-bottom: 30px; text-align: center; -} - -/* 页脚样式 */ -footer { - background-color: #333; - color: white; - padding: 30px 0; - text-align: center; -} - -footer .container { - display: flex; - justify-content: space-between; - align-items: center; -} - -.footer-links a { - color: #ccc; - margin-left: 15px; -} - -.footer-links a:hover { - color: white; + line-height: 1.6; } /* 响应式设计 */ @media (max-width: 768px) { .contact-grid { grid-template-columns: 1fr; + gap: 40px; } - header .container { + .contact-form { + padding: 25px; + } + + .contact h2 { + font-size: 2rem; + } + + .contact-info h3, + .contact-form h3 { + font-size: 1.3rem; + } +} + +/* 佣金费率表格样式 */ +.commission-table { + padding: 80px 0; + background: #f8f9ff; +} + +.table-container { + overflow-x: auto; + margin: 30px 0; + border-radius: 12px; + box-shadow: 0 5px 25px rgba(0, 0, 0, 0.08); +} + +.commission-rates-table { + width: 100%; + border-collapse: collapse; + background: white; + border-radius: 12px; + overflow: hidden; +} + +.commission-rates-table th, +.commission-rates-table td { + padding: 16px 20px; + text-align: left; + border-bottom: 1px solid #f0f0f0; +} + +.commission-rates-table th { + background: linear-gradient(135deg, #0052cc, #0077ff); + color: white; + font-weight: 600; + font-size: 0.95rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.commission-rates-table tr:last-child td { + border-bottom: none; +} + +.commission-rates-table tr:hover { + background-color: #f8f9ff; +} + +.commission-rates-table td { + color: #666; + font-size: 0.95rem; + line-height: 1.6; +} + +.commission-rates-table td:first-child { + font-weight: 600; + color: #1a1a1a; +} + +.table-notes { + text-align: center; + margin-top: 20px; + color: #999; + font-size: 0.9rem; + line-height: 1.6; +} + +/* 响应式表格 */ +@media (max-width: 768px) { + .commission-table { + padding: 60px 0; + } + + .commission-rates-table th, + .commission-rates-table td { + padding: 12px 15px; + font-size: 0.85rem; + } + + .commission-rates-table th { + font-size: 0.8rem; + } +} + +@media (max-width: 480px) { + .commission-rates-table { + font-size: 0.8rem; + } + + .commission-rates-table th, + .commission-rates-table td { + padding: 10px 12px; + } + + .table-container { + margin: 20px -15px; + border-radius: 0; + } +} + +/* Tabbed Interface Styles */ +.tabs-container { + margin: 40px 0; +} + +.tabs { + display: flex; + justify-content: center; + margin-bottom: 30px; + flex-wrap: wrap; + gap: 10px; +} + +.tab-button { + padding: 12px 24px; + background-color: #f0f0f0; + border: none; + border-radius: 6px; + font-weight: 500; + color: #666; + cursor: pointer; + transition: all 0.3s ease; + font-size: 0.95rem; +} + +.tab-button:hover { + background-color: #e0e0e0; + color: #333; +} + +.tab-button.active { + background: linear-gradient(135deg, #0052cc, #0077ff); + color: white; + box-shadow: 0 4px 12px rgba(0, 82, 204, 0.2); +} + +.tab-content { + border: 1px solid #f0f0f0; + border-radius: 12px; + background: white; + overflow: hidden; +} + +.tab-pane { + display: none; + padding: 0; +} + +.tab-pane.active { + display: block; +} + +/* Responsive Tabs */ +@media (max-width: 768px) { + .tabs { flex-direction: column; + align-items: center; + gap: 8px; } - header nav ul { - margin-top: 15px; + .tab-button { + width: 100%; + max-width: 300px; + text-align: center; + padding: 10px 20px; + font-size: 0.9rem; + } +} + +@media (max-width: 480px) { + .tabs { + gap: 6px; } - header nav ul li { - margin: 0 10px; + .tab-button { + padding: 8px 16px; + font-size: 0.85rem; + } + + .tab-content { + border-radius: 8px; + } +} + +/* Volume Discounts Styles */ +.volume-discounts { + margin-top: 40px; + padding: 30px; + background: #f8f9ff; + border-radius: 12px; + border: 1px solid #e0e0e0; +} + +.volume-discounts h4 { + font-size: 1.4rem; + color: #0052cc; + margin-bottom: 25px; + text-align: center; + font-weight: 600; +} + +.discount-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 30px; +} + +.discount-tier { + background: white; + padding: 25px; + border-radius: 8px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08); + border: 1px solid #f0f0f0; +} + +.discount-tier h5 { + font-size: 1.1rem; + color: #1a1a1a; + margin-bottom: 20px; + font-weight: 600; + text-align: center; + padding-bottom: 15px; + border-bottom: 2px solid #0052cc; +} + +.discount-tier p { + margin: 12px 0; + color: #666; + line-height: 1.5; + font-size: 0.95rem; +} + +.discount-tier p:first-of-type { + margin-top: 0; +} + +.discount-tier p:last-of-type { + margin-bottom: 0; +} + +/* Responsive Design for Discounts */ +@media (max-width: 768px) { + .volume-discounts { + padding: 20px; + margin-top: 30px; + } + + .discount-grid { + grid-template-columns: 1fr; + gap: 20px; + } + + .discount-tier { + padding: 20px; + } + + .volume-discounts h4 { + font-size: 1.2rem; + margin-bottom: 20px; + } +} + +@media (max-width: 480px) { + .volume-discounts { + padding: 15px; + margin-top: 25px; + } + + .discount-tier { + padding: 15px; + } + + .discount-tier h5 { + font-size: 1rem; + margin-bottom: 15px; + } + + .discount-tier p { + font-size: 0.9rem; + margin: 10px 0; } } \ No newline at end of file diff --git a/static/images/1024.jpg b/static/images/1024.jpg new file mode 100644 index 0000000..dcd89fc Binary files /dev/null and b/static/images/1024.jpg differ diff --git a/static/images/logo.png b/static/images/logo.png new file mode 100644 index 0000000..852dc48 Binary files /dev/null and b/static/images/logo.png differ diff --git a/static/images/logo.svg b/static/images/logo.svg new file mode 100644 index 0000000..828daa9 Binary files /dev/null and b/static/images/logo.svg differ diff --git a/static/images/logo1.png b/static/images/logo1.png new file mode 100644 index 0000000..e7d00b5 Binary files /dev/null and b/static/images/logo1.png differ diff --git a/static/js/market-ticker.js b/static/js/market-ticker.js new file mode 100644 index 0000000..ddee13d --- /dev/null +++ b/static/js/market-ticker.js @@ -0,0 +1,110 @@ +// 实时行情数据更新功能 +document.addEventListener('DOMContentLoaded', function() { + const tickerContent = document.querySelector('.ticker-content'); + if (!tickerContent) return; + + // 初始占位符数据 + const initialData = [ + { symbol: 'HSI', price: '16,842.23', change: '+1.2%', direction: 'positive' }, + { symbol: 'AAPL', price: '173.45', change: '+0.8%', direction: 'positive' }, + { symbol: 'TSLA', price: '245.67', change: '-0.5%', direction: 'negative' }, + { symbol: 'BTC/USD', price: '61,234.56', change: '+2.1%', direction: 'positive' } + ]; + + // 初始化行情显示器 + function initializeTicker() { + tickerContent.innerHTML = ''; + initialData.forEach(item => { + const tickerItem = createTickerItem(item); + tickerContent.appendChild(tickerItem); + }); + } + + // 创建行情项元素 + function createTickerItem(data) { + const item = document.createElement('div'); + item.className = 'ticker-item'; + item.innerHTML = ` + ${data.symbol} + ${formatPrice(data.price)} + ${data.change} + `; + return item; + } + + // 格式化价格显示 + function formatPrice(price) { + if (typeof price === 'number') { + // 对于数字,添加千位分隔符 + return price.toLocaleString('en-US', { + minimumFractionDigits: 2, + maximumFractionDigits: 2 + }); + } + return price; + } + + // 获取实时市场数据 + async function fetchMarketData() { + try { + const response = await fetch('/api/market-data'); + if (!response.ok) { + throw new Error('网络响应不正常'); + } + const data = await response.json(); + + if (data.status === 'success') { + updateTicker(data.data); + } else { + console.error('获取市场数据失败:', data.message); + } + } catch (error) { + console.error('获取实时行情数据时发生错误:', error); + // 保持显示静态数据,不更新 + } + } + + // 更新行情显示器 + function updateTicker(marketData) { + tickerContent.innerHTML = ''; + marketData.forEach(item => { + const direction = item.change_percent >= 0 ? 'positive' : 'negative'; + const changeSign = item.change_percent >= 0 ? '+' : ''; + + const tickerItem = document.createElement('div'); + tickerItem.className = 'ticker-item'; + tickerItem.innerHTML = ` + ${item.symbol} + ${formatPrice(item.price)} + ${changeSign}${item.change_percent}% + `; + tickerContent.appendChild(tickerItem); + }); + } + + // 初始化并开始定时更新 + initializeTicker(); + + // 立即获取一次数据 + fetchMarketData(); + + // 每30秒更新一次数据 + setInterval(fetchMarketData, 30000); + + // 添加刷新按钮功能 + const refreshBadge = document.querySelector('.refresh-badge'); + if (refreshBadge) { + refreshBadge.addEventListener('click', function() { + this.textContent = '刷新中...'; + fetchMarketData().then(() => { + setTimeout(() => { + this.textContent = 'Live'; + }, 1000); + }); + }); + + // 添加提示文字 + refreshBadge.title = '点击手动刷新行情'; + refreshBadge.style.cursor = 'pointer'; + } +}); diff --git a/static/js/mobile-menu.js b/static/js/mobile-menu.js new file mode 100644 index 0000000..a3585bc --- /dev/null +++ b/static/js/mobile-menu.js @@ -0,0 +1,54 @@ +// 移动端菜单功能 +document.addEventListener('DOMContentLoaded', function() { + const mobileMenuToggle = document.querySelector('.mobile-menu-toggle'); + const navMenu = document.querySelector('.nav-menu'); + + if (mobileMenuToggle && navMenu) { + // 切换菜单显示 + mobileMenuToggle.addEventListener('click', function() { + navMenu.classList.toggle('active'); + mobileMenuToggle.classList.toggle('active'); + document.body.classList.toggle('menu-open'); + }); + + // 点击菜单外区域关闭菜单 + document.addEventListener('click', function(event) { + if (!navMenu.contains(event.target) && !mobileMenuToggle.contains(event.target)) { + navMenu.classList.remove('active'); + mobileMenuToggle.classList.remove('active'); + document.body.classList.remove('menu-open'); + } + }); + + // 防止菜单内点击事件冒泡 + navMenu.addEventListener('click', function(event) { + event.stopPropagation(); + }); + + // 菜单项点击后关闭菜单 + const menuItems = navMenu.querySelectorAll('a'); + menuItems.forEach(item => { + item.addEventListener('click', function() { + navMenu.classList.remove('active'); + mobileMenuToggle.classList.remove('active'); + document.body.classList.remove('menu-open'); + }); + }); + } + + // 窗口大小变化时重置菜单状态 + window.addEventListener('resize', function() { + if (window.innerWidth > 768) { + navMenu.classList.remove('active'); + mobileMenuToggle.classList.remove('active'); + document.body.classList.remove('menu-open'); + } + }); +}); + +// 语言切换功能 +function changeLanguage(langCode) { + if (langCode) { + window.location.href = '/set_language/' + langCode; + } +} diff --git a/static/js/tabs.js b/static/js/tabs.js new file mode 100644 index 0000000..48dcb49 --- /dev/null +++ b/static/js/tabs.js @@ -0,0 +1,72 @@ +// Tab functionality for commission rates +document.addEventListener('DOMContentLoaded', function() { + const tabButtons = document.querySelectorAll('.tab-button'); + const tabPanes = document.querySelectorAll('.tab-pane'); + const tabsContainer = document.querySelector('.tabs-container'); + + // Function to switch tabs + function switchTab(tabId) { + // Hide all tab panes + tabPanes.forEach(pane => { + pane.classList.remove('active'); + }); + + // Remove active class from all buttons + tabButtons.forEach(button => { + button.classList.remove('active'); + }); + + // Show the selected tab pane + const selectedPane = document.getElementById(tabId); + if (selectedPane) { + selectedPane.classList.add('active'); + } + + // Activate the clicked button + const activeButton = document.querySelector(`[data-tab="${tabId}"]`); + if (activeButton) { + activeButton.classList.add('active'); + } + + // Update URL hash for deep linking without scrolling + if (history.replaceState) { + history.replaceState(null, null, '#' + tabId); + } else { + window.location.hash = tabId; + } + + // Smoothly scroll to the top of the tabs container with offset + if (tabsContainer) { + const containerTop = tabsContainer.getBoundingClientRect().top + window.pageYOffset; + const offset = 100; // Adjust this value to control how much to scroll + window.scrollTo({ + top: containerTop - offset, + behavior: 'smooth' + }); + } + } + + // Add click event listeners to all tab buttons + tabButtons.forEach(button => { + button.addEventListener('click', function() { + const tabId = this.getAttribute('data-tab'); + switchTab(tabId); + }); + }); + + // Check for hash in URL on page load + if (window.location.hash) { + const hash = window.location.hash.substring(1); + if (['stocks', 'options', 'futures', 'funds', 'other'].includes(hash)) { + switchTab(hash); + } + } + + // Handle browser back/forward navigation + window.addEventListener('hashchange', function() { + const hash = window.location.hash.substring(1); + if (['stocks', 'options', 'futures', 'funds', 'other'].includes(hash)) { + switchTab(hash); + } + }); +}); diff --git a/templates/base.html b/templates/base.html index 4d5377f..bf056d5 100644 --- a/templates/base.html +++ b/templates/base.html @@ -13,14 +13,37 @@
-

{{ company.name }}

-
@@ -31,13 +54,49 @@ + + + + \ No newline at end of file diff --git a/templates/contact.html b/templates/contact.html index 591965d..c8457c7 100644 --- a/templates/contact.html +++ b/templates/contact.html @@ -1,5 +1,7 @@ {% extends "base.html" %} + + {% block title %}联系我们{% endblock %} {% block content %} @@ -17,8 +19,8 @@

联系方式

地址:{{ company.contact.address }}

-

电话:{{ company.contact.phone }}

-

邮箱:{{ company.contact.email }}

+

电话:{{ company.contact.Tel }}

+

邮箱:{{ company.contact.Email }}

工作时间

周一至周五: 9:00 - 18:00

diff --git a/templates/download.html b/templates/download.html new file mode 100644 index 0000000..d702cd3 --- /dev/null +++ b/templates/download.html @@ -0,0 +1,87 @@ +{% extends "base.html" %} + +{% block title %}{{ t('download') if t('download') else '下载' }}{% endblock %} + +{% block content %} +
+
+

{{ t('download_clients') if t('download_clients') else '客户端下载' }}

+

{{ t('download_description') if t('download_description') else '下载我们的客户端,体验更便捷的服务' }}

+
+
+ +
+
+
+

{{ t('available_downloads') if t('available_downloads') else '可用下载' }}

+

{{ t('choose_platform') if t('choose_platform') else '选择适合您设备的客户端版本' }}

+
+ +
+
+
💻
+

{{ t('pc_client') if t('pc_client') else '电脑客户端' }}

+

{{ t('pc_client_desc') if t('pc_client_desc') else '适用于Windows系统的桌面客户端,提供完整功能体验' }}

+ {{ t('download_now') if t('download_now') else '立即下载' }} +
+

{{ t('version') if t('version') else '版本' }}: v2.1.0

+

{{ t('file_size') if t('file_size') else '文件大小' }}: 85.6 MB

+

{{ t('system_requirements') if t('system_requirements') else '系统要求' }}: Windows + 10+

+
+
+ +
+
📱
+

{{ t('android_client') if t('android_client') else '安卓手机客户端' }}

+

{{ t('android_client_desc') if t('android_client_desc') else '适用于Android手机的移动客户端,随时随地管理您的账户' }}

+ {{ t('download_now') if t('download_now') else '立即下载' }} +
+

{{ t('version') if t('version') else '版本' }}: v4.60.0

+

{{ t('file_size') if t('file_size') else '文件大小' }}: 103.2 MB

+

{{ t('system_requirements') if t('system_requirements') else '系统要求' }}: Android + 8.0+

+
+
+ +
+
🖼️
+

{{ t('image_download') if t('image_download') else '图片下载' }}

+

{{ t('image_download_desc') if t('image_download_desc') else '下载公司标志或相关图片' }}

+ {{ + t('download_image') + if t('download_image') else '下载图片' }} +
+

{{ t('file_format') if t('file_format') else '文件格式' }}: JPG

+

{{ t('file_size') if t('file_size') else '文件大小' }}: 约 50 KB

+

{{ t('resolution') if t('resolution') else '分辨率' }}: 80x80 pixels

+
+
+
+
+
+ +
+
+
+

{{ t('features') if t('features') else '客户端特色功能' }}

+
+
+
+

{{ t('real_time_quotes') if t('real_time_quotes') else '实时行情' }}

+

{{ t('real_time_quotes_desc') if t('real_time_quotes_desc') else '提供全球市场的实时行情数据,及时掌握市场动态' }}

+
+
+

{{ t('secure_transaction') if t('secure_transaction') else '安全交易' }}

+

{{ t('secure_transaction_desc') if t('secure_transaction_desc') else '多重加密保护,确保您的交易安全和资金安全' }}

+
+
+

{{ t('multi_device_sync') if t('multi_device_sync') else '多设备同步' }}

+

{{ t('multi_device_sync_desc') if t('multi_device_sync_desc') else '支持电脑和手机客户端数据同步,随时随地继续操作' }}

+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/help.html b/templates/help.html new file mode 100644 index 0000000..4f549f0 --- /dev/null +++ b/templates/help.html @@ -0,0 +1,87 @@ +{% extends "base.html" %} + +{% block title %}{{ t('help') if t('help') else '帮助' }}{% endblock %} + +{% block content %} +
+
+

{{ t('help') if t('help') else '帮助中心' }}

+

{{ t('help_description') if t('help_description') else '获取使用指南和常见问题解答' }}

+
+
+ +
+
+
+

{{ t('frequently_asked_questions') if t('frequently_asked_questions') else '常见问题' }}

+

{{ t('faq_subtitle') if t('faq_subtitle') else '找到您需要的答案' }}

+
+ +
+
+

{{ t('faq1_question') if t('faq1_question') else '如何注册账户?' }}

+

{{ t('faq1_answer') if t('faq1_answer') else '访问注册页面,填写基本信息并完成身份验证即可创建账户。' }}

+
+ +
+

{{ t('faq2_question') if t('faq2_question') else '如何下载客户端?' }}

+

{{ t('faq2_answer') if t('faq2_answer') else '在下载页面选择适合您设备的版本,点击下载按钮即可获取安装文件。' }}

+
+ +
+

{{ t('faq3_question') if t('faq3_question') else '交易费用如何计算?' }}

+

{{ t('faq3_answer') if t('faq3_answer') else '交易费用根据您的套餐类型和交易量计算,具体标准请参考收费页面。' }}

+
+ +
+

{{ t('faq4_question') if t('faq4_question') else '如何联系客服?' }}

+

{{ t('faq4_answer') if t('faq4_answer') else '您可以通过联系页面提交问题,或直接拨打客服电话获取帮助。' }}

+
+ +
+

{{ t('faq5_question') if t('faq5_question') else '支持哪些支付方式?' }}

+

{{ t('faq5_answer') if t('faq5_answer') else '我们支持银行转账、信用卡、支付宝和微信支付等多种支付方式。' }}

+
+ +
+

{{ t('faq6_question') if t('faq6_question') else '如何查看交易记录?' }}

+

{{ t('faq6_answer') if t('faq6_answer') else '登录账户后,在交易记录页面可以查看所有的历史交易明细。' }}

+
+
+
+
+ +
+
+
+

{{ t('contact_support') if t('contact_support') else '联系支持' }}

+

{{ t('support_description') if t('support_description') else '如果您的问题未在常见问题中找到答案,请联系我们的支持团队' }}

+
+ +
+
+
📧
+

{{ t('email_support') if t('email_support') else '邮件支持' }}

+

{{ t('email_support_desc') if t('email_support_desc') else '发送邮件至 Sec.Info@fuzsec.com,我们将在24小时内回复' }} +

+ {{ t('send_email') if t('send_email') else '发送邮件' }} +
+ +
+
📞
+

{{ t('phone_support') if t('phone_support') else '电话支持' }}

+

{{ t('phone_support_desc') if t('phone_support_desc') else '拨打客服热线 +852 35856298,工作日9:00-18:00' }} +

+ {{ t('call_now') if t('call_now') else '立即拨打' }} +
+ +
+
💬
+

{{ t('live_chat') if t('live_chat') else '在线聊天' }}

+

{{ t('live_chat_desc') if t('live_chat_desc') else '通过网站右下角的聊天窗口与客服实时沟通' }}

+ {{ t('start_chat') if t('start_chat') else '开始聊天' }} +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 2757d88..c7f71aa 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,31 +1,127 @@ {% extends "base.html" %} -{% block title %}首页{% endblock %} +{% block title %}{{ t('home') }}{% endblock %} {% block content %} +
-

{{ company.slogan }}

-

领先的数字技术解决方案提供商

- 了解我们的服务 +
+

{{ t('slogan') }}

+

{{ t('hero_subtitle') if t('hero_subtitle') else '专业证券交易与投资平台' }}

+

{{ t('hero_description') if t('hero_description') else + '提供全球市场股票、期货、期权交易,智能投顾服务,助力您的财富增长' }}

+ +
+
+
+
+

{{ t('market_quotes') if t('market_quotes') else '实时行情' }}

+ Live +
+
+
+ HSI + 16,842.23 + +1.2% +
+
+ AAPL + 173.45 + +0.8% +
+
+ TSLA + 245.67 + -0.5% +
+
+ BTC/USD + 61,234.56 + +2.1% +
+
+
+
-
+ +
-

我们的优势

-
-
-

创新技术

-

采用最前沿的人工智能和大数据技术,为客户提供卓越的解决方案。

+
+

{{ t('why_choose_us') if t('why_choose_us') else '为什么选择我们' }}

+

{{ t('features_subtitle') if t('features_subtitle') else '专业、安全、便捷的投资体验' }}

+
+
+
+
📈
+

{{ t('global_markets') if t('global_markets') else '全球市场' }}

+

{{ t('global_markets_desc') if t('global_markets_desc') else '港股、美股、A股、加密货币等多市场交易' }}

-
-

专业团队

-

由经验丰富的技术专家和行业顾问组成的团队,确保项目高质量交付。

+
+
🔒
+

{{ t('secure_trading') if t('secure_trading') else '安全交易' }}

+

{{ t('secure_trading_desc') if t('secure_trading_desc') else '银行级安全防护,资金隔离保障' }}

-
-

客户至上

-

我们始终将客户需求放在首位,提供个性化的服务和解决方案。

+
+
💡
+

{{ t('smart_investing') if t('smart_investing') else '智能投资' }}

+

{{ t('smart_investing_desc') if t('smart_investing_desc') else 'AI投顾、智能选股、量化策略' }}

+
+
+
💰
+

{{ t('low_fees') if t('low_fees') else '低手续费' }}

+

{{ t('low_fees_desc') if t('low_fees_desc') else '零佣金交易,透明收费标准' }}

+
+
+
+
+ + +
+
+
+

{{ t('trading_tools') if t('trading_tools') else '专业交易工具' }}

+

{{ t('trading_tools_subtitle') if t('trading_tools_subtitle') else '丰富的分析工具,助力投资决策' }}

+
+
+
+

{{ t('realtime_charts') if t('realtime_charts') else '实时图表' }}

+

{{ t('realtime_charts_desc') if t('realtime_charts_desc') else '多时间周期K线图,技术指标分析' }}

+
+
+

{{ t('news_analysis') if t('news_analysis') else '新闻分析' }}

+

{{ t('news_analysis_desc') if t('news_analysis_desc') else '实时财经新闻,市场情绪分析' }}

+
+
+

{{ t('portfolio_management') if t('portfolio_management') else '组合管理' }}

+

{{ t('portfolio_management_desc') if t('portfolio_management_desc') else '投资组合分析,风险控制工具' }}

+
+
+
+
+ + +
+
+
+

{{ t('download_app_cta') if t('download_app_cta') else '立即下载客户端' }}

+

{{ t('download_app_desc') if t('download_app_desc') else '随时随地交易,把握投资机会' }}

+
diff --git a/templates/pricing.html b/templates/pricing.html new file mode 100644 index 0000000..44c8020 --- /dev/null +++ b/templates/pricing.html @@ -0,0 +1,387 @@ +{% extends "base.html" %} + +{% block title %}{{ t('pricing') if t('pricing') else '收费' }}{% endblock %} + +{% block content %} +
+
+

{{ t('pricing') if t('pricing') else '收费方案' }}

+

{{ t('pricing_description') if t('pricing_description') else '透明合理的收费结构,助力您的投资成功' }}

+
+
+ +
+
+
+

{{ t('commission_rates') if t('commission_rates') else '详细佣金费率' }}

+

{{ t('commission_rates_desc') if t('commission_rates_desc') else '透明公开的交易费用,助力您的投资决策' }}

+
+ +
+
+ + + + + +
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ t('market') if t('market') else '市场' }}{{ t('product_type') if t('product_type') else '产品类型' }}{{ t('commission_rate') if t('commission_rate') else '佣金费率' }}{{ t('minimum_fee') if t('minimum_fee') else '最低收费' }}{{ t('additional_fees') if t('additional_fees') else '其他费用' }}
港股股票交易0.25%HK$ 100印花税: 0.13%
交易征费: 0.0027%
证监会征费: 0.00015%
美股股票交易US$ 0.005/股US$ 1.00SEC Fee: 0.0000229%
FINRA TAF: US$ 0.000145/股
A股股票交易0.03%¥ 5.00印花税: 0.1%
日本股票交易0.20%¥ 100交易所费: 0.003%
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ t('market') if t('market') else '市场' }}{{ t('product_type') if t('product_type') else '产品类型' }}{{ t('commission_rate') if t('commission_rate') else '佣金费率' }}{{ t('minimum_fee') if t('minimum_fee') else '最低收费' }}{{ t('additional_fees') if t('additional_fees') else '其他费用' }}
港股股票期权(标准)HK$ 15/张HK$ 30交易征费: 0.0027%
证监会征费: 0.00015%
结算费: HK$ 0.5/张
股票期权(大宗交易)HK$ 10/张HK$ 100交易征费: 0.0027%
证监会征费: 0.00015%
指数期权HK$ 12/张HK$ 25交易征费: 0.0027%
证监会征费: 0.00015%
美股股票期权(标准合约)US$ 0.65/合约US$ 1.00SEC Fee: 0.0000229%
FINRA TAF: US$ 0.000145/股
股票期权(大宗交易)US$ 0.50/合约US$ 1.00SEC Fee: 0.0000229%
FINRA TAF: US$ 0.000145/股
指数期权(标准)US$ 1.50/合约US$ 1.00交易所费用: US$ 0.15/合约
清算费: US$ 0.05/合约
指数期权(迷你)US$ 0.75/合约US$ 1.00交易所费用: US$ 0.10/合约
清算费: US$ 0.03/合约
A股上证50ETF期权¥ 5/张¥ 10经手费: ¥ 0.3/张
结算费: ¥ 0.3/张
沪深300期权¥ 8/张¥ 15经手费: ¥ 0.5/张
结算费: ¥ 0.5/张
新加坡新华A50指数期权US$ 2.00/合约US$ 5.00交易所费用: US$ 0.25/合约
清算费: US$ 0.10/合约
+
+ +
+

成交量折扣计划

+
+
+
美股期权
+

月交易量 1-999 合约: US$ 0.65/合约

+

月交易量 1,000-4,999 合约: US$ 0.55/合约

+

月交易量 5,000-9,999 合约: US$ 0.45/合约

+

月交易量 10,000+ 合约: US$ 0.35/合约

+
+
+
港股期权
+

月交易量 1-499 张: HK$ 15/张

+

月交易量 500-1,999 张: HK$ 12/张

+

月交易量 2,000-4,999 张: HK$ 10/张

+

月交易量 5,000+ 张: HK$ 8/张

+
+
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ t('market') if t('market') else '市场' }}{{ t('product_type') if t('product_type') else '产品类型' }}{{ t('commission_rate') if t('commission_rate') else '佣金费率' }}{{ t('minimum_fee') if t('minimum_fee') else '最低收费' }}{{ t('additional_fees') if t('additional_fees') else '其他费用' }}
港股期货交易HK$ 10/张HK$ 50证监会征费: 0.00015%
美股指数期货US$ 2.50/合约US$ 1.00NFA Fee: US$ 0.02/合约
商品期货黄金期货US$ 5.00/合约US$ 10.00交易所费用: US$ 1.50/合约
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ t('market') if t('market') else '市场' }}{{ t('product_type') if t('product_type') else '产品类型' }}{{ t('commission_rate') if t('commission_rate') else '佣金费率' }}{{ t('minimum_fee') if t('minimum_fee') else '最低收费' }}{{ t('additional_fees') if t('additional_fees') else '其他费用' }}
港股互惠基金0.50%HK$ 100托管费: 0.15%/年
美股ETF基金US$ 0.005/股US$ 1.00SEC Fee: 0.0000229%
债券基金固定收益0.25%US$ 25.00管理费: 0.10%/年
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ t('market') if t('market') else '市场' }}{{ t('product_type') if t('product_type') else '产品类型' }}{{ t('commission_rate') if t('commission_rate') else '佣金费率' }}{{ t('minimum_fee') if t('minimum_fee') else '最低收费' }}{{ t('additional_fees') if t('additional_fees') else '其他费用' }}
加密货币现货交易0.10%US$ 1.00网络费用: 可变
外汇主要货币对0.08%US$ 10.00隔夜利息: 可变
结构性产品牛熊证0.20%HK$ 50行使费: 0.003%
+
+
+
+
+ +
+

* {{ t('commission_note') if t('commission_note') else '以上费率仅供参考,实际费用可能因市场情况而变化。详细费用请参考最新费率表。' }}

+
+
+
+ +
+
+
+

{{ t('pricing_plans') if t('pricing_plans') else '收费标准' }}

+

{{ t('choose_plan') if t('choose_plan') else '选择适合您的投资方案' }}

+
+ +
+
+
💰
+

{{ t('basic_plan') if t('basic_plan') else '基础套餐' }}

+

{{ t('basic_plan_desc') if t('basic_plan_desc') else '适合初级投资者的入门套餐' }}

+
¥299/月
+
    +
  • {{ t('feature1') if t('feature1') else '基础行情数据' }}
  • +
  • {{ t('feature2') if t('feature2') else '5次免费交易' }}
  • +
  • {{ t('feature3') if t('feature3') else '基础分析工具' }}
  • +
+ {{ t('get_started') if t('get_started') else '立即开通' + }} +
+ +
+
💎
+

{{ t('pro_plan') if t('pro_plan') else '专业套餐' }}

+

{{ t('pro_plan_desc') if t('pro_plan_desc') else '适合活跃交易者的专业套餐' }}

+
¥899/月
+
    +
  • {{ t('feature4') if t('feature4') else '高级行情数据' }}
  • +
  • {{ t('feature5') if t('feature5') else '无限次交易' }}
  • +
  • {{ t('feature6') if t('feature6') else '专业分析工具' }}
  • +
  • {{ t('feature7') if t('feature7') else '实时市场警报' }}
  • +
+ {{ t('get_started') if t('get_started') else '立即开通' + }} +
+ +
+
🏆
+

{{ t('vip_plan') if t('vip_plan') else 'VIP套餐' }}

+

{{ t('vip_plan_desc') if t('vip_plan_desc') else '适合机构投资者的尊贵套餐' }}

+
¥2999/月
+
    +
  • {{ t('feature8') if t('feature8') else '全市场行情数据' }}
  • +
  • {{ t('feature9') if t('feature9') else '专属客户经理' }}
  • +
  • {{ t('feature10') if t('feature10') else '高级分析工具套件' }}
  • +
  • {{ t('feature11') if t('feature11') else '个性化投资策略' }}
  • +
  • {{ t('feature12') if t('feature12') else '优先客服支持' }}
  • +
+ {{ t('get_started') if t('get_started') else '立即开通' + }} +
+
+
+
+ +
+
+
+

{{ t('why_choose_our_pricing') if t('why_choose_our_pricing') else '为什么选择我们的收费方案' }}

+
+
+
+

{{ t('transparent_pricing') if t('transparent_pricing') else '透明收费' }}

+

{{ t('transparent_pricing_desc') if t('transparent_pricing_desc') else '无隐藏费用,所有收费项目清晰明了' }}

+
+
+

{{ t('value_for_money') if t('value_for_money') else '物超所值' }}

+

{{ t('value_for_money_desc') if t('value_for_money_desc') else '提供远超价格的优质服务和工具' }}

+
+
+

{{ t('flexible_plans') if t('flexible_plans') else '灵活选择' }}

+

{{ t('flexible_plans_desc') if t('flexible_plans_desc') else '多种套餐满足不同投资需求' }}

+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/services.html b/templates/services.html index ea77249..7d1f2b5 100644 --- a/templates/services.html +++ b/templates/services.html @@ -32,6 +32,10 @@

金融机构风险管理系统

大数据分析帮助客户识别并减少了30%的欺诈交易。

+
+

金融机构风险管理系统

+

大数据分析帮助客户识别并减少了30%的欺诈交易。

+