From 5e76d26753e54a4c9380991bf8eaf58514c0e674 Mon Sep 17 00:00:00 2001
From: sjz <1240968267@qq.com>
Date: 星期三, 12 十一月 2025 08:39:28 +0800
Subject: [PATCH] 优化

---
 CLAUDE.md |   75 ++++++++++++++++++++++++++++---------
 1 files changed, 57 insertions(+), 18 deletions(-)

diff --git a/CLAUDE.md b/CLAUDE.md
index 8090d24..a3167f6 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -24,10 +24,12 @@
 
 ### Database Layer
 - Uses **SqlSugar ORM** for data access with Oracle database
-- Connection string configured in `appsettings.json`
-- Two database contexts available:
-  - `DbContext<T>` (MES.Service/DB/DbContext.cs:10) - Generic repository pattern
-  - `SqlSugarHelper` (MES.Service/DB/SqlSugarHelper.cs:6) - Oracle-specific helper with transaction support
+- Connection string configured in `appsettings.json` and loaded via `AppsettingsUtility.Settings.DataBaseConn`
+- Three database access patterns available:
+  - `Repository<T>` (MES.Service/DB/Repository.cs:6) - Base class for all Manager classes, extends SqlSugar's SimpleClient with Oracle configuration and transaction support via `UseTransaction()` method
+  - `DbContext<T>` (MES.Service/DB/DbContext.cs:10) - Generic repository pattern for SqlServer (legacy, not actively used)
+  - `SqlSugarHelper` (MES.Service/DB/SqlSugarHelper.cs:6) - Static Oracle helper with `GetInstance()` and `UseTransactionWithOracle()` methods
+- **IMPORTANT**: Most services inherit from `Repository<T>`, which provides pre-configured Oracle connection and built-in transaction management
 
 ### Service Layer Structure
 - **BasicData**: Core business entities (customers, items, suppliers, etc.)
@@ -38,11 +40,13 @@
   - `webApi/`: External API DTOs for ERP integration
 
 ### API Layer
-- ASP.NET Core Web API with Swagger documentation
-- Controllers organized by domain (BasicData, QC, Warehouse)
-- Newtonsoft.Json for serialization with camelCase naming
+- ASP.NET Core Web API with Swagger documentation (available in Development mode)
+- Controllers organized by domain (BasicData, QC, Warehouse, FBSDB)
+- Newtonsoft.Json for serialization with camelCase naming (configured in Startup.cs:46)
 - CORS enabled for cross-origin requests
-- Custom ActionFilter for request/response handling
+- Custom ActionFilter (MESApplication/Filter/ActionFilter.cs) for global request/response logging
+- All endpoints use `[HttpPost]` by convention, even for read operations
+- Route pattern: `api/[controller]/[action]`
 
 ## Common Development Commands
 
@@ -89,19 +93,54 @@
 ## Important Patterns
 
 ### Repository Pattern
-Most business logic follows the Manager pattern:
-- Managers in `MES.Service/service/` handle business operations
-- Controllers in `MESApplication/Controllers/` handle HTTP requests
-- Models in `MES.Service/Modes/` represent database entities
+All business logic follows the Manager pattern with inheritance-based repository access:
+- **Managers** in `MES.Service/service/` inherit from `Repository<T>` and handle business operations
+  - Example: `MesCustomerManager : Repository<MesCustomer>` (47 Manager classes total)
+  - Managers use `UseTransaction(db => {...})` for transactional operations
+  - Directly access SqlSugar methods via inherited SimpleClient functionality
+- **Controllers** in `MESApplication/Controllers/` handle HTTP requests and instantiate Manager classes
+  - Controllers manually create Manager instances (e.g., `new MesCustomerManager()`)
+  - Use `ResponseResult` utility class for standardized API responses
+  - Controllers wrap Manager calls in try-catch blocks and log to MessageCenter
+- **Models** in `MES.Service/Modes/` represent database entities with SqlSugar attributes
 
-### Service Registration
-Services are manually instantiated rather than using dependency injection containers. When adding new services, follow the existing pattern in the respective Manager classes.
+### Service Registration and Response Format
+Services are manually instantiated rather than using dependency injection containers:
+- Controllers directly instantiate Managers: `private readonly MesCustomerManager m = new();`
+- Startup.cs configures `AppSettings` from appsettings.json into static `AppsettingsUtility.Settings`
+- No DI container for business logic - all service creation is explicit
+
+All API endpoints return `ResponseResult` (MES.Service/util/ResponseResult.cs:7) with structure:
+```csharp
+{
+  status: 0,        // 0 = success, 1 = failure
+  message: "OK",    // error message or "OK"
+  data: object,     // response payload wrapped in ExpandoObject
+  TotalCount: 0     // optional pagination count
+}
+```
 
 ### Error Handling
-- ActionFilter handles global request/response processing
-- SQL logging enabled via SqlSugar AOP for debugging
-- Console output for SQL query debugging
+- `ActionFilter` (MESApplication/Filter/ActionFilter.cs:13) handles global request/response processing
+  - Logs all requests with headers and body parameters
+  - Logs all responses with execution time
+  - Catches exceptions and logs via `ErrorLog.Write()`
+- SQL logging enabled via SqlSugar AOP for debugging (prints to Console)
+- All Controller methods catch exceptions and return `ResponseResult.ResponseError(ex)`
+- ERP integration operations logged to `MessageCenter` table with status tracking
+
+## API Documentation
+
+API documentation is available in the `MESApplication/Docs/` folder:
+- `Spi_API.md` - SPI (Solder Paste Inspection) API documentation
+- `Aoi_API.md` - AOI (Automated Optical Inspection) API documentation
 
 ## Testing
 
-No test projects are currently configured in this solution. When adding tests, create separate test projects following .NET testing conventions.
\ No newline at end of file
+No test projects are currently configured in this solution. When adding tests, create separate test projects following .NET testing conventions.
+
+## Key Utilities
+
+- `AppsettingsUtility` (MES.Service/util/AppsettingsUtility.cs:6) - Loads configuration into static `Settings` property
+- `ResponseResult` (MES.Service/util/ResponseResult.cs:7) - Standardized API response wrapper
+- `ErrorLog` - Custom error logging utility used by ActionFilter
\ No newline at end of file

--
Gitblit v1.9.3