From b2aadf771ad2a0dd2876f177d75ec17862e2fcf1 Mon Sep 17 00:00:00 2001 From: Shen Wei Date: Wed, 29 Apr 2026 15:43:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project/fonrey/DATA_MODEL/DATA_MODEL.md | 55 +- .../fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md | 1 + .../fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md | 1 + Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md | 30 +- .../DATA_MODEL/DATA_MODEL_PERMISSION.md | 14 +- .../fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md | 40 +- .../fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md | 16 +- Project/fonrey/PRD/TASK_AGENT_READY.md | 384 +++- Project/fonrey/PRD/TASK_AGENT_READY_P0.md | 224 +- .../fonrey/REVIEW/REVIEW_全局_2026-04-28.md | 24 +- Project/fonrey/TECH_STACK/API_CONTRACT.md | 74 +- Project/fonrey/TECH_STACK/TECH_STACK.md | 213 +- Project/fonrey/UI_DESIGN/UI_设计任务总表.md | 9 +- Project/fonrey/UI_DESIGN/区域管理_UI.html | 1119 ++++++++++ Project/fonrey/UI_DESIGN/房源列表_UI.html | 24 +- Project/fonrey/UI_DESIGN/新增房源_UI.html | 12 +- .../fonrey/UI_DESIGN/权限管理/权限管理_UI.md | 223 ++ Project/fonrey/UI_DESIGN/权限管理_UI.html | 1193 ++++++++++ Project/fonrey/UI_DESIGN/楼盘详情_UI.html | 4 +- Project/fonrey/UI_DESIGN/登录_UI.html | 2 +- .../fonrey/UI_DESIGN/登录_账号密码_UI.html | 2 +- .../fonrey/UI_DESIGN/系统配置/系统配置_UI.md | 179 ++ .../fonrey/UI_DESIGN/系统配置/首页设置_UI.md | 186 ++ Project/fonrey/UI_DESIGN/系统配置_UI.html | 856 ++++++++ Project/fonrey/UI_DESIGN/组织人事_UI.html | 1935 +++++++++++++++++ .../UI_DESIGN/组织人事管理/组织人事_UI.md | 219 ++ Project/fonrey/UI_DESIGN/首页设置_UI.html | 536 +++++ ...骨架提示词_v2.2.md => 创建项目骨架提示词_v2.3.md} | 36 +- 28 files changed, 7502 insertions(+), 109 deletions(-) create mode 100644 Project/fonrey/UI_DESIGN/区域管理_UI.html create mode 100644 Project/fonrey/UI_DESIGN/权限管理/权限管理_UI.md create mode 100644 Project/fonrey/UI_DESIGN/权限管理_UI.html create mode 100644 Project/fonrey/UI_DESIGN/系统配置/系统配置_UI.md create mode 100644 Project/fonrey/UI_DESIGN/系统配置/首页设置_UI.md create mode 100644 Project/fonrey/UI_DESIGN/系统配置_UI.html create mode 100644 Project/fonrey/UI_DESIGN/组织人事_UI.html create mode 100644 Project/fonrey/UI_DESIGN/组织人事管理/组织人事_UI.md create mode 100644 Project/fonrey/UI_DESIGN/首页设置_UI.html rename Project/fonrey/prompt/提示词模板/{创建项目骨架提示词_v2.2.md => 创建项目骨架提示词_v2.3.md} (93%) diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL.md b/Project/fonrey/DATA_MODEL/DATA_MODEL.md index 86895def..2d2eaa67 100644 --- a/Project/fonrey/DATA_MODEL/DATA_MODEL.md +++ b/Project/fonrey/DATA_MODEL/DATA_MODEL.md @@ -762,15 +762,64 @@ class PropertyManager(ActiveManager): ## 八、数据量与性能预测 | 表名 | 预估行数 | 增长速度 | 分区策略 | -|------|---------|---------|---------| +|------|---------|---------|---------| | `properties` | 89,000+ | 中速 | 暂不分区,建议 500k 后按 `created_at` RANGE 分区 | -| `follow_logs` | 200万+ | 高速(最高频写入) | 按 `created_at` 月度 RANGE 分区 | -| `property_photos` | 500万+ | 高速 | 按 `property_id` HASH 分区(16分区) | +| `follow_logs` | 200万+ | 高速(最高频写入) | ✅ `PARTITION BY RANGE (created_at)` 月度分区 | +| `property_photos` | 500万+ | 高速 | ✅ `PARTITION BY RANGE (created_at)` 月度分区 | +| `permission_change_logs` | 100万+ | 中高速 | ✅ `PARTITION BY RANGE (operated_at)` 月度分区 | +| `login_attempts` | 500万+ | 高速(每次登录一条) | ✅ `PARTITION BY RANGE (attempted_at)` 月度分区 | +| `platform_audit_logs` | 10万+ | 低中速 | ✅ `PARTITION BY RANGE (created_at)` 月度分区 | | `price_changes` | 50万 | 中速 | 无需分区 | | `listing_histories` | 20万 | 低速 | 无需分区 | | `clients` | 10万+ | 中速 | 暂不分区 | | `viewings` | 100万 | 中速 | 无需分区 | +### 8.1 分区维护策略(partition_maintenance_task) + +所有月度分区表统一由 **Celery Beat 定时任务** `partition_maintenance_task` 维护,每月 1 日凌晨 01:00(UTC+8)自动执行: + +```python +# apps/property/tasks.py(及 permission/login/shared 各 App 对应任务) +@app.task(name="partition_maintenance_task") +def partition_maintenance_task(): + """ + 为下一个月预建所有分区表的分区。 + - 检查是否已存在目标分区,幂等执行 + - 失败时发送 Sentry 告警 + """ + tables = [ + ("follow_logs", "created_at"), + ("property_photos", "created_at"), + ("permission_change_logs", "operated_at"), + ("login_attempts", "attempted_at"), + ("public.platform_audit_logs", "created_at"), + ] + next_month = date.today().replace(day=1) + relativedelta(months=1) + month_start = next_month + month_end = next_month + relativedelta(months=1) + + for table, _key in tables: + suffix = month_start.strftime("%Y_%m") + part_name = f"{table.replace('.', '_')}_{suffix}" + sql = f""" + CREATE TABLE IF NOT EXISTS {part_name} + PARTITION OF {table} + FOR VALUES FROM ('{month_start}') TO ('{month_end}'); + """ + with connection.cursor() as cursor: + cursor.execute(sql) +``` + +**Celery Beat 配置**(`celery.py`): +```python +app.conf.beat_schedule["partition_maintenance_task"] = { + "task": "partition_maintenance_task", + "schedule": crontab(day_of_month=1, hour=1, minute=0), # 每月1日 01:00 UTC+8 +} +``` + +> ⚠️ **注意**:每张分区表均保留一个 `_default` 默认分区作为兜底,防止任务失败时写入报错。`_default` 分区数据应在运维 SOP 中周期性检查(有数据则说明提前建分区失败)。 + --- ## 九、必须在开发启动前明确的数据架构决策 diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md b/Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md index a7fe5c94..486c0fcc 100644 --- a/Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md +++ b/Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md @@ -107,6 +107,7 @@ Staff (员工) | deleted_at | TIMESTAMPTZ | | 软删除 | | created_by | UUID | FK→staff, SET NULL | | | updated_by | UUID | FK→staff, SET NULL | | +| version | INTEGER | NOT NULL DEFAULT 1 | 乐观锁版本号;每次 UPDATE +1;应用层检测 0 行受影响时抛 ConflictError | **关键索引**: ```sql diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md b/Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md index 74992e7e..783c55dc 100644 --- a/Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md +++ b/Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md @@ -204,6 +204,7 @@ CREATE INDEX idx_schools_name_trgm ON schools USING gin(name gin_trgm_ops); | deleted_at | TIMESTAMPTZ | | 软删除 | | created_by | UUID | FK→staff, SET NULL | | | updated_by | UUID | FK→staff, SET NULL | | +| version | INTEGER | NOT NULL DEFAULT 1 | 乐观锁版本号;每次 UPDATE +1;应用层检测 0 行受影响时抛 ConflictError | **关键索引**: ```sql diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md b/Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md index 27026aba..4b63f700 100644 --- a/Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md +++ b/Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md @@ -190,13 +190,39 @@ class UserAccount(AbstractBaseUser): | 字段名 | 类型 | 约束 | 默认值 | 说明 | |--------|------|------|--------|------| -| `id` | `BIGSERIAL` | `PRIMARY KEY` | — | 自增主键 | +| `id` | `BIGSERIAL` | `NOT NULL` | — | 自增主键(与 attempted_at 组成复合 PK) | +| `attempted_at` | `TIMESTAMPTZ` | `NOT NULL` | `NOW()` | 尝试时间(分区键,必须在复合主键中) | | `username` | `VARCHAR(30)` | `NOT NULL` | — | 尝试登录的用户名(冗余存储,即使账号不存在也记录) | | `ip_address` | `INET` | `NOT NULL` | — | 来源 IP 地址(支持 IPv4/IPv6) | | `user_agent` | `TEXT` | `NULL` | `NULL` | 客户端 User-Agent(Electron 版本信息) | | `success` | `BOOLEAN` | `NOT NULL` | — | 是否登录成功 | | `failure_reason` | `VARCHAR(30)` | `NULL` | `NULL` | 失败原因;可选值见下方枚举 | -| `attempted_at` | `TIMESTAMPTZ` | `NOT NULL` | `NOW()` | 尝试时间 | + +> ⚠️ **分区说明**:`login_attempts` 为高写入审计表,采用 `PARTITION BY RANGE (attempted_at)` 按月分区。主键为 `(id, attempted_at)` 复合主键(分区表规范:主键必须包含分区键)。 + +**DDL**: +```sql +CREATE TABLE login_attempts ( + id BIGSERIAL NOT NULL, + attempted_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 分区键 + username VARCHAR(30) NOT NULL, + ip_address INET NOT NULL, + user_agent TEXT, + success BOOLEAN NOT NULL, + failure_reason VARCHAR(30) + CHECK (failure_reason IS NULL OR failure_reason IN ( + 'wrong_password','wrong_captcha','account_locked', + 'account_disabled','tenant_not_found' + )), + PRIMARY KEY (id, attempted_at) -- 分区表主键必须包含分区键 +) PARTITION BY RANGE (attempted_at); + +CREATE TABLE login_attempts_2026_04 PARTITION OF login_attempts + FOR VALUES FROM ('2026-04-01') TO ('2026-05-01'); +CREATE TABLE login_attempts_2026_05 PARTITION OF login_attempts + FOR VALUES FROM ('2026-05-01') TO ('2026-06-01'); +CREATE TABLE login_attempts_default PARTITION OF login_attempts DEFAULT; +``` **`failure_reason` 枚举值**: diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL_PERMISSION.md b/Project/fonrey/DATA_MODEL/DATA_MODEL_PERMISSION.md index 06c19e84..857c43a3 100644 --- a/Project/fonrey/DATA_MODEL/DATA_MODEL_PERMISSION.md +++ b/Project/fonrey/DATA_MODEL/DATA_MODEL_PERMISSION.md @@ -988,7 +988,8 @@ CREATE INDEX idx_data_scopes_expires ON staff_data_scopes(expires_at) WHERE expi -- permission_change_logs (append-only, no deleted_at) CREATE TABLE permission_change_logs ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + id UUID NOT NULL DEFAULT gen_random_uuid(), + operated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 分区键(原 operated_at 前置) target_type VARCHAR(30) NOT NULL CHECK (target_type IN ('role','role_permission','staff_role','staff_override','staff_scope')), target_id UUID NOT NULL, @@ -1003,8 +1004,15 @@ CREATE TABLE permission_change_logs ( operator_ip INET, user_agent TEXT, reason TEXT NOT NULL DEFAULT '', - operated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() -); + + PRIMARY KEY (id, operated_at) -- 分区表主键必须包含分区键 +) PARTITION BY RANGE (operated_at); + +CREATE TABLE permission_change_logs_2026_04 PARTITION OF permission_change_logs + FOR VALUES FROM ('2026-04-01') TO ('2026-05-01'); +CREATE TABLE permission_change_logs_2026_05 PARTITION OF permission_change_logs + FOR VALUES FROM ('2026-05-01') TO ('2026-06-01'); +CREATE TABLE permission_change_logs_default PARTITION OF permission_change_logs DEFAULT; CREATE INDEX idx_perm_log_staff ON permission_change_logs(staff_id, operated_at DESC) WHERE staff_id IS NOT NULL; CREATE INDEX idx_perm_log_role ON permission_change_logs(role_id, operated_at DESC) WHERE role_id IS NOT NULL; CREATE INDEX idx_perm_log_target ON permission_change_logs(target_type, target_id, operated_at DESC); diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md b/Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md index cef486a9..7d373d55 100644 --- a/Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md +++ b/Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md @@ -310,7 +310,10 @@ CREATE TABLE properties ( updated_by UUID REFERENCES staff(id) ON DELETE SET NULL, -- ── 全文检索向量 ── - search_vector TSVECTOR + search_vector TSVECTOR, + + -- ── 乐观锁 ── + version INTEGER NOT NULL DEFAULT 1 -- 每次 UPDATE 必须 +1;应用层检测 0 行受影响时抛 ConflictError ); -- ── 索引策略 ── @@ -520,7 +523,8 @@ CREATE INDEX idx_price_changes_time ON price_changes(property_id, changed_at DES -- ============================================================ CREATE TABLE follow_logs ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + id UUID NOT NULL DEFAULT gen_random_uuid(), + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 分区键,必须在最前声明 property_id UUID NOT NULL REFERENCES properties(id) ON DELETE CASCADE, log_type VARCHAR(30) NOT NULL @@ -554,9 +558,19 @@ CREATE TABLE follow_logs ( -- 是否可删除(sensitive_view = FALSE,合规强制) is_deletable BOOLEAN NOT NULL DEFAULT TRUE, - created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), - deleted_at TIMESTAMPTZ -- 仅 is_deletable=TRUE 时可软删 -); + deleted_at TIMESTAMPTZ, -- 仅 is_deletable=TRUE 时可软删 + + PRIMARY KEY (id, created_at) -- 分区表主键必须包含分区键 +) PARTITION BY RANGE (created_at); + +-- ── 按月自动建分区(由 partition_maintenance_task Celery 任务维护)── +-- 示例:初始建立当前月 + 下一个月的分区 +CREATE TABLE follow_logs_2026_04 PARTITION OF follow_logs + FOR VALUES FROM ('2026-04-01') TO ('2026-05-01'); +CREATE TABLE follow_logs_2026_05 PARTITION OF follow_logs + FOR VALUES FROM ('2026-05-01') TO ('2026-06-01'); +-- 默认分区:兜底,防止超出已建分区范围导致写入失败 +CREATE TABLE follow_logs_default PARTITION OF follow_logs DEFAULT; -- 时间线展示(核心) CREATE INDEX idx_follow_logs_property_time ON follow_logs(property_id, created_at DESC) @@ -798,7 +812,8 @@ CREATE INDEX idx_survey_photos_category ON survey_photos(survey_id, category); -- ============================================================ CREATE TABLE property_photos ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + id UUID NOT NULL DEFAULT gen_random_uuid(), + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 分区键 property_id UUID NOT NULL REFERENCES properties(id) ON DELETE CASCADE, category VARCHAR(20) NOT NULL @@ -817,10 +832,17 @@ CREATE TABLE property_photos ( is_cover BOOLEAN NOT NULL DEFAULT FALSE, sort_order SMALLINT NOT NULL DEFAULT 0, - created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), - created_by UUID REFERENCES staff(id) ON DELETE SET NULL -); + created_by UUID REFERENCES staff(id) ON DELETE SET NULL, + + PRIMARY KEY (id, created_at) -- 分区表主键必须包含分区键 +) PARTITION BY RANGE (created_at); + +CREATE TABLE property_photos_2026_04 PARTITION OF property_photos + FOR VALUES FROM ('2026-04-01') TO ('2026-05-01'); +CREATE TABLE property_photos_2026_05 PARTITION OF property_photos + FOR VALUES FROM ('2026-05-01') TO ('2026-06-01'); +CREATE TABLE property_photos_default PARTITION OF property_photos DEFAULT; CREATE INDEX idx_property_photos_property ON property_photos(property_id); CREATE INDEX idx_property_photos_cover ON property_photos(property_id) diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md b/Project/fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md index 035c31cc..d1c248a8 100644 --- a/Project/fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md +++ b/Project/fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md @@ -241,7 +241,8 @@ CREATE INDEX idx_ip_whitelist_active ON public.ip_whitelist(cidr) WHERE is_activ -- 平台操作审计日志(所有写操作 + 高危操作,无 deleted_at,无 UPDATE) CREATE TABLE public.platform_audit_logs ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + id UUID NOT NULL DEFAULT gen_random_uuid(), + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 分区键 operator_id UUID, -- 管理员 ID;NULL 表示系统自动操作 operator_name VARCHAR(100), -- 快照(防止账号删除后失去溯源) action_type VARCHAR(50) NOT NULL, @@ -257,9 +258,16 @@ CREATE TABLE public.platform_audit_logs ( CHECK (result IN ('SUCCESS','FAILED')), error_message TEXT, ip_address INET, - created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() - -- 无 deleted_at,无 UPDATE;建议按月 RANGE 分区 -); + -- 无 deleted_at,无 UPDATE;按月 RANGE 分区 + + PRIMARY KEY (id, created_at) -- 分区表主键必须包含分区键 +) PARTITION BY RANGE (created_at); + +CREATE TABLE public.platform_audit_logs_2026_04 PARTITION OF public.platform_audit_logs + FOR VALUES FROM ('2026-04-01') TO ('2026-05-01'); +CREATE TABLE public.platform_audit_logs_2026_05 PARTITION OF public.platform_audit_logs + FOR VALUES FROM ('2026-05-01') TO ('2026-06-01'); +CREATE TABLE public.platform_audit_logs_default PARTITION OF public.platform_audit_logs DEFAULT; CREATE INDEX idx_audit_logs_operator ON public.platform_audit_logs(operator_id, created_at DESC); CREATE INDEX idx_audit_logs_action ON public.platform_audit_logs(action_type, created_at DESC); diff --git a/Project/fonrey/PRD/TASK_AGENT_READY.md b/Project/fonrey/PRD/TASK_AGENT_READY.md index 4e266f53..1523d140 100644 --- a/Project/fonrey/PRD/TASK_AGENT_READY.md +++ b/Project/fonrey/PRD/TASK_AGENT_READY.md @@ -201,6 +201,8 @@ - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 账号密码登录 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/登录管理/登录_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -218,6 +220,8 @@ - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 账号密码登录 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/登录管理/登录_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -276,7 +280,8 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 多租户识别 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -293,6 +298,8 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 多租户识别 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -351,7 +358,8 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - Token 管理/会话超时 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -368,6 +376,8 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - Token 管理/会话超时 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -428,6 +438,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘信息管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -445,6 +458,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘信息管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -508,6 +524,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘列表/楼盘详情 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -525,6 +544,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘列表/楼盘详情 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -583,7 +605,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 区域管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -600,6 +624,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 区域管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -659,6 +686,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 录入住宅(二手出售/出租) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/新增房源_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -676,6 +706,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 录入住宅(二手出售/出租) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/新增房源_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -735,6 +768,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源列表(二手&租赁) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -752,6 +788,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源列表(二手&租赁) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -811,6 +850,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源详情页 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -828,6 +870,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源详情页 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -886,7 +931,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 跟进记录(全部/写入/修改/其他) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -903,6 +950,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 跟进记录(全部/写入/修改/其他) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -961,7 +1011,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 图片管理(相册上传/分类/排序) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -978,6 +1030,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 图片管理(相册上传/分类/排序) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1036,7 +1091,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 业主联系人管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1053,6 +1110,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 业主联系人管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1111,7 +1171,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 价格调整(调价/调价记录) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1128,6 +1190,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 价格调整(调价/调价记录) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1186,7 +1251,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源状态变更(在售/暂缓/成交/下架) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1203,6 +1270,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源状态变更(在售/暂缓/成交/下架) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1262,6 +1332,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 1:经纪人录入新私客;5.2 录入私客 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/新增客源_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1279,6 +1353,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 1:经纪人录入新私客;5.2 录入私客 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/新增客源_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1338,6 +1416,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2/3/4:经纪人查看与筛选私客列表;5.1 客源列表 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1355,6 +1437,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2/3/4:经纪人查看与筛选私客列表;5.1 客源列表 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1414,6 +1500,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:列表批量操作;5.1.3 批量操作 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1431,6 +1521,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:列表批量操作;5.1.3 批量操作 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1490,6 +1584,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 6:经纪人查看私客详情页;Story 15:经纪人查看客源信息概览面板 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1507,6 +1605,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 6:经纪人查看私客详情页;Story 15:经纪人查看客源信息概览面板 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1566,6 +1668,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 7:经纪人查看与编辑需求信息 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1583,6 +1689,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 7:经纪人查看与编辑需求信息 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1642,6 +1752,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 8:经纪人写入与查看跟进记录 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1659,6 +1773,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 8:经纪人写入与查看跟进记录 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1718,6 +1836,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 9:经纪人管理带看记录 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1735,6 +1857,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 9:经纪人管理带看记录 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1794,6 +1920,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 23:经纪人管理客源联系人 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1811,6 +1941,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 23:经纪人管理客源联系人 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1870,6 +2004,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 17:经纪人修改客源等级 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1887,6 +2025,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 17:经纪人修改客源等级 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1946,6 +2088,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 18:经纪人修改客源状态 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1963,6 +2109,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 18:经纪人修改客源状态 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2022,6 +2172,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 19:经纪人手动将私客转为公客 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2039,6 +2193,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 19:经纪人手动将私客转为公客 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2098,6 +2256,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 20:经纪人将私客转为成交客 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2115,6 +2277,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 20:经纪人将私客转为成交客 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2174,6 +2340,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 21:经纪人将客源标记为无效 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2191,6 +2361,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 21:经纪人将客源标记为无效 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2250,6 +2424,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 14:经纪人编辑客源信息 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/编辑客源_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2267,6 +2445,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 14:经纪人编辑客源信息 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/编辑客源_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2326,6 +2508,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 24:经纪人管理客源相关员工 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2343,6 +2529,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 24:经纪人管理客源相关员工 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2401,7 +2591,10 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - 关键业务规则:私客自动转公 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2418,6 +2611,10 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - 关键业务规则:私客自动转公 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2476,7 +2673,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:顶部重复检测提示;关键业务规则:私客手机号唯一性 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2493,6 +2693,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:顶部重复检测提示;关键业务规则:私客手机号唯一性 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3387,7 +3591,8 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 短信验证码登录 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3404,6 +3609,8 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 短信验证码登录 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3462,7 +3669,8 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 密码重置 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3479,6 +3687,8 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 密码重置 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3537,7 +3747,8 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 记住登录状态 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3554,6 +3765,8 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 记住登录状态 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3612,7 +3825,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘照片管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3629,6 +3844,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘照片管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3687,7 +3905,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘价格走势 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3704,6 +3924,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘价格走势 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3762,7 +3985,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 周边配套(学校管理) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3779,6 +4004,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 周边配套(学校管理) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3837,7 +4065,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源维护完成度(诊断面板) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3854,6 +4084,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源维护完成度(诊断面板) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3912,7 +4145,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 敏感信息跟进(查看权限控制) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3929,6 +4164,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 敏感信息跟进(查看权限控制) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3987,7 +4225,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 附件管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4004,6 +4244,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 附件管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4062,7 +4305,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 市场报盘 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4079,6 +4324,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 市场报盘 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4137,7 +4385,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 价格解读 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4154,6 +4404,9 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 价格解读 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4213,6 +4466,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 11:经纪人使用二手配房功能推荐房源 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4230,6 +4487,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 11:经纪人使用二手配房功能推荐房源 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4289,6 +4550,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 10:经纪人查看客源解读 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4306,6 +4571,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 10:经纪人查看客源解读 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4365,6 +4634,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 16:经纪人收藏客源至私客收藏夹 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4382,6 +4655,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 16:经纪人收藏客源至私客收藏夹 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4441,6 +4718,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 22:经纪人编辑客源基础信息(快捷入口) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4458,6 +4739,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 22:经纪人编辑客源基础信息(快捷入口) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4516,7 +4801,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 25:经纪人查看客源操作日志 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -4533,6 +4821,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 25:经纪人查看客源操作日志 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -5503,12 +5795,14 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 录入别墅/商铺/商住/写字楼/其他 - DATA_MODEL:N/A -- UI:N/A - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/API_CONTRACT.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` ```text 你是 OpenCode 编程代理。请在当前仓库根目录完成下面任务。 @@ -5524,6 +5818,9 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/API_CONTRACT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` 【必须遵循项目约束】 - 技术栈固定:Django + HTMX + Alpine.js + Tailwind + PostgreSQL + Redis + Celery + R2。禁止引入 React/Vue。 - 必须保持多租户边界:tenant 路由在 config/urls.py,public 路由在 config/urls_public.py。 @@ -5577,12 +5874,14 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 全部商铺列表/全部写字楼列表 - DATA_MODEL:N/A -- UI:N/A - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/API_CONTRACT.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` ```text 你是 OpenCode 编程代理。请在当前仓库根目录完成下面任务。 @@ -5598,6 +5897,9 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/API_CONTRACT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` 【必须遵循项目约束】 - 技术栈固定:Django + HTMX + Alpine.js + Tailwind + PostgreSQL + Redis + Celery + R2。禁止引入 React/Vue。 - 必须保持多租户边界:tenant 路由在 config/urls.py,public 路由在 config/urls_public.py。 @@ -5651,12 +5953,14 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 应用数据标准 - DATA_MODEL:N/A -- UI:N/A - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/API_CONTRACT.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` ```text 你是 OpenCode 编程代理。请在当前仓库根目录完成下面任务。 @@ -5672,6 +5976,9 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/API_CONTRACT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` 【必须遵循项目约束】 - 技术栈固定:Django + HTMX + Alpine.js + Tailwind + PostgreSQL + Redis + Celery + R2。禁止引入 React/Vue。 - 必须保持多租户边界:tenant 路由在 config/urls.py,public 路由在 config/urls_public.py。 @@ -5725,7 +6032,10 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 12:经纪人查看与筛选公客列表 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -5742,6 +6052,10 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 12:经纪人查看与筛选公客列表 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -5800,7 +6114,10 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 13:经纪人查看成交客列表 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -5817,6 +6134,10 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 13:经纪人查看成交客列表 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -5875,7 +6196,10 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 5:经纪人管理暂缓私客 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -5892,6 +6216,10 @@ electron-builder 输出 NSIS .exe 安装包和便携版 .zip;安装包经EV证 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 5:经纪人管理暂缓私客 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` diff --git a/Project/fonrey/PRD/TASK_AGENT_READY_P0.md b/Project/fonrey/PRD/TASK_AGENT_READY_P0.md index 728c99d9..a03b97a7 100644 --- a/Project/fonrey/PRD/TASK_AGENT_READY_P0.md +++ b/Project/fonrey/PRD/TASK_AGENT_READY_P0.md @@ -230,6 +230,8 @@ - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 账号密码登录 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/登录管理/登录_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -247,6 +249,8 @@ - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 账号密码登录 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/登录管理/登录_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -305,7 +309,8 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 多租户识别 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -322,6 +327,8 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - 多租户识别 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -380,7 +387,8 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - Token 管理/会话超时 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -397,6 +405,8 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/登录管理/用户登录管理模块PRD.md` - Token 管理/会话超时 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_LOGIN.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_账号密码_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/登录_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/登录管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1293,6 +1303,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘信息管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1310,6 +1323,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘信息管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1373,6 +1389,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘列表/楼盘详情 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1390,6 +1409,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 楼盘列表/楼盘详情 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/楼盘管理/楼盘列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1448,7 +1470,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 区域管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1465,6 +1489,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/楼盘管理模块PRD.md` - 区域管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_COMPLEX.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/区域管理_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/楼盘详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/楼盘管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1524,6 +1551,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 录入住宅(二手出售/出租) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/新增房源_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1541,6 +1571,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 录入住宅(二手出售/出租) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/新增房源_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1600,6 +1633,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源列表(二手&租赁) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1617,6 +1653,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源列表(二手&租赁) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1676,6 +1715,9 @@ - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源详情页 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1693,6 +1735,9 @@ - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源详情页 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/房源管理/房源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1751,7 +1796,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 跟进记录(全部/写入/修改/其他) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1768,6 +1815,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 跟进记录(全部/写入/修改/其他) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1826,7 +1876,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 图片管理(相册上传/分类/排序) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1843,6 +1895,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 图片管理(相册上传/分类/排序) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1901,7 +1956,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 业主联系人管理 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1918,6 +1975,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 业主联系人管理 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1976,7 +2036,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 价格调整(调价/调价记录) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -1993,6 +2055,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 价格调整(调价/调价记录) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2051,7 +2116,9 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源状态变更(在售/暂缓/成交/下架) - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2068,6 +2135,9 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` - 房源状态变更(在售/暂缓/成交/下架) - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_PROPERTY.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增房源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/房源详情_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/房源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2127,6 +2197,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 1:经纪人录入新私客;5.2 录入私客 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/新增客源_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2144,6 +2218,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 1:经纪人录入新私客;5.2 录入私客 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/新增客源_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2203,6 +2281,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2/3/4:经纪人查看与筛选私客列表;5.1 客源列表 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2220,6 +2302,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2/3/4:经纪人查看与筛选私客列表;5.1 客源列表 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2279,6 +2365,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:列表批量操作;5.1.3 批量操作 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2296,6 +2386,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:列表批量操作;5.1.3 批量操作 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源列表_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2355,6 +2449,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 6:经纪人查看私客详情页;Story 15:经纪人查看客源信息概览面板 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2372,6 +2470,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 6:经纪人查看私客详情页;Story 15:经纪人查看客源信息概览面板 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2431,6 +2533,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 7:经纪人查看与编辑需求信息 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2448,6 +2554,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 7:经纪人查看与编辑需求信息 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2507,6 +2617,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 8:经纪人写入与查看跟进记录 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2524,6 +2638,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 8:经纪人写入与查看跟进记录 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2583,6 +2701,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 9:经纪人管理带看记录 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2600,6 +2722,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 9:经纪人管理带看记录 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2659,6 +2785,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 23:经纪人管理客源联系人 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2676,6 +2806,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 23:经纪人管理客源联系人 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2735,6 +2869,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 17:经纪人修改客源等级 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2752,6 +2890,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 17:经纪人修改客源等级 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2811,6 +2953,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 18:经纪人修改客源状态 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2828,6 +2974,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 18:经纪人修改客源状态 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2887,6 +3037,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 19:经纪人手动将私客转为公客 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2904,6 +3058,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 19:经纪人手动将私客转为公客 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2963,6 +3121,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 20:经纪人将私客转为成交客 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -2980,6 +3142,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 20:经纪人将私客转为成交客 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3039,6 +3205,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 21:经纪人将客源标记为无效 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3056,6 +3226,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 21:经纪人将客源标记为无效 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3115,6 +3289,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 14:经纪人编辑客源信息 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/编辑客源_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3132,6 +3310,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 14:经纪人编辑客源信息 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/编辑客源_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3191,6 +3373,10 @@ - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 24:经纪人管理客源相关员工 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3208,6 +3394,10 @@ - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 24:经纪人管理客源相关员工 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` - 参考UI_Design文档:`Project/fonrey/UI_DESIGN/客源管理/客源详情_UI.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3266,7 +3456,10 @@ **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - 关键业务规则:私客自动转公 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3283,6 +3476,10 @@ 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - 关键业务规则:私客自动转公 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3341,7 +3538,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 **引用文档** - - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:顶部重复检测提示;关键业务规则:私客手机号唯一性 - - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` -- UI:N/A +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- - 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` @@ -3358,6 +3558,10 @@ Celery Beat 定时任务每日凌晨执行;超过运营配置天数(如30天 【输入文档(必须阅读)】 - 参考PRD文档:`Project/fonrey/PRD/客源管理/客源管理模块PRD.md` - Story 2:顶部重复检测提示;关键业务规则:私客手机号唯一性 - 参考DATA_MODEL文档:`Project/fonrey/DATA_MODEL/DATA_MODEL_CLIENT.md` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源列表_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/新增客源_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/客源详情_UI.html` +- 参考UI静态页面:`Project/fonrey/UI_DESIGN/编辑客源_UI.html` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/客源管理技术方案.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/TECH_STACK.md` - 参考TECH_STACK文档:`Project/fonrey/TECH_STACK/测试规范.md` diff --git a/Project/fonrey/REVIEW/REVIEW_全局_2026-04-28.md b/Project/fonrey/REVIEW/REVIEW_全局_2026-04-28.md index c4b5eb77..4e03c6e4 100644 --- a/Project/fonrey/REVIEW/REVIEW_全局_2026-04-28.md +++ b/Project/fonrey/REVIEW/REVIEW_全局_2026-04-28.md @@ -31,18 +31,18 @@ ### 核心问题摘录(Top 10) -| # | 等级 | 编号 | 问题 | 维度 | 状态 | -|---|------|------|------|------|------| -| 1 | 🔴 | **B-05** | 主表乐观锁 `version` 字段全量 0 实现:`properties` / `clients` / `complexes` 在 PRD 多人协作场景中是核心,DDL 无并发控制 | Data↔PRD | 🆕 升 Blocker(持续 3 次未修) | -| 2 | 🔴 | **B-06** | 高写入表分区 DDL 仍未落地(M-03 持续 3 次未修):5 张高频表无 `PARTITION BY RANGE` 子句,仅注释"建议月度分区",无法在迁移期补加分区 | Data | 🆕 升 Blocker | -| 3 | 🟠 | **M-11** | KMS / 密钥轮换 SOP 仍未补:`core/encryption.py` 已声明,但主密钥轮换、密钥版本号、加密字段重新封装、应急吊销四类流程在 TECH_STACK 与系统管理 PRD 中均无对应章节 | 安全 | ❌ 持续未修 | -| 4 | 🟠 | **M-12** | Celery 任务 schema 切换缺统一封装:多模块技术方案声明 `tenant_schema_name` 入参,但无 `with_tenant_context` 装饰器或基类抽象,开发期容易漏写导致跨租户脏读 | TECH/多租户 | ⚠️ 部分修复 | -| 5 | 🟠 | **M-13** | R2 路径前缀全局规范不一致:系统管理已规范 `backups/{tenant_schema}/...` `exports/{tenant_schema}/...`,但客源/房源/楼盘模块 R2 路径仍写"`property_photos/...`"无 tenant 前缀模板 | TECH/多租户 | ⚠️ 部分修复 | -| 6 | 🟠 | **M-06** | 客户端发布无签名校验/防降级:`/api/client/updates/latest/` 与 `download_url` 对外公开,仅 SHA256 完整性校验,可被 MITM 投递降级版本(昨日 M-06 未修) | 安全 | ❌ 持续未修 | -| 7 | 🟠 | **M-14** | ORM Manager / QuerySet 数据范围统一封装规范缺失:`DATA_MODEL_PERMISSION.md:143-145` 的 `ScopeQueryBuilder` 只是 helper,未规定"所有业务 QuerySet 必须经过 Scope 包装"的强制约束,开发期容易漏权限校验 | 安全/Data | 🆕 新增 | -| 8 | 🟠 | **M-05** | 89k 数据 < 2 秒列表查询 NFR 仍无 p95/EXPLAIN/性能基准测试任务(昨日 M-05 未修) | NFR↔TECH↔测试 | ❌ 持续未修 | -| 9 | 🟠 | **M-09** | UI_SYSTEM 复杂组件(虚拟滚动列表、批量操作面板、抽屉表单嵌套规则、文件上传批量、富权限树)规范深度不足;UI_DESIGN 11 份原型仅覆盖客源 + 房源列表,**楼盘/权限/系统配置/组织人事/发布管理 5 大模块全部缺原型** | UI | ⚠️ 部分修复 | -| 10 | 🟡 | **N-01** | ENUMS.md v2.2 已统一,但 PRD 文本中仍混用中文枚举(如客源 PRD 仍写"求购/求租"),需要一次全文档"中文枚举 → ENUMS 锚点链接"替换 | PRD↔Data | 🆕 新增 | +| # | 等级 | 编号 | 问题 | 维度 | 状态 | +| --- | --- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------------------- | +| 1 | 🔴 | **B-05** | 主表乐观锁 `version` 字段全量 0 实现:`properties` / `clients` / `complexes` 在 PRD 多人协作场景中是核心,DDL 无并发控制 | Data↔PRD | 🆕 升 Blocker(持续 3 次未修) | +| 2 | 🔴 | **B-06** | 高写入表分区 DDL 仍未落地(M-03 持续 3 次未修):5 张高频表无 `PARTITION BY RANGE` 子句,仅注释"建议月度分区",无法在迁移期补加分区 | Data | 🆕 升 Blocker | +| 3 | 🟠 | **M-11** | KMS / 密钥轮换 SOP 仍未补:`core/encryption.py` 已声明,但主密钥轮换、密钥版本号、加密字段重新封装、应急吊销四类流程在 TECH_STACK 与系统管理 PRD 中均无对应章节 | 安全 | ❌ 持续未修 | +| 4 | 🟠 | **M-12** | Celery 任务 schema 切换缺统一封装:多模块技术方案声明 `tenant_schema_name` 入参,但无 `with_tenant_context` 装饰器或基类抽象,开发期容易漏写导致跨租户脏读 | TECH/多租户 | ⚠️ 部分修复 | +| 5 | 🟠 | **M-13** | R2 路径前缀全局规范不一致:系统管理已规范 `backups/{tenant_schema}/...` `exports/{tenant_schema}/...`,但客源/房源/楼盘模块 R2 路径仍写"`property_photos/...`"无 tenant 前缀模板 | TECH/多租户 | ⚠️ 部分修复 | +| 6 | 🟠 | **M-06** | 客户端发布无签名校验/防降级:`/api/client/updates/latest/` 与 `download_url` 对外公开,仅 SHA256 完整性校验,可被 MITM 投递降级版本(昨日 M-06 未修) | 安全 | ❌ 持续未修 | +| 7 | 🟠 | **M-14** | ORM Manager / QuerySet 数据范围统一封装规范缺失:`DATA_MODEL_PERMISSION.md:143-145` 的 `ScopeQueryBuilder` 只是 helper,未规定"所有业务 QuerySet 必须经过 Scope 包装"的强制约束,开发期容易漏权限校验 | 安全/Data | 🆕 新增 | +| 8 | 🟠 | **M-05** | 89k 数据 < 2 秒列表查询 NFR 仍无 p95/EXPLAIN/性能基准测试任务(昨日 M-05 未修) | NFR↔TECH↔测试 | ❌ 持续未修 | +| 9 | 🟠 | **M-09** | UI_SYSTEM 复杂组件(虚拟滚动列表、批量操作面板、抽屉表单嵌套规则、文件上传批量、富权限树)规范深度不足;UI_DESIGN 11 份原型仅覆盖客源 + 房源列表,**楼盘/权限/系统配置/组织人事/发布管理 5 大模块全部缺原型** | UI | ⚠️ 部分修复 | +| 10 | 🟡 | **N-01** | ENUMS.md v2.2 已统一,但 PRD 文本中仍混用中文枚举(如客源 PRD 仍写"求购/求租"),需要一次全文档"中文枚举 → ENUMS 锚点链接"替换 | PRD↔Data | 🆕 新增 | ### 风险等级分布 diff --git a/Project/fonrey/TECH_STACK/API_CONTRACT.md b/Project/fonrey/TECH_STACK/API_CONTRACT.md index 15635155..77f244f6 100644 --- a/Project/fonrey/TECH_STACK/API_CONTRACT.md +++ b/Project/fonrey/TECH_STACK/API_CONTRACT.md @@ -267,7 +267,79 @@ Fonrey 优先采用“预签名上传 + 回执提交(commit)”两段式。 --- -## 9. 与模块文档的衔接规则 +## 9. 乐观锁(Optimistic Locking)规范 + +### 9.1 适用场景 + +`properties`、`clients`、`complexes` 三张高竞争表的更新操作(`PUT`/`PATCH`)**MUST** 使用乐观锁并发控制,防止"后写覆盖先写"数据丢失。 + +### 9.2 请求规范 + +客户端发起更新时,MUST 在请求体中携带当前资源版本号: + +```json +{ + "data": { + "sale_price": 180, + "version": 3 + } +} +``` + +> 兼容说明:当前 Fonrey 为内部 Web / Electron 客户端,采用请求体传递 `version` 字段,无需 `If-Match` Header(避免 HTMX 额外配置复杂度)。未来若提供对外开放 REST API,可补充支持 `If-Match: ` Header 形式。 + +### 9.3 服务端执行规范 + +服务端执行 UPDATE 时 MUST 同时匹配 `version`,并将 `version` +1: + +```sql +UPDATE properties +SET sale_price = :sale_price, + version = version + 1, + updated_at = NOW(), + updated_by = :operator_id +WHERE id = :id + AND version = :client_version -- 乐观锁匹配 + AND deleted_at IS NULL; +``` + +- 若受影响行数 **= 1**:更新成功,返回 `200` +- 若受影响行数 **= 0**:抛 `ConflictError`,返回 `409` + code `*_VERSION_CONFLICT` + +### 9.4 冲突响应规范 + +```json +{ + "ok": false, + "error": "已被他人修改,请刷新重试", + "code": "PROPERTY_VERSION_CONFLICT", + "details": { + "field": "version", + "your_version": 3, + "hint": "请重新获取最新数据后再提交" + }, + "meta": { + "request_id": "uuid", + "timestamp": "2026-04-28T10:00:00+08:00" + } +} +``` + +- HTTP 状态码 MUST 为 `409` +- `code` 格式:`_VERSION_CONFLICT`(如 `PROPERTY_VERSION_CONFLICT` / `CLIENT_VERSION_CONFLICT` / `COMPLEX_VERSION_CONFLICT`) +- 前端 SHOULD 展示 Toast:**「已被他人修改,请刷新重试」**,并自动触发资源重新加载 + +### 9.5 Check List + +- [ ] `version` 字段在 GET 响应中 MUST 返回(供后续 PUT/PATCH 携带) +- [ ] 服务层 update 方法 MUST 校验受影响行数,0 行时抛 `ConflictError` +- [ ] 前端表单 MUST 在隐藏域中保存 `version`,随 PUT/PATCH 提交 +- [ ] HTMX 场景:冲突时后端 MUST 返回 `HX-Trigger: {"toast:error":"已被他人修改,请刷新重试"}` +- [ ] 测试 MUST 覆盖:并发两次更新同版本,第二次 MUST 返回 `409` + +--- + +## 10. 与模块文档的衔接规则 - 各模块技术方案中的“四、API 设计原则”“六、关键 API 规范”“十二、错误码建议”必须引用本文件 - 模块文档可补充模块特有 code 与字段,但不得与本规范冲突 diff --git a/Project/fonrey/TECH_STACK/TECH_STACK.md b/Project/fonrey/TECH_STACK/TECH_STACK.md index 25450f31..55e5ce12 100644 --- a/Project/fonrey/TECH_STACK/TECH_STACK.md +++ b/Project/fonrey/TECH_STACK/TECH_STACK.md @@ -2,7 +2,7 @@ > **For AI assistants**: Read this entire file before writing any code. All decisions here are final. Do not suggest alternatives unless asked. -**版本**: 2.2 | **最后更新**: 2026-04-27 +**版本**: 2.3 | **最后更新**: 2026-04-29 **定位**: 本文档是 Fonrey 项目技术栈的**总索引**。所有跨模块的技术决策、版本约束、目录规范、禁止项在此定稿;**单一模块的具体技术方案**(数据模型、服务层、HTMX 交互、Celery 任务等)见各自子文档(见 §9 索引)。 --- @@ -94,6 +94,9 @@ apps/property/ - ❌ 客户端内嵌业务逻辑或本地数据库(壳应用原则) - ❌ 跨租户 SQL 查询(必须经 `django-tenants` 中间件切换 Schema) - ❌ 在代码中硬编码密钥、Tenant ID、URL +- ❌ Celery 任务内手写 `connection.set_schema(...)`(必须用 `@tenant_task` 装饰器,见 §12) +- ❌ 业务视图/服务层直接调用 `.objects.filter/get/all(...)`(必须用 `Model.scoped(staff)`,见 §14) +- ❌ R2 对象 key 使用原始文件名或 tenant_id(UUID)前缀(必须按 §13 路径模板) --- @@ -238,4 +241,212 @@ Fonrey 采用 AI vibe coding 模式开发,测试是保证每日迭代质量的 - 测试规范变更须同步更新 §10 关键结论,完整细节在 [`测试规范.md`](./测试规范.md) 中维护 - 15 章节统一模板发生变更时,须先更新 §9 标准章节骨架,再同步各模块文档 +--- + +## 12. Celery 多租户规范(M-12) + +> **For AI assistants**: Every Celery task that touches tenant data MUST use the `@tenant_task` decorator defined here. No exceptions. + +### 12.1 背景与风险 + +多模块技术方案均声明 Celery 任务签名带 `tenant_schema_name: str`,但 **缺乏统一封装**。 +Celery worker 复用进程池,相邻任务若未正确切换 `search_path`,会产生 **跨租户脏读/脏写**,且不报错。 + +### 12.2 `@tenant_task` 装饰器规范 + +位置:`core/celery_utils.py`(由架构师统一提供,禁止各模块自己实现) + +```python +# core/celery_utils.py +import functools +import structlog +from django_tenants.utils import schema_context +from celery import current_task + +logger = structlog.get_logger(__name__) + +def tenant_task(schema_arg: str = "tenant_schema_name"): + """ + 装饰器:在 Celery 任务执行前自动切换租户 Schema,结束/异常后还原为 public。 + + 使用方式: + @shared_task + @tenant_task(schema_arg="tenant_schema_name") + def export_properties(tenant_schema_name: str, ...): + ... # 此处 search_path 已切换到目标 schema + """ + def decorator(func): + @functools.wraps(func) + def wrapper(*args, **kwargs): + schema = kwargs.get(schema_arg) + if not schema: + # 位置参数兼容:尝试从 args 中读取(按函数签名顺序) + import inspect + sig = inspect.signature(func) + params = list(sig.parameters.keys()) + if schema_arg in params: + idx = params.index(schema_arg) + schema = args[idx] if idx < len(args) else None + if not schema: + raise ValueError( + f"[tenant_task] '{schema_arg}' 参数缺失,任务 {func.__name__} 拒绝执行" + ) + log = logger.bind(task=func.__name__, task_id=current_task.request.id, schema=schema) + log.info("tenant_task.start") + try: + with schema_context(schema): + result = func(*args, **kwargs) + log.info("tenant_task.success") + return result + except Exception as exc: + log.error("tenant_task.error", exc=str(exc)) + raise + return wrapper + return decorator +``` + +### 12.3 强制约束 + +| 约束 | 说明 | +|---|---| +| **所有业务 Celery 任务** 必须使用 `@tenant_task` | 包括导出、图片处理、智能配房、分区维护任务 | +| 任务签名 **必须含 `tenant_schema_name: str`** 形参 | 位置或关键字均可,`schema_arg` 参数可自定义名称 | +| 装饰器顺序:先 `@shared_task`,后 `@tenant_task` | 确保 Celery 正常注册任务名 | +| **禁止** 在任务内部手写 `connection.set_schema(...)` | 统一走装饰器,禁止散落手写 | +| 平台级无租户任务(如 `partition_maintenance_task`)| 直接 `with schema_context(target_schema):` 循环,不需要此装饰器 | + +### 12.4 测试补充规范 + +- Celery 任务测试(`CELERY_TASK_ALWAYS_EAGER = True`)**必须**断言 `schema_context` 被以目标 schema 调用 +- 可用 `unittest.mock.patch("core.celery_utils.schema_context")` 拦截,断言 `call_args` +- 反例测试:传入空 `tenant_schema_name` 时,任务必须抛出 `ValueError`,不得静默执行 + +--- + +## 13. R2 对象存储路径规范(M-13) + +> **For AI assistants**: All R2 object keys MUST follow the template table below. Never invent custom prefixes. + +### 13.1 路径模板表 + +| 资源类型 | Key 模板 | 访问方式 | TTL / 生命周期 | +|---|---|---|---| +| **客户端发布包** | `releases/system/{version}/{filename}` | public-read | 永久(不自动删除) | +| **租户备份** | `backups/{tenant_schema}/{record_id}.tar.gz` | signed URL only | 90 天自动删除 | +| **租户导出** | `exports/{tenant_schema}/{task_id}.zip` | signed URL 24h | 7 天自动删除 | +| **房源图片** | `media/{tenant_schema}/property/{property_id}/{photo_id}.{ext}` | signed URL | 永久(随物理删除清理) | +| **跟进附件** | `media/{tenant_schema}/follow/{log_id}/{idx}.{ext}` | signed URL | 90 天自动删除 | +| **客源附件** | `media/{tenant_schema}/client/{client_id}/{idx}.{ext}` | signed URL | 永久(随物理删除清理) | +| **审计归档** | `exports/audit/{task_id}.csv` | signed URL only | 2 年(合规保留) | + +### 13.2 关键约束 + +- 路径中 **禁止使用 `tenant_id`(UUID)**,统一用 `tenant_schema_name`(字符串),便于跨环境迁移与 bucket policy 配置 +- `{ext}` 统一小写(`jpg` / `png` / `webp`),禁止 `.JPG` +- 文件名仅用 UUID / 整数索引,**禁止使用原始文件名**(防路径注入) +- Signed URL 生成统一通过 `core/storage.py` 的 `generate_presigned_url(key, expires_in)` 封装 + +### 13.3 Bucket Policy 摘要 + +| Prefix | Policy | 说明 | +|---|---|---| +| `releases/system/` | public-read | 客户端更新包,CDN 加速 | +| `media/` | 无公开读,仅 signed | 所有租户媒体文件必须签名访问 | +| `backups/` | 无公开读,仅 signed | 备份包,严禁公开 | +| `exports/` | 无公开读,仅 signed | 导出包,签名 URL 有效期按上表 | + +### 13.4 生命周期规则(R2 Object Lifecycle) + +在 Cloudflare R2 控制台/API 配置以下规则: + +``` +Rule 1: backups/ prefix → Delete after 90 days +Rule 2: exports/{tenant}/ → Delete after 7 days +Rule 3: follow/ in media/ → Delete after 90 days (与 follow_logs 分区归档对齐) +Rule 4: exports/audit/ → Delete after 730 days (2 年合规保留) +``` + +--- + +## 14. ORM 数据范围强制规范(M-14) + +> **For AI assistants**: Never use `Model.objects.filter(...)` directly in views or services. Always go through `scoped(staff)`. + +### 14.1 背景 + +`DATA_MODEL/DATA_MODEL_PERMISSION.md` 已实现 `ScopeQueryBuilder`,但未强制约束使用入口。 +模块技术方案 view 示例直接使用 `Property.objects.filter(...)`,可绕过权限控制。 + +### 14.2 强制规范 + +**所有业务 Model 必须暴露 `scoped(staff)` 入口,隐藏 `objects` Manager。** + +```python +# core/models/scoped.py +from django.db import models + +class ScopedManager(models.Manager): + """ + 业务 Model 统一 Manager。 + 直接调用 Model.objects 将报错,强制使用 Model.scoped(staff)。 + """ + def get_queryset(self): + raise RuntimeError( + f"[ScopedManager] 禁止直接调用 {self.model.__name__}.objects。" + f"请使用 {self.model.__name__}.scoped(staff) 经权限范围过滤。" + ) + + def scoped(self, staff): + """ + 返回经 ScopeQueryBuilder 过滤后的 QuerySet。 + staff: 当前登录员工实例(含角色、org_unit、权限范围) + """ + from apps.permission.scope import ScopeQueryBuilder + return ScopeQueryBuilder(staff).apply(super().get_queryset()) + + +class ScopedModel(models.Model): + """ + 所有业务 Model 继承此基类(而非 models.Model)。 + """ + objects = ScopedManager() + + class Meta: + abstract = True +``` + +### 14.3 豁免场景 + +| 场景 | 豁免条件 | 写法 | +|---|---|---| +| 系统/平台级操作(如分区维护) | 无租户身份,有明确运维场景 | `Model._default_manager.filter(...)` + 代码注释说明 | +| 迁移脚本 / seed factory | `RunPython` 或测试工厂 | `Model._default_manager.all()` | +| 测试内部 assert | 纯验证数据存在,非业务查询 | `Model._default_manager.get(pk=...)` | + +### 14.4 Lint 规则(pre-commit) + +在 `.pre-commit-config.yaml` 增加以下规则,阻断直接 `objects` 调用: + +```yaml +- repo: local + hooks: + - id: no-raw-objects + name: "禁止直接使用 Model.objects(业务代码)" + language: pygrep + entry: '(?`Project/fonrey/screenshots/楼盘管理/楼栋管理.png`
| `UI_DESIGN/楼盘详情_UI.html` | 待评审 | 进入任务06(楼盘管理-区域管理) | -| 06 | P0-B | 楼盘管理(区域) | US-COMPLEX-003 | `UI_DESIGN/楼盘管理/区域管理_UI.md` | `Project/fonrey/screenshots/楼盘管理/区域管理.png` | `UI_DESIGN/区域管理_UI.html` | 待设计 | 完成任务05后开始 | -| 07 | P0-C | 组织人事 | US-ORG-001~003 | `UI_DESIGN/组织人事管理/组织人事_UI.md` | `Project/fonrey/screenshots/组织人事/组织结构/公司组织结构.png` | `UI_DESIGN/组织人事_UI.html` | 待设计 | 完成任务06后开始 | -| 08 | P0-C | 权限管理 | US-PERMISSION-001~005 | `UI_DESIGN/权限管理/权限管理_UI.md`
`Project/fonrey/PRD/权限管理/房源-二手租赁.md`
`Project/fonrey/PRD/权限管理/客源.md` | `Project/fonrey/screenshots/权限管理/权限-客源-客源.png`
``
`Project/fonrey/screenshots/权限管理/权限-房源-二手租赁.jpg`
`` | `UI_DESIGN/权限管理_UI.html` | 待设计 | 完成任务07后开始 | -| 09 | P0-C | 系统配置 | US-SETTING-001-A/B/C | `UI_DESIGN/系统配置/系统配置_UI.md` | | `UI_DESIGN/系统配置_UI.html` | 待设计 | 完成任务08后开始 | +| 06 | P0-B | 楼盘管理(区域) | US-COMPLEX-003 | `UI_DESIGN/楼盘管理/区域管理_UI.md` | `Project/fonrey/screenshots/楼盘管理/区域管理.png` | `UI_DESIGN/区域管理_UI.html` | 待评审 | 你评审区域管理 UI.md + 静态页,给我反馈我再迭代 | +| 07 | P0-C | 组织人事 | US-ORG-001~003 | `UI_DESIGN/组织人事管理/组织人事_UI.md` | `Project/fonrey/screenshots/组织人事/组织结构/公司组织结构.png` | `UI_DESIGN/组织人事_UI.html` | 待评审 | 你评审组织人事 UI.md + 静态页,给我反馈我再迭代 | +| 08 | P0-C | 权限管理 | US-PERMISSION-001~005 | `UI_DESIGN/权限管理/权限管理_UI.md`
`Project/fonrey/PRD/权限管理/房源-二手租赁.md`
`Project/fonrey/PRD/权限管理/客源.md` | `Project/fonrey/screenshots/权限管理/权限-客源-客源.png`
``
`Project/fonrey/screenshots/权限管理/权限-房源-二手租赁.jpg`
`` | `UI_DESIGN/权限管理_UI.html` | 待评审 | 你评审权限管理 UI.md + 静态页,给我反馈我再迭代 | +| 09 | P0-C | 系统配置 | US-SETTING-001-A/B/C | `UI_DESIGN/系统配置/系统配置_UI.md` | `Project/fonrey/screenshots/设置/客源设置-客源参数配置.png`
`Project/fonrey/screenshots/设置/房源设置-字段标签设置.png`
`Project/fonrey/screenshots/设置/房源设置-字段标签设置-修改字段必填要求.png`
`Project/fonrey/screenshots/设置/房源设置-字段标签设置-自定义预设参数.png`
`Project/fonrey/screenshots/设置/客源设置-基本配置.jpg` | `UI_DESIGN/系统配置_UI.html` | 待评审 | 你评审系统配置 UI.md + 静态页,给我反馈我再迭代 | +| 10 | P1-C | 系统配置(首页设置) | US-SETTING-010 | `UI_DESIGN/系统配置/首页设置_UI.md` | `Project/fonrey/screenshots/设置/首页设置.png` | `UI_DESIGN/首页设置_UI.html` | 待评审 | 你评审首页设置 UI.md + 静态页,给我反馈我再迭代 | --- diff --git a/Project/fonrey/UI_DESIGN/区域管理_UI.html b/Project/fonrey/UI_DESIGN/区域管理_UI.html new file mode 100644 index 00000000..6f918340 --- /dev/null +++ b/Project/fonrey/UI_DESIGN/区域管理_UI.html @@ -0,0 +1,1119 @@ + + + + + + Fonrey 区域管理 · 静态原型 + + + + + + + +
+
+
F
+ Fonrey +
+ +
+ +
+
+ 魏深 +
+
+
+ + + + + +
+
+ +
+ +

区域管理

+
+ + +
+ +
+ + +
+ +
+ + + + + + +
+
+ + +
+
+
+
+

+ +
+
+
+ + +

+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+
+

+ +
+
+
+ + +

+
+ +
+ + +

+
+
+
+ + +
+
+
+ + +
+
+
+
+

+ +
+
+
+ + +
+
+ + +
+

+
+
+ + +
+
+
+ + +
+
+
+
+

查看关联情况

+ +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+ +
+ +
+
+ + + + + + + + + + + + + + + + +
+ + 标准城市标准城区标准商圈关联本地商圈本地商圈所属城区操作
+
+
+
+ +
+

+ +
+
+
+ + +
+ + + + \ No newline at end of file diff --git a/Project/fonrey/UI_DESIGN/房源列表_UI.html b/Project/fonrey/UI_DESIGN/房源列表_UI.html index 4cf0ec68..eae89eb1 100644 --- a/Project/fonrey/UI_DESIGN/房源列表_UI.html +++ b/Project/fonrey/UI_DESIGN/房源列表_UI.html @@ -20,10 +20,10 @@ 400:'#94A3B8',500:'#64748B',600:'#475569',700:'#334155', 800:'#1E293B',900:'#0F172A', }, - success:{50:'#F0FDF4',600:'#16A34A',700:'#15803D'}, - warning:{50:'#FFFBEB',600:'#D97706',700:'#B45309'}, - danger: {50:'#FEF2F2',600:'#DC2626',700:'#B91C1C'}, - info: {50:'#EFF6FF',600:'#2563EB',700:'#1D4ED8'}, + success:{50:'#F0FDF4',600:'#16A34A'}, + warning:{50:'#FFFBEB',600:'#D97706'}, + danger: {50:'#FEF2F2',600:'#DC2626'}, + info: {50:'#EFF6FF',600:'#2563EB'}, }, boxShadow: { xs:'0 1px 2px rgba(15,23,42,0.04)' }, fontFamily: { @@ -174,7 +174,7 @@ complex: '中远两湾城', block_no: '12', unit_no: '2', room_no: '802', district: '普陀', business_area: '长寿路', - status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-700', + status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-600', transaction_type: 'sale', transaction_label: '买卖', transaction_cls: 'bg-primary-200 text-primary-800', tags: [ { label: '满五', cls: 'bg-success-50 text-success-600' }, @@ -192,7 +192,7 @@ complex: '张江花园', block_no: '3', unit_no: '1', room_no: '1501', district: '浦东', business_area: '张江', - status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-700', + status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-600', transaction_type: 'sale', transaction_label: '买卖', transaction_cls: 'bg-primary-200 text-primary-800', tags: [ { label: '满五', cls: 'bg-success-50 text-success-600' }, @@ -212,7 +212,7 @@ status: 'for_sale_rent', status_label: '租售', status_cls: 'bg-primary-50 text-primary-700', transaction_type: 'sale_rent', transaction_label: '租售', transaction_cls: 'bg-neutral-300 text-neutral-800', tags: [ - { label: '私', cls: 'bg-warning-50 text-warning-700' }, + { label: '私', cls: 'bg-warning-50 text-warning-600' }, { label: '速销', cls: 'bg-danger-50 text-danger-600' } ], sale_price: '850', sale_unit_price: '70,833', @@ -256,7 +256,7 @@ complex: '泰晤士小镇', block_no: '8', unit_no: '4', room_no: '1102', district: '松江', business_area: '泰晤士小镇', - status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-700', + status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-600', transaction_type: 'sale', transaction_label: '买卖', transaction_cls: 'bg-primary-200 text-primary-800', tags: [ { label: '满五', cls: 'bg-success-50 text-success-600' }, @@ -274,10 +274,10 @@ complex: '陆家嘴滨江凯旋门', block_no: '2', unit_no: '1', room_no: '3801', district: '浦东', business_area: '陆家嘴', - status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-700', + status: 'for_sale', status_label: '出售', status_cls: 'bg-success-50 text-success-600', transaction_type: 'sale', transaction_label: '买卖', transaction_cls: 'bg-primary-200 text-primary-800', tags: [ - { label: '私', cls: 'bg-warning-50 text-warning-700' }, + { label: '私', cls: 'bg-warning-50 text-warning-600' }, { label: '速销', cls: 'bg-danger-50 text-danger-600' }, { label: '视频', cls: 'bg-neutral-100 text-neutral-600' } ], @@ -420,8 +420,8 @@
- - 配置关注小区 + + 配置关注小区 (关注小区后,当该小区产生对应交易类型下的新上房源、降价房源时,系统将第一时间通知您,提升您的作业效率哦!) +
+
+ 杜利强 +
+
+ + + + +
+
+
+
+
+ +

权限管理

+

支持角色权限配置、人员权限覆盖、批量角色分配与范围权限管理

+
+ +
+
+ +
+ +
+ + + + +
+
+ +
+
+
+
+
+

批量设置角色

+ +
+
+

已选择 位员工

+
+ + +

+
+
+ 该操作将覆盖所选员工的个人自定义权限,请确认。 +
+
+
+ + +
+
+
+
+ +
+
+
+
+
+

添加角色

+ +
+
+
+ + +

+
+
+ + +

角色类别影响权限,创建后仅本人创建类别可修改。

+

+
+
+
+ + +
+
+
+
+ +
+
+
+
+
+

修改角色

+ +
+
+

+
+ +
+ + 请选择角色 +
+
+ +
+

+
+
+
+ + +
+
+
+
+ +
+
+
+
+
+

管理范围详情

+ +
+
+

+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+

人员权限编辑

+

+
+
+ + +
+
+ +
+ + +
+
+

+ +
+ + +
+
+
+
+ +
+
+
+
+
+

角色权限配置

+

+
+
+ + +
+
+ +
+ + +
+
+

+ +
+ + +
+
+
+
+ +
+
+
+
+
+

+

权限修改后将影响当前编辑对象的可见范围

+
+ +
+
+

+
+
设置值
+ + + + +
+
+
+ + +
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/Project/fonrey/UI_DESIGN/楼盘详情_UI.html b/Project/fonrey/UI_DESIGN/楼盘详情_UI.html index c565d7f7..b8c4eec2 100644 --- a/Project/fonrey/UI_DESIGN/楼盘详情_UI.html +++ b/Project/fonrey/UI_DESIGN/楼盘详情_UI.html @@ -87,8 +87,8 @@ line-height: 1; padding: 4px 8px; border-radius: 999px; - border: 1px solid #FECACA; - color: #B91C1C; + border: 1px solid #DC2626; + color: #DC2626; background: #FEF2F2; } diff --git a/Project/fonrey/UI_DESIGN/登录_UI.html b/Project/fonrey/UI_DESIGN/登录_UI.html index a2aac509..86c3003f 100644 --- a/Project/fonrey/UI_DESIGN/登录_UI.html +++ b/Project/fonrey/UI_DESIGN/登录_UI.html @@ -51,7 +51,7 @@ [x-cloak] { display: none !important; } .tabular-nums { font-variant-numeric: tabular-nums; } .captcha-track { background: linear-gradient(90deg, #E2E8F0 0%, #F1F5F9 100%); } - .captcha-success { background: linear-gradient(90deg, #dcfce7 0%, #bbf7d0 100%); } + .captcha-success { background: linear-gradient(90deg, #F0FDF4 0%, #16A34A 100%); } diff --git a/Project/fonrey/UI_DESIGN/登录_账号密码_UI.html b/Project/fonrey/UI_DESIGN/登录_账号密码_UI.html index f7124e08..e2179a74 100644 --- a/Project/fonrey/UI_DESIGN/登录_账号密码_UI.html +++ b/Project/fonrey/UI_DESIGN/登录_账号密码_UI.html @@ -32,7 +32,7 @@ + + + +
+
+
F
+ Fonrey +
+ +
+ +
+
+ 杜利强 +
+
+
+ + + + + +
+
+
+
+
+ +

系统配置

+

覆盖参数配置(Lookup)、房源字段规则、客源录入规则

+
+ +
+
+ +
+ +
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
+

+

支持新增、排序、停用;系统预制项不可删除

+
+ +
+ +
+ + +
+ + + + + + + + + + + + +
项目值状态来源操作
+
+ + +
+ +
+ + +
+
+
+
+ + +
+
+ +
+ + +
+
+
+ + + + diff --git a/Project/fonrey/UI_DESIGN/组织人事_UI.html b/Project/fonrey/UI_DESIGN/组织人事_UI.html new file mode 100644 index 00000000..df923d9d --- /dev/null +++ b/Project/fonrey/UI_DESIGN/组织人事_UI.html @@ -0,0 +1,1935 @@ + + + + + + Fonrey 组织人事 · 静态原型 + + + + + + + +
+
+
F
+ Fonrey +
+ +
+ +
+
+ 魏深 +
+
+
+ + + + + +
+
+
+
+
+ +

组织人事

+
+ +
+
+ +
+ +
+ + + + + + + + + +
+
+ + +
+
+
+
+
+

+ +
+ +
+
+ 1. 店组级别部门必须挂在门店下;2. 经纪人/店管的所属部门只能是门店/店组;3. 经纪人是职务类别为置业顾问的员工。 +
+ +

部门基本信息

+
+
+ + +

+
+
+ + +

+
+ +
+ + +

+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ +

+
+ +
+ + +
+
+
+
+ + +
+
+
+
+

新增员工 / 办理入职

+ +
+ +
+
+
+ + +

+
+
+ + +
+ +
+ + +

+
+
+ + +
+ +
+ + +

+
+
+ + +

+
+ +
+ + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ +

+ +
+

账号创建成功

+

登录账号:

+

初始密码:

+

已模拟发送给员工,可立即登录系统(原型)。

+
+
+ +
+ + +
+
+
+ + +
+
+
+
+
+

员工离职

+ +
+
+
+
+
房源数量

+
客源数量

+
营销客数量

+
+

注:若不转给任何账号,则离职成功后业务信息仍属于该离职员工

+ +
+ + +

+
+
+ + +

+
+
+ + +
+
+
+ + +
+
+
+
+ + +
+
+
+
+

员工调动

+ +
+ +
+
+

+

房源数量:

+

注:若不转给任何账号,则业务信息跟随到新部门

+
+ +
+ + +

若日期为今日之前的日期,若当天有已提交日报,当天之后的日报将进行调动。

+

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段调动前调动后
* 部门 + +

+
部门级别
* 职务 + +

+
职务类别
* 角色 + +

+
* 直属上级 + + +

+
+
+ +
+ + +
+
+ +
+ + +
+
+
+ + +
+
+
+
+

员工详情

+ +
+ +
+
+ + +
+
+

+ +
+ + + + + + +
+
+
+
+
+ + +
+
+
+
+
+

异动记录

+ +
+ +
+
+ + + + + +
+ + +
+
+ +
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
当前部门员工员工编号员工状态当前职务类型备注操作人异动时间
+
+
+
+
+
+ + +
+
+
+ + + + diff --git a/Project/fonrey/UI_DESIGN/组织人事管理/组织人事_UI.md b/Project/fonrey/UI_DESIGN/组织人事管理/组织人事_UI.md new file mode 100644 index 00000000..a19ea1db --- /dev/null +++ b/Project/fonrey/UI_DESIGN/组织人事管理/组织人事_UI.md @@ -0,0 +1,219 @@ +# 组织人事 UI 设计文档 + +> **任务编号**:07(P0-C) +> **覆盖范围**:`US-ORG-001 ~ US-ORG-003`(组织结构维护 / 员工列表维护 / 员工入职账号创建) +> **输出文件**:`UI_DESIGN/组织人事_UI.html` +> **设计基线**:`UI_SYSTEM/UI_SYSTEM.md`(后台壳层、表格、分页、Modal/Drawer、树形选择器) +> **需求依据**: +> - `PRD/TASK.md`(US-ORG-001~003) +> - `PRD/组织人事管理/组织人事管理模块PRD.md` +> - `DATA_MODEL/DATA_MODEL_ORG.md` +> **竞品截图参考**: +> - `screenshots/组织人事/组织结构/公司组织结构.png` +> - `screenshots/组织人事/组织结构/部门新增.png` +> - `screenshots/组织人事/组织结构/部门编辑.png` +> - `screenshots/组织人事/组织结构/部门详情.png` +> - `screenshots/组织人事/组织结构/部门架构图.png` +> - `screenshots/组织人事/组织结构/员工信息编辑.png` +> - `screenshots/组织人事/组织结构/员工离职.png` +> - `screenshots/组织人事/组织结构/员工调动.png` +> - `screenshots/组织人事/组织结构/员工通讯录.png` +> - `screenshots/组织人事/职务管理/职务管理.png` + +--- + +## 1. 目标与范围 + +### 1.1 页面目标 + +组织人事页面用于承载 3 个 P0 核心能力: + +1. **组织结构维护(US-ORG-001)** + - 左侧组织树支持新增/编辑/删除部门 + - 删除有员工部门时阻断并提示 +2. **员工列表维护(US-ORG-002)** + - 支持姓名/工号/手机号关键词检索 + - 支持部门/状态筛选 + - 员工姓名可进入员工详情 +3. **员工入职与账号创建(US-ORG-003)** + - 入职表单必填校验(姓名/手机号/所属门店/职位) + - 创建后自动生成初始密码并给出发送提示 + - 新员工立即进入组织数据并可用于后续选择器 + +### 1.2 本任务边界 + +- ✅ 包含:壳层、组织树、员工表格、架构图视图、通讯录视图、部门弹窗、入职抽屉、离职弹窗、调动抽屉、员工详情抽屉、异动记录弹窗 +- ✅ 包含:关键必填校验、批量操作启用态、分页演示、Toast 反馈 +- ⛔ 不包含:真实后端接口、真实地图服务、真实短信发送、真实权限系统 + +--- + +## 2. 信息架构 + +### 2.1 统一壳层 + +- **Top Bar(56px)**:品牌 + 一级导航 + 用户区 +- **Sidebar(240px)**:组织人事二级导航 +- **Main Content(`ml-60 pt-[72px]`)**: + 1. 面包屑 + 页面标题 + 2. 主 Tab(组织结构 / 部门架构图 / 员工通讯录) + 3. 各视图内容 + +### 2.2 组织结构视图(默认) + +#### 左栏:组织树 +- 新增部门按钮 +- 部门搜索 +- 显示已关闭部门复选 +- 树节点(名称 + 在职人数) +- 行内操作:编辑 / 删除 + +#### 右栏:员工管理 +1. 顶部预警条(账号上限、证件不匹配) +2. 筛选区(关键词、职务、状态、审批状态、入职时间、部门级别等) +3. 操作区(新增员工、导出员工、批量调动、批量设置上级、更多、员工异动记录) +4. 员工表格(姓名、工号、职务、部门、上级、电话、入职时间、审批状态、操作) +5. 分页区 + +### 2.3 部门架构图视图 + +- 顶部筛选:部门下拉、显示已关闭部门 +- 说明文案:最多 8 层,支持拖拽缩放 +- 工具栏:放大、缩小、导出、适配、重置 +- 树状节点卡片:部门名、级别标签、负责人、人数、直属下级 + +### 2.4 员工通讯录视图 + +- 筛选:部门、职务、生日、关键字 +- 表格:部门、姓名、职务、性别、生日、电话、分机、邮箱 +- 电话操作:拨打 / 查看号码 +- 分页演示 + +--- + +## 3. 关键交互设计 + +### 3.1 组织树维护 + +- 点击节点切换右侧员工列表范围 +- 新增部门弹窗:保存后实时加入树 +- 编辑部门弹窗:字段预填并支持状态/属性调整 +- 删除部门: + - 若该部门(含下级)仍有员工,阻断并提示 + - 无员工时删除成功 +- 组织树变更后,部门下拉/调动选择器实时更新(同页数据源) + +### 3.2 员工列表筛选与批量 + +- 关键词支持:姓名 / 工号 / 手机号 +- 部门筛选 + “显示下属部门员工”开关 +- 状态筛选(正式/试用/冻结/离职) +- 批量按钮在未勾选时禁用,勾选后启用 + +### 3.3 新增员工(入职)抽屉 + +#### 必填字段 +- 姓名 +- 手机号 +- 所属门店/店组 +- 职务 + +#### 联动逻辑 +- 选择职务后自动带出:职务类别、默认角色 +- 仅允许选择门店/店组作为所属部门 + +#### 提交结果 +- 自动生成初始密码 +- 弹窗展示账号与密码(模拟发送) +- 新员工立即进入列表,审批状态置为“入职审” + +### 3.4 员工离职弹窗 + +- 顶部展示业务统计(房源数/客源数/营销客数) +- 必填:离职日期、离职类型 +- 可选:备注 +- 成功后:员工状态改为“离职”,并写入异动记录 + +### 3.5 员工调动抽屉 + +- “调动前 / 调动后”双列对照 +- 必填:调动日期、部门、职务、角色、直属上级(或勾选无直属上级) +- 备注最多 30 字 +- 调动成功后更新员工归属并写入异动记录 + +### 3.6 员工详情抽屉 + +- 左侧:头像、姓名、部门、职务、工号 +- 右侧 Tab:员工基本信息 / 异动记录 / 账号信息 +- 列表点击姓名触发打开 + +--- + +## 4. 状态矩阵 + +| 状态 | 触发 | 页面反馈 | +|---|---|---| +| 默认态 | 首次进入 | 展示组织结构视图 + 默认部门员工 | +| 树节点切换 | 点击部门节点 | 右侧员工列表按节点刷新 | +| 查询态 | 输入条件并查询 | 列表过滤结果更新 | +| 空结果态 | 条件过严 | 表格空状态“暂无匹配数据” | +| 批量勾选态 | 勾选复选框 | 批量按钮启用 + 已选计数 | +| 新增员工校验失败 | 缺失必填 | 字段红字错误提示,不提交 | +| 部门删除拦截 | 部门有员工 | Toast 提示并阻断删除 | +| 离职/调动成功 | 表单校验通过 | 更新列表 + 写异动日志 + Toast | +| 主题策略 | 后台统一视觉 | 页面内不包含 Light/Dark/System 切换控件 | + +--- + +## 5. 字段与数据模型映射(DATA_MODEL_ORG) + +| UI 字段 | 数据模型字段 | +|---|---| +| 部门名称 | `org_units.name` | +| 部门级别 | `org_units.type` | +| 上级部门 | `org_units.parent_id` | +| 部门属性 | `org_units.attribute` | +| 部门状态 | `org_units.is_active` | +| 员工姓名 | `staff.name` | +| 员工工号 | `staff.employee_no` | +| 职务 | `staff.job_title` | +| 职务类别 | `staff.job_category` | +| 所属部门 | `staff.org_unit_id` | +| 员工状态 | `staff.status` | +| 手机号(脱敏显示) | `staff.phone_enc` + 展示脱敏规则 | +| 入职日期 | `staff.first_joined_at` | +| 离职日期 | `staff.resigned_at` | +| 异动类型 | `staff_transfer_logs.transfer_type` | +| 异动时间 | `staff_transfer_logs.transfer_date` | +| 操作人 | `staff_transfer_logs.operator_id` | +| 账号平台绑定 | `staff_accounts.platform / is_bound` | + +--- + +## 6. 可访问性与实现规范 + +- 表格列头使用 `` +- 图标按钮补充 `aria-label` +- Modal/Drawer 支持 `Esc` 关闭 +- 必填错误信息使用文本提示,不仅靠颜色 +- 焦点统一 `focus-visible:ring-2 focus-visible:ring-primary-600/40` +- 所有关键操作给出 Toast 反馈 +- 页面遵循既有后台浅色视觉,不加入主题切换控件 + +--- + +## 7. 验收清单(本轮) + +- [x] 覆盖 US-ORG-001:组织树增改删 + 删除拦截 +- [x] 覆盖 US-ORG-002:员工关键词/部门/状态筛选 + 姓名详情入口 +- [x] 覆盖 US-ORG-003:入职必填校验 + 自动密码 + 成功入列 +- [x] 竞品关键结构已映射:组织树、架构图、离职弹窗、调动抽屉、通讯录 +- [x] 页面不含 Light/Dark/System 切换控件 +- [ ] 控制台 0 报错(待本地预览验证) + +--- + +## 8. 后续衔接 + +- 本任务评审通过后进入任务 08:权限管理(US-PERMISSION-001~005) +- 组织结构与员工数据将作为权限人员列表、角色分配的数据基础 diff --git a/Project/fonrey/UI_DESIGN/首页设置_UI.html b/Project/fonrey/UI_DESIGN/首页设置_UI.html new file mode 100644 index 00000000..151b463e --- /dev/null +++ b/Project/fonrey/UI_DESIGN/首页设置_UI.html @@ -0,0 +1,536 @@ + + + + + + Fonrey 首页设置 · 静态原型 + + + + + + +
+
+
F
+ Fonrey +
+ +
+ +
+
+ 杜利强 +
+
+
+ + + +
+
+
+
+
+ +

系统配置-首页设置

+

管理员可按角色配置首页展示卡片、排行榜及成交战报视图

+
+
+ +
+
+
+ +
+
+
+
+
+ +
+
+ + +
+
+ +
+ +
+
员工信息模块
+
+
+

是否展示员工司龄

+

若开启则首页展示员工司龄

+
+ +
+
+ +
+
行程模块显示指标
+
+ + +
+
+ +
+
首页业绩显示设置
+
+ + +
+
+ +
+
首页统计卡片配置
+
+ +

至少保留1个启用卡片;卡片顺序将影响首页展示顺序。

+
+
+ +
+
排行榜设置
+
+
+
+
+

是否显示业绩和单数

+

若开启则排行榜中显示业绩和单数

+
+ +
+ + + + +
+ +
+
+
+

默认展示全公司前10排名数据

+

权限为本人/无时仅展示默认排行

+
+ +
+ + + + +
+
+
+ +
+
成交战报设置
+
+
+ + +
+
+
+

是否显示业绩

若开启则成交战报中显示业绩

+ +
+
+

是否显示房源

若开启则成交战报中显示房源名称

+ +
+
+

是否显示房源总价

若开启则成交战报中显示房源总价

+ +
+
+
+
+
+
+ + +
+
+
+ +
+ + + + \ No newline at end of file diff --git a/Project/fonrey/prompt/提示词模板/创建项目骨架提示词_v2.2.md b/Project/fonrey/prompt/提示词模板/创建项目骨架提示词_v2.3.md similarity index 93% rename from Project/fonrey/prompt/提示词模板/创建项目骨架提示词_v2.2.md rename to Project/fonrey/prompt/提示词模板/创建项目骨架提示词_v2.3.md index 23bde1eb..cbd9f02e 100644 --- a/Project/fonrey/prompt/提示词模板/创建项目骨架提示词_v2.2.md +++ b/Project/fonrey/prompt/提示词模板/创建项目骨架提示词_v2.3.md @@ -1,6 +1,6 @@ # Fonrey 项目骨架搭建 — 工程执行提示词 -> **版本**:v2.2(2026-04-28)|v2.0 修复 P0×5+P1×4;v2.1 修复 P0×9(交叉比对 AGENTS.md / 测试规范.md / 系统管理技术文档.md);v2.2 收口剩余一致性问题(URL 分离、Admin 弃用、密钥变量统一、测试 settings 一致性、环境变量占位修复) -> **v2.2 主要变更**:统一 `config/urls.py` / `config/urls_public.py` 职责并修正执行清单;移除 Django Admin 路由引用(对齐系统管理技术文档);PII 密钥统一为 `PHONE_ENCRYPTION_KEY`;`pyproject.toml` 测试 settings 对齐 `config.settings.testing` 并新增 `testing.py` 生成要求;修复 AWS/R2 示例占位符与 `.env.example` 断行问题;修正 docker-compose 服务数量描述 +> **版本**:v2.3(2026-04-29)|v2.0 修复 P0×5+P1×4;v2.1 修复 P0×9(交叉比对 AGENTS.md / 测试规范.md / 系统管理技术文档.md);v2.2 收口剩余一致性问题(URL 分离、Admin 弃用、密钥变量统一、测试 settings 一致性、环境变量占位修复);v2.3 修复开工阻塞(R2 密钥变量名、release 结构冲突、DB 连接参数)并补齐 API_CONTRACT 核对清单 +> **v2.3 主要变更**:修复 `AWS_SECRET_ACCESS_KEY` 环境变量占位错误(统一为 `R2_SECRET_ACCESS_KEY`);移除 `DATABASES.OPTIONS.pool_size` 非标准参数;修正执行清单中 `apps/release` 误要求 `services/` 与 `tasks.py` 的冲突;补充 API_CONTRACT 强制核对清单(路径/方法/参数/响应 envelope/错误码/@extend_schema/openapi.json/schemathesis);统一 URL 命名口径说明(`config.urls` 对应系统文档 `config.urls_tenant`) ## 你的角色与约束 你是一名资深 Django 后端工程师。你的任务是**严格按照规范**搭建 Fonrey 项目骨架,不得自行发明技术方案,不得引入文档未授权的第三方库。每一步操作后必须验证结果。 **项目工作目录**:`/mnt/c/Project/`(在此目录下创建 `fonrey/` 子目录) @@ -188,7 +188,7 @@ from django.urls import path, include from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView urlpatterns = [ - path("api/client/updates/latest/", include("apps.release.urls")), + path("api/client/", include("apps.release.urls")), # apps.release.urls 内定义 updates/latest/ # OpenAPI — 仅 DEBUG 暴露,production 通过 nginx ACL 限制 path("api/schema/", SpectacularAPIView.as_view(), name="schema"), path("api/docs/", SpectacularSwaggerView.as_view(url_name="schema"), name="swagger-ui"), @@ -200,6 +200,7 @@ urlpatterns = [ # config/settings/base.py — 多租户 URL 分离配置(必须显式声明) ROOT_URLCONF = "config.urls" # tenant schema 路由入口 PUBLIC_SCHEMA_URLCONF = "config.urls_public" # public schema 路由入口 +# 口径说明:系统管理技术文档中的 `config.urls_tenant` 在本骨架中命名为 `config.urls`,语义等价。 ``` > `config/urls.py` 仅包含 `urlpatterns`(tenant 路由),`config/urls_public.py` 包含 `urlpatterns`(public 路由)。两个文件分开维护,**不得合并**。 @@ -255,7 +256,7 @@ DATABASES = { "HOST": env("DB_HOST", default="localhost"), "PORT": env("DB_PORT", default="5432"), "CONN_MAX_AGE": 60, - "OPTIONS": {"pool_size": 10}, # PgBouncer 协同 + # PgBouncer 连接池在 DB/Proxy 层管理;此处不注入非标准 DSN 参数,避免驱动报错 } } DATABASE_ROUTERS = ["django_tenants.routers.TenantSyncRouter"] @@ -317,7 +318,7 @@ SPECTACULAR_SETTINGS = { "VERSION": "1.0.0", "SERVE_INCLUDE_SCHEMA": False, "COMPONENT_SPLIT_REQUEST": True, - "ENUM_GENERATE_CHOICE_DESCRIPTION": False, # 枚举说明由 ENUMS.md 权威维护 + "ENUM_GENERATE_CHOICE_DESCRIPTION": True, # 对齐 API_CONTRACT.md §11,Schema 中展开枚举说明 } # 日志(骨架,production 扩展) LOGGING = { @@ -785,7 +786,7 @@ CELERY_BROKER_URL=redis://redis:6379/1 # Cloudflare R2 R2_ENDPOINT_URL=https://.r2.cloudflarestorage.com R2_ACCESS_KEY_ID= -R2_SECRET_ACCESS_KEY= +R2_SECRET_ACCESS_KEY= R2_BUCKET_NAME=media R2_CUSTOM_DOMAIN= # Sentry(production 填写) @@ -840,7 +841,21 @@ python_files = ["test_*.py", "*_test.py"] addopts = "--reuse-db --cov=apps --cov=core --cov-report=term-missing -n auto" ``` --- -## 十五、执行顺序与验证清单 +## 十五、API_CONTRACT 契约核对清单(强制) +在生成任何 API 相关骨架(含 `apps/release`、OpenAPI 路由、契约测试占位)时,必须逐项核对: + +- [ ] **路径与方法**:端点路径/HTTP Method 与 `TECH_STACK/API_CONTRACT.md` 及模块文档一致 +- [ ] **请求参数**:query/path/body 字段名、类型、必填/可选与契约一致 +- [ ] **响应 envelope**:成功返回 `ok=true` + `data` + `meta`;失败返回 `ok=false` + `error` + `code` + `details` + `meta` +- [ ] **错误码**:`code` 使用稳定 `UPPER_SNAKE_CASE`,并与模块前缀语义一致 +- [ ] **OpenAPI 注解**:视图补齐 `@extend_schema`(或 `@extend_schema_view`) +- [ ] **Schema 文件**:可执行 `python manage.py spectacular --file openapi.json` 成功生成 +- [ ] **契约测试**:`schemathesis` 命令可运行(至少保留 Positive 路径骨架) + +交付时必须附带“API 契约核对结果”小节,按以上 7 项逐项标注 ✅/❌ 与证据(文件路径 + 行号)。 + +--- +## 十六、执行顺序与验证清单 按以下顺序执行,每步完成后打 ✅: ``` [ ] 1. 创建根目录 fonrey/ 及上述完整目录树(含所有 __init__.py) @@ -857,7 +872,7 @@ addopts = "--reuse-db --cov=apps --cov=core --cov-report=term-missing -n auto" [ ] 11. 创建 core/htmx.py(htmx_response 工具) [ ] 12. 创建 core/templatetags/heroicons.py [ ] 13. 创建 core/middleware/audit.py(骨架) -[ ] 14. 为每个 App 创建目录结构(含 apps.py、models/__init__.py、services/__init__.py、tasks.py 骨架、views.py 骨架、urls.py 骨架) +[ ] 14. 为每个 App 创建目录结构(`apps/release` 除外;其余含 apps.py、models/__init__.py、services/__init__.py、tasks.py 骨架、views.py 骨架、urls.py 骨架) [ ] 15. 创建 apps/tenant/models.py(Tenant、Domain 模型,django-tenants 规范) [ ] 16. 创建 templates/ 完整目录树及 base.html、layouts/app.html、layouts/auth.html 骨架 [ ] 17. 创建 components/ 模板骨架(topbar, sidebar, pagination, toast, modal, empty-state) @@ -871,9 +886,10 @@ addopts = "--reuse-db --cov=apps --cov=core --cov-report=term-missing -n auto" [ ] 25. 创建 manage.py [ ] 26. 验证:python manage.py check --deploy 无致命错误 [ ] 27. 验证:项目目录树与第二节规范 100% 匹配 +[ ] 28. 验证:API_CONTRACT 核对清单 7 项全部完成(含 openapi.json 生成与 schemathesis 骨架) ``` --- -## 十六、关键注意事项 +## 十七、关键注意事项 1. **django-tenants `apps/tenant/models.py`** 必须定义 `Tenant`(继承 `TenantMixin`)和 `Domain`(继承 `DomainMixin`),且 `Tenant` 的 `auto_create_schema = True`。 2. **`shared/` App** 的 `apps.py` 中 `name = "shared"`,用于公共 Schema 的跨租户共享数据(如 PermissionDef 等)。 3. **所有 App 的 `apps.py`** 必须包含正确的 `name`(含包路径,如 `apps.property`)和 `verbose_name`(中文)。 @@ -883,4 +899,4 @@ addopts = "--reuse-db --cov=apps --cov=core --cov-report=term-missing -n auto" 7. **模板中所有异步 HTMX 请求**在骨架阶段只需占位,但必须包含正确的 `hx-` 属性结构,不可省略 `hx-target` 和 `hx-swap`。 8. **Toast 系统**:前端监听 `htmx:afterRequest` 事件,检查响应头 `HX-Trigger` 中的 `fonrey:toast`,动态插入 Toast DOM,4 秒自动消失。 9. **小屏拦截**:`layouts/app.html` 中内嵌 JS,`window.innerWidth < 1280` 时显示全屏遮罩,文案:"Fonrey 当前仅支持桌面端(≥1280px),请在电脑上访问"。 -10. **所有密码、密钥、Tenant ID** 禁止出现在任何 Python 文件中,统一从 `python-decouple` 的 `env()` 读取。 \ No newline at end of file +10. **所有密码、密钥、Tenant ID** 禁止出现在任何 Python 文件中,统一从 `python-decouple` 的 `env()` 读取。