Sync: add cloud learning and model updates
This commit is contained in:
@@ -117,7 +117,7 @@ OrgUnit (组织架构)
|
||||
| [DATA_MODEL_ORG.md](./DATA_MODEL_ORG.md) | 组织人事(org_units, staff, 异动/奖惩/教育/家庭等) | ✅ 完成 |
|
||||
| [DATA_MODEL_COMPLEX.md](./DATA_MODEL_COMPLEX.md) | 楼盘/区域(districts, business_areas, complexes, buildings, room_units, schools 等) | ✅ 完成 |
|
||||
| [DATA_MODEL_CLIENT.md](./DATA_MODEL_CLIENT.md) | 客源管理(clients, requirements, follow_logs, viewings, matches 等) | ✅ 完成 |
|
||||
| [DATA_MODEL_PROPERTY.md](./DATA_MODEL_PROPERTY.md) | 房源管理(properties 及配套 22 张表,含跟进/钥匙/委托/实勘/营销/产证/完成度等) | ✅ 完成 |
|
||||
| [DATA_MODEL_PROPERTY.md](./DATA_MODEL_PROPERTY.md) | 房源管理(properties 及配套 22 张表,含跟进/钥匙/委托/实勘/营销/产证/完成度/标签/收藏/保护/号码方审批等) | ✅ 完成 |
|
||||
|
||||
---
|
||||
|
||||
@@ -294,6 +294,10 @@ CREATE INDEX idx_domains_primary ON public.domains(tenant_id) WHERE is_primary =
|
||||
|
||||
### 3.18 系统设置(System Settings)
|
||||
|
||||
> **归属说明**:
|
||||
> - `lookup_categories` / `lookup_items` / `saved_filters` 为**跨模块**系统表,权威定义在本节。
|
||||
> - `property_tags` / `property_tag_relations` / `property_favorites` / `property_protections` / `number_holder_approvals` 属房源模块配套表,**权威定义已迁至** [`DATA_MODEL_PROPERTY.md §4.19-§4.22`](./DATA_MODEL_PROPERTY.md),本节不再重复 DDL(修复 S1/S2)。
|
||||
|
||||
```sql
|
||||
-- ============================================================
|
||||
-- 枚举/选项管理:跟进目的、标签、来源渠道 等运营维护的枚举值
|
||||
@@ -321,49 +325,7 @@ CREATE INDEX idx_lookup_items_category ON lookup_items(category_id)
|
||||
WHERE is_active = TRUE;
|
||||
CREATE UNIQUE INDEX idx_lookup_items_value ON lookup_items(category_id, value);
|
||||
|
||||
-- 自定义标签(速销/独家/唯一 等)
|
||||
CREATE TABLE property_tags (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name VARCHAR(50) NOT NULL,
|
||||
color VARCHAR(7), -- HEX 颜色
|
||||
is_system BOOLEAN NOT NULL DEFAULT FALSE, -- 系统预置标签不可删除
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE
|
||||
);
|
||||
|
||||
-- 房源 ↔ 标签 多对多
|
||||
CREATE TABLE property_tag_relations (
|
||||
property_id UUID NOT NULL REFERENCES properties(id) ON DELETE CASCADE,
|
||||
tag_id UUID NOT NULL REFERENCES property_tags(id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (property_id, tag_id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_property_tags_property ON property_tag_relations(property_id);
|
||||
CREATE INDEX idx_property_tags_tag ON property_tag_relations(tag_id);
|
||||
|
||||
-- 收藏(经纪人收藏房源)
|
||||
CREATE TABLE property_favorites (
|
||||
staff_id UUID NOT NULL REFERENCES staff(id) ON DELETE CASCADE,
|
||||
property_id UUID NOT NULL REFERENCES properties(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
PRIMARY KEY (staff_id, property_id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_property_favorites_staff ON property_favorites(staff_id);
|
||||
|
||||
-- 保护房设置
|
||||
CREATE TABLE property_protections (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
property_id UUID NOT NULL UNIQUE REFERENCES properties(id) ON DELETE CASCADE,
|
||||
is_protected BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
reason TEXT,
|
||||
start_at TIMESTAMPTZ,
|
||||
end_at TIMESTAMPTZ,
|
||||
set_by UUID REFERENCES staff(id) ON DELETE SET NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 筛选方案(保存的搜索条件)
|
||||
-- 筛选方案(保存的搜索条件,跨模块通用)
|
||||
CREATE TABLE saved_filters (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
staff_id UUID NOT NULL REFERENCES staff(id) ON DELETE CASCADE,
|
||||
@@ -375,25 +337,18 @@ CREATE TABLE saved_filters (
|
||||
);
|
||||
|
||||
CREATE INDEX idx_saved_filters_staff ON saved_filters(staff_id, module);
|
||||
|
||||
-- 号码方修改审批
|
||||
CREATE TABLE number_holder_approvals (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
property_id UUID NOT NULL REFERENCES properties(id) ON DELETE CASCADE,
|
||||
contact_id UUID NOT NULL REFERENCES property_contacts(id) ON DELETE CASCADE,
|
||||
applicant_id UUID NOT NULL REFERENCES staff(id) ON DELETE RESTRICT,
|
||||
approver_id UUID REFERENCES staff(id) ON DELETE SET NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending'
|
||||
CHECK (status IN ('pending','approved','rejected')),
|
||||
remarks TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
decided_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE INDEX idx_number_holder_approvals_status ON number_holder_approvals(status)
|
||||
WHERE status = 'pending';
|
||||
```
|
||||
|
||||
**已迁出本节的表**(权威源见子文档):
|
||||
|
||||
| 表名 | 权威定义位置 |
|
||||
|------|-------------|
|
||||
| `property_tags` | [`DATA_MODEL_PROPERTY.md §4.19`](./DATA_MODEL_PROPERTY.md) |
|
||||
| `property_tag_relations` | [`DATA_MODEL_PROPERTY.md §4.19`](./DATA_MODEL_PROPERTY.md) |
|
||||
| `property_favorites` | [`DATA_MODEL_PROPERTY.md §4.20`](./DATA_MODEL_PROPERTY.md) |
|
||||
| `property_protections` | [`DATA_MODEL_PROPERTY.md §4.21`](./DATA_MODEL_PROPERTY.md) |
|
||||
| `number_holder_approvals` | [`DATA_MODEL_PROPERTY.md §4.22`](./DATA_MODEL_PROPERTY.md) |
|
||||
|
||||
---
|
||||
|
||||
## 五、关键索引汇总与查询优化策略
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# PRD: 权限管理模块
|
||||
**状态**: Draft
|
||||
**作者**: 产品经理
|
||||
**最后更新**: 2026-04-24(v1.0 初稿,基于产品截图分析)
|
||||
**版本**: 1.0
|
||||
**最后更新**: 2026-04-24(v1.1 锁定多角色合并规则 = 并集/最宽松)
|
||||
**版本**: 1.1
|
||||
**所属系统**: Fonrey 房产经纪管理系统
|
||||
**关联模块**: 组织人事管理、房源管理、客源管理、系统设置
|
||||
|
||||
@@ -516,12 +516,12 @@ Fonrey 采用 **RBAC(基于角色的访问控制)+ 个人权限叠加** 的
|
||||
|------|--------|------|----------|
|
||||
| 权限变更实时生效的一致性问题 | 中 | 高 | 角色/个人权限变更后主动清除 Redis 中该员工权限缓存,强制下次请求重新加载 |
|
||||
| 权限项数量巨大(14+ 模块,数百个权限项)导致编辑页性能问题 | 中 | 中 | 左侧导航按模块懒加载权限数据,避免一次性加载全部权限项 |
|
||||
| 多角色冲突规则不清晰 | 低 | 高 | 明确规则:同一员工多角色时取权限并集(最宽松原则),在 PRD 评审时确认 |
|
||||
| 多角色合并规则(已锁定 v1.1) | - | - | **规则**:同一员工多角色取**并集(最宽松原则)**。BOOLEAN→OR;SCOPE→MAX(self<store<zone<area<region<division<company);INTEGER(限额类)→MAX,`0` 视为无上限。详见 `DATA_MODEL_PERMISSION.md` |
|
||||
| 角色删除影响已分配员工 | 低 | 高 | 删除角色前校验是否有员工仍使用该角色,有则阻止删除并提示转移员工角色 |
|
||||
|
||||
### 待确认开放问题
|
||||
|
||||
- [ ] **多角色权限合并规则**:当员工被分配了多个角色时,权限取并集(最宽松)还是交集(最严格)?当前截图显示支持多角色,需明确合并策略 — Owner: 产品负责人 — Deadline: 开发启动前
|
||||
- [x] ~~**多角色权限合并规则**:当员工被分配了多个角色时,权限取并集(最宽松)还是交集(最严格)?~~ **已确认(v1.1,2026-04-24)**:取**并集/最宽松**。BOOLEAN=OR,SCOPE=MAX,INTEGER=MAX(`0`=∞)。权威实现见 `DATA_MODEL_PERMISSION.md` 附录 E `PermissionChecker` 伪代码。
|
||||
- [ ] **个人权限与角色权限冲突优先级**:个人定制权限是否始终覆盖角色权限,还是支持「继承角色 + 仅扩展」模式?— Owner: 产品负责人 — Deadline: 开发启动前
|
||||
- [ ] **权限操作日志**:是否需要记录管理员对权限的变更记录(谁、何时、将哪个权限从什么改成什么)?截图中「修改日志」入口存在,需确认日志颗粒度 — Owner: 产品负责人 — Deadline: 开发启动前
|
||||
- [ ] **角色类别的完整枚举值**:当前已知「置业顾问 / 店管 / 总经」,需确认完整的角色类别列表及各类别允许的权限上限 — Owner: 产品负责人 — Deadline: 开发启动前
|
||||
|
||||
Reference in New Issue
Block a user