merge: 合并服务器代码,统一品牌和配置
@@ -32,7 +32,8 @@
|
||||
"WebFetch(domain:bocha-ai.feishu.cn)",
|
||||
"Bash(ls:*)",
|
||||
"Bash(git pull:*)",
|
||||
"Bash(del nul)"
|
||||
"Bash(del nul)",
|
||||
"Bash(git checkout:*)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
12
.gitignore
vendored
@@ -70,3 +70,15 @@ backup_*.sql
|
||||
*.tmp
|
||||
*.bak
|
||||
*.cache
|
||||
|
||||
# 部署相关文件
|
||||
*.patch
|
||||
*_deploy*.sh
|
||||
*.backup
|
||||
|
||||
# 用户上传的文件
|
||||
static/logos/*
|
||||
!static/logos/.gitkeep
|
||||
|
||||
# 临时文件
|
||||
nul
|
||||
|
||||
14
config.py
@@ -56,6 +56,20 @@ class Config:
|
||||
NEWS_SEARCH_FRESHNESS = 'oneMonth' # 默认搜索一个月内的新闻
|
||||
NEWS_SEARCH_SUMMARY = True # 是否显示摘要
|
||||
|
||||
# DeepSeek API配置
|
||||
DEEPSEEK_API_KEY = os.environ.get('DEEPSEEK_API_KEY')
|
||||
DEEPSEEK_BASE_URL = os.environ.get('DEEPSEEK_BASE_URL') or 'https://api.deepseek.com'
|
||||
|
||||
# 博查 Web Search API配置
|
||||
BOCHA_API_KEY = os.environ.get('BOCHA_API_KEY')
|
||||
BOCHA_BASE_URL = os.environ.get('BOCHA_BASE_URL') or 'https://api.bocha.cn'
|
||||
BOCHA_SEARCH_ENDPOINT = '/v1/web-search'
|
||||
|
||||
# 新闻搜索配置
|
||||
NEWS_SEARCH_COUNT = 10 # 每次搜索返回的新闻数量
|
||||
NEWS_SEARCH_FRESHNESS = 'oneMonth' # 默认搜索一个月内的新闻
|
||||
NEWS_SEARCH_SUMMARY = True # 是否显示摘要
|
||||
|
||||
class DevelopmentConfig(Config):
|
||||
"""开发环境配置"""
|
||||
DEBUG = True
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# 用法: ./manage.sh [start|stop|restart|status|logs]
|
||||
|
||||
APP_NAME="zjpb"
|
||||
APP_DIR="/www/wwwroot/zjpb"
|
||||
APP_DIR="/opt/1panel/apps/zjpb"
|
||||
VENV_DIR="$APP_DIR/venv"
|
||||
PID_FILE="$APP_DIR/logs/gunicorn.pid"
|
||||
|
||||
@@ -14,7 +14,7 @@ case "$1" in
|
||||
start)
|
||||
echo "启动 $APP_NAME..."
|
||||
source $VENV_DIR/bin/activate
|
||||
gunicorn -c gunicorn_config.py app:app
|
||||
gunicorn -c gunicorn_config.py wsgi:app
|
||||
echo "$APP_NAME 已启动"
|
||||
;;
|
||||
|
||||
|
||||
61
manage.sh.backup
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ZJPB 应用管理脚本
|
||||
# 用法: ./manage.sh [start|stop|restart|status|logs]
|
||||
|
||||
APP_NAME="zjpb"
|
||||
APP_DIR="/www/wwwroot/zjpb"
|
||||
VENV_DIR="$APP_DIR/venv"
|
||||
PID_FILE="$APP_DIR/logs/gunicorn.pid"
|
||||
|
||||
cd $APP_DIR
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo "启动 $APP_NAME..."
|
||||
source $VENV_DIR/bin/activate
|
||||
gunicorn -c gunicorn_config.py app:app
|
||||
echo "$APP_NAME 已启动"
|
||||
;;
|
||||
|
||||
stop)
|
||||
echo "停止 $APP_NAME..."
|
||||
if [ -f $PID_FILE ]; then
|
||||
kill $(cat $PID_FILE)
|
||||
echo "$APP_NAME 已停止"
|
||||
else
|
||||
echo "PID文件不存在,可能未运行"
|
||||
fi
|
||||
;;
|
||||
|
||||
restart)
|
||||
$0 stop
|
||||
sleep 2
|
||||
$0 start
|
||||
;;
|
||||
|
||||
status)
|
||||
if [ -f $PID_FILE ]; then
|
||||
PID=$(cat $PID_FILE)
|
||||
if ps -p $PID > /dev/null; then
|
||||
echo "$APP_NAME 正在运行 (PID: $PID)"
|
||||
else
|
||||
echo "$APP_NAME 未运行(但PID文件存在)"
|
||||
fi
|
||||
else
|
||||
echo "$APP_NAME 未运行"
|
||||
fi
|
||||
;;
|
||||
|
||||
logs)
|
||||
echo "实时查看日志(Ctrl+C退出):"
|
||||
tail -f logs/error.log
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "用法: $0 {start|stop|restart|status|logs}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
BIN
static/logos/logo_009330a33741511f.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
static/logos/logo_086fa477815e5f48.png
Normal file
|
After Width: | Height: | Size: 214 KiB |
BIN
static/logos/logo_0bf9f5b40bc9f3d5.webp
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
static/logos/logo_0caa6b734c44441e.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
static/logos/logo_0cf405192ccd0146.jpeg
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
static/logos/logo_10d6a2b3811ae398.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
static/logos/logo_1fbd5cd39812f9d0.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
static/logos/logo_214e96cf96888084.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
static/logos/logo_21a7f8ac8867d715.jpg
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
static/logos/logo_21d770f54333c4b0.jpeg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
static/logos/logo_22160f2fb2ace263.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
static/logos/logo_27849fad6920d06e.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
static/logos/logo_2b995c80473172de.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
static/logos/logo_2cb17cc73c6a4ea6.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
static/logos/logo_2d1e980b35dbdb73.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
static/logos/logo_31713449fe0e3279.jpg
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
static/logos/logo_3cd0e2f01104da8f.webp
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
static/logos/logo_3edad18a442b647c.jpeg
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
static/logos/logo_4029804b6c1ec871.jpeg
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
static/logos/logo_49f74f06f5892603.webp
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
22
static/logos/logo_4b72862d2860be10.svg
Normal file
@@ -0,0 +1,22 @@
|
||||
<svg width="54" height="54" viewBox="0 0 54 54" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M32.9314 26.9511L21.7996 20.5242L32.4531 14.9257L42.8674 32.9639L32.4531 38.9766L32.9314 26.9511Z" fill="url(#paint0_linear_14267_83603)"/>
|
||||
<path d="M21.8015 20.5187L21.8015 33.3726L11.6264 26.9457L22.0407 8.90756L32.455 14.9203L21.8015 20.5187Z" fill="url(#paint1_linear_14267_83603)"/>
|
||||
<path d="M11.6249 26.9477L21.8 33.3747L27.3659 30.1612L32.9318 26.9477L32.4535 38.9731L11.6249 38.9731L11.6249 26.9477Z" fill="url(#paint2_linear_14267_83603)"/>
|
||||
<path d="M17.0052 5.99971C14.6088 4.61614 11.6133 6.34561 11.6133 9.11277L11.6133 26.9375L22.0276 8.89937L17.0052 5.99971Z" fill="#F4DBFF"/>
|
||||
<path d="M47.8817 30.0613C50.2782 28.6777 50.2782 25.2188 47.8817 23.8352L32.4451 14.9228L42.8594 32.9609L47.8817 30.0613Z" fill="#FFDBF6"/>
|
||||
<path d="M11.6164 44.7588C11.6164 47.526 14.6119 49.2555 17.0083 47.8719L32.445 38.9595L11.6164 38.9595L11.6164 44.7588Z" fill="#FFE9CD"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_14267_83603" x1="38.2931" y1="34.987" x2="39.9981" y2="18.0469" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#7333F0"/>
|
||||
<stop offset="1" stop-color="#F034D0"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_14267_83603" x1="26.9397" y1="11.8049" x2="11.9028" y2="25.1964" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5753"/>
|
||||
<stop offset="1" stop-color="#FFA52D"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_14267_83603" x1="11.3626" y1="33.824" x2="31.1696" y2="38.3227" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF5753"/>
|
||||
<stop offset="1" stop-color="#F034D0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/logos/logo_4ba98f6d485f7211.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
static/logos/logo_4d06dd582d659c7e.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
static/logos/logo_50e7b9e722dd9bba.jpeg
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
static/logos/logo_51eb0f62f4652d66.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
static/logos/logo_54f298fb11566bf6.webp
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
static/logos/logo_553f5b7d65fb33dd.jpeg
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
static/logos/logo_575688f6a82d77d4.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
static/logos/logo_5ac23f7ad6e67263.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
static/logos/logo_6bfa8f7b4428a3fb.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
static/logos/logo_7dbcd1d7f937abf9.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
static/logos/logo_88a6e9f8cdfead02.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
static/logos/logo_88abeac22a366309.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
static/logos/logo_8c840abfb294f707.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
static/logos/logo_8cf9350f73b2c36d.jpeg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
static/logos/logo_8d130c222e8d038b.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
static/logos/logo_8d34bb9928739303.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
static/logos/logo_8e157f69c59d76c2.jpeg
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
static/logos/logo_9146a060dca914df.webp
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
static/logos/logo_9464cf10bb64e6c4.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
static/logos/logo_9dbb955fd673993a.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
static/logos/logo_a076ff3de1b081c4.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
static/logos/logo_a51841603f9b4dae.webp
Normal file
|
After Width: | Height: | Size: 986 B |
BIN
static/logos/logo_a5dc086863a261c4.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
static/logos/logo_a95772e3b6c1bd86.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
static/logos/logo_ba18fb1a5302ebfb.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
static/logos/logo_c90157612a6ae8cd.jpeg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
static/logos/logo_cc53b27d8bc72c42.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
static/logos/logo_d004557f16c14fab.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
static/logos/logo_d222bb537ea8ccea.webp
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
static/logos/logo_d2913ed76e7ed261.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
static/logos/logo_e1d79b4ac087b148.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
static/logos/logo_e20fd6316be22ba1.jpg
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
static/logos/logo_e7e6c886f3fcb03e.png
Normal file
|
After Width: | Height: | Size: 320 KiB |
BIN
static/logos/logo_e8f2688cb99c3df0.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
static/logos/logo_eb5c5b4571936af5.jpeg
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
static/logos/logo_ee37fd064488f475.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
static/logos/logo_efbd3cd27fb0a31e.png
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
static/logos/logo_f325651a782f4201.webp
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
static/logos/logo_fa0e9407aa4d9aa5.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
static/logos/logo_fb5b1867aaf4f5a0.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
static/logos/logo_fellou_ai.ico
Normal file
|
After Width: | Height: | Size: 204 KiB |
BIN
static/logos/logo_ff45f264e6f9aff7.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
static/logos/logo_open_bochaai_com.ico
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
static/logos/logo_openrouter_ai.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
static/logos/logo_osfront_onesight_com.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
static/logos/logo_tavily_com.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
static/logos/logo_vip2_loli_io.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
static/logos/logo_www_waytoagi_com.ico
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>批量导入 - ZJPB 焦提示词</title>
|
||||
<title>批量导入 - ZJPB - 自己品吧</title>
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
@@ -26,7 +26,7 @@
|
||||
<!-- Logo -->
|
||||
<div class="sidebar-logo">
|
||||
<span class="material-symbols-outlined logo-icon">blur_on</span>
|
||||
<span class="logo-text">ZJPB 焦提示词</span>
|
||||
<span class="logo-text">ZJPB - 自己品吧</span>
|
||||
</div>
|
||||
|
||||
<!-- 主菜单 -->
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>修改密码 - ZJPB 焦提示词</title>
|
||||
<title>修改密码 - ZJPB - 自己品吧</title>
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
@@ -26,7 +26,7 @@
|
||||
<!-- Logo -->
|
||||
<div class="sidebar-logo">
|
||||
<span class="material-symbols-outlined logo-icon">blur_on</span>
|
||||
<span class="logo-text">ZJPB 焦提示词</span>
|
||||
<span class="logo-text">ZJPB - 自己品吧</span>
|
||||
</div>
|
||||
|
||||
<!-- 主菜单 -->
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<!-- Logo -->
|
||||
<div class="sidebar-logo">
|
||||
<span class="material-symbols-outlined logo-icon">blur_on</span>
|
||||
<span class="logo-text">ZJPB 焦提示词</span>
|
||||
<span class="logo-text">ZJPB - 自己品吧</span>
|
||||
</div>
|
||||
|
||||
<!-- 主菜单 -->
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>管理员登录 - ZJPB 焦提示词</title>
|
||||
<title>管理员登录 - ZJPB - 自己品吧</title>
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %}ZJPB - 焦提示词 | AI工具导航{% endblock %}</title>
|
||||
<title>{% block title %}ZJPB - 自己品吧 | AI工具导航{% endblock %}</title>
|
||||
|
||||
<style>
|
||||
* {
|
||||
@@ -255,7 +255,7 @@
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div class="footer-text">
|
||||
<div>© 2025 ZJPB - 焦提示词 | AI工具导航. All rights reserved.</div>
|
||||
<div>© 2025 ZJPB - 自己品吧 | AI工具导航. All rights reserved.</div>
|
||||
<div style="margin-top: 8px;">
|
||||
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer" style="color: var(--text-secondary); text-decoration: none;">
|
||||
浙ICP备2025154782号-1
|
||||
@@ -270,6 +270,16 @@
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LZ4FGX5LRB"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-LZ4FGX5LRB');
|
||||
</script>
|
||||
|
||||
<!-- Microsoft Clarity 统计代码 -->
|
||||
<script type="text/javascript">
|
||||
(function(c,l,a,r,i,t,y){
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ site.name }} - ZJPB 焦提示词{% endblock %}
|
||||
{% block title %}{{ site.name }} - ZJPB - 自己品吧{% endblock %}
|
||||
{% block description %}{{ site.short_desc or site.description[:150] }}{% endblock %}
|
||||
{% block keywords %}{{ site.name }},{% for tag in site.tags %}{{ tag.name }},{% endfor %}ZJPB,焦提示词,AI工具{% endblock %}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% extends 'base_new.html' %}
|
||||
|
||||
{% block title %}ZJPB - 焦提示词 | 发现最新最好用的AI工具和产品{% endblock %}
|
||||
{% block title %}ZJPB - 自己品吧 | 发现最新最好用的AI工具和产品{% endblock %}
|
||||
|
||||
{% block extra_css %}
|
||||
<style>
|
||||
|
||||
@@ -137,7 +137,7 @@ class NewsSearcher:
|
||||
新闻列表
|
||||
"""
|
||||
# 构建搜索关键词:网站名称 + "最新" + "新闻"
|
||||
query = f"{site_name} 最新 新闻"
|
||||
query = f'"{site_name}" 新闻'
|
||||
|
||||
# 如果提供了网站URL,排除网站自身的结果
|
||||
exclude = None
|
||||
|
||||