297a97974d
feat(hotspot): real extraction engine — pluggable parsers + 11 builtins
...
- parser_config field in hotspot_source for per-source extraction rules
- Pluggable: json_path/css/regex/rss/builtin
- 11 builtin platform parsers (weibo/zhihu/baidu/toutiao/bilibili/douyin/36kr/github/hn/v2ex/rsshub)
2026-08-01 12:09:23 +08:00
64cc51cb6e
feat(hotspot): comprehensive revamp — 6 tables, 3 fetch modes, 5-dim analysis
...
Database (3→6 tables):
- hotspot_source: support api/browser/crawler types with type-specific fields
- hotspot_schedule: cron/interval daemon config per source
- hotspot_fetch_log: per-run audit trail (status/duration/items/errors)
- hotspot_item: add heat_velocity, engagement/comment/share counts, sentiment
- hotspot_analysis: 5-dimension scoring (time/heat/content/propagation/audience)
- hotspot_alert: alert rules (heat threshold/velocity/sentiment triggers)
Fetch engine (3 modes):
- API: GET/POST + headers + Bearer auth + JSON extraction
- Browser: HTML title/link extraction + og:title fallback
- Crawler: recursive with depth/domain allowlist/link following
Analysis engine:
- Exponential decay model (7-day half-life)
- Auto-classify: emerging→rising→hot→cooling→expired
- 5-dimension scoring with detail JSON per dimension
Dashboard: 6 tabs + 7 stat cards + workflow guide
Permission paths: 42 paths registered (6 tables × 7 CRUD ops)
2026-08-01 11:14:58 +08:00
768544511c
merge: resolve conflicts, keep hotspot module alongside remote changes
2026-08-01 10:46:29 +08:00
71ecb8fea1
feat: add hotspot radar module (热点雷达系统)
...
- Add hotspot_source/hotspot_item/hotspot_analysis table definitions
- Add MySQL DDL for all three tables with indexes
- Create hotspot dashboard UI (index.ui) with stats, tabs for CRUD
- Add DSPY endpoints: stats, fetch_now (RSS/API), analyze (auto-classify)
- Register paths in load_path.py with logined access
- Add '热点雷达' menu entry
2026-08-01 10:39:52 +08:00
27dfc1b5c8
menu: replace old model lists with cockpit 模型广场, add 3 new llmage paths
...
- Replaced '供应商模型列表'+'模型列表' sub-items with single '模型广场'
pointing to /llmage/model_plaza.ui
- Added 3 new paths to load_path: model_plaza.ui, plaza_model_cards.ui,
api/get_plaza_models.dspy
2026-07-28 18:24:05 +08:00
2d0816f3ff
fix Sortable.min.js path to tenant dir (bypass RBAC 401)
2026-07-23 16:03:02 +08:00
9ca9e007e7
load Sortable.min.js in index_carousel for drag-drop widgets
2026-07-23 15:58:52 +08:00
275585abda
tokentest static landing: modular top/center/bottom + carousel + flip cards + zh/en/jp/ko + login redirect
2026-07-23 15:02:28 +08:00
7bb2f9b4b5
api_doc.ui: request.args.get('lang') -> params_kw._lang
2026-07-21 14:55:14 +08:00
2f715296a2
bugfix
2026-07-21 14:30:22 +08:00
fcf4bee7ef
bugfix
2026-07-21 14:27:46 +08:00
d2282c22c8
bugfix
2026-07-21 14:00:38 +08:00
7d50586964
docs: 迁移API文档从dashboard_for_sage到docs/,支持多语言(api_doc_{lang}.md)
2026-07-21 13:39:27 +08:00
4e903c0f1b
菜单: 仪表盘从dashboard_for_sage切换为sage_datamart(客户+分销商)
2026-07-21 13:13:50 +08:00
73ee108cab
feat: add tenant landing page with multi-tenant support
...
- Add /tenant/index.ui using bricks framework (no inline styles)
- Use Image widget for all images (logo, hero, case studies)
- Register /tenant and /tenant/index.ui routes as 'any' permission
- Include responsive CSS with tenant- prefix to avoid conflicts
- Login button redirects to /rbac/user/login.ui
- Support multi-tenant customization via ?tenant=xxx parameter
2026-07-20 14:41:17 +08:00
7d294204c4
fix: 客户菜单移除租户管理入口
2026-07-15 16:02:34 +08:00
ac2f691e1b
menu: add 自由客户分配 + 客户再分配 to global_menu
2026-07-14 10:33:28 +08:00
963953ae15
bugfix
2026-07-13 15:48:05 +08:00
6ce352b687
bugfix
2026-07-13 15:46:30 +08:00
a46ca8e5da
feat: add globe, setting, userrole SVG icons for menu
2026-07-10 12:02:12 +08:00
67934c6767
fix: restructure menu permissions by role
...
- 用户管理: *.admin roles (any role with .admin suffix)
- 租户管理: reseller.operator or owner.superuser
- 系统权限管理: owner.superuser only
- 基础配置: owner.superuser only
2026-07-10 11:53:27 +08:00
ae6e017199
fix: 基础配置移除编码值管理(编码管理已含kv)
2026-07-09 17:17:34 +08:00
8d641affad
feat: 基础配置菜单(superuser)+会计RBAC路径
2026-07-09 17:16:02 +08:00
44d2a8c6c8
chore: remove platformbiz module — replaced by product_management + supplychain
2026-07-09 13:59:50 +08:00
a3fd6cf194
feat: 租户品牌名改用brand_name字段,不从orgname取
2026-07-09 12:23:33 +08:00
81ed08ebe7
fix: tenant_brand_data.dspy加return result
2026-07-09 12:08:17 +08:00
0dd7414d06
fix: index.ui用JS动态获取租户品牌数据,替代Jinja DB查询
2026-07-09 12:05:30 +08:00
ec51ff30da
feat: 租户品牌设置页面(tenant_brand.ui) + 保存端点
2026-07-09 12:03:31 +08:00
09bf64378f
fix: index.ui用db.sqlorContext()替代request._run_ns
2026-07-09 12:02:54 +08:00
876d9ff59e
feat: 租户自定义左上角图标和系统名称,读取organization.iconid+orgname
2026-07-09 12:02:12 +08:00
4a1535563b
feat: add 租户管理 to Sage global menu
2026-07-09 11:57:20 +08:00
d8bd26d37b
chore: remove module wwwroot symlinks from git tracking
...
These are intermediate symlinks created by build.sh, not source files.
2026-07-07 13:26:21 +08:00
9e3b05d3f7
chore: rebuild merged migration SQL
2026-07-06 14:31:04 +08:00
ef44700203
chore: gitignore deploy artifacts (config, pid, symlinks)
2026-07-03 17:28:44 +08:00
12af8e9ac8
fix: CRUD endpoint return format - remove json.dumps, use widgettype format
2026-07-03 14:51:19 +08:00
aceac58764
bugfix
2026-06-30 16:42:29 +08:00
6c94376b3d
bugfix
2026-06-29 13:50:45 +08:00
df0f50e4f7
fix: 恢复 language.ui 为原版 Text widget
...
VBox 是布局容器不支持 click 事件,导致:
- 语言代码不显示(VBox 无 otext)
- 点击无反应(VBox 不触发 click bind)
- 语言切换后代码不更新(缺少 app lang bind)
恢复为 Text widget + Popup click + lang event bind
2026-06-29 13:26:29 +08:00
ed7cd6ba54
chore: 停止追踪生成的 i18n 文件,添加语言切换图标
...
- 从 git 删除 wwwroot/i18n/{zh,en,jp,ko}/ 生成文件(由 merge_i18n.py 生成)
- 添加 .gitignore 排除生成目录
- 新增 language.svg (globe icon) 替换纯文字语言切换器
- language.ui 改为 VBox: globe图标 + 语言代码标签
2026-06-29 11:46:15 +08:00
7d6362b1d4
chore: remove committed symlink wwwroot/bugfix
2026-06-29 11:31:26 +08:00
6493b636a7
fix: i18n_getmsgs.dspy 读取路径缺少 i18n/ 前缀
...
原代码: os.path.dirname(__file__) + lang → wwwroot/{lang}/i18n.json (不存在)
修正为: + 'i18n' + lang → wwwroot/i18n/{lang}/i18n.json (正确)
同时重跑 merge_i18n.py 确保生成最新合并文件
2026-06-29 11:31:13 +08:00
3948f623ac
feat(i18n): 添加DataViewer弹窗国际化翻译
...
新增key:
- Search Filter (搜索过滤/検索フィルター/검색 필터)
- Delete conform (删除确认/削除確認/삭제 확인)
- Are you sure to delete this record?
2026-06-26 11:05:29 +08:00
f4a5a66929
fix: i18n_getmsgs.dspy 移到 wwwroot 根目录
2026-06-25 14:20:48 +08:00
9f66377222
fix: i18n_getmsgs.dspy 返回扁平字典格式
2026-06-25 14:13:23 +08:00
156767b1e8
fix: i18n_getmsgs.dspy 移到 i18n 目录下
2026-06-25 14:07:00 +08:00
d3befb972d
feat: 添加 i18n_getmsgs 端点支持多语言翻译
2026-06-25 14:03:16 +08:00
e5450225aa
i18n: 添加文件上传控件提示翻译(zh/ko/jp/en)
2026-06-25 13:53:23 +08:00
Hermes Agent
0c4269fd06
fix: discount CRUD路径改为tablename/index.ui格式
2026-06-24 01:25:00 +08:00
Hermes Agent
dce3348bf6
feat: 添加折扣管理菜单到global_menu
...
- 管理员侧新增'折扣管理'菜单(定价管理后面)
- 子菜单: 折扣方案/折扣产品明细/营销方案/促销码/客户归属
- 新增percent.svg图标
2026-06-24 00:58:40 +08:00
Hermes Agent
6225ce06c9
Revert "fix: root VBox height:100% instead of cheight:40"
...
This reverts commit c4450d2a6c26ae38aea2c2edf4ada073421b2898.
2026-06-19 14:26:33 +08:00