feat(api): USER_SYNC_SOURCE switch wires mock/http user source (G4)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -74,3 +74,9 @@ EMBED_POLL_BACKOFF_MULTIPLIER=5
|
|||||||
# 含 304 命中——轮询本身 30s/次,余量给页面重载突发,P5 速率层接真实防护)。
|
# 含 304 命中——轮询本身 30s/次,余量给页面重载突发,P5 速率层接真实防护)。
|
||||||
EMBED_WINDOW_REQUESTS=120
|
EMBED_WINDOW_REQUESTS=120
|
||||||
EMBED_WINDOW_SECONDS=60
|
EMBED_WINDOW_SECONDS=60
|
||||||
|
|
||||||
|
# ── 用户信息开放接口(uniservice)──
|
||||||
|
OPEN_API_USERS_URL=https://uniservice.server.hnxinyouhe.com/open/v1/users
|
||||||
|
OPEN_API_USERS_KEY=CHANGE_ME
|
||||||
|
# 用户同步源:mock(默认,e2e/本地)/ http(uniservice 真实接口)
|
||||||
|
USER_SYNC_SOURCE=mock
|
||||||
|
|||||||
@@ -69,3 +69,9 @@ ADMIN_PASSWORD=CHANGE_ME_强密码
|
|||||||
# ── 日志 ──
|
# ── 日志 ──
|
||||||
# pino 级别(logger-options/worker/sync;生产建议 info,排障临时 debug)。
|
# pino 级别(logger-options/worker/sync;生产建议 info,排障临时 debug)。
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
|
|
||||||
|
# ── 用户信息开放接口(uniservice)──
|
||||||
|
OPEN_API_USERS_URL=https://uniservice.server.hnxinyouhe.com/open/v1/users
|
||||||
|
OPEN_API_USERS_KEY=CHANGE_ME
|
||||||
|
# 用户同步源:mock(默认)/ http(uniservice 真实接口——生产开)
|
||||||
|
USER_SYNC_SOURCE=http
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
// services/api/src/user-sync/user-sync.module.ts —— 用户同步域模块(P4a Task 7)。
|
// services/api/src/user-sync/user-sync.module.ts —— 用户同步域模块(P4a Task 7)。
|
||||||
// 仅 cn 装配(AppCnModule import;ov 入口不碰——用户身份是 cn 单域事实)。
|
// 仅 cn 装配(AppCnModule import;ov 入口不碰——用户身份是 cn 单域事实)。
|
||||||
// 装配:SyncLock(cn Redis 互斥)、MockUserSource(USER_SOURCE 端口实现,
|
// 源装配(G4 后双源):USER_SYNC_SOURCE=http → HttpUserSource(uniservice
|
||||||
// G4 后替换 provider 即切真实源)、UserSyncEngine(批次引擎)、
|
// 真实接口),否则/缺省 → MockUserSource(e2e/本地默认——test 经
|
||||||
// UserSyncScheduler(setInterval 定时触发,仅 cn bootstrap 启动)、
|
// app.get(MockUserSource) 注入场景,见 mock-user-source.ts 文件头)。
|
||||||
// UserSyncAdminService + UserSyncController(/admin/user-sync 端点)。
|
// 其余:SyncLock(cn Redis 互斥)、UserSyncEngine、UserSyncScheduler
|
||||||
// useExisting 装配端口:引擎只依赖 UserSourcePort 符号,e2e 经
|
// (setInterval 定时触发,仅 cn bootstrap 启动)、UserSyncAdminService +
|
||||||
// app.get(MockUserSource) 注入场景(mock-user-source.ts 文件头)。
|
// UserSyncController(/admin/user-sync 端点)。
|
||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
|
import { HttpUserSource } from './http-user-source';
|
||||||
import { MockUserSource } from './mock-user-source';
|
import { MockUserSource } from './mock-user-source';
|
||||||
import { SyncLock } from './sync-lock';
|
import { SyncLock } from './sync-lock';
|
||||||
import { UserSyncAdminService } from './user-sync-admin.service';
|
import { UserSyncAdminService } from './user-sync-admin.service';
|
||||||
@@ -14,12 +15,15 @@ import { UserSyncController } from './user-sync.controller';
|
|||||||
import { UserSyncEngine, UserSyncScheduler } from './user-sync.service';
|
import { UserSyncEngine, UserSyncScheduler } from './user-sync.service';
|
||||||
import { USER_SOURCE } from './user-source.port';
|
import { USER_SOURCE } from './user-source.port';
|
||||||
|
|
||||||
|
const useHttpSource = process.env.USER_SYNC_SOURCE === 'http';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
controllers: [UserSyncController],
|
controllers: [UserSyncController],
|
||||||
providers: [
|
providers: [
|
||||||
SyncLock,
|
SyncLock,
|
||||||
MockUserSource,
|
...(useHttpSource
|
||||||
{ provide: USER_SOURCE, useExisting: MockUserSource },
|
? [HttpUserSource, { provide: USER_SOURCE, useExisting: HttpUserSource }]
|
||||||
|
: [MockUserSource, { provide: USER_SOURCE, useExisting: MockUserSource }]),
|
||||||
UserSyncEngine,
|
UserSyncEngine,
|
||||||
UserSyncScheduler,
|
UserSyncScheduler,
|
||||||
UserSyncAdminService,
|
UserSyncAdminService,
|
||||||
|
|||||||
Reference in New Issue
Block a user