diff --git a/Project/fonrey/TECH_STACK/API_CONTRACT.md b/Project/fonrey/TECH_STACK/API_CONTRACT.md new file mode 100644 index 00000000..9881ded8 --- /dev/null +++ b/Project/fonrey/TECH_STACK/API_CONTRACT.md @@ -0,0 +1,287 @@ +> **For AI assistants**: Read this entire file before designing or implementing any API. Contract rules here are mandatory. Do not invent per-module variants unless explicitly allowed. + +# Fonrey API 契约规范(API_CONTRACT) + +**版本**: 1.0 +**适用范围**: 全模块(account / permission / property / client / complex / org / setting) +**关联总纲**: `TECH_STACK/TECH_STACK.md` +**最后更新**: 2026-04-27 + +--- + +## 1. 文档定位与原则 + +本文件定义 Fonrey 全局 API 契约标准,解决跨模块接口风格漂移问题。模块技术方案中的 API 章节必须遵循本文件,不得各自定义冲突规则。 + +### 1.1 强制级别 + +- **MUST**:必须遵守,违反视为缺陷 +- **SHOULD**:建议遵守,若不遵守需在模块文档注明原因 +- **MAY**:可选能力 + +### 1.2 适用接口类型 + +- JSON API(`/api/**`) +- HTMX 片段端点(HTML response) +- 文件上传/下载端点 + +--- + +## 2. 请求 / 响应格式规范 + +## 2.1 请求体规范(JSON API) + +- `Content-Type` MUST 为 `application/json` +- `charset=utf-8` SHOULD 显式声明 +- 写操作(POST/PUT/PATCH)MUST 传业务 payload;禁止空对象写入 + +推荐请求结构: + +```json +{ + "data": { + "...": "业务字段" + }, + "meta": { + "request_id": "可选,客户端透传" + } +} +``` + +兼容说明:历史端点已存在 `filters/sort/pagination` 平铺结构时可继续使用,但新接口 SHOULD 迁移到 `data` 容器。 + +## 2.2 成功响应规范(JSON API) + +成功响应 MUST 使用统一 envelope: + +```json +{ + "ok": true, + "data": {}, + "meta": { + "request_id": "uuid", + "timestamp": "2026-04-27T16:30:00+08:00" + } +} +``` + +说明: +- `ok` MUST 为 `true` +- `data` MUST 存在(可为空对象 `{}` 或空数组 `[]`) +- `meta` SHOULD 包含 `request_id` 与服务端时间 + +## 2.3 失败响应规范(JSON API) + +失败响应 MUST 使用统一 envelope: + +```json +{ + "ok": false, + "error": "权限不足", + "code": "PROPERTY_PERMISSION_DENIED", + "details": {}, + "meta": { + "request_id": "uuid", + "timestamp": "2026-04-27T16:30:00+08:00" + } +} +``` + +说明: +- `error` MUST 为面向用户/调用方可读消息 +- `code` MUST 为稳定机器可读码(大写下划线) +- `details` MAY 提供字段级错误(如校验失败) + +## 2.4 HTMX 响应规范 + +- 成功:返回 HTML 片段;必要时通过 `HX-Trigger` 触发前端事件 +- 失败: + - 状态码 MUST 正确(4xx/5xx) + - SHOULD 在响应头返回 `HX-Trigger`,例如: + - `{"toast:error":"权限不足"}` + - `{"toast:error":"请求失败,请重试"}` + +--- + +## 3. 错误码规范 + +## 3.1 命名规则 + +- 错误码 MUST 为 `UPPER_SNAKE_CASE` +- 推荐前缀:`_`(如 `PROPERTY_` / `CLIENT_` / `ORG_`) + +## 3.2 HTTP 状态码基线 + +| HTTP | 使用场景 | 示例 code | +|---|---|---| +| 400 | 参数错误、业务前置条件不满足 | `PROPERTY_VALIDATION_ERROR` | +| 401 | 仅用于纯 API Token 鉴权失败(当前 Web 会话模式一般不用) | `AUTH_UNAUTHORIZED` | +| 403 | 已登录但无权限 | `*_PERMISSION_DENIED` | +| 404 | 资源不存在或不可见 | `*_NOT_FOUND` | +| 409 | 状态冲突、任务未就绪 | `*_STATE_CONFLICT` / `*_JOB_NOT_READY` | +| 422 | 字段级校验错误(可选) | `*_VALIDATION_FAILED` | +| 429 | 频控触发 | `RATE_LIMITED` | +| 500 | 未预期异常 | `INTERNAL_ERROR` | + +## 3.3 稳定性要求 + +- `code` MUST 可稳定依赖,不得频繁改名 +- 错误文案 `error` 可优化,但不应影响调用方流程判断 + +--- + +## 4. 分页规范 + +Fonrey 列表查询 MUST 使用 Keyset 分页;禁止 OFFSET 深分页。 + +## 4.1 请求格式 + +```json +{ + "filters": {}, + "sort": {"field": "updated_at", "order": "desc"}, + "pagination": {"mode": "keyset", "cursor": null, "limit": 20} +} +``` + +## 4.2 响应格式 + +```json +{ + "ok": true, + "data": { + "items": [], + "next_cursor": "opaque_cursor_2" + }, + "meta": { + "pagination": {"mode": "keyset", "cursor": "opaque_cursor", "limit": 20} + } +} +``` + +## 4.3 约束 + +- `limit` MUST 有上限(建议 ≤ 100) +- `cursor` MUST 为不透明字符串,禁止暴露内部排序字段组合 +- 排序字段 MUST 来自白名单,防止 SQL 注入与慢查询 + +--- + +## 5. 搜索 / 筛选规范 + +## 5.1 推荐请求结构 + +```json +{ + "filters": { + "keyword": "保利", + "status": ["active", "pending"], + "district_id": "uuid" + }, + "sort": {"field": "updated_at", "order": "desc"}, + "pagination": {"mode": "keyset", "cursor": null, "limit": 20} +} +``` + +## 5.2 语义规范 + +- `keyword`:模糊检索词(服务端统一做 trim) +- 多选条件 MUST 使用数组(如 `status: []`) +- 空数组 `[]` 语义:不限制该条件 +- `null` 语义:由模块文档明确(默认建议等同“不传”) + +## 5.3 安全与性能 + +- 仅允许白名单字段参与筛选和排序 +- LIKE/全文检索字段 SHOULD 建立索引或搜索策略 +- 查询快照哈希(用于缓存/导出)SHOULD 对 filters+sort+scope 进行规范化后计算 + +--- + +## 6. 上传规范 + +Fonrey 优先采用“预签名上传 + 回执提交(commit)”两段式。 + +## 6.1 标准流程 + +1. 客户端请求 upload-token(业务 API) +2. 客户端直传对象存储(R2) +3. 客户端调用 commit API 回写元数据 + +## 6.2 合约要求 + +- upload-token MUST 短时有效(建议 5~15 分钟) +- commit MUST 幂等(建议支持 `idempotency_key`) +- 上传白名单与大小限制 MUST 在模块文档声明并在服务端校验 +- SHOULD 校验 `content_type` 与 `size` +- MAY 增加 `sha256` 校验确保完整性 + +## 6.3 错误码建议 + +- `*_UPLOAD_TOKEN_EXPIRED` (409/400) +- `*_UPLOAD_FILE_TOO_LARGE` (400) +- `*_UPLOAD_FILE_TYPE_NOT_ALLOWED` (400) +- `*_UPLOAD_COMMIT_CONFLICT` (409) + +--- + +## 7. 文件下载规范 + +下载统一采用“导出任务 + 状态查询 + download endpoint”。 + +## 7.1 标准流程 + +1. 创建导出任务 `POST /api/**/export/jobs/` +2. 轮询任务状态 `GET /api/**/export/jobs/{job_id}/` +3. 下载结果 `GET /api/**/export/jobs/{job_id}/download/` + +## 7.2 合约要求 + +- 任务未完成下载 MUST 返回 `409` + `*_EXPORT_JOB_NOT_READY` +- 下载链接 SHOULD 为一次性或短时有效 URL +- 响应 SHOULD 设置 `Content-Disposition`(附件下载) +- 文件名 SHOULD 带模块与日期,便于审计 + +--- + +## 8. 权限拒绝返回规范 + +## 8.1 JSON API + +- 未登录:MUST 返回 `302`(Web Session 场景)或 `401`(纯 API 场景) +- 已登录无权限:MUST 返回 `403` +- 失败体 MUST 使用统一错误 envelope,`code` 为 `*_PERMISSION_DENIED` + +## 8.2 页面路由(SSR/HTMX) + +- 未登录:302 跳转登录页 +- 已登录无权限:403 页面(或 HTMX 403 片段) +- HTMX 拒绝 SHOULD 触发 `HX-Trigger` toast 事件 + +## 8.3 测试强约束 + +每个受保护端点 MUST 覆盖三态: +- 200(有权限) +- 403(已登录无权限) +- 302/401(未登录,视端点类型) + +--- + +## 9. 与模块文档的衔接规则 + +- 各模块技术方案中的“四、API 设计原则”“六、关键 API 规范”“十二、错误码建议”必须引用本文件 +- 模块文档可补充模块特有 code 与字段,但不得与本规范冲突 +- 冲突时以本文件为准;若需例外,必须在模块文档显式记录 ADR 链接 + +--- + +## 10. 落地检查清单(Review Checklist) + +- [ ] 是否使用统一成功/失败 envelope +- [ ] 错误码是否为稳定 `UPPER_SNAKE_CASE` +- [ ] 列表接口是否全部 Keyset 分页 +- [ ] filters/sort 字段是否白名单化 +- [ ] 上传是否采用 token+commit 且具备幂等保障 +- [ ] 下载是否采用 job 流程并处理未就绪 409 +- [ ] 权限拒绝是否遵循 200/403/302(401) 三态 +- [ ] 测试是否覆盖契约关键路径 diff --git a/Project/fonrey/TECH_STACK/TECH_STACK.md b/Project/fonrey/TECH_STACK/TECH_STACK.md index da5be87c..25450f31 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.1 | **最后更新**: 2026-04-27 +**版本**: 2.2 | **最后更新**: 2026-04-27 **定位**: 本文档是 Fonrey 项目技术栈的**总索引**。所有跨模块的技术决策、版本约束、目录规范、禁止项在此定稿;**单一模块的具体技术方案**(数据模型、服务层、HTMX 交互、Celery 任务等)见各自子文档(见 §9 索引)。 --- @@ -128,18 +128,19 @@ apps/property/ 每个模块的具体技术决策(模型字段、服务层、缓存策略、HTMX/Celery 集成等)见对应子文档: -| 模块 | 技术方案文档 | PRD | 数据模型 | -| ----- | ---------------------------------- | -------------------------- | ------------------------------------- | -| 登录认证 | [`登录管理技术方案.md`](./登录管理技术方案.md) | `PRD/登录管理/` | `DATA_MODEL/DATA_MODEL_LOGIN.md` | -| 权限管理 | [`权限管理系统技术方案.md`](./权限管理系统技术方案.md) | `PRD/权限管理/` | `DATA_MODEL/DATA_MODEL_PERMISSION.md` | -| 房源管理 | [`房源管理技术方案.md`](./房源管理技术方案.md) | `PRD/房源管理/` | `DATA_MODEL/DATA_MODEL_PROPERTY.md` | -| 客源管理 | [`客源管理技术方案.md`](./客源管理技术方案.md) | `PRD/客源管理/` | `DATA_MODEL/DATA_MODEL_CLIENT.md` | -| 楼盘管理 | [`楼盘管理技术方案.md`](./楼盘管理技术方案.md) | `PRD/房源管理/`(含楼盘) | `DATA_MODEL/DATA_MODEL_COMPLEX.md` | -| 组织人事 | [`组织人事技术方案.md`](./组织人事技术方案.md) | `PRD/组织人事管理/` | `DATA_MODEL/DATA_MODEL_ORG.md` | -| 系统设置 | [`系统设置技术方案.md`](./系统设置技术方案.md) | `PRD/系统配置/`、`PRD/系统管理/` | `DATA_MODEL/DATA_MODEL_SETTING.md` | -| 客户端发布 | 见本文档 §7 | `PRD/发布管理/客户端发布管理模块PRD.md` | — | +| 模块 | 技术方案文档 | PRD | 数据模型 | 测试文件 | 最近版本 | +| ----- | ---------------------------------- | -------------------------- | ------------------------------------- | --- | --- | +| 登录认证 | [`登录管理技术方案.md`](./登录管理技术方案.md) | `PRD/登录管理/` | `DATA_MODEL/DATA_MODEL_LOGIN.md` | `tests/integration/account/test_us_account.py` | `v3.1` | +| 权限管理 | [`权限管理系统技术方案.md`](./权限管理系统技术方案.md) | `PRD/权限管理/` | `DATA_MODEL/DATA_MODEL_PERMISSION.md` | `tests/integration/permission/test_us_permission.py` | `v2.1` | +| 房源管理 | [`房源管理技术方案.md`](./房源管理技术方案.md) | `PRD/房源管理/` | `DATA_MODEL/DATA_MODEL_PROPERTY.md` | `tests/integration/property/test_us_property.py` | `v1.0` | +| 客源管理 | [`客源管理技术方案.md`](./客源管理技术方案.md) | `PRD/客源管理/` | `DATA_MODEL/DATA_MODEL_CLIENT.md` | `tests/integration/client/test_us_client.py` | `v1.0` | +| 楼盘管理 | [`楼盘管理技术方案.md`](./楼盘管理技术方案.md) | `PRD/房源管理/`(含楼盘) | `DATA_MODEL/DATA_MODEL_COMPLEX.md` | `tests/integration/complex/test_us_complex.py` | `v1.0` | +| 组织人事 | [`组织人事技术方案.md`](./组织人事技术方案.md) | `PRD/组织人事管理/` | `DATA_MODEL/DATA_MODEL_ORG.md` | `tests/integration/org/test_us_org.py` | `v1.0` | +| 系统设置 | [`系统设置技术方案.md`](./系统设置技术方案.md) | `PRD/系统配置/`、`PRD/系统管理/` | `DATA_MODEL/DATA_MODEL_SETTING.md` | `tests/integration/setting/test_us_setting.py` | `v1.2` | +| 客户端发布 | 见本文档 §7 | `PRD/发布管理/客户端发布管理模块PRD.md` | — | — | `§7(本文)` | **总览数据模型**:[`DATA_MODEL/DATA_MODEL.md`](../DATA_MODEL/DATA_MODEL.md) +**全局 API 契约**:[`API_CONTRACT.md`](./API_CONTRACT.md) **MVP 范围与产品总览**:[`PRD/PRD_MVP.md`](../PRD/PRD_MVP.md) --- @@ -231,6 +232,7 @@ Fonrey 采用 AI vibe coding 模式开发,测试是保证每日迭代质量的 - 本文档仅记录**跨模块共识**与**模块索引**,不展开模块细节 - 模块技术方案在子文档中维护,并通过 §8 表格回链 +- API 契约总则在 `API_CONTRACT.md` 维护;模块文档只做模块特化,不得覆盖全局契约 - 任何技术栈变更(替换组件、升级主版本、新增外部服务)须同步更新本文档 §2、§5、§6 - 新增模块时,先在 §4 目录结构补位,再在 §8 索引登记子文档 - 测试规范变更须同步更新 §10 关键结论,完整细节在 [`测试规范.md`](./测试规范.md) 中维护 diff --git a/Project/fonrey/TECH_STACK/客源管理技术方案.md b/Project/fonrey/TECH_STACK/客源管理技术方案.md index 5edd437d..4a756e92 100644 --- a/Project/fonrey/TECH_STACK/客源管理技术方案.md +++ b/Project/fonrey/TECH_STACK/客源管理技术方案.md @@ -7,6 +7,7 @@ **技术栈**: Django 4.x + HTMX + Alpine.js + PostgreSQL 16 + Redis + Celery + Cloudflare R2 **关联 PRD**: `PRD/客源管理/客源管理模块PRD.md`(v1.4) **关联数据模型**: `DATA_MODEL/DATA_MODEL_CLIENT.md`(本方案不重复 DDL) +**关联契约规范**: `TECH_STACK/API_CONTRACT.md`(全局 API 契约权威) **关联枚举字典**: `DATA_MODEL/ENUMS.md` **最后更新**: 2026-04-27 diff --git a/Project/fonrey/TECH_STACK/房源管理技术方案.md b/Project/fonrey/TECH_STACK/房源管理技术方案.md index 654657ae..bbe61570 100644 --- a/Project/fonrey/TECH_STACK/房源管理技术方案.md +++ b/Project/fonrey/TECH_STACK/房源管理技术方案.md @@ -7,6 +7,7 @@ **技术栈**: Django 4.x + HTMX + Alpine.js + PostgreSQL 16 + Redis + Celery + Cloudflare R2 **关联 PRD**: `PRD/房源管理/房源管理模块PRD.md`(v2.1) **关联数据模型**: `DATA_MODEL/DATA_MODEL_PROPERTY.md`(本方案不重复 DDL) +**关联契约规范**: `TECH_STACK/API_CONTRACT.md`(全局 API 契约权威) **关联枚举字典**: `DATA_MODEL/ENUMS.md` **最后更新**: 2026-04-27 diff --git a/Project/fonrey/TECH_STACK/权限管理系统技术方案.md b/Project/fonrey/TECH_STACK/权限管理系统技术方案.md index 3a773375..1da63ccc 100644 --- a/Project/fonrey/TECH_STACK/权限管理系统技术方案.md +++ b/Project/fonrey/TECH_STACK/权限管理系统技术方案.md @@ -7,6 +7,7 @@ **技术栈**: Django 4.x + HTMX + Alpine.js + PostgreSQL 16 + Redis **关联 PRD**: `PRD/权限管理/权限管理模块PRD.md` **关联数据模型**: `DATA_MODEL/DATA_MODEL_PERMISSION.md`(本方案不重复 DDL) +**关联契约规范**: `TECH_STACK/API_CONTRACT.md`(全局 API 契约权威) **最后更新**: 2026-04-27 --- diff --git a/Project/fonrey/TECH_STACK/楼盘管理技术方案.md b/Project/fonrey/TECH_STACK/楼盘管理技术方案.md index 688f725a..df76a63e 100644 --- a/Project/fonrey/TECH_STACK/楼盘管理技术方案.md +++ b/Project/fonrey/TECH_STACK/楼盘管理技术方案.md @@ -7,6 +7,7 @@ **技术栈**: Django 4.x + HTMX + Alpine.js + PostgreSQL 16 + Redis + Celery + Cloudflare R2 **关联 PRD**: `PRD/房源管理/楼盘管理模块PRD.md`(v1.0) **关联数据模型**: `DATA_MODEL/DATA_MODEL_COMPLEX.md`(本方案不重复 DDL) +**关联契约规范**: `TECH_STACK/API_CONTRACT.md`(全局 API 契约权威) **关联枚举字典**: `DATA_MODEL/ENUMS.md` **最后更新**: 2026-04-27 diff --git a/Project/fonrey/TECH_STACK/登录管理技术方案.md b/Project/fonrey/TECH_STACK/登录管理技术方案.md index 37705c07..c038d72d 100644 --- a/Project/fonrey/TECH_STACK/登录管理技术方案.md +++ b/Project/fonrey/TECH_STACK/登录管理技术方案.md @@ -7,6 +7,7 @@ **技术栈**: Django 4.x + HTMX + Alpine.js + PostgreSQL 16 + Redis + Celery **关联 PRD**: `PRD/登录管理/用户登录管理模块PRD.md` **关联数据模型**: `DATA_MODEL/DATA_MODEL_LOGIN.md`(本方案不重复 DDL) +**关联契约规范**: `TECH_STACK/API_CONTRACT.md`(全局 API 契约权威) **最后更新**: 2026-04-27 --- diff --git a/Project/fonrey/TECH_STACK/系统设置技术方案.md b/Project/fonrey/TECH_STACK/系统设置技术方案.md index c2632c88..3a8ef9d8 100644 --- a/Project/fonrey/TECH_STACK/系统设置技术方案.md +++ b/Project/fonrey/TECH_STACK/系统设置技术方案.md @@ -7,6 +7,7 @@ **技术栈**: Django 4.x + HTMX + Alpine.js + PostgreSQL 16 + Redis **关联 PRD**: `PRD/系统配置/系统配置模块PRD.md` **关联数据模型**: `DATA_MODEL/DATA_MODEL_SETTING.md`(本方案不重复 DDL) +**关联契约规范**: `TECH_STACK/API_CONTRACT.md`(全局 API 契约权威) **关联枚举字典**: `DATA_MODEL/ENUMS.md` **最后更新**: 2026-04-27 diff --git a/Project/fonrey/TECH_STACK/组织人事技术方案.md b/Project/fonrey/TECH_STACK/组织人事技术方案.md index a259ae0e..2e4e38ae 100644 --- a/Project/fonrey/TECH_STACK/组织人事技术方案.md +++ b/Project/fonrey/TECH_STACK/组织人事技术方案.md @@ -7,6 +7,7 @@ **技术栈**: Django 4.x + HTMX + Alpine.js + PostgreSQL 16 + Redis + Celery **关联 PRD**: `PRD/组织人事管理/组织人事管理模块PRD.md`(v1.2) **关联数据模型**: `DATA_MODEL/DATA_MODEL_ORG.md`(本方案不重复 DDL) +**关联契约规范**: `TECH_STACK/API_CONTRACT.md`(全局 API 契约权威) **关联枚举字典**: `DATA_MODEL/ENUMS.md` **最后更新**: 2026-04-27 diff --git a/Project/fonrey/UI_DESIGN/UI_设计任务总表.md b/Project/fonrey/UI_DESIGN/UI_设计任务总表.md index bb505497..897f5455 100644 --- a/Project/fonrey/UI_DESIGN/UI_设计任务总表.md +++ b/Project/fonrey/UI_DESIGN/UI_设计任务总表.md @@ -32,7 +32,7 @@ | 序号 | 优先级 | 模块 | 覆盖 US | UI.md 目标文件 | HTML 目标文件 | 当前状态 | 下一步 | |---|---|---|---|---|---|---|---| -| 01 | P0-A | 登录管理 | US-ACCOUNT-001~003 | `UI_DESIGN/登录管理/登录_UI.md` | `UI_DESIGN/登录_UI.html` | 设计中 | 先输出登录 UI.md(第一个任务) | +| 01 | P0-A | 登录管理 | US-ACCOUNT-001~003 | `UI_DESIGN/登录管理/登录_UI.md` | `UI_DESIGN/登录_UI.html` | 待评审 | 你评审登录 UI.md + 静态页,给我反馈我再迭代 | | 02 | P0-A | 房源管理(新增) | US-PROPERTY-001 | `UI_DESIGN/房源管理/新增房源_UI.md` | `UI_DESIGN/新增房源_UI.html` | 待设计 | 完成任务01后开始 | | 03 | P0-A | 房源管理(详情) | US-PROPERTY-003~008 | `UI_DESIGN/房源管理/房源详情_UI.md` | `UI_DESIGN/房源详情_UI.html` | 待设计 | 完成任务02后开始 | | 04 | P0-B | 楼盘管理(列表) | US-COMPLEX-002 | `UI_DESIGN/楼盘管理/楼盘列表_UI.md` | `UI_DESIGN/楼盘列表_UI.html` | 待设计 | 完成任务03后开始 | diff --git a/Project/fonrey/UI_DESIGN/房源列表_UI.html b/Project/fonrey/UI_DESIGN/房源列表_UI.html index ba691c27..4cf0ec68 100644 --- a/Project/fonrey/UI_DESIGN/房源列表_UI.html +++ b/Project/fonrey/UI_DESIGN/房源列表_UI.html @@ -1111,5 +1111,32 @@ + + diff --git a/Project/fonrey/UI_DESIGN/登录_UI.html b/Project/fonrey/UI_DESIGN/登录_UI.html new file mode 100644 index 00000000..a2aac509 --- /dev/null +++ b/Project/fonrey/UI_DESIGN/登录_UI.html @@ -0,0 +1,440 @@ + + + + + + Fonrey 登录管理 · 静态原型 + + + + + + +
+
+
+
+
+ +
+
+
+
+
F
+ Fonrey 房睿 +
+ +

面向经纪业务的
高密度工作台

+

+ 多租户隔离、角色权限控制、房客源高频操作一致体验。 + 本页面原型覆盖 Tenant 识别、账号密码登录、验证码验证、锁定与会话过期等 P0 场景。 +

+
+ +
+
+
多租户识别
+
12位 Tenant ID
+
+
+
安全策略
+
5次失败锁定30分钟
+
+
+
+ +
+
+ + + + +
+
+
+ +
+
+
+
+
+
+ +
+

切换公司

+

切换公司将清除当前租户识别信息,并返回识别页。是否继续?

+
+
+ + +
+
+
+
+ + + + diff --git a/Project/fonrey/UI_DESIGN/登录_账号密码_UI.html b/Project/fonrey/UI_DESIGN/登录_账号密码_UI.html new file mode 100644 index 00000000..f7124e08 --- /dev/null +++ b/Project/fonrey/UI_DESIGN/登录_账号密码_UI.html @@ -0,0 +1,316 @@ + + + + + + Fonrey 登录管理 · 账号密码登录(Story 2) + + + + + + +
+
+
+
+
+ +
+
+
+
+
F
+ Fonrey 房睿 +
+ +

经纪人账号登录

+

+ 已完成 Tenant 识别,请使用经纪人账号和密码登录。 + 本页对应 PRD《用户登录管理模块》User Story 2。 +

+
+ +
+
+
当前租户
+
+
+
+
登录策略
+
账号密码 + 滑块验证
+
+
+
+ +
+
+ + + +
+
+

正在登录

+

+
+ +
+ + + +

账号登录

+

请输入用户名和密码,并完成行为验证

+ +
+
+ + +

支持英文字母、数字、下划线,最大 50 字符

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

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

切换公司

+

切换公司将清除当前租户识别信息,并返回识别页。是否继续?

+
+
+ + +
+
+
+
+ + + + diff --git a/Project/fonrey/UI_DESIGN/登录管理/登录_UI.md b/Project/fonrey/UI_DESIGN/登录管理/登录_UI.md new file mode 100644 index 00000000..388b8907 --- /dev/null +++ b/Project/fonrey/UI_DESIGN/登录管理/登录_UI.md @@ -0,0 +1,239 @@ +# 登录管理 UI 设计文档 + +> **版本**:v1.0 · **日期**:2026-04-27 +> **依赖规范**:`UI_SYSTEM/UI_SYSTEM.md v1.2`、`UI_SYSTEM/组件规范设计.md v1.0` +> **PRD 来源**:`PRD/登录管理/用户登录管理模块PRD.md`(Story 1、Story 2 + 会话相关要求) +> **数据模型来源**:`DATA_MODEL/DATA_MODEL_LOGIN.md` +> **技术约束来源**:`TECH_STACK/登录管理技术方案.md` + +--- + +## 1. 模块概述 + +### 1.1 设计目标(P0) + +本设计文档覆盖 `TASK.md` 的登录管理 P0 范围: + +- **US-ACCOUNT-001**:账号密码登录(含验证码、错误提示、锁定态) +- **US-ACCOUNT-002**:多租户识别(Tenant ID 识别与切换公司) +- **US-ACCOUNT-003**:Token/会话超时相关前端状态(过期提示、重新登录入口) + +### 1.2 页面职责 + +| 页面 | URL 建议 | 优先级 | 对应 US | +|---|---|---|---| +| Tenant 识别页 | `/account/tenant/verify/` | P0 🔴 | US-ACCOUNT-002 | +| 登录页 | `/account/login/` | P0 🔴 | US-ACCOUNT-001 / US-ACCOUNT-003 | +| 切换公司确认弹窗 | 登录页内 Modal | P0 🔴 | US-ACCOUNT-002 | +| 会话过期提示态 | 登录页内 Alert/Toast | P0 🔴 | US-ACCOUNT-003 | + +> 注:`忘记用户名/忘记密码` 链接在登录页展示;其完整流程页面在后续登录模块增强迭代中展开。 + +--- + +## 2. 视觉与组件基线(对齐 UI System) + +### 2.1 色彩与层级 + +- 页面背景:`bg-neutral-50` +- 登录主按钮:`bg-primary-600 hover:bg-primary-700 active:bg-primary-800` +- 错误提示:`text-danger-600` +- 成功提示:`text-success-600` +- 卡片容器:`bg-white border border-neutral-200 rounded-xl shadow-lg` + +### 2.2 组件复用清单 + +| 场景 | 组件规范来源 | 使用说明 | +|---|---|---| +| 主/次按钮 | `UI_SYSTEM.md §3.1` | 登录=Primary;刷新验证码/切换公司=Secondary/Link | +| 输入框/密码框 | `UI_SYSTEM.md §3.2` | 统一 Label 在上、错误提示在下、密码可见切换 | +| 确认弹窗 | `UI_SYSTEM.md §3.6` | 切换公司二次确认使用 Confirm Modal | +| Toast 提示 | `UI_SYSTEM.md §3.8` | 网络异常、登录成功/失败统一 Toast 反馈 | +| 登录页布局模板 | `UI_SYSTEM.md §5.7` | 独立布局,无 Sidebar,品牌区 + 表单区 | + +### 2.3 主题策略说明 + +依据 `UI_SYSTEM.md §9.1`:**v1 仅 Light 主题**。 +本页面不提供用户可见主题切换按钮,但保留 `data-theme="light"` 扩展点,为后续主题系统接入预留。 + +--- + +## 3. 页面设计规范 + +## 3.1 Tenant 识别页(P0 🔴) + +### 3.1.1 页面结构 + +``` +┌────────────────────────────────────────────────────────────┐ +│ 左侧品牌区(Logo + Slogan + 租户价值说明) │ +│ 右侧识别卡片 │ +│ 标题:欢迎使用 Fonrey 房睿 │ +│ 描述:请输入您公司的专属识别码 │ +│ [公司识别码输入框] │ +│ [确认按钮] │ +│ 错误提示区(固定高度,防布局抖动) │ +│ 帮助文案:不知道识别码?请联系管理员 │ +└────────────────────────────────────────────────────────────┘ +``` + +### 3.1.2 字段与校验 + +| 字段 | 类型 | 必填 | 规则 | +|---|---|---|---| +| Tenant ID | 文本输入(仅数字) | 是 | 固定 12 位;自动 trim;非数字过滤 | + +### 3.1.3 交互状态 + +| 状态 | 触发 | 视觉反馈 | +|---|---|---| +| Idle | 首次进入 | 按钮可点击(输入满足 12 位) | +| Loading | 点击“确认”后 | 按钮 Loading + 禁用;输入框禁用 | +| Success | 验证通过 | 展示租户名,自动跳转登录页 | +| Invalid | Tenant 无效 | 输入框下方红色文案:识别码无效… | +| Network Error | 请求失败/超时 | 错误提示 + “重试”按钮 | + +### 3.1.4 API 对齐 + +- `POST /api/auth/tenant/verify/`(PRD) +- 请求体:`{ tenant_id }` +- 成功返回:`tenant_name / tenant_logo_url / login_url` +- 失败返回:`TENANT_NOT_FOUND` + +--- + +## 3.2 登录页(P0 🔴) + +### 3.2.1 布局结构 + +``` +┌────────────────────────────────────────────────────────────┐ +│ 左侧品牌区(租户 Logo / 公司名 / 产品卖点) │ +│ 右侧登录卡片(max-w-md) │ +│ [用户名] │ +│ [密码 + 显示/隐藏] │ +│ [滑块拼图验证区域 + 刷新] │ +│ [登录按钮] │ +│ [忘记用户名] [忘记密码] │ +│ [手机验证码登录(即将开放,禁用)] │ +│ [微信扫码登录(即将开放,禁用)] │ +│ [切换公司](Link) │ +└────────────────────────────────────────────────────────────┘ +``` + +### 3.2.2 字段规范 + +| 字段 | 组件 | 必填 | 校验 | 数据模型映射 | +|---|---|---|---|---| +| 用户名 | Input | 是 | 1~50 字符;允许字母/数字/下划线(兼容管理员) | `user_accounts.username` | +| 密码 | Password Input | 是 | 非空;提交后后端校验 | `user_accounts.password`(哈希) | +| 验证码通过票据 | 滑块拼图区域 | 是 | 位置偏差 ±5px + 轨迹特征校验 | Redis `captcha_pass:*` | + +### 3.2.3 主要交互规则 + +1. 用户名/密码/验证码三者满足后,“登录”按钮可点击。 +2. 点击登录后按钮进入 `loading`,避免重复提交。 +3. 登录失败(账号或密码错误): + - 统一提示 `用户名或密码错误,请重新输入` + - 自动刷新验证码 + - 清空密码,保留用户名 +4. 验证码失败:提示 `验证码有误,请重新验证`,不计入密码错误次数。 +5. 连续密码错误 ≥ 5 次: + - 展示 `账号已被临时锁定,请30分钟后重试` + - 登录按钮禁用 +6. 账号停用:提示 `账号已停用,请联系管理员`。 +7. Session 过期跳转后,顶部显示提示条:`登录已过期,请重新登录`。 +8. 登录成功后,前端跳转到首页路由(本静态原型当前映射为 `./房源列表_UI.html?from=login&login=success`,后续可替换为正式 `/home/`)。 + +### 3.2.4 登录页状态矩阵 + +| 状态 | 触发条件 | UI 表现 | +|---|---|---| +| Default | 初始打开 | 空表单 + 新验证码 | +| Captcha Passed | 验证通过 | 验证区绿色对勾 + 文案 | +| Submitting | 点击登录后 | 按钮 spinner,表单禁用 | +| Invalid Credential | 401 | 错误 Alert + 密码清空 | +| Locked | 423/锁定态 | 锁定警示条 + 按钮 disabled | +| Disabled | 账号停用 | 错误提示 + 禁止提交 | +| Session Expired | 过期重定向 | 顶部 warning 条 | + +--- + +## 3.3 切换公司确认弹窗(P0 🔴) + +### 3.3.1 触发入口 + +- 登录卡片底部 Link:`切换公司` + +### 3.3.2 弹窗内容 + +- 标题:`切换公司` +- 文案:`切换公司将清除当前租户识别信息,并返回识别页。是否继续?` +- 按钮:`取消`(Secondary)/ `继续切换`(Danger) + +### 3.3.3 行为 + +- 确认后:清除本地 tenant 缓存并跳转 `/account/tenant/verify/` +- 取消后:关闭弹窗,不改变当前状态 + +--- + +## 3.4 会话过期提示(P0 🔴) + +- 场景:用户访问业务页时 Session 失效,被重定向回登录页 +- 位置:登录卡片顶部 Alert(warning) +- 文案:`登录已过期,请重新登录` +- 可关闭:是(仅隐藏提示,不恢复会话) + +--- + +## 4. 与数据模型/技术方案映射 + +## 4.1 关键字段映射 + +| UI 关注点 | 数据模型字段/实体 | 说明 | +|---|---|---| +| 账号状态 | `user_accounts.status` | `active/disabled/locked` 驱动登录态文案 | +| 锁定截止时间 | `user_accounts.locked_until` | 锁定倒计时文案来源 | +| 初始密码标记 | `user_accounts.is_initial_password` | 登录成功后是否强制跳转改密页 | +| 登录失败计数 | Redis `login_fail:{tenant}:{username}` | 达阈值触发锁定 | +| 登录审计 | `login_attempts` | 失败原因不在前端细分展示 | + +## 4.2 API 映射(前端使用) + +| 目标 | 接口 | +|---|---| +| 租户识别 | `/api/auth/tenant/verify/` | +| 获取验证码 | `/api/account/captcha/generate/` | +| 校验验证码 | `/api/account/captcha/verify/` | +| 登录提交 | `/api/account/login/` | +| 登出 | `/api/account/logout/` | + +--- + +## 5. 可访问性与易用性 + +1. 所有输入框均有可见 Label,不使用仅 placeholder 方案。 +2. 错误信息与字段通过 `aria-describedby` 关联。 +3. 图标按钮(显示密码、刷新验证码)必须有 `aria-label`。 +4. `Tab` 顺序:Tenant ID/用户名 → 密码 → 验证区 → 登录按钮 → 辅助链接。 +5. Enter 键:当表单合法时触发提交。 + +--- + +## 6. 交付物与实现顺序 + +1. 本文档:`UI_DESIGN/登录管理/登录_UI.md`(当前) +2. 静态原型:`UI_DESIGN/登录_UI.html`(基于本文档) +3. 评审后迭代:先改 HTML,再回写本 UI 文档 + +--- + +## 7. 验收检查清单(UI 维度) + +- [ ] Tenant ID 12 位数字校验与错误提示完整 +- [ ] 登录页三要素(用户名/密码/验证码)联动提交规则完整 +- [ ] 锁定态、停用态、会话过期态均有明确视觉反馈 +- [ ] 切换公司有二次确认弹窗 +- [ ] 所有颜色/按钮/输入框样式遵循 UI_SYSTEM Token 与组件规范 +- [ ] 静态页可用于你进行第一轮视觉与交互评审 diff --git a/raw/AI/GitHub 上 5000 人收藏的 Vibe Coding 神级指南。.md b/raw/AI/GitHub 上 5000 人收藏的 Vibe Coding 神级指南。.md index 5d09b8c7..7ddcbd82 100644 --- a/raw/AI/GitHub 上 5000 人收藏的 Vibe Coding 神级指南。.md +++ b/raw/AI/GitHub 上 5000 人收藏的 Vibe Coding 神级指南。.md @@ -1,102 +1,102 @@ ---- -title: GitHub 上 5000 人收藏的 Vibe Coding 神级指南。 -source: https://mp.weixin.qq.com/s/QMPMSGW6XXk8L-yx4ujQcw -author: shenwei -published: -created: 2025-12-30 -description: -tags: [ai, github, vibe-coding] ---- - - -#vibe-coding #ai #github - -![cover_image](https://mmbiz.qpic.cn/sz_mmbiz_jpg/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8X6dFlWpZWiaKic2p2Jk4d5GicMaRbaAqvDEpOIH818qqAYKicNEo5voykBg/0?wx_fmt=jpeg) - -原创 逛逛 [逛逛GitHub](https://mp.weixin.qq.com/s/) *2025年12月27日 15:03* - -Vibe Coding 说白了就是开发个应用不再像程序员一样,苦哈哈地写每一行代码,而是化身为导演。 - -只需要 保持一种感觉 ,这种感觉可能是对产品逻辑、用户流程、审美和交互的把握,剩下的体力活全交给 Cursor、Windsurf、Trae 等 AI 编程工具。 - -用 Karpathy 的话说: 我几乎不写代码了,我只负责调整氛围(Vibe),代码会自动长出来。 - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_jpg/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8X7crQiaY9oD4ASLkbm2vTBDZMFKEM4g1PCaRrlBhLKcbPElVmqOt7kyA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=0) - -前段时间发了一篇文章,盘点了 GitHub 上比较有用的 Vibe Coding 相关开源项目。 - -然后在一个 AI 编程的群里,有一个读者分享了另外一个开源项目: vibe-coding-cn - -仔细研究了一下,还挺不错的,分享给大家。 - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XUdd7HGky0prYeibicuObDtHMbx8aTsqmrWjZChYgDdA0ibDeiaVgiaKvJ8A/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=3) - -01 - -**项目简介** - -这个叫 vibe-coding-cn 的开源项目 让国内开发者能光速跟上这波浪潮。 - -是 Vibe Coding 氛围感编程的 中文指南 ,汇集了目前全球最顶尖的 AI 编程资源。 - -下面是这个开源项目的核心目录: - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XYibjPhibcVS0icTwzlLYduRnLwWRWYYxwjRk29LVkgZTYxupL7C4UvI7Q/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=4) - -这个开源项目对 Vibe Coding 进行了定义,还挺有意思的。 - -Vibe Coding \= **规划驱动 + 上下文固定 + AI 结对执行** ,让「从想法到可维护代码」变成一条可审计的流水线,而不是一团无法迭代的巨石文件。 - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XeBr2ISrVNtaIeHwZpG5UGaMd8LrOchqRe8k50OQG9mnFklo14icd97A/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=5) - -这个中文的 Vibe Coding 中文指南,包括如下几个新的点: - -方法论: 这一部分感觉还是比较玄乎的,其实就是几种准则,看一看就好。 - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8Xibh6m6799WmDbKouUgjyOQicbHzIic9pxGia4qtVMKXT6brtkmNLOa71dg/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=6) - -AI 编程资源 - -还推荐了 AI 模型、IDE 等环境。如果你懒得筛选,直接 Cursor + claude-opus-4.5-xhigh,准没错。 - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8X8ic54zckDDdqMojp9xqPuerLL3yhJXKs27r0XUAdMSVOHnfkgCj6D6w/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=7) - -除此之外,还有很多学习资源和文档, 大量提示词 Prompt 优化技巧。 - -包含数百个精选提示词,涵盖了需求澄清、系统架构设计、分步执行、自测等全链路脚本。支持 Excel 与 Markdown 互转。 - -教你如何用自然语言清晰地定义需求,如何让 AI 保持上下文一致,如何一分钟写出一个完整的 Web 应用, 也可以一同学习一下。 - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XtLYLCxONBlmnaIBlyKzOtOHxRt2n1Ur8cz8ZL09Tv5HqAO50JlSu8w/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=8) - -紧接着这个开源项目,提供一个一个完整流程。帮助你完成基础的设置、开发基础游戏、丰富细节,修复 Bug。 - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XeF2eaCMj8RNJiaf3Mib6yFVP5CwFJtDAfj9w77ibxz0Pobx9H94nR6mibw/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=9) - -给我的感觉,这个开源项目践行 规划就是一切 的理念。 - -让 AI 写代码前,必须有清晰的技术选型、实施规划和模块化设计,防止 AI 因为理解偏差导致项目逻辑混乱。 - -总而言之,这个开源项目就是 专门为中文开发者设计的 **Vibe Coding 资源库与工作站。** - -**它不仅包含了相关的哲学理论,还提供了一套成体系的工具链、提示词库和开发经验总结,旨在帮助开发者更高效地利用 AI 进行软件开发。** - -```javascript -开源地址:https://github.com/tukuaiai/vibe-coding-cn -``` - -02 - -**点击下方卡片,关注逛逛 GitHub** - -这个公众号历史发布过很多有趣的开源项目,如果你懒得翻文章一个个找,你直接关注微信公众号:逛逛 GitHub ,后台对话聊天就行了: - -![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRrux2sRxwJzmfe1lK8ic33XvtVPsIPCMV7hjicmScibtxIZ1NsjXxNoVNMb3zLy32Al7PSpfbVAtrACYqQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp#imgIndex=11) - -继续滑动看下一个 - -逛逛GitHub - -向上滑动看下一个 - +--- +title: GitHub 上 5000 人收藏的 Vibe Coding 神级指南。 +source: https://mp.weixin.qq.com/s/QMPMSGW6XXk8L-yx4ujQcw +author: shenwei +published: +created: 2025-12-30 +description: +tags: [ai, github, vibe-coding] +--- + + +#vibe-coding #ai #github + +![cover_image](https://mmbiz.qpic.cn/sz_mmbiz_jpg/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8X6dFlWpZWiaKic2p2Jk4d5GicMaRbaAqvDEpOIH818qqAYKicNEo5voykBg/0?wx_fmt=jpeg) + +原创 逛逛 [逛逛GitHub](https://mp.weixin.qq.com/s/) *2025年12月27日 15:03* + +Vibe Coding 说白了就是开发个应用不再像程序员一样,苦哈哈地写每一行代码,而是化身为导演。 + +只需要 保持一种感觉 ,这种感觉可能是对产品逻辑、用户流程、审美和交互的把握,剩下的体力活全交给 Cursor、Windsurf、Trae 等 AI 编程工具。 + +用 Karpathy 的话说: 我几乎不写代码了,我只负责调整氛围(Vibe),代码会自动长出来。 + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_jpg/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8X7crQiaY9oD4ASLkbm2vTBDZMFKEM4g1PCaRrlBhLKcbPElVmqOt7kyA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=0) + +前段时间发了一篇文章,盘点了 GitHub 上比较有用的 Vibe Coding 相关开源项目。 + +然后在一个 AI 编程的群里,有一个读者分享了另外一个开源项目: vibe-coding-cn + +仔细研究了一下,还挺不错的,分享给大家。 + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XUdd7HGky0prYeibicuObDtHMbx8aTsqmrWjZChYgDdA0ibDeiaVgiaKvJ8A/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=3) + +01 + +**项目简介** + +这个叫 vibe-coding-cn 的开源项目 让国内开发者能光速跟上这波浪潮。 + +是 Vibe Coding 氛围感编程的 中文指南 ,汇集了目前全球最顶尖的 AI 编程资源。 + +下面是这个开源项目的核心目录: + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XYibjPhibcVS0icTwzlLYduRnLwWRWYYxwjRk29LVkgZTYxupL7C4UvI7Q/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=4) + +这个开源项目对 Vibe Coding 进行了定义,还挺有意思的。 + +Vibe Coding \= **规划驱动 + 上下文固定 + AI 结对执行** ,让「从想法到可维护代码」变成一条可审计的流水线,而不是一团无法迭代的巨石文件。 + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XeBr2ISrVNtaIeHwZpG5UGaMd8LrOchqRe8k50OQG9mnFklo14icd97A/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=5) + +这个中文的 Vibe Coding 中文指南,包括如下几个新的点: + +方法论: 这一部分感觉还是比较玄乎的,其实就是几种准则,看一看就好。 + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8Xibh6m6799WmDbKouUgjyOQicbHzIic9pxGia4qtVMKXT6brtkmNLOa71dg/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=6) + +AI 编程资源 + +还推荐了 AI 模型、IDE 等环境。如果你懒得筛选,直接 Cursor + claude-opus-4.5-xhigh,准没错。 + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8X8ic54zckDDdqMojp9xqPuerLL3yhJXKs27r0XUAdMSVOHnfkgCj6D6w/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=7) + +除此之外,还有很多学习资源和文档, 大量提示词 Prompt 优化技巧。 + +包含数百个精选提示词,涵盖了需求澄清、系统架构设计、分步执行、自测等全链路脚本。支持 Excel 与 Markdown 互转。 + +教你如何用自然语言清晰地定义需求,如何让 AI 保持上下文一致,如何一分钟写出一个完整的 Web 应用, 也可以一同学习一下。 + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XtLYLCxONBlmnaIBlyKzOtOHxRt2n1Ur8cz8ZL09Tv5HqAO50JlSu8w/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=8) + +紧接着这个开源项目,提供一个一个完整流程。帮助你完成基础的设置、开发基础游戏、丰富细节,修复 Bug。 + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRruzib6uAZIwnice3OuOOI6Kb8XeF2eaCMj8RNJiaf3Mib6yFVP5CwFJtDAfj9w77ibxz0Pobx9H94nR6mibw/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=9) + +给我的感觉,这个开源项目践行 规划就是一切 的理念。 + +让 AI 写代码前,必须有清晰的技术选型、实施规划和模块化设计,防止 AI 因为理解偏差导致项目逻辑混乱。 + +总而言之,这个开源项目就是 专门为中文开发者设计的 **Vibe Coding 资源库与工作站。** + +**它不仅包含了相关的哲学理论,还提供了一套成体系的工具链、提示词库和开发经验总结,旨在帮助开发者更高效地利用 AI 进行软件开发。** + +```javascript +开源地址:https://github.com/tukuaiai/vibe-coding-cn +``` + +02 + +**点击下方卡片,关注逛逛 GitHub** + +这个公众号历史发布过很多有趣的开源项目,如果你懒得翻文章一个个找,你直接关注微信公众号:逛逛 GitHub ,后台对话聊天就行了: + +![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/ePw3ZeGRrux2sRxwJzmfe1lK8ic33XvtVPsIPCMV7hjicmScibtxIZ1NsjXxNoVNMb3zLy32Al7PSpfbVAtrACYqQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp#imgIndex=11) + +继续滑动看下一个 + +逛逛GitHub + +向上滑动看下一个 + 逛逛GitHub \ No newline at end of file diff --git a/raw/Agent/usecases/youtube-content-pipeline.md b/raw/Agent/usecases/youtube-content-pipeline.md index d7acb66d..4bd54800 100644 --- a/raw/Agent/usecases/youtube-content-pipeline.md +++ b/raw/Agent/usecases/youtube-content-pipeline.md @@ -1,58 +1,58 @@ ---- -title: YouTube Content Pipeline -source: -author: shenwei -published: -created: -description: -tags: [] ---- - -# YouTube Content Pipeline - -As a daily YouTube creator, finding fresh, timely video ideas across the web and X/Twitter is time-consuming. Tracking what you've already covered prevents duplicates and helps you stay ahead of trends. - -This workflow automates the entire content scouting and research pipeline: - -• Hourly cron job scans breaking AI news (web + X/Twitter) and pitches video ideas to Telegram -• Maintains a 90-day video catalog with view counts and topic analysis to avoid re-covering topics -• Stores all pitches in a SQLite database with vector embeddings for semantic dedup (so you never get pitched the same idea twice) -• When you share a link in Slack, OpenClaw researches the topic, searches X for related posts, queries your knowledge base, and creates an Asana card with a full outline - -## Skills you Need - -- `web_search` (built-in) -- [x-research-v2](https://clawhub.ai) or custom X/Twitter search skill -- [knowledge-base](https://clawhub.ai) skill for RAG -- Asana integration (or Todoist) -- `gog` CLI for YouTube Analytics -- Telegram topic for receiving pitches - -## How to Set it Up - -1. Set up a Telegram topic for video ideas and configure it in OpenClaw. -2. Install the knowledge-base skill and x-research skill. -3. Create a SQLite database for pitch tracking: -```sql -CREATE TABLE pitches ( - id INTEGER PRIMARY KEY, - timestamp TEXT, - topic TEXT, - embedding BLOB, - sources TEXT -); -``` -4. Prompt OpenClaw: -```text -Run an hourly cron job to: -1. Search web and X/Twitter for breaking AI news -2. Check against my 90-day YouTube catalog (fetch from YouTube Analytics via gog) -3. Check semantic similarity against all past pitches in the database -4. If novel, pitch the idea to my Telegram "video ideas" topic with sources - -Also: when I share a link in Slack #ai_trends, automatically: -1. Research the topic -2. Search X for related posts -3. Query my knowledge base -4. Create an Asana card in Video Pipeline with a full outline -``` +--- +title: YouTube Content Pipeline +source: +author: shenwei +published: +created: +description: +tags: [] +--- + +# YouTube Content Pipeline + +As a daily YouTube creator, finding fresh, timely video ideas across the web and X/Twitter is time-consuming. Tracking what you've already covered prevents duplicates and helps you stay ahead of trends. + +This workflow automates the entire content scouting and research pipeline: + +• Hourly cron job scans breaking AI news (web + X/Twitter) and pitches video ideas to Telegram +• Maintains a 90-day video catalog with view counts and topic analysis to avoid re-covering topics +• Stores all pitches in a SQLite database with vector embeddings for semantic dedup (so you never get pitched the same idea twice) +• When you share a link in Slack, OpenClaw researches the topic, searches X for related posts, queries your knowledge base, and creates an Asana card with a full outline + +## Skills you Need + +- `web_search` (built-in) +- [x-research-v2](https://clawhub.ai) or custom X/Twitter search skill +- [knowledge-base](https://clawhub.ai) skill for RAG +- Asana integration (or Todoist) +- `gog` CLI for YouTube Analytics +- Telegram topic for receiving pitches + +## How to Set it Up + +1. Set up a Telegram topic for video ideas and configure it in OpenClaw. +2. Install the knowledge-base skill and x-research skill. +3. Create a SQLite database for pitch tracking: +```sql +CREATE TABLE pitches ( + id INTEGER PRIMARY KEY, + timestamp TEXT, + topic TEXT, + embedding BLOB, + sources TEXT +); +``` +4. Prompt OpenClaw: +```text +Run an hourly cron job to: +1. Search web and X/Twitter for breaking AI news +2. Check against my 90-day YouTube catalog (fetch from YouTube Analytics via gog) +3. Check semantic similarity against all past pitches in the database +4. If novel, pitch the idea to my Telegram "video ideas" topic with sources + +Also: when I share a link in Slack #ai_trends, automatically: +1. Research the topic +2. Search X for related posts +3. Query my knowledge base +4. Create an Asana card in Video Pipeline with a full outline +```