merge: 发布 v0.1 版本显示

This commit is contained in:
admin committed 2026-10-20 15:07:05 +08:00
commit 82cc0ed487
8 files changed
+27 -2

No files matched your search

+2
View File
@@ -74,6 +74,8 @@ DEPLOY_BRANCH=master ./deploy.sh
运行端口、Python 环境、HTTPS 证书和接口故障的诊断方法见 [日常维护与故障排查](docs/troubleshooting.md)。
当前应用版本保存在根目录 `VERSION`,网页底部和登录页会显示该版本号。
## 功能模块
| 模块 | 说明 |
+1
View File
@@ -0,0 +1 @@
v0.1
+11
View File
@@ -25,6 +25,7 @@ import time
import urllib.request
from datetime import datetime
from functools import wraps
from pathlib import Path
import pymysql
@@ -45,6 +46,16 @@ from reading_api import reading_bp
# ======================================================================
app = Flask(__name__, static_folder="static", template_folder="templates")
try:
APP_VERSION = Path(__file__).with_name("VERSION").read_text(encoding="utf-8").strip()
except FileNotFoundError:
APP_VERSION = "unknown"
@app.context_processor
def inject_app_version():
return {"app_version": APP_VERSION}
# 注册当前看板数据接口,并保留旧客户端兼容路径。
app.register_blueprint(reading_bp)
register_auth(app)
+4
View File
@@ -63,6 +63,10 @@ GitHub Actions 的 `.github/workflows/deploy.yml` 只做验证,不登录服务
例:正式域名为 `laohang.space`、备案号为 `浙ICP备202607916号-1`,首页页脚显示该备案号;点击后打开 `https://beian.miit.gov.cn/`。截图里的公安联网备案数据码不是公安备案号,不作为备案号码展示。
## 应用版本显示
根目录 `VERSION` 保存面向用户的版本号,例如输入 `v0.1`,Flask 在启动时读取并通过模板上下文注入 `app_version`。首页页脚和登录页显示“版本 v0.1”。版本号不包含分支名或提交号;发布新版本时修改 `VERSION` 后随 `master` 一起部署。
应用未内置登录尝试限流;公网部署应在可信反向代理上为 `POST /auth/login` 设置频率限制,且不要直接信任未校验的 `X-Forwarded-For`。
## 示例与真实接口的边界
+2
View File
@@ -138,6 +138,8 @@ DEPLOY_BRANCH=master ./deploy.sh
正式网站域名 `laohang.space` 的页脚展示工信部 ICP 备案号 `浙ICP备202607916号-1`,点击后跳转至工信部备案查询平台。公安联网备案数据码不是公安备案号,因此不在页脚作为公安备案信息展示。
网站页脚和登录页显示版本文件 `VERSION` 的内容,例如 `v0.1`。发布新版本时修改该文件并随代码合并到 `master`;部署后可直接在网页底部确认当前应用版本。
保存失败会保留表单并提示重试;读取失败显示错误和重试按钮,不冒充空列表。若新建提示 ID 已存在,刷新目标列表确认上次请求是否已经保存。数据库不可用或尚未执行迁移时,目标接口返回 503,不退回浏览器保存。
验证命令:
+5 -1
View File
@@ -19,6 +19,10 @@
gap: 12px
}
.app-version {
white-space: nowrap
}
.icp-link {
color: inherit;
text-decoration: none
@@ -123,7 +127,7 @@
id="conn-state">正在连接微信读书…</span></span><span>阅读目标跨浏览器保存</span></div>
<div id="page-content"></div>
<footer class="footer"><span>阅间 · 与好书相伴,与自己相遇</span>
<div class="footer-meta"><span class="footer-state" id="footer-state">数据来自微信读书个人账号</span><a class="icp-link"
<div class="footer-meta"><span class="footer-state" id="footer-state">数据来自微信读书个人账号</span><span class="app-version">版本 {{ app_version }}</span><a class="icp-link"
href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer">浙ICP备202607916号-1</a>
</div>
</footer>
+1 -1
View File
@@ -42,7 +42,7 @@
</form>
{% endif %}
</section>
<p class="login-foot">阅间 · 与好书相伴,与自己相遇</p>
<p class="login-foot">阅间 · 与好书相伴,与自己相遇 · 版本 {{ app_version }}</p>
</main>
</body>
+1
View File
@@ -92,6 +92,7 @@ class AuthTests(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertIn(b"https://beian.miit.gov.cn/", response.data)
self.assertIn("浙ICP备202607916号-1".encode(), response.data)
self.assertIn("版本 v0.1".encode(), response.data)
def test_first_account_requires_setup_token_and_is_stored_as_hash(self):
page = self.client.get("/login")