Skip to main content

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/

从旧模块迁移

  1. pip install -e ../uc-integration
  2. 备份并删除子系统 modules/uc_integration
  3. python ../uc-integration/scripts/link_to_project.py .
  4. 确认 UC_SUBSYSTEM_CODE 与门户子系统编码一致
  5. 验证 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

uc_integration-0.1.7.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uc_integration-0.1.7-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file uc_integration-0.1.7.tar.gz.

File metadata

  • Download URL: uc_integration-0.1.7.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for uc_integration-0.1.7.tar.gz
Algorithm Hash digest
SHA256 95c41fb933e17bc42bc557eee94d3f2041b3befbbec66151e190827141f7b62a
MD5 dc20262f88574860d4aa1f034092eec4
BLAKE2b-256 e9f6e5465e2cd5ceea8363fcb1f93fa24ba466909bb8ce0c031de4b12e8e647a

See more details on using hashes here.

File details

Details for the file uc_integration-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: uc_integration-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for uc_integration-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 6564e6189e835abeff906f30d4c06950abc610b547b0c1b106a48ac8721015a6
MD5 de7960149a7666ddf893ce599d29d9ac
BLAKE2b-256 6f2817122520d60ca003b0c88f8feeb21b4010860f6b43bdd3f24da7425a6689

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.9

2 files

0.1.8

2 files

This release

0.1.7 This release

2 files

0.1.5

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page