Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yanxuan-qc-change-system
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yx-qc-change-flow
yanxuan-qc-change-system
Commits
8b49db81
Commit
8b49db81
authored
Aug 05, 2026
by
金海浪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs: 生成/更新 CAPABILITY.md(kb-bootstrap 跑库自动生成)
parent
6e1055f0
Pipeline
#94338
failed with stage
in 6 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
71 additions
and
0 deletions
+71
-0
CAPABILITY.md
CAPABILITY.md
+71
-0
No files found.
CAPABILITY.md
0 → 100644
View file @
8b49db81
# CAPABILITY · yanxuan-qc-change-system
> 机器生成与保鲜,勿手改。可全量重扫或按代码变更增量更新。最后刷新:2026-08-03
## 架构角色
后端业务服务。严选品控(QC)变更管理领域的服务端,承载变更流程流转、变更配置、供应商信息查询等能力,对前端管理后台(同组
`yanxuan-qc-change-flow-web`
)提供 HTTP 接口,并通过
`@MissaClient`
服务发现 SDK 调用下游品控/供应链/待办/邮件等微服务。
## 职责边界
-
**负责**
:
-
变更主流程(ChangeFlow):创建、提交、下发、撤销、催办、报价、查询、导出、操作人/责任人查询
-
变更子流程(ChangeSubFlow):分页、详情、提交、操作人查询
-
变更配置(ChangeConfig):配置项 CRUD、按类型查询、供应商信息查询、导出
-
供应商查询(Supplier):供应商信息、供应商商品、按商品 ID 反查供应商
-
用户鉴权(Cookie → ULA SDK
`AuthClient`
)、管理后台拦截器(
`UserInterceptor`
/
`AdminUserLoginInterceptor`
)
-
数据导出(通过 DES
`DesClient`
异步任务)
-
定时任务(dschedule
`AutoSubmit`
自动提交类任务)
-
**不负责**
:
-
前端页面与 BFF 转发层(由同组
`yanxuan-qc-change-flow-web`
承担)
-
品控检查执行本身、商品中心/供应商中心/待办中心等下游业务逻辑(本服务只编排调用)
-
变更数据落库 schema 由
`doc/scheme.sql`
、
`doc/addLogic.sql`
定义,本服务不维护 DB
-
技术栈:Java / Spring Boot 多模块 Maven 工程(web/biz/integration/dal/common/client/assembly),MyBatis + Druid,Redis Sentinel,apolloY 配置中心,dschedule 调度,missa RPC SDK,ULA 鉴权 SDK,DES 导出 SDK
## 出入口接口概览
按能力域分组的 controller 概览(非逐接口全清单;完整 path 见 ENDPOINTS.md 或源码
`@RequestMapping`
现取):
-
**变更主流程**
:
`ChangeFlowController`
`/change/flow`
— 变更单的创建/提交/下发/撤销/催办/报价/查询/导出/操作人查询(含 commander 信息 V2)
-
**变更子流程**
:
`ChangeSubFlowController`
`/change/sub/flow`
— 子流程分页/详情/提交/操作人查询
-
**变更配置**
:
`ChangeConfigController`
`/config/change`
— 配置项列表/详情/创建/修改/删除/类型查询/供应商信息查询/导出
-
**供应商查询**
:
`SupplierController`
`/supplier`
— 供应商信息、供应商商品、按商品 ID 反查供应商
-
**测试**
:
`TestController`
`/test/**`
— 测试入口(受
`AdminUserLoginInterceptor`
拦截)
-
**健康检查**
:
`HealthCheckController`
`/i/health`
— 健康检查(免鉴权)
鉴权拦截(
`WebMvcConfig`
):
`UserInterceptor`
拦截
`/**`
,排除
`/i/health`
、
`/change/flow/getOperator`
、
`/test/**`
、
`/api/des/callback/**`
;
`AdminUserLoginInterceptor`
拦截
`test/**`
。
## 依赖服务 + 中间件/配置依赖概览
**下游服务**
(
`@MissaClient(serviceCode=...)`
硬编码可读出 → 记实;经 SDK/网关解析真实实例由服务发现完成):
| 下游 service_code | 可信度 | 依据落点 | 业务用途 |
|---|---|---|---|
|
`yanxuan-qc-api`
| 硬编码 |
`integration/qc/QcRpcService.java`
、
`integration/flow/goods/QcApiRpcService.java`
| 品控能力(变更涉及品控数据) |
|
`yanxuan-flowx-server`
| 硬编码 |
`integration/flow/FlowRpcService.java`
| flowx 流转引擎(变更流程流转) |
|
`yanxuan-supplier-ms`
| 硬编码 |
`integration/supplier/SupplierRpcService.java`
、
`integration/flow/supplier/FlowRpcSupplierSendService.java`
| 供应商微服务(供应商信息/发送) |
|
`yanxuan-supplier-api`
| 硬编码 |
`integration/flow/supplier/FlowRpcSupplierService.java`
| 供应商 API(流程侧) |
|
`ic-basis`
| 硬编码 |
`integration/item/ItemRpcService.java`
| 商品基础数据 |
|
`yanxuan-itemcenter-admin`
| 硬编码 |
`integration/flow/goods/ItemcenterApiRpcService.java`
| 商品中心管理端 |
|
`yanxuan-pfu-api`
| 硬编码 |
`integration/flow/goods/PfuApiRpcService.java`
| PFU API(商品/品控相关) |
|
`yanxuan-ius`
| 硬编码 |
`integration/flow/ius/IusRpcService.java`
| IUS 服务 |
|
`yanxuan-sc-todo-center`
| 硬编码 |
`integration/todo/TodoRpcService.java`
| 待办中心(变更待办任务) |
|
`logistics-uas`
| 硬编码 |
`integration/flow/email/EmailRpcService.java`
| 邮件发送(UAS) |
|
`yanxuan-template`
| 硬编码 |
`integration/flow/email/EmailTemplateRpcService.java`
| 邮件模板 |
| ULA 鉴权服务(
`com.netease.yanxuan.user.ula.sdk.AuthClient`
) | 待确认 |
`integration/rpc/UserTicketClient.java`
| 用户 Cookie 鉴权;服务名经 SDK 解析未硬编码 |
| DES 数据导出服务(
`com.netease.mail.dp.des.starter.client.DesClient`
) | 待确认 |
`biz/service/DESExportService.java`
| 异步导出任务;服务名经 SDK/starter 解析未硬编码 |
> 前端配套:同组 `yanxuan-qc-change-flow-web`(service_code 推测 `yx-qc-change-flow-web`)是本服务的管理后台前端,仓代码内无直接引用线索(前后端经 HTTP 接口对接,前端走网关/BFF 转发)。
**中间件/配置骨架**
(静态结构,非具体连接串/密码/当前值):
| 类型 | 中间件/配置方式 | 配置文件路径 |
|---|---|---|
| 配置中心 | apolloY(
`app.id=yanxuan-qc-change-system`
,cluster=default);namespaces:
`application`
、
`db-public`
、
`db-redis`
|
`assembly/src/main/resources/META-INF/app.properties`
、
`apolloY-server.properties`
|
| DB | MySQL + Druid 连接池(
`DrmDBConfig`
/
`DataSourceConfiguration`
从 apollo namespace
`db-public`
读
`db.url/db.username/db.password/db.driverClassName`
,支持
`@EnableDataSourceRefresh`
动态刷新) |
`dal/src/main/java/.../config/DrmDBConfig.java`
、
`DataSourceConfiguration.java`
;本地兜底
`config/{dev,test,regression,online}/application.properties`
|
| 缓存 | Redis Sentinel(
`DrmRedisConfig`
从 apollo namespace
`db-redis`
读
`redis.master/redis.nodes/redis.password`
) |
`dal/src/main/java/.../config/DrmRedisConfig.java`
、
`RedisSentinelConfig.java`
|
| 调度 | dschedule(
`app-id=yanxuan-qc-change-system`
,自动注册,fail 策略告警) |
`assembly/src/main/resources/config/{env}/application.properties`
|
| 鉴权 | ULA SDK
`AuthClient`
+
`YxOpenidLogin`
(Cookie 鉴权,拦截器
`UserInterceptor`
) |
`web/src/main/java/.../config/UserInterceptor.java`
、
`integration/rpc/UserTicketClient.java`
|
| RPC | missa 客户端 SDK(
`@MissaClient(serviceCode=...)`
声明式下游调用)+
`RpcTemplate`
(HTTP 工具) |
`integration/src/main/java/.../rpc/*`
|
| 导出 | DES SDK(
`DesClient`
异步导出任务,回调
`/api/des/callback/**`
) |
`biz/src/main/java/.../service/DESExportService.java`
|
| 监控/日志 |
`com.netease.om:monitor`
、
`log-java-client`
、
`yanxuan-tracer-client`
、
`helios-core`
、
`yanxuan-shadow`
|
`pom.xml`
|
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment