Просмотр исходного кода

docs: 更新企业小程序测试账号并完善 Admin MCP 工具

- 企业小程序测试账号从 13800013800 更新为 18612750023
- Admin MCP 工具参数更新:
  - 残疾人证件号字段: disabilityCertNo -> disabilityId
  - 新增必填字段: idAddress, province, gender
  - 完善参数说明和示例

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 3 недель назад
Родитель
Сommit
e3dc4c154f

+ 1 - 1
CLAUDE.md

@@ -14,7 +14,7 @@
 - **小程序测试账号**:
   - 企业小程序: http://localhost:8080/mini
     - 代码目录: `/mini`
-    - 账号: `13800013800`
+    - 账号: `18612750023`
     - 密码: `123123`
   - 人才小程序: http://localhost:8080/talent-mini
     - 代码目录: `/mini-talent`

+ 10 - 8
packages/admin-mcp-server/src/index.ts

@@ -1243,12 +1243,14 @@ Error Handling:
 Args:
   - name (string): Name (required)
   - idCard (string): ID Card number (required)
-  - disabilityCertNo (string): Disability certificate number (required)
-  - disabilityType (string): Disability type (optional)
-  - disabilityLevel (string): Disability level (optional)
-  - phone (string): Phone number (optional)
-  - gender (string): Gender (optional)
-  - city (string): City (optional)
+  - disabilityId (string): Disability certificate number (required)
+  - disabilityType (string): Disability type (required)
+  - disabilityLevel (string): Disability level (required)
+  - phone (string): Phone number (required)
+  - gender (string): Gender: 男/女 (required)
+  - idAddress (string): ID card address (required)
+  - province (string): Province (required)
+  - city (string): City (required)
   - district (string): District (optional)
   - companyId (number): Company ID (optional)
   - platformId (number): Platform ID (optional)
@@ -1258,7 +1260,7 @@ Returns:
   Created disabled person information with ID.
 
 Examples:
-  - Use when: "Create a new disabled person" -> params with name="John", idCard="...", disabilityCertNo="..."
+  - Use when: "Create a new disabled person" -> params with name="张三", idCard="...", disabilityId="...", gender="男", idAddress="...", province="北京市", city="北京市"
 
 Error Handling:
   - Returns "Error: Data already exists" if ID card is duplicated`,
@@ -1275,7 +1277,7 @@ Args:
   - id (number): Disabled person ID to update (required)
   - name (string): Name (optional)
   - idCard (string): ID Card number (optional)
-  - disabilityCertNo (string): Disability certificate number (optional)
+  - disabilityId (string): Disability certificate number (optional)
   - disabilityType (string): Disability type (optional)
   - disabilityLevel (string): Disability level (optional)
   - phone (string): Phone number (optional)

+ 24 - 19
packages/admin-mcp-server/src/schemas/index.ts

@@ -935,42 +935,47 @@ export const DisabledPersonCreateInputSchema = z
       .string()
       .regex(/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/, 'Invalid ID Card number')
       .describe('ID Card number'),
-    disabilityCertNo: z
+    disabilityId: z
       .string()
       .min(1, 'Disability certificate number is required')
+      .max(50, 'Disability certificate number cannot exceed 50 characters')
       .describe('Disability certificate number (required)'),
     disabilityType: z
       .string()
-      .optional()
-      .describe('Disability type'),
+      .min(1, 'Disability type is required')
+      .max(50, 'Disability type cannot exceed 50 characters')
+      .describe('Disability type (required)'),
     disabilityLevel: z
       .string()
-      .optional()
-      .describe('Disability level'),
+      .min(1, 'Disability level is required')
+      .max(20, 'Disability level cannot exceed 20 characters')
+      .describe('Disability level (required)'),
     phone: z
       .string()
       .regex(/^1[3-9]\d{9}$/, 'Invalid phone number format')
-      .optional()
-      .describe('Phone number'),
+      .describe('Phone number (required)'),
     gender: z
       .string()
-      .optional()
-      .describe('Gender'),
-    birthday: z
-      .coerce
-      .date()
-      .optional()
-      .describe('Birthday'),
-    address: z
+      .length(1, 'Gender must be 1 character (男/女)')
+      .describe('Gender: 男/女 (required)'),
+    idAddress: z
       .string()
-      .optional()
-      .describe('Address'),
+      .min(1, 'ID card address is required')
+      .max(200, 'ID card address cannot exceed 200 characters')
+      .describe('ID card address (required)'),
+    province: z
+      .string()
+      .min(1, 'Province is required')
+      .max(50, 'Province cannot exceed 50 characters')
+      .describe('Province (required)'),
     city: z
       .string()
-      .optional()
-      .describe('City'),
+      .min(1, 'City is required')
+      .max(50, 'City cannot exceed 50 characters')
+      .describe('City (required)'),
     district: z
       .string()
+      .max(50, 'District cannot exceed 50 characters')
       .optional()
       .describe('District'),
     companyId: z

+ 39 - 14
packages/admin-mcp-server/src/tools/company-tools.ts

@@ -20,7 +20,7 @@ import type {
   CompanyDeleteInput
 } from '../schemas/index.js';
 import { CHARACTER_LIMIT, ResponseFormat } from '../constants.js';
-import type { Company, PaginatedResponse } from '../types.js';
+import type { Company, PaginatedResponse, Platform } from '../types.js';
 
 /**
  * Format company data for markdown output
@@ -185,23 +185,48 @@ export const companyCreateTool = async (args: CompanyCreateInput) => {
   const apiClient = getApiClient();
 
   try {
-    const response = await apiClient.post<Company>('/api/v1/company/createCompany', args);
-
-    const company = response;
+    // API returns { success: boolean }, not the full company object
+    const response = await apiClient.post<{ success: boolean }>('/api/v1/company/createCompany', args);
+
+    if (!response.success) {
+      return {
+        content: [{
+          type: 'text',
+          text: 'Error: Failed to create company - API returned success: false'
+        }]
+      };
+    }
 
+    // Build response from input args since API doesn't return the created object
+    const now = new Date();
     const structuredOutput = {
-      id: company.id,
-      companyName: company.companyName,
-      contactPerson: company.contactPerson,
-      contactPhone: company.contactPhone,
-      contactEmail: company.contactEmail,
-      address: company.address,
-      platformId: company.platformId,
-      status: company.status,
-      createTime: company.createTime
+      id: 0, // Unknown - API doesn't return the ID
+      companyName: args.companyName,
+      contactPerson: args.contactPerson || null,
+      contactPhone: args.contactPhone || null,
+      contactEmail: args.contactEmail || null,
+      address: args.address || null,
+      platformId: args.platformId || null,
+      status: args.status ?? 1,
+      createTime: now
     };
 
-    const markdown = `✅ **Company Created Successfully**\n\n${formatCompanyMarkdown(company)}`;
+    // Build markdown from input args - using type assertion to handle missing fields
+    const companyForMarkdown = {
+      id: 0,
+      companyName: args.companyName,
+      contactPerson: args.contactPerson || null,
+      contactPhone: args.contactPhone || null,
+      contactEmail: args.contactEmail || null,
+      address: args.address || null,
+      platformId: args.platformId || null,
+      platform: null as Platform | null,
+      status: args.status ?? 1,
+      createTime: now,
+      updateTime: now as Date
+    } as Company;
+
+    const markdown = `✅ **Company Created Successfully**\n\n${formatCompanyMarkdown(companyForMarkdown)}`;
 
     return {
       content: [{ type: 'text', text: markdown }],

+ 2 - 2
packages/admin-mcp-server/src/tools/disability-company-tools.ts

@@ -23,7 +23,7 @@ function formatDisabilityCompanyMarkdown(person: DisabledPerson): string {
     `## ${person.name} (ID: ${person.id})`,
     '',
     `**ID Card**: ${person.idCard}`,
-    `**Disability Cert No**: ${person.disabilityCertNo}`,
+    `**Disability Cert No**: ${person.disabilityId}`,
     person.disabilityType ? `**Disability Type**: ${person.disabilityType}` : null,
     person.disabilityLevel ? `**Disability Level**: ${person.disabilityLevel}` : null,
     person.gender ? `**Gender**: ${person.gender}` : null,
@@ -127,7 +127,7 @@ export const disabilityCompanyQueryTool = async (args: DisabilityCompanyQueryInp
         id: p.id,
         name: p.name,
         idCard: p.idCard,
-        disabilityCertNo: p.disabilityCertNo,
+        disabilityId: p.disabilityId,
         disabilityType: p.disabilityType,
         disabilityLevel: p.disabilityLevel,
         gender: p.gender,

+ 5 - 5
packages/admin-mcp-server/src/tools/disability-tools.ts

@@ -32,7 +32,7 @@ function formatDisabledPersonMarkdown(person: DisabledPerson): string {
     '',
     `**Name**: ${person.name}`,
     `**ID Card**: ${person.idCard}`,
-    `**Disability Cert No**: ${person.disabilityCertNo}`,
+    `**Disability Cert No**: ${person.disabilityId}`,
     person.disabilityType ? `**Disability Type**: ${person.disabilityType}` : null,
     person.disabilityLevel ? `**Disability Level**: ${person.disabilityLevel}` : null,
     person.gender ? `**Gender**: ${person.gender}` : null,
@@ -98,7 +98,7 @@ export const disabledPersonListTool = async (args: DisabledPersonListInput) => {
         id: p.id,
         name: p.name,
         idCard: p.idCard,
-        disabilityCertNo: p.disabilityCertNo,
+        disabilityId: p.disabilityId,
         disabilityType: p.disabilityType,
         disabilityLevel: p.disabilityLevel,
         phone: p.phone,
@@ -160,7 +160,7 @@ export const disabledPersonGetTool = async (args: DisabledPersonGetInput) => {
       id: person.id,
       name: person.name,
       idCard: person.idCard,
-      disabilityCertNo: person.disabilityCertNo,
+      disabilityId: person.disabilityId,
       disabilityType: person.disabilityType,
       disabilityLevel: person.disabilityLevel,
       phone: person.phone,
@@ -206,7 +206,7 @@ export const disabledPersonCreateTool = async (args: DisabledPersonCreateInput)
       id: person.id,
       name: person.name,
       idCard: person.idCard,
-      disabilityCertNo: person.disabilityCertNo,
+      disabilityId: person.disabilityId,
       disabilityType: person.disabilityType,
       disabilityLevel: person.disabilityLevel,
       phone: person.phone,
@@ -247,7 +247,7 @@ export const disabledPersonUpdateTool = async (args: DisabledPersonUpdateInput)
       id: person.id,
       name: person.name,
       idCard: person.idCard,
-      disabilityCertNo: person.disabilityCertNo,
+      disabilityId: person.disabilityId,
       disabilityType: person.disabilityType,
       disabilityLevel: person.disabilityLevel,
       phone: person.phone,

+ 1 - 1
packages/admin-mcp-server/src/types.ts

@@ -361,7 +361,7 @@ export interface DisabledPerson {
   id: number;
   name: string;
   idCard: string;
-  disabilityCertNo: string;
+  disabilityId: string;
   disabilityType?: string | null;
   disabilityLevel?: string | null;
   phone?: string | null;