YunaiV/yudao-cloud
41.4
Weak · 28 September 2026
449.1k
lines of production code
Java
primary language
5
measurements over time
What this system is
This system is a comprehensive, multi-tenant enterprise application framework built on Spring Cloud and Vue 3, designed to accelerate the development of complex business applications. It provides a robust foundation with integrated modules for workflow automation (BPM), customer relationship management (CRM), enterprise resource planning (ERP), and human resources (HRM), alongside specialized capabilities for AI interactions, instant messaging, and financial management. The architecture emphasizes distributed service isolation, featuring a dedicated gateway for routing and security, along with extensive infrastructure services for logging, file storage, and configuration management.
How it got here
2019–2022 — Framework modularization and microservice infrastructure
71 changes.
The project transitioned from initial scaffolding to a comprehensive, modular Spring Boot framework by introducing numerous Spring Boot starters for common concerns such as security, multi-tenancy, data permission, and distributed tracing. This period established the foundational infrastructure for a microservices architecture, featuring OpenFeign-based RPC communication, a new workflow engine API, and robust testing utilities, while standardizing error handling, API logging, and web request processing across the system.
2023–2025 — Microservice server refactoring and module expansion
102 changes.
This period focused on restructuring numerous business modules (such as Infra, BPM, CRM, ERP, and AI) from monolithic 'biz' structures into dedicated, standalone 'server' applications with clear deployment boundaries. Concurrently, the project expanded its feature set by introducing new RPC API contracts and administrative interfaces for these services, while also launching entirely new modules for IoT and AI capabilities.
2026 — expansion of enterprise management modules
23 changes.
This period focused on the initial development and release of several new enterprise management modules, including MES, WMS, FMS, HRM, IM, PMS, and OA. The work involved building complete backend service layers, data access models, and REST APIs for features such as production scheduling, warehouse operations, financial closing, and employee attendance. Comprehensive unit tests and framework configurations were also added to support these new subsystems.
Features
AI Knowledge Base and Model Management Services
This change introduces the backend service layer for the AI Knowledge Base and Model Management features within the \yudao-module-ai-server\. It adds the core business logic for managing knowledge bases, including creating and updating knowledge bases with embedding models, and handling document ingestion (downloading, parsing via Tika, and token estimation). It implements the logic for splitting documents into semantic segments using custom splitters (Markdown QA and Semantic Text) and managing vector store operations (indexing, updating, and deleting vectors). Additionally, it provides services for managing AI API keys and chat roles, including validation and CRUD operations.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge · high confidence
AI Music generation and synchronization via Suno
Users can now generate music using the Suno AI model through description or lyric-based prompts. The system handles the creation process, stores the resulting audio/video assets, and provides scheduled jobs to sync task statuses and update music details from the Suno API.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/job, yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/service/music · high confidence
AI module API contracts and enums introduced
The AI module API layer now exposes a comprehensive set of enumerations and constants that define the system's capabilities and error handling. This includes platform support for major domestic and international providers (such as TongYi, YiYan, DeepSeek, OpenAI, and Azure), model types covering chat, image, voice, video, embedding, and reranking, and specific enums for document splitting strategies (auto, token, paragraph, semantic, Markdown QA). Additionally, it defines chat roles (writing assistant, mind map assistant), writing types, music generation modes, and status codes for images and music, along with structured error codes for API keys, models, knowledge bases, and workflows.
yudao-module-ai/yudao-module-ai-api · high confidence
AI module data access layer added
The AI module's data access layer now includes persistent data objects and MyBatis mappers for chat conversations and messages, image generation, knowledge base management (documents and segments), mind maps, API keys, chat roles, AI models, tools, music generation, workflows, and text writing.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/dal · high confidence
AI module refactored into server with expanded model support
The AI module has been restructured from a 'biz' module into a dedicated 'server' module, introducing a new application entry point and a comprehensive auto-configuration system. This change significantly expands the range of supported AI providers by adding native integration for Gemini, Doubao, HunYuan, SiliconFlow, XingHuo, BaiChuan, YiYan, ZhiPu, MiniMax, Moonshot, StepFun, and Grok, alongside existing support for OpenAI, Azure, Anthropic, Ollama, and DashScope. The framework now includes a centralized model factory to manage these diverse clients and adds dedicated support for Midjourney image generation and Suno music generation, while also excluding specific vector store auto-configurations to prevent startup conflicts.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/framework · high confidence
Add AI workflow service interface and implementation
Introduces the service layer for managing AI workflows, providing CRUD operations (create, update, delete, get, page) and a test execution capability. The implementation handles workflow validation, persistence via the mapper, and integrates with the TinyFlow engine to execute workflow graphs, including parsing node configurations and linking LLM providers.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/service/workflow · high confidence
Add API access log interceptor for non-production environments
The framework now includes an ApiAccessLogInterceptor that logs request details (URL, query parameters, body) and response completion times for API calls, but only when the application is not running in production mode. It also attempts to print the source file and line number of the controller method being invoked to aid in debugging.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor · high confidence
Add ArrayValuable interface and Serializable KeyValue class
The common core module now includes the ArrayValuable interface, allowing objects to expose their contents as an array, and the KeyValue class, which provides a serializable key-value pair structure suitable for use in messaging systems like RabbitMQ.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/core · high confidence
Add ConfigApi for remote parameter configuration retrieval
A new Feign client interface, ConfigApi, has been added to the infra-api module to enable remote access to system parameter configurations. This interface exposes a single endpoint, getConfigValueByKey, which allows clients to retrieve configuration values by their key via an HTTP GET request. The API is integrated with the framework's standard CommonResult response wrapper and is tagged for RPC service documentation.
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config · high confidence
Add gateway access logging filter
The gateway now includes an AccessLogFilter that records detailed request and response information for debugging and auditing. The filter captures the trace ID, user details, route, HTTP method, URL, query parameters, request/response bodies and headers, client IP, and execution duration. It handles both requests with and without a body, caches the request body to allow subsequent processing, and decorates the response to capture the response body. Logs are written in a structured JSON format to the console, with exception handling to ensure logging failures do not impact the request flow.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/logging · high confidence
Added AutoTransable interface for automatic translation support
A new AutoTransable interface has been added to the yudao-common module to enable automatic translation capabilities for entities. This interface defines methods for retrieving data by IDs (selectByIds) and by single ID (selectById), along with a deprecated findByIds method for backward compatibility. Implementing this interface allows classes to participate in the automatic translation workflow provided by the easy-trans-service framework.
yudao-framework/yudao-common/src/main/java/org · high confidence
Added CacheUtils for Guava-based local caching with async/sync options
A new CacheUtils class has been added to the common framework, providing utility methods to create Guava LoadingCache instances. It offers two modes: an asynchronous reloading cache (buildAsyncReloadingCache) for system-level data and a synchronous reloading cache (buildCache) for user-specific data that may interact with ThreadLocal variables, both capped at 10,000 entries to manage memory usage.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/cache · high confidence
Added MES data access layer models for master data and device management
This change introduces a comprehensive set of new data object (DO) classes in the MES module's data access layer, establishing the database mapping for core manufacturing master data and device management capabilities. Specifically, it adds models for calendar management (holidays, shift plans, teams, and team shifts), device maintenance (machinery types, check plans, check records, maintenance records, and repair orders), and general master data (items, BOMs, SOPs/SIPs, units of measure, clients, and vendors). These files define the schema for tables such as \mes\_cal\_holiday\, \mes\_dv\_check\_plan\, \mes\_md\_item\, and \mes\_md\_client\, enabling the system to store and retrieve this foundational operational data.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/dal · high confidence
Added WebSocket demo message handling in the Infra server module
The infra-server module now includes a new WebSocket listener (DemoWebSocketMessageListener) and associated message models (DemoSendMessage, DemoReceiveMessage) that enable a demonstration of real-time messaging. This implementation allows administrators to send messages either to specific users or broadcast them to all connected users via the WebSocket framework.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/websocket · high confidence
Added XXL-Job integration and async task configuration
The job starter now includes auto-configuration for XXL-Job, allowing users to connect to a scheduler via \xxl.job.admin.addresses\ and configure executor details like app name, port, and log retention. It also enables Spring's async execution with a custom post-processor that applies Alibaba TTL (TransmittableThreadLocal) to thread pools, ensuring context propagation across asynchronous tasks.
yudao-framework/yudao-spring-boot-starter-job · high confidence
Added common framework enums and constants
The yudao-common module now includes a set of new shared enums and constants to standardize common data types across the application. This includes CommonStatusEnum for enabling/disabling entities, DateIntervalEnum for time-based aggregations, TerminalEnum for identifying client types (WeChat Mini Program, H5, App, etc.), and UserTypeEnum for distinguishing between member and admin users. Additionally, DocumentEnum provides centralized links for documentation, RpcConstants defines service names and API prefixes for inter-service communication, and WebFilterOrderEnum establishes a strict ordering for web filters such as CORS, tenant context, and security filters.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums · high confidence
Added cross-service status listeners for CRM and OA workflows
New event listeners have been added to the BPM server to forward approval results to external services. Specifically, \CrmContractStatusListener\ and \CrmReceivableStatusListener\ now send audit status updates to the CRM server, while a comprehensive set of listeners (covering leave, meetings, documents, overtime, reimbursement, resignations, seals, supplies, travel, and vehicles) forwards OA approval results to the OA server. All listeners use a load-balanced RestTemplate to ensure compatibility in distributed environments.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event · high confidence
Added error codes and enums for WeChat Official Account message templates and auto-replies
The mp-api module now includes a comprehensive set of error codes (ErrorCodeConstants) covering WeChat Official Account features such as account management, statistics, tags, fans, materials, publishing, drafts, menus, auto-replies, and specifically message templates. Additionally, new enums define auto-reply matching modes (MpAutoReplyMatchEnum), auto-reply types (MpAutoReplyTypeEnum), and message send sources (MpMessageSendFromEnum), providing the necessary API contracts for handling template message operations and auto-reply configurations.
yudao-module-mp/yudao-module-mp-api · high confidence
Added initial database support for DM8 and HighGo
Users can now deploy the application on DM8 (Dameng) and HighGo databases. This change introduces the necessary SQL schema scripts for both platforms, including the main application database (\ruoyi-vue-pro\) and the Quartz scheduler tables. Additionally, it provides Liquibase patches to ensure the database migration tool correctly recognizes DM8, handling specific data types like booleans and auto-increment columns.
sql · high confidence
Added workflow comment service interface and implementation
The BPM module now includes a new service layer for managing workflow comments. This change introduces the BpmCommentService interface and its BpmCommentServiceImpl implementation, enabling users to retrieve comment lists for specific process instances and create new comments linked to tasks. The implementation integrates with the underlying Flowable engine's TaskService to persist comments and supports various comment types defined in BpmCommentTypeEnum.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/service/comment · high confidence
Admin API controllers and request/response objects for codegen, config, datasource, and demo modules
The infra-server module now exposes REST endpoints for several infrastructure capabilities. The CodegenController provides endpoints to list database tables, manage code-generation table/column definitions (create, update, sync from DB, delete), preview generated code, and download it as a ZIP. The ConfigController adds CRUD for parameter configurations, a key-based value lookup that blocks invisible configs, paginated queries, and Excel export. The DataSourceConfigController enables CRUD for database source configurations. Additionally, the Demo01ContactController offers CRUD, pagination, and Excel export for a sample contact entity. All endpoints are secured with Spring Security pre-authorizations and use Swagger annotations for API documentation.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/controller/admin · high confidence
Auto-configuration for Redis and RabbitMQ message queues added
The message queue starter now automatically configures Redis and RabbitMQ implementations via Spring Boot's auto-configuration mechanism. This enables users to utilize Redis and RabbitMQ as message brokers without manual bean setup, provided the respective dependencies are present on the classpath.
yudao-framework/yudao-spring-boot-starter-mq/src/main/resources · high confidence
BPM module API constants and error codes introduced
The BPM API module now includes core enumeration constants that define the service identity, error handling, and notification logic for the workflow system. ApiConstants establishes the RPC service name (bpm-server), API prefix, and version 1.0.0. ErrorCodeConstants introduces a structured error code registry (range 1-009-xxx-xxx) covering process models, definitions, instances, tasks (including approval, delegation, and withdrawal), dynamic forms, user groups, categories, and listeners. DictTypeConstants defines the comment type dictionary key, and BpmMessageEnum maps process events (approval, rejection, assignment, timeout) to SMS template codes.
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums · high confidence
BPM module data access layer restructured into server module
The data access layer for the BPM module has been reorganized from a 'biz' structure into the 'bpm-server' module. This change introduces new data objects (DOs) and MyBatis mappers for process definitions, categories, dynamic forms, process expressions, listeners, user groups, OA leave requests, and process instance copies. Additionally, a new Redis DAO is provided to generate unique process IDs based on configurable rules (day, hour, minute, or second prefixes).
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/dal · high confidence
BPM module refactored into a dedicated server module with new workflow automation features
The BPM business module has been restructured into a standalone server module (yudao-module-bpm-server) to clarify its scope. This change introduces a new application entry point and establishes a clear API boundary. Functionally, it adds an OA leave application service that integrates with the workflow engine, implements a notification system that sends SMS alerts for process approvals, rejections, task assignments, and timeouts, and introduces a trigger framework supporting form data updates/deletions and synchronous HTTP callbacks within process flows.
(repo-wide) · high confidence
CRM module API definitions and constants introduced
The CRM module API module now exposes the foundational constants and enumerations required for the CRM functionality. This includes API service metadata (name, prefix, version), dictionary type keys for customer attributes and audit statuses, and a comprehensive set of error codes covering contracts, leads, opportunities, contacts, receivables, products, and permissions. Additionally, it defines business logic enums for audit states, business types, list retrieval scenes, customer levels, permission levels, product statuses, and receivable return methods, along with constants for operation logging.
yudao-module-crm/yudao-module-crm-api · high confidence
CRM module restructured into a dedicated server module with new business and clue management APIs
The CRM functionality has been reorganized from a 'biz' module into a standalone 'crm-server' module, introducing a new application entry point (CrmServerApplication) and a dedicated API package for inter-module communication. This change brings the full set of administrative REST controllers for managing CRM Clues (create, update, delete, transfer, and transform) and Business opportunities (create, update, status changes, and transfer) to this location. The update also includes the corresponding request and response Value Objects (VOs) for these entities, enabling users to manage leads and sales pipelines through the new server-side endpoints.
yudao-module-crm/yudao-module-crm-server/src/main/java · high confidence
Code generator adds new frontend templates and VO/DO mode configuration
The code generation module now supports additional frontend templates, including Vue3 VBEN5 with Ant Design Vue Next (both Schema and General modes) and Vue3 Admin with Uniapp + WOT. Additionally, users can configure whether the generated Controller classes use Value Objects (VO) or Data Objects (DO) for request and response parameters.
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen · high confidence
Code generator now supports configurable VO/DO modes and other generation options
The code generation module now allows users to configure the type of Value Object (VO) generated (VO vs DO) via the \yudao.codegen.voType\ property, alongside other generation settings such as frontend type, base package, database schemas, and toggles for batch delete, unit tests, and Excel import interfaces. These options are managed through the new \CodegenProperties\ configuration class.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/framework/codegen · high confidence
Code generator templates updated to support VO/DO mode configuration
The code generation templates in the infra module have been updated to support a configurable VO/DO mode. This change introduces new template files for controller, service, and data access layer components, allowing developers to choose between generating separate Response/Request Value Objects or using Data Objects directly. The updated templates also include improved handling for tree tables, master-child relationships, and Excel import/export functionality, providing more flexibility in how generated code is structured and integrated.
yudao-module-infra/yudao-module-infra-server/src/main/resources/codegen · high confidence
ERP data model: new financial, purchase, sales, and stock entities
The ERP server module adds a comprehensive set of data objects for core business operations. Financial management is supported by entities for settlement accounts, payment receipts, and their line items. Procurement and sales workflows are modeled with orders, inbound/outbound records, and returns, each including detailed line items, tax/discount calculations, and status tracking. Product management includes categories and units, while stock management covers inventory levels, warehouse movements, and stock checks.
yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal · high confidence
ERP module API definitions and error codes introduced
The ERP module API module now exposes the foundational contracts for the ERP system, including RPC service constants (service name 'erp-server', prefix '/erp', version '1.0.0'), dictionary type definitions (audit status, stock record business type), and a comprehensive set of error codes covering suppliers, purchase/sales orders, stock movements, products, and finance. It also defines core enumerations for ERP audit status (PROCESS, APPROVE) and business types (purchase/sales orders, in/out/returns), enabling other modules to interact with the ERP service via standardized API calls and handle errors consistently.
yudao-module-erp/yudao-module-erp-api · high confidence
File API exposed via Feign client for remote file operations
The file module now exposes its file management capabilities through a Feign client interface (FileApi), allowing other services to interact with file storage remotely. This interface supports creating files with optional directory and MIME type specifications, and generating pre-signed URLs for secure file access, enabling distributed systems to handle file uploads and retrieval without direct database coupling.
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file · high confidence
Gateway application entry point and CORS filter added
The gateway module now includes its main application class (GatewayServerApplication) and a CORS filter (CorsFilter) that handles cross-origin requests by setting standard Access-Control headers and allowing all origins, methods, and headers.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway · high confidence
Gray release routing via tag and version headers
The gateway now supports gray (canary) deployments by introducing a custom load balancer and filter. Requests carrying a \version\ header are routed to service instances with a matching \version\ metadata tag; if no instances match or the header is absent, all instances are considered. Additionally, requests with a specific tag header are routed to instances with that tag, while requests without a tag are preferentially routed to instances without tags to avoid hitting local/test environments. This is implemented via \GrayLoadBalancer\ and \GrayReactiveLoadBalancerClientFilter\, which intercept \grayLb\ scheme requests and apply the filtering logic before delegating to the underlying Nacos-based weighted random selection.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/grey · high confidence
HTTP API signature verification with anti-replay protection
The framework now includes an HTTP API signature module that allows developers to protect endpoints against tampering and replay attacks. By adding the @ApiSignature annotation to a controller method, the system automatically validates the request's appId, timestamp, nonce, and cryptographic signature (SHA-256) using an AOP aspect. It enforces a configurable timeout for request freshness and uses Redis to ensure each nonce is used only once per application, effectively preventing duplicate requests. The signature verification logic is configurable via annotation parameters for message keys and time units, and relies on app secrets stored in Redis.
yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/signature · high confidence
Infrastructure module exposes RPC APIs via REST controllers
The infra-server module now implements several Feign-based RPC interfaces (Config, File, Logger, and WebSocket) as Spring REST controllers. This allows other services to invoke infrastructure capabilities—such as retrieving configuration values, creating files, generating presigned URLs, creating access/error logs, and sending WebSocket messages—over HTTP/Feign rather than direct service calls.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/api · high confidence
Initial API contracts for FMS and HRM modules
Added the initial API definition packages for the Financial Management System (FMS) and Human Resource Management (HRM) modules. These changes introduce the \package-info.java\ and \ApiConstants.java\ files for both modules, establishing the RPC service names (\fms-server\, \hrm-server\), API prefixes, and version \1.0.0\ required for inter-module communication.
yudao-module-fms/yudao-module-fms-api, yudao-module-hrm/yudao-module-hrm-api · high confidence
Initial HRM attendance module with clock, group, holiday, leave, and statistics APIs
The HRM server module now includes a complete set of administrative APIs for managing employee attendance. This adds the standalone \HrmServerApplication\ entry point and exposes controllers for attendance clock records (including shift validation and Excel export), attendance groups (with shift and location configuration), holidays, and leave requests. It also provides attendance statistics endpoints for daily details, monthly summaries, and monthly overviews, along with the necessary request/response value objects to support these features.
yudao-module-hrm/yudao-module-hrm-server/src/main/java · high confidence
Initial Infra API constants and error codes
The infra module API now exposes core constants required for service integration and error handling. ApiConstants defines the RPC service name (infra-server), API prefix, and version. DictTypeConstants introduces dictionary keys for user types, job statuses, and configuration types. ErrorCodeConstants establishes a structured error code registry (1-001-xxx-xxx) covering parameter configuration, scheduled jobs, API error logs, file management, code generation, and demo entities, ensuring consistent error reporting across the infrastructure layer.
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/enums · high confidence
Initial PMS module API contracts and server entry point
This change introduces the foundational API layer and server bootstrap for the new Project Management System (PMS) module. It defines the RPC service contract (name 'pms-server', version 1.0.0) and establishes the domain model through comprehensive enumerations for project states, work item types, and knowledge base structures. Additionally, it provides the initial server application class and administrative controllers for knowledge base document management and content permission handling, enabling users to create, view, and manage documents within the PMS context.
yudao-module-pms/yudao-module-pms-server · high confidence
Initial Pay module API definitions and RPC contracts
This change introduces the core API contracts for the new payment service module. It defines Feign client interfaces for managing payment orders, refunds, transfers, and user wallets, along with the corresponding request and response DTOs. The update also includes enumerations for payment channels (WeChat, Alipay, Wallet), order and refund statuses, and error codes, establishing the foundational RPC communication layer for the pay-server.
yudao-module-pay/yudao-module-pay-api · high confidence
Initial RPC API interfaces for product catalog and comments
This change introduces the initial set of Feign client interfaces and DTOs for the product module, enabling remote procedure calls for product categories, SKUs, SPU details, and product comments. Specifically, it adds \ProductCategoryApi\ for validating categories, \ProductSkuApi\ for retrieving SKU information and updating stock levels, \ProductSpuApi\ for fetching and validating SPU data, and \ProductCommentApi\ for creating product reviews. These interfaces define the contract for interacting with the product service, including request/response DTOs such as \ProductSkuRespDTO\, \ProductSpuRespDTO\, and \ProductCommentCreateReqDTO\.
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api · high confidence
Initial commit of framework and infrastructure module package documentation
This change introduces the initial structure for the Spring Cloud project's system and infrastructure modules by adding package-info.java files. These files provide Javadoc documentation for key packages, including common utilities, idempotency protection, API logging, web framework wrappers, and infrastructure APIs, establishing the foundational documentation for these components.
(repo-wide) · high confidence
Initial release of statistics API module
This change introduces the initial structure for the statistics API module, adding the \TimeRangeTypeEnum\ enum to define time range types (day, week, month, year) and associated package-info placeholders.
yudao-module-mall/yudao-module-statistics-api · high confidence
Initial release of the Financial Management System (FMS) module
This change introduces the initial implementation of the FMS module, providing core financial management capabilities including account set configuration, user authorization, and auxiliary item management. It also adds comprehensive period-end closing features, allowing administrators to manage closing schemes and templates, view closing overviews, and generate accounting vouchers for profit/loss and special closing adjustments.
yudao-module-fms/yudao-module-fms-server/src/main/java · high confidence
Initial release of the IoT module admin backend
This change introduces the complete admin backend for the new IoT (Internet of Things) module. It provides RESTful APIs for managing IoT devices (including creation, grouping, gateway binding, and Modbus configuration), device messages, and alert configurations (including record processing). The module also exposes an RPC API implementation for device authentication and registration, enabling other services to interact with IoT device data.
yudao-module-iot/yudao-module-iot-server/src/main/java · high confidence
Initial release of the WMS (Warehouse Management System) module
This change introduces the complete WMS module, providing core warehouse management capabilities including inventory tracking, stock movement history, and home page statistics. It exposes administrative REST APIs for managing master data such as warehouses, items, SKUs, categories, and brands, as well as operational documents like receipts, shipments, movements, and checks. The module includes a dedicated server application entry point and defines the necessary API constants, error codes, and dictionary types to support these features.
yudao-module-wms/yudao-module-wms-server · high confidence
Initializes Member module RPC API interfaces and DTOs
This change introduces the remote procedure call (RPC) contract for the Member module, enabling other services to interact with member data via Feign clients. It defines APIs for retrieving user profiles (including email, mobile, and nickname), managing shipping addresses, querying user points, adjusting membership experience levels, and fetching system configuration settings. Corresponding response DTOs are provided to structure the data returned by these services.
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api · high confidence
Initializes member module API constants and business type enums
This change introduces the foundational API contract and enumeration definitions for the new member service module. It adds \ApiConstants\ to define the RPC service name (\member-server\), path prefix, and version, ensuring consistent service discovery. It also defines \ErrorCodeConstants\ with specific error codes for user management, authentication, addresses, tags, points, sign-ins, levels, and groups. Furthermore, it establishes business type enums for member experience (\MemberExperienceBizTypeEnum\) and points (\MemberPointBizTypeEnum\), detailing operations such as sign-ins, orders, invites, and admin adjustments, which will be used to categorize user activity and point/experience transactions.
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums · high confidence
Initializes product module API constants and enums
This change introduces the foundational API contract for the new product module by adding several new Java files in the \yudao-module-product-api\ package. It defines RPC service constants (name, prefix, version), dictionary type identifiers, and a comprehensive set of error codes covering product categories, brands, attributes, SPU/SKU operations, comments, and favorites. Additionally, it establishes enumerations for product SPU status (recycle, disabled, enabled), product comment audit status (pending, approved, rejected), and comment star ratings, providing the necessary type-safe constants for the product feature.
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums · high confidence
Introduce Redis as a message queue implementation with Pub/Sub and Stream support
The message queue starter now supports Redis as a backend, complementing existing RabbitMQ, RocketMQ, and Kafka options. This change adds Redis-specific auto-configuration classes that wire up a \RedisMQTemplate\ for publishing messages and configure listeners for two consumption modes: broadcast via Redis Pub/Sub and clustered consumption via Redis Streams. It includes abstract listener classes for both modes, an interceptor mechanism for message processing hooks, and scheduled jobs to handle pending message resends and stream cleanup, requiring Redis 5.0 or later.
yudao-framework/yudao-spring-boot-starter-mq/src/main/java · high confidence
Introduce configurable multi-tenant framework with selective tenant isolation
This change introduces the \yudao-spring-boot-starter-biz-tenant\ module, providing a comprehensive multi-tenant architecture. It adds a \TenantProperties\ configuration class allowing users to enable/disable the feature (\yudao.tenant.enable\), and specify URLs, tables, and Spring Caches to ignore tenant isolation. The framework automatically injects \tenant\_id\ into database queries via MyBatis Plus interceptors, appends tenant IDs to Redis cache keys, and propagates tenant context across HTTP, Feign RPC, and message queues (Kafka, RabbitMQ, RocketMQ, Redis). A \@TenantIgnore\ annotation allows fine-grained control to bypass tenant filtering for specific methods or classes.
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java · high confidence
Introduces structured error code and exception handling framework
The framework now provides a standardized way to handle errors via the new \ErrorCode\ class and dedicated exception types (\ServerException\ for system-level issues, \ServiceException\ for business logic issues). Global error codes (0-999) are defined in \GlobalErrorCodeConstants\, mapping to standard HTTP status codes, while business error codes (1,000,000+) are organized by module in \ServiceErrorCodeRange\ to prevent conflicts across different system modules. A utility class \ServiceExceptionUtil\ allows developers to easily create and format these exceptions using placeholders.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/exception · high confidence
Introduction of Report Module API with GoView Error Codes
The report module API now includes a dedicated package structure and error code definitions. Specifically, it introduces the \ErrorCodeConstants\ interface for the report system, which reserves the error code segment 1-003-000-000 and currently defines a single error code (\GO\_VIEW\_PROJECT\_NOT\_EXISTS\) for GoView project-related issues. A placeholder \package-info.java\ is also added to ensure the API directory is valid for version control.
yudao-module-report/yudao-module-report-api · high confidence
Introduction of common API data transfer objects for pagination and error handling
The \yudao-common\ module now includes a set of new POJOs to standardize API responses and request parameters. \CommonResult\ provides a unified wrapper for API responses with built-in methods to check for errors and throw \ServiceException\ when appropriate. \PageParam\ and \PageResult\ define the structure for pagination requests and responses, including validation constraints for page number and size. Additionally, \SortablePageParam\ and \SortingField\ enable clients to specify sorting criteria for paginated lists.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo · high confidence
Introduction of configuration and API error log status enums
The infra API module now exposes two new enumerations to standardize data representation: ConfigTypeEnum defines system and custom configuration types, while ApiErrorLogProcessStatusEnum defines the processing states (initialized, completed, ignored) for API error logs.
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/enums/config, yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/enums/logger · high confidence
IoT Gateway CoAP protocol support added
The IoT gateway now supports the CoAP protocol for device connectivity. This change introduces a new configuration module (IotGatewayConfiguration) and properties (IotGatewayProperties) to manage protocol instances, including a dedicated CoAP configuration (IotCoapConfig). The implementation uses Eclipse Californium to handle CoAP server lifecycle, authentication (/auth), device dynamic registration (/auth/register/device), sub-device registration (/auth/register/sub-device), and upstream telemetry/event reporting (/topic). It also includes error code definitions for device authentication failures and a message bus subscriber for downstream messages (currently logging a warning as downstream is not yet fully implemented for CoAP).
yudao-module-iot/yudao-module-iot-gateway/src/main/java · high confidence
MES module API constants and enums initialized
The \yudao-module-mes-api\ module now provides the foundational API contract for the MES service, including the RPC service name (\mes-server\), API prefix, and version (\1.0.0\). It introduces a comprehensive set of constants and enumerations that define the system's business logic, including error codes for all MES domains (Master Data, Warehouse, Production, Quality, Equipment, etc.), dictionary types for UI configuration, and specific enums for shift scheduling, equipment maintenance, and production workflows. This establishes the shared interface layer for the MES microservice.
yudao-module-iot/yudao-module-iot-api, yudao-module-mes/yudao-module-mes-api · high confidence
Member module refactored into a dedicated server module with new admin APIs
The member business module has been restructured from a 'biz' module into a standalone 'member-server' module, providing a clear deployment boundary for member services. This change introduces the application entry point and implements RESTful API controllers for the admin console, enabling management of user addresses, membership configurations, user groups, and member levels (including experience and level records). It also exposes Feign API implementations for inter-service communication, covering user profiles, address management, configuration retrieval, and point/level operations.
yudao-module-member/yudao-module-member-server · high confidence
MyBatis Plus starter restructured with enhanced query wrappers and auto-configuration
The MyBatis starter has been reorganized into a new package structure, introducing dedicated auto-configuration classes for data sources and MyBatis Plus. This includes a new \YudaoDataSourceAutoConfiguration\ that registers a filter to remove the Druid monitoring page advertisement, and an \IdTypeEnvironmentPostProcessor\ that automatically configures the primary key generation strategy based on the database type. The framework now provides extended query wrapper classes (\LambdaQueryWrapperX\, \QueryWrapperX\, \MPJLambdaWrapperX\) featuring \xxxIfPresent\ methods to simplify conditional query building, alongside a new \BaseMapperX\ interface that integrates MyBatis Plus Join capabilities. Additionally, new type handlers for encrypted strings and list collections have been added to support advanced data mapping.
yudao-framework/yudao-spring-boot-starter-mybatis · high confidence
New @Idempotent annotation with user-level and expression-based key resolution
The protection starter now includes a new idempotent core module that allows developers to prevent duplicate requests using the @Idempotent annotation. This feature supports three key resolution strategies: a default global resolver based on method name and arguments, a new UserIdempotentKeyResolver that scopes idempotency to specific users (combining method, arguments, userId, and userType), and an ExpressionIdempotentKeyResolver that uses Spring EL expressions for custom key generation. The implementation uses Redis to manage the idempotency keys and supports configurable timeouts and custom error messages.
yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/idempotent/core · high confidence
New AI chat conversation, messaging, and mind map generation services
The AI module now exposes backend services for managing chat conversations and messages, as well as generating mind maps. Users can create, update, and delete their own chat conversations, send messages with support for knowledge base retrieval and web search, and view paginated message histories. Additionally, a new mind map feature allows users to generate streaming mind map content based on prompts, utilizing configurable AI models and chat roles.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/service/chat · high confidence
New AI chat, image generation, and knowledge base management APIs
The AI module now exposes comprehensive admin APIs for managing AI interactions and assets. Administrators can create, update, and delete chat conversations and messages, including support for streaming responses, file attachments, and knowledge base context integration. Image generation capabilities are added, supporting platforms like OpenAI (DALL-E) and Stable Diffusion, as well as specific Midjourney actions (imagine, upscaling, variations). Additionally, a knowledge base management interface allows admins to create, update, and query knowledge bases and documents, which can be linked to chat conversations for RAG-style interactions.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/controller · high confidence
New AI image generation service with multi-platform support
The AI module now includes a new service layer for image generation, introducing capabilities to create, manage, and retrieve AI-generated images. This implementation supports multiple AI providers including OpenAI, Silicon Flow, Stability AI, and Tongyi (DashScope), allowing users to generate images via text prompts and manage their creation history. The service handles asynchronous image generation, file storage integration, and includes specific Midjourney integration for image actions and synchronization.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/service/image · high confidence
New AI tool functions for directory listing, user profile queries, and weather lookups
The AI module now includes three new tool functions that allow the AI assistant to interact with the system and environment: \directory\_list\ enables listing files and directories on the server, \user\_profile\_query\ retrieves user information (such as nickname and mobile) by ID or the current logged-in user, and \weather\_query\ provides weather details for a specified city. These tools are registered as Spring components and expose structured request/response schemas for use in AI tool-calling workflows.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/tool · high confidence
New AI utility classes for model configuration and file handling
Added AiUtils and FileTypeUtils to the AI server module. AiUtils provides helpers to resolve Spring placeholders in API configurations, validate API keys, build platform-specific chat options (supporting Tongyi, DeepSeek, OpenAI, Azure, Anthropic, Ollama, etc.), construct chat messages, and extract response content including reasoning data. FileTypeUtils leverages Apache Tika to detect MIME types and identify image files.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/util · high confidence
New API DTO for creating BPM process instances with custom assignee selection
A new request DTO, BpmProcessInstanceCreateReqDTO, has been added to the BPM API module to support creating process instances. This DTO allows clients to specify the process definition key, business key, and variable data, and introduces a new capability for the initiator to pre-select specific users (by ID) for particular tasks via the startUserSelectAssignees map.
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto · high confidence
New API implementation for BPM process instance operations
The BpmProcessInstanceApiImpl class has been added to expose process instance management capabilities via a REST API. This implementation provides endpoints to create new process instances and allows the start user to cancel an existing instance by providing a reason, delegating the actual logic to the underlying BpmProcessInstanceService.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/task · high confidence
New App-side file upload and management endpoints
The infrastructure module now exposes a new \AppFileController\ for mobile/app clients, enabling file uploads via a dedicated endpoint, retrieval of presigned URLs for direct uploads to cloud storage (like OSS), and creation of file records. This includes the necessary request validation objects to support these operations.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/controller/app · high confidence
New BPM Process Instance RPC API
The BPM module now exposes a new Feign client interface for process instance management, allowing other services to create and cancel workflow instances via RPC. This API provides endpoints to create a process instance for a specific user and to cancel an active instance by the start user, including support for providing a cancellation reason.
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task · high confidence
New BPM admin API controllers and request/response objects
The BPM server module now exposes a comprehensive set of new REST endpoints for managing workflow definitions and metadata. Administrators can create, update, delete, and query process categories, dynamic forms, process models (including import/export and deployment), process definitions, process expressions, process listeners, and user groups. Additionally, a new comment management controller allows users to view and create comments on process instances. These changes are supported by new Value Objects (VOs) for request validation and response formatting, as well as simple base VOs for department and user data.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/controller · high confidence
New BPM definition enums for simplified workflow design and advanced task handling
The BPM API module introduces a comprehensive set of new enumeration types in the \definition\ package to support a new "Simple" workflow designer (modeled after DingTalk and Feishu) and enhanced process control. These enums define the node types available in the simplified designer (such as start, end, approval, copy, delay timer, trigger, child process, and various branch types), the condition evaluation modes (expression vs. rule), and the specific trigger actions (HTTP request, HTTP callback, form update/delete). Additionally, the change adds configuration options for complex approval behaviors, including multi-instance approval methods (random, ratio-based, sequential), auto-approval logic, handling for empty assignees or start-user conflicts, rejection routing, and timeout management.
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition · high confidence
New BPM task and process status enums added
The BPM API module introduces a set of new enumeration classes to define the lifecycle and interaction states of workflow tasks and instances. These include BpmTaskStatusEnum (covering states like RUNNING, APPROVING, WAIT, RETURN, and end states), BpmProcessInstanceStatusEnum (NOT\_START, RUNNING, APPROVE, REJECT, CANCEL), BpmCommentTypeEnum (defining actions such as APPROVE, REJECT, DELEGATE, TRANSFER, ADD\_SIGN, SUB\_SIGN), BpmTaskSignTypeEnum (BEFORE/AFTER for adding signers), BpmReasonEnum (detailed reasons for auto-approvals, timeouts, cancellations, and rejections), and BpmAttachmentTypeEnum. These enums provide the structured data types required for the enhanced workflow engine's task management, delegation, and signing features.
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task · high confidence
New BPM task listeners for child process initiation and HTTP callbacks
Added BpmCallActivityListener and BpmUserTaskListener to the BPM server module. The call activity listener manages the authenticated user context for child processes, supporting initiation by the main process starter, form values, or administrators with fallback logic. The user task listener executes configurable HTTP requests upon task assignment, automatically injecting process instance, assignee, and task details into the request body.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener · high confidence
New ERP finance and product management controllers
The ERP module now exposes administrative REST APIs for managing settlement accounts, finance payments, finance receipts, product categories, and products. Users can create, update, delete, query, and paginate these resources, as well as export their data to Excel. The finance payment and receipt endpoints additionally support status updates and include detailed item-level information along with associated supplier, customer, account, and user details in the response.
yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller · high confidence
New ERP finance, product, and purchase service interfaces and implementations
This change introduces the core service layer for the ERP module, adding new interfaces and implementations for managing settlement accounts, financial payments and receipts, product categories and units, and purchase inventory. Users can now create, update, delete, and query settlement accounts with default status management. Financial operations include creating and auditing payment and receipt documents linked to purchase/sale transactions, with automatic price calculations and status validation. Product management features hierarchical category structures with cycle detection, unit definitions with uniqueness checks, and product records with deletion safeguards against active business documents. Purchase operations support creating and auditing inbound inventory records with payment tracking. All services include comprehensive validation, pagination support, and integration with existing supplier, customer, and user systems.
yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service · high confidence
New FileCreateReqDTO for file upload API
A new FileCreateReqDTO has been introduced in the infra API module to support file creation requests. This DTO includes fields for the original file name, target directory, MIME type, and file content, enabling clients to specify directory-based organization and content details when uploading files via the RPC service.
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/dto · high confidence
New HTTP API encryption and decryption support
The framework now includes a new encryption module that allows automatic encryption of API responses and decryption of request bodies. This feature is controlled by the \yudao.api-encrypt\ configuration properties, supporting AES symmetric encryption and RSA asymmetric encryption via the Hutool library. Developers can enable this globally or selectively on controllers/methods using the \@ApiEncrypt\ annotation, with the system handling the cryptographic operations transparently through a servlet filter.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/encrypt · high confidence
New HTTP utility class for URL manipulation
Added HttpUtils to the common framework, providing static methods for encoding and decoding URL paths and query parameters, as well as utilities for replacing, removing, and appending query strings and fragments to URLs.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http · high confidence
New IM module server with admin APIs for groups, friends, and media
The IM server module is now available, providing a set of admin REST APIs for managing instant messaging features. This includes controllers for group management (creation, member invites, muting, pinning messages), friend management (requests, blocking, updates), and media handling (face packs, channel materials). It also introduces conversation read-position tracking for offline sync. The server entry point is ImServerApplication, and all responses are standardized via CommonResult.
yudao-module-im/yudao-module-im-server/src/main/java · high confidence
New IO utility classes for file and stream operations
Added FileUtils and IoUtils helper classes to the common framework. FileUtils provides methods to create temporary files (with optional content) that are automatically deleted on JVM exit, using UUIDs for uniqueness. IoUtils adds a convenience method to read UTF-8 encoded content from an InputStream, wrapping Hutool's IoUtil with explicit encoding handling.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/io · high confidence
New IP and administrative area lookup starter
The new \yudao-spring-boot-starter-biz-ip\ module provides utilities to resolve IP addresses to geographic regions and to query administrative divisions. \IPUtils\ loads the \ip2region.xdb\ database at startup to map IP addresses to area IDs and names, while \AreaUtils\ loads a comprehensive \area.csv\ file into memory to support hierarchical queries (country, province, city, district), path parsing, and formatted region strings.
yudao-framework/yudao-spring-boot-starter-biz-ip · high confidence
New IoT core APIs, Modbus configuration models, and multi-broker message bus
This update introduces a new \IotDeviceCommonApi\ interface for device authentication, retrieval, and dynamic registration (including gateway sub-devices), alongside DTOs for Modbus device and point configurations. It also adds a pluggable \IotMessageBus\ framework that supports local, Redis, RocketMQ, Kafka, and RabbitMQ backends, allowing the system to publish and subscribe to IoT device messages via the chosen middleware.
yudao-module-iot/yudao-module-iot-core/src/main · high confidence
New JsonUtils utility class with Jackson configuration
A new JsonUtils class has been added to the common framework, providing static methods for JSON serialization and deserialization using Jackson. It includes a pre-configured ObjectMapper that disables failure on empty beans and unknown properties, excludes null values by default, and registers custom serializers/deserializers for LocalDateTime. The class also offers convenience methods for parsing JSON into Maps and handling byte arrays, along with a fallback method using Hutool's JSONUtil for specific type-info scenarios.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json · high confidence
New MES Quality Control service layer for defect, indicator, and inspection types
This change introduces the backend service interfaces and implementations for the MES Quality Control module, covering defect types, defect records, quality indicators, inspection results, and the specific inspection workflows for IQC, IPQC, OQC, and RQC. Users can now create, update, and delete defect types and quality indicators with unique code and name validation. The system supports recording inspection defects and automatically recalculating defect statistics across different inspection types. Additionally, it enables the creation of inspection results with detailed indicator data, validating value formats against defined indicator types (e.g., numeric, dictionary, file), and provides the ability to generate inspection lines from templates for IPQC processes.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/service/qc · high confidence
New MES device inspection and maintenance service layer
Added the backend service interfaces and implementations for the MES device inspection and maintenance module. This includes services for managing the equipment ledger (machinery), equipment types, inspection plans (with associated machinery and subjects/projects), and inspection records (including line items). The implementation enforces business rules such as draft-state validation, unique code constraints, and preventing deletion of equipment or types that are referenced by other records.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/service/dv · high confidence
New MES master data services for auto-coding, clients, items, and item types
This change introduces the backend service layer for several new MES master data capabilities. It adds auto-code generation logic, allowing users to define rules composed of date, serial number, fixed, or input characters, with support for cycling and padding. It also provides full CRUD and import functionality for Clients and Items (products), including barcode generation and batch configuration management for items. Additionally, it adds services for managing Item Types (categories) and validating item status transitions, such as requiring a BOM for products before enabling them.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/service/md · high confidence
New MES scheduling and home statistics services
Added service interfaces and implementations for the MES calendar and home statistics modules. The calendar services introduce holiday management, shift plan creation and confirmation (with status validation and default shift generation), team and member management, and automatic team shift record generation based on various rotation methods (single, two-shift, three-shift) and frequencies (day, week, month, quarter). The home statistics service provides dashboard data including work order status distribution, daily production trends with date gap-filling, and equipment status summaries.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/service/cal · high confidence
New MES shift planning and calendar management APIs
The MES module now exposes a complete set of REST endpoints for managing production shift planning and calendars. Administrators can configure holidays, define shift plans with specific shift types and methods, and manage the teams and individual shifts assigned to those plans. The new API surface includes controllers for shift plans, plan shifts, plan-team associations, teams, team members, team shifts, and a consolidated calendar view that aggregates this data while filtering out holidays. All endpoints are secured with specific permissions (e.g., mes:cal-plan:query) and support standard operations like pagination, creation, updates, deletion, and Excel export where applicable.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/controller · high confidence
New MapStruct-based conversion layer for BPM models, definitions, tasks, and messages
The BPM server now includes a new set of MapStruct converters in the \convert\ package to handle object mapping for the workflow module. \BpmModelConvert\ and \BpmProcessDefinitionConvert\ enrich model and process definition responses with associated form names, category names, deployment times, and suspension states. \BpmProcessInstanceConvert\ and \BpmTaskConvert\ populate task and instance lists with detailed user and department information, task statuses, and BPMN model views. Additionally, \BpmMessageConvert\ standardizes the creation of message request DTOs for process events.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/convert · high confidence
New OA module server with announcement, attendance, and contact management APIs
The OA module server now exposes a standalone entry point (OaServerApplication) and defines its RPC API contract (ApiConstants). Administrators can manage announcements (create, update, delete, read-status, forward), handle employee attendance (clock-in/out, weekly/monthly reports, record updates), and organize external contacts (CRUD, sharing, categorization) via dedicated admin controllers and request/response VOs.
yudao-module-oa/yudao-module-oa-server · high confidence
New RPC API contracts for system and infra modules
The \yudao-common\ module now includes a new \biz\ package containing Feign client interfaces and DTOs for inter-service communication. This adds RPC contracts for system features (OAuth2 token management, user permissions, dictionary data, and tenant validation) and infrastructure features (API access logs, API error logs, and operation logs), enabling other services to call these capabilities remotely.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/biz · high confidence
New RPC API for remote order retrieval and cancellation
The trade module now exposes a Feign-based RPC interface (\TradeOrderApi\) allowing other services to fetch order details by ID or list, and to cancel paid orders. This includes the \TradeOrderRespDTO\ data structure used for responses, enabling cross-service order operations without direct database access.
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api · high confidence
New RPC API for sending WebSocket messages
The infrastructure module now exposes a new Feign-based API (WebSocketSenderApi) that allows other services to send WebSocket messages to specific users, user types, or sessions. This includes a new request DTO (WebSocketSendReqDTO) defining the message payload structure, enabling centralized message dispatching across the application.
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/websocket · high confidence
New RPC API interfaces for system modules
The system module now exposes a comprehensive set of Feign-based RPC APIs for other services to consume, covering department and post management, role and permission checks, dictionary data validation, login and operation logging, SMS and email sending, internal messaging, and social user integration (including WeChat Mini Program and Official Account features). Corresponding request and response DTOs are provided for each interface to facilitate cross-service communication.
yudao-module-system/yudao-module-system-api · high confidence
New RPC APIs for promotion activities
The promotion API module now exposes Feign interfaces for Bargain, Combination, Coupon, Discount, Point, Reward, and Seckill activities. These interfaces provide endpoints to validate participation, manage stock, and retrieve activity details, enabling other services to integrate with these promotional features.
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/api · high confidence
New ServletUtils utility class for request handling
Added a new ServletUtils class in the common framework module to provide standardized utilities for HTTP request and response handling. This includes methods for writing JSON responses, handling file attachments, retrieving client IP addresses and user agents, and safely reading request bodies only for JSON content types to prevent errors on non-JSON requests like file uploads.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/servlet · high confidence
New Spring utility classes for expression parsing and environment detection
Added SpringExpressionUtils to enable parsing of Spring EL expressions within AOP join points and from the bean factory, and added SpringUtils to provide a convenience method for detecting the production environment profile.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/spring · high confidence
New StrUtils utility class for string manipulation and logging
A new StrUtils class has been added to the common framework, providing several string utility methods. It includes a maxLength method that truncates strings to a specified length, appending '...' if the original string exceeds that limit. Additional features include startWithAny for checking multiple prefixes, splitToLong and splitToInteger for parsing delimited numeric strings, removeLineContains for filtering lines, toPinyin for converting Chinese characters to pinyin (requiring an external pinyin engine dependency), and joinMethodArgs for safely formatting method arguments while excluding sensitive or non-serializable types like ServletRequest.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/string · high confidence
New Swagger/OpenAPI auto-configuration with Knife4j integration
The web starter now includes a dedicated Swagger module that automatically configures API documentation using Springdoc OpenAPI and Knife4j. This adds a new \yudao.swagger\ configuration prefix for metadata (title, description, author, version, etc.), registers a custom \Knife4jOpenApiCustomizer\ to support tag ordering via \@ApiSupport\, and defines a global \OpenAPI\ bean that enforces Authorization header security and multi-tenant \tenant\_id\ header parameters. It also provides a reusable \GroupedOpenApi\ builder for \/admin-api/\ and \/app-api/\ paths and customizes operation IDs to combine controller prefix and method name (e.g., \User\_list\).
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger · high confidence
New admin API endpoints for WeChat Official Account management
The \yudao-module-mp-server\ module now exposes a comprehensive set of RESTful APIs for managing WeChat Official Account resources. Administrators can now create, update, and query account credentials (app ID, secret, token), upload and manage permanent and temporary media materials, configure hierarchical custom menus, and handle message templates (including syncing templates from WeChat and sending them to users). Additionally, the module introduces endpoints for configuring auto-reply rules based on keywords or message types, viewing message history, and sending customer service messages directly to followers.
yudao-module-mp/yudao-module-mp-server · high confidence
New admin statistics endpoints for members, products, payments, and trade
The statistics server now exposes new admin API endpoints for detailed analytics. Administrators can view member summaries and analyses (including user counts, activity, and regional/sex/terminal breakdowns), product statistics (including browsing, sales, and conversion metrics with Excel export), payment wallet recharge summaries, and comprehensive trade statistics (order trends, summary comparisons, and order status counts like pending delivery or refunds). These endpoints provide the data structures and controllers necessary for the admin dashboard to display these specific business metrics.
yudao-module-mall/yudao-module-statistics-server/src/main/java · high confidence
New annotation-based data desensitization for JSON responses
The web starter now includes a data desensitization module that automatically masks sensitive fields (such as mobile numbers, ID cards, bank cards, Chinese names, emails, and passwords) during JSON serialization. Developers can apply specific annotations like @MobileDesensitize or @IdCardDesensitize to entity fields to define masking rules (e.g., keeping specific prefix/suffix characters). The system also supports a generic @RegexDesensitize annotation for custom patterns and allows disabling desensitization for specific fields using Spring EL expressions via the 'disable' attribute.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/desensitize · high confidence
New collection utility classes added to yudao-common
The yudao-common module now includes four new utility classes for handling collections: ArrayUtils, CollectionUtils, MapUtils, and SetUtils. These classes provide helper methods for common operations such as converting between arrays, lists, sets, and maps, filtering and mapping collections, summing numeric values, and safely retrieving values from maps. This simplifies common data manipulation tasks for developers using the framework.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection · high confidence
New configurable XSS protection with enable/disable control
The web starter now includes a new XSS protection module that automatically cleans HTML content in request parameters, headers, query strings, and JSON bodies using Jsoup. This feature is enabled by default but can be disabled by setting yudao.xss.enable=false, and specific URLs can be excluded from filtering via yudao.xss.exclude-urls.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/xss · high confidence
New data permission starter with RPC context propagation
The data permission module has been restructured into a new Spring Boot starter that automatically configures MyBatis Plus data permission interceptors and provides a @DataPermission annotation for fine-grained control. A key behavioral addition is the support for propagating data permission context across RPC calls: Feign request interceptors now pass a 'data-permission-enable' header, and a corresponding web filter on the receiving end allows downstream services to respect or ignore data permissions based on the caller's intent, ensuring consistent security boundaries in distributed environments.
yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main · high confidence
New date utility classes for Java 8+ time handling
Added DateUtils and LocalDateTimeUtils to the common framework, providing utilities for converting between java.util.Date and java.time.LocalDateTime, calculating time differences, and checking date relationships. These classes replace legacy date handling with modern Java 8 time API support, ensuring consistent timezone handling (defaulting to GMT+8) and offering methods for parsing, formatting, and comparing dates and times.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date · high confidence
New demo service implementations for contacts, categories, and student records
The infra-server module now includes service interfaces and implementations for three demo scenarios: Demo01Contact (basic CRUD for contacts), Demo02Category (hierarchical categories with parent-child validation and cycle detection), and Demo03Student (student records with sub-entities for courses and grades). The Demo03Student service is provided in three variants—ERP, Inner, and Normal—each handling sub-table operations differently (e.g., batch inserts/updates/deletes for courses and grades, with transactional consistency on student deletion). These services expose standard create, update, delete, get, and page/list operations, integrating with their respective mappers and enforcing existence and uniqueness constraints.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/demo · high confidence
New environment tag routing for web requests and Feign clients
The yudao-spring-boot-starter-env module now supports environment-based service routing via a 'tag' concept. For web requests, an EnvWebFilter extracts a 'tag' header and stores it in a thread-local context, which is then automatically propagated to downstream Feign calls via an EnvRequestInterceptor. Additionally, a custom EnvLoadBalancerClient uses this tag to prefer matching service instances in the registry (e.g., Nacos), ensuring that requests with a specific tag are routed to instances with that tag, while requests without a tag prefer instances without tags. The starter also includes an EnvEnvironmentPostProcessor to automatically sync the 'yudao.env.tag' configuration to service registry metadata if not already set.
yudao-framework/yudao-spring-boot-starter-env · high confidence
New event system for BPM process instance status changes
The BPM API module now includes a new event-driven mechanism to notify listeners when a process instance's status changes. This introduces the BpmProcessInstanceStatusEvent class, which carries details such as the instance ID, definition key, final status, and business key, along with an abstract listener base class (BpmProcessInstanceStatusEventListener) that allows specific implementations to react to these status updates for particular process definitions.
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/event · high confidence
New file configuration and management service layer
The infrastructure module introduces a new service layer for managing file storage configurations and file operations. This includes the \FileConfigService\ for creating, updating, and validating file storage settings (such as S3 or local storage), and the \FileService\ for handling file uploads, downloads, and presigned URLs. The implementation adds support for multiple file types, validates file content against allowed MIME types, and generates unique file paths with optional date-based directory structures.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/file · high confidence
New infrastructure services for parameter configuration and database table inspection
The infra-server module now exposes service interfaces and implementations for managing system parameter configurations (create, update, delete, and query by key) and for inspecting database table structures via MyBatis Plus Generator. The database table service allows listing and retrieving table metadata for a specific data source, with built-in filtering to exclude system tables (e.g., Activiti, Quartz, Oracle system tables) and views, supporting fuzzy matching by table name and comment.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/db · high confidence
New number and money utility classes added
Added MoneyUtils and NumberUtils to the common framework. MoneyUtils provides helpers for currency calculations, including percentage-based pricing, rounding, and conversions between cents and yuan. NumberUtils extends existing numeric utilities with safe parsing, null-safe arithmetic, and a distance calculation method based on latitude and longitude.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/number · high confidence
New object and pagination utility classes added to common framework
The yudao-common module now includes three new utility classes: BeanUtils, ObjectUtils, and PageUtils. BeanUtils provides convenience methods for converting objects and lists to target types, including support for post-conversion callbacks and PageResult transformation. ObjectUtils offers helper methods such as cloning objects while ignoring ID fields, finding maximum values, and checking equality against arrays. PageUtils simplifies pagination logic by providing methods to calculate start indices, build in-memory page results, and construct sorting fields with default ordering support.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/object · high confidence
New operational scripts for cloud deployment and LiveKit PoC
This change introduces new operational assets to the \script\ directory. It adds a \docker/docker-compose.yml\ file that defines the full Yudao cloud service stack (gateway, system, infra, report, BPM, pay, mp) with SkyWalking tracing and Nacos configuration. It also adds a \livekit-poc\ directory containing a Docker Compose setup, configuration, and a verification script to deploy and test a LiveKit server proof-of-concept for WebRTC video capabilities.
script · high confidence
New process instance copy and task service interfaces
The BPM module now includes new service interfaces and implementations for managing process instance copies (BpmProcessInstanceCopyService) and enhanced task handling (BpmTaskService, BpmProcessInstanceService). These services enable administrators to copy process instances to other users during approval workflows, providing a way to share or delegate process context. The implementation includes methods for creating copies with user IDs and reasons, retrieving paginated copy lists, and deleting copies. Additionally, the task service provides comprehensive query capabilities for todo/done tasks, task validation, and activity instance retrieval, supporting more granular control over workflow tasks.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/service/task · high confidence
New rate-limiting capability via @RateLimiter annotation
The rate-limiter module in the protection starter now provides a new rate-limiting capability. Developers can apply the @RateLimiter annotation to methods to enforce request throttling backed by Redis (via Redisson). The annotation supports configuring the time window, allowed count, and a custom error message, and it selects a key resolver to scope the limit: global (method + args), user ID, client IP, server node, or a custom Spring EL expression. When a method is rate-limited, the framework throws a TOO\_MANY\_REQUESTS service exception with the configured message.
yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/ratelimiter · high confidence
New standalone server module for simplified deployment and development
A new \yudao-server\ module has been introduced to provide a single, unified entry point for running the entire application as a monolith, eliminating the need for complex microservice orchestration during local development or simple deployments. This module includes a dedicated \Dockerfile\ for containerization (using Eclipse Temurin 21 JRE on port 48080) and a \YudaoServerApplication\ that scans both server and module packages while explicitly excluding RPC auto-configurations. To improve the developer experience, a \DefaultController\ is added to intercept requests for disabled modules (such as BPM, Pay, AI, and IoT) and return clear, actionable error messages with documentation links instead of generic 404s. The module also ships with comprehensive environment-specific configuration files (\application-dev.yaml\, \application-local.yaml\, \application.yaml\) that set up multi-datasource support, Redis, message queues, and AI vector stores, alongside a \logback-spring.xml\ that optimizes logging performance by removing ANSI color codes from file outputs and disabling SkyWalking by default.
yudao-server · high confidence
New utility classes added to gateway/util for startup docs, tenant parsing, security, tracing, and web helpers
The gateway now includes five new utility classes in the \util\ package: \BannerApplicationRunner\ prints documentation links and module tutorials after startup; \EnvUtils\ handles environment tags and hostname resolution; \SecurityFrameworkUtils\ manages login user context, authorization tokens, and removes the \login-user\ header for security; \SkyWalkingTraceUtils\ integrates SkyWalking trace IDs into MDC for logging; and \WebFrameworkUtils\ provides helpers for tenant ID parsing, JSON responses, client IP detection, and route retrieval.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/util · high confidence
New validation annotations for enum, mobile, and telephone fields
The framework now includes custom Hibernate Validator annotations to simplify input validation. Developers can use @InEnum to restrict values to a specific enum, @Mobile to validate phone number formats, and @Telephone to validate landline or mobile numbers. These annotations are implemented via InEnumValidator, InEnumCollectionValidator, MobileValidator, and TelephoneValidator, providing clear error messages when constraints are violated.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation · high confidence
New validation utility for mobile, URL, and XML NCName checks
A new ValidationUtils class has been added to the common framework, providing static helper methods to validate Chinese mobile phone numbers, URLs, and XML NCNames using specific regular expressions. It also includes a convenience method to trigger standard Bean Validation on objects, simplifying data integrity checks for developers.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/validation · high confidence
New warehouse management services for arrival notices, barcodes, batches, and item consumption
This change introduces the backend service layer for several new warehouse management capabilities. It adds the Arrival Notice service, which manages the lifecycle of arrival notices (create, update, delete, submit) and handles status transitions between draft, pending quality check, and pending receipt, including integration with IQC inspection results. It also introduces Barcode management services, allowing users to configure barcode formats by business type and automatically generate or validate unique barcode content. Additionally, it adds Batch management services to handle batch code generation based on material configurations and support forward/backward traceability. Finally, it implements Item Consumption services that automatically generate material consumption records from production feedback based on BOM ratios and execute inventory deductions from line-side stock.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/service/wm · high confidence
New web request filters for API routing, body caching, and demo mode
The web starter now includes four new servlet filters to enhance request handling. ApiRequestFilter restricts processing to configured API prefixes (admin-api, app-api). CacheRequestBodyFilter wraps the request body to allow multiple reads, while explicitly excluding Spring Boot Admin endpoints (/admin/, /actuator/) to prevent connection issues. DemoFilter blocks write operations (POST, PUT, DELETE) for authenticated users to protect test data. CacheRequestBodyWrapper provides the underlying implementation for caching the request stream.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter · high confidence
Promotion module API constants and enums initialized
The promotion-api module now includes the foundational API contract definitions for the promotion subsystem. This adds the RPC service configuration (name, prefix, version) in ApiConstants, a comprehensive set of error codes for all promotion activities (discounts, coupons, points, seckill, combination, bargain), DIY decoration components, and customer service message types. It also introduces enumerations for activity statuses, discount types, product scopes, coupon states, and specific record statuses for bargains and combinations, establishing the shared contract for the promotion service.
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums, yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums · high confidence
Promotion module restructured into a standalone server with new admin APIs
The promotion business logic has been reorganized from a '-biz' module into a new 'yudao-module-promotion-server' module, providing a dedicated Spring Boot application entry point. This change introduces a comprehensive set of administrative REST APIs for managing marketing features, including CRUD operations and pagination for articles, article categories, and promotional banners. Additionally, Feign API implementations are now exposed for inter-service communication, covering bargain, combination, coupon, discount, point, reward, and seckill activities, enabling other services to interact with promotion data and logic.
yudao-module-mall/yudao-module-promotion-server, yudao-module-pay/yudao-module-pay-server · high confidence
Report module restructured into a standalone server with GoView dashboard support
The report module has been reorganized from a 'biz' module into a dedicated 'report-server' application, introducing a new entry point and framework configurations for RPC, security, and JmReport integration. This update adds full backend support for GoView dashboards, including REST APIs for managing projects (create, update, delete, query) and executing SQL-based data queries. Security settings have been updated to permit unauthenticated access to JmReport and GoView endpoints, while the application now includes configuration files for Nacos service discovery and multi-datasource setups.
yudao-module-report/yudao-module-report-server · high confidence
Startup banner now displays documentation and module tutorial links
The web starter now includes an auto-configured banner that prints key documentation URLs (API docs, dev docs, video tutorials) and specific setup links for various modules (such as Workflow, Payment, Report, WeChat, Mall, ERP, WMS, CRM, MES, HRM, FMS, PMS, OA, AI, IoT, and IM) to the console upon successful application startup.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/banner · high confidence
User-level idempotency support via new key resolver
The idempotent protection starter now registers a UserIdempotentKeyResolver bean, enabling idempotency checks that are scoped to individual users rather than just the request itself. This configuration also wires the existing Default and Expression key resolvers alongside the Redis DAO, ensuring the aspect can utilize user-specific keys for duplicate request prevention.
yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/idempotent/config · high confidence
WebSocket module refactored with token authentication and pluggable message senders
The WebSocket starter has been re-implemented to support token-based authentication via a handshake interceptor and provides a new \WebSocketMessageListener\ interface for handling incoming messages by type. It also introduces a pluggable message sender architecture, allowing WebSocket messages to be broadcast across distributed nodes using local, Redis, RocketMQ, RabbitMQ, or Kafka backends, configurable via the \yudao.websocket.sender-type\ property.
yudao-framework/yudao-spring-boot-starter-websocket · high confidence
Removals
Removal of initial product application scaffolding
The product-application module has removed its initial scaffolding code, including the application configuration for Dubbo and Zookeeper, as well as placeholder classes for product data objects (SPU, SKU, Category, Stock, Attributes), business objects, value objects, controllers, DAOs, and services. This cleanup removes the stub implementations that were previously in place for the product subsystem.
product/product-application · high confidence
Architecture
BPM module refactored from -biz to -server with new definition service interfaces
The BPM module's business layer has been restructured, moving service interfaces and implementations from the previous -biz module into the new -server module under the definition package. This change introduces a comprehensive set of service contracts for managing BPM definitions, including categories, dynamic forms, process models (with support for both standard BPMN and simplified DingTalk/Feishu-style designs), process definitions, process expressions, process listeners, and user groups. These services provide the backend logic for creating, updating, deleting, and querying these definition entities, effectively centralizing the core workflow configuration capabilities in the new module structure.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/service/definition · high confidence
Code generator service logic moved to infra-server module
The code generation service interface and implementation have been relocated to the \yudao-module-infra-server\ module. This change consolidates the core codegen logic, including table synchronization, definition management, and the Velocity-based code generation engine, into the server component, aligning with the broader module restructuring from \-biz\ to \-server\ naming conventions.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/codegen · high confidence
Infra module restructured into a dedicated server module
The infrastructure module has been reorganized from a generic '-biz' structure into a distinct 'infra-server' module. This change introduces a dedicated Spring Boot entry point (\InfraServerApplication\) and establishes a clear separation of concerns by organizing code into specific packages for controllers, data conversion (MapStruct), RPC configuration, scheduled jobs (log cleanup), and message queue components. This restructuring clarifies the module's role in providing infrastructure operations and development tools, ensuring its RESTful APIs and internal services are cleanly isolated within the new server boundary.
(repo-wide) · high confidence
Infrastructure module data access layer restructured into server module
The data access layer for the infrastructure module has been reorganized, moving data objects (DOs) and mappers from the previous module structure into the new \yudao-module-infra-server\ module. This change introduces new entity classes for code generation (tables and columns), system configuration, data source configuration, file storage, and API logging, alongside their corresponding MyBatis mappers. Additionally, demo entities for contacts, categories, students, grades, and courses are now included in this layer, providing the foundational data models for the infrastructure service.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/dal · high confidence
Product module refactored into a standalone server module
The product business logic module has been restructured into a new \yudao-module-product-server\ module. This change introduces the standalone application entry point (\ProductServerApplication\) and exposes the product domain capabilities—specifically brand management, category hierarchy, product comments, user favorites, and browse history—through dedicated admin REST controllers and API implementations. This refactoring clarifies the module's boundary and deployment unit, allowing the product features to be run as an independent service.
yudao-module-mall/yudao-module-product-server · high confidence
System module refactored into a dedicated server module with Feign API implementations
The system module has been restructured from a monolithic structure into a dedicated 'server' module (yudao-module-system-server). This change introduces a new application entry point (SystemServerApplication) and implements a comprehensive set of RESTful API controllers designed for inter-service communication via Feign. These new API implementations cover core system capabilities including authentication, user and role management, department and post structures, permission checks, OAuth2 token handling, tenant management, and various notification channels (SMS, email, and social messaging).
yudao-module-system/yudao-module-system-server · high confidence
Trade module restructured into a standalone server module
The trade functionality has been reorganized from a generic business module into a dedicated \yudao-module-trade-server\. This change introduces a new Spring Boot entry point (\TradeServerApplication\) and consolidates the admin-facing REST controllers for after-sales management, brokerage (commission) records, brokerage users, and brokerage withdrawals into this new server module. It also includes the corresponding API implementation for order queries and the necessary request/response Value Objects (VOs) to support these administrative operations.
yudao-module-mall/yudao-module-trade-server · high confidence
Behavioural changes
AI Writing Service Implementation
The AI writing module now includes the backend service layer in the -server module, providing the implementation for generating, retrieving, and managing AI-written content. Users can now trigger streaming content generation via the \generateWriteContent\ method, which constructs prompts based on configurable formats, tones, languages, and lengths, then streams the AI's response back while persisting the final output. The service also supports fetching individual writing records, paginated lists, and deleting entries, ensuring the core business logic for the AI writing feature is fully operational within the server module.
yudao-module-ai/yudao-module-ai-server/src/main/java/cn/iocoder/yudao/module/ai/service/write · high confidence
API access and error logging service implementation in infra-server
The infra-server module now includes the service layer for API access and error logs, providing interfaces and implementations to create, query, paginate, and clean up these logs. The implementation handles tenant context isolation to ensure logs are correctly associated with tenants, enforces request parameter and result message length limits, and allows administrators to mark error logs as processed or automatically purge records older than a specified number of days.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/logger · high confidence
BPM module refactored to -server layout with new Flowable task-assignment framework
The BPM module has been restructured from a -biz to a -server layout, introducing a new configuration and behavior framework in the flowable package. This adds a dedicated BpmFlowableConfiguration that registers a custom ActivityBehaviorFactory and task-executor, replacing the deprecated AsyncListenableTaskExecutor. It introduces custom Flowable behaviors (BpmUserTaskActivityBehavior, BpmParallelMultiInstanceBehavior, BpmSequentialMultiInstanceBehavior) to support dynamic, strategy-based task assignment (e.g., department leaders, members, start-user leader, approve-user-select) and fixes multi-instance handling for CallActivity/SubProcess scenarios. The framework also includes a BpmTaskCandidateInvoker with validation and strategy dispatch, improving how approvers are resolved and assigned during process execution.
yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/framework · high confidence
Centralized web configuration and guaranteed API prefix mapping
The web starter now introduces a centralized \WebProperties\ configuration class to manage API prefixes (\/app-api\, \/admin-api\) and UI settings, replacing implicit or scattered setup. To prevent URI conflicts when admin and app interfaces share paths, the \YudaoWebAutoConfiguration\ ensures that path prefixes are applied to the \RequestMappingHandlerMapping\ at instantiation time via \WebMvcRegistrations\, rather than relying on callback order. This guarantees that prefixes are present even if other beans (such as XSS or encryption filters) trigger mapping creation early, ensuring consistent and conflict-free URL routing.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config · high confidence
Centralized web request context and tenant ID utilities
The new WebFrameworkUtils class provides a unified way to access tenant IDs, user identity, and request metadata. It parses the 'tenant-id' header into a Long, resolving type mismatches that previously caused errors, and derives user types from API path prefixes. This centralization ensures consistent tenant context handling across the framework.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util · high confidence
Consolidates web starter auto-configuration and adds startup banner
The web starter now includes a new banner displayed at application startup and registers eight auto-configuration classes (covering API logging, Jackson, Swagger, web settings, RPC logging, XSS protection, banner, and API encryption) via the Spring Boot 2.7+ AutoConfiguration.imports mechanism, centralizing these features within the web component.
yudao-framework/yudao-spring-boot-starter-web/src/main/resources · high confidence
ERP module server entry point and framework configuration
The ERP module now includes a dedicated server module containing the main application entry point (ErpServerApplication) and framework configuration classes. This setup initializes the Spring Boot application and configures security rules to permit access to Swagger documentation, Actuator endpoints, Druid monitoring, and RPC service prefixes, while also enabling Feign clients for system user APIs.
yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp, yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/framework · high confidence
Enhanced API access logging with configurable masking and operation metadata
The API access logging mechanism in the web starter has been upgraded to support finer-grained control and better security. Users can now use the @ApiAccessLog annotation to explicitly enable or disable logging, control whether request parameters and response bodies are recorded, and specify sensitive fields (sanitizeKeys) to be masked in the logs. Additionally, the system automatically derives operation module and name from Swagger/OpenAPI annotations if not explicitly provided, and records the operation type (e.g., CREATE, UPDATE) based on the HTTP method. Log duration is now measured in milliseconds.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter · high confidence
Excel module merges dictionary support and switches to FastExcel
The Excel starter now includes a local dictionary component with in-memory caching (via Guava) and validation annotations, allowing Excel exports to automatically format dictionary values and imports to validate them. Additionally, the underlying library has been switched from EasyExcel to FastExcel, which includes a fix for Long-type precision loss during export and introduces an adaptive column-width strategy for better formatting.
yudao-framework/yudao-spring-boot-starter-excel/src/main · high confidence
Gateway route configuration package structure
The gateway module now includes a dedicated package structure for route configuration, specifically introducing a 'dynamic' sub-package. This organization supports the capability to refresh gateway route information dynamically when Nacos configuration changes are detected, allowing users to update routing rules via the Nacos configuration center without restarting the service.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/route · medium confidence
Gateway token validation now includes expiration checks and local caching
The gateway's security filter now validates token expiration times and caches user details locally to reduce remote API calls. This prevents empty responses when tokens expire by handling the Mono.empty() case correctly and ensures that expired tokens are not served from cache. The LoginUser object now includes an expiresTime field, allowing the gateway to reject expired tokens before forwarding requests to downstream services.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/security · high confidence
Global exception handling in the gateway
Added a GlobalExceptionHandler to the gateway that intercepts unhandled exceptions and returns structured CommonResult responses instead of raw errors. The handler prioritizes over Spring Cloud Gateway's default error handler, processes ResponseStatusException and other exceptions, and includes trace ID context via SkyWalking utilities for better observability.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/handler · high confidence
Improved JSON serialization for large numbers and timestamps
The framework now includes custom Jackson serializers to handle data types that commonly cause issues in web clients. Long values exceeding JavaScript's safe integer limit (2^53-1) are automatically serialized as strings to prevent precision loss. Additionally, LocalDateTime fields are serialized as numeric timestamps by default, but the system now respects the @JsonFormat annotation if present, allowing for custom date string patterns when explicitly configured.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/databind · high confidence
Introduces custom distributed lock failure handling via Lock4j
The framework now includes a dedicated configuration for the Lock4j distributed locking library. This change introduces a custom failure strategy that throws a standardized ServiceException when a distributed lock cannot be acquired, ensuring consistent error handling for concurrent operations. It also defines specific Redis key constants for lock management and registers the auto-configuration to initialize these components automatically.
yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/lock4j · high confidence
Introduction of OpenFeign-based RPC starter with automatic user context propagation
The RPC starter module has been restructured to utilize OpenFeign for RESTful API calls, replacing previous implementations. This change enables seamless user context handling by automatically propagating the LoginUser information via HTTP headers during Feign client invocations, ensuring that downstream services can identify the authenticated user without manual header management.
yudao-framework/yudao-spring-boot-starter-rpc · high confidence
MES module adds RPC and security framework configurations
The MES module now includes framework-level configuration classes for remote procedure calls and security. A new RPC configuration registers Feign clients for system APIs (AdminUser, Post, Role, DictData), ensuring these services are available at startup. Additionally, a security configuration permits unauthenticated access to Swagger documentation, Actuator endpoints, Druid monitoring, and the MES API prefix, aligning the module's access control with standard framework expectations.
yudao-module-mes/yudao-module-mes-server/src/main/java/cn/iocoder/yudao/module/mes/framework · high confidence
Migrate distributed tracing to OpenTelemetry and add metrics support
The monitor starter has replaced the previous OpenTracing/SkyWalking-based tracing implementation with OpenTelemetry. This change introduces automatic configuration for metrics (via Micrometer) and tracing, including a new \TraceFilter\ that injects the \trace-id\ into HTTP response headers and a \BizTrace\ annotation that allows developers to mark methods for business-level span tracking with custom IDs and types. Users can now leverage standard OpenTelemetry instrumentation for distributed tracing while retaining the ability to disable metrics via the \yudao.metrics.enable\ property.
yudao-framework/yudao-spring-boot-starter-monitor · high confidence
Migrate tenant starter to Spring Boot 3 auto-configuration
The tenant starter now uses Spring Boot 3's modern auto-configuration mechanism. The legacy spring.factories file is replaced by org.springframework.boot.autoconfigure.AutoConfiguration.imports, registering YudaoTenantRpcAutoConfiguration and YudaoTenantAutoConfiguration. This change aligns the starter with Spring Boot 3's preferred auto-configuration approach, ensuring correct loading of tenant-related beans in Spring Boot 3 applications.
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/resources · high confidence
New Redis cache auto-configuration with custom TTL and JSON serialization
The Redis starter now includes a new auto-configuration that replaces the default Spring Boot cache setup with a custom \TimeoutRedisCacheManager\. This manager allows developers to specify per-cache expiration times using a \\#ttl\ suffix in the cache name (e.g., \myCache\#5m\ for 5 minutes), supporting days, hours, minutes, and seconds. The configuration also enforces JSON serialization for cache values (including \LocalDateTime\ support) and uses single-colon key prefixes to avoid formatting issues in Redis Desktop Manager. Additionally, transaction awareness is enabled so that cache evictions/updates are delayed until after the transaction commits, preventing stale reads during concurrent access.
yudao-framework/yudao-spring-boot-starter-redis · high confidence
New auto-configuration for API access logging
The web starter now includes dedicated auto-configuration classes to manage API access and error logging. YudaoApiLogAutoConfiguration registers the ApiAccessLogFilter and ApiAccessLogInterceptor, introducing a new configuration property yudao.access-log.enable (defaulting to true) to allow users to disable access logging entirely. Additionally, YudaoApiLogRpcAutoConfiguration enables Feign clients for the ApiAccessLogCommonApi and ApiErrorLogCommonApi, ensuring that logging infrastructure is available for remote service calls.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/config · high confidence
New global exception and response body handlers for the web starter
The web starter now includes GlobalExceptionHandler and GlobalResponseBodyHandler. GlobalExceptionHandler provides centralized error handling for Spring MVC exceptions (such as missing parameters, type mismatches, and validation errors) and custom ServiceException, while also ignoring specific non-critical messages like invalid refresh tokens. GlobalResponseBodyHandler intercepts CommonResult responses to record them for API access logging.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler · high confidence
Project adopts MIT License and updates documentation
The repository now includes an MIT License file, changing the project's licensing terms to allow free use by individuals and enterprises. The README has been updated to reflect the current technology stack (Spring Cloud 2021.0.9, Spring Boot 2.7.18, Vue 3.2) and provides links to various demo environments and documentation. Additionally, the .gitignore file has been expanded to better exclude build artifacts and IDE-specific files.
(repo-wide) · high confidence
Security starter restructured with RPC-aware auto-configurations and enhanced operation logging
The security starter has been refactored to support both standalone and distributed (RPC/Feign) environments by introducing dedicated auto-configuration classes: YudaoSecurityRpcAutoConfiguration and YudaoOperateLogRpcAutoConfiguration. This enables the framework to automatically register Feign clients for OAuth2 and permission APIs, and inject a LoginUserRequestInterceptor to propagate user context across service boundaries. Additionally, operation logging is now backed by the mzt-log framework via a new LogRecordServiceImpl that asynchronously records logs through the OperateLogCommonApi, ensuring consistent audit trails in microservices. The security configuration also now supports custom URL authorization rules via AuthorizeRequestsCustomizer, allowing modules to define their own security policies while maintaining global defaults like @PermitAll support and token-based authentication.
yudao-framework/yudao-spring-boot-starter-security · high confidence
Spring Boot 3 auto-configuration registration for protection features
The protection starter now registers its configuration classes via the Spring Boot 3 standard \AutoConfiguration.imports\ file. This explicitly wires up the Idempotent, Lock4j, RateLimiter, and API Signature components, ensuring they are automatically available to applications without manual configuration.
yudao-framework/yudao-spring-boot-starter-protection/src/main/resources · high confidence
Spring Boot Admin monitoring is now enabled by default with authentication
The infrastructure module now includes a dedicated Spring Boot Admin Server configuration that is automatically activated when the library is present. This change introduces a new security filter chain that requires login for accessing the Admin UI (while allowing anonymous access to static assets and the login page itself) and uses HTTP Basic authentication for client registration. The configuration also sets specific Content Security Policy headers to support the Vue-based frontend and allows the UI to be displayed in iframes from the same origin.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor · high confidence
Switch distributed tracing implementation to OpenTelemetry
The framework's tracing utility (TracerUtils) has been updated to use OpenTelemetry instead of the previous OpenTracing library. This change allows the system to retrieve the current trace ID directly from OpenTelemetry's Span context, ensuring compatibility with modern distributed tracing standards.
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/monitor · high confidence
Unified LocalDateTime serialization to epoch milliseconds across web clients
The web starter now automatically configures Jackson to serialize and deserialize \LocalDateTime\ fields as epoch millisecond timestamps. This change ensures consistent time handling across Feign clients and WebFlux, resolving previous issues where default decoders failed to parse millisecond timestamps. Additionally, \Long\ values are serialized as numbers to prevent frontend precision loss, and the global \JsonUtils\ utility is initialized using the main application \ObjectMapper\.
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/jackson · high confidence
Unified file storage client architecture with S3 presigned URLs and FTP/SFTP reliability improvements
The infrastructure module introduces a new, unified file storage framework that abstracts local, database, FTP, SFTP, and S3-compatible storage (MinIO, Aliyun, Tencent, Qiniu, Huawei, Volcano) behind a common client interface. This change enables S3 storage to generate presigned URLs for secure, temporary access to private objects, while also standardizing FTP and SFTP operations by adding configurable connection and read/write timeouts and ensuring SFTP parent directory creation behaves consistently with FTP across different operating systems.
yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/framework/file · high confidence
Fixes
Unified LocalDateTime serialization to epoch milliseconds in gateway
The gateway now consistently serializes \LocalDateTime\ fields to epoch milliseconds and deserializes them back, replacing previous formats that caused inconsistencies between Feign clients and WebFlux components. This change ensures that date-time values are handled uniformly across the gateway's JSON encoding/decoding pipeline, preventing timing-related errors when communicating with downstream services.
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/jackson · high confidence
Test coverage
Added ProjectReactor test utility for project renaming; Added SQL test fixtures for infra module tables; Added base unit test classes for database, Redis, and Mockito testing; Added code generation test resources for the student demo module; Added integration tests for AI chat model providers; Added manual integration tests for IoT gateway CoAP, HTTP, and Modbus protocols; Added test configurations for embedded Redis and SQL initialization; Added test resources for MES module unit testing; Added unit and integration tests for IoT message bus and device message utilities; Added unit and integration tests for the file storage framework; Added unit tests and test configuration for CRM receivable plans; Added unit tests for API signature verification; Added unit tests for BPM task candidate assignment strategies; Added unit tests for DataPermissionRuleHandler; Added unit tests for DataPermissionUtils; Added unit tests for Excel and Dict utilities; Added unit tests for FMS ledger, closing, and account set services; Added unit tests for HRM attendance and configuration services; Added unit tests for IM module mappers and services; Added unit tests for IoT data rule actions and device message handling; Added unit tests for MES production, inventory, and calendar modules; Added unit tests for common utility classes; Added unit tests for data desensitization and API encryption utilities; Added unit tests for data permission AOP components; Added unit tests for data permission rule logic; Added unit tests for the code generation engine and service layer; New test utility classes for assertions and random data generation.
Dependencies
JDK 8 LTS maintenance branch with updated dependency versions
The project now maintains a dedicated JDK 8 compatible branch (2026.09-jdk8-SNAPSHOT) with a curated set of dependency versions that ensure stability on Java 8. Key updates include Spring Boot 2.7.18, Spring Cloud 2021.0.9, and Spring Cloud Alibaba 2021.0.6.2. The Redisson client has been upgraded to version 4.7.0, and MyBatis Plus to 3.5.17. To address JDK 8 compatibility and security concerns, tika-core is pinned to 2.9.3, logback to 1.2.13, and Velocity to 2.4. Other notable updates include Druid 1.2.28, Hutool 5.8.47, and Knife4j 4.5.0.
(dependencies) · high confidence
Housekeeping
Added package-info.java for IM API module
A package-info.java file has been added to the cn.iocoder.yudao.module.im.api package, establishing the package declaration and author metadata for the IM API module.
yudao-module-im/yudao-module-im-api · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 41.
Lenses
- Code Health 89
- Architecture 88
- Maturity 67
- Readiness 34
- Security 23
- Performance 100
Changes since last survey
- 300 commits — 258 feature/other, 42 fixes
By area
- (repo) — 93 commits
- (root) — 26 commits
- yudao-dependencies/pom.xml — 18 commits
- yudao-module-system/yudao-module-system-server — 16 commits
- yudao-module-iot/yudao-module-iot-server — 14 commits
- yudao-module-mes/yudao-module-mes-server — 13 commits
- yudao-module-bpm/yudao-module-bpm-server — 9 commits
- yudao-module-hrm/yudao-module-hrm-server — 9 commits
- yudao-module-im/yudao-module-im-server — 9 commits
- yudao-module-infra/yudao-module-infra-server — 9 commits
- yudao-module-iot/yudao-module-iot-gateway — 9 commits
- yudao-module-ai/yudao-module-ai-server — 6 commits
- yudao-module-mall/yudao-module-trade-server — 6 commits
- yudao-module-wms/yudao-module-wms-server — 6 commits
- .image/common — 5 commits
- yudao-framework/yudao-common — 5 commits
- yudao-module-crm/yudao-module-crm-server — 5 commits
- yudao-module-oa/yudao-module-oa-server — 5 commits
- sql/mysql — 4 commits
- yudao-gateway/src — 4 commits
Notable commits
- fix: !243 fix(trade): 修复订单项价格计算逻辑 Merge pull request !243 from irongroup/master-jdk17-sync
- fix: !266 ✨ fix(pay): 修复支付宝支付回调中渠道用户ID获取问题
- fix: fix(IotDeviceMessageUtils): skip JDK built-in types in reflection to avoid internal field access
- fix: fix(ai): 同步主服务 AI 配置
- fix: fix(config): add import-enable option for Excel import interface
- fix: fix(hrm): 修复工资表生成空分类表头
- fix: fix(hrm): 修复工资表生成空分类表头
- fix: fix(hrm): 统一定薪调薪工资项范围
- fix: fix(hrm): 统一定薪调薪工资项范围
- fix: fix(iot): 修复 JDK8 网关 Kotlin 和 Okio 依赖冲突
- fix: fix(mes): 修复采购入库上架明细批次丢失
- fix: fix(mes): 修复采购入库上架明细批次丢失
- fix: fix(mes):启动缺少 DictDataApi RPC 服务
- fix: fix(oa): 补充邮箱服务器主机名与 IP 地址校验
- fix: fix(oa): 补充邮箱服务器主机名与 IP 地址校验
- fix: fix(redis): 对齐 Redisson 自动配置兼容逻辑
- fix: fix(redis): 适配 Redisson 4.6 的 Spring Data Redis 依赖
- fix: fix(rpc): 统一 RPC API 返回 CommonResult
- fix: fix(system): 补充微信 HttpClient5 运行时依赖
- fix: fix(tenant): 按需注册多租户 Job 切面
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
YunaiV/yudao-cloud was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 77dd74e65cbb913d7cd84e9d9e6cd3a9f0daff56 — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.