GSS UC Integration — 用户中心 SSO / 主数据同步(Fred 子系统共享包)
将各子系统里同构的 modules/uc_integration 抽成可安装包,避免复制粘贴分叉。
能力
| 接口 | 说明 |
|---|---|
GET /{subsystem}/uc_integration/auth/sso/config |
登录模式 |
POST /{subsystem}/uc_integration/auth/sso/exchange |
UC 一次性 code → 本地 JWT(不接受 accessToken) |
POST /{subsystem}/uc_integration/auth/sso/refresh |
UC refreshToken 续期 |
POST /{subsystem}/uc_integration/auth/sso/admin/exchange |
管理端:code → admin 表 JWT |
POST /{subsystem}/uc_integration/auth/sso/admin/refresh |
管理端续期 |
POST /{subsystem}/uc_integration/internal/uc-sync |
UC 主数据推送(仅本机) |
GET /{subsystem}/uc_integration/internal/uc-sync |
同步健康检查 |
服务层(无 HTTP):按用户 id 查组织 + 门店
from uc_integration.service.UcStoreScopeService import (
UcStoreScopeService,
UcScopeQueryError,
)
try:
scope = UcStoreScopeService().get_org_and_stores_by_user_id(user_id)
except UcScopeQueryError as e:
# 镜像表缺失 / DB 会话不可用 / SQL 失败(含明确中文说明)
...
# 用户不存在(uc_user 无有效行)→ None
# scope['departments'] — 所属组织
# scope['stores'] / scope['store_ids'] — 可访问门店
纯原生 SQL 查询 uc_user / uc_dept / uc_dept_user_relation / uc_store,不依赖 ORM 模型类。先校验用户存在,再查组织/门店。
本地 JWT 的 sub 含:
- 本地身份:
id/username/name/store_id(当前选中,可空)/role uc精简:code/name/store/is_store_manager,以及departments/roles/roleCodes(payload 有则带)- 不含全量
store_ids/stores(避免 Authorization 过大 → 431)
换票响应 body 可另含 storeIds(当次组织现查结果,供前端首屏),不进 JWT。后续门店列表应走服务端按部门现查。
安装
# 开发:可编辑安装
pip install -e /path/to/uc-integration
# 或从 git
pip install "gss-uc-integration @ git+ssh://git@github.com/org/uc-integration.git"
Fred 只从项目 modules/ 扫描蓝图,安装后必须链接:
# 在子系统根目录(含 modules/)
python /path/to/uc-integration/scripts/link_to_project.py .
# 或覆盖已有 symlink
python /path/to/uc-integration/scripts/link_to_project.py . --force
等价手动操作:
ln -sfn "$(python -c 'import uc_integration,pathlib; print(pathlib.Path(uc_integration.__file__).parent)')" \
modules/uc_integration
宿主配置
common/config/Config.py(或等价配置):
LOAD_CUSTOM_MODULES = [..., "uc_integration"]
SSO_LOGIN_MODE = 'uc' # 或 'local'
UC_SUBSYSTEM_CODE = 'ai_check' # 路由前缀:/{code}/uc_integration
USER_CENTER_BASE_URL = 'http://127.0.0.1:5001'
USER_CENTER_INTERNAL_SECRET = '...' # 与 UC OPEN_API_INTERNAL_SECRET 一致
# 可选
UC_INCLUDE_STORE_SCOPE = True # 解析/返回门店 scope + 当前 store_id;不写全量 store_ids 进 JWT(默认 True)
UC_STORE_FALLBACK_FIRST = True # 无匹配门店时回退第一个(默认 True;仅关闭 scope 时的选店回退)
宿主前置条件
- 本地库有
uc_user/uc_store等镜像表(可由 sync DDL 自动建) - ORM:
model.model中存在UcUser(以及门店 scope 需要的UcDept等) - 依赖:
fred_admin、Flask、SQLAlchemy(由子系统环境提供)
目录结构(Fred 兼容)
uc_integration/
__init__.py # 导出蓝图
backend/
__init__.py # Blueprint + url_prefix
deps.py # 惰性解析 model.model
controller/
service/
schema/
从旧模块迁移
pip install -e ../uc-integration- 备份并删除子系统
modules/uc_integration python ../uc-integration/scripts/link_to_project.py .- 确认
UC_SUBSYSTEM_CODE与门户子系统编码一致 - 验证
GET /{code}/uc_integration/auth/sso/config
版本
当前 0.1.7,以 ai_check(UC 原样透传)+ todo(门店 scope / 动态前缀)合并为基准。
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uc_integration-0.1.8.tar.gz.
File metadata
- Download URL: uc_integration-0.1.8.tar.gz
- Upload date:
- Size: 25.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f9def198fde564c0d6155dc1ecfefbcc936c1b8840e7984ace3a5a59771653d
|
|
| MD5 |
616baf66c92c632ec0793b08bdbc4954
|
|
| BLAKE2b-256 |
849f25f0662e6431c15baebc3baeca36fae747d9dde5ce9b2db7f008f8d08333
|
File details
Details for the file uc_integration-0.1.8-py3-none-any.whl.
File metadata
- Download URL: uc_integration-0.1.8-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2afca93a959e12c8fe6983289e5d15c5e96115c0147296d8cc1f13992014efde
|
|
| MD5 |
c6205e86ac801a0de4ac215c71f17fdf
|
|
| BLAKE2b-256 |
96334f86383d95743112858244e6b3b386a98dfabed391ed8ea089430da0da29
|