## 1. Project Overview & Quickstart (chokcoco/README.en)

# README.en

Open-source repository chokcoco/README.en

### Repository Details
- **Repository:** [chokcoco/README.en](https://github.com/chokcoco/README.en)
- **Primary Language:** Code

*Note: High-volume repository documentation is actively indexed and synchronized by YakaAI.*

## 2. Official Technical Reference & Guides (chokcoco/chokcoco.github.io)

## File: courses/harness-engineering/labs/commerce-harness-lab/harness-overlay/docs/architecture.md

# Architecture boundaries

```text
apps/storefront ─┐
                 ├──> packages/promotion-engine
apps/ops-console ┘

apps/* ──HTTP contract──> services/commerce-api
```

Rules:

- Browser applications may depend on shared browser-safe packages.
- Browser applications must not import Java source, service configuration, secrets, or server-only fixtures.
- `promotion-engine` contains deterministic price calculation and no network access.
- `commerce-api` owns authoritative quote and inventory state transitions.
- Cross-boundary changes require a contract test and a notice in the task plan.
- Amounts use integer cents. Timestamps use UTC instants at service boundaries.

---

## File: courses/harness-engineering/labs/commerce-harness-lab/harness-overlay/docs/index.md

# Repository map

| Need | Start here | Then inspect | Freshness signal |
| --- | --- | --- | --- |
| Business task | `../specs/` | linked source and acceptance cases | spec status and updated date |
| Storefront price preview | `../../starter/apps/storefront/src/App.jsx` | promotion engine and pricing contract | React build + price cases |
| Operations console | `../../starter/apps/ops-console/src/App.jsx` | inventory API and state model | React build + state cases |
| Promotion rules | `../specs/promotion-stacking.md` | `../../starter/packages/promotion-engine/` | Node tests |
| Inventory reservation | `../specs/inventory-reservation.md` | Java inventory service and tests | Maven tests |
| Architecture boundary | `architecture.md` | package manifests and imports | structure verification |
| Current progress | `../state/progress.md` | latest plan and evidence | timestamp and commit |

Stop and request clarification when two sources with the same authority disagree, a required file is missing, or the task would cross an approval boundary.

---

## File: courses/harness-engineering/labs/commerce-harness-lab/greenfield/docs/architecture.md

# Minimum architecture

```text
apps/ops-console        React view of reservation state
services/commerce-api   Spring Boot state transitions and API
contracts/              request, response, error, and state examples
specs/                  approved behavior and acceptance cases
scripts/                cross-platform verification entrypoints
state/                  durable task progress and evidence
```

The service owns inventory state. The React application displays state and sends commands; it never calculates available inventory locally. Start with an in-memory repository for learning, but keep the state transition interface separate so a database can replace it later.

---

## File: courses/harness-engineering/labs/commerce-harness-lab/greenfield/README.md

# Greenfield path

This directory is the starting blueprint for a new agent-first commerce repository. It does not copy the starter repository. Begin with the task contract, architecture boundary, commands, and acceptance cases before adding application code.

Recommended order:

1. Confirm `specs/inventory-reservation.md`.
2. Keep the first implementation in one Spring Boot service with an in-memory teaching repository.
3. Add a small React operations page only after the state contract is stable.
4. Add durable infrastructure when a measured failure requires it; do not begin with queues, Redis, Kubernetes, or multiple services.

---

## File: courses/harness-engineering/labs/commerce-harness-lab/starter/docs/legacy/architecture.md

# 架构记录（旧）

- `apps/storefront`：顾客结算页。
- `apps/ops-console`：运营后台。
- `packages/promotion-engine`：两个前端应用共享的促销计算。
- `services/commerce-api`：订单、定价和库存接口。

历史上前端允许独立预估价格。后端后来增加了自己的促销逻辑，两边尚未建立契约测试。

---

## File: courses/harness-engineering/labs/commerce-harness-lab/starter/docs/legacy/promotion-rules.md

# 促销规则旧记录

更新时间：2024-09-18

- 会员商品默认九折，特价商品不参加会员商品折扣。
- 满 500 元减 50 元，门槛按商品原价计算。
- 免运费活动可与订单券同时生效。
- 会员折扣与订单券是否叠加：待产品确认。
- 前台显示金额仅供参考，最终以后端为准。

这份文件是模拟仓库里的历史记录，不代表当前任务已经确认的事实。

---

## File: courses/harness-engineering/labs/commerce-harness-lab/README.md

# 星桥商城 Harness 实验仓库

这是 Harness Engineering 课程使用的虚构电商仓库。商品、订单、员工、运行记录和故障均为教学数据，不对应真实企业。

## 目录

```text
commerce-harness-lab/
├── case/                 # 业务需求与失败轨迹
├── starter/              # 未完成 Harness 改造的存量仓库
├── harness-overlay/      # 存量仓库的参考 Harness 覆盖层
└── greenfield/           # 从零建设时的最小仓库蓝图
```

两条业务线贯穿课程：

1. 优惠叠加与价格解释：统一会员折扣、订单券和运费优惠的组合规则。
2. 库存预占与超时释放：处理幂等重试、支付确认、取消和超时释放。

## 环境

- Node.js 22
- React 19.2
- Vite 8.1
- Java 21
- Spring Boot 4.1
- Maven 3.9+

概念路径无需安装依赖。工程路径可以先运行不依赖第三方包的检查：

```bash
node starter/scripts/audit-baseline.mjs
node harness-overlay/scripts/verify-overlay.mjs
node --test starter/packages/promotion-engine/test/*.test.js
```

Windows PowerShell 使用相同的 `node` 命令。React 和 Java 的完整构建命令见第 6 章。

## 使用顺序

- 第 3–4 章先读 `case/`，把业务请求写成任务契约并建立仓库地图。
- 第 5 章在 `starter/` 上做存量改造。
- 第 6 章用 `greenfield/` 观察新仓库的起步方式。
- 第 7–12 章逐步加入工具、边界、评测、状态和治理。
- 第 13 章选择设计路径或工程路径完成综合实践。

不要把 `harness-overlay/` 一次性复制进真实仓库。先找到当前任务的高频失败，再决定哪些文件和检查值得长期维护。

---

## File: demo/ppt/css/theme/README.md

## Dependencies

Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceding: https://github.com/hakimel/reveal.js#full-setup

## Creating a Theme

To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled by Grunt from Sass to CSS (see the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js)) when you run `grunt css-themes`.

Each theme file does four things in the following order:

1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)**
Shared utility functions.

2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)**
Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3.

3. **Override**
This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please.

4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)**
The template theme file which will generate final CSS output based on the currently defined variables.