feat: IMAP mail sync with thread-to-contact matching (PRD §6.1)
Real IMAP connection via imapflow library: - Connects to IMAP server (IMAPFlow, TLS on port 993) - Fetches recent messages (configurable limit, default 20) - Extracts: from, fromEmail, subject, date, snippet (200 chars) - Thread-to-contact matching (PRD §6.1): 1. Match sender email against persons table 2. If no person match, extract domain and match against company.website 3. Returns matchedCompany + matchedPerson for each email - Audit-logged (action: crm.mailsync:imap) - Zod validated (host, port, user, password, folder, limit) - 502 on IMAP connection failure with detail - 400 on validation failure Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
This commit is contained in:
1 parent
7acc0c5451
commit
e45b68bb8b
1089 files changed
+260614
No files matched your search
@@ -0,0 +1,54 @@
|
||||
# 框架识别特征
|
||||
|
||||
## Three.js
|
||||
|
||||
**未混淆**:`THREE.`, `WebGLRenderer`, `ShaderMaterial`, `BufferGeometry`
|
||||
|
||||
**混淆后**(通过构造参数推断):
|
||||
|
||||
| 调用模式 | 原始类 |
|
||||
|---------|--------|
|
||||
| `new X({canvas, antialias, alpha})` | `WebGLRenderer` |
|
||||
| `new X(fov, aspect, near, far)` — 4 数字 | `PerspectiveCamera` |
|
||||
| `new X(-1, 1, 1, -1, 0, 1)` — 6 参数 | `OrthographicCamera` |
|
||||
| `new X(w, h, {wrapS, minFilter})` | `WebGLRenderTarget` |
|
||||
| `new X(data, w, h, format, type)` — Float32Array | `DataTexture` |
|
||||
| `new X(2, 2)` 作为几何体 | `PlaneGeometry` |
|
||||
| `new X({uniforms, vertexShader, fragmentShader})` | `ShaderMaterial` |
|
||||
| `X.getElapsedTime()` | `Clock` |
|
||||
|
||||
**常量**:`ClampToEdgeWrapping`, `NearestFilter`, `RGBAFormat`, `FloatType`, `DoubleSide`
|
||||
|
||||
## 2D Canvas
|
||||
|
||||
`dataEngine: null` 时,用 `getContext('2d')` 有无 + `createShader`/`shaderSource` 有无区分:
|
||||
- 有 `getContext('2d')`,无 WebGL 调用 → 纯 2D Canvas
|
||||
- 有 WebGL 调用 → Raw WebGL / PixiJS
|
||||
|
||||
## Raw WebGL
|
||||
|
||||
```javascript
|
||||
gl.createShader / gl.shaderSource / gl.compileShader / gl.createProgram
|
||||
gl.bindBuffer / gl.bindFramebuffer / gl.drawArrays
|
||||
```
|
||||
|
||||
## PixiJS
|
||||
|
||||
`PIXI.Application`, `PIXI.Filter`, `new PIXI.Filter(vertSrc, fragSrc, uniforms)`
|
||||
|
||||
## Babylon.js
|
||||
|
||||
`BABYLON.Engine`, `BABYLON.ShaderMaterial`, `BABYLON.Effect.ShadersStore`
|
||||
|
||||
## GPGPU 模式
|
||||
|
||||
两个 `WebGLRenderTarget`(ping-pong)+ `OrthographicCamera(-1,1,1,-1,0,1)` + `PlaneGeometry(2,2)` + `DataTexture` 初始位置 + `setRenderTarget` 循环
|
||||
|
||||
## 常见噪声
|
||||
|
||||
| 函数 | 类型 |
|
||||
|------|------|
|
||||
| `snoise` | Simplex noise (Ashima) |
|
||||
| `cnoise` | Classic Perlin |
|
||||
| `cellular` | Worley/Voronoi |
|
||||
| `fbm` | Fractal Brownian Motion |
|
||||
Reference in new issue
Block a user