SCSAI Method Execution Capability Diagnostic Report — 2026-07-21
Diagnosis Conclusion
The three core API capabilities of the SCPLM SCSAI installation (https://ylxt.chat/scplm) are as follows:
| API | Capability | Evidence |
|-----|------|------|
| ApplyAML / ApplyItem | ✅ Normal | Both ItemType creation and Allowed Permission creation succeeded |
| ApplyMethod | ❌ Fully Disabled | All methods (C#/JS/Standard) are unresponsive or return error "method type not supported" |
| ApplySQL | ⚠️ Read-Only | SELECT returns data; UPDATE returns success but does not actually write (silently ignored) |
Root Cause Analysis
applyMethod is disabled
- Standard SCSAI JS methods like applyMethod('Identity', 'GetServerTime') are unresponsive
- applyMethod('ItemType', 'SetBAItemTypePermission') → "method type (c#) not currently supported"
- applyMethod('ItemType', 'BA_CreateMinItemType') (after switching to JS) → "method type (JavaScript) not currently supported"
- Conclusion: The ApplyMethod SOAP endpoint of SCSAI is disabled by server configuration (not an issue with individual methods).
applySQL is read-only.
- applySQL("UPDATE ... SET label='UPDATED' WHERE id='...'") → success: true,
- but querying the label value still shows the original value → UPDATE was silently rejected by the database layer.
- Reason: The database user (SCPLM or agent) used by the SCSAI IOM connection only has SELECT permission on [SCPLM].[agent].[ITEMTYPE].
- INSERT/UPDATE/DELETE are silently ignored by database triggers or user permissions.
Specificity of default_permission_id
- ITEMTYPE.default_permission_id is a core protected column in SCSAI.
- The only write path:
- C# Method SetBAItemTypePermission: Calls newIdApplySQL to write the column → intercepted and disabled by applyMethod.
- Client applySQL directly UPDATEs → intercepted by database write permissions.
- Allowed Permission (is_default=1) can be created correctly, but the SCSAI permission checker does not downgrade to use it; it directly requires the default_permission_id column to have a value.
Affected operations
- ❌ BA_CreateMinItemType (C# → still blocked after switching to JS)
- ❌ SetBAItemTypePermission (the only method to write default_permission_id)
- ❌ applySQL UPDATE (any write operation does not take effect)
- ❌ applyMethod any custom/standard method
Unaffected operations
- ✅ sendAML / applyItem: Create ItemType, Allowed Permission (read-only operations)
- ✅ queryItems: select queries work normally
- ✅ smartCreateItemType: Create ItemType ✅, but instance creation ❌
Fix (requires server-side action)
Option A (Recommended): Restore the applyMethod endpoint
Re-enable the ApplyMethod SOAP endpoint in SCSAI server configuration:
- Check IIS or SCSAI configuration to confirm if ApplyMethod is explicitly disabled
- If so, remove the disablement
- Or grant the SCSAI application pool identity write permission to the [SCPLM].[agent] schema
Option B: Grant database write permissions
Grant the following to the SCSAI database user (SQL Server Login):
GRANT UPDATE ON [SCPLM].[agent].[ITEMTYPE] TO [SCPLM_USER];
这样客户端 applySQL 就能真正 UPDATE default_permission_id 列。
Option C (Temporary workaround): Use Part type as a template
When creating a custom object class is required:
- Use the standard Part type (which already has the correct default_permission_id)
- Simulating object classes via Part + classification/attribute extension
- Not dependent on default_permission_id
Key file modification history
- server/utils/SCSAI-client.js: Added implementations for applyMethod, applySQL, ApplyItem
- server/routes/unified-create.js: ensureItemType relies on BA_CreateMinItemType + applySQL
- server/utils/SCSAI-tools.js: smartCreateItemType uses applyItem (= sendAML)
Test scripts
- _final_diag.js: Final diagnosis (three-way verification of applyMethod/applySQL/applyItem)
- _deep_diff.js: Field comparison between Part and ZFix90811
- _check_ap.js: Allowed Permission relationship validation
SCSAI credentials
- Server: https://ylxt.chat/scplm
- Username: root
- Password: gyc123456; (in config.yaml)
- Database: SCPLM
- default_permission_id references Permission ID: 5C07EB829D4241F6BB884952960FAF58 (New Part)
BossAgents