Просмотр исходного кода

chore: 飞马 Harness 初始化 (.fmode/config.json + CLAUDE.md + CHANGELOG)

- 能力清单诚实分列: gitArchive/obsStatic/parseBackend=live; deploySts=403未接入; storage/credentials=规划中跳过
- 项目宪法: 构建纪律/部署纪律/凭据零暴露/Git纪律
- CHANGELOG 起始记录 v0.1.0

Co-Authored-By: Claude Code <noreply@anthropic.com>
liuyuyang 6 дней назад
Родитель
Сommit
4efe87ee03
3 измененных файлов с 88 добавлено и 0 удалено
  1. 28 0
      .fmode/config.json
  2. 17 0
      CHANGELOG.md
  3. 43 0
      CLAUDE.md

+ 28 - 0
.fmode/config.json

@@ -0,0 +1,28 @@
+{
+  "appId": "ncloudmaster",
+  "serverURL": "https://server.fmode.cn/parse",
+  "project": {
+    "name": "fmode-app-mirror",
+    "displayName": "时尚魔镜虚拟试衣",
+    "extractedFrom": "git.fmode.cn/2205106/FashionMagicMirror",
+    "repo": "https://git.fmode.cn/fmode-18691770343/fmode-app-mirror",
+    "version": "0.1.0"
+  },
+  "deploy": {
+    "static": {
+      "bucket": "www-fmode.cn",
+      "endpoint": "obs.cn-south-1.myhuaweicloud.com",
+      "prefix": "aipm-lesson/fmode-app-mirror/",
+      "url": "https://fmode.cn/aipm-lesson/fmode-app-mirror/index.html",
+      "spaFallback": "404.html",
+      "cdnRefreshScript": "/opt/data/git-repos/fmode-app/scripts/refresh-fmode-cn.js"
+    }
+  },
+  "capabilities": {
+    "gitArchive": { "status": "live", "note": "幂等开户 /gogs/admin/proxy 已验证 (200 幂等补发 token);git ls-remote 验证 push" },
+    "obsStatic": { "status": "live", "note": "obsutil AK 路径 (第2级凭据链) + setacl public-read + refresh-fmode-cn.js (fmode.cn 域名组)" },
+    "parseBackend": { "status": "live", "note": "server.fmode.cn/parse appId=ncloudmaster 实测可达 (401=无效凭据, 端点活着); 登录/注册/个人中心走 Parse SDK" },
+    "deploySts": { "status": "not-available", "note": "POST /api/apig/deploy/huaweicloud 对本 session 返回 403 没有权限;本仓静态发布走 obsutil AK 路径" },
+    "storageCredentials": { "status": "planned", "note": "04-API设计.md /api/storage/credentials 规划中未上线,跳过" }
+  }
+}

+ 17 - 0
CHANGELOG.md

@@ -0,0 +1,17 @@
+# Changelog
+
+本文件记录 fmode-app-mirror 的可见变更。格式参考 Keep a Changelog,版本号遵循 SemVer。
+
+## [0.1.0] - 2026-09-15
+
+### Added
+- 从 Nova 体系源仓 `2205106/FashionMagicMirror` 全量提取项目(Angular 18 + Ionic 8 + Capacitor 6 虚拟试衣应用)。
+- 干净初始 commit 推入独立仓 `fmode-18691770343/fmode-app-mirror`(公开,`git ls-remote` 已验证)。
+- README 重写:项目定位 / 技术栈 / 本地跑法 / OBS+CDN 部署说明 / 源仓致谢。
+- 飞马 Harness 初始化:`.fmode/config.json`(能力清单:live 与规划中分列)、`CLAUDE.md` 项目宪法(构建/部署/凭据纪律)。
+
+### Changed
+- Parse 端点从已下线的 `web2023.fmode.cn/parse`(appId dev)切换到 `server.fmode.cn/parse`(appId `ncloudmaster`),登录/注册/个人中心后端恢复可达。
+
+### Security
+- 凭据零暴露:sessionToken / Gogs token / OBS AK/SK 均不入库不入报告。

+ 43 - 0
CLAUDE.md

@@ -0,0 +1,43 @@
+# fmode-app-mirror · 项目宪法
+
+时尚魔镜(Fashion Magic Mirror)虚拟试衣独立仓。Angular 18 + Ionic 8 + Capacitor 6。
+
+## 身份
+
+- 提取自 `git.fmode.cn/2205106/FashionMagicMirror`(源仓致谢,业务代码保留)
+- 归档仓:`https://git.fmode.cn/fmode-18691770343/fmode-app-mirror`(公开)
+- 线上:`https://fmode.cn/aipm-lesson/fmode-app-mirror/index.html`
+
+## 构建纪律
+
+- Node 20.x;依赖安装优先 `npm ci`(package-lock 已入库),peer deps 冲突才用 `--legacy-peer-deps`。
+- 产物目录 `www/`(angular.json outputPath),**不入库**(.gitignore 已忽略)。
+- 每次修复启动/构建阻塞问题,单独一个 `fix:` commit,说明根因。
+- Capacitor 只用 Web 层;不安装原生平台、不跑 `npx cap add`。
+
+## 部署纪律
+
+- `ng build --configuration production` → `cp www/index.html www/404.html`(SPA fallback)。
+- OBS 上传**逐文件指定目标键**,禁目录递归 cp;html/css/js/图片带正确 content-type;`-acl=public-read`。
+- CDN 刷新只用 fmode.cn 域名组脚本:`node /opt/data/git-repos/fmode-app/scripts/refresh-fmode-cn.js <urls...>`;**禁用旧 refresh-cdn.js**(硬编码刷 app.fmode.cn)。
+- 发布后逐 URL `curl` 验收 200 + 内容正确,才算上线成功。
+- Git 归档与前端上线是两个独立状态门禁,分别报告,禁止互相冒充。
+
+## 凭据零暴露
+
+- sessionToken 只从 `~/.fmode/config/user.json`(0600)读取,用完即弃,不落盘。
+- Gogs 个人 token 仅进程内存使用,不进 remote URL / 文件 / 日志 / 报告。
+- OBS AK/SK 只通过 `OBSUTIL_CONFIG` 指向的配置文件间接使用,绝不写入本仓。
+- 任何密钥不得出现在 commit、截图、终端输出、最终交付报告。
+
+## Git 纪律
+
+- Conventional Commits(feat/fix/docs/chore/refactor/style)。
+- 不强推 main;不修改他人历史;`git add <文件>` 不用 `git add .`。
+- push 后必须 `git ls-remote` 验证远端 SHA。
+- 平台接口 401/209 时走「对话式验证码登录」自愈流程(07-git.md 标准节),不向用户索要密码。
+
+## 已上线 vs 规划中(04-API设计.md 对齐)
+
+- ✅ 已接入:Git 幂等开户/建仓/push;OBS 静态发布 + CDN;Parse 主端点(server.fmode.cn/parse, appId ncloudmaster)。
+- ❌ 跳过:storage/credentials、计费 API(status:规划中,勿照抄端点);deploy STS 对本 session 返回 403,未接入。