RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Diff/jeecgboot-jeecgboot-jeecgboot-vue3-claude ↔ jeecgboot-jeecgboot-jeecg-boot-claude

Comparison

A · CLAUDE.md · jeecgboot/JeecgBootB · CLAUDE.md · jeecgboot/JeecgBoot
What each file covers, counted
DimensionSharedOnly in AOnly in BOverlap
Sections223155%
Commands01260%
Section tags68140%

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

+100 added−119 removed43 unchanged26.5% identical
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  
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack