| Dimension | Shared | Only in A | Only in B | Overlap |
|---|---|---|---|---|
| Sections | 2 | 23 | 15 | 5% |
| Commands | 0 | 12 | 6 | 0% |
| Section tags | 6 | 8 | 1 | 40% |
What each file covers
Sections
2 shared · 23 only in A · 15 only in B- − Common Commands
- − Linting (no unified "lint" script — run individually)
- − Testing (Jest configured but not integrated into npm scripts)
- − Tests exist in tests/ directory but no test script in package.json
- − Run manually if needed: npx jest
- − Path Aliases
- − Architecture
- − Bootstrap Sequence (src/main.ts)
- − Routing & Permissions
- − State Management (Pinia)
- − API Layer
- − Component Registration
- − Icon System
- − Theme System
- − External Packages
- − Performance Optimization Patterns
- − Micro-Frontend (Qiankun)
- − Electron Support
- − Key Configuration
- − Environment Variables
- − Build
- − Code Style
- − Important Directories
- + Build & Run Commands
- + Full build (tests are skipped by default via surefire config)
- + Build with tests
- + Run the standalone application (port 8080, context-path: /jeecg-boot)
- + Build a specific module (with dependencies)
- + Run a single test class
- + Build with microservices modules included
- + Docker startup
- + Module Architecture
- + Key Technology Stack
- + Code Conventions & Patterns
- + Database
- + Configuration
- + Docker Services (docker-compose.yml)
- + Online 低代码模块 (jeecg-boot-module-online)
- CLAUDE.md
- Project Overview
Commands
0 shared · 12 only in A · 6 only in B- − pnpm dev
- − pnpm build
- − pnpm build:docker
- − pnpm build:dockercloud
- − pnpm build:report
- − pnpm preview
- − npx eslint src/path/to/file.vue
- − npx stylelint "src/**/*.{vue,less,css}"
- − pnpm batch:prettier
- − pnpm clean:cache
- − pnpm gen:icon
- − pnpm reinstall
- + mvn clean package
- + mvn clean package -DskipTests=false
- + mvn spring-boot:run
- + mvn clean package -pl jeecg-boot-base-core -am
- + mvn test -DskipTests=false -pl <module> -Dtest=<TestClassName>
- + mvn clean package -P SpringCloud
Section tags
6 shared · 8 only in A · 1 only in B- − setup
- − lint-format
- − testing-strategy
- − git-pr
- − security
- − api
- − ui
- − performance
- + database
- build
- test
- code-style
- architecture
- dependencies
- agent-behaviour
Line diff
jeecgboot/JeecgBoot · jeecgboot-vue3/CLAUDE.md
@@ −1 @@
1# CLAUDE.md
2
3This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
5## Project Overview
6
7JeecgBoot Vue3 frontend — an enterprise low-code platform built with Vue 3 + Vite 6 + Ant Design Vue 4 + TypeScript. Uses pnpm as package manager. Node 18 or 20+ required (`engines: "^18 || >=20"`).
8
9## Common Commands
10
11```bash
12pnpm dev # Start dev server (port 3100, mock enabled)
13pnpm build # Production build (output: dist/)
14pnpm build:docker # Docker production build
15pnpm build:dockercloud # Docker cloud production build
16pnpm build:report # Build with bundle visualizer
17pnpm preview # Build + preview
18
19# Linting (no unified "lint" script — run individually)
20npx eslint src/path/to/file.vue # Lint specific file
21npx stylelint "src/**/*.{vue,less,css}" # Stylelint
22pnpm batch:prettier # Format all src files
23
24# Testing (Jest configured but not integrated into npm scripts)
25# Tests exist in tests/ directory but no test script in package.json
26# Run manually if needed: npx jest
27
28pnpm clean:cache # Clear Vite cache
29pnpm gen:icon # Regenerate icon data
30pnpm reinstall # Clean reinstall all dependencies
31```
32
33## Path Aliases
34
35- `/@/` and `@/` → `src/`
36- `/#/` and `#/` → `types/`
37- `~icons/{collection}/{name}` → unplugin-icons (compile-time icon imports)
38
39The `/@/` prefix (with leading slash) is the project's conventional alias — prefer it for consistency.
40
41## Architecture
42
43### Bootstrap Sequence (src/main.ts)
44
45`createApp` → createRouter → setupStore (pinia) → setupProps → i18n → initAppConfigStore → registerPackages (@jeecg/online) → registerGlobComp (core Ant Design components) → SSO login → registerSuper (dynamic module discovery) → setupRouter → guards → directives → error handler → registerThirdComp (vxe-table, emoji, dayjs) → setupElectron → router.isReady() → mount
46
47### Routing & Permissions
48
49- **Permission mode: BACK** — routes and menus are fetched from the backend API via `getBackMenuAndPerms()`
50- Dynamic routes added at runtime in `src/store/modules/permission.ts`
51- Static routes: login, oauth2-login, token-login, error pages, AI dashboard
52- Router mode: HTML5 history (hash mode when running in Electron)
53- Super modules discovered dynamically via `import.meta.glob('./**/register.ts')` in `src/views/super/registerSuper.ts`
54
55### State Management (Pinia)
56
57Key stores in `src/store/modules/`:
58- `user.ts` (app-user) — auth token, user info, roles, tenant, dict items
59- `permission.ts` (app-permission) — dynamic routes, permission codes, backend menus
60- `app.ts` (app) — project config, theme, layout settings
61- `locale.ts` (app-locale) — i18n locale
62- `multipleTab.ts` (app-multiple-tab) — tab state
63
64Auth persisted in localStorage via `src/utils/auth/index.ts`.
65
66### API Layer
67
68- Custom Axios wrapper: `src/utils/http/axios/` — configured instance exported as `defHttp`
69- All requests signed with MD5 via `signMd5Utils`
70- Tenant ID injected as header when `VITE_GLOB_TENANT_MODE` is enabled
71- Response format: `{ code, result, message, success }` where `code === 200` is success
72
73### Component Registration
74
75- **Auto-import**: `unplugin-vue-components` with `AntDesignVueResolver` auto-imports all Ant Design Vue components (no manual import needed in templates)
76- **Global manual**: `registerGlobComp.ts` registers Icon, AIcon, JUploadButton, Button, TinyMCE Editor
77- **Third-party**: `registerThirdComp.ts` registers vxe-table (full import), custom vxe cell components, emoji picker, dayjs plugins
78- **Async loading**: Heavy components use `src/utils/factory/createAsyncComponent.tsx`
79
80### Icon System
81
82Three icon approaches:
831. **Iconify runtime** — `<Icon icon="mdi:home" />` via `@iconify/iconify` CDN lazy-load
842. **SVG sprites** — `<Icon icon="icon-name|svg" />` via `vite-plugin-svg-icons`
853. **unplugin-icons** — `import IconName from '~icons/collection/name'` for compile-time tree-shaken icons
86
87### Theme System
88
89- Less variables generated by `build/generate/generateModifyVars.ts`
90- Dark mode via Ant Design Vue `theme.darkAlgorithm`
91- CSS variable `--j-global-primary-color` set dynamically from theme color
92- CSS class prefix: `jeecg` (defined in `src/settings/designSetting.ts`)
93
94### External Packages
95
96- `@jeecg/online` and `@jeecg/aiflow` are external monorepo packages excluded from Vite optimizeDeps (CJS compatibility issues)
97- Registered via `registerPackages(app)` in main.ts
98
99### Performance Optimization Patterns
100
101**Critical: Use dynamic imports for non-critical modules**
102- Static `import` at top of file causes the entire dependency chain to load on initial page
103- Use `await import('module')` or `import('path/to/module').then()` for lazy loading
104- Key files using dynamic imports:
105 - `src/settings/registerThirdComp.ts` — vxe-table, emoji picker (loaded after mount)
106 - `src/views/super/registerSuper.ts` — dynamic module discovery
107 - Non-critical Ant Design Vue components loaded asynchronously
108
109**Vite optimizeDeps**
110- Pre-bundled dependencies in `vite.config.ts` include: dayjs, axios, pinia, nprogress, qs, crypto-js, md5, sortablejs, xe-utils, vue-i18n, lodash-es, xss, mockjs
111- External packages (`@jeecg/*`) excluded due to CJS issues
112
113### Micro-Frontend (Qiankun)
114
115- Can run as master (hosting sub-apps) or child (embedded in parent)
116- Config in `src/qiankun/`, sub-apps via `VITE_APP_SUB_*` env vars
117- Child mode activated when `VITE_GLOB_QIANKUN_MICRO_APP_NAME` is set
118
119### Electron Support
120
121- `src/electron/` — uses hash router mode
122- Platform detected via `VITE_GLOB_RUN_PLATFORM === 'electron'`
123
124## Key Configuration
125
126### Environment Variables
127
128- `.env` — base config (port 3100, app title, SSO/qiankun flags)
129- `.env.development` — mock enabled, proxy to `localhost:8080/jeecg-boot`
130- `.env.production` — mock disabled, gzip compression
131- `.env.docker` — Docker production build config
132- `.env.dockercloud` — Docker cloud production build config
133- `.env.prod_electron` — Electron production build config
134- `VITE_GLOB_*` vars are injected at runtime via `dist/_app.config.js` (changeable post-build)
135
136### Build
137
138- Manual chunks: `vue-vendor`, `antd-vue-vendor`, `vxe-table-vendor`, `emoji-mart-vue-fast`, `china-area-data-vendor`
139- Post-build: `build/script/postBuild.ts` generates runtime config; `copyChat.ts` copies chat assets
140- Console/debugger stripped in production via esbuild
141
142## Code Style
143
144- **Prettier**: 150 char width, single quotes, trailing commas (es5), 2-space indent, `endOfLine: 'auto'`, `vueIndentScriptAndStyle: true` (indent inside `<script>`/`<style>`), `htmlWhitespaceSensitivity: 'strict'`
145- **ESLint**: Vue3 recommended + TypeScript recommended + Prettier. `any` is allowed. Unused vars prefixed with `_` are ignored. Note: `prettier/prettier` rule is `'off'` — Prettier is not enforced via ESLint, run it separately
146- **Commits**: Conventional commits enforced via commitlint. Types: feat, fix, perf, style, docs, test, refactor, build, ci, chore, revert, wip, workflow, types, release. Max header: 108 chars
147- **i18n**: Chinese (zh-CN) and English supported. Locale files in `src/locales/lang/`
148
149## Important Directories
150
151```
152build/ # Vite plugins, build scripts, theme generation
153src/api/ # API definitions (sys/, common/, demo/)
154src/components/jeecg/ # Jeecg-specific components (JVxeTable, OnLine, etc.)
155src/layouts/default/ # Main app layout (header, sider, tabs, menu)
156src/settings/ # Project settings (design, components, locale, encryption)
157src/utils/http/axios/ # HTTP client configuration
158src/views/system/ # System management pages (user, role, menu, dict, etc.)
159src/views/super/ # Dynamically-discovered extension modules
160types/ # Global TypeScript declarations
161```
162
jeecgboot/JeecgBoot · jeecg-boot/CLAUDE.md
@@ +1 @@
1# CLAUDE.md
2
3> You should always answer questions in Simplified Chinese first, unless the user explicitly requests another language.
4
5This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
6
7## Project Overview
8
9JeecgBoot 3.9.3 — a Java low-code development platform built on **Spring Boot 4.1.0**, **Java 17** (also supports 21, 24). It runs as a monolithic app by default, with an optional Spring Cloud microservices mode. Uses `jakarta` namespace (not `javax`) throughout.
10
11## Build & Run Commands
12
13```bash
14# Full build (tests are skipped by default via surefire config)
15mvn clean package
16
17# Build with tests
18mvn clean package -DskipTests=false
19
20# Run the standalone application (port 8080, context-path: /jeecg-boot)
21cd jeecg-module-system/jeecg-system-start
22mvn spring-boot:run
23
24# Build a specific module (with dependencies)
25mvn clean package -pl jeecg-boot-base-core -am
26
27# Run a single test class
28mvn test -DskipTests=false -pl <module> -Dtest=<TestClassName>
29
30# Build with microservices modules included
31mvn clean package -P SpringCloud
32
33# Docker startup
34./start-docker-compose.sh # or start-docker-compose.bat on Windows
35```
36
37## Module Architecture
38
39```
40jeecg-boot-parent (root pom)
41├── jeecg-boot-base-core # Core framework: Shiro/JWT auth, MyBatis-Plus config,
42│ # common utilities, AOP aspects, base controllers
43├── jeecg-module-system # System management (users, roles, permissions, dicts, menus)
44│ ├── jeecg-system-api # API interfaces (local-api vs cloud-api for mono/micro switch)
45│ │ ├── jeecg-system-local-api # Direct method calls (monolithic)
46│ │ └── jeecg-system-cloud-api # Feign clients (microservices)
47│ ├── jeecg-system-biz # Business logic, entities, mappers, services
48│ └── jeecg-system-start # Main entry point (JeecgSystemApplication), all configs
49├── jeecg-boot-module # Business feature modules
50│ ├── jeecg-module-demo # Demo/example code
51│ ├── jeecg-boot-module-airag # AI/RAG integration
52│ ├── jeecg-boot-module-easyoa # Simple OA module
53│ ├── jeecg-boot-module-joa-flowable # OA + Flowable workflow
54│ ├── jeecg-boot-module-pay # Payment module
55│ └── jeecg-boot-module-wps # WPS document integration
56└── jeecg-boot-platform # Low-code platform modules
57 ├── jeecg-boot-module-bpm-flowable # BPM workflow engine
58 ├── jeecg-boot-module-airag-flow # AI RAG flow
59 ├── jeecg-boot-module-bigscreen # Big screen/dashboard designer
60 ├── jeecg-boot-module-desform # Form designer
61 ├── jeecg-boot-module-drag # Drag-and-drop report designer
62 ├── jeecg-boot-module-lowapp # Low-code application engine
63 ├── jeecg-boot-module-mindesflow-flowable # Simple flow designer
64 └── jeecg-boot-module-online # Online code generator & forms
65```
66
67Optional microservices modules (activated via `-P SpringCloud`):
68- `jeecg-server-cloud/` — Gateway (port 9999), Nacos (8848/18080), cloud service starters, monitoring (9111), XXL-Job (9080), Sentinel (9000)
69
70## Key Technology Stack
71
72| Layer | Technology |
73|-------|-----------|
74| ORM | MyBatis-Plus 3.5.16 (`BaseMapper<T>`, `ServiceImpl<M,T>`) |
75| Auth | Apache Shiro 3.0.0 + JWT 4.5.0, Redis-backed sessions |
76| DB Pool | Druid 1.2.28 with dynamic datasource support |
77| DB Migration | Flyway (scripts in `jeecg-system-start/src/main/resources/flyway/sql/mysql/`) |
78| JSON | FastJSON 2 |
79| Excel | AutoPoi (`autopoi-spring-boot-3-starter`) |
80| API Docs | Knife4j 4.5.0 (OpenAPI v3, `@Schema` annotations) |
81| Scheduled Jobs | Quartz (JDBC store, clustered) |
82| File Storage | MinIO / Aliyun OSS / Qiniu (controlled by `jeecg.uploadType` config) |
83| Microservices | Spring Cloud 2025.1.0.0 + Alibaba (Nacos, Gateway, Sentinel) |
84
85## Code Conventions & Patterns
86
87**Package structure:** `org.jeecg.modules.<module-name>.{controller,entity,mapper,mapper.xml,service,service.impl,vo}`
88
89**Naming conventions:**
90- Entities: `Sys` prefix for system entities (e.g., `SysUser`, `SysRole`). Use `@TableName`, `@TableId(type = IdType.ASSIGN_ID)`
91- Controllers: `<Entity>Controller extends JeecgController<Entity, IService>` — base class provides standard CRUD + Excel import/export
92- Services: Interface `I<Entity>Service extends IService<Entity>`, impl `<Entity>ServiceImpl extends ServiceImpl<Mapper, Entity>`
93- Mappers: `<Entity>Mapper extends BaseMapper<Entity>`, with XML in `mapper/xml/`
94
95**Common annotations on entities:** `@Data`, `@EqualsAndHashCode(callSuper = false)`, `@Accessors(chain = true)`, `@TableName`
96
97**API response wrapper:** `Result<T>` (from `org.jeecg.common.api.vo.Result`) — use `Result.OK(data)`, `Result.OK(msg, data)`, `Result.error(msg)`. The `result` field holds data, `success`/`code`/`message` hold status.
98
99**Auto query building:** `QueryGenerator.initQueryWrapper(entity, request.getParameterMap())` auto-builds `QueryWrapper` from HTTP request params, supporting fuzzy match, range queries, etc.
100
101**Monolithic ↔ Microservices switch:** The `jeecg-system-api` module has two implementations (`local-api` for direct calls, `cloud-api` for Feign). Switching is done by changing the dependency in the startup module, not by modifying business code.
102
103**代码修改痕迹日志:** 所有新增或修改的代码块必须用 `update-begin` / `update-end` 注释包裹,格式如下:
104
105```java
106//update-begin---author:作者 ---date:YYYY-MM-DD for:【bug号/需求号】修改说明-----------
107// 新增或修改的代码
108//update-end---author:作者 ---date:YYYY-MM-DD for:【bug号/需求号】修改说明-----------
109```
110
111规则:
112- `author` 填实际修改人,`date` 填修改日期(格式 `YYYY-MM-DD`),`for` 填 bug 号或需求号 + 简要说明
113- 新增方法:`update-begin` 放在方法声明前,`update-end` 放在方法结束 `}` 后
114- 修改已有方法中的代码:`update-begin` / `update-end` 只包裹被修改的代码段,不包裹整个方法
115- 用户未提供 bug 号时,需要主动询问
116
117## Database
118
119**Supported:** MySQL 8.0+ (default), PostgreSQL, Oracle 11g+, SQL Server 2017+, MariaDB, DM8 (达梦), KingBase ES. Database-specific configs are in `application-{dbtype}.yml` profiles.
120
121**Initial setup:** Import `db/jeecgboot-mysql-5.7.sql` for the base schema. Flyway handles incremental migrations (scripts organized by date folders like `202512/`).
122
123**Flyway note:** In dev mode, `spring.main.lazy-initialization=true` is enabled for startup speed, which can interfere with Flyway auto-config. Flyway auto-config is explicitly excluded and managed separately.
124
125## Configuration
126
127Main config files are in `jeecg-module-system/jeecg-system-start/src/main/resources/`:
128- `application.yml` — profile selector (active profile set by Maven: dev/test/prod/docker)
129- `application-dev.yml` — development config (port 8080, lazy-init enabled)
130- Dev environment requires: MySQL, Redis. Optional: MongoDB, RabbitMQ
131
132Key config namespace: `jeecg.*` in YAML controls platform features (upload type, firewall settings, AI config, MinIO, shiro excludes, etc.).
133
134## Docker Services (docker-compose.yml)
135
136MySQL (port 13306), Redis, PostgreSQL+pgvector, MongoDB, and the application container (port 8080).
137
138## Online 低代码模块 (jeecg-boot-module-online)
139
140Online 模块采用**元数据驱动**架构,通过数据库配置表(`onl_cgform_*`)实现运行时 CRUD,无需生成代码。配置存在数据库中而非文件系统,Claude Code 无法直接读取具体表单配置,需用户提供 JSON 导出或截图。
141
142**完整的配置 Schema、控件类型、默认值语法、增强机制等详见: [online-form-schema.md](online-form-schema.md)**
143
@@ −1 +1 @@
11 # CLAUDE.md
22
3+> You should always answer questions in Simplified Chinese first, unless the user explicitly requests another language.
4+
35 This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
46
57 ## Project Overview
68
7−JeecgBoot Vue3 frontend — an enterprise low-code platform built with Vue 3 + Vite 6 + Ant Design Vue 4 + TypeScript. Uses pnpm as package manager. Node 18 or 20+ required (`engines: "^18 || >=20"`).
9+JeecgBoot 3.9.3 — a Java low-code development platform built on **Spring Boot 4.1.0**, **Java 17** (also supports 21, 24). It runs as a monolithic app by default, with an optional Spring Cloud microservices mode. Uses `jakarta` namespace (not `javax`) throughout.
810
9−## Common Commands
11+## Build & Run Commands
1012
1113 ```bash
12−pnpm dev # Start dev server (port 3100, mock enabled)
13−pnpm build # Production build (output: dist/)
14−pnpm build:docker # Docker production build
15−pnpm build:dockercloud # Docker cloud production build
16−pnpm build:report # Build with bundle visualizer
17−pnpm preview # Build + preview
14+# Full build (tests are skipped by default via surefire config)
15+mvn clean package
1816
19−# Linting (no unified "lint" script — run individually)
20−npx eslint src/path/to/file.vue # Lint specific file
21−npx stylelint "src/**/*.{vue,less,css}" # Stylelint
22−pnpm batch:prettier # Format all src files
17+# Build with tests
18+mvn clean package -DskipTests=false
2319
24−# Testing (Jest configured but not integrated into npm scripts)
25−# Tests exist in tests/ directory but no test script in package.json
26−# Run manually if needed: npx jest
20+# Run the standalone application (port 8080, context-path: /jeecg-boot)
21+cd jeecg-module-system/jeecg-system-start
22+mvn spring-boot:run
2723
28−pnpm clean:cache # Clear Vite cache
29−pnpm gen:icon # Regenerate icon data
30−pnpm reinstall # Clean reinstall all dependencies
31−```
24+# Build a specific module (with dependencies)
25+mvn clean package -pl jeecg-boot-base-core -am
3226
33−## Path Aliases
27+# Run a single test class
28+mvn test -DskipTests=false -pl <module> -Dtest=<TestClassName>
3429
35−- `/@/` and `@/` → `src/`
36−- `/#/` and `#/` → `types/`
37−- `~icons/{collection}/{name}` → unplugin-icons (compile-time icon imports)
30+# Build with microservices modules included
31+mvn clean package -P SpringCloud
3832
39−The `/@/` prefix (with leading slash) is the project's conventional alias — prefer it for consistency.
33+# Docker startup
34+./start-docker-compose.sh # or start-docker-compose.bat on Windows
35+```
4036
41−## Architecture
37+## Module Architecture
4238
43−### Bootstrap Sequence (src/main.ts)
39+```
40+jeecg-boot-parent (root pom)
41+├── jeecg-boot-base-core # Core framework: Shiro/JWT auth, MyBatis-Plus config,
42+│ # common utilities, AOP aspects, base controllers
43+├── jeecg-module-system # System management (users, roles, permissions, dicts, menus)
44+│ ├── jeecg-system-api # API interfaces (local-api vs cloud-api for mono/micro switch)
45+│ │ ├── jeecg-system-local-api # Direct method calls (monolithic)
46+│ │ └── jeecg-system-cloud-api # Feign clients (microservices)
47+│ ├── jeecg-system-biz # Business logic, entities, mappers, services
48+│ └── jeecg-system-start # Main entry point (JeecgSystemApplication), all configs
49+├── jeecg-boot-module # Business feature modules
50+│ ├── jeecg-module-demo # Demo/example code
51+│ ├── jeecg-boot-module-airag # AI/RAG integration
52+│ ├── jeecg-boot-module-easyoa # Simple OA module
53+│ ├── jeecg-boot-module-joa-flowable # OA + Flowable workflow
54+│ ├── jeecg-boot-module-pay # Payment module
55+│ └── jeecg-boot-module-wps # WPS document integration
56+└── jeecg-boot-platform # Low-code platform modules
57+ ├── jeecg-boot-module-bpm-flowable # BPM workflow engine
58+ ├── jeecg-boot-module-airag-flow # AI RAG flow
59+ ├── jeecg-boot-module-bigscreen # Big screen/dashboard designer
60+ ├── jeecg-boot-module-desform # Form designer
61+ ├── jeecg-boot-module-drag # Drag-and-drop report designer
62+ ├── jeecg-boot-module-lowapp # Low-code application engine
63+ ├── jeecg-boot-module-mindesflow-flowable # Simple flow designer
64+ └── jeecg-boot-module-online # Online code generator & forms
65+```
4466
45−`createApp` → createRouter → setupStore (pinia) → setupProps → i18n → initAppConfigStore → registerPackages (@jeecg/online) → registerGlobComp (core Ant Design components) → SSO login → registerSuper (dynamic module discovery) → setupRouter → guards → directives → error handler → registerThirdComp (vxe-table, emoji, dayjs) → setupElectron → router.isReady() → mount
67+Optional microservices modules (activated via `-P SpringCloud`):
68+- `jeecg-server-cloud/` — Gateway (port 9999), Nacos (8848/18080), cloud service starters, monitoring (9111), XXL-Job (9080), Sentinel (9000)
4669
47−### Routing & Permissions
70+## Key Technology Stack
4871
49−- **Permission mode: BACK** — routes and menus are fetched from the backend API via `getBackMenuAndPerms()`
50−- Dynamic routes added at runtime in `src/store/modules/permission.ts`
51−- Static routes: login, oauth2-login, token-login, error pages, AI dashboard
52−- Router mode: HTML5 history (hash mode when running in Electron)
53−- Super modules discovered dynamically via `import.meta.glob('./**/register.ts')` in `src/views/super/registerSuper.ts`
72+| Layer | Technology |
73+|-------|-----------|
74+| ORM | MyBatis-Plus 3.5.16 (`BaseMapper<T>`, `ServiceImpl<M,T>`) |
75+| Auth | Apache Shiro 3.0.0 + JWT 4.5.0, Redis-backed sessions |
76+| DB Pool | Druid 1.2.28 with dynamic datasource support |
77+| DB Migration | Flyway (scripts in `jeecg-system-start/src/main/resources/flyway/sql/mysql/`) |
78+| JSON | FastJSON 2 |
79+| Excel | AutoPoi (`autopoi-spring-boot-3-starter`) |
80+| API Docs | Knife4j 4.5.0 (OpenAPI v3, `@Schema` annotations) |
81+| Scheduled Jobs | Quartz (JDBC store, clustered) |
82+| File Storage | MinIO / Aliyun OSS / Qiniu (controlled by `jeecg.uploadType` config) |
83+| Microservices | Spring Cloud 2025.1.0.0 + Alibaba (Nacos, Gateway, Sentinel) |
5484
55−### State Management (Pinia)
85+## Code Conventions & Patterns
5686
57−Key stores in `src/store/modules/`:
58−- `user.ts` (app-user) — auth token, user info, roles, tenant, dict items
59−- `permission.ts` (app-permission) — dynamic routes, permission codes, backend menus
60−- `app.ts` (app) — project config, theme, layout settings
61−- `locale.ts` (app-locale) — i18n locale
62−- `multipleTab.ts` (app-multiple-tab) — tab state
87+**Package structure:** `org.jeecg.modules.<module-name>.{controller,entity,mapper,mapper.xml,service,service.impl,vo}`
6388
64−Auth persisted in localStorage via `src/utils/auth/index.ts`.
89+**Naming conventions:**
90+- Entities: `Sys` prefix for system entities (e.g., `SysUser`, `SysRole`). Use `@TableName`, `@TableId(type = IdType.ASSIGN_ID)`
91+- Controllers: `<Entity>Controller extends JeecgController<Entity, IService>` — base class provides standard CRUD + Excel import/export
92+- Services: Interface `I<Entity>Service extends IService<Entity>`, impl `<Entity>ServiceImpl extends ServiceImpl<Mapper, Entity>`
93+- Mappers: `<Entity>Mapper extends BaseMapper<Entity>`, with XML in `mapper/xml/`
6594
66−### API Layer
95+**Common annotations on entities:** `@Data`, `@EqualsAndHashCode(callSuper = false)`, `@Accessors(chain = true)`, `@TableName`
6796
68−- Custom Axios wrapper: `src/utils/http/axios/` — configured instance exported as `defHttp`
69−- All requests signed with MD5 via `signMd5Utils`
70−- Tenant ID injected as header when `VITE_GLOB_TENANT_MODE` is enabled
71−- Response format: `{ code, result, message, success }` where `code === 200` is success
97+**API response wrapper:** `Result<T>` (from `org.jeecg.common.api.vo.Result`) — use `Result.OK(data)`, `Result.OK(msg, data)`, `Result.error(msg)`. The `result` field holds data, `success`/`code`/`message` hold status.
7298
73−### Component Registration
99+**Auto query building:** `QueryGenerator.initQueryWrapper(entity, request.getParameterMap())` auto-builds `QueryWrapper` from HTTP request params, supporting fuzzy match, range queries, etc.
74100
75−- **Auto-import**: `unplugin-vue-components` with `AntDesignVueResolver` auto-imports all Ant Design Vue components (no manual import needed in templates)
76−- **Global manual**: `registerGlobComp.ts` registers Icon, AIcon, JUploadButton, Button, TinyMCE Editor
77−- **Third-party**: `registerThirdComp.ts` registers vxe-table (full import), custom vxe cell components, emoji picker, dayjs plugins
78−- **Async loading**: Heavy components use `src/utils/factory/createAsyncComponent.tsx`
101+**Monolithic ↔ Microservices switch:** The `jeecg-system-api` module has two implementations (`local-api` for direct calls, `cloud-api` for Feign). Switching is done by changing the dependency in the startup module, not by modifying business code.
79102
80−### Icon System
103+**代码修改痕迹日志:** 所有新增或修改的代码块必须用 `update-begin` / `update-end` 注释包裹,格式如下:
81104
82−Three icon approaches:
83−1. **Iconify runtime** — `<Icon icon="mdi:home" />` via `@iconify/iconify` CDN lazy-load
84−2. **SVG sprites** — `<Icon icon="icon-name|svg" />` via `vite-plugin-svg-icons`
85−3. **unplugin-icons** — `import IconName from '~icons/collection/name'` for compile-time tree-shaken icons
105+```java
106+//update-begin---author:作者 ---date:YYYY-MM-DD for:【bug号/需求号】修改说明-----------
107+// 新增或修改的代码
108+//update-end---author:作者 ---date:YYYY-MM-DD for:【bug号/需求号】修改说明-----------
109+```
86110
87−### Theme System
111+规则:
112+- `author` 填实际修改人,`date` 填修改日期(格式 `YYYY-MM-DD`),`for` 填 bug 号或需求号 + 简要说明
113+- 新增方法:`update-begin` 放在方法声明前,`update-end` 放在方法结束 `}` 后
114+- 修改已有方法中的代码:`update-begin` / `update-end` 只包裹被修改的代码段,不包裹整个方法
115+- 用户未提供 bug 号时,需要主动询问
88116
89−- Less variables generated by `build/generate/generateModifyVars.ts`
90−- Dark mode via Ant Design Vue `theme.darkAlgorithm`
91−- CSS variable `--j-global-primary-color` set dynamically from theme color
92−- CSS class prefix: `jeecg` (defined in `src/settings/designSetting.ts`)
117+## Database
93118
94−### External Packages
119+**Supported:** MySQL 8.0+ (default), PostgreSQL, Oracle 11g+, SQL Server 2017+, MariaDB, DM8 (达梦), KingBase ES. Database-specific configs are in `application-{dbtype}.yml` profiles.
95120
96−- `@jeecg/online` and `@jeecg/aiflow` are external monorepo packages excluded from Vite optimizeDeps (CJS compatibility issues)
97−- Registered via `registerPackages(app)` in main.ts
121+**Initial setup:** Import `db/jeecgboot-mysql-5.7.sql` for the base schema. Flyway handles incremental migrations (scripts organized by date folders like `202512/`).
98122
99−### Performance Optimization Patterns
123+**Flyway note:** In dev mode, `spring.main.lazy-initialization=true` is enabled for startup speed, which can interfere with Flyway auto-config. Flyway auto-config is explicitly excluded and managed separately.
100124
101−**Critical: Use dynamic imports for non-critical modules**
102−- Static `import` at top of file causes the entire dependency chain to load on initial page
103−- Use `await import('module')` or `import('path/to/module').then()` for lazy loading
104−- Key files using dynamic imports:
105− - `src/settings/registerThirdComp.ts` — vxe-table, emoji picker (loaded after mount)
106− - `src/views/super/registerSuper.ts` — dynamic module discovery
107− - Non-critical Ant Design Vue components loaded asynchronously
125+## Configuration
108126
109−**Vite optimizeDeps**
110−- Pre-bundled dependencies in `vite.config.ts` include: dayjs, axios, pinia, nprogress, qs, crypto-js, md5, sortablejs, xe-utils, vue-i18n, lodash-es, xss, mockjs
111−- External packages (`@jeecg/*`) excluded due to CJS issues
127+Main config files are in `jeecg-module-system/jeecg-system-start/src/main/resources/`:
128+- `application.yml` — profile selector (active profile set by Maven: dev/test/prod/docker)
129+- `application-dev.yml` — development config (port 8080, lazy-init enabled)
130+- Dev environment requires: MySQL, Redis. Optional: MongoDB, RabbitMQ
112131
113−### Micro-Frontend (Qiankun)
132+Key config namespace: `jeecg.*` in YAML controls platform features (upload type, firewall settings, AI config, MinIO, shiro excludes, etc.).
114133
115−- Can run as master (hosting sub-apps) or child (embedded in parent)
116−- Config in `src/qiankun/`, sub-apps via `VITE_APP_SUB_*` env vars
117−- Child mode activated when `VITE_GLOB_QIANKUN_MICRO_APP_NAME` is set
134+## Docker Services (docker-compose.yml)
118135
119−### Electron Support
136+MySQL (port 13306), Redis, PostgreSQL+pgvector, MongoDB, and the application container (port 8080).
120137
121−- `src/electron/` — uses hash router mode
122−- Platform detected via `VITE_GLOB_RUN_PLATFORM === 'electron'`
138+## Online 低代码模块 (jeecg-boot-module-online)
123139
124−## Key Configuration
140+Online 模块采用**元数据驱动**架构,通过数据库配置表(`onl_cgform_*`)实现运行时 CRUD,无需生成代码。配置存在数据库中而非文件系统,Claude Code 无法直接读取具体表单配置,需用户提供 JSON 导出或截图。
125141
126−### Environment Variables
127−
128−- `.env` — base config (port 3100, app title, SSO/qiankun flags)
129−- `.env.development` — mock enabled, proxy to `localhost:8080/jeecg-boot`
130−- `.env.production` — mock disabled, gzip compression
131−- `.env.docker` — Docker production build config
132−- `.env.dockercloud` — Docker cloud production build config
133−- `.env.prod_electron` — Electron production build config
134−- `VITE_GLOB_*` vars are injected at runtime via `dist/_app.config.js` (changeable post-build)
135−
136−### Build
137−
138−- Manual chunks: `vue-vendor`, `antd-vue-vendor`, `vxe-table-vendor`, `emoji-mart-vue-fast`, `china-area-data-vendor`
139−- Post-build: `build/script/postBuild.ts` generates runtime config; `copyChat.ts` copies chat assets
140−- Console/debugger stripped in production via esbuild
141−
142−## Code Style
143−
144−- **Prettier**: 150 char width, single quotes, trailing commas (es5), 2-space indent, `endOfLine: 'auto'`, `vueIndentScriptAndStyle: true` (indent inside `<script>`/`<style>`), `htmlWhitespaceSensitivity: 'strict'`
145−- **ESLint**: Vue3 recommended + TypeScript recommended + Prettier. `any` is allowed. Unused vars prefixed with `_` are ignored. Note: `prettier/prettier` rule is `'off'` — Prettier is not enforced via ESLint, run it separately
146−- **Commits**: Conventional commits enforced via commitlint. Types: feat, fix, perf, style, docs, test, refactor, build, ci, chore, revert, wip, workflow, types, release. Max header: 108 chars
147−- **i18n**: Chinese (zh-CN) and English supported. Locale files in `src/locales/lang/`
148−
149−## Important Directories
150−
151−```
152−build/ # Vite plugins, build scripts, theme generation
153−src/api/ # API definitions (sys/, common/, demo/)
154−src/components/jeecg/ # Jeecg-specific components (JVxeTable, OnLine, etc.)
155−src/layouts/default/ # Main app layout (header, sider, tabs, menu)
156−src/settings/ # Project settings (design, components, locale, encryption)
157−src/utils/http/axios/ # HTTP client configuration
158−src/views/system/ # System management pages (user, role, menu, dict, etc.)
159−src/views/super/ # Dynamically-discovered extension modules
160−types/ # Global TypeScript declarations
161−```
142+**完整的配置 Schema、控件类型、默认值语法、增强机制等详见: [online-form-schema.md](online-form-schema.md)**
162143
