bwstudio
|
34e8010830
|
feat(site): 方案 C - 「我常访问」个人榜(匿名 ID + localStorage 合并)
- NavClick 加 anon_id 字段(已为历史表自动迁移)
- 后端静默下发 wk_anon cookie(uuid4,1 年,HttpOnly)
- 点击埋点写入 anon_id;新增 GET /site/api/my-top 与 POST /site/api/my-clear
- 首页服务端渲染「我常访问」区(时间衰减加权分),与「热门网址」共显
- 前端 localStorage 累计 + 与服务端榜取 max 合并;冷启动阈值 2 个网址
- 一键清除:清 localStorage + 服务端删该匿名 ID 的全部记录
- 移动端抽屉、顶部导航同步加「我常访问」入口
- 底部隐私说明更新
|
2026-09-06 19:16:45 +08:00 |
|
bwstudio
|
a47ad991d0
|
feat(public): 首页增加「热门网址」分类(访问量 TOP12)
跨分类聚合:按 NavClick 总点击数倒序,取前 12 个有效 nav。
实现要点:
- applications/view/public/nav.py: 新增 _top_navs(limit=12),
复用 get_nav_visit_counts() 的 60s 进程内缓存;同点击数按 id asc 稳定排序;
0 点击返回空列表(前端整段不渲染)
- _render_index() 注入 top_navs 到模板
- templates/public/index.html: 在 groups 循环前渲染 .section-hot,标题「🔥 热门网址」,
meta 显示「近期访问量最大的 N 个」;卡片复用 .card,新增 .card-top 类
- templates/public/base.html:
- .card-top:左侧 3px 品牌色边框 + 浅色背景渐变 + hover 增强阴影
- .section-hot h2 图标用 brand-orange #ff6b35
- .cat-nav-inner a.cat-nav-hot 顶部导航热门入口用品牌色
- 抽屉:首页 top_navs 非空时插入「🔥 热门」区段,链接到 #cat-top
边界:
- 没有任何点击时整段隐藏(包括抽屉和顶部 nav),不出现「0 个」空标题
- 同一 nav 不会重复(按 nav.id 维度聚合)
- Nav.enable=0 的不会进 TOP12
验证:
- 15 个 nav 各灌入 20..6 次点击,前 12 个按降序显示访问数 20..9
- 清空所有 NavClick 后首页 section-hot / #cat-top / .cat-drawer-hot 三处全不渲染
- 测试数据已清理
|
2026-09-06 18:52:05 +08:00 |
|
bwstudio
|
98edfdaf2d
|
feat(deploy): 个人 NAS 单机 Docker 部署方案
适用:内网 / 家庭 / 小团队(≤50 并发),无 K8s 需求。
特性:单容器 + SQLite + 端口暴露,最小维护成本。
新增:
- deploy/nas/Dockerfile: python:3.11-slim 基础镜像 + 非 root + HEALTHCHECK
- deploy/nas/start.sh: flask db upgrade 幂等迁移 + gunicorn (2 workers × 4 threads)
- deploy/nas/docker-compose.yaml: 单服务 + 4 个命名卷 (db/logs/session/upload) + 资源限制
- docs/deployment-nas.md: 完整部署/备份/升级/排障指南
完善:
- .env.example: 改为生产环境导向 (PEAR_ENV=pro,SECRET_KEY 必填)
- .dockerignore: 排除 deploy/dev (开发用容器配置)、tests/截图、一次性脚本
- applications/view/public/__init__.py: 注释说明 /healthz 已在 applications/view/health.py 注册
复用现有:
- /healthz 接口 (applications/view/health.py) 含 DB 探活,DB 不可达返回 503
→ 容器 HEALTHCHECK 直接用 /healthz 即可
⚠️ 本机无 docker,未执行 docker build 验证;已静态校验 YAML/bash 语法、
文件路径、.env 字段消费、ProConfig 严格性、/healthz 端点可用性。
首次 NAS 上部署时跑一遍文档步骤即可。
|
2026-09-06 18:35:31 +08:00 |
|
bwstudio
|
0ffc103e46
|
feat(plugins): 4 个业务插件代码 + 前台公开页面改造
plugins/navManager:导航 CRUD + 导航分类 CRUD(独立 blueprint)
plugins/friendManager:友情链接 CRUD
plugins/aboutManager:关于本站 CRUD
plugins/siteStats:访问统计主页 + JSON 接口 + /site/* GET 埋点 + nav 卡片点击埋点
applications/view/public/nav.py:导航聚合页 / 分类详情 / JSON 接口,支持 visit_count 注入
applications/view/public/about.py:关于本站公开页
applications/view/public/friend.py:友情链接公开页
templates/public/base.html:响应式首页(搜索框 / 分类抽屉 / 5 主题切换 / footer 隐私小字)
templates/public/index.html / category.html:卡片右下角访问次数
templates/public/about.html / friend.html:关于 + 友链前台页
docs/plugins-development.md:插件开发完整指南(生命周期 + 4 个示例 + FAQ + framework 迁移)
scripts/:探针与端到端验证脚本(probe_*/verify_*/test_*)
|
2026-09-06 18:18:06 +08:00 |
|
bwstudio
|
1ea69c2c34
|
refactor(plugins): 将导航/友链/关于/统计 4 模块迁出 framework 至 plugins
- 在 applications/config.py 中通过 PLUGIN_ENABLE_FOLDERS 启用 4 个业务插件
- 删除 framework 内 applications/view/system/nav.py 与 templates/system/nav/* 模板
- applications/extensions/init_plugs 移除重复的 broadcast_execute('event_init'/'event_finish')
(由 init_bps / init_script 触发,避免 Blueprint 注册冲突)
- applications/view/system/index.py:未登录访问 / 直接渲染前台公开聚合页
- templates/system/index.html:移动端首屏即折叠侧边栏
- 新增 5 个 model(Nav 字段 status→enable 兼容、NavCategory、About、Friend、VisitLog/PageStat、NavClick)
- 新增 2 个 schema(NavCategorySchema、FriendOutSchema/ManageSchema)
- admin_about/admin_friend/admin_nav_category 在 init.json 中以「网站管理」分组挂载
- .gitignore 补充一次性备份、调试截图、探针截图不入库
|
2026-09-06 18:17:52 +08:00 |
|
bwstudio
|
1214bfdf4a
|
feat(ops): 环境变量化配置 + 健康检查 + 启动脚本 + 部署/安全文档
主要变更:
config
- 引入 python-dotenv,从 .env 加载 SECRET_KEY / MAIL_* / SQLALCHEMY_DATABASE_URI
- 拆分 BaseConfig / DevConfig / ProConfig,PEAR_ENV 控制切换
- ProConfig 在 init_app() 校验 SECRET_KEY,禁止使用默认值
ops
- 新增 /healthz 端点:DB 探活 + 环境名 + 时间戳,失败返回 503
- 新增 start.bat (Windows) / Makefile (跨平台) 一键启动 / 初始化
- 新增 .env.example 模板;.gitignore 排除 .env / logs / vscode 等
- 新增 docs/DEPLOY.md(部署指南)和 docs/SECURITY.md(安全清单)
- app.py 不再硬编码 debug=False,交给配置类决定
本提交不包含上一次会话的其它工作树修改(模板/导航相关),后续单独 PR。
|
2026-09-05 20:46:12 +08:00 |
|
bwstudio
|
b208087f74
|
feat(nav): 新增前台公开导航页与后台导航管理
新增模块
- Nav 模型(applications/models/admin_nav.py):公开导航表,与 admin_power 解耦
- NavOutSchema / NavManageSchema(applications/schemas/admin_nav.py)
- 前台公开视图 applications/view/public/nav.py:/site/、/site/category/<name>、/site/api/navs,无需登录
- 后台管理视图 applications/view/system/nav.py:CRUD + 启用/禁用,挂入 system_bp
- 前台模板 templates/public/{base,index,category}.html(独立配色,无需登录即可访问)
- 后台模板 templates/system/nav/{main,add,edit}.html(Layui table + form)
调整
- applications/view/__init__.py:注册前台蓝图到根
- applications/view/system/__init__.py:注册后台 nav 子蓝图
- applications/common/script/admin.py:admin init/export 支持 navs 数组
- applications/common/script/app_data/init.json:新增 10 条导航种子 + 4 条 system:nav 权限
数据库
- 新增 public_nav 表(含 category 索引)
- migration: 38751d88d42c_add_public_nav_table.py
|
2026-09-05 14:58:08 +08:00 |
|
不胜舟
|
5bcc28a492
|
feat(api): 新增 CSRF 校验
|
2025-09-02 11:37:27 +08:00 |
|
不胜舟
|
4da732538f
|
引入接口频率限制机制
|
2025-08-25 22:01:33 +08:00 |
|
 zmf96andGitee
|
49d1db3571
|
fix: 当在lxc容器运行时,获取磁盘信息失败
Signed-off-by: zmf96 <1602893+zmf96@user.noreply.gitee.com>
|
2025-05-18 15:21:49 +00:00 |
|
 星辰大海andGitee
|
d49b3c1a79
|
update applications/view/system/rights.py.
管理员也需要隐藏不要显示的菜单。
Signed-off-by: 星辰大海 <2317903+shaodj@user.noreply.gitee.com>
|
2025-02-25 11:27:47 +00:00 |
|
wojiaoyishang
|
da5917344e
|
更新文档,完善插件功能
|
2025-01-27 21:34:42 +08:00 |
|
wojiaoyishang
|
155af93c77
|
完善开发文档与合并 admin_log 文件
|
2025-01-27 11:30:59 +08:00 |
|
wojiaoyishang
|
0db36a6218
|
完善开发文档与更新函数注释
|
2025-01-27 11:16:26 +08:00 |
|
wojiaoyishang
|
8a99864b41
|
删除用于测试的 print
|
2025-01-25 09:51:02 +08:00 |
|
wojiaoyishang
|
2ee703d2eb
|
错误处理页面进行更新
|
2025-01-24 19:13:41 +08:00 |
|
wojiaoyishang
|
3c4377915b
|
Update: 增加后台消息接口
|
2025-01-24 18:44:53 +08:00 |
|
wojiaoyishang
|
ed1f402c04
|
Update: (步骤备份)完善邮件管理、文件上传的页面更改
|
2025-01-24 18:01:02 +08:00 |
|
wojiaoyishang
|
52838222db
|
Update: (步骤备份)完善字典
|
2025-01-23 21:16:16 +08:00 |
|
wojiaoyishang
|
de36a9936a
|
Update: (步骤备份)完善系统监控
|
2025-01-21 20:58:37 +08:00 |
|
wojiaoyishang
|
3bb59d3786
|
Update: (步骤备份)修复刷新内置标签页的问题
|
2025-01-21 16:09:27 +08:00 |
|
wojiaoyishang
|
fa7e62b12b
|
Update: (步骤备份)部门管理更新完成
|
2025-01-21 12:07:37 +08:00 |
|
wojiaoyishang
|
b6a64f15dc
|
Update: (步骤备份)更新夜间模式同步
|
2025-01-21 11:02:03 +08:00 |
|
wojiaoyishang
|
813363f0d4
|
Update: (步骤备份)更新部门管理前端
|
2025-01-20 21:38:08 +08:00 |
|
wojiaoyishang
|
61be7a09c6
|
Update: (步骤备份)选项管理修改完成,增加批量删除功能
|
2025-01-20 16:38:38 +08:00 |
|
wojiaoyishang
|
9f8fe2c83e
|
Update: (步骤备份)角色管理页面更新完成并增加参数效验
|
2025-01-20 14:59:41 +08:00 |
|
wojiaoyishang
|
d4a1b0ec57
|
Update: (步骤备份)更新 Pear Admin 框架版本与 Pear Admin Layui 一致,尝试重写页面
|
2025-01-19 20:03:18 +08:00 |
|
 我叫以赏andGitee
|
22fa797809
|
!121 fix 字典分类提交时候,验证type_code 是否为空
Merge pull request !121 from jiangsi/N/A
|
2024-12-27 09:44:27 +00:00 |
|
 我叫以赏andGitee
|
dff1cc18ce
|
fix: 移出不必要的导入
Signed-off-by: 我叫以赏 <lovepikachu@foxmail.com>
|
2024-02-10 04:08:09 +00:00 |
|
不胜舟
|
f59767096b
|
fix 记住密码
|
2024-01-12 21:29:27 +08:00 |
|
 jiangsiandGitee
|
60674d7ab7
|
数据字典功能,具体的字典需要依赖type_code 和字典分类关联,需要在添加字典分类的时候验证是否填写了typecode,不然会出现type_code 为none的情况。 并且type_code在字典分类的编辑状态为readonly的。
Signed-off-by: jiangsi <jiangsi@gmail.com>
|
2023-12-24 18:39:56 +00:00 |
|
 陈心巧andGitee
|
2e806f1dcf
|
update applications/view/system/dept.py.
修正部门不能更新bug。
id = json.get("deptId"), 会得到tuple
在其后的 Dept.query.filter_by(id=id) , 会生成形如 update 。。。。 from xx where id=( id, ) 的sql,导致执行sql失败
#id = json.get("deptId"),
改成
id = str_escape(json.get("deptId")) 即可。
Signed-off-by: 陈心巧 <12432082+chenxinqiao@user.noreply.gitee.com>
|
2023-11-09 08:11:17 +00:00 |
|
HuoWenBo
|
c058e03fbf
|
更改内存硬盘单位自适应
|
2023-07-25 11:40:54 +08:00 |
|
 我叫以赏andGitee
|
4cabce3a8b
|
fix: 修复插件报错提示
|
2023-07-04 05:39:47 +00:00 |
|
不胜舟
|
917579684e
|
去除首页面,优化命名,优化schema
|
2023-06-21 01:25:44 +08:00 |
|
不胜舟
|
4e7a85bead
|
去除首页面,优化命名,优化schema
|
2023-06-21 01:15:56 +08:00 |
|
不胜舟
|
3690b8c22a
|
精简功能
|
2023-05-30 01:00:06 +08:00 |
|
我叫以赏
|
d71f8ce368
|
修复在更新目录结构后插件无法使用的问题
|
2023-04-16 15:55:29 +08:00 |
|
不胜舟
|
c5a8a1a653
|
修复json请求获取错误
|
2023-04-06 16:19:59 +08:00 |
|
不胜舟
|
bced84f92d
|
修改数据库初始化逻辑,完善权限,废弃flaskenv
|
2023-04-06 16:09:49 +08:00 |
|
 ω•ƒεïandGitee
|
2a523a3b41
|
update applications/view/admin/user.py.
用户管理 分页插件报错,TypeError: 'Pagination' object is not iterable,需要query 改成query.items解决
Signed-off-by: ω•ƒεï <164175317@qq.com>
|
2023-03-08 02:32:14 +00:00 |
|
不胜舟
|
990b8dd73e
|
修改用户管理bug
|
2023-02-19 18:01:44 +08:00 |
|
不胜舟
|
3a73465365
|
修复用户管理bug
|
2023-02-18 23:10:22 +08:00 |
|
wojiaoyishang
|
9c920fefcc
|
修正init
|
2023-02-12 12:29:20 +08:00 |
|
wojiaoyishang
|
8e9d3519e4
|
修正init
|
2023-02-12 12:24:25 +08:00 |
|
wojiaoyishang
|
67b1462453
|
dev文件夹合并至utils
|
2023-02-11 13:34:46 +08:00 |
|
wojiaoyishang
|
7f7e142dc4
|
去除插开发者信息
|
2023-02-11 08:28:23 +08:00 |
|
wojiaoyishang
|
b92c450be4
|
更新插件功能
|
2023-02-10 23:05:54 +08:00 |
|
wojiaoyishang
|
7bef64f632
|
更新插件功能
|
2023-02-10 21:29:39 +08:00 |
|
不胜舟
|
83964bfa78
|
修改鉴权逻辑 --> 管理员获得访问全部权限白名单
|
2022-12-28 01:38:40 +08:00 |
|