refactor(data): 收口关系表运行时数据源
Some checks failed
Deploy Production / Build, push, deploy, verify (push) Has been cancelled
Some checks failed
Deploy Production / Build, push, deploy, verify (push) Has been cancelled
- 移除已迁移业务 AppData 运行时 fallback,改走领域 API 和关系表快读 - 补齐需求产品负责人、版本计划任务 JSON 和成员 username 回填迁移 - 统一治理字典入口,并补充 AI provider、数据源契约和领域服务测试 Co-Authored-By: Codex GPT-5 <codex@openai.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
WITH raw_members AS (
|
||||
SELECT member
|
||||
FROM app_data
|
||||
CROSS JOIN LATERAL jsonb_array_elements(
|
||||
CASE
|
||||
WHEN jsonb_typeof(value -> 'members') = 'array' THEN value -> 'members'
|
||||
ELSE '[]'::jsonb
|
||||
END
|
||||
) AS member
|
||||
WHERE key = 'members'
|
||||
),
|
||||
members AS (
|
||||
SELECT
|
||||
NULLIF(member ->> 'id', '') AS id,
|
||||
NULLIF(member ->> 'username', '') AS username,
|
||||
NULLIF(member ->> 'departmentId', '') AS department_id,
|
||||
NULLIF(member ->> 'roleId', '') AS role_id,
|
||||
COALESCE(member ->> 'phone', '') AS phone,
|
||||
COALESCE(member ->> 'password', '') AS password,
|
||||
CASE
|
||||
WHEN jsonb_typeof(member -> 'isSystem') = 'boolean' THEN (member ->> 'isSystem')::boolean
|
||||
ELSE NULL
|
||||
END AS is_system,
|
||||
COUNT(*) OVER (PARTITION BY NULLIF(member ->> 'username', '')) AS username_count
|
||||
FROM raw_members
|
||||
)
|
||||
UPDATE users AS u
|
||||
SET
|
||||
username = CASE
|
||||
WHEN NULLIF(u.username, '') IS NULL
|
||||
AND m.username IS NOT NULL
|
||||
AND m.username_count = 1
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM users AS other_user
|
||||
WHERE other_user.id <> u.id
|
||||
AND other_user.username = m.username
|
||||
)
|
||||
THEN m.username
|
||||
ELSE u.username
|
||||
END,
|
||||
department_id = COALESCE(m.department_id, u.department_id),
|
||||
role_id = COALESCE(m.role_id, u.role_id, 'member'),
|
||||
phone = COALESCE(m.phone, u.phone, ''),
|
||||
password = COALESCE(m.password, u.password, ''),
|
||||
is_system = COALESCE(m.is_system, u.is_system, false)
|
||||
FROM members AS m
|
||||
WHERE u.id = m.id;
|
||||
Reference in New Issue
Block a user