add 20251112 report
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
node_modules
|
||||
.astro
|
||||
dist
|
||||
jiao77.cn
|
||||
jiao77.cn
|
||||
package-lock.json
|
||||
|
||||
@@ -113,6 +113,44 @@ get_deploy_config() {
|
||||
fi
|
||||
}
|
||||
|
||||
# 上传 Apache 配置文件
|
||||
upload_apache_config() {
|
||||
echo "📤 上传 Apache 配置文件..."
|
||||
if [ -f "jiao77.cn.conf" ]; then
|
||||
# 备份原有配置文件
|
||||
echo "📋 备份原有 Apache 配置..."
|
||||
ssh ${USERNAME}@${SERVER_IP} "
|
||||
if [ -f '/etc/apache2/sites-available/jiao77.cn.conf' ]; then
|
||||
sudo cp /etc/apache2/sites-available/jiao77.cn.conf /etc/apache2/sites-available/jiao77.cn.conf.backup.\$(date +%Y%m%d_%H%M%S)
|
||||
echo '✅ 原配置文件已备份'
|
||||
else
|
||||
echo '⚠️ 原配置文件不存在,跳过备份'
|
||||
fi
|
||||
"
|
||||
|
||||
# 上传新配置文件
|
||||
scp jiao77.cn.conf ${USERNAME}@${SERVER_IP}:/tmp/jiao77.cn.conf
|
||||
ssh ${USERNAME}@${SERVER_IP} "
|
||||
sudo mv /tmp/jiao77.cn.conf /etc/apache2/sites-available/jiao77.cn.conf
|
||||
echo '✅ Apache 配置文件已上传'
|
||||
"
|
||||
|
||||
# 重新加载 Apache 配置
|
||||
echo "🔄 重新加载 Apache 配置..."
|
||||
ssh ${USERNAME}@${SERVER_IP} "
|
||||
if sudo apache2ctl configtest; then
|
||||
sudo systemctl reload apache2
|
||||
echo '✅ Apache 配置已重新加载'
|
||||
else
|
||||
echo '❌ Apache 配置测试失败,请检查配置文件'
|
||||
exit 1
|
||||
fi
|
||||
"
|
||||
else
|
||||
echo "⚠️ jiao77.cn.conf 文件不存在,跳过上传"
|
||||
fi
|
||||
}
|
||||
|
||||
# 上传 .htaccess 文件
|
||||
upload_htaccess() {
|
||||
echo "📤 上传 .htaccess 文件..."
|
||||
@@ -128,7 +166,10 @@ upload_htaccess() {
|
||||
deploy_files() {
|
||||
echo ""
|
||||
echo "🚀 开始部署文件..."
|
||||
|
||||
|
||||
# 先上传 Apache 配置文件
|
||||
upload_apache_config
|
||||
|
||||
if [ "$USE_RSYNC" = true ]; then
|
||||
echo "📡 使用 rsync 同步文件..."
|
||||
rsync -avz --delete --progress \
|
||||
@@ -140,18 +181,18 @@ deploy_files() {
|
||||
cd dist
|
||||
tar -czf ../deploy-temp.tar.gz *
|
||||
cd ..
|
||||
|
||||
|
||||
# 上传并解压
|
||||
scp deploy-temp.tar.gz ${USERNAME}@${SERVER_IP}:/tmp/
|
||||
ssh ${USERNAME}@${SERVER_IP} "cd ${WEB_ROOT} && sudo tar -xzf /tmp/deploy-temp.tar.gz && sudo rm /tmp/deploy-temp.tar.gz"
|
||||
|
||||
|
||||
# 清理本地临时文件
|
||||
rm -f deploy-temp.tar.gz
|
||||
fi
|
||||
|
||||
|
||||
# 上传 .htaccess
|
||||
upload_htaccess
|
||||
|
||||
|
||||
echo "✅ 文件部署完成"
|
||||
}
|
||||
|
||||
@@ -220,6 +261,8 @@ show_results() {
|
||||
echo " • 查看部署日志: tail -f /var/log/apache2/error.log"
|
||||
echo " • 检查文件权限: ls -la ${WEB_ROOT}/"
|
||||
echo " • 验证 Apache 配置: apache2ctl configtest"
|
||||
echo " • 查看 Apache 状态: systemctl status apache2"
|
||||
echo " • 配置文件备份位置: /etc/apache2/sites-available/jiao77.cn.conf.backup.*"
|
||||
echo ""
|
||||
}
|
||||
|
||||
|
||||
323
jiao77.cn.conf
Normal file
323
jiao77.cn.conf
Normal file
@@ -0,0 +1,323 @@
|
||||
############################################################
|
||||
# Apache 子域名反向代理配置(jiao77.cn)
|
||||
#
|
||||
# 说明:
|
||||
# - 避免子路径带来的静态资源/重写/WS 问题,每个服务独立子域名
|
||||
# - 统一在 443 终止 TLS,Apache 反代到本地端口服务
|
||||
# - 主站 jiao77.cn 使用 Docker 容器部署(端口 3001)
|
||||
# - API 后端服务使用 Docker 容器部署(端口 3000)
|
||||
#
|
||||
# 前置:
|
||||
# - DNS 为以下子域名添加 A/AAAA 记录 -> 服务器 IP
|
||||
# - 证书需覆盖所有子域(通配符 *.jiao77.cn 或 SAN 多域名证书)
|
||||
# - 启用模块:ssl headers proxy proxy_http proxy_wstunnel rewrite deflate cache cache_disk expires
|
||||
#
|
||||
# 部署:
|
||||
# - 放置到 /etc/apache2/sites-available/jiao77-subdomains.conf
|
||||
# - sudo a2enmod ssl headers proxy proxy_http proxy_wstunnel rewrite deflate cache cache_disk expires
|
||||
# - sudo a2ensite jiao77-subdomains && sudo systemctl reload apache2
|
||||
############################################################
|
||||
|
||||
# ============ 主站(前端 Docker 容器) ============
|
||||
<VirtualHost *:80>
|
||||
ServerName jiao77.cn
|
||||
ServerAlias www.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName jiao77.cn
|
||||
ServerAlias www.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
|
||||
SSLCipherSuite HIGH:!aNULL:!MD5
|
||||
|
||||
# 安全头配置
|
||||
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
Header always set X-Frame-Options "SAMEORIGIN"
|
||||
Header always set Referrer-Policy "no-referrer-when-downgrade"
|
||||
|
||||
# 代理配置
|
||||
ProxyPreserveHost On
|
||||
ProxyRequests Off
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
|
||||
|
||||
# 缓存策略(VirtualHost 级别)
|
||||
# 注意:一些缓存指令(如 CacheIgnoreHeaders)不允许放在 <LocationMatch> 中
|
||||
# 因此在虚拟主机级别声明,以便对下方的缓存生效
|
||||
CacheIgnoreHeaders Set-Cookie
|
||||
|
||||
# ============ API 后端代理 ============
|
||||
# 暂时注释掉 API 代理,如果需要可以取消注释
|
||||
# 健康检查(不记录日志)
|
||||
# <Location /health>
|
||||
# ProxyPass http://127.0.0.1:3000/health
|
||||
# ProxyPassReverse http://127.0.0.1:3000/health
|
||||
# SetEnv no-log 1
|
||||
# </Location>
|
||||
|
||||
# API 接口代理
|
||||
# 关键:使用 <Location> 并带尾部斜杠,确保路径正确传递
|
||||
# <Location /api/>
|
||||
# ProxyPass http://127.0.0.1:3000/api/
|
||||
# ProxyPassReverse http://127.0.0.1:3000/api/
|
||||
#
|
||||
# # API 缓存配置(10分钟)
|
||||
# CacheEnable disk
|
||||
# CacheHeader on
|
||||
# CacheDefaultExpire 600
|
||||
# CacheMaxExpire 600
|
||||
# </Location>
|
||||
|
||||
# ============ 静态资源缓存 ============
|
||||
# 由于现在直接使用静态文件服务,这个 LocationMatch 可以移除
|
||||
# 静态资源缓存已在下面的 Directory 配置中处理
|
||||
|
||||
# ============ 前端应用代理(默认) ============
|
||||
# 直接提供静态文件服务,不使用 Docker 容器
|
||||
DocumentRoot /var/www/jiao77.cn
|
||||
DirectoryIndex index.html
|
||||
|
||||
# 静态文件处理
|
||||
<Directory /var/www/jiao77.cn>
|
||||
Options -Indexes +FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
# 对静态资源启用缓存
|
||||
<LocationMatch "\.(js|css|png|jpg|jpeg|gif|ico|woff|woff2|svg|webp)$">
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 30 days"
|
||||
Header set Cache-Control "public, max-age=2592000, immutable"
|
||||
</LocationMatch>
|
||||
|
||||
# Gzip 压缩配置
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
|
||||
AddOutputFilterByType DEFLATE application/javascript application/json
|
||||
AddOutputFilterByType DEFLATE application/xml application/rss+xml
|
||||
</IfModule>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/jiao77-main-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/jiao77-main-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# 公共代理选项
|
||||
<IfModule mod_ssl.c>
|
||||
SSLProxyEngine on
|
||||
</IfModule>
|
||||
|
||||
# ============ Gitea ============
|
||||
<VirtualHost *:80>
|
||||
ServerName gitea.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://gitea.jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName gitea.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
ProxyPass / http://127.0.0.1:3012/
|
||||
ProxyPassReverse / http://127.0.0.1:3012/
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/gitea-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/gitea-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# ============ AList ============
|
||||
<VirtualHost *:80>
|
||||
ServerName alist.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://alist.jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName alist.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
# 如果 AList 后端是 HTTPS(如 52443),保持 https 代理;若是 http,改为 http://127.0.0.1:<port>
|
||||
ProxyPass / https://127.0.0.1:52443/
|
||||
ProxyPassReverse / https://127.0.0.1:52443/
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/alist-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/alist-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# ============ Q-Nas ============
|
||||
<VirtualHost *:80>
|
||||
ServerName qnas.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://qnas.jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName qnas.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
ProxyPass / http://127.0.0.1:5666/
|
||||
ProxyPassReverse / http://127.0.0.1:5666/
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/qnas-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/qnas-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# ============ nuc-Nas ============
|
||||
<VirtualHost *:80>
|
||||
ServerName nucnas.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://nucnas.jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName nucnas.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
ProxyPass / http://127.0.0.1:56661/
|
||||
ProxyPassReverse / http://127.0.0.1:56661/
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/nucnas-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/nucnas-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# ============ RAGflow ============
|
||||
<VirtualHost *:80>
|
||||
ServerName ragflow.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://ragflow.jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName ragflow.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
ProxyPass / http://127.0.0.1:28081/
|
||||
ProxyPassReverse / http://127.0.0.1:28081/
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/ragflow-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/ragflow-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# ============ Open WebUI ============
|
||||
<VirtualHost *:80>
|
||||
ServerName ai.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://ai.jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName ai.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
ProxyPass / http://127.0.0.1:38080/
|
||||
ProxyPassReverse / http://127.0.0.1:38080/
|
||||
# 常见 WebSocket 路径(按需调整)
|
||||
ProxyPass /ws ws://127.0.0.1:38080/ws
|
||||
ProxyPassReverse /ws ws://127.0.0.1:38080/ws
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/ai-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/ai-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# ============ Navidrome ============
|
||||
<VirtualHost *:80>
|
||||
ServerName music.jiao77.cn
|
||||
RewriteEngine On
|
||||
RewriteRule ^/(.*)$ https://music.jiao77.cn/$1 [R=301,L]
|
||||
</VirtualHost>
|
||||
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName music.jiao77.cn
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/jiao77/cert.pem
|
||||
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
|
||||
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
ProxyPass / http://127.0.0.1:45332/
|
||||
ProxyPassReverse / http://127.0.0.1:45332/
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/music-error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/music-access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
|
||||
# ============ 缓存配置 ============
|
||||
<IfModule mod_cache.c>
|
||||
CacheRoot /var/cache/apache2/jiao77
|
||||
CacheDirLevels 2
|
||||
CacheDirLength 1
|
||||
CacheMaxFileSize 10000000
|
||||
CacheMinFileSize 1
|
||||
CacheReadSize 0
|
||||
CacheReadTime 3000
|
||||
</IfModule>
|
||||
|
||||
|
||||
19
package-lock.json
generated
19
package-lock.json
generated
@@ -9,7 +9,7 @@
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"@astrojs/tailwind": "^6.0.2",
|
||||
"astro": "^5.14.7",
|
||||
"astro": "^5.15.4",
|
||||
"tailwindcss": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -2065,9 +2065,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/astro": {
|
||||
"version": "5.14.7",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-5.14.7.tgz",
|
||||
"integrity": "sha512-vdZmRN2MFf60ZTjFkZNrQQkrmeeZzTI1c6N3ZRQN55rPGHjywM2VplJwJ68q496DfpaoDoAroDBpdm+eTgHUtQ==",
|
||||
"version": "5.15.4",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-5.15.4.tgz",
|
||||
"integrity": "sha512-0g/68hLHEJZF2nYUcZM5O0kOnzCsCIf8eA9+0jfBAxp4ycujrIHRgIOdZCFKL9GoTsn8AypWbziypH5aEIF+aA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
@@ -2103,7 +2103,6 @@
|
||||
"http-cache-semantics": "^4.2.0",
|
||||
"import-meta-resolve": "^4.2.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"kleur": "^4.1.5",
|
||||
"magic-string": "^0.30.18",
|
||||
"magicast": "^0.3.5",
|
||||
"mrmime": "^2.0.1",
|
||||
@@ -2111,6 +2110,7 @@
|
||||
"p-limit": "^6.2.0",
|
||||
"p-queue": "^8.1.0",
|
||||
"package-manager-detector": "^1.3.0",
|
||||
"picocolors": "^1.1.1",
|
||||
"picomatch": "^4.0.3",
|
||||
"prompts": "^2.4.2",
|
||||
"rehype": "^13.0.2",
|
||||
@@ -2125,7 +2125,7 @@
|
||||
"unist-util-visit": "^5.0.0",
|
||||
"unstorage": "^1.17.0",
|
||||
"vfile": "^6.0.3",
|
||||
"vite": "^6.3.6",
|
||||
"vite": "^6.4.1",
|
||||
"vitefu": "^1.1.1",
|
||||
"xxhash-wasm": "^1.1.0",
|
||||
"yargs-parser": "^21.1.1",
|
||||
@@ -3640,6 +3640,7 @@
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
|
||||
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
@@ -6390,9 +6391,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "6.3.6",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz",
|
||||
"integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==",
|
||||
"version": "6.4.1",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
|
||||
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/tailwind": "^6.0.2",
|
||||
"astro": "^5.14.7",
|
||||
"astro": "^5.15.4",
|
||||
"tailwindcss": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
1692
src/pages/report/20251112/index.astro
Normal file
1692
src/pages/report/20251112/index.astro
Normal file
File diff suppressed because it is too large
Load Diff
1000
src/pages/report/20251112/midterm_report.md
Normal file
1000
src/pages/report/20251112/midterm_report.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -44,7 +44,7 @@ import AnimatedElement from '../../components/AnimatedElement.astro';
|
||||
href="/report/20250609/"
|
||||
icon="fas fa-calendar-alt"
|
||||
color="primary"
|
||||
size="large"
|
||||
size="medium"
|
||||
/>
|
||||
</AnimatedElement>
|
||||
|
||||
@@ -55,7 +55,7 @@ import AnimatedElement from '../../components/AnimatedElement.astro';
|
||||
href="/report/20250722/"
|
||||
icon="fas fa-calendar-alt"
|
||||
color="secondary"
|
||||
size="large"
|
||||
size="medium"
|
||||
/>
|
||||
</AnimatedElement>
|
||||
|
||||
@@ -66,7 +66,7 @@ import AnimatedElement from '../../components/AnimatedElement.astro';
|
||||
href="/report/ai-eda-paper-report/"
|
||||
icon="fas fa-microchip"
|
||||
color="accent"
|
||||
size="large"
|
||||
size="medium"
|
||||
/>
|
||||
</AnimatedElement>
|
||||
|
||||
@@ -121,7 +121,7 @@ import AnimatedElement from '../../components/AnimatedElement.astro';
|
||||
href="/report/RoRD-overall/"
|
||||
icon="fas fa-project-diagram"
|
||||
color="secondary"
|
||||
size="large"
|
||||
size="medium"
|
||||
/>
|
||||
</AnimatedElement>
|
||||
|
||||
@@ -132,11 +132,22 @@ import AnimatedElement from '../../components/AnimatedElement.astro';
|
||||
href="/report/RoRD_Increment_Report/"
|
||||
icon="fas fa-chart-line"
|
||||
color="primary"
|
||||
size="large"
|
||||
size="medium"
|
||||
/>
|
||||
</AnimatedElement>
|
||||
|
||||
<AnimatedElement animation="fadeInUp" delay={1400} trigger="scroll">
|
||||
<AnimatedElement animation="fadeInUp" delay={1600} trigger="scroll">
|
||||
<NavigationCard
|
||||
title="RoRD 中期检查报告"
|
||||
description="面向集成电路版图识别的旋转鲁棒描述子项目中期进展报告。涵盖核心技术实现、性能测试分析和后期工作计划。"
|
||||
href="/report/20251112/"
|
||||
icon="fas fa-clipboard-check"
|
||||
color="primary"
|
||||
size="medium"
|
||||
/>
|
||||
</AnimatedElement>
|
||||
|
||||
<AnimatedElement animation="fadeInUp" delay={1700} trigger="scroll">
|
||||
<NavigationCard
|
||||
title="📄 报告模板"
|
||||
description="技术报告标准模板,包含统一宽度配置、代码展示、数学公式等完整组件支持。快速创建专业报告!"
|
||||
|
||||
Reference in New Issue
Block a user