36 Commits

Author SHA1 Message Date
6f81fd2518 bugfix 2026-05-06 08:50:08 +08:00
1efd62e30b fix: replace non-existent /api/logout.dspy with /rbac/user/logout.dspy 2026-05-06 08:18:59 +08:00
af5cce0c45 bigfix 2026-05-06 08:11:39 +08:00
b045758ebc bugfix 2026-05-06 07:59:57 +08:00
f860d86c00 fix: replace background with bgcolor, unwrap widgettype:Page to promote subwidgets to top level 2026-05-06 07:48:50 +08:00
f901813244 revert: only add /{modulename}/{tablename} page path permission, remove CRUD API registration 2026-05-05 22:28:20 +08:00
98e1bbe96a fix: register /{module}/{table} page path for CRUD table menu items in init_permissions.py
- Menu items use url='{{entire_url('/module/table')}}' format
- init_permissions.py now registers both the page path and CRUD API endpoints
- Page path: /{module}/{table} (for menu navigation)
- API paths: /{module}/api/{table}_{list|create|update|delete}.dspy
2026-05-05 22:22:41 +08:00
cbbc179491 feat: add module menu.ui files and update main menu to use submenu format
- Create menu.ui for each module (customer_management, opportunity_management, contract_management, financial_management, workflow_approval, unified_dashboard)
- Update main app index.ui to use submenu: "{{entire_url('/module/menu.ui')}}" format for each module menu item
- Each menu.ui contains CRUD items for all module tables plus other UI/DSpy functionality
2026-05-05 21:33:46 +08:00
a0daa285c0 fix: replace backgroundColor with bgcolor (bricks framework valid property) 2026-05-05 19:50:02 +08:00
e7bb5c5cf2 fix: deep-flatten all style objects to options at any nesting level
- Flatten style in widget root, options, and nested structures (row_options.fields etc.)
- Remove invalid 'formsubmit' actiontype from login.ui
- All 54 .ui files pass validation
2026-05-05 19:47:31 +08:00
fe5bb67d1c fix: flatten style to options, remove invalid actiontype, fix Button/Text widget properties
- Flatten nested style objects directly into options (bricks doesn't recognize 'style')
- Remove invalid 'formsubmit' actiontype from login.ui binds
- Text/Title use 'text', Button uses 'label'
- All paths use {{entire_url()}}
2026-05-05 19:35:58 +08:00
282c1780ba fix: Text widgets use 'text' not 'label', Button widgets use 'label' not 'text
Per bricks-framework specification:
- Text/Title controls: use 'text' for non-i18n text, 'otext'+'i18n:true' for i18n
- Button controls: use 'label' for button display text
2026-05-05 19:28:38 +08:00
21cbd1b2fb fix: use {{entire_url()}} for all Menu url paths in index.ui and login.ui
- Menu items now use {{entire_url('/module')}} instead of hardcoded paths
- Iframe src also uses {{entire_url()}}
- Register button in login.ui uses {{entire_url('/rbac/user/register.ui')}}
- Removed unnecessary binds for Menu widget (Menu handles click internally)
2026-05-05 16:15:34 +08:00
e7c6ec548d bugfix 2026-05-05 15:21:05 +08:00
010ab6e354 remove app/init_permissions.py, keep only root init_permissions.py 2026-05-05 14:17:02 +08:00
b4785d49ab fix: APP_ROOT handles both root/ and app/ script locations 2026-05-05 14:15:59 +08:00
77cdacf878 fix: correct APP_ROOT to single dirname since script is in project root 2026-05-05 14:15:32 +08:00
bec9cb956b fix: use raw SQL for user password update to avoid sor.U() generating wrong WHERE clause 2026-05-05 14:13:03 +08:00
1fc2be73c0 fix: init_permissions.py - use config.json databases for DBPools, add id for rolepermission insert
1. Replace manual DB_CONFIG with getConfig('.').databases for DBPools init
2. Add id=getID() when inserting into rolepermission table (id has no default value)
3. Sync app/ and root copies
2026-05-05 14:08:49 +08:00
6255feaf5b fix: remove all /main prefix from perm_config.py paths 2026-05-05 13:46:29 +08:00
1ed4ce0935 fix: RBAC permission init - remove /main prefix, include js/css files, use * wildcard
- perm_config.py: all paths no longer use /main prefix
- init_permissions.py:
  1. scan wwwroot including symlinks for .ui/.dspy/.js/.css
  2. register paths without /main prefix
  3. create admin_superuser user (super/Kyy@123456)
  4. use orgtypeid='*' for role wildcard matching
- sync app/ and root copies
2026-05-05 13:44:55 +08:00
f932bfb088 bugfix 2026-05-03 14:26:27 +08:00
de8ce23fcb fix: add bricks_for_python to core dependencies 2026-04-29 17:29:44 +08:00
c967cfffda fix: ensure permission.permtype column is VARCHAR(255) after schema import 2026-04-29 15:29:25 +08:00
d5c0fcb1cd fix: filter Exception output from DDL generation to prevent corrupting schema SQL 2026-04-29 14:34:51 +08:00
b0de930324 docs: update DEPLOY.md for automated one-step build process 2026-04-29 13:28:03 +08:00
f83dde78f9 refactor: automate build.sh to clone modules, configure DB and init permissions
- Clone all reference and business modules to pkgs/
- Interactive DB config (host, port, user, password)
- Auto-create database, import schema, encrypt password in config.json
- Auto-run permission initialization
- Generate start.sh/stop.sh
2026-04-29 13:26:34 +08:00
2134a83738 docs: add deployment guide (DEPLOY.md) 2026-04-29 13:03:38 +08:00
4c5b2a5716 feat: add permission config and initialization for single-owner CRM
- perm_config.py: role definitions and permission matrix (underscore-based role IDs)
- init_permissions.py: permission initialization script
- .gitignore: add build artifacts exclusions
- Remove multi-org type design, single owner org only
2026-04-29 12:57:14 +08:00
2b921a209d sync: local modifications to integrated_crm_app
- Updated app/integrated_crm_app.py, build.sh, conf/config.json
- Added config.ini, schema.sql, send_email.py, test_db_conn.py
- Added full wwwroot/ with bricks framework, all module frontends, login/main UI
2026-04-28 18:54:07 +08:00
7aa37245ee bugfix 2026-04-17 11:18:27 +08:00
1026edc822 bugfix 2026-04-16 15:19:08 +08:00
1518acf709 bugfix 2026-04-16 15:15:52 +08:00
fa8df43a5f bugfix 2026-04-16 15:07:08 +08:00
b6ff13734c feat(crm): 集成商机管理模块并更新构建脚本
- 添加商机管理模块到集成CRM应用
- 更新构建脚本以包含商机管理模块
- 生成完整的数据库模式文件 integrated_crm_app_schema.sql
- 更新模块初始化逻辑
2026-04-16 14:32:41 +08:00
7b261b4f48 bugfix 2026-04-16 13:41:15 +08:00